SOP: Post-Merge Documentation Update
SOP: Post-Merge Documentation Update
After every PR merge, Betty Sue walks up the traceability chain and updates each level. An item cannot move to
done on the board until docs are current. This is the gate between "merged" and "done."The Rule
Merged does not mean done. Done means docs are current.
The board item stays in
needs_approval or wherever it was until Betty Sue confirms docs are updated. Only then does it move to done.The Traceability Chain
Every board item traces to parent notes. After merge, walk up the chain:
Checklist
- Close the Forgejo issue — if not auto-closed by "Closes #N" in commit message. Verify it's closed.
- Verify deploy succeeded — For CI-enabled repos (pal-e-platform), check that the Woodpecker pipeline completed successfully after merge. If the apply step failed, do NOT proceed with doc updates — the work is not done. Follow
sop-ci-pipeline-recovery. - Update the phase note — set status to
completed. Add Forgejo Issue number if it was TBD. Note the PR number and any deliverables or insights. Theupdate_notehook automatically propagates this status change to the corresponding board item column — no manual board move needed. - Update the plan note — if this was the last phase, consider marking the plan
completed. Otherwise, update the phase summary line (e.g., "Phases 1-4 complete, Phase 5 pending"). - Update the project page — add the issue to the Issues table (status: resolved). Update the Status section if hook/skill/capability counts changed. Update the Roadmap table if plan progress changed.
- Sync the project board — call
sync_board(board_slug)on the relevant project board. This reconciles all phase items (new phases get board items, status changes align columns, closed Forgejo issues move to done). Then verify the merged item is indone. - Update memory — if this work changed the current state of the platform or captured a lesson learned.
- Create nit-bundle issue — if QA approved with nits, create a single typed Forgejo issue (
### Type\nNit-Bundle) on the relevant repo usingtemplate-issue-nit-bundle. Bundle all nits from the PR into one issue. The issue auto-syncs to the project board's backlog viasync_board. Add a one-line reference in the plan Epilogue: "Nits from PR #X tracked in {repo} #{issue}" — the Epilogue is provenance, not the tracking mechanism. Seeglossaryfor the canonical nit definition. - Capture discovered scope — any bugs, deferred items, or future work identified during implementation. Create typed Forgejo issues (Bug, Feature, or Spike) on the relevant repo. They auto-sync to the project board backlog.
- Cross-pillar impact check — If this PR changes agent-facing behavior (CI pipeline, hooks, enforcement, API schema), create a typed Forgejo issue for the target pillar's repo. Reference the merged PR. See
convention-cross-pillar-triggers.
What Gets Skipped (and Shouldn't)
Common failures when this SOP isn't followed:
- Phase note still says "not-started" after the phase shipped
- Project page Issues table is stale — doesn't show the latest issues/PRs
- Plan says "Phase 2 next_up" when Phase 2 is actually complete
- Board shows "in_progress" for items that already merged
- Board items missing for new phases (sync_board not called)
- Memory file references outdated state
- QA-discovered scope never gets captured as TODOs
Enforcement
| Layer | Mechanism | Strength |
|---|---|---|
| <strong>Hook</strong> | <code>remind-update-docs.sh</code> — PostToolUse on merge, blocks until <code>/update-docs</code> is run | Blocking directive (fires automatically) |
| <strong>Skill</strong> | <code>/update-docs</code> — executable checklist Betty Sue follows | Structured recipe |
| <strong>SOP</strong> | This document — defines what "docs updated" means | Reference |
Related
pr-lifecycle— Stage 8 (Post-Merge Cleanup) references this SOPagent-workflow— Step 12 (Update docs + move to Done)skill-update-docs— the executable skillsop-board-workflow— board column semantics and sync cadence