docs(getff-freshness-widening): S0 — fold the trace umbrella's routed-onward residuals into the kickoff - #1279
Merged
Conversation
…-onward residuals into the kickoff The umbrella kickoff was authored before its upstream (getff-any-stack-trace) finished; its own §0 re-plan rule obliges folding that umbrella's landed diffs and done.md residuals before S1 dispatch. Seven corrections, one file: - D1 go lane: S4 said "js/rust parity" while done.md routed "cargo + go" rung parity here. The go lane is live (setup.d/47-go.sh, backends/golangci, #1236). - D2 --refresh: routed to this umbrella by R1 §5.1, previously named in no stage. Gets its own stage S4b rather than folding into S4 — §1 binds one PR per stage and S4 already carries three lanes plus the fixture debt. Explicit descope instruction if a landed trace diff already closed it. - D3 cargo rung-5 delivery cascade: named as its own S4 deliverable instead of being folded into "mirror the agent-surface delivery". - D4 S5: said "RE-RUN" a protocol that has never run — the trace umbrella PARKED it because a container cannot satisfy cold-start conditions #2/#3. Now reads "FIRST run", host-only, with an explicit re-park instruction over a warm run. - D5 S2: "byte-identity gate across ALL THREE hook copies" named a mechanism that does not exist. deps-hash-check.test.ts:515-527 compares TWO files; the third copy is generated by scripts/generate-plugin-twins.sh via .husky/pre-commit and is never hand-edited. The header's "3-way guard" is one claim over two mechanisms; S2 now says which to edit and which regenerates. - D6 (fail-closed): no host-verify contract. scripts/host-verify.sh exited 2. Added §4 with three commands, each traced to a §2 "works" criterion. - D7 (fail-closed): no park-don't-guess contract, so autonomous dispatch was blocked. Added §5, plus the harness constraint discovered dispatching S0. Also records that .claude/** writes are refused inside the aif container, which makes S2 non-container-dispatchable as written — the same wall that blocked S0. Verified on this host: host-verify 3/3 exit 0 (was exit 2); park grep present; check-kickoff-traps 52/52; principle 12 7/7; diff touches exactly one file. Prior-art: skipped — dispatch-input correction only, one kickoff.md edited to match already-landed upstream state; no dependency, no code module, no capability.
This was referenced Aug 7, 2026
artyhoo
added a commit
that referenced
this pull request
Aug 8, 2026
…ty (#1287) Dispatch input for stage S1 (spec §7.1). Stage gate met: S0 merged (#1279, #1281). Scoped from the source, not from the umbrella's prose: - The target is three rules-lock writers, enumerated not sampled: setup.d/45-python.sh:624, setup.d/46-cargo.sh:244, setup.d/47-go.sh:211. A wider `grep '"version": null'` also hits packages/core/research/**, packages/core/synthesizer/fixtures/** and detector fixtures — a DIFFERENT artefact class (research plans) where the null may be legitimate. The kickoff names that scope trap explicitly so the stage does not sweep them. - RulesLock (packages/core/installer/types.ts:36-43) carries `ruleIds: string[]` — a flat array with NO per-rule field. "Provenance/tier per rule" is therefore an additive schema change, not a value fix, so §4 binds the capability-commit obligation (BFR consult + SSOT row + Prior-art trailer) rather than leaving it to be discovered mid-stage. Two domain traps are recorded because both are the cheap wrong path here: T-S1-A (substituting a variable at the three printf sites satisfies criterion 1 and fails the stage — criteria 2 and 4 cannot be met that way) and T-S1-B (declaring lane parity by reading the four writers instead of asserting over generated outputs; tests/install-sh/rules-lock-schema-parity.test.sh exists and should be extended, not duplicated). Container-dispatchable: the §2 allowlist covers setup.d/ + packages/core/ only, avoiding the .claude/** write block that stopped the S0 dispatch (task 6cfa9c79). Carries its own host-verify contract and park-don't-guess contract; the pre-registered likely park is criterion 6's backward-compatibility policy for schemaVersion, which has a consumer-visible consequence. Prior-art: skipped — dispatch-input authoring only, one kickoff.md under .claude/orchestrator-prompts/; no dependency, no code module, no capability. Co-authored-by: Test <test@example.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Stage S0 of
getff-freshness-widening: the umbrella kickoff was authored before its upstream (getff-any-stack-trace) finished, and its own §0 re-plan rule obliges folding that umbrella's landed diffs +done.mdresiduals before S1 dispatch. Seven corrections, one file.done.mdrouted «cargo + go» here. Go lane added to scope.setup.d/47-go.sh,packages/core/backends/golangci/, PR #1236--refreshrouted here by R1 §5.1, named in no stage → own stageS4bdone.mdrouted-onward list, distinct itemdone.md: «RUN — PARKED … the RUN defers to the host»deps-hash-check.test.ts:515-527compares two files;grep -n plugin→ 0 hits; third copy generated byscripts/generate-plugin-twins.shvia.husky/pre-commit:155-166host-verifycontract (exit 2)Why this landed from the host, not the container
S0 was dispatched to aif (task
6cfa9c79). The worker did the full verification pass and independently confirmed every one of D1–D7 — then hit a hard wall: Claude Code refuses writes to.claude/**paths inside the container (every channel — Edit, Write, Bash heredoc; filesystem permissions are fine). It correctly parked rather than guessing or faking, and its reviewer independently verified the block and returned a Blocking verdict. Zero commits, clean tree.Two things follow, both recorded in the kickoff's new §5:
.claude/hooks/deps-hash-check.sh. It is not container-dispatchable as written; route it to a host session or pre-authorize the path.status=donewithmanualReviewRequired=falsedespite a BLOCKER in its log and a Blocking review verdict. A park-flag watcher cannot be trusted as the only stall detector.Verification (on this host)
Parked questions
None outstanding. The pre-registered park candidate — D5, the plugin-twin's real guarding mechanism — was resolved with evidence rather than parked: the twin is auto-generated (
scripts/generate-plugin-twins.sh, wired at.husky/pre-commit:155-166), and its md5 delta from the source is exactly the injected# AUTO-GENERATEDheader —diff <(sed '2d' plugin/hooks/deps-hash-check) .claude/hooks/deps-hash-check.shis empty. The hook header's «3-way guard» is therefore imprecise, not false: two mechanisms, not one gate.Noted, deliberately not fixed here (one concern per PR): that pre-commit channel is author-side and skippable — a
--no-verifycommit, or a machine wheremake install-hooksnever ran, leaves the twin stale. Real but out of this umbrella's scope.§1.7 Skipped: dispatch-input correction only — this PR edits one
kickoff.mdunder.claude/orchestrator-prompts/, a path outside the §4b discipline-bearing list (no rule, principle, template, skill, agent, CLAUDE.md or SSOT surface is touched); the change makes the kickoff match already-landed upstream state rather than introducing any new discipline.Fidelity verdict
FIDELITY: skipped — no
## Provenancesubstrate is declared for this PR: the aif dispatch produced zero commits (hard-blocked on.claude/**writes) and the diff was authored on the host, so there is no container-produced work for a fidelity auditor to compare against the spec. The stage's own six acceptance criteria are quoted with their host output above.