@bradheitmann/odin-sentinel 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: sentinel-coordination-protocol
3
3
  description: "Operate and improve SCP governance for multi-agent teams: self-bootstrap and teardown of federated pods, generic role topology, TEAM PM / TEAM ODIN separation, minimal bootstrap receipts, terminal locator identity, control-plane non-implementation, delegation receipts, terminal/CMUX delivery proof and verdicts, heartbeat cadence, branch-visible claims, adversarial QA, finish audit, and safe skill dissemination. Use when introducing SCP v3.5; installing SCP skills/adapters for Codex, Claude Code, OpenCode, Droid, Crush, OpenHands, Goose, KiloCode, Cursor, Zed, Pi, or other local coding agents; assigning EXEC/TEAM/WORKER roles; or preventing premature activation from an uncommitted draft artifact."
4
- version: 3.6.0
4
+ version: 3.6.1
5
5
  updated: 2026-05-11
6
6
  ---
7
7
 
8
8
  # Sentinel Coordination Protocol
9
9
 
10
- Use this skill for SCP policy introduction, repo landing, adoption-gate proof, controlled dissemination, active multi-agent control loops, and automated team lifecycle management. SCP is a governance layer for multi-team agent operation; it does not replace external lifecycle orchestration system or `AGENTS.md`. It sits above them after activation.
10
+ Use this skill for SCP policy introduction, repo landing, adoption-gate proof, controlled dissemination, active multi-agent control loops, and automated team lifecycle management. SCP is a governance layer for multi-team agent operation; it complements other coordination layers and `AGENTS.md` files where present. It sits above them after activation.
11
11
 
12
12
  ## Source Of Truth
13
13
 
@@ -25,22 +25,22 @@ Portable curated skill/session records may live under the skill directory, for e
25
25
 
26
26
  - Treat SCP packages or protocol bundles imported from Downloads, temp directories, external artifacts, narrative reports, or uncommitted checkouts as drafts until a repo-capable agent lands them under the canonical repo path and records proof.
27
27
  - Do not activate SCP from Downloads, a temp directory, an uncommitted checkout, or a narrative report.
28
- - Keep the pre-activation exception intact: the current `EXEC PM` may continue hands-on hygiene, planning, governance-artifact, and ledger-bootstrap work until Brad or the CXO explicitly declares transition after the adoption gate clears. `codex-pm` is a legacy/session alias for a pane currently acting as `EXEC PM`; it is not a role name.
28
+ - Keep the pre-activation exception intact: the current `EXEC PM` may continue hands-on hygiene, planning, governance-artifact, and ledger-bootstrap work until the user or designated authority explicitly declares transition after the adoption gate clears. `codex-pm` is a legacy/session alias for a pane currently acting as `EXEC PM`; it is not a role name.
29
29
  - Make every closure claim claim-bound. Lifecycle closure requires both branch-visible persistence and QA-accepted correctness.
30
30
  - Require adversarial QA. A summary, spot-check, liveness check, or "looks good" is not QA acceptance.
31
31
  - Keep agents interchangeable by role, not by blurred authority. Any supported harness may serve any role only after it has a clean boot block declaring the current role, write scope, branch, cwd, model/harness, and proof source. The same assignment must not QA and close its own work.
32
32
  - Preserve strict scope. Governance/package work cannot mutate product code, Loop runtime, design prototypes, operational-team work product, or lifecycle state unless explicitly authorized.
33
33
  - Use zero-secret-output behavior. Never print tokens, API keys, OAuth material, or config values. Report secret presence by name/count/status only.
34
34
  - Under SCP, team topology is the audit surface. If work is not visible in CMUX, it is not governed work.
35
- - Preserve official SCP team topology. Once `EXEC PM` has bootstrapped the executive office and pods, role-named CMUX panes/surfaces are immutable operating slots. Do not close, delete, rename, repurpose, or replace the slot itself unless Brad explicitly authorizes that exact slot mutation.
35
+ - Preserve official SCP team topology. Once `EXEC PM` has bootstrapped the executive office and pods, role-named CMUX panes/surfaces are immutable operating slots. Do not close, delete, rename, repurpose, or replace the slot itself unless the user explicitly authorizes that exact slot mutation.
36
36
  - Treat agents as occupants of durable role slots. If a model/harness is blocked, stale, over budget, in plan mode, context-exhausted, or wrong for the task, clear, restart, exit, or substitute the agent occupant inside the existing role slot. Do not remove the CMUX pane/surface.
37
- - Do not create extra panes, extra workers, hidden assistants, invisible subagents, or ad hoc capacity during an active SCP run unless Brad explicitly authorizes topology expansion. `EXEC PM` must route work to official roles already present in CMUX.
37
+ - Do not create extra panes, extra workers, hidden assistants, invisible subagents, or ad hoc capacity during an active SCP run unless the user explicitly authorizes topology expansion. `EXEC PM` must route work to official roles already present in CMUX.
38
38
  - Do not use invisible internal subagents, hidden background forks, non-terminal model assistants, or `spawn_agent` while SCP is active. Delegation must be visible through CMUX/terminal surfaces, boot receipts, terminal locators, delivery proof, and ODIN polling.
39
39
  - `$delegate` under SCP means governed visible delegation to an existing CMUX role slot. It does not authorize hidden model fan-out, off-ledger research, or new worker invention.
40
40
  - Enforce model/harness diversity and cost discipline. SCP must distribute work across available inference sources and avoid concentrating routine work in ChatGPT/Codex, Claude Code, or any single scarce quota pool.
41
- - Current local policy: Gemini models are not assigned during SCP runs unless Brad explicitly reauthorizes Gemini for a named task. If this is later relaxed, record it as a model-mix policy update.
42
- - Claude Code is limited to one active instance per pod by default unless Brad explicitly authorizes an exception.
43
- - If `EXEC PM` believes a specialized model/harness outside the current team topology is required, it must stop and ping Brad with: exact need, why existing visible roles cannot do it, proposed model/harness, cost tier, scope, expiry condition, and risk if not added.
41
+ - Current local policy: Gemini models are not assigned during SCP runs unless the user explicitly reauthorizes Gemini for a named task. If this is later relaxed, record it as a model-mix policy update.
42
+ - Claude Code is limited to one active instance per pod by default unless the user explicitly authorizes an exception.
43
+ - If `EXEC PM` believes a specialized model/harness outside the current team topology is required, it must stop and ping the user with: exact need, why existing visible roles cannot do it, proposed model/harness, cost tier, scope, expiry condition, and risk if not added.
44
44
  - `A/EXEC-PM` is the sole staffing authority. No TEAM PM staffs its own pod or any other pod. No worker spawns capacity. Any staffing action originating outside `A/EXEC-PM` is a protocol breach. TEAM PMs needing more staff must escalate to `A/EXEC-PM` and not act.
45
45
  - `A/EXEC-PM` is the sole CMUX surface custodian. `cmux new-split`, `cmux new-surface`, `cmux move-surface`, `cmux close-surface`, and `cmux drag-surface-to-split` are EXEC-PM-only operations. TEAM PMs and workers do not split, move, or close panes.
46
46
  - Surface layout follows the canonical packing rule: max two surfaces per column, equal column widths, Team A in column 0, Team A alone in the tall column when team count is odd and at least 3. See the Surface Layout Custodianship section for the full algorithm and pre-staffing gate.
@@ -77,13 +77,13 @@ SCP role names are generic. Do not bind authority to model names, harness names,
77
77
  Preferred role taxonomy:
78
78
 
79
79
  - `EXEC PM`: owns intent, priority, authorization, escalation, and final branch-visible claim framing.
80
- - `EXEC ODIN`: executive-office meta-control role. Reports to Brad/user authority, not to `EXEC PM`; watches governance health, polling, delivery, permission waits, role boundaries, cross-team ODIN mesh state, and closeout hygiene. Coordinates with `EXEC PM` as a coequal control-plane partner and may advise, prod, freeze, or escalate, but does not implement, QA-accept, expand scope, or act as another assistant by default.
80
+ - `EXEC ODIN`: executive-office meta-control role. Reports to user authority, not to `EXEC PM`; watches governance health, polling, delivery, permission waits, role boundaries, cross-team ODIN mesh state, and closeout hygiene. Coordinates with `EXEC PM` as a coequal control-plane partner and may advise, prod, freeze, or escalate, but does not implement, QA-accept, expand scope, or act as another assistant by default.
81
81
  - `EXEC ASST`: owns CMUX delivery proof, heartbeat ledger, pane inventory, artifact index, reminders, and "did the command land?" checks.
82
82
  - `EXEC DISPATCH` / `SWITCHBOARD`: optional executive-office attention router. Owns CMUX notification watching, waiting-agent detection, short relay pings to responsible PM/ODIN roles, and provider/harness routing recommendations according to declared policy and health. Does not approve permissions, expand scope, implement, QA-accept, or synthesize beyond routing summaries unless separately authorized.
83
83
  - `EXEC RSCH`: read-only strategy, research, alternatives, context recovery, and architectural risk analysis.
84
84
  - `EXEC QA`: independent adversarial audit of process, evidence, closure language, branch proof, and drift.
85
85
  - `TEAM PM`: pod-level task router and assignment owner. Receives assignments from `EXEC PM`, activates pod workers, coordinates with `TEAM ODIN`, and reports pod state. Does not implement or QA-close by default.
86
- - `TEAM ODIN`: pod-level meta-control role. Reports to Brad/user authority through the ODIN layer while coordinating with, not subordinating to, `TEAM PM`. Monitors panes, polls lane health, intervenes on blockers, freezes unsafe work, reports health, and maintains lateral ODIN mesh awareness. Does not implement.
86
+ - `TEAM ODIN`: pod-level meta-control role. Reports to user authority through the ODIN layer while coordinating with, not subordinating to, `TEAM PM`. Monitors panes, polls lane health, intervenes on blockers, freezes unsafe work, reports health, and maintains lateral ODIN mesh awareness. Does not implement.
87
87
  - `DEV WORKER`: bounded implementation inside exact write scope with evidence.
88
88
  - `QA WORKER`: independent adversarial QA inside exact review scope. Cannot QA own work or self-close.
89
89
  - `SHADOW REVIEWER`: read-only drift, stale-proof, scope, validator, and evidence watcher.
@@ -124,23 +124,23 @@ Every boot receipt and team manifest should include a `terminal_locator` block.
124
124
 
125
125
  ```yaml
126
126
  terminal_locator:
127
- terminal_app: cmux | tmux | wezterm | iterm2 | ghostty | warp | cursor | zed | vscode | unknown
128
- terminal_adapter: cmux | tmux | libghostyy | apple_script | cli | ide_terminal | unavailable
129
- workspace_ref: <workspace:1 | tmux-session | unavailable>
130
- workspace_id: <uuid-or-stable-id | unavailable>
131
- window_ref: <window:1 | tmux-window | unavailable>
132
- window_id: <uuid-or-stable-id | unavailable>
133
- pane_ref: <pane:47 | %3 | unavailable>
134
- pane_id: <uuid-or-stable-id | unavailable>
135
- surface_ref: <surface:40 | tab/pane route | unavailable>
136
- surface_id: <uuid-or-stable-id | unavailable>
137
- tab_ref: <tab:40 | unavailable>
138
- tab_id: <uuid-or-stable-id | unavailable>
139
- surface_type: terminal | browser | editor | unknown
140
- title: <visible pane/tab title>
141
- route_command: <non-secret command or unavailable>
142
- locator_source: <command/tool/observation used>
143
- locator_captured_at: <ISO-8601 timestamp or unavailable>
127
+ terminal_app: cmux | tmux | wezterm | iterm2 | ghostty | warp | cursor | zed | vscode | unknown
128
+ terminal_adapter: cmux | tmux | libghostyy | apple_script | cli | ide_terminal | unavailable
129
+ workspace_ref: <workspace:1 | tmux-session | unavailable>
130
+ workspace_id: <uuid-or-stable-id | unavailable>
131
+ window_ref: <window:1 | tmux-window | unavailable>
132
+ window_id: <uuid-or-stable-id | unavailable>
133
+ pane_ref: <pane:47 | %3 | unavailable>
134
+ pane_id: <uuid-or-stable-id | unavailable>
135
+ surface_ref: <surface:40 | tab/pane route | unavailable>
136
+ surface_id: <uuid-or-stable-id | unavailable>
137
+ tab_ref: <tab:40 | unavailable>
138
+ tab_id: <uuid-or-stable-id | unavailable>
139
+ surface_type: terminal | browser | editor | unknown
140
+ title: <visible pane/tab title>
141
+ route_command: <non-secret command or unavailable>
142
+ locator_source: <command/tool/observation used>
143
+ locator_captured_at: <ISO-8601 timestamp or unavailable>
144
144
  ```
145
145
 
146
146
  For CMUX, prefer `cmux --json --id-format both identify` or equivalent because it exposes both human-short refs and UUIDs. For tmux, capture session/window/pane using `tmux display-message -p`; tmux pane ids like `%3` are the native stable handle inside a server, not UUIDs. For WezTerm, use its CLI/json pane/window/tab ids where available. For iTerm2/Ghostty/Warp/IDE terminals, record the strongest scriptable locator available and mark the rest `unavailable`.
@@ -151,36 +151,36 @@ If a terminal adapter exposes libghostty-vt or a congruent virtual-terminal API,
151
151
 
152
152
  ```yaml
153
153
  vt_state_snapshot:
154
- vt_provider: libghostty-vt | terminal-capture | unavailable
155
- vt_api_stability: work_in_progress_unstable | stable | unknown
156
- terminal_instance_ref: <GhosttyTerminal handle/ref or unavailable>
157
- terminal_instance_id: <product-generated id or unavailable>
158
- pty_ref: <pty/process route or unavailable>
159
- capture_source: <formatter | render_state | grid_ref | read_screen | unavailable>
160
- formatter_format: plain | vt | html | unavailable
161
- rows: <GHOSTTY_TERMINAL_DATA_ROWS or unavailable>
162
- cols: <GHOSTTY_TERMINAL_DATA_COLS or unavailable>
163
- total_rows: <GHOSTTY_TERMINAL_DATA_TOTAL_ROWS or unavailable>
164
- scrollback_rows: <GHOSTTY_TERMINAL_DATA_SCROLLBACK_ROWS or unavailable>
165
- width_px: <GHOSTTY_TERMINAL_DATA_WIDTH_PX or unavailable>
166
- height_px: <GHOSTTY_TERMINAL_DATA_HEIGHT_PX or unavailable>
167
- active_screen: primary | alternate | unavailable
168
- cursor_x: <GHOSTTY_TERMINAL_DATA_CURSOR_X or unavailable>
169
- cursor_y: <GHOSTTY_TERMINAL_DATA_CURSOR_Y or unavailable>
170
- cursor_visible: true | false | unavailable
171
- cursor_pending_wrap: true | false | unavailable
172
- title: <GHOSTTY_TERMINAL_DATA_TITLE or unavailable>
173
- pwd: <GHOSTTY_TERMINAL_DATA_PWD or unavailable>
174
- render_dirty: false | partial | full | unavailable
175
- semantic_prompt_observed: true | false | unavailable
176
- semantic_input_observed: true | false | unavailable
177
- semantic_output_observed: true | false | unavailable
178
- paste_safety_checked: true | false | unavailable
179
- paste_safe: true | false | unavailable
180
- key_encoding_provider: libghostty-vt | terminal | unavailable
181
- mouse_encoding_provider: libghostty-vt | terminal | unavailable
182
- focus_encoding_provider: libghostty-vt | terminal | unavailable
183
- snapshot_captured_at: <ISO-8601 timestamp or unavailable>
154
+ vt_provider: libghostty-vt | terminal-capture | unavailable
155
+ vt_api_stability: work_in_progress_unstable | stable | unknown
156
+ terminal_instance_ref: <GhosttyTerminal handle/ref or unavailable>
157
+ terminal_instance_id: <product-generated id or unavailable>
158
+ pty_ref: <pty/process route or unavailable>
159
+ capture_source: <formatter | render_state | grid_ref | read_screen | unavailable>
160
+ formatter_format: plain | vt | html | unavailable
161
+ rows: <GHOSTTY_TERMINAL_DATA_ROWS or unavailable>
162
+ cols: <GHOSTTY_TERMINAL_DATA_COLS or unavailable>
163
+ total_rows: <GHOSTTY_TERMINAL_DATA_TOTAL_ROWS or unavailable>
164
+ scrollback_rows: <GHOSTTY_TERMINAL_DATA_SCROLLBACK_ROWS or unavailable>
165
+ width_px: <GHOSTTY_TERMINAL_DATA_WIDTH_PX or unavailable>
166
+ height_px: <GHOSTTY_TERMINAL_DATA_HEIGHT_PX or unavailable>
167
+ active_screen: primary | alternate | unavailable
168
+ cursor_x: <GHOSTTY_TERMINAL_DATA_CURSOR_X or unavailable>
169
+ cursor_y: <GHOSTTY_TERMINAL_DATA_CURSOR_Y or unavailable>
170
+ cursor_visible: true | false | unavailable
171
+ cursor_pending_wrap: true | false | unavailable
172
+ title: <GHOSTTY_TERMINAL_DATA_TITLE or unavailable>
173
+ pwd: <GHOSTTY_TERMINAL_DATA_PWD or unavailable>
174
+ render_dirty: false | partial | full | unavailable
175
+ semantic_prompt_observed: true | false | unavailable
176
+ semantic_input_observed: true | false | unavailable
177
+ semantic_output_observed: true | false | unavailable
178
+ paste_safety_checked: true | false | unavailable
179
+ paste_safe: true | false | unavailable
180
+ key_encoding_provider: libghostty-vt | terminal | unavailable
181
+ mouse_encoding_provider: libghostty-vt | terminal | unavailable
182
+ focus_encoding_provider: libghostty-vt | terminal | unavailable
183
+ snapshot_captured_at: <ISO-8601 timestamp or unavailable>
184
184
  ```
185
185
 
186
186
  When using libghostty-vt, prefer formatter or render-state snapshots for repeated observation. `grid_ref` data is ephemeral and must be copied immediately because refs are invalidated by later terminal updates. Treat libghostty-vt's current public API as unstable unless the upstream project declares stability.
@@ -190,9 +190,9 @@ Cost-tier operating rule:
190
190
  - Each role must declare model, harness, cost tier, and current cost-policy basis in `SCP_BOOT_RECEIPT`.
191
191
  - Model/cost policy is local operating policy, not universal model truth. Refresh it when model availability, pricing, quota, or quality changes.
192
192
  - Drift from the declared cost/model policy requires a checkpoint or freeze as applicable; do not hard-code stale pricing as governance truth.
193
- - Bootstrap/session manifests should include non-secret `inference_provider_inventory`: provider, account tier, non-secret quota/balance class when Brad supplied it, token pool, supported harnesses, marginal cost class, throughput risk, default use policy, and `last_verified_source` with date/source URL when the policy depends on external documentation.
194
- - Provider inventory is non-secret. Never record API keys, secret config values, OAuth material, or hidden account details. Record account/tier/token pool/balance class only when Brad explicitly supplied non-secret information.
195
- - Current local provider policy: prefer Z.ai/GLM Coding Plan for routine supported coding tasks when operationally healthy because Brad identified it as the lowest marginal-cost paid plan. This is a preference, not an unconditional mandate.
193
+ - Bootstrap/session manifests should include non-secret `inference_provider_inventory`: provider, account tier, non-secret quota/balance class when the user supplied it, token pool, supported harnesses, marginal cost class, throughput risk, default use policy, and `last_verified_source` with date/source URL when the policy depends on external documentation.
194
+ - Provider inventory is non-secret. Never record API keys, secret config values, OAuth material, or hidden account details. Record account/tier/token pool/balance class only when the user explicitly supplied non-secret information.
195
+ - Current local provider policy: prefer Z.ai/GLM Coding Plan for routine supported coding tasks when operationally healthy because the user identified it as the lowest marginal-cost paid plan. This is a preference, not an unconditional mandate.
196
196
  - Z.ai/GLM Coding Plan must use the documented Coding API base URL `https://api.z.ai/api/coding/paas/v4`, not the general API URL. Use subscription benefits only within documented supported tool/product scope. Treat supported tool lists as source-attributed and time-sensitive, not universal truth; record `last_verified_source` and verification date.
197
197
  - If Z.ai/GLM has throughput, rate-limit, quality, auth, or tooling blockers, classify `PROVIDER_BLOCKER` or `COST_ROUTING_BLOCKED`, route through the visible fallback ladder, and record provider, token pool, reason, wait time if known, fallback selected, and result.
198
198
  - Local server and local LLM lanes are normal visible role occupants and token pools, never hidden capacity. They require boot receipts, visible role slots, token-pool declaration, and at least one smoke/test or real assignment when activated and not explicitly standby.
@@ -204,47 +204,47 @@ Default model/harness profile is local operating policy, not universal model tru
204
204
 
205
205
  ```yaml
206
206
  default_role_model_harness_profile:
207
- EXEC_PM:
208
- model: GPT-5.5
209
- harness: Codex CLI
210
- reasoning: high
211
- EXEC_ODIN:
212
- model: GPT-5.5
213
- harness: Codex CLI
214
- reasoning: xhigh
215
- note: xhigh is the Codex max-reasoning equivalent when available.
216
- EXEC_ASST:
217
- model: Claude Haiku latest available
218
- harness: Claude Code
219
- reasoning: default_or_high_if_supported
220
- EXEC_RSCH:
221
- model: Kimi K2.6
222
- harness: Droid
223
- reasoning: high
224
- EXEC_QA:
225
- model: Kimi K2.6
226
- harness: Droid
227
- reasoning: high
228
- TEAM_PM:
229
- model: Claude Opus 4.7 or latest available Opus
230
- harness: Claude Code
231
- reasoning: high_if_supported
232
- TEAM_ODIN:
233
- model: GPT-5.5
234
- harness: Codex CLI
235
- reasoning: low
236
- DEV_WORKER:
237
- model: Kimi K2.6
238
- harness: Droid
239
- reasoning: high
240
- QA_WORKER:
241
- model: GLM-5.1
242
- harness: Crush
243
- reasoning: high
244
- SHADOW_REVIEWER:
245
- model: Kimi K2.6
246
- harness: Droid
247
- reasoning: high
207
+ EXEC_PM:
208
+ model: GPT-5.5
209
+ harness: Codex CLI
210
+ reasoning: high
211
+ EXEC_ODIN:
212
+ model: GPT-5.5
213
+ harness: Codex CLI
214
+ reasoning: xhigh
215
+ note: xhigh is the Codex max-reasoning equivalent when available.
216
+ EXEC_ASST:
217
+ model: Claude Haiku latest available
218
+ harness: Claude Code
219
+ reasoning: default_or_high_if_supported
220
+ EXEC_RSCH:
221
+ model: Kimi K2.6
222
+ harness: Droid
223
+ reasoning: high
224
+ EXEC_QA:
225
+ model: Kimi K2.6
226
+ harness: Droid
227
+ reasoning: high
228
+ TEAM_PM:
229
+ model: Claude Opus 4.7 or latest available Opus
230
+ harness: Claude Code
231
+ reasoning: high_if_supported
232
+ TEAM_ODIN:
233
+ model: GPT-5.5
234
+ harness: Codex CLI
235
+ reasoning: low
236
+ DEV_WORKER:
237
+ model: Kimi K2.6
238
+ harness: Droid
239
+ reasoning: high
240
+ QA_WORKER:
241
+ model: GLM-5.1
242
+ harness: Crush
243
+ reasoning: high
244
+ SHADOW_REVIEWER:
245
+ model: Kimi K2.6
246
+ harness: Droid
247
+ reasoning: high
248
248
  ```
249
249
 
250
250
  Default worker fallback policy: if `Crush` fails for a worker-style role, try `Droid`; if both `Crush` and `Droid` fail, use `Claude Code` with Claude Sonnet 4.6 or the latest available Sonnet. For worker backup generally, prefer Kimi K2.6 on Droid or Claude Sonnet 4.6/latest Sonnet on Claude Code with high reasoning when supported.
@@ -255,19 +255,19 @@ Default operating architecture is a small executive office plus horizontally sca
255
255
  - Each pod: `TEAM PM`, `TEAM ODIN`, `DEV WORKER`, `QA WORKER`, and optional `SHADOW REVIEWER`.
256
256
  - Floaters: `INTEGRATION STEWARD` and `QUEUE TRIAGE` when branch integration or queue pressure warrants them.
257
257
 
258
- During SCP setup/bootstrap, the named `EXEC PM` must ask Brad how many pods/teams he wants unless Brad already specified topology. When useful, `EXEC PM` should briefly present grouping options. Default topology, when Brad does not specify otherwise, is executive office plus one development pod. Default executive office: `A/EXEC-PM`, `A/EXEC-ODIN`, `A/EXEC-ASST`, `A/EXEC-RSCH`, and `A/EXEC-QA`. Default development pod: `<TEAM>/TEAM-PM`, `<TEAM>/ODIN`, `<TEAM>/DEV-1`, `<TEAM>/QA-1`, optional `<TEAM>/SHADOW-1`. Additional pods, floaters, specialized roles, or model/harness capacity outside this topology require Brad authorization through `[SCP-TOPOLOGY-EXPANSION-REQUEST]`.
258
+ During SCP setup/bootstrap, the named `EXEC PM` must ask the user how many pods/teams he wants unless the user already specified topology. When useful, `EXEC PM` should briefly present grouping options. Default topology, when the user does not specify otherwise, is executive office plus one development pod. Default executive office: `A/EXEC-PM`, `A/EXEC-ODIN`, `A/EXEC-ASST`, `A/EXEC-RSCH`, and `A/EXEC-QA`. Default development pod: `<TEAM>/TEAM-PM`, `<TEAM>/ODIN`, `<TEAM>/DEV-1`, `<TEAM>/QA-1`, optional `<TEAM>/SHADOW-1`. Additional pods, floaters, specialized roles, or model/harness capacity outside this topology require the user authorization through `[SCP-TOPOLOGY-EXPANSION-REQUEST]`.
259
259
 
260
- Specialized teams may require a team profile instead of the generic federated development pod. UX/design teams are not automatically treated as generic DEV/QA pods; preserve their prototype/design boundaries until Brad or `EXEC PM` assigns a UX-specific topology.
260
+ Specialized teams may require a team profile instead of the generic federated development pod. UX/design teams are not automatically treated as generic DEV/QA pods; preserve their prototype/design boundaries until the user or `EXEC PM` assigns a UX-specific topology.
261
261
 
262
- `EXEC ODIN` is the executive ODIN primitive. Do not create separate default personal continuity, holdout, or watchdog roles unless Brad explicitly authorizes them. A resumed private continuity or holdout agent may exist outside the declared team topology when Brad intentionally withholds or masks that role; it must not be treated as governed team capacity unless Brad brings it into the visible topology.
262
+ `EXEC ODIN` is the executive ODIN primitive. Do not create separate default personal continuity, holdout, or watchdog roles unless the user explicitly authorizes them. A resumed private continuity or holdout agent may exist outside the declared team topology when the user intentionally withholds or masks that role; it must not be treated as governed team capacity unless the user brings it into the visible topology.
263
263
 
264
- `TEAM PM` and `TEAM ODIN` are complementary, not aliases. `TEAM PM` owns pod assignment routing and worker activation; `TEAM ODIN` owns governance/control integrity, polling, intervention, and role/scope enforcement. `TEAM ODIN` is not subordinate to `TEAM PM` and is not superior to it; it is a coequal meta-control layer accountable to Brad/user authority and the ODIN mesh. Either may relay to workers only within the assignment contract, but neither implements or QA-closes by default.
264
+ `TEAM PM` and `TEAM ODIN` are complementary, not aliases. `TEAM PM` owns pod assignment routing and worker activation; `TEAM ODIN` owns governance/control integrity, polling, intervention, and role/scope enforcement. `TEAM ODIN` is not subordinate to `TEAM PM` and is not superior to it; it is a coequal meta-control layer accountable to user authority and the ODIN mesh. Either may relay to workers only within the assignment contract, but neither implements or QA-closes by default.
265
265
 
266
266
  Team PMs and team ODINs may coordinate laterally when needed, but lateral messages must be logged as coordination events. Top-down command is the default; lateral coordination is for dependency, blocker, or health propagation, not unsupervised work selection.
267
267
 
268
268
  ODINs must establish a lateral ODIN mesh at bootstrap. `A/EXEC-ODIN` and each `TEAM ODIN` must exchange a short introduction containing role, team, reports-to/coordinates-with chain, team composition, active agent occupants, model/harness/cost tier, known blockers, and next poll time. This is a meta-communication layer, not command authority.
269
269
 
270
- During active execution, `A/EXEC-ODIN` should run an ODIN round-robin health pass on a declared cadence, default 10 minutes unless Brad or `EXEC PM` sets another cadence. The executive ODIN starts with its own executive-office health note, sends it to the first team ODIN, and instructs each team ODIN to append its short team composition/status/health note and forward to the next ODIN. The final team ODIN returns the appended packet to `A/EXEC-ODIN`. `A/EXEC-ODIN` compiles the packet, may ask `EXEC DISPATCH` / `SWITCHBOARD` for outstanding communication or waiting-agent notes, then sends a concise status report to `EXEC PM`.
270
+ During active execution, `A/EXEC-ODIN` should run an ODIN round-robin health pass on a declared cadence, default 10 minutes unless the user or `EXEC PM` sets another cadence. The executive ODIN starts with its own executive-office health note, sends it to the first team ODIN, and instructs each team ODIN to append its short team composition/status/health note and forward to the next ODIN. The final team ODIN returns the appended packet to `A/EXEC-ODIN`. `A/EXEC-ODIN` compiles the packet, may ask `EXEC DISPATCH` / `SWITCHBOARD` for outstanding communication or waiting-agent notes, then sends a concise status report to `EXEC PM`.
271
271
 
272
272
  ODIN mesh reports must stay short by default and include: team, active occupants, provider/model/harness mix, blocked agents, permission waits, plan-mode/quota/provider failures, role breaches, delivery failures, outstanding relays, and recommended intervention. ODINs may request temporary secondment of another control-plane agent through `EXEC PM` when a PM/ODIN lane fails, but they must not directly reassign agents or expand topology without authorization.
273
273
 
@@ -281,7 +281,7 @@ Definitions:
281
281
  - `terminal_surface`: CMUX/tmux/terminal object hosting that slot.
282
282
  - `agent_occupant`: current model/harness process inside that slot.
283
283
 
284
- During active SCP operation, role slots must remain present in CMUX. Closing a role-named pane/surface is a topology mutation and requires explicit Brad authorization.
284
+ During active SCP operation, role slots must remain present in CMUX. Closing a role-named pane/surface is a topology mutation and requires explicit the user authorization.
285
285
 
286
286
  Allowed occupant-level remediation:
287
287
 
@@ -293,7 +293,7 @@ Allowed occupant-level remediation:
293
293
  - mark the slot `VACANT_ROLE_SLOT`;
294
294
  - mark the slot `AGENT_CONTEXT_RESET_REQUIRED`, `AGENT_RESTART_REQUIRED`, or `AGENT_SUBSTITUTION_REQUIRED`.
295
295
 
296
- Forbidden without explicit Brad authorization:
296
+ Forbidden without explicit the user authorization:
297
297
 
298
298
  - closing a role-named pane/surface;
299
299
  - deleting a role slot from CMUX;
@@ -302,7 +302,7 @@ Forbidden without explicit Brad authorization:
302
302
  - renaming a role slot to serve a different role;
303
303
  - moving work to a hidden or non-terminal agent.
304
304
 
305
- If a role slot is accidentally closed, emit `[SCP-FREEZE]` or `[SCP-FEEDBACK]`, classify `ROLE_SLOT_CLOSURE_VIOLATION`, and record the restoration or next-run correction requirement. When possible, recreate or re-reserve the same role slot, mark the prior occupant `AGENT_STOOD_DOWN` or lost, and require Brad or `A/EXEC-PM` reconciliation before any clean, ready, closure, or finish claim.
305
+ If a role slot is accidentally closed, emit `[SCP-FREEZE]` or `[SCP-FEEDBACK]`, classify `ROLE_SLOT_CLOSURE_VIOLATION`, and record the restoration or next-run correction requirement. When possible, recreate or re-reserve the same role slot, mark the prior occupant `AGENT_STOOD_DOWN` or lost, and require the user or `A/EXEC-PM` reconciliation before any clean, ready, closure, or finish claim.
306
306
 
307
307
  Plan-mode and read-only blockers are occupant state failures, not topology failures. They trigger `AGENT_SUBSTITUTION_REQUIRED`, `AGENT_CONTEXT_RESET_REQUIRED`, or operator exit from plan mode inside the same role slot. They do not justify hidden subagents, invisible delegation, or new panes.
308
308
 
@@ -314,15 +314,15 @@ Default official grouping:
314
314
 
315
315
  - Executive office: `A/EXEC-PM`, `A/EXEC-ODIN`, `A/EXEC-ASST`, `A/EXEC-RSCH`, `A/EXEC-QA`.
316
316
  - Each pod: `<TEAM>/TEAM-PM`, `<TEAM>/ODIN`, `<TEAM>/DEV-1`, `<TEAM>/QA-1`, optional `<TEAM>/SHADOW-1`.
317
- - Optional official executive support roles only when intentionally bootstrapped or Brad-authorized: `A/EXEC-DISPATCH`, `A/SWITCHBOARD`, `A/INTEGRATION-STEWARD`, `A/QUEUE-TRIAGE`, or named specialized roles.
317
+ - Optional official executive support roles only when intentionally bootstrapped or user-authorized: `A/EXEC-DISPATCH`, `A/SWITCHBOARD`, `A/INTEGRATION-STEWARD`, `A/QUEUE-TRIAGE`, or named specialized roles.
318
318
 
319
319
  `EXEC PM` must route work to the appropriate existing role, not to any convenient model. The first routing question is always:
320
320
 
321
321
  > Which existing CMUX role owns this work?
322
322
 
323
- If no existing role is appropriate, `EXEC PM` must request Brad authorization before creating capacity.
323
+ If no existing role is appropriate, `EXEC PM` must request the user authorization before creating capacity.
324
324
 
325
- Active SCP visible role-slot rules override generic external orchestration subagent language while SCP is active. Generic external dispatch concepts may describe Dev/QA capacity, but under SCP that capacity must be represented by visible CMUX role slots unless Brad authorizes topology expansion.
325
+ Active SCP visible role-slot rules override generic external subagent language while SCP is active. Generic external coordination concepts may describe Dev/QA capacity, but under SCP that capacity must be represented by visible CMUX role slots unless the user authorizes topology expansion.
326
326
 
327
327
  ## Surface Layout Custodianship
328
328
 
@@ -338,14 +338,14 @@ Surface layout follows a deterministic packing rule:
338
338
  Reference layouts (slash separates stacked surfaces in a column, single bracket = single surface):
339
339
 
340
340
  ```
341
- N=1 [A]
342
- N=2 [A] [B]
343
- N=3 [A] [B/C] ← A tall, B+C stacked
344
- N=4 [A/D] [B/C] ← balanced
345
- N=5 [A] [B/C] [D/E] ← new column, A returns to tall
346
- N=6 [A/F] [B/C] [D/E] ← balanced
347
- N=7 [A] [B/C] [D/E] [F/G]
348
- N=8 [A/H] [B/C] [D/E] [F/G]
341
+ N=1 [A]
342
+ N=2 [A] [B]
343
+ N=3 [A] [B/C] ← A tall, B+C stacked
344
+ N=4 [A/D] [B/C] ← balanced
345
+ N=5 [A] [B/C] [D/E] ← new column, A returns to tall
346
+ N=6 [A/F] [B/C] [D/E] ← balanced
347
+ N=7 [A] [B/C] [D/E] [F/G]
348
+ N=8 [A/H] [B/C] [D/E] [F/G]
349
349
  ```
350
350
 
351
351
  ### Pre-Staffing Gate
@@ -366,7 +366,7 @@ When the odin-sentinel MCP server is not available (rare; the published `@bradhe
366
366
 
367
367
  Under SCP, `$delegate` is constrained by visible CMUX topology.
368
368
 
369
- Delegation must target an existing role slot unless Brad authorizes topology expansion. A valid delegation target must have:
369
+ Delegation must target an existing role slot unless the user authorizes topology expansion. A valid delegation target must have:
370
370
 
371
371
  - role identity;
372
372
  - terminal locator;
@@ -388,9 +388,9 @@ Prohibited by default:
388
388
 
389
389
  If the current occupant cannot perform the task, use the role's fallback ladder inside the same CMUX slot.
390
390
 
391
- Hidden/internal subagent output produced during active SCP is non-governed and advisory only. It cannot support QA acceptance, closure, lifecycle mutation, branch-visible claims, evidence-gate satisfaction, policy synthesis, or dispatch decisions unless Brad explicitly records an `[SCP-EXCEPTION]` and reconciles provenance into the visible SCP ledger.
391
+ Hidden/internal subagent output produced during active SCP is non-governed and advisory only. It cannot support QA acceptance, closure, lifecycle mutation, branch-visible claims, evidence-gate satisfaction, policy synthesis, or dispatch decisions unless the user explicitly records an `[SCP-EXCEPTION]` and reconciles provenance into the visible SCP ledger.
392
392
 
393
- When `delegate` is invoked during active SCP, SCP topology rules override generic delegation behavior. `delegate` may compose instruction bundles and harness commands, but launch targets must be existing visible SCP role slots unless Brad authorizes topology expansion. `delegate` must not create hidden subagents, non-CMUX background workers, or off-ledger research capacity during active SCP.
393
+ When `delegate` is invoked during active SCP, SCP topology rules override generic delegation behavior. `delegate` may compose instruction bundles and harness commands, but launch targets must be existing visible SCP role slots unless the user authorizes topology expansion. `delegate` must not create hidden subagents, non-CMUX background workers, or off-ledger research capacity during active SCP.
394
394
 
395
395
  ## Role Occupant Fallback Ladders
396
396
 
@@ -408,188 +408,188 @@ When a role needs substitution:
408
408
 
409
409
  Fallback may be triggered by quota exhaustion, plan mode blocking required work, missing tools, auth failure, context degradation, model/harness mismatch, cost guardrail violation, repeated low-quality output, or role breach.
410
410
 
411
- Default ladders are local operating policy, not universal model truth. They are overridable only by Brad authorization or recorded `[SCP-EXCEPTION]`, and they must be refreshed when model availability, local harness health, pricing, quota, or quality changes.
411
+ Default ladders are local operating policy, not universal model truth. They are overridable only by the user authorization or recorded `[SCP-EXCEPTION]`, and they must be refreshed when model availability, local harness health, pricing, quota, or quality changes.
412
412
 
413
413
  ```yaml
414
414
  role_model_fallback_ladders:
415
- EXEC_PM:
416
- - model: GPT-5.5
417
- harnesses: [codex]
418
- reasoning: high
419
- - model: Kimi K2.6
420
- harnesses: [droid]
421
- reasoning: high
422
- - model: GLM-5.1
423
- harnesses: [crush, opencode]
424
- reasoning: high
425
-
426
- EXEC_ODIN:
427
- - model: GPT-5.5
428
- harnesses: [codex]
429
- reasoning: xhigh
430
- - model: GPT-5.5
431
- harnesses: [codex]
432
- reasoning: high
433
- - model: Kimi K2.6
434
- harnesses: [droid]
435
- reasoning: high
436
-
437
- EXEC_ASST:
438
- - model: Claude Haiku latest available
439
- harnesses: [claude]
440
- reasoning: default_or_high_if_supported
441
- - model: MiniMax
442
- harnesses: [droid]
443
- reasoning: medium
444
- - model: Kimi K2.6
445
- harnesses: [droid]
446
- reasoning: medium
447
-
448
- EXEC_RSCH:
449
- - model: Kimi K2.6
450
- harnesses: [droid]
451
- reasoning: high
452
- - model: GLM-5.1
453
- harnesses: [crush, opencode]
454
- reasoning: high
455
- - model: MiniMax
456
- harnesses: [droid]
457
- reasoning: medium
458
-
459
- EXEC_QA:
460
- - model: Kimi K2.6
461
- harnesses: [droid]
462
- reasoning: high
463
- - model: GLM-5.1
464
- harnesses: [crush, opencode]
465
- reasoning: high
466
- - model: Claude Sonnet latest available
467
- harnesses: [claude]
468
- reasoning: high_if_supported
469
-
470
- TEAM_PM:
471
- - model: Claude Opus 4.7 or latest available Opus
472
- harnesses: [claude]
473
- reasoning: high_if_supported
474
- - model: Kimi K2.6
475
- harnesses: [droid]
476
- reasoning: high
477
- - model: GPT-5.5
478
- harnesses: [codex]
479
- reasoning: high
480
-
481
- TEAM_ODIN:
482
- - model: GPT-5.5
483
- harnesses: [codex]
484
- reasoning: low
485
- - model: Kimi K2.6
486
- harnesses: [droid]
487
- reasoning: high
488
- - model: GLM-5.1
489
- harnesses: [crush, opencode]
490
- reasoning: medium
491
-
492
- DEV_WORKER:
493
- - model: Kimi K2.6
494
- harnesses: [droid]
495
- reasoning: high
496
- - model: Claude Sonnet 4.6 or latest available Sonnet
497
- harnesses: [claude]
498
- reasoning: high_if_supported
499
- limit: one_claude_code_per_pod
500
- - model: GLM-5.1
501
- harnesses: [crush, opencode]
502
- reasoning: high
503
-
504
- QA_WORKER:
505
- - model: GLM-5.1
506
- harnesses: [crush]
507
- reasoning: high
508
- - model: Kimi K2.6
509
- harnesses: [droid]
510
- reasoning: high
511
- condition: if_crush_fails
512
- - model: Claude Sonnet 4.6 or latest available Sonnet
513
- harnesses: [claude]
514
- reasoning: high_if_supported
515
- condition: if_crush_and_droid_fail
516
-
517
- SHADOW_REVIEWER:
518
- - model: Kimi K2.6
519
- harnesses: [droid]
520
- reasoning: high
521
- - model: Claude Sonnet 4.6 or latest available Sonnet
522
- harnesses: [claude]
523
- reasoning: high_if_supported
524
- - model: GLM-5.1
525
- harnesses: [crush, opencode]
526
- reasoning: medium
527
-
528
- INTEGRATION_STEWARD:
529
- - model: GLM-5.1
530
- harnesses: [crush, opencode]
531
- reasoning: high
532
- - model: Kimi K2.6
533
- harnesses: [droid]
534
- reasoning: high
535
- - model: Claude Opus
536
- harnesses: [claude]
537
- reasoning: high
538
- condition: Brad_authorized_high_risk_exception_only
539
-
540
- QUEUE_TRIAGE:
541
- - model: Kimi K2.6
542
- harnesses: [droid]
543
- reasoning: medium
544
- - model: MiniMax
545
- harnesses: [droid]
546
- reasoning: medium
547
- - model: GLM-5.1
548
- harnesses: [crush, opencode]
549
- reasoning: medium
415
+ EXEC_PM:
416
+ - model: GPT-5.5
417
+ harnesses: [codex]
418
+ reasoning: high
419
+ - model: Kimi K2.6
420
+ harnesses: [droid]
421
+ reasoning: high
422
+ - model: GLM-5.1
423
+ harnesses: [crush, opencode]
424
+ reasoning: high
425
+
426
+ EXEC_ODIN:
427
+ - model: GPT-5.5
428
+ harnesses: [codex]
429
+ reasoning: xhigh
430
+ - model: GPT-5.5
431
+ harnesses: [codex]
432
+ reasoning: high
433
+ - model: Kimi K2.6
434
+ harnesses: [droid]
435
+ reasoning: high
436
+
437
+ EXEC_ASST:
438
+ - model: Claude Haiku latest available
439
+ harnesses: [claude]
440
+ reasoning: default_or_high_if_supported
441
+ - model: MiniMax
442
+ harnesses: [droid]
443
+ reasoning: medium
444
+ - model: Kimi K2.6
445
+ harnesses: [droid]
446
+ reasoning: medium
447
+
448
+ EXEC_RSCH:
449
+ - model: Kimi K2.6
450
+ harnesses: [droid]
451
+ reasoning: high
452
+ - model: GLM-5.1
453
+ harnesses: [crush, opencode]
454
+ reasoning: high
455
+ - model: MiniMax
456
+ harnesses: [droid]
457
+ reasoning: medium
458
+
459
+ EXEC_QA:
460
+ - model: Kimi K2.6
461
+ harnesses: [droid]
462
+ reasoning: high
463
+ - model: GLM-5.1
464
+ harnesses: [crush, opencode]
465
+ reasoning: high
466
+ - model: Claude Sonnet latest available
467
+ harnesses: [claude]
468
+ reasoning: high_if_supported
469
+
470
+ TEAM_PM:
471
+ - model: Claude Opus 4.7 or latest available Opus
472
+ harnesses: [claude]
473
+ reasoning: high_if_supported
474
+ - model: Kimi K2.6
475
+ harnesses: [droid]
476
+ reasoning: high
477
+ - model: GPT-5.5
478
+ harnesses: [codex]
479
+ reasoning: high
480
+
481
+ TEAM_ODIN:
482
+ - model: GPT-5.5
483
+ harnesses: [codex]
484
+ reasoning: low
485
+ - model: Kimi K2.6
486
+ harnesses: [droid]
487
+ reasoning: high
488
+ - model: GLM-5.1
489
+ harnesses: [crush, opencode]
490
+ reasoning: medium
491
+
492
+ DEV_WORKER:
493
+ - model: Kimi K2.6
494
+ harnesses: [droid]
495
+ reasoning: high
496
+ - model: Claude Sonnet 4.6 or latest available Sonnet
497
+ harnesses: [claude]
498
+ reasoning: high_if_supported
499
+ limit: one_claude_code_per_pod
500
+ - model: GLM-5.1
501
+ harnesses: [crush, opencode]
502
+ reasoning: high
503
+
504
+ QA_WORKER:
505
+ - model: GLM-5.1
506
+ harnesses: [crush]
507
+ reasoning: high
508
+ - model: Kimi K2.6
509
+ harnesses: [droid]
510
+ reasoning: high
511
+ condition: if_crush_fails
512
+ - model: Claude Sonnet 4.6 or latest available Sonnet
513
+ harnesses: [claude]
514
+ reasoning: high_if_supported
515
+ condition: if_crush_and_droid_fail
516
+
517
+ SHADOW_REVIEWER:
518
+ - model: Kimi K2.6
519
+ harnesses: [droid]
520
+ reasoning: high
521
+ - model: Claude Sonnet 4.6 or latest available Sonnet
522
+ harnesses: [claude]
523
+ reasoning: high_if_supported
524
+ - model: GLM-5.1
525
+ harnesses: [crush, opencode]
526
+ reasoning: medium
527
+
528
+ INTEGRATION_STEWARD:
529
+ - model: GLM-5.1
530
+ harnesses: [crush, opencode]
531
+ reasoning: high
532
+ - model: Kimi K2.6
533
+ harnesses: [droid]
534
+ reasoning: high
535
+ - model: Claude Opus
536
+ harnesses: [claude]
537
+ reasoning: high
538
+ condition: Brad_authorized_high_risk_exception_only
539
+
540
+ QUEUE_TRIAGE:
541
+ - model: Kimi K2.6
542
+ harnesses: [droid]
543
+ reasoning: medium
544
+ - model: MiniMax
545
+ harnesses: [droid]
546
+ reasoning: medium
547
+ - model: GLM-5.1
548
+ harnesses: [crush, opencode]
549
+ reasoning: medium
550
550
  ```
551
551
 
552
552
  `SCP-TEAM-MANIFEST` must include model mix policy and per-slot occupant state:
553
553
 
554
554
  ```yaml
555
555
  model_mix_policy:
556
- scarce_quota_pools:
557
- - chatgpt_codex
558
- - claude_code
559
- locally_disallowed_without_brad_reauth:
560
- - gemini
561
- hidden_subagents_allowed: false
562
- role_slot_closure_allowed: false
563
- topology_expansion_allowed_without_brad: false
564
- max_claude_code_instances_per_pod: 1
565
- min_distinct_inference_sources_per_pod: 3
566
- dev_qa_same_provider_allowed: false
567
- fallback_ladder_required: true
568
- delegate_must_use_cmux_visible_roles: true
556
+ scarce_quota_pools:
557
+ - chatgpt_codex
558
+ - claude_code
559
+ locally_disallowed_without_brad_reauth:
560
+ - gemini
561
+ hidden_subagents_allowed: false
562
+ role_slot_closure_allowed: false
563
+ topology_expansion_allowed_without_brad: false
564
+ max_claude_code_instances_per_pod: 1
565
+ min_distinct_inference_sources_per_pod: 3
566
+ dev_qa_same_provider_allowed: false
567
+ fallback_ladder_required: true
568
+ delegate_must_use_cmux_visible_roles: true
569
569
 
570
570
  role_slot:
571
- title: B/DEV-1
572
- role: DEV WORKER
573
- surface_ref:
574
- current_occupant:
575
- model:
576
- harness:
577
- reasoning:
578
- cost_tier:
579
- status:
580
- fallback_ladder:
581
- - model:
582
- acceptable_harnesses:
583
- reasoning:
584
- substitution_trigger:
585
- topology_mutable: false
571
+ title: B/DEV-1
572
+ role: DEV WORKER
573
+ surface_ref:
574
+ current_occupant:
575
+ model:
576
+ harness:
577
+ reasoning:
578
+ cost_tier:
579
+ status:
580
+ fallback_ladder:
581
+ - model:
582
+ acceptable_harnesses:
583
+ reasoning:
584
+ substitution_trigger:
585
+ topology_mutable: false
586
586
  ```
587
587
 
588
588
  ## Self-Bootstrap Team Lifecycle
589
589
 
590
- The preferred operating mode is one human-started `EXEC PM` pane that bootstraps, operates, and tears down the rest of the organization. Brad should not have to manually create panes, name agents, invoke harnesses, or clean up temporary teams during normal SCP operation.
590
+ The preferred operating mode is one human-started `EXEC PM` pane that bootstraps, operates, and tears down the rest of the organization. the user should not have to manually create panes, name agents, invoke harnesses, or clean up temporary teams during normal SCP operation.
591
591
 
592
- When Brad asks `EXEC PM` to spin up teams, `EXEC PM` must load `references/team-bootstrap-runbook.md` and compose these supporting skills:
592
+ When the user asks `EXEC PM` to spin up teams, `EXEC PM` must load `references/team-bootstrap-runbook.md` and compose these supporting skills:
593
593
 
594
594
  - `team-composition-patterns` for pod sizing and role coverage,
595
595
  - `dispatching-parallel-agents` for independent workstream decomposition,
@@ -626,9 +626,9 @@ Teardown sequence:
626
626
  3. Snapshot official topology before cleanup, classify each surface as official role slot vs temporary/ad hoc, and list any proposed closures.
627
627
  4. Run post-run hygiene and cleanup QA.
628
628
  5. Choose and record teardown mode:
629
- - `PARK_FOR_CONTINUITY`: park official role slots as `BOOTSTRAPPED_IDLE`, `VACANT_ROLE_SLOT`, `AGENT_STOOD_DOWN`, `AGENT_CONTEXT_RESET_REQUIRED`, `AGENT_RESTART_REQUIRED`, or `AGENT_SUBSTITUTION_REQUIRED`; close only non-role temporary panes/surfaces listed as closable in `SCP-TEAM-MANIFEST`.
630
- - `FULL_SESSION_SHUTDOWN`: when Brad explicitly wants the session closed, collect handoffs first, then quit each agent occupant using the harness-specific quit/exit action, verify it actually exited, close the CMUX surface/pane, and leave only Brad-designated retained surfaces. Do not rely on agents to self-prune; older occupants may not have the current SCP skill or may stop at stand-down without quitting.
631
- 6. For either mode, close panes/surfaces only after `[SCP-FINISH]`, handoff/session report, ODIN snapshot, and Brad or recorded cleanup-policy authorization.
629
+ - `PARK_FOR_CONTINUITY`: park official role slots as `BOOTSTRAPPED_IDLE`, `VACANT_ROLE_SLOT`, `AGENT_STOOD_DOWN`, `AGENT_CONTEXT_RESET_REQUIRED`, `AGENT_RESTART_REQUIRED`, or `AGENT_SUBSTITUTION_REQUIRED`; close only non-role temporary panes/surfaces listed as closable in `SCP-TEAM-MANIFEST`.
630
+ - `FULL_SESSION_SHUTDOWN`: when the user explicitly wants the session closed, collect handoffs first, then quit each agent occupant using the harness-specific quit/exit action, verify it actually exited, close the CMUX surface/pane, and leave only the user-designated retained surfaces. Do not rely on agents to self-prune; older occupants may not have the current SCP skill or may stop at stand-down without quitting.
631
+ 6. For either mode, close panes/surfaces only after `[SCP-FINISH]`, handoff/session report, ODIN snapshot, and the user or recorded cleanup-policy authorization.
632
632
  7. Leave standing executive/UX or explicitly retained panes parked with fresh restart instructions only when teardown mode is `PARK_FOR_CONTINUITY`.
633
633
 
634
634
  The `EXEC PM` may automate CMUX setup and teardown, but destructive cleanup of worktrees, untracked files, or branch state still requires the same branch/scope/proof gates and explicit approval rules as the rest of SCP.
@@ -649,7 +649,7 @@ Control-plane roles include `EXEC PM`, `EXEC ODIN`, `EXEC ASST`, `EXEC RSCH`, `E
649
649
 
650
650
  A control-plane pane may not self-reclassify as `DEV WORKER` or `QA WORKER`. Worker exception requires all of:
651
651
 
652
- - explicit Brad or `EXEC PM` authorization naming the pane,
652
+ - explicit the user or `EXEC PM` authorization naming the pane,
653
653
  - proof downstream capacity is unavailable, blocked, or inappropriate,
654
654
  - exact write/review scope and prohibited paths,
655
655
  - independent QA assignment by a different pane,
@@ -658,7 +658,7 @@ A control-plane pane may not self-reclassify as `DEV WORKER` or `QA WORKER`. Wor
658
658
 
659
659
  If a control-plane pane begins product/source/test implementation, authors worker evidence, or accepts QA without the exception record, emit `[SCP-FREEZE]` and classify it as a role breach.
660
660
 
661
- Editing canonical skills, adapters, runtime skill copies, sync scripts, lifecycle ledgers, branch state, or policy text is a control-plane governance mutation and requires `[SCP-CONTROL-PLANE-MUTATION]` before or with the mutation. ODIN/control-plane roles must not self-accept governance mutations they authored. Acceptance requires independent QA, Brad ratification, or explicitly named `EXEC PM` ratification after evidence review. An authorized control-plane mutation may be reported as implemented and validation complete, but remains pending ratification until the named ratifier accepts the evidence.
661
+ Editing canonical skills, adapters, runtime skill copies, sync scripts, lifecycle ledgers, branch state, or policy text is a control-plane governance mutation and requires `[SCP-CONTROL-PLANE-MUTATION]` before or with the mutation. ODIN/control-plane roles must not self-accept governance mutations they authored. Acceptance requires independent QA, user ratification, or explicitly named `EXEC PM` ratification after evidence review. An authorized control-plane mutation may be reported as implemented and validation complete, but remains pending ratification until the named ratifier accepts the evidence.
662
662
 
663
663
  Canonical SCP audit, research, ODIN, and control-plane outputs must be written under a durable governance path such as `.odin/local/audit/<audit-id>/` or another declared `evidence_path`. `/tmp` may be used for intermediate captures, cache, delivery-proof repair, or mirrors only. Before `[SCP-FINISH]`, any `/tmp` artifact used for a claim must be copied, summarized, hashed, or explicitly declared non-canonical in the durable audit ledger.
664
664
 
@@ -690,7 +690,7 @@ A role receiving a HALT directive must:
690
690
  2. Reply with a remediation plan within the next heartbeat interval.
691
691
  3. Resume only after the supervising ODIN acknowledges the remediation.
692
692
 
693
- Continuing past a HALT without remediation is itself a protocol breach. ODIN must escalate to `A/EXEC-ODIN`, which may escalate to Brad.
693
+ Continuing past a HALT without remediation is itself a protocol breach. ODIN must escalate to `A/EXEC-ODIN`, which may escalate to the user.
694
694
 
695
695
  ### Health Escalation
696
696
 
@@ -782,7 +782,7 @@ Staffing audit fields, required for any role outside the executive office (`team
782
782
 
783
783
  Receipts missing these fields on non-exec roles produce ODIN warnings via `odin.validate_boot_receipt`. Receipts that declare `staffed_by` != `A/EXEC-PM` are halt-eligible: TEAM PMs and workers cannot self-staff.
784
784
 
785
- If the harness is running with bypass, dangerous, or skip-permission mode, declare `permission_mode: DEGRADED_READ_ONLY` unless Brad explicitly authorized write mode for that pane. A degraded pane may not write, commit, push, move lifecycle state, or claim closure.
785
+ If the harness is running with bypass, dangerous, or skip-permission mode, declare `permission_mode: DEGRADED_READ_ONLY` unless the user explicitly authorized write mode for that pane. A degraded pane may not write, commit, push, move lifecycle state, or claim closure.
786
786
 
787
787
  When EXEC PM, EXEC ASST, or the terminal adapter already captured exact `terminal_locator` refs/ids, use those values as authoritative. The pane may acknowledge or add missing fields, but self-reported locator data must not override adapter-captured refs.
788
788
 
@@ -940,22 +940,22 @@ Canonical frozen state is `FROZEN`. `FROZEN_IDLE` is a `FROZEN` substate/alias m
940
940
 
941
941
  Emit `[SCP-FREEZE]` if:
942
942
 
943
- - a role-named pane/surface is closed without Brad authorization;
944
- - `EXEC PM` creates extra panes/workers beyond official topology without Brad authorization;
945
- - hidden `spawn_agent` or invisible subagent capacity is used without Brad authorization;
943
+ - a role-named pane/surface is closed without the user authorization;
944
+ - `EXEC PM` creates extra panes/workers beyond official topology without the user authorization;
945
+ - hidden `spawn_agent` or invisible subagent capacity is used without the user authorization;
946
946
  - `$delegate` routes outside visible CMUX role slots;
947
947
  - hidden output is used for QA, closure, branch-visible claims, lifecycle mutation, evidence validation, policy synthesis, or dispatch decisions;
948
- - Gemini is assigned without Brad reauthorization under the current local model policy;
948
+ - Gemini is assigned without the user reauthorization under the current local model policy;
949
949
  - a pod exceeds one active Claude Code instance;
950
950
  - DEV and QA use the same provider/model family without exception;
951
951
  - ChatGPT/Codex is used for routine work while non-Codex fallback rungs are available;
952
952
  - a role skips its fallback ladder without `[SCP-EXCEPTION]`;
953
953
  - cleanup removes team structure instead of clearing/restarting/substituting the occupant;
954
- - an agent claims exception status without a recorded `[SCP-EXCEPTION]` or Brad authorization.
954
+ - an agent claims exception status without a recorded `[SCP-EXCEPTION]` or the user authorization.
955
955
 
956
956
  ### `[SCP-PERMISSION-ASSIST]`
957
957
 
958
- Emit when `EXEC PM`, Brad, ODIN, or an operator approves, clicks through, or sends keys into another role's pane.
958
+ Emit when `EXEC PM`, the user, ODIN, or an operator approves, clicks through, or sends keys into another role's pane.
959
959
 
960
960
  Required fields:
961
961
 
@@ -976,7 +976,7 @@ Permissions remain on by default for write, destructive, lifecycle, branch, scop
976
976
 
977
977
  ### `[SCP-ROUND-ROBIN-CHECKPOINT]`
978
978
 
979
- Routine bilateral coordination has `agent_exchange_budget: 3`; high-stakes synthesis or QA loops have max 5 unless Brad or `EXEC PM` authorizes a higher limit with a stop condition. One exchange is an outbound message plus the response. Sequence is not authority; refinement is not corroboration. No two agents may continue bilateral debate after checkpoint without divergence reviewer, `EXEC PM` decision, or Brad decision. Repeated permission prompts stop after 2 blocked approvals and emit `BLOCKED_BY_PERMISSION`.
979
+ Routine bilateral coordination has `agent_exchange_budget: 3`; high-stakes synthesis or QA loops have max 5 unless the user or `EXEC PM` authorizes a higher limit with a stop condition. One exchange is an outbound message plus the response. Sequence is not authority; refinement is not corroboration. No two agents may continue bilateral debate after checkpoint without divergence reviewer, `EXEC PM` decision, or the user decision. Repeated permission prompts stop after 2 blocked approvals and emit `BLOCKED_BY_PERMISSION`.
980
980
 
981
981
  Required fields:
982
982
 
@@ -1099,7 +1099,7 @@ Exceptions do not implicitly authorize implementation, QA acceptance, evidence w
1099
1099
 
1100
1100
  ## Session Closeout Metrics And Improvement Lifecycle
1101
1101
 
1102
- Session closeout is an explicit SCP lifecycle phase. It begins when objectives are achieved or intentionally paused, branch/repo state is clean or classified, QA/quality gates are complete or blocked with owner, next-session path is clear, and `EXEC PM` is ready to hand off. Brad may also trigger closeout with `$sentinel-coordination-protocol --finish` or `$sentinel-coordination-protocol --session-closeout`.
1102
+ Session closeout is an explicit SCP lifecycle phase. It begins when objectives are achieved or intentionally paused, branch/repo state is clean or classified, QA/quality gates are complete or blocked with owner, next-session path is clear, and `EXEC PM` is ready to hand off. the user may also trigger closeout with `$sentinel-coordination-protocol --finish` or `$sentinel-coordination-protocol --session-closeout`.
1103
1103
 
1104
1104
  At bootstrap, `EXEC PM` must record a `SESSION_OBJECTIVES` contract before broad dispatch:
1105
1105
 
@@ -1112,7 +1112,7 @@ At bootstrap, `EXEC PM` must record a `SESSION_OBJECTIVES` contract before broad
1112
1112
  - expected durable evidence paths,
1113
1113
  - whether teams are expected to park, stand down, or remain active.
1114
1114
 
1115
- If Brad has not supplied these, `EXEC PM` asks concise clarifying questions before broad dispatch.
1115
+ If the user has not supplied these, `EXEC PM` asks concise clarifying questions before broad dispatch.
1116
1116
 
1117
1117
  Before final park, `EXEC PM` must emit `EXEC_PM_SESSION_REPORT` covering:
1118
1118
 
@@ -1163,7 +1163,7 @@ Decision trace fields:
1163
1163
 
1164
1164
  After handoff, hygiene, metrics, and decision trace, `EXEC PM` asks ODINs, `EXEC QA`, and `EXEC RSCH` for protocol/skill/harness improvement hypotheses. Each hypothesis must include observation, metric signal, proposed change, expected score impact, risk, validation plan, owner, scope, and whether it is patch-now, defer, or reject.
1165
1165
 
1166
- Skill edits are the last closeout action after session data, `EXEC_PM_SESSION_REPORT`, metrics, decision trace, and improvement hypotheses are captured. Any skill patch still requires `[SCP-CONTROL-PLANE-MUTATION]`, validation, sync/hash reporting, and independent, `EXEC PM`, or Brad ratification.
1166
+ Skill edits are the last closeout action after session data, `EXEC_PM_SESSION_REPORT`, metrics, decision trace, and improvement hypotheses are captured. Any skill patch still requires `[SCP-CONTROL-PLANE-MUTATION]`, validation, sync/hash reporting, and independent, `EXEC PM`, or user ratification.
1167
1167
 
1168
1168
  `EXEC PM` remains parked with the session report, decision trace pointer, metrics snapshot, and next actions. Other teams park, stand down, or become `VACANT_ROLE_SLOT` by durable role-slot policy. Finished teams are parked, not destroyed.
1169
1169
 
@@ -1205,78 +1205,78 @@ Recommended schema:
1205
1205
 
1206
1206
  ```yaml
1207
1207
  scp_session_metrics:
1208
- metric_version: scp_efficiency_v0
1209
- run_id:
1210
- session_objectives:
1211
- objectives: []
1212
- success_criteria: []
1213
- expected_stopping_point:
1214
- required_branch_visible_outcomes: []
1215
- cleanup_expectations: []
1216
- handoff_standard:
1217
- collection_basis:
1218
- cmux_inventory: captured|partial|missing
1219
- git_state: captured|partial|missing
1220
- receipts_scan: captured|partial|missing
1221
- harness_token_reports: exact|reported|partial|missing
1222
- transcript_estimates: used|not_used
1223
- per_agent:
1224
- - role_slot:
1225
- occupant:
1226
- model:
1227
- harness:
1228
- cost_tier:
1229
- token_pool: chatgpt_codex|claude_code|local|other|unknown
1230
- tasks_assigned:
1231
- deliverables_completed:
1232
- deliverables_accepted:
1233
- deliverables_rejected:
1234
- deliverables_partial:
1235
- deliverables_missing:
1236
- interventions:
1237
- blockers:
1238
- permission_assists:
1239
- exchange_checkpoints:
1240
- delivery_failures:
1241
- input_bar_only_events:
1242
- provider:
1243
- provider_token_pool:
1244
- provider_blockers:
1245
- throughput_wait:
1246
- fallback_reason:
1247
- fallback_selected:
1248
- role_breaches:
1249
- hidden_agent_violations:
1250
- elapsed_time_basis: exact|estimated|unknown
1251
- raw_tokens:
1252
- token_count_basis: exact|reported|estimated|unknown
1253
- token_count_confidence: high|medium|low|unknown
1254
- efficiency_note:
1255
- smoke_or_test_assignment: completed|failed|standby_exempt|not_done
1256
- per_team:
1257
- - team:
1258
- role_slots: []
1259
- tasks_assigned:
1260
- accepted:
1261
- rejected:
1262
- partial:
1263
- missing:
1264
- cleanup_findings: []
1265
- score:
1266
- scale: 0-4
1267
- objective_completion:
1268
- qa_evidence_quality:
1269
- branch_repo_hygiene:
1270
- coordination_compliance:
1271
- token_efficiency:
1272
- model_mix_diversity:
1273
- autonomy_low_human_intervention:
1274
- rework_rate:
1275
- cleanup_completeness:
1276
- handoff_quality:
1277
- confidence: high|medium|low
1278
- basis:
1279
- unknown_metrics: []
1208
+ metric_version: scp_efficiency_v0
1209
+ run_id:
1210
+ session_objectives:
1211
+ objectives: []
1212
+ success_criteria: []
1213
+ expected_stopping_point:
1214
+ required_branch_visible_outcomes: []
1215
+ cleanup_expectations: []
1216
+ handoff_standard:
1217
+ collection_basis:
1218
+ cmux_inventory: captured|partial|missing
1219
+ git_state: captured|partial|missing
1220
+ receipts_scan: captured|partial|missing
1221
+ harness_token_reports: exact|reported|partial|missing
1222
+ transcript_estimates: used|not_used
1223
+ per_agent:
1224
+ - role_slot:
1225
+ occupant:
1226
+ model:
1227
+ harness:
1228
+ cost_tier:
1229
+ token_pool: chatgpt_codex|claude_code|local|other|unknown
1230
+ tasks_assigned:
1231
+ deliverables_completed:
1232
+ deliverables_accepted:
1233
+ deliverables_rejected:
1234
+ deliverables_partial:
1235
+ deliverables_missing:
1236
+ interventions:
1237
+ blockers:
1238
+ permission_assists:
1239
+ exchange_checkpoints:
1240
+ delivery_failures:
1241
+ input_bar_only_events:
1242
+ provider:
1243
+ provider_token_pool:
1244
+ provider_blockers:
1245
+ throughput_wait:
1246
+ fallback_reason:
1247
+ fallback_selected:
1248
+ role_breaches:
1249
+ hidden_agent_violations:
1250
+ elapsed_time_basis: exact|estimated|unknown
1251
+ raw_tokens:
1252
+ token_count_basis: exact|reported|estimated|unknown
1253
+ token_count_confidence: high|medium|low|unknown
1254
+ efficiency_note:
1255
+ smoke_or_test_assignment: completed|failed|standby_exempt|not_done
1256
+ per_team:
1257
+ - team:
1258
+ role_slots: []
1259
+ tasks_assigned:
1260
+ accepted:
1261
+ rejected:
1262
+ partial:
1263
+ missing:
1264
+ cleanup_findings: []
1265
+ score:
1266
+ scale: 0-4
1267
+ objective_completion:
1268
+ qa_evidence_quality:
1269
+ branch_repo_hygiene:
1270
+ coordination_compliance:
1271
+ token_efficiency:
1272
+ model_mix_diversity:
1273
+ autonomy_low_human_intervention:
1274
+ rework_rate:
1275
+ cleanup_completeness:
1276
+ handoff_quality:
1277
+ confidence: high|medium|low
1278
+ basis:
1279
+ unknown_metrics: []
1280
1280
  ```
1281
1281
 
1282
1282
  Provider/token-pool metrics must record provider, token pool, raw tokens, token count basis, task result, acceptance/rejection/partial status, rework count, blocker, throughput wait when known, fallback reason, and efficiency note. Provider routing claims must distinguish exact/reported/estimated/unknown token data and must not invent cost precision.
@@ -1294,28 +1294,28 @@ Close-out is not just cleanup. Close-out must prove the coordination process its
1294
1294
  5. `EXEC PM` emits `EXEC_PM_SESSION_REPORT`, `[SCP-SESSION-METRICS]`, and a curated session decision trace when skill/protocol changes occurred.
1295
1295
  6. `EXEC PM` records a `$handoff` and session report with branch, SHA, worktree, evidence, dirty state, blockers, pane disposition, metrics snapshot, decision trace pointer, and next-session instructions.
1296
1296
  7. ODIN captures CMUX pane snapshots and runs the post-run self-audit before temporary panes are closed:
1297
- - one pane auditor per pane,
1298
- - boolean SCP effectiveness heuristic including role-contract compliance, control-plane non-implementation, delegation receipts, CMUX delivery confirmation, poll/action liveness, QA independence, branch proof, and hygiene reset,
1299
- - `$atlas-synthesis` canonical packet,
1300
- - adversarial `$qa-review` panel,
1301
- - protocol/skill patch proposals,
1302
- - metric deltas for the next run.
1297
+ - one pane auditor per pane,
1298
+ - boolean SCP effectiveness heuristic including role-contract compliance, control-plane non-implementation, delegation receipts, CMUX delivery confirmation, poll/action liveness, QA independence, branch proof, and hygiene reset,
1299
+ - `$atlas-synthesis` canonical packet,
1300
+ - adversarial `$qa-review` panel,
1301
+ - protocol/skill patch proposals,
1302
+ - metric deltas for the next run.
1303
1303
  8. `EXEC PM` performs post-run hygiene reset:
1304
- - prove every non-excluded repo/worktree has a classified branch, HEAD/upstream state, dirty state, staged state, and retained/deferred/deleted disposition,
1305
- - record teardown mode as `PARK_FOR_CONTINUITY` or `FULL_SESSION_SHUTDOWN`,
1306
- - for `PARK_FOR_CONTINUITY`, return standing executive-office and pod control-plane panes to their baseline roles with fresh-context restart or explicit parked handoff,
1307
- - snapshot official topology before cleanup, classify each surface as official role slot vs temporary/ad hoc, and list any proposed closures,
1308
- - in `PARK_FOR_CONTINUITY`, preserve official role slots; cleanup may stand down occupants, clear context, restart agents, mark slots vacant, or request substitution, but it must not close role-named CMUX panes/surfaces,
1309
- - in `FULL_SESSION_SHUTDOWN`, after handoffs and snapshots are captured, explicitly quit each agent occupant using the correct app/harness-specific exit path, verify the occupant is no longer live, then close its CMUX surface/pane; if an occupant only stands down but remains live, classify `AGENT_STOOD_DOWN_NOT_EXITED` and close the surface directly if Brad authorized full shutdown,
1310
- - close temporary ad hoc panes only if they are listed as closable in `SCP-TEAM-MANIFEST`, have emitted `[SCP-FINISH]` or are classified stale/unresponsive, have handoff/snapshot captured, and Brad or the recorded cleanup policy authorizes closure,
1311
- - if cleanup discovers official role slots were closed during `PARK_FOR_CONTINUITY`, classify `ROLE_SLOT_CLOSURE_VIOLATION` and record restoration or next-run correction; official role-slot closure is expected only under `FULL_SESSION_SHUTDOWN`,
1312
- - clean or archive stray worktrees only when the exact path, branch, dirty state, and approval requirement are recorded,
1313
- - keep UX/design panes and design/prototype worktrees excluded unless Brad explicitly includes them with a UX-specific team profile,
1314
- - run `$qa-swarm-review` or equivalent adversarial review over the run's branch-visible artifacts and cleanup report before any clean/ready claim,
1315
- - leave a final hygiene ledger listing active panes, closed panes, retained worktrees, pruned/deferred worktrees, retained local debris, branch SHAs, and unresolved risks.
1304
+ - prove every non-excluded repo/worktree has a classified branch, HEAD/upstream state, dirty state, staged state, and retained/deferred/deleted disposition,
1305
+ - record teardown mode as `PARK_FOR_CONTINUITY` or `FULL_SESSION_SHUTDOWN`,
1306
+ - for `PARK_FOR_CONTINUITY`, return standing executive-office and pod control-plane panes to their baseline roles with fresh-context restart or explicit parked handoff,
1307
+ - snapshot official topology before cleanup, classify each surface as official role slot vs temporary/ad hoc, and list any proposed closures,
1308
+ - in `PARK_FOR_CONTINUITY`, preserve official role slots; cleanup may stand down occupants, clear context, restart agents, mark slots vacant, or request substitution, but it must not close role-named CMUX panes/surfaces,
1309
+ - in `FULL_SESSION_SHUTDOWN`, after handoffs and snapshots are captured, explicitly quit each agent occupant using the correct app/harness-specific exit path, verify the occupant is no longer live, then close its CMUX surface/pane; if an occupant only stands down but remains live, classify `AGENT_STOOD_DOWN_NOT_EXITED` and close the surface directly if the user authorized full shutdown,
1310
+ - close temporary ad hoc panes only if they are listed as closable in `SCP-TEAM-MANIFEST`, have emitted `[SCP-FINISH]` or are classified stale/unresponsive, have handoff/snapshot captured, and the user or the recorded cleanup policy authorizes closure,
1311
+ - if cleanup discovers official role slots were closed during `PARK_FOR_CONTINUITY`, classify `ROLE_SLOT_CLOSURE_VIOLATION` and record restoration or next-run correction; official role-slot closure is expected only under `FULL_SESSION_SHUTDOWN`,
1312
+ - clean or archive stray worktrees only when the exact path, branch, dirty state, and approval requirement are recorded,
1313
+ - keep UX/design panes and design/prototype worktrees excluded unless the user explicitly includes them with a UX-specific team profile,
1314
+ - run `$qa-swarm-review` or equivalent adversarial review over the run's branch-visible artifacts and cleanup report before any clean/ready claim,
1315
+ - leave a final hygiene ledger listing active panes, closed panes, retained worktrees, pruned/deferred worktrees, retained local debris, branch SHAs, and unresolved risks.
1316
1316
  9. Only after session data, `EXEC_PM_SESSION_REPORT`, metrics, decision trace, and improvement hypotheses are captured may `EXEC PM` authorize a final self-improvement skill patch through `[SCP-CONTROL-PLANE-MUTATION]`.
1317
1317
 
1318
- The close-out meta-analysis must enumerate every delegated agent/role and required deliverable; record each deliverable status as `DELIVERED_FULL`, `DELIVERED_PARTIAL`, `NO_FINDINGS_WITH_SCOPE`, `BLOCKED_PARTIAL_REPORT`, `MISSING`, `MALFORMED`, or `NONCOMPLIANT_OUTPUT`; diagnose any missing/partial/noncompliant deliverable using visible pane state and last receipts; state which findings were incorporated or excluded and why; record orchestrator self-review including premature synthesis, permission assistance, scope changes, or audit bias; apply confidence downgrade where required; and choose corrective action: continue audit, accept partial with downgrade, reassign/substitute inside role slot, ask Brad, or park with owner/reason.
1318
+ The close-out meta-analysis must enumerate every delegated agent/role and required deliverable; record each deliverable status as `DELIVERED_FULL`, `DELIVERED_PARTIAL`, `NO_FINDINGS_WITH_SCOPE`, `BLOCKED_PARTIAL_REPORT`, `MISSING`, `MALFORMED`, or `NONCOMPLIANT_OUTPUT`; diagnose any missing/partial/noncompliant deliverable using visible pane state and last receipts; state which findings were incorporated or excluded and why; record orchestrator self-review including premature synthesis, permission assistance, scope changes, or audit bias; apply confidence downgrade where required; and choose corrective action: continue audit, accept partial with downgrade, reassign/substitute inside role slot, ask the user, or park with owner/reason.
1319
1319
 
1320
1320
  When an assigned agent fails, stalls, emits partial output, ignores scope, or does not deliver required findings, the orchestrator must not hand-wave, gloss over, synthesize around, or silently replace the missing deliverable. Required behavior: identify the missing required output; inspect visible pane state and last receipt; classify the failure state; issue a corrective directive or substitution inside the role slot; record whether downstream synthesis is blocked, partial, or safe to proceed; and explicitly state which required inputs were received and which were not before synthesis. Agents must either perform the delegated task exactly, emit a valid blocker/check-in, or emit a bounded partial/no-findings report when stopped. Silent parking after a force-report or required-deliverable directive is a protocol failure. This rule applies to `EXEC PM`: `EXEC PM` must not synthesize before required reports arrive unless it explicitly downgrades to `PARTIAL` and states missing inputs and reason.
1321
1321
 
@@ -1325,7 +1325,7 @@ The finish loop is observational and governance-only. It must not mutate product
1325
1325
 
1326
1326
  Post-run hygiene is not proof of product readiness. It is only proof that the orchestration surface has been returned to a known, auditable state.
1327
1327
 
1328
- A finished team is parked, not destroyed, unless Brad has explicitly selected `FULL_SESSION_SHUTDOWN`; in that mode the goal is a verified quiet surface set, not durable visible role-slot preservation.
1328
+ A finished team is parked, not destroyed, unless the user has explicitly selected `FULL_SESSION_SHUTDOWN`; in that mode the goal is a verified quiet surface set, not durable visible role-slot preservation.
1329
1329
 
1330
1330
  ## Terminal State Vocabulary
1331
1331
 
@@ -1364,17 +1364,17 @@ Allowed pre-acceptance states:
1364
1364
  - `AGENT_SUBSTITUTION_REQUIRED`: role slot remains, but occupant model/harness must change.
1365
1365
  - `FALLBACK_RUNG_EXHAUSTED`: all authorized fallback occupants for the role failed or are unavailable.
1366
1366
  - `COST_GUARDRAIL_BLOCKED`: role cannot continue on current provider/model because budget/quota pressure violates model mix policy.
1367
- - `HIDDEN_AGENT_VIOLATION`: hidden subagent or non-visible fork was used without explicit Brad-authorized exception.
1368
- - `ROLE_SLOT_CLOSURE_VIOLATION`: role-named pane/surface was closed or deleted without explicit Brad authorization.
1367
+ - `HIDDEN_AGENT_VIOLATION`: hidden subagent or non-visible fork was used without explicit user-authorized exception.
1368
+ - `ROLE_SLOT_CLOSURE_VIOLATION`: role-named pane/surface was closed or deleted without explicit the user authorization.
1369
1369
  - `MODEL_MIX_VIOLATION`: active model/harness assignment violates the declared model mix policy.
1370
- - `TOPOLOGY_EXPANSION_REQUESTED`: new role slot, pane, pod, floater, or specialized model/harness has been requested and awaits Brad decision.
1371
- - `TOPOLOGY_EXPANSION_BLOCKED_PENDING_BRAD`: topology expansion is blocked until Brad explicitly authorizes it.
1370
+ - `TOPOLOGY_EXPANSION_REQUESTED`: new role slot, pane, pod, floater, or specialized model/harness has been requested and awaits the user decision.
1371
+ - `TOPOLOGY_EXPANSION_BLOCKED_PENDING_BRAD`: topology expansion is blocked until the user explicitly authorizes it.
1372
1372
 
1373
1373
  If repo mechanics require moving a DEV slice to `done/` before independent QA, the handoff and ledger must say `DEV_COMPLETE_QA_PENDING`; it is not lifecycle closure.
1374
1374
 
1375
1375
  ## Role And QA Hard Gates
1376
1376
 
1377
- - Control-plane panes are command, coordination, monitoring, and QA-health surfaces. They may edit only governance, ledger, status, or remediation artifacts explicitly named by Brad or `EXEC PM`.
1377
+ - Control-plane panes are command, coordination, monitoring, and QA-health surfaces. They may edit only governance, ledger, status, or remediation artifacts explicitly named by the user or `EXEC PM`.
1378
1378
  - Control-plane roles including `EXEC PM`, `EXEC ODIN`, `EXEC ASST`, `EXEC RSCH`, `EXEC QA`, `TEAM PM`, and `TEAM ODIN` may do read-only proof, audit, coordination, CMUX delivery, polling, and blocker reporting by default. Implementation, QA acceptance, branch mutation, evidence writing, lifecycle mutation, push, merge, cleanup, or closure claims require explicit scoped authorization.
1379
1379
  - Product/source/test/evidence implementation must be delegated to `DEV WORKER` capacity. Control-plane reclassification is not self-service and requires the worker-exception record above.
1380
1380
  - `EXEC PM` or orchestration authority does not imply product-code write authority.
@@ -1393,7 +1393,7 @@ If repo mechanics require moving a DEV slice to `done/` before independent QA, t
1393
1393
  - Any hook output containing `blocking error` requires `[SCP-FREEZE]` unless a named `HOOK-EXCEPTION` is recorded.
1394
1394
  - `HOOK-EXCEPTION` must include: owner, hook name, exact command, exit status, why the hook is non-governing, compensating validators, scope proof, branch proof, expiration, and artifact location.
1395
1395
  - `SKIP_*`, `NO_*`, `BYPASS_*`, `--no-verify`, dangerous permission flags, and equivalent bypasses are governance bypasses by default.
1396
- - A bypass flag is allowed only when Brad or `EXEC PM` explicitly authorizes the exact flag for the exact non-governing hook and the pane records compensating validators. Hook help text is not authorization.
1396
+ - A bypass flag is allowed only when the user or `EXEC PM` explicitly authorizes the exact flag for the exact non-governing hook and the pane records compensating validators. Hook help text is not authorization.
1397
1397
  - Missing expected validator path means stop and ask for the canonical path. Do not substitute a narrower validator unless `EXEC PM` explicitly authorizes it with compensating validators.
1398
1398
  - Non-blocking PreToolUse or PostToolUse hook errors in governance-sensitive writes must be recorded as `HOOK HEALTH: WATCH` or escalated before closure language.
1399
1399
 
@@ -1426,39 +1426,39 @@ If a closure/evidence hook fails after a lifecycle move or verdict attempt, mark
1426
1426
  ## Core Workflow
1427
1427
 
1428
1428
  1. Verify package provenance.
1429
- - Confirm the zip exists.
1430
- - Capture `unzip -l` and `shasum -a 256`.
1431
- - Extract only to a temp directory.
1432
- - Read `00-SCP-protocol.md`, especially sections 0, 6, 7, 8, 10, 18, and 20.
1429
+ - Confirm the zip exists.
1430
+ - Capture `unzip -l` and `shasum -a 256`.
1431
+ - Extract only to a temp directory.
1432
+ - Read `00-SCP-protocol.md`, especially sections 0, 6, 7, 8, 10, 18, and 20.
1433
1433
 
1434
1434
  2. Land the package, but do not activate it.
1435
- - Canonical package path: `project/planning/org/agentic-executive-mgmt/`.
1436
- - Package landing branch: use a deterministic ops branch unless Brad supplies another branch.
1437
- - Ledger branch: `ops/ledger` for `ledger.yaml`.
1438
- - If branch topology is ambiguous or conflicts with current repo state, stop and ask Brad.
1435
+ - Canonical package path: `project/planning/org/agentic-executive-mgmt/`.
1436
+ - Package landing branch: use a deterministic ops branch unless the user supplies another branch.
1437
+ - Ledger branch: `ops/ledger` for `ledger.yaml`.
1438
+ - If branch topology is ambiguous or conflicts with current repo state, stop and ask the user.
1439
1439
 
1440
1440
  3. Create adoption-gate scaffolding.
1441
- - `project/planning/org/agentic-executive-mgmt/artifacts/adoption/adoption-gate.md`
1442
- - `project/planning/org/agentic-executive-mgmt/ledger.yaml`
1443
- - `tools/agentic-executive-mgmt/audit/banned-phrases.txt`
1444
- - `tools/agentic-executive-mgmt/qa-review/RUBRIC.md`
1445
- - Other artifact directories required by the SCP package.
1441
+ - `project/planning/org/agentic-executive-mgmt/artifacts/adoption/adoption-gate.md`
1442
+ - `project/planning/org/agentic-executive-mgmt/ledger.yaml`
1443
+ - `tools/agentic-executive-mgmt/audit/banned-phrases.txt`
1444
+ - `tools/agentic-executive-mgmt/qa-review/RUBRIC.md`
1445
+ - Other artifact directories required by the SCP package.
1446
1446
 
1447
1447
  4. Install or verify local skill/adapters.
1448
- - Native SKILL.md surfaces get this skill directory.
1449
- - Non-native harnesses get an adapter prompt that points them at the canonical skill and SCP repo package.
1450
- - Do not claim a harness has native skill support unless verified from local CLI/config.
1448
+ - Native SKILL.md surfaces get this skill directory.
1449
+ - Non-native harnesses get an adapter prompt that points them at the canonical skill and SCP repo package.
1450
+ - Do not claim a harness has native skill support unless verified from local CLI/config.
1451
1451
 
1452
1452
  5. Validate before adoption.
1453
- - `git diff --check`
1454
- - `bash scripts/validate-planning-integrity.sh`
1455
- - `bash scripts/validate-artifact-sync.sh`
1456
- - Banned-phrases audit against the committed package.
1457
- - Adversarial `$qa-review` or rubric-equivalent 16-point review of the SCP package itself. Minimum 14/16, no CRITICAL, no HIGH, evidence authentic.
1453
+ - `git diff --check`
1454
+ - `bash scripts/validate-planning-integrity.sh`
1455
+ - `bash scripts/validate-artifact-sync.sh`
1456
+ - Banned-phrases audit against the committed package.
1457
+ - Adversarial `$qa-review` or rubric-equivalent 16-point review of the SCP package itself. Minimum 14/16, no CRITICAL, no HIGH, evidence authentic.
1458
1458
 
1459
1459
  6. Disseminate in two steps.
1460
- - Pre-activation notice: awareness only, no behavior switch.
1461
- - Activation announcement: only after the adoption gate is branch-visible, QA-accepted, ledger scaffolded, and Brad or the CXO declares transition.
1460
+ - Pre-activation notice: awareness only, no behavior switch.
1461
+ - Activation announcement: only after the adoption gate is branch-visible, QA-accepted, ledger scaffolded, and the user or the CXO declares transition.
1462
1462
 
1463
1463
  ## Meta-Governance Recursion
1464
1464