feat(session-flow): handoff routing signals, artifact rules, worktree caveat - #3019
Conversation
… caveat Implements the AI Hero course lane 1 wording changes (refs #2956, decision record #2899): - "When to invoke" names the session-chain/retrospective use first-class (save-point, /clear, fresh session; the session_id/previous_handoff chain retro walks) alongside the boundary-crossing taxonomy (colleague, other repo or checkout, other agent, forked side task), and a routing-signals table maps situation to form: full file (default), prompt-only with the documented retro-gap cost, either form plus purpose, the sibling continue-in-background skill, clean-stop semantics, and full file plus purpose plus origin line for boundary crossing. - The skill body states the general do-not-duplicate rule (reference content captured in specs, plans, ADRs, issues, commits, diffs by path or URL, never restate) and the promote-content-never-file rule (durable value is promoted into a committed artifact; the handoff file stays ephemeral and uncommitted; cleanup of handoffs/ remains user-controlled removal, never silent expiry). - save-point.md's destination section gains the worktree caveat: a save-point written inside a worktree checkout dies with git worktree remove; acceptable only when the worktree completes as a merged PR unit; otherwise write from the main checkout or rely on clean-stop's preserve-before-remove step. - session-flow 0.25.0 -> 0.26.0 with the matching CHANGELOG entry. find-handoff's detection contract is untouched. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
|
Claude finished @kyle-sexton's task in 1m 47s —— View job Claude finished the code review
SummaryThis is a docs-only PR (SKILL.md, reference doc, CHANGELOG, plugin manifest version) with no code paths, so the code-review lane's "always check" items (audit-log completeness, atomicity across multi-record writes) don't apply here — there's no state-mutating logic in the diff. I read the full diff against
No correctness, maintainability, or convention issues found. Nothing to flag inline. Branch: |
|
Claude finished @kyle-sexton's task in 39s —— View job Security review — skipped (no security-relevant surface)
Per All four changed files are documentation/metadata only:
No code, no GitHub Actions workflow files, no scripts, no auth/authz logic, no injection surfaces (command, SQL, path, template), no secret/token/credential handling, and no permission or dependency-pin changes are touched by this PR. There is no exploitable path here for this lane to report. No findings. |
|
Last security-reviewed head: |
|
Claude has reviewed this PR 2 times. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 76432a4f64
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…te rule Addresses PR #3019 review findings: - The routing table's boundary-crossing row now states the transfer requirement: the handoff file is memory-tier and gitignored, visible only in the writing checkout (topic-docs visibility contract), so crossing to a colleague, another repo, or another agent requires sending the file out-of-band or promoting its substance into an artifact the other side can read. - The do-not-duplicate rule is scoped to durable artifacts and restates the structure doc's file-roles exception as authoritative: uncommitted or half-finished edits have no commit to reference, so their state is described in the save-point. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
|
Claude finished @kyle-sexton's task in 1m 31s —— View job Claude finished the code review
SummaryThis PR is docs/metadata-only ( The latest commit (
No new issues introduced by the fix commit. I re-verified the rest of the diff against
No further findings — nothing blocking, nothing to flag inline. |
|
Claude finished @kyle-sexton's task in 52s —— View job Security review — skipped (no security-relevant surface)
Per All four changed files are documentation/metadata only (full diff):
No code, no GitHub Actions workflow files, no scripts, no auth/authz logic, no injection surfaces (command, SQL, path, template), no secret/token/credential handling, and no permission or dependency-pin changes are touched by this PR. There is no exploitable path here for this lane to report. The two open review-comment threads on this PR (from No findings. |
Closes #2956
Summary
Implements the AI Hero course lane 1 wording changes for
session-flow:handoff: a routing-signals table mapping situation to save-point form, the session-chain/retrospective use named first-class in "When to invoke", the general do-not-duplicate rule, the promote-content-never-file rule, and the worktree caveat in the engine doc's destination section.find-handoff's detection contract is untouched.Fix
skills/handoff/SKILL.md— "When to invoke": names the session-chain use first-class (the escape-and-resume cadence whose handoff files carry thesession_id/previous_handoffchain/session-flow:retrowalks for retrospective reconstruction) alongside the upstream boundary-crossing taxonomy (colleague, other repo or checkout, other agent, forked mid-phase side task) — the UNION the lane decided. A new "Routing signals — which form to use when" table maps: deep-window escape with chain value → full file (default); small follow-ups, no chain value → prompt-only with its documented retro-gap cost; differing next-session focus → either form plus the purpose argument; AFK-but-work-continues → the siblingcontinue-in-backgroundskill (explicit user request only); machine may go away →clean-stopsemantics; boundary crossing → full file plus purpose plus theHandoff origin:line. The table's AFK row absorbs the former standalone "Going AFK" paragraph (same content, one home).skills/handoff/SKILL.md— new "Reference other artifacts; promote durable value" section: states the do-not-duplicate rule mirroring upstream (content captured in specs, plans, ADRs, issues, commits, or diffs is referenced by path or URL, never restated — the existing "Summarize; never transcribe" per-section guidance stated as a general rule) and the promote-content-never-file rule (durable value is promoted into a committed artifact — topic contract, issue, PR body — while the handoff file stays ephemeral and uncommitted; cleanup ofhandoffs/remains user-controlled removal, never silent expiry — no expiry behavior added anywhere, confirming the session-flow/handoff: hardening audit vs mattpocock/skills handoff issue corpus (#186/#306/#617/#482) #1477 finding-4 rejection).reference/save-point.md— "Where save-points live": adds the worktree caveat — a save-point written inside agit worktreecheckout resolves its memory root within that worktree and dies withgit worktree remove; acceptable only when the worktree completes as a merged PR unit; when pausing un-merged worktree work, write from the main checkout or rely on/session-flow:clean-stop's preserve-before-remove step (which already inspects ignored content before removal and names "generated handoff data" explicitly — the existing cross-reference from worktree-touching tooling).0.25.0→0.26.0with the matching CHANGELOG entry.Verification
bash scripts/validate-plugins.sh— all manifests and the catalog validated.npx markdownlint-cli2on the four touched markdown files — 0 issues.bash scripts/check-changelog-parity.sh --check,--check-bump origin/main,--check-order— all pass (83 changelogs, newest-first, bump matched by entry).bash scripts/check-changed-skills.sh origin/main— PASS, 0 errors (one soft-target warning: SKILL.md 230/500 lines against the 200-line soft target; the local mawkREcompilepanics are the known skill-quality: check-skill.sh fresh-eyes scanner breaks under mawk — ERE interval expressions unsupported #3005 artifact, non-failing).skills/find-handoff/and the detection-contract section ofsave-point.md's resume-prompt shape untouched by the diff.Related
Refs #2899 (lane 1 decision record),
docs/upstream/aihero-course.mdlane 1 rows. Refs #1477 / PR #1560 (cleanup sub-item rejection this confirms). Refs #2955 / PR #3017 (purpose argument, sibling item the routing table's purpose rows build on). Refs #3005 (mawk artifact noted in Verification).🤖 Generated with Claude Code
https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
Generated by Claude Code