Step 5a sibling-sync runtime-signature-skew residual + Step 10d TG classify-new-nodes missing #2302 base-identity exclusion (false-blocking gate verdict on #2205)
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Goal
Close the two-part gap that produced a false-blocking (and mis-labeled) Step 10d lint-gate verdict on #2205 (2026-08-20): (a) the Step 5a sibling-issue file-sync arm's import-satisfiability probe is COLLECTION-only (pytest --collect-only), so a main-tip sibling test whose body calls a src/ function signature added AFTER the branch fork point collects clean and then fails at RUNTIME inside the gate (the #2206/#2208 β-class residual, materialized: test_issue1739_claim4.py called ridge_layer_batched_auto(train_rows=...) against fork-era src/, TypeError) — extend the probe or the revert trigger to cover runtime-signature skew (options: probe-run the synced tests' mapped subset in the worktree post-sync; or teach the 10d TG classifier to route such failures to the revert remedy); and (b) the Step 10d TG classify-new-nodes leg feeds the RAW three-dot own-diff as --own-diff, with no #2302 base-identity exclusion — sibling-synced files (HEAD blob == origin/main tip blob) therefore read as "branch-new/payload tests — NEW by construction" and BLOCK, when the same evidence (base-identical + passing on trunk) shows the failure is environment/vintage, not payload; the 9c selector and compare already subtract base-identical paths (#2302), so this is a parity gap in the 10d gate recipe (18-step-10d.md workload + step9c_baseline classify-new-nodes contract).
Why (incident)
#2205 Step 10d (2026-08-20): the pre-gate Step 5a re-sync sibling arm imported the 10-file issue-1739 set from origin/main (collection probe green). The gate's TG gated leg then failed 5 nodes in those files (runtime TypeError from fork-era src), classify-new-nodes kept all 5 blocking (files in the raw own-diff), and the verdict was a false block (labeled crash) costing a ~45-min gate run + diagnosis + a pair-atomic revert + a second full gate run. All 5 nodes pass on trunk at the repo root — the branch's payload (verify_plan.py c46) was untouched by any of them.
Acceptance
- A sibling-synced file whose tests fail from post-fork src signature skew is either (i) not synced (probe catches runtime-signature skew), or (ii) auto-reverted pair-atomically by the same #2208 machinery that covers collection failures, or (iii) its gate failures route to a non-blocking classified arm (base-identical + trunk-green evidence) — any one of the three closes the incident shape; state which and why.
- The 10d TG classify-new-nodes own-diff input excludes base-identical paths (#2302 parity) OR the classifier gains a base-identity check; a base-identical sibling test failing in the gate must not classify as payload-NEW.
- Regression fixture reproducing the #2205 shape (synced sibling test + fork-era src stub → today: block; post-fix: revert/skip/unclassifiable per the chosen remedy).
Provenance
Surfaced by the #2205 orchestrator at the Step 10d lint gate (session cmt0rstzvmuuoxw0u2g5m28sk, 2026-08-20); filed per .claude/rules/workflow-fix-on-bug.md (workflow-surface gap: .claude/skills/issue/steps/09-step-5.md sibling-sync arm probe + 18-step-10d.md TG classify-new-nodes own-diff input).