Skip to content

v1.1.1 — orchestrator FP + exit-attribution + inert-edit fixes for the Class-1 evidence layer

Choose a tag to compare

@akahkhanna akahkhanna released this 14 Jul 15:41
· 13 commits to main since this release

Three fixes, each surfaced by putting v1.1.0 through two Fable passes (a
break-it red-team + an architectural review) and a real subagent transcript:

  • SubagentStop falsely accused every test-running subagent of "no test ran":
    the sidechain filter (correct for the main path) deleted the subagent's own
    evidence while keeping its claim, and the stop also wrote shared session
    state against the ORCHESTRATOR's contract. main() now branches on
    hook_event_name===SubagentStop: parse the subagent's own file with
    includeSidechain, grade its claim against its own evidence, write nothing
    shared, demote block->warn. Empty/unreadable transcript -> abstain.

  • Exit-status attribution was wrong across every shell connector: && echo ok
    laundered a crash, cd x && npm test fired on a test that never ran,
    || true/pipe/; laundered a red into a green. Replaced with a
    connector-aware rule (|| -> null; exit belongs to the last ;/newline
    statement; within the last statement attributable iff every non-family
    segment is infallible {echo,true,:}; a null latest run abstains and never
    displaces an earlier red). Command-position anchor (FAM_CMD_RE) so a runner
    name in an argument (grep vitest ...) is not a family run.

  • Stale-green fired on inert edits (a comment on a code line, whitespace
    reformat): the mutation-is-code test is now the normalized code portion
    (splitCodeComment + collapsed whitespace), so comment/whitespace deltas
    don't count while string/code changes still do.

The review found five live defects in the half-finished implementation, two of
them the exact laundering/FP classes the changelog claimed closed (trailing
;/newline laundering, lone-& FP, redirected-echo FP, runner-name-in-arg
FP/FN, empty-subagent-transcript re-mint) -- all fixed at root with pinned
regressions.

Self-check 566 -> 596; legacy committed suite 509/509 (zero drift);
red-team 14/14; corpus unchanged (17/23 at-capture).

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Full symptom → root-cause → fix → regression-test in FIXES.md (v1.1.1).