Issue 217 CI Cost Grill Status
Issue 217 CI Cost Grill Status
Accepted direction
The user accepted the proposals and answered R1 with "agree with all", subject to explicit annotations below. The log preserves the original questions and answers.
- Use 2-vCPU workers and remove all automated macOS jobs: CLI integration, cross-platform cache restoration and weekly filesystem observation. Linux checks remain; CI no longer claims macOS validation. Keep existing two-vCPU GitHub-hosted Linux publication for npm trusted publishing.
- No monthly minute ceiling or reserved allocation. The proposed 2,400-minute design budget is rejected. Compare runtime and consumption to establish improvements without a monthly enforcement gate.
- Aggressively remove low-signal and redundant tests; retain the cheapest meaningful proof of supported capabilities, public contracts and safety invariants. No test-count deletion quota.
- Use small independently cached capability groups and the lowest possible correct invalidation rate. Unrelated docs changes preserve product cache results; shipped prompts/skills still invalidate their actual consumers.
- Reduce repeated preparation; share immutable seeds with independent mutable test state. Keep representative real command/infrastructure witnesses where they protect the actual boundary.
- Keep PR and main verification with correct reuse and current publication authority. No new prior-PR Candidate Evidence lookup.
- Reconcile all eight unselected root/operator test files: keep supported unique proof in appropriate affected tasks, delete obsolete or redundant proof.
- Q9: minimal real Git history and tiny valid artifacts own routine recovery/tamper/resume proof. Full historical replay remains on demand; CI no longer needs to execute every old builder.
- Q10 supersedes Q8: no percentage or elapsed-time threshold. Optimize uncached feedback and total runner work as far as the identified waste permits; report warm task-cache reuse separately. No test sharding or new shard matrix/jobs. Capability-sized cache tasks stay within the existing verification job topology.
- Q11: the consolidated hotspot proposals are accepted: remove irrelevant updater installs and repeated preparation, move broad policies to owned application seams, replace historical replay in normal CI, remove the diagnostic benchmark and weak command matrix from the ordinary portfolio, and eliminate identified cache/provisioning duplication. Preserve meaningful safety proof.
- Retain the branch lineage above #222: main ← team/stefan/cli-update-quick-fixes ← team/stefan/issue-217-ci-cost. The user subsequently requested a refreshed rebase and closure of #222. PR #222 is now closed without merge; its branch remains the base of #223 and its code remains included.
Current user instructions take precedence over incompatible older full-command-only/native-test prohibitions. No test deletion, runner change or production behavior change has shipped; only research and requirements are authored.
Delivery steering
The user explicitly authorized moving current repository/CI Bun pins from 1.3.5 to 1.4 if compatible. Delivery targets 1.4.0, available locally, with frozen-install/build/affected-test proof before accepting the pin. Historical fixture versions stay where meaningful. Local-first testing is required to avoid unnecessary hosted runner use. All other closed requirements remain unchanged.
Branch Dashboard
| Branch | Completion | Locked direction | Still open |
|---|---|---|---|
| Runner scope and platforms | 100% | Only 2-vCPU workers; no automated macOS jobs | none |
| Performance and scheduling | 100% | Reduce work and latency; no percentage target, monthly cap or sharding | Measurement during delivery |
| Retained-test standard | 100% | Cheapest meaningful proof; all accepted hotspot reductions | Implementation and equivalence validation |
| Cache boundaries | 100% | Small capability tasks; minimum correct invalidation | Input-closure validation |
| Verification triggers | 100% | Keep PR/main and current publication authority | none |
| Unselected operator proof | 100% | Reconcile all eight by supported behavior | Current consumer mapping during delivery |
Percentages describe requirements closure, not implementation. The user explicitly confirmed the consolidated proposals with the R5 corrections.
Current Round
- Round: R5 — consolidated requirements accepted
- Current frontier: empty
- Shared-understanding confirmation: confirmed
| Question id | Prerequisites | Decision | State |
|---|---|---|---|
| Q1 | none | Only 2-vCPU workers | answered |
| Q2 | none | No monthly minute ceiling/reserve | answered |
| Q3 | accepted pruning direction | Cheapest meaningful proof; no test-count quota | answered |
| Q4 | accepted invalidation direction | Capability cache groups with precise inputs | answered |
| Q5 | current publication contract | Keep PR/main verification and existing release authority | answered |
| Q6 | selector inventory | Reconcile eight unselected root/operator files | answered |
| Q7 | Q1 | Remove all automated macOS jobs | answered |
| Q8 | Q1, Q2, timing evidence | Historical 80% target; superseded by Q10 | answered |
| Q9 | Q3, build trace | Minimal real recovery history in CI; full replay on demand | answered |
| Q10 | Q8, user correction | No hard speedup target and no sharding | answered |
| Q11 | Q3, Q9, hotspot walkthrough | Accept and consolidate all identified efficiency proposals | answered |
Q10 and Q11 record the user's direct instruction, not additional unanswered interview questions. No reapproval is needed. The consolidated specification is the next authority for planning; no runtime improvement is claimed by this requirements checkpoint.
Technical Grounding
Historical audit revision: 7e147b3300c391db979b87e20c4159a5a03d12cb. On 2026-09-22 this child was restacked onto PR #222 head cef8e31e8a4fc7c8ac57ca7439b7590683c77a0e. The parent now implements affected candidate validation, optional-dependency consumer selection, generation freshness and commit coverage. Those changes preserve this grill's direction; they are inherited behavior to retain, not work to duplicate.
The historical 151-file inventory remains attributed to its original revision. The parent adds project-settings/service.test.ts and scaffold-update/validation-plan.test.ts, bringing the current inventory to 153 files (70 CLI). Include those owned settings/selection proofs in implementation-time pruning and refresh the hotspot measurements; do not reuse historical durations as current measurements. The parent does not change the CI runner graph, Turbo task boundaries, CLI fileParallelism setting or shared host digest grounding this grill.
| Branch | Evidence anchors | Applicable dimensions and disposition | Open technical decisions | Grounding |
|---|---|---|---|---|
| Runners/platforms | behavior-contract.yml:runs-on; release.yml:runs-on; cache-reuse-witness.yml:consumer/macos-candidate; external-drift.yml:macos-filesystem-capabilities | Q7 accepted: no automated macOS jobs. Two-core Ubuntu publication stays on GitHub-hosted runners for npm trusted publishing. Module/persistence/injection N/A. | none | grounded |
| Performance | Research report:September 22 deep dive; detailed job 105078205569 | Historical failed-run CLI time 2612.83s; top three 2419.509s. Q10 removes the percentage target and sharding. Compare passing 2-vCPU work/latency and distinguish warm reuse; no current benchmark. | none | grounded |
| Test portfolio | update/run.ts:applyDependency; run.test.ts:runUpdateWithPreview; behavioral-portfolio.test.ts:351; release-publication.mjs:classifyEntry | Real installs in injected-lint tests, repeated update preparation, broad built-process policy matrices, about 89 source-derived historical builds. Keep meaningful filesystem/receipt outcomes. | none | grounded |
| Cache | turbo.json:globalDependencies and @punks/cli#build/test; cache-identity.mjs:verificationEnvironment | Capability task boundaries accepted. Hash real transitive inputs, relevant tools/platform/trust; existing signed Turbo cache retained. Unknown relevant identity cannot reuse proof. | none | grounded |
| Triggers/authority | behavior-contract.yml:on/concurrency/aggregate; release.yml:release-evidence/production; root AGENTS.md:publication eligibility | Keep both triggers/current cancellation and current publication authority. No new receipt lookup or release redesign. | none | grounded |
| Unselected proof | package.json:test/test:cache-policy; research root/operator inventory | Current supported consumers determine selection/deletion. Preserve real cleanup/process identity outcomes; no automatic blanket suite addition. | none | grounded |
Consolidated System
The accepted system is owned behavior → cheapest meaningful proof → precise cache inputs → isolated execution in existing jobs → complete required result. Remove unnecessary work before considering scheduling, and introduce no sharding. Capability cache tasks express different input requirements; they are not duplicate test shards.
- Updater: preserve real file/receipt transactions; use controlled installed-state processes when installation is incidental. Reuse immutable prepared seeds with independent mutable roots. Retain actual cold-install, script-suppression, hook, containment, live-readiness, partial-failure and recovery witnesses.
- Release recovery: actual planner/validator over minimal real Git history and tiny valid artifacts. Full historical monorepo replay stays on demand. This relinquishes routine proof that every old builder still runs, not release authority or tamper protection.
- Built CLI: move catalog/prepare/dependency-section breadth to owned planner/reconciler/file-application seams; retain focused composition, dispatch, cache, delegation, output and failure witnesses. Move the complete diagnostic benchmark out of ordinary tests and delete the weak generic command/registration matrix.
- Other tests: delete no-owned-invariant/source/prose tests, reconcile every inventoried file and all unselected operator tests, consolidate genuinely overlapping proof. Preserve real database/auth/browser safety. Reuse suite-owned infrastructure only with isolated mutable state.
- CI/cache: narrow transitive inputs and required host capabilities, conditionally provision browser tooling, give duplicate root verification one owner, and simplify needless runner startups. Use existing signed caches, triggers, aggregate and release authority.
R4 evidence remains historical: three files account for 93.1% of CLI test-body time; obvious seven-file culls total 20ms. About 89 historical installs/builds are source-derived, not a measured trace. Q10 removes all target arithmetic as an acceptance condition. Demonstrate the implemented savings without inventing a minimum percentage, monthly cap or test-count quota.
Final Domain Consistency
Domain Modeling checked the accepted status vocabulary against the existing CI glossary. The old PR-only, built-command-only and mandatory prior-PR receipt axioms conflict with the accepted/current policy and are superseded in the canonical glossary. Terms keep their identities; Behavioral Test includes the nearest owned application/adapter seam, while CLI Behavioral Test remains the built-process subset. Test caching does not permit stale input evidence; removing macOS automation does not imply Linux proves macOS behavior. No unresolved terminology or requirement remains.
Glossary
Final consistency is complete at R5. Accepted terms are published in the existing CI Verification and Publication Glossary. The decision trail remains in the grill log.
Terms
- High-Signal Test: A test proving a supported capability, public contract or Safety Invariant that fails for a meaningful product defect.
- Behavioral Test: A test observing a stable outcome through the nearest owned public seam.
- Implementation-Shape Test: A test whose only proof is internal spelling, registration, source arrangement or a historical fixture pin.
- Safety Invariant: A rule preventing corruption, containment escape, secret exposure, partial publication, unrecoverable state or unsafe cleanup.
- CLI Behavioral Test: A Behavioral Test starting the complete built hi or hint process and asserting meaningful output, status or files.
- Affected Verification: Required verification selected from actual changed inputs and dependent owned surfaces.
- Stable Aggregate Check: The required result accounting for all applicable verification, with intentional omissions justified by selection.
- Candidate Evidence: A receipt binding a successful same-repository PR run to its tested Git tree; it does not impose a lookup requirement on current publication.
Relationships
- Every retained High-Signal Test protects named supported behavior.
- CLI Behavioral Tests are one form of Behavioral Test; exported API/adapter outcomes can be valid Behavioral Tests.
- Affected Verification contributes to the Stable Aggregate Check.
- Cached proof is reusable only when relevant inputs, capabilities and trust authority match.
Pinned Axioms
- Test deletion does not authorize changing product behavior.
- Lowest invalidation means excluding irrelevant inputs, never omitting relevant dependencies.
- Unrelated documentation is not a product input; consumed prompt/skill content is.
- Historical issue names and numeric test counts do not establish value.
- Real owned installation/filesystem/auth/persistence/publication behavior cannot be replaced by a fake of that same behavior merely to meet a time goal.
- No monthly minute budget, percentage speedup threshold, fixed runtime ceiling or test-count deletion quota is part of these requirements.
- No test sharding is introduced; reduce actual work and invalidation within existing job topology.
- Removing hosted macOS execution does not turn Linux output into macOS evidence or itself withdraw product support.
Resolved Ambiguities
- Q10 explicitly supersedes Q8's 80% target. Warm reuse and forced execution remain separate measurements.
- Q9 replaces full historical-builder coverage in routine CI with minimal real protocol history; full replay is on demand.
- Q7 removes all automated macOS jobs. Two process workers on a larger VM do not satisfy the two-vCPU requirement.
- Current publication does not require prior PR Candidate Evidence lookup; older contrary glossary assertions are superseded.
- Capability cache groups are accepted; a test shard matrix or duplicate runners for test subsets are not.
Parked or Deferred Work
- Production release-planner memoization/metadata-first classification: owner CLI release subsystem; resume only with explicit behavior-change scope. Test fixture replacement is accepted now.
- Broader publication redesign, sticky disks, ARM migration, a new cache service and monthly quota enforcement: out of scope; owner CI/release maintainers, resume on explicit new requirements.
- PR #222 implementation belongs to its owning task. Preserve its behavior and child stack; restack without rewriting the parent.
Remaining fixture copy mechanics, cache input closure and measurement procedure are planning/validation work, not open product decisions. No prototype was needed; current-code traces and historical logs grounded this scope.
Validation and Rule Work Log
- HI-WIKI-001: pass; existing grilling/research routes and owning metadata reused.
- HI-WIKI-003: pass on 2026-09-22; current wiki content check, all six public contract tests, scoped formatting and whitespace checks pass. The two stale parent metadata files observed on 2026-09-21 are resolved by the updated parent. The earlier whole-wiki lint failure is still historical failure evidence, not a new passing lint claim.
- HI-DOCS-001: pass; pending requirements stay in the private wiki; implemented runbooks are unchanged.
- Production/test mutation gates and RED/GREEN: not applicable to requirements-only artifacts.
- Research edits are preserved. No shared skills or generated copies are edited.
- R4 research update: existing routed report/log/status only; no production, test, workflow or release-policy mutation. Wiki content check and all six public wiki contract tests pass; scoped formatting completed. This validates documentation, not proposed runtime savings.
- R5 compilation: all branches closed; SPEC.md contains seven outcomes and twenty unique acceptance criteria with complete one-way coverage. Existing glossary updated, spec metadata and indexes added. Wiki content check, six public contract tests and scoped formatting/whitespace checks pass. The authorized docs-only checkpoint exception applies to retention; no implementation gate exemption is introduced.
- Explicit Create Spec refresh: HI-WIKI-001 pass (existing route/index verified); HI-WIKI-003 pass (content check, six contract tests, formatting and complete outcome/criterion coverage); HI-DOCS-001 pass (requirements/provider evidence only, no implemented runbook change). Parent ancestry passes; release classification is none because neither changelog changes. Retention uses the existing authorized docs-only hook exception and
[skip ci], without claiming hosted CI or performance verification.
Remaining non-design validation: passing two-vCPU measurements; fresh/warm cache comparisons; isolation proof; relevant-input invalidation and irrelevant-input reuse. Blacksmith account readback is useful reporting, not a monthly-cap acceptance requirement.
Stack checkpoint and handback
-
Explicit Create Spec refresh, September 22: fetched #222's branch at
4d4b7b71622ee90228143af57f995f0f6de4bff8, refreshed the rebase (already up to date), and closed #222 as requested. Provider readback confirms closed/unmerged; #223 remains open against the retained parent branch. Recompiled the existing matching spec's Dependency Readiness and Branch/Base Intent; accepted product requirements and glossary are unchanged. This is a spec-only request with no backlog projection or implementation. -
R5 retained specification: immutable SPEC.md. Remote blob identity and PR head/base readback were verified. PR #223 was restacked onto #222 head
4d4b7b71622ee90228143af57f995f0f6de4bff8; post-restack content, six contract tests, formatting and whitespace checks pass. Requirements are closed; implementation/runtime improvement remains unclaimed. -
Backlog projection read-only preflight:
.devpunks/settings.jsonselects Linear, independently of source GitHub issue #217. Verified workspace Devpunks (1081916c-55b9-46bb-b923-a80db9ffca35), root Initiative164bcb79-1434-486e-956e-35347256b1a8, CLI Product Areaad21ca0b-b4b0-48e1-91ee-291a111335c4, and existing exclusive Kind labels. No destination/settings repair is needed. No accepted CI-efficiency Initiative/Epic placement or contextual iteration is established by this grill; no provider items were created, reparented or updated. Residual: reconcile and approve any new delivery hierarchy against the immutable spec before projection. This does not reopen product requirements or prevent planning with an explicit unprojected-task reason. -
Latest checkpoint, 2026-09-22: child restacked onto parent cef8e31e; content/format/whitespace checks and six contract tests pass. The previously authorized docs-only checkpoint exception remains command-scoped for the amended documentation commit and its lease-protected push. No production/test/workflow edits or future gate exemptions are introduced. Earlier entries below preserve September 21 evidence.
-
Child branch team/stefan/issue-217-ci-cost is rebased onto PR #222 head 4d61376abe20c88a955e8670a8d6d65a44fce410. Parent navigation and log additions were preserved while restoring this task's documents.
-
The requested research/requirements commit was rejected by the repository pre-commit hook: wiki lint reports 497 errors across existing source/configuration, including 273 diagnostics in the generated anti-slop bundle. None of these source files is changed by this task. The hook and lint configuration remain enabled and unchanged.
-
Scoped content/format/public-contract checks do not replace the failed required hook automatically. The user explicitly authorized the docs-only commit-hook bypass and dependent draft PR with "yes go" on 2026-09-21.
-
Post-rebase validation: six public contract tests pass. Full content check now reports stale apps/wiki/content/docs/project/specs/cli/meta.json and issue-200-201-219-220-validation/meta.json inherited from PR #222. Neither file is modified by this child; preserve the parent work and report the dependency blocker. Scoped formatting and whitespace checks pass.
-
Handback resolved: authorization covers this docs-only commit and dependent draft PR. Use a command-scoped hook bypass; preserve repository hook configuration and record inherited failures. It does not authorize bypassing future implementation gates or fixing unrelated baseline lint. Requirements closure remains a separate step.
-
The ordinary push also failed: .githooks/pre-push invokes release:candidate with obsolete --base/--head arguments, rejected as "Invalid Candidate Evidence argument: --base". Apply the same command-scoped docs-checkpoint exception to publishing this branch; do not claim that release-candidate validation passed.