entry-proves-what-it-handed — An episode records the governance and briefing it was handed, and a change is told
One governance digest computed by one function, recorded per episode with the briefing digest, compared at the next interaction, carried by handovers, identical across every entry surface; every route around the preflight is a case or a stated limit; task start states how far its base is behind the remote's master.
BLOCKED 0 of 7 issues done
- ready
- 0
- blocked
- 7
- active
- 0
- verify
- 0
- done
- 0
- cancelled
- 0
Problem
The entry preflight reports governance per claim (ADR 0066, docs/PREFLIGHT.md) but there is no digest of the effective governance, docs/PREFLIGHT.md states 'No compiled context revision exists in a checkout yet, so none is shown', session.started records neither, and a rule edited mid-session is noticed by nobody. intent_binding pins the plan revision of a task's intents (plan_revision) but not governance. Proposed in ADR 0181 (An episode records the governance and the briefing it was handed, each by one digest) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c097#2.
Outcome
One governance digest computed by one function, recorded per episode with the briefing digest, compared at the next interaction, carried by handovers, identical across every entry surface; every route around the preflight is a case or a stated limit; task start states how far its base is behind the remote's master.
Current state
Verified on master 707a04c: environment/cache.rs fingerprints tiers for caching only; environment/preflight.rs derives the verdicts; cases 118, 190-192 prove entry converges on one server; SECURITY.md lists three bypass limits; lib/start.sh does not report base divergence; environment/vcs.rs reads ahead/behind against the branch's own upstream without fetching; worktree create already starts a new branch from the remote's trunk (case 3131_a_new_worktree_starts_from_the_remote_trunk).
Desired state
governance digest on the preflight, the brief, session.started and handovers; a parity case across clients; a bypass inventory held to SECURITY.md.
Scope
- apps/majordomus-cli/src/environment
- apps/majordomus-cli/src/capability/builtin/environment.rs
- apps/majordomus-cli/src/capability/builtin/brief.rs
- apps/majordomus-cli/src/session
- lib/handover.sh
- lib/start.sh
- share/events.yaml
- docs/PREFLIGHT.md
- docs/ENTRY.md
- SECURITY.md
Out of scope
- Any network call at entry
- Filesystem watchers
- Regenerating context from the preflight
Acceptance criteria
- The same tree gives the same governance digest on every surface
- An episode record names the digests it started under
- A governance edit during a session is told at the next brief or check
- A handover says when governance moved since it was written
- Every route around the preflight names its case or its SECURITY.md limit
Validation
- majordomus plan validate
Risks
- The digest's input set must be declared once (policy) or it drifts per surface
- Overlaps I2988 (the AGENTS.md/CLAUDE.md policy stamp, in flight on the board and not on master)
Issues
Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.
| issue | status | wave | depends on | title |
|---|---|---|---|---|
| I3147 | BLOCKED | 0 | — | The effective governance has one digest, computed by one function and shown by the preflight |
| I3148 | BLOCKED | 3 | I3147, I3142 | An episode records the governance digest and the briefing digest it was handed at start |
| I3149 | BLOCKED | 4 | I3148 | A governance change during a session is told at the session's next brief or check |
| I3150 | BLOCKED | 3 | I3147, I2003 | A handover carries the governance digest it was written under, and resolving it says when governance moved |
| I3151 | BLOCKED | 1 | I3147 | Every entry surface reports the same governance digest for one checkout |
| I3152 | BLOCKED | 0 | — | Every known route around the preflight and the edit guard is a case or a stated limit |
| I3153 | BLOCKED | 0 | — | Task start says how far its base is behind the remote's master as last fetched, and stops only on a diverged local master, with the next step |
The graph
flowchart LR
I3147["I3147<br/>The effective governance has one digest, computed by one function and shown by the preflight"]:::blocked
I3148["I3148<br/>An episode records the governance digest and the briefing digest it was handed at start"]:::blocked
I3149["I3149<br/>A governance change during a session is told at the session's next brief or check"]:::blocked
I3150["I3150<br/>A handover carries the governance digest it was written under, and resolving it says when governance moved"]:::blocked
I3151["I3151<br/>Every entry surface reports the same governance digest for one checkout"]:::blocked
I3152["I3152<br/>Every known route around the preflight and the edit guard is a case or a stated limit"]:::blocked
I3153["I3153<br/>Task start says how far its base is behind the remote's master as last fetched, and stops only on a diverged local master, with the next step"]:::blocked
I3147 --> I3148
I3147 --> I3150
I3147 --> I3151
I3148 --> I3149
classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2pxLinked from this diagram (7)
- I3147 The effective governance has one digest, computed by one function and shown by the preflight
- I3148 An episode records the governance digest and the briefing digest it was handed at start
- I3149 A governance change during a session is told at the session's next brief or check
- I3150 A handover carries the governance digest it was written under, and resolving it says when governance moved
- I3151 Every entry surface reports the same governance digest for one checkout
- I3152 Every known route around the preflight and the edit guard is a case or a stated limit
- I3153 Task start says how far its base is behind the remote's master as last fetched, and stops only on a diverged local master, with the next step
Canonical record: .ai/repo/project/milestones/entry-proves-what-it-handed.yaml. Read it back with majordomus plan show entry-proves-what-it-handed.