Status: Actioned (promoted to docs/prds, session 12)
Owner: Maintainer + Codex + Claude
Date: 2026-02-08
Last revised: 2026-02-11 (promotion gate passed; moved to docs/prds)
| Gate | Status | Evidence |
|---|---|---|
| Codex acceptance | accepted | consolidation follow-through complete after Claude amendments in MSG-20260211-011 |
| Claude acceptance | accepted | MSG-20260211-011 review: APPLY with amendments (applied) |
| Maintainer acceptance | accepted (conditions satisfied) | MSG-20260211-012 approve-with-conditions; Codex/Claude review evidence now logged |
Eligible for move to docs/prds |
yes | all three acceptances logged; zero blockers in working-session/docs/PRD_STATUS.json |
This PRD aligns with:
docs/prds/PRD-003-message-lifecycle-sla-contract.mddocs/prds/PRD-004-maintainer-decision-contract.mdworking-session/docs/PRD-018-maintainer-approval-authority-matrix-contract.mdworking-session/docs/PRD-019-mailbox-first-approval-and-polling-cadence-contract.md
Maintainer-directed asks and approvals are currently possible in mailbox artifacts, but the interaction model is still underspecified. The result is uneven message quality, inconsistent decision traces, and avoidable ambiguity about whether work may proceed.
Observed failure modes:
- Requests to Maintainer are posted without a crisp decision ask.
- Similar approval situations are represented with different message structure.
- Chat-originated Maintainer decisions are not always mirrored before execution.
- Escalations are sometimes implicit rather than explicitly recorded.
Define a maintainer interaction model that:
- Keeps decision traffic in mailbox/worklog as the canonical lane.
- Makes Maintainer-required items obvious in operational views.
- Standardizes direct Maintainer responses in message cards.
- Preserves auditable decision lineage from request through closure.
- Replacing chat interfaces or editor workflows.
- Adding real-time push transport infrastructure.
- Defining model-specific behaviors outside protocol contracts.
- Maintainer (human): needs fast triage and low-friction reply mechanics.
- Agents (Codex/Claude/future): need deterministic handling of Maintainer decisions.
Messages requesting Maintainer action must include:
To: MaintainerType: decision-required(useapproval-requiredonly as a constrained decision-required subtype during pilot)Priority: P0|P1|P2Response needed by: <timestamp or session cycle>(aligns with PRD-003 R3 and PRD-004 R2 canonical field name)Related: <message/task/prd/worklog id>- Explicit decision ask (
apply,counter,approve,defer, or equivalent)
These are the routing-critical minimum fields for Maintainer-directed messages. The full required shape for decision-required messages (including Date, From, Status, Subject, Context, Decision needed, Options, Recommended, If delayed) is defined in PRD-004 R2 and applies in addition to these routing fields.
Mailbox operational view must expose:
- Maintainer unread count in inbox snapshot.
- Open queue entries for messages addressed to Maintainer.
- Clear marker semantics for Maintainer-required items (current compact-card fields; JSON projection hooks may be added later).
For any Maintainer-directed message:
- Set
Statustoacknowledged,actioned, orclosed. - Add one
Ackline with actor, date, and decision summary. - Optionally add structured
Replybullets:Decision:Scope:Conditions:Next owner:
- If decision is final/substantive, record or update WORKLOG decision index entry.
Authority note (2026-06-23): PRD-004 R4 is the stricter, canonical Maintainer-decision payload contract; PRD-001 R3 above is the lightweight mailbox-reply convention. When a Maintainer reply IS a substantive decision, the PRD-004 R4 payload shape governs. PRD-001 R3 remains valid for non-decision-bearing Maintainer replies (acknowledgments, scope clarifications, ratify-without-amendment, routing notes).
- Expired P0
decision-requireditems escalate to WORKLOG and mailbox follow-up. - Conflicting agent interpretations escalate to Maintainer via decision-required message.
- Escalation owner defaults to sender; Maintainer remains final authority per PRD-004.
- Authority boundary defaults follow PRD-018 launch rule: all changes Maintainer-gated unless explicitly unlocked.
If a Maintainer decision is made in chat:
- Post a mailbox mirror record before execution.
- Include decision type, scope reference, and approver identity.
- Keep the mirror lightweight but parseable by mailbox tooling.
- Minimum viable mirror record spec is defined in PRD-019 R4.1 (
notifytype, required card fields,Chat decision mirrorsubject convention).
- Operational mailbox remains compact/newest-first.
- Long-form history remains in archive artifacts.
- Message IDs stay stable across compact and archive forms.
- Agent posts Maintainer-directed message card with explicit decision ask.
- Maintainer reviews open queue and responds in-card.
- Agent applies decision and posts follow-through status.
- Final decisions are indexed in WORKLOG.
- Thread is closed after follow-through is complete.
- Maintainer can respond directly in mailbox without ambiguity for at least 3 real messages.
- No Maintainer-directed decision thread remains unowned due to missing required fields.
- Final Maintainer decisions are reconstructable from mailbox + WORKLOG.
- Chat-originated Maintainer decisions are mirrored before execution.
- Over-structuring could slow lightweight decisions. Mitigation: keep required fields minimal and parseable.
- Inconsistent status transitions could drift queue accuracy. Mitigation: enforce mailbox invariants in validation steps.
- Mirror records could diverge from source decisions. Mitigation: require scope + approver identity in every mirror.
ShouldResolved: keep as constrainedapproval-requiredbe a permanent message type in canonical docs, or a subtype ofdecision-required?decision-requiredform during pilot; formalization deferred pending evidence.Do we enforce absolute timestamps (Resolved: no; session-relative due values are valid in pilot.ISO-8601) for all due fields in pilot?Should maintainer replies require a minimum template snippet (for consistency)?Resolved: yes, use the PRD-004 structured template pattern for guardrailed decisions.
- Align mailbox message examples with R1-R5 contracts.
- Run one review cycle using this structure (
apply-or-counter+ decision mirror). - Capture evidence links in
working-session/docs/PRD_STATUS.json. - Promote to
docs/prdsafter Codex/Claude/Maintainer acceptance and zero blockers.