Skip to content

TDD 0066: /build-tdds model dispatch, confirmation, and run record - #185

Merged
cahenesy merged 4 commits into
masterfrom
build/20261005-174458/0066-build-tdds-model-dispatch
Oct 5, 2026
Merged

cahenesy merged 4 commits into
masterfrom
build/20261005-174458/0066-build-tdds-model-dispatch

Conversation

@cahenesy

@cahenesy cahenesy commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Implements TDD 0066 (PRD f6ef178, ADR 0015). Stacked on #184 (0065). Once #184 merges, the base retargets to master automatically, since auto-delete is on.

What changed

  • models.sh: tl_dispatch_model_arg, tl_model_warnings and tl_models_confirm.
    • The queue confirmation shows the parent model, the effort and its source, and each worker's model and source.
    • Two warnings: one when a judgment slot is pinned to the light tier, one when an effort pin is ignored.
  • run-record.sh: a per-TDD sidecar <run>/<slug>.models.json with 17 keys. It is written read-overlay-write, atomically, with JSON-escaped values. tl_run_set_tdd and tl_run_set_pr never touch it.
  • skills/implement/SKILL.md:
    • Block contract: every block is self-contained and takes its inputs from ${TL_*:?} env vars.
    • Two new blocks: tl:models-confirm (step 5) and tl:models-record (step 7).
    • Dispatch rule: inherit means no model parameter.
    • Step 9: resolves from the TDD path.
    • Step 10: "prior-gen" removed.
    • Logging: each worker logs its model.
  • README.md: the models paragraph is rewritten, and every "different model" claim now says "fresh worker".
  • tests/model-dispatch.test.sh (136 checks) runs the functions and the extracted blocks with env vars only.
  • Version 3.47.0 → 3.48.0, plus a releases.json entry.

Gates

Gate Result
test-first PASS (de0bee0 red: 76 fail → 9be7de9 feat)
ci-checks PASS (8 evals; model-dispatch 136/0)
runtime-verify (fable) PASS: 13/13. The real confirmation block on this session printed parent=claude-opus-5-5 effort=xhigh (settings; session-wide)
review (opus) PASS: no blockers or majors

Review follow-ups (not blocking)

  • Minor (0064 design gap):
    • When it happens: CLAUDE_CODE_SUBAGENT_MODEL is set and the parent model is light-tier or unreadable.
    • What goes wrong: mechanical verify is recorded as inherit [parent-cap] but runs on the env model.
    • Fix: one resolver arm that treats it as a pin, plus an eval case. I'll carry this into 0067's build.
  • Minor: the step 9/10 model log lines are written by the parent from prose instructions. The eval only checks their text.
  • Minor: a resume re-runs the record block, which logs implementer model= even when the implementer is skipped.
  • Nits:
    • README and SKILL text say the env pin applies to "every slot".
    • status.sh skips the sidecar only by accident (it has no slug key).
    • effort_source is stored as - when the effort is unknown.

Merge note

Merge #184 first with a regular merge, not squash, then this one. Once this merges, claude plugin update is safe.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Ki3TDnP2bNqqpEkFoZaEXq

cahenesy and others added 4 commits October 5, 2026 14:28
tests/model-dispatch.test.sh executes tl_dispatch_model_arg,
tl_model_warnings, tl_models_confirm, _tl_models_write, tl_run_set_models
and tl_run_get_model_field in a clean env -i shell against fixture TDDs and
a temp git repo with an initialized run, and extracts + runs the
tl:models-confirm / tl:models-record blocks from /build-tdds with only TL_*
env inputs. Observations 1-13 of TDD 0066; registered in implement-gate.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Ki3TDnP2bNqqpEkFoZaEXq
…DD 0066)

models.sh: tl_dispatch_model_arg (empty for inherit = no model
parameter), tl_model_warnings (light-pin and ignored effort-pin lines),
tl_models_confirm (per-TDD queue confirmation: parent, effort + source,
each worker's model + source; mechanical verify notes low effort
requested). run-record.sh: <run>/<slug>.models.json sidecar with exactly
17 keys, written atomically by _tl_models_write (read-overlay-write, so
no setter drops another's keys), tl_run_set_models, and
tl_run_get_model_field.

/build-tdds: block contract; step 5 tl:models-confirm and step 7
tl:models-record blocks (self-contained, TL_* env inputs, fail closed);
dispatch rule; step 9 resolves from the TDD path and logs
runtime-verify model=; step 10 drops prior-gen and logs reviewer model=;
Notes cite ADR 0015. README: models.sh comment, models paragraph, and
the different-model review claims reworded to fresh worker.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Ki3TDnP2bNqqpEkFoZaEXq
Base automatically changed from build/20261005-174458/0065-parent-session-model-check to master October 5, 2026 19:01
@cahenesy
cahenesy merged commit 47f0fa8 into master Oct 5, 2026
@cahenesy
cahenesy deleted the build/20261005-174458/0066-build-tdds-model-dispatch branch October 5, 2026 19:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant