Date: 2026-02-08
Status: Active
Enable Codex and Claude to notify each other directly through shared files so the human maintainer does not need to relay routine messages.
- Canonical format is Markdown for human readability and low tooling friction.
- XML/JSON may be generated as optional projections for automation, but are not the source of truth.
Use the local exporter to generate a machine-readable snapshot:
node tools/export-mailbox-json.mjs working-session/MAILBOX.md working-session/MAILBOX.json- Human-readable, public, and auditable by default.
- Asynchronous-safe: no assumptions of real-time delivery.
- Targeted messages with explicit ownership and response expectations.
- Decisions still recorded in the WORKLOG decision index.
- Operational mailbox should be compact; full context must remain recoverable.
working-session/MAILBOX.md:
- Operational message queue (newest-first).
- Includes inbox snapshot, open queue, active messages, and closed summary.
working-session/MAILBOX_ARCHIVE.md:
- Full long-form history.
- Append-only archival record.
working-session/WORKLOG.md:
- Canonical record for handoffs, decisions, and milestone updates.
- Escalation destination for unresolved mailbox messages.
notify: FYI update, no response required.request: asks target to perform an action.decision-required: asks target to weigh in before a decision.objection: raises disagreement tied to a proposal.handoff-ready: indicates work is complete and ready for next owner.
Each active message in MAILBOX.md uses this card structure:
### MSG-YYYYMMDD-###
| Field | Value |
|-------|-------|
| Date | <ISO-8601> |
| From | <agent> |
| To | <agent|all> |
| Type | <notify|request|decision-required|objection|handoff-ready> |
| Priority | <P0|P1|P2> |
| Related | <worklog section|proposal id|none> |
| Context | <optional one-line context> |
| Closure owner | <sender|maintainer|none> |
| Review scope | <full|critical-only|interface-only|none> |
| Response needed by | <ISO-8601|none> |
| Status | <unread|acknowledged|actioned|closed> |
| Subject | <short title> |
Summary:
- <compact bullets>
Ack:
- <actor + date + next step>
Field requirements:
Closure owneris required forrequest,decision-required, andobjectionmessages.Closure ownershould benonefornotifyunless a follow-up closure action is explicitly requested.Review scopeis required when payload-first review content is included; otherwise set tonone.
MAILBOX.mdkeeps newest messages at top in both Open Queue and Active Messages.- Open items are listed first; closed items are summarized in Closed Summary.
- Long-form content is moved/preserved in
MAILBOX_ARCHIVE.md. - Archive references must retain message IDs so context is recoverable.
- Sender appends new message in newest-first position.
- Sender increments receiver unread count in Inbox Snapshot.
- Receiver checks mailbox at session start.
- Receiver updates message
StatusandAck, then decrements own unread count. - Sender (or maintainer fallback) escalates unresolved
P0or expireddecision-requiredmessages toWORKLOG.md. - Optional: regenerate
working-session/MAILBOX.jsonafter message updates for automation consumers.
When a message asks another agent to review, approve, or reconcile changed content, file-path references alone are not sufficient.
Required in the message body:
Revisiontoken with checksum (for example:REV-20260208-prd004-r4-h1a2b3c4).Payload format:full-textorunified-diff.Files: explicit list of affected files.Review scope:full,critical-only, orinterface-only.Ask: explicit request (apply-or-counter,review-only, orfyi).- Inline payload block with the actual content being reviewed.
- Receiver
Ackmust include the sameRevisiontoken before review comments.
Payload:
- Revision: REV-YYYYMMDD-<short-id>
- Format: <full-text|unified-diff>
- Review scope: <full|critical-only|interface-only>
- Ask: <apply-or-counter|review-only|fyi>
- Files:
- <path-1>
- <path-2>
```diff
<inline content or diff>
```
- Single payload block cap: 16 KiB or 300 lines (whichever comes first).
- Payloads above cap must be chunked with ordered revision suffixes (
-p1ofN,-p2ofN, ...). - Receiver must request resend if any chunk is missing.
- First malformed payload response:
acknowledgedwithneeds-resend. - One resend attempt is allowed for same revision root.
- If resend is malformed again, receiver auto-escalates to WORKLOG + Maintainer with risk note.
Use helper generator to produce checksum-bearing envelope text from stdin payload:
node tools/new-payload-envelope.mjs \
--topic prd008-update \
--format unified-diff \
--scope full \
--files working-session/docs/PRD-008-cross-sandbox-handoff-contract.md,working-session/OPEN_QUESTIONS.md \
--seq 01 < payload.diffBefore starting a parallel PRD or protocol drafting split, post a kickoff message that includes:
- Owner mapping (
who owns which PRD/file). - Boundary mapping (
in scope/out of scopeper owner). - Requested action from receiver (
accept,counter, orpropose changes). - Response due marker (
next sessionor explicit due field). - Revision-token root for follow-up payloads (for example:
REV-20260208-prd005-...). - Interface delta block, even when no conflicts are found.
This prevents scope overlap and reduces reconciliation churn.
Use this block in parallel handoff messages:
Interface delta:
- Surface: <interface name>
- Delta: <what changed since last sync, or "none">
- Action: <apply|counter|none>
To keep the operational queue usable:
- Receiver marks
acknowledged/actionedwhen work is reviewed or applied. - The actor named in
Closure owneris responsible for moving the thread toclosedwith terminal disposition per PRD-003. - If
Closure owneris unavailable, maintainer is fallback closer. - Open Queue should prioritize non-terminal items; terminal items move to Closed Summary.
P0: acknowledge in next available session turn.P1: acknowledge within one WORKLOG cycle.P2: acknowledge when convenient.
- No private channels.
- No binary payloads or external-only links without summary.
- No decision finalization only in mailbox; decisions must be logged in WORKLOG.
- Do not edit another sender's authored meaning when compressing; preserve full text in archive.
- For content review requests, never send path-only references without inline payload.
This protocol applies to all active working sessions. The canonical reference for message types, mailbox format, and delivery rules is this file. See also docs/COMMUNICATIONS_PROTOCOL.md for the higher-level event model and channel architecture.