Conversation
…t and live-worktree list, though PR #357 wired scripts/lane_setup.py into commands/tick.md (#360) Two documents described one procedure for the same step, and SKILL.md is the one a tick loads first. With the hand-copy procedure in force, main moved four times across two ticks and fix/313 / fix/341 were each briefed onto README.md forty minutes apart, because the worktree ownership list was retyped rather than derived. Both instructions in SKILL.md ("Run a fleet, not a queue" and the per-brief checklist) now point at scripts/lane_setup.py <issue> instead. A guard in tests/test_content_invariants.py, in the same two-copy shape as #266 and #250, fails if a document instructs naming the live worktrees without also naming the script -- red confirmed against the pre-fix wording, green after. agents/developer.md is deliberately left unchanged: it already re-derives its own base via origin/<default_branch> rather than a pasted sha, and it receives the live-worktree list from the brief rather than deriving it itself, so it carries no hand-derivation instruction for lane_setup.py to replace. Co-Authored-By: Max <noreply>
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.
Closes #360
What
PR #357 merged
scripts/lane_setup.pyand wired it intocommands/tick.md, butskills/manager/SKILL.md-- the document a tick loads first -- still instructed the maintainer to hand-derive the base commit and the live-worktree list before every brief. So the loop documented two procedures for one step.Both spots in
SKILL.mdthat instructed naming/deriving the worktree list by hand (the Run a fleet, not a queue section and item 6 of the per-brief checklist) now point atscripts/lane_setup.py <issue>instead, in the same "run this, not these are the answers" shape the rest of the file uses.agents/developer.mdis deliberately left unchanged: it already re-derives its own base viaorigin/<default_branch>rather than trusting a pasted sha, and it receives the live-worktree list from the brief rather than deriving it itself, so it never carried the hand-derivation instruction this issue is about. Argued in the report, not guessed.Guard
tests/test_content_invariants.pygains_lane_setup_unmet/_requires_naming_the_script, in the same two-copy-invariant shape as the existing#266(_out_of_tree_write_unmet) and#250pairs: a document that instructs naming the live worktrees without also namingscripts/lane_setup.pyis a finding. The trigger phrase ("live worktree") is chosen to survive the fix's own rewording, with a must-fire control asserting the phrase itself does not silently disappear -- the trap the issue calls out explicitly: a check asserting only "SKILL.md mentions the script somewhere" would pass against a document that mentions it in passing while still instructing hand-derivation three paragraphs later.Red confirmed against the reconstructed pre-fix wording and against the real pre-fix
SKILL.mdbefore the edit; green after.Evidence, measured
With the hand-copy procedure in force:
mainmoved four times across two ticks, andfix/313/fix/341were each briefed ontoREADME.mdforty minutes apart because the worktree ownership list was retyped rather than derived -- the correctness half of #317 arriving as a real defect.Testing
pytest tests/test_content_invariants.py -k "lane_setup or worktree_naming or pre_360" -q --no-cov: 1 failed / 3 passed before the fix, 4 passed after.python3 -m pytest tests/ -q --no-cov: 2580 passed, 2 skipped (run because the new guard lives in a shared fixture file every other content-invariant test also imports from).changelog.d/360.fixed.md, verified withpython3 scripts/assemble_changelog.py --check --dir changelog.d --changelog CHANGELOG.md(run alone, no--check-links).Self-review
Spawned an
Explorereviewer and anoss:auditoragainst the committed diff. Both returned NO FINDINGS / FINDINGS: 0. Full exchange in the report'sreviewfield and in the note.Verified by the maintainer
Independent red re-run, against the tag candidate rather than a moving
main. A detachedworktree at
e4d48de— the commit0.8.0was going to be cut from — with this branch'stests/test_content_invariants.pycopied in and nothing else changed:One assertion fires and 151 hold, and the failure names the contradiction rather than a missing
string. That is the shape I asked for: a check satisfied by "
SKILL.mdmentions the scriptsomewhere" would have passed against exactly the state #360 describes — the script named in
passing while hand-derivation is still instructed three paragraphs later.
The declined half is the better half.
agents/developer.mdwas left unchanged, with a reasonrather than a shrug: it already re-derives its own base against
origin/<default_branch>instead oftrusting a pasted sha, and it receives the worktree list from the brief rather than deriving it, so
it never carried the instruction this issue is about. I told the lane either answer was acceptable
with an argument; this is the argument.
Why this merged when it was being deliberately held. It sat green and unmerged through two ticks
so that merging it could not move
mainout from under0.8.0's cleared gate 1 (e4d48de, 13/13)or the release audit's
v0.7.0..e4d48derange. That audit has now returned findings, one of themblocking, so the tag does not get cut from
e4d48deand the range has to be re-audited over thefixes regardless. The reason for holding expired with the verdict; recording it here so the sequence
reads as a decision rather than as an inconsistency.