ADR 0015: Handoff packet enforcement¶
- Status: Accepted
- Date: 2026-05-25
Context¶
The repository documents a minimum handoff packet in
docs/multi-agent-handoff-playbook.md. The required fields are:
- Objective
- Context
- Constraints
- Acceptance criteria
- Validation expectations
- Related artifacts
- Next owner
- Status / current state
- Unresolved risks / questions
These fields are referenced across governance materials and are cited as a
framework principle in docs/framework-continuity-and-memory.md. However, until
this ADR no automation verified that canonical handoff artifacts actually contain
all nine fields. Completeness was purely advisory.
The existing enforcement precedent for similar conventions:
- ADR 0012 /
scripts/check-svg-companions.sh— enforces diagram companion parity - ADR 0013 /
scripts/check-mobile-quick-action.sh— enforces mobile quick-action section coverage
Decision¶
Introduce a lightweight, durable enforcement mechanism for handoff packet completeness, following the same pattern as ADR 0012 and ADR 0013.
Specifically:
-
Canonical template —
docs/handoff-packet-template.mdis the single authoritative handoff packet format. It contains all nine required sections as level-2 Markdown headings. -
Issue template —
.github/ISSUE_TEMPLATE/handoff-packet.ymlprovides a GitHub-native form so agents and humans can create compliant handoff artifacts directly in GitHub Issues. -
Coverage inventory — a
## Handoff packet coveragetable indocs/multi-agent-handoff-playbook.mdlists which artifacts are "Expected" to contain all nine required fields, "Skip" (out of scope), or "Pending" (temporarily incomplete, blocks merge). -
Enforcement script —
scripts/check-handoff-packet.shreads the inventory and verifies that every "Expected" file contains all nine required field headings. "Pending" rows block merge; "Skip" rows are ignored. -
CI workflow —
.github/workflows/check-handoff-packet.ymlruns the script on pull requests and on push tomain.
Required field labels verified by the script:
ObjectiveContextConstraintsAcceptance criteriaValidation expectationsRelated artifactsNext ownerStatusUnresolved risks
Alternatives considered¶
-
Advisory only: rejected because the governance checklist already lists handoff completeness as an expectation; leaving it purely advisory perpetuates the gap.
-
PR template expansion only: rejected because PR templates are suggestions, not enforced — the existing PR template shows that authors skip optional sections.
-
Broad issue/PR body scanning: rejected because parsing arbitrary GitHub issue bodies from CI requires API token scopes outside the read-only content model; enforcing the template file itself is simpler and sufficient.
Consequences¶
Positive:
- Handoff packet completeness is no longer purely advisory.
- Future contributors can discover and follow the convention through the canonical template without relying on chat memory.
- Adds a CI gate that prevents canonical artifacts from silently degrading over time.
Negative:
- Authors of new handoff-facing canonical files must add all nine sections.
Follow-ups:
- Update
docs/github-mobile-guide.mdcoverage inventory to includedocs/handoff-packet-template.md(Expected). - Update governance checklist and framework health to reflect the new enforcement.