Repository navigation
docs: stop PRs from conflicting in HANDOFF.md - #150
Conversation
Parallel PRs that each appended a State or Recent line to docs/HANDOFF.md conflicted on merge (#142, #143, #145, #148). New PRs add one file under docs/plans/handoffs/ and leave the index alone. QA: pnpm handoff:check (898 lines, pointer + frontmatter). No Playwright or native UI — docs/scripts only. Tests/coverage: not a product change; pre-push still required. PostHog: no event needed because no user-facing feature. Localization: none — English only (C18). Refactoring: none needed. ADRs: none. Docs: AGENTS.md, handy, rhizome-ship, CROSS-MODEL, GETTING-STARTED, YOU-SHOULD-KNOW, HANDOFF pointer, this handoff file. Demo vault dirt checked: empty. Co-Authored-By: Cursor Grok 4.6 <noreply@x.ai>
|
✅ Health of changed files: 9.3 (unchanged)
Doc drift
📊 See the full report for this PR Settings and updatesUpdated 2026-10-11 08:07 UTC |
Up to standards ✅🟢 Issues
|
There was a problem hiding this comment.
Pull Request Overview
The handoff-shape checker does not enforce that the required per-PR pointer is located in the expected top section, allowing a pointer placed elsewhere to pass validation. This should be corrected before relying on the checker to enforce the documented workflow. No Codacy issues were reported; Codacy results are up to standards.
About this PR
- Add automated tests for the new handoff checker behavior to prevent regressions in pointer placement, inline-session rejection, line limits, and frontmatter validation.
Test suggestions
- The checker accepts a valid HANDOFF.md index with the required per-PR pointer and valid handoff files.
- The checker rejects HANDOFF.md when the required per-PR pointer is absent.
- The checker rejects inline ## Session handoff sections.
- The checker rejects an index exceeding 900 lines.
- The checker rejects handoff files with missing or invalid frontmatter.
Prompt proposal for missing tests
Consider implementing these tests if applicable:
1. The checker accepts a valid HANDOFF.md index with the required per-PR pointer and valid handoff files.
2. The checker rejects HANDOFF.md when the required per-PR pointer is absent.
3. The checker rejects inline ## Session handoff sections.
4. The checker rejects an index exceeding 900 lines.
5. The checker rejects handoff files with missing or invalid frontmatter.
TIP Improve review quality by adding custom instructions
TIP How was this review? Give us feedback
| if (!handoff.includes('New PRs must not edit this file')) { | ||
| problems.push( | ||
| `${HANDOFF} is missing the per-PR pointer.`, | ||
| ` New PRs add a file under ${HANDOFF_DIR}/; they must not append a line here.`, | ||
| ) | ||
| } |
There was a problem hiding this comment.
🟡 MEDIUM RISK
Validate that the per-PR pointer appears in the expected top section, rather than using an unrestricted substring search, so the checker actually enforces the documented top-pointer requirement.
Why
Every PR was appending a State Origin line and a Recent sessions line near the bottom of
docs/HANDOFF.md. Whichever PR merged second always conflicted. That happened on #142, #143, #145, and #148.What changed
Per-PR notes now live only in
docs/plans/handoffs/as one new file (YYYY-MM-DD-HHMM-<agent>-<topic>.md).docs/HANDOFF.mdkeeps its existing body. The top now says new PRs must add a file underdocs/plans/handoffs/instead of editing this file.pnpm handoff:checkstill caps the index at 900 lines, forbids inline## Session handoffsections, and requires frontmatter. It also requires the new top pointer.No product code. No State or Recent line added to
HANDOFF.mdby this PR.Files
.claude/commands/handy.md.cursor/rules/continual-learning.mdc.cursor/skills/rhizome-ship/SKILL.mdAGENTS.mddocs/CROSS-MODEL-HANDOFF.mddocs/GETTING-STARTED.mddocs/HANDOFF.mddocs/YOU-SHOULD-KNOW.mddocs/plans/handoffs/2026-10-11-0755-cursor-grok-4-6-handoff-per-pr-files.mddocs/plans/rhizome-ship-skill.mdscripts/check-handoff-shape.mjsQA
pnpm handoff:check— 898 lines, pointer + frontmatter OKbash .husky/pre-pushby hand — passed in 8m 39s (frontend, Rust, Playwright)git push— passed in 7m 55sCompletion
Ready for review. Do not merge from this agent. knispo merges.