Repository navigation
Description
Problem
#331 adds a dormant agentrepo retro command group (preflight and new). The analyze-session skill still runs preflight.sh and new-retro.sh, so the command has no caller and the N-2 warning period under docs/compatibility.md can't start. #932 names this switch as "child 04" of #331, and no issue tracks it.
Acceptance criteria
- AC1: Given a released
agentrepothat registersretroininternal/agentrepo/command.go, the skill's normal entry runs the command through the The binary resolver, permanent launcher and configuration bridges are resolved in Go #932 launcher. With an absent or older binary, the frozenpreflight.shandnew-retro.shrun unchanged, and no new fallback implementation is written. - AC2: The change records, in
docs/compatibility.mdanddocs/agent-skills-migration.md, the release that first ships the activation (the warning start), the pinned floor that covers the command, and the evidence:git tag --containsfor the merge commit of each Port analyze-session's shell scripts to Python #331 slice and for the final parity commit of Restore retrospective artifact copying parity #1031 and Restore retrospective preflight and exit-status parity #1032, and the tag list. The warning-start release and the accepted floor must contain both Port analyze-session's shell scripts to Python #331 slices and both parity fixes. A release that holds the command without them keeps the frozen fallback in use. - AC3: The PR declares, under
## Risk,Compatibility: deprecates analyze-session-shell-scripts since <version>, where<version>is the release that first ships the activation, in the formdocs/compatibility.mdaccepts (one key without spaces, then the version). - AC4: Non-functional: no shell logic is added beyond the launcher probe and exec boundary,
mise run lint-shellandmise run check-generated-skillspass, the regenerated skills, token records and lock are committed in the ordermise run generate-skills,mise run skill-tokens,apm install, and no gate is loosened. - AC5: The 20 Bats tests in
tests/skills/analyze-session/scripts/analyze-session.batsstill pass against the frozen fallback. - AC6: Given a binary that registers
retro, a supported invocation forwards arguments, stdout, stderr and its exit status exactly once and never falls back to the frozen scripts, including when it fails after writing partial retro artifacts. Given an absent binary or one without the subcommand, the frozenpreflight.shandnew-retro.shrun unchanged.
Scope and non-goals
In scope: switching the skill's normal path to the command and declaring the deprecation. Non-goals: editing the command (#331), removing the scripts (the removal issue), and shortening the window.
Approach
Read the released-command condition from #331 and the launcher contract from #932, then change the skill source and regenerate. The mechanism is the implementer's choice within those outcomes.
Dependencies
Blocked (native links) by #331 and #932. Blocked on: #1031 and #1032, the parity children, and on both #331 slices through #331. Blocks the removal issue. Native parent: #588. Part of #588.
Size
S.
Verify plan
- AC1: with no binary, a stand-in binary that registers
retro, and one that doesn't, run the entry and assert the command runs only in the second case and the frozen scripts run in the first and third, with byte-equal stdout and exit status against the frozen run for the shared fixtures. - AC2: read both documents and check they name the warning-start release, the floor and the evidence. Then run
git tag --containsfor each of the four commits: the merge commit of each Port analyze-session's shell scripts to Python #331 slice, the final parity commit of Restore retrospective artifact copying parity #1031 and the final parity commit of Restore retrospective preflight and exit-status parity #1032. Confirm that both the warning-start release tag and the accepted-floor tag appear in every result. A tag missing from any result fails the criterion. - AC3: run
mise run lint-pr-descriptionand confirm the validator accepts the line. - AC4: run
mise run lint-shell,mise run check-generated-skillsand the generation sequence, then assert exit 0 and no uncommitted change. - AC5:
mise run test-hooks tests/skills/analyze-session. - AC6: with a stand-in binary that registers
retroand exits 1 after creating a partial retro directory, assert the entry exits 1 with the same stdout and stderr, the stand-in ran once, and no frozen script ran (a marker file in the frozen stub is absent). With no binary and with one lacking the subcommand, assert the frozen scripts ran and the stand-in did not.
Risks
An older installed binary keeps running the frozen scripts, which is the intended fallback. Reverting the commit restores the previous entry.
Operator authority
None.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Work type
Projects
- StatusShow more project fieldsBacklog
Activity
tbhb-dev-reviews commentedon Oct 31, 2026
Refinement: NOT READY — compatibility declaration cannot pass and failure routing needs evidence
Checked
Gaps
AC3 mandates a declaration the current validator rejects. The literal
Compatibility: deprecates analyze-session shell scripts since <version>has spaces in its key. packages/agents/source/skills/pr/shared/scripts/validate-description.sh:508 requires one non-whitespace key and one version. Use a single key such asanalyze-session-shell-scripts, the actual warning-start version, and placement under## Risk, per docs/compatibility.md:13 and docs/compatibility.md:20. The successful lint verification cannot satisfy AC3 as written. Correct the body rather than relaxing the validator.Pin supported-command failure routing at activation. AC1's Verify covers a supporting stand-in and one lacking the command, but does not explicitly exercise an absent binary or a supported invocation that starts and fails. Add observable ACs and fixture checks that absence/unsupported binaries run the frozen fallback, while a supported invocation forwards arguments, stdout, stderr and its nonzero status exactly once and never retries through fallback. Trace those outcomes in Verify. new-retro writes artifacts before all report subprocesses finish (packages/agents/source/skills/analyze-session/shared/scripts/new-retro.sh:107); a failed Go invocation must not run a second implementation over partial state. Port analyze-session's shell scripts to Python #331 AC12 verifies the command's subprocess statuses, not this activation routing.
Split
The split and native graph are correct; no extra issue is needed. #331 owns the additive command, this issue owns activation and warning evidence, and #1003 owns post-window retirement. Resolve the two gaps here before declaring the whole sequence ready. Replacing generic removal references with #1003 is editorial; ownership is established by the graph.
Definition of done
Ticks mean complete coverage by ACs and Verify, not completed implementation. Partial coverage stays unchecked. Unchecked base duties still apply at delivery; omission from this body alone is not an additional refinement blocker.
check-leaks.shwith the repository's private-strings list, and the leak review of each post. The full obligation is not specified in this issue’s ACs/Verify plan.docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why. AC2 and Verify update compatibility and migration documentation for activation.provenance:agent-assistedlabel. The full obligation is not specified in this issue’s ACs/Verify plan.Status:comment names the merge commit. The full obligation is not specified in this issue’s ACs/Verify plan.Post-redesign round; earlier pre-redesign rounds are excluded.
Round: 1 of 3
tbhb-dev-reviews commentedon Oct 31, 2026
Refinement: READY — activation routing and compatibility declaration now have verifiable contracts
Checked
origin/mainmatches remote main at1263c1fde522f7f7bc4658214df1db73624a8652. The normal callers remain shell atpackages/agents/source/skills/analyze-session/SKILL.codex.md:24andpackages/agents/source/skills/analyze-session/SKILL.claude.md:22;internal/agentrepo/command.go:85registers no retro command. Inspected both canonical shell implementations and the existing 20 Bats tests.analyze-session-shell-scriptsunder## Risk, matchingdocs/compatibility.md:13and the accepted pattern atpackages/agents/source/skills/pr/shared/scripts/validate-description.sh:508. This resolves the earlier declaration gap without changing the validator.packages/agents/source/skills/analyze-session/shared/scripts/new-retro.sh:107.Nonefits the stated activation scope; existing protected-path and exact-head review requirements continue to apply if the implementation touches those paths.Gaps
None blocking readiness. Both findings from post-redesign round 1 are addressed in the amended body. The ordinary delivery obligations left unticked below still apply; they are not implementation results or additional refinement blockers.
Split
No further split is needed. #331 owns the additive command; this issue owns activation, release/floor evidence and the warning-start declaration; #1003 owns retirement after the compatibility window. The shared launcher remains owned by #932.
Definition of done
Ticks indicate coverage by this issue's ACs and Verify plan, not completed implementation. Partial coverage remains unchecked.
check-leaks.shwith the repository's private-strings list, and the leak review of each post.docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why. AC2 and Verify cover activation and compatibility documentation.provenance:agent-assistedlabel.Status:comment names the merge commit.mise run checkis green, and so are the coverage floorsmise run cover-go-checkandmise run cover-py-check, whichcheckdoesn't run.packages/agents/source/commits whatmise run generate-skills, thenmise run skill-tokens, thenapm installrewrite, in that order, andcheck-generated-skills(part oflint) passes. AC4 and Verify cover this sequence.docs/agent-skills-migration.mdor the adoption docs, or the PR's Verification says "No consumer impact" and why. AC2 and Verify cover migration documentation for the activation and supported floor.One earlier comment starts with
Refinement:; this is post-redesign round 2.Round: 2 of 3
tbhb-agent commentedon Nov 1, 2026
Refinement: READY — AC2 verification now covers all four prerequisite commits
Checked
tbhb-dev/devtools. Read Switch analyze-session to the Go retro command with the frozen scripts as fallback #1002’s live body and every comment, Restore retrospective artifact copying parity #1031 and Restore retrospective preflight and exit-status parity #1032’s live bodies, andorigin/main:docs/compatibility.md.git tag --containschecks, each requiring both named tags, provide checkable ancestry evidence that the warning-start release and accepted floor include both Port analyze-session's shell scripts to Python #331 slices and both parity fixes.Gaps
None.
Split
No further split needed. The children own parity fixes; #1002 owns activation and release evidence. Four ancestry checks are proportionate, with no over-engineering.
Loosens: no
Owner-tier: no
Definition of done
The definition of done for #1002 (Feature). Tick each item and give its evidence.
check-leaks.shwith the repository's private-strings list, and the leak review of each post.docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.provenance:agent-assistedlabel.Status:comment names the merge commit.mise run checkis green, and so are the coverage floorsmise run cover-go-checkandmise run cover-py-check, whichcheckdoesn't run.packages/agents/source/commits whatmise run generate-skills, thenmise run skill-tokens, thenapm installrewrite, in that order, andcheck-generated-skills(part oflint) passes.docs/agent-skills-migration.mdor the adoption docs, or the PR's Verification says "No consumer impact" and why.Round: 3 of 3