Repository navigation
design: TDD 0067 rev 2 + ADR 0016 (escalation judged by the model that actually ran) - #186
Merged
Merged
Conversation
…t actually ran)
Resolves the 0067 BLOCKERS.md entry from /build-tdds run 20261005-174458.
In that run, the default escalation binding `fable` was refused headless
(credits_required), and an interactive Agent dispatch with model `fable`
silently ran claude-opus-5-5. All six fable-requested workers answered as
Opus. As revision 1 was designed, every escalation on this account would
have recorded `escalated model=fable` while Opus did the work (an NFR-4
violation).
- TDD 0067 rev 2 (in-place revision; the TDD is still draft):
- tl_worker_actual_model and tl_escalation_verify read the worker
transcript (subagents/agent-<id>.jsonl) after each escalated worker.
- A family mismatch records fell-back "harness ran <id>". An unreadable
model records fell-back "actual model unverified".
- Substituted output is kept, and the TDD's later workers inherit.
- The live probe now proves detection. P1 uses the binding, P2 a bogus
model, and P3 is a positive control on `opus` that exercises the live
transcript reader.
- Build deviations folded in: credits_required counts as a fall-back;
the async Agent stream shape is handled; the failed report is copied
before retry-begin.
- The diff sizes are re-declared to match the build.
- ADR 0016 (new, accepted) revises only ADR 0015's fall-back detection
consequence. Fall-back is now detected at dispatch OR after the worker
completes, from its transcript. An unverifiable model counts as a
fall-back, and a fall-back is never inferred from a timeout.
- BLOCKERS.md: the 0067 entry is checked off with its resolution.
Recovery after merge: run /build-tdds, then step-3 Retry on the retained
branch build/20261005-174458/0067-build-tdds-escalation (c2d56fa). Do
not rebuild.
Design critique (design-reviewer, two fresh passes):
- Pass 1: BLOCK.
- M1: post-completion detection and unverified→fell-back contradicted
ADR 0015's "detected at dispatch" and FR-88's wording, while the TDD
said no ADR was needed. Fixed by ADR 0016, with the FR-88 wording
listed under PRD conflicts surfaced as a candidate for a later PRD
pass.
- M2: the probe's PASS on this account never exercised the live
transcript reader. Fixed by adding the P3 positive control.
- Minors fixed: session-id scoping and validation, plus notes on Grok
and unknown-family overrides.
- Pass 2: DESIGN_REVIEW: PASS. Its two minors are applied: inherited
workers are never verified, and an alias↔id family case is added to
the fixtures.
Every TDD carries the reused, user-approved 0064–0067 evaluation rubric.
Open assumptions & waivers:
- interactive fable dispatch silently substitutes opus — resolved: after each escalated worker, read subagents/agent-<id>.jsonl message.model; a family mismatch → fell-back "harness ran <id>".
- actual model may be unreadable — resolved: record fell-back "actual model unverified (<why>)"; never claim an unproven escalation.
- probe requires a usable binding — resolved: the probe proves detection. It passes iff each real dispatch is classified correctly. P3 is the positive control. BLOCKED only when the actual model can't be determined.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Ki3TDnP2bNqqpEkFoZaEXq
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.
Resolves the 0067 BLOCKERS.md entry from /build-tdds run 20261005-174458.
In that run, the default escalation binding
fablewas refused headless(credits_required), and an interactive Agent dispatch with model
fablesilently ran claude-opus-5-5. All six fable-requested workers answered as
Opus. As revision 1 was designed, every escalation on this account would
have recorded
escalated model=fablewhile Opus did the work (an NFR-4violation).
transcript (subagents/agent-.jsonl) after each escalated worker.
model records fell-back "actual model unverified".
model, and P3 is a positive control on
opusthat exercises the livetranscript reader.
the async Agent stream shape is handled; the failed report is copied
before retry-begin.
consequence. Fall-back is now detected at dispatch OR after the worker
completes, from its transcript. An unverifiable model counts as a
fall-back, and a fall-back is never inferred from a timeout.
Recovery after merge: run /build-tdds, then step-3 Retry on the retained
branch build/20261005-174458/0067-build-tdds-escalation (c2d56fa). Do
not rebuild.
Design critique (design-reviewer, two fresh passes):
ADR 0015's "detected at dispatch" and FR-88's wording, while the TDD
said no ADR was needed. Fixed by ADR 0016, with the FR-88 wording
listed under PRD conflicts surfaced as a candidate for a later PRD
pass.
transcript reader. Fixed by adding the P3 positive control.
and unknown-family overrides.
workers are never verified, and an alias↔id family case is added to
the fixtures.
Every TDD carries the reused, user-approved 0064–0067 evaluation rubric.
Open assumptions & waivers:
🤖 Generated with Claude Code
https://claude.ai/code/session_01Ki3TDnP2bNqqpEkFoZaEXq