@bradheitmann/odin-sentinel 0.4.5 → 0.4.7

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.
Files changed (57) hide show
  1. package/AGENTS.md +64 -0
  2. package/CLAUDE.md +43 -0
  3. package/README.md +113 -302
  4. package/dist/src/mcp/server.js +43 -12
  5. package/dist/src/mcp/server.js.map +1 -1
  6. package/dist/src/protocol/schemas.d.ts +2529 -4
  7. package/dist/src/protocol/schemas.js +214 -18
  8. package/dist/src/protocol/schemas.js.map +1 -1
  9. package/dist/src/protocol/service.d.ts +96 -2
  10. package/dist/src/protocol/service.js +516 -4
  11. package/dist/src/protocol/service.js.map +1 -1
  12. package/dist/src/protocol/surface-layout.d.ts +40 -1
  13. package/dist/src/protocol/surface-layout.js +98 -1
  14. package/dist/src/protocol/surface-layout.js.map +1 -1
  15. package/dist/src/protocol/validators.d.ts +3 -0
  16. package/dist/src/protocol/validators.js +28 -0
  17. package/dist/src/protocol/validators.js.map +1 -1
  18. package/dist/src/protocol/version.d.ts +3 -0
  19. package/dist/src/protocol/version.js +3 -0
  20. package/dist/src/protocol/version.js.map +1 -1
  21. package/dist/src/telemetry/config.d.ts +8 -0
  22. package/dist/src/telemetry/config.js +24 -0
  23. package/dist/src/telemetry/config.js.map +1 -1
  24. package/dist/src/telemetry/index.d.ts +5 -5
  25. package/dist/src/telemetry/index.js +3 -3
  26. package/dist/src/telemetry/index.js.map +1 -1
  27. package/dist/src/telemetry/redactor.js +25 -7
  28. package/dist/src/telemetry/redactor.js.map +1 -1
  29. package/dist/src/telemetry/report.d.ts +108 -0
  30. package/dist/src/telemetry/report.js +83 -3
  31. package/dist/src/telemetry/report.js.map +1 -1
  32. package/dist/src/telemetry/submit.d.ts +2 -0
  33. package/dist/src/telemetry/submit.js +79 -6
  34. package/dist/src/telemetry/submit.js.map +1 -1
  35. package/docs/guides/quick-start.md +112 -44
  36. package/docs/guides/quickstart-prompts.md +46 -113
  37. package/docs/guides/recommended-starter-team.md +45 -27
  38. package/docs/reference/client-compatibility.md +20 -43
  39. package/docs/reference/cost-and-privacy.md +26 -23
  40. package/docs/reference/distribution.md +40 -55
  41. package/docs/reference/public-surface-audit.md +35 -114
  42. package/package.json +22 -6
  43. package/protocol/SCP.md +8 -1
  44. package/protocol/bootstrap-skill.md +16 -11
  45. package/protocol/closeout.yaml +7 -1
  46. package/protocol/delegation.yaml +1 -1
  47. package/protocol/model-profiles.yaml +55 -1
  48. package/protocol/receipts/boot-receipt.yaml +42 -0
  49. package/protocol/receipts/team-manifest.yaml +41 -0
  50. package/protocol/roles.yaml +69 -1
  51. package/protocol/topology.yaml +78 -36
  52. package/scripts/audit/public-surface.mjs +47 -19
  53. package/scripts/audit/verify-pack.mjs +293 -27
  54. package/templates/dev-slice-template.md +56 -0
  55. package/templates/pm-role-template.md +61 -0
  56. package/templates/qa-slice-template.md +46 -0
  57. package/templates/team-manifest-template.yaml +163 -0
@@ -2,132 +2,53 @@
2
2
 
3
3
  This document records the current public-release audit scope for ODIN Sentinel.
4
4
 
5
- ## Current Tree Result
6
-
7
- Current tracked source, docs, protocol files, tests, and package metadata pass
8
- the public-surface audit:
5
+ ## Audit Commands
9
6
 
10
7
  ```bash
11
8
  pnpm run audit:public
9
+ pnpm run test:package
10
+ pnpm run validate
12
11
  ```
13
12
 
14
- The audit checks for:
15
-
16
- - local home-directory paths
17
- - local agent configuration paths
18
- - legacy extension terminology from adjacent agent systems
19
- - secret-looking assignments
20
-
21
- ## Named External Concepts
22
-
23
- ODIN Sentinel intentionally names these external concepts:
24
-
25
- - MCP / Model Context Protocol
26
- - stdio
27
- - Node.js
28
- - TypeScript / JavaScript
29
- - pnpm / npm / npx
30
- - Codex CLI
31
- - Claude Code
32
- - Droid
33
- - Crush
34
- - Goose
35
- - Zed
36
- - OpenCode
37
- - Cursor
38
- - Rust
39
- - Go
40
- - Zig
41
- - WebAssembly / WASM
42
- - Homebrew
43
-
44
- These are examples, runtimes, package managers, languages, or harnesses. They
45
- are not bundled dependencies unless listed in `package.json`.
46
-
47
- ## Named ODIN Concepts
48
-
49
- - ODIN Sentinel
50
- - ODIN
51
- - SCP / Sentinel Coordination Protocol
52
- - CMUX-compatible terminal-pane teams
53
- - EXEC PM
54
- - EXEC ODIN
55
- - EXEC ASST
56
- - EXEC RSCH
57
- - EXEC QA
58
- - TEAM PM
59
- - TEAM ODIN
60
- - DEV WORKER
61
- - QA WORKER
62
- - SHADOW REVIEWER
63
-
64
- ## Local Paths
65
-
66
- ODIN Sentinel intentionally mentions these project-local paths:
67
-
68
- - `docs/handoffs/`
69
- - `.odin/handoffs/`
70
- - `.odin/audit/`
71
-
72
- These are caller-created paths for projects that use ODIN. They are not bundled
73
- private state.
74
-
75
- Docs also use placeholder install paths such as:
13
+ The audits check public distribution files for local home paths, private project
14
+ markers, local evidence paths, stale public versions, missing package metadata,
15
+ telemetry wording drift, and package contents that should not ship.
76
16
 
77
- - `/absolute/path/to/odin-sentinel/dist/src/bin/index.js`
78
- - `/path/to/odin-sentinel/dist/src/bin/index.js`
17
+ ## Public Distribution Files
79
18
 
80
- These are examples, not real local paths.
19
+ The intended public package includes:
81
20
 
82
- ## Scripts Mentioned
21
+ - `dist/`
22
+ - `docs/`
23
+ - `protocol/`
24
+ - `templates/`
25
+ - `scripts/audit/`
26
+ - `AGENTS.md`
27
+ - `CLAUDE.md`
28
+ - `README.md`
29
+ - `LICENSE`
30
+ - `package.json`
83
31
 
84
- Repo scripts in `package.json`:
32
+ Private planning workspaces and local evidence directories are optional local
33
+ operator spaces. They are not public product internals and must not be packaged.
85
34
 
86
- - `pnpm run clean`
87
- - `pnpm run build`
88
- - `pnpm run dev`
89
- - `pnpm run audit:public`
90
- - `pnpm run test:package`
91
- - `pnpm test`
92
- - `pnpm run typecheck`
93
- - `pnpm run validate`
94
-
95
- Referenced local script files:
96
-
97
- - `scripts/audit/public-surface.mjs`
98
- - `scripts/audit/verify-pack.mjs`
99
-
100
- No missing repo-local scripts are known.
101
-
102
- External commands mentioned in docs:
103
-
104
- - `node`
105
- - `pnpm`
106
- - `npm`
107
- - `npx`
108
- - `codex mcp add`
109
- - `droid mcp add`
110
-
111
- These are external user-installed tools, not files this repository must provide.
112
-
113
- ## Snapshot Tools
114
-
115
- Current MCP snapshot tool:
116
-
117
- - `odin.export_protocol_snapshot`
35
+ ## Named External Concepts
118
36
 
119
- No external local extension is required for ODIN Sentinel to work.
37
+ ODIN Sentinel intentionally names MCP, stdio, Node.js, TypeScript, pnpm, npm,
38
+ npx, CMUX, Codex, Claude Code, Droid, Crush, Goose, Zed, OpenCode, Cursor,
39
+ Rust, Go, Zig, and WebAssembly as examples, runtimes, package managers,
40
+ languages, or harnesses.
120
41
 
121
- ## Git History Warning
42
+ ## Current Public Surface
122
43
 
123
- The current tree is sanitized, but this private development repository has older
124
- commits that contain removed terminology and experimental paths.
44
+ - Public package/server version: `0.4.7`
45
+ - Minimum compatible child MCP version: `0.4.5`
46
+ - MCP resources: 9
47
+ - MCP tools: 23
48
+ - Optional telemetry tools: user-invoked, not automatic collection
125
49
 
126
- Do not make this private development history public as-is. For an open-source
127
- release, publish from a fresh repository, a squashed root commit, or a sanitized
128
- history rewrite after re-running:
50
+ ## Release Drift Rule
129
51
 
130
- ```bash
131
- pnpm run validate
132
- pnpm run audit:public
133
- ```
52
+ Public repo/package/plugin/skill artifacts must be updated together when public
53
+ protocol semantics change. Private local skill copies may differ, but release
54
+ checks must not depend on private local paths.
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@bradheitmann/odin-sentinel",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "description": "Multi-harness terminal-pane team builder and orchestrator over MCP.",
7
+ "description": "Portable MCP governance protocol for multi-agent terminal teams: 23 tools, 9 resources, readiness gates, ODIN watchers, receipts, delegation, and closeout over stdio.",
8
8
  "type": "module",
9
9
  "main": "./dist/src/protocol/index.js",
10
10
  "types": "./dist/src/protocol/index.d.ts",
@@ -27,7 +27,10 @@
27
27
  "dist",
28
28
  "docs",
29
29
  "protocol",
30
+ "templates",
30
31
  "scripts",
32
+ "AGENTS.md",
33
+ "CLAUDE.md",
31
34
  "README.md",
32
35
  "LICENSE"
33
36
  ],
@@ -41,9 +44,9 @@
41
44
  "author": "ODIN Sentinel contributors",
42
45
  "license": "MIT",
43
46
  "dependencies": {
44
- "@modelcontextprotocol/sdk": "^1.29.0",
45
- "yaml": "^2.8.2",
46
- "zod": "^4.1.12"
47
+ "@modelcontextprotocol/sdk": "1.29.0",
48
+ "yaml": "2.8.4",
49
+ "zod": "4.4.3"
47
50
  },
48
51
  "devDependencies": {
49
52
  "@types/node": "^24.10.1",
@@ -53,7 +56,20 @@
53
56
  "vitest": "4.1.5"
54
57
  },
55
58
  "engines": {
56
- "node": ">=22.13.0"
59
+ "node": ">=22.13.0",
60
+ "pnpm": ">=11.0.0"
61
+ },
62
+ "repository": {
63
+ "type": "git",
64
+ "url": "git+https://github.com/bradheitmann/odin-sentinel.git"
65
+ },
66
+ "homepage": "https://github.com/bradheitmann/odin-sentinel#readme",
67
+ "bugs": {
68
+ "url": "https://github.com/bradheitmann/odin-sentinel/issues"
69
+ },
70
+ "odin": {
71
+ "publicVersion": "0.4.7",
72
+ "minimumCompatibleChildMcpVersion": "0.4.5"
57
73
  },
58
74
  "scripts": {
59
75
  "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
package/protocol/SCP.md CHANGED
@@ -1,6 +1,9 @@
1
1
  # ODIN Sentinel Coordination Protocol
2
2
 
3
- Version: 0.3.0
3
+ Version: 0.4.7
4
+
5
+ SCP_PUBLIC_VERSION: 0.4.7
6
+ MIN_COMPATIBLE_CHILD_MCP: 0.4.5
4
7
 
5
8
  ODIN Sentinel is a portable coordination layer for visible multi-agent teams.
6
9
  SCP means Sentinel Coordination Protocol in this repository. It is not Secure
@@ -10,6 +13,10 @@ manifest validation, native visible-role delegation packets, closeout
10
13
  checklists, surface layout rules, and fallback protocol snapshots through an
11
14
  MCP server.
12
15
 
16
+ ## Public Release And Readiness
17
+
18
+ Public repo, npm package, plugin, bootstrap skill, templates, and docs must be updated together when public protocol semantics change. Private local skill copies may differ intentionally, but release checks must not depend on private local paths. Governed team mode requires CMUX; without CMUX, ODIN may still expose MCP resources and validation tools, but the visible team-management experience is not active governed mode. MCP supplies tools/resources; native skills improve automatic invocation; plugin install paths may package both; full prompt injection is fallback only.
19
+
13
20
  ## Principles
14
21
 
15
22
  - Visible role slots are the audit surface.
@@ -7,19 +7,24 @@ updated: 2026-05-11
7
7
 
8
8
  # Sentinel Coordination Protocol
9
9
 
10
+ SCP_PUBLIC_VERSION: 0.4.7
11
+ MIN_COMPATIBLE_CHILD_MCP: 0.4.5
12
+
13
+ Public install readiness: configure the ODIN MCP server, install native skill context where supported or use full prompt fallback, keep governed team roles in CMUX, verify auth/account readiness without printing secrets, smoke-test local inference if used, and validate role compatibility before launch. Private local skill copies may differ intentionally; public release checks compare repo-internal public artifacts only.
14
+
10
15
  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
16
 
12
17
  ## Source Of Truth
13
18
 
14
19
  Master editable source:
15
20
 
16
- - the active canonical SCP skill directory for the local installation, normally `~/.agents/skills/sentinel-coordination-protocol/`.
21
+ - the repository-distributed SCP protocol bundle, or an operator-declared canonical SCP skill source outside this public package.
17
22
 
18
- All other installed copies are synchronized runtime snapshots, not independent policy forks. Any agent modifying this skill must edit the master first, then propagate the full skill directory to the installed harness targets and verify matching hashes.
23
+ All installed copies are synchronized runtime snapshots, not independent policy forks. Any agent modifying SCP policy must edit the declared source first, then propagate the full skill/protocol bundle to the installed harness targets and verify matching hashes.
19
24
 
20
- Use `scripts/sync-installations.sh` from the master directory after edits. Do not hand-edit a runtime copy under `~/.codex`, `~/.claude`, `~/.config/goose`, `~/.config/opencode`, `~/.opencode`, `~/.crush`, `~/.cursor`, `~/.kilocode`, `~/.openhands`, `~/.pi`, or `~/.zed` except as a temporary emergency patch that is immediately backported to the master and resynced.
25
+ Use the operator-declared sync procedure after edits. Do not hand-edit generated runtime copies except as a temporary emergency patch that is immediately backported to the declared source and resynced.
21
26
 
22
- Portable curated skill/session records may live under the skill directory, for example `decisions/YYYY-MM-DD-<slug>.md` and optionally `CHANGELOG.md`. Raw evidence belongs under `.odin/local/audit/<session-id>/` or the declared `evidence_path`. Do not create empty folders just to satisfy policy; create `decisions/` only when writing the first curated decision record.
27
+ Portable curated skill/session records may live under the declared source, for example `decisions/YYYY-MM-DD-<slug>.md` and optionally `CHANGELOG.md`. Raw audit evidence belongs under `.odin/audit/<session-id>/` or the declared `evidence_path`. Do not create empty folders just to satisfy policy; create `decisions/` only when writing the first curated decision record.
23
28
 
24
29
  ## Non-Negotiables
25
30
 
@@ -267,7 +272,7 @@ Team PMs and team ODINs may coordinate laterally when needed, but lateral messag
267
272
 
268
273
  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
274
 
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`.
275
+ During active execution, `A/EXEC-ODIN` should run an ODIN round-robin health pass on a declared cadence, default 30 seconds 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
276
 
272
277
  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
278
 
@@ -660,7 +665,7 @@ If a control-plane pane begins product/source/test implementation, authors worke
660
665
 
661
666
  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
667
 
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.
668
+ Canonical SCP audit, research, ODIN, and control-plane outputs must be written under a durable governance path such as `.odin/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
669
 
665
670
  `repo_clean` must not be used as shorthand for `governance_clean`. Governance-surface mutations outside the active repository require separate reporting: `external_skill_paths_touched`, `runtime_targets`, `hash_before_after_or_current_hash`, `sync_log_path`, `validation_command`, and `unsynced_or_dirty_runtime_paths`. A clean git worktree proves only the repository checkout state. It does not prove canonical skill, Codex skill, Claude skill, adapter, CMUX runtime, or `/tmp` artifact state.
666
671
 
@@ -694,7 +699,7 @@ Continuing past a HALT without remediation is itself a protocol breach. ODIN mus
694
699
 
695
700
  ### Health Escalation
696
701
 
697
- The ODIN mesh runs round-robin health checks per `odin_mesh.health_round_robin_minutes` (default 10). Per-agent escalation ladder:
702
+ The ODIN mesh runs round-robin health checks per `odin_mesh.health_round_robin_seconds` (default 30). Per-agent escalation ladder:
698
703
 
699
704
  - **1 missed heartbeat** — warn the affected agent.
700
705
  - **2 missed heartbeats** — escalate to `A/EXEC-ODIN` via the mesh aggregator.
@@ -1410,7 +1415,7 @@ git diff --cached --name-status
1410
1415
 
1411
1416
  If upstream is not the declared branch authority, stop before mutation. If `HEAD` and `@{u}` differ for a branch-visible closure claim, stop before mutation.
1412
1417
 
1413
- If excluded or out-of-scope debris appears, especially `project/planning/story-reviews/**`, runtime logs, holdout paths, design artifacts, external memory paths, or non-branchable paths, stop and require `EXEC PM` classification before lifecycle mutation or evidence verdict.
1418
+ If excluded or out-of-scope debris appears, especially private story-review planning paths, runtime logs, holdout paths, design artifacts, external memory paths, or non-branchable paths, stop and require `EXEC PM` classification before lifecycle mutation or evidence verdict.
1414
1419
 
1415
1420
  Before any `status: Done`, `PHASE: VERIFIED`, `VERDICT: PASS`, active-to-done move, commit, or push, run the slice/evidence validators required by the dispatch. At minimum for slice/evidence work:
1416
1421
 
@@ -1432,14 +1437,14 @@ If a closure/evidence hook fails after a lifecycle move or verdict attempt, mark
1432
1437
  - Read `00-SCP-protocol.md`, especially sections 0, 6, 7, 8, 10, 18, and 20.
1433
1438
 
1434
1439
  2. Land the package, but do not activate it.
1435
- - Canonical package path: `project/planning/org/agentic-executive-mgmt/`.
1440
+ - Canonical package path: the operator-declared governance planning package path.
1436
1441
  - Package landing branch: use a deterministic ops branch unless the user supplies another branch.
1437
1442
  - Ledger branch: `ops/ledger` for `ledger.yaml`.
1438
1443
  - If branch topology is ambiguous or conflicts with current repo state, stop and ask the user.
1439
1444
 
1440
1445
  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`
1446
+ - governance adoption gate artifact
1447
+ - governance ledger artifact
1443
1448
  - `tools/agentic-executive-mgmt/audit/banned-phrases.txt`
1444
1449
  - `tools/agentic-executive-mgmt/qa-review/RUBRIC.md`
1445
1450
  - Other artifact directories required by the SCP package.
@@ -1,4 +1,10 @@
1
- version: 0.2.1
1
+ version: 0.4.7
2
+ active_watch_terminal_states:
3
+ - RELEASED_BY_OPERATOR
4
+ - HANDED_OFF
5
+ - PARKED_IDLE
6
+ - FAILED
7
+ - WATCH_UNSUPPORTED
2
8
  modes:
3
9
  PARK_FOR_CONTINUITY:
4
10
  description: Keep role slots open, park occupants, save handoffs, and preserve continuity.
@@ -1,4 +1,4 @@
1
- version: 0.3.0
1
+ version: 0.4.7
2
2
  delegation_contract:
3
3
  required_fields:
4
4
  - receipt_type
@@ -1,7 +1,61 @@
1
- version: 0.2.1
1
+ version: 0.4.7
2
2
  policy:
3
3
  semantics: Recommended starter profiles, not bundled dependencies or availability guarantees.
4
4
  runtime_requirement: Users must install and configure their own harnesses. Launchers must verify local harness/model availability before dispatch and apply fallbacks when unavailable.
5
+ governed_launch_probe_required: true
6
+ visible_output_timeout_seconds_default: 60
7
+ provisioning_prompt: Are all intended harnesses provisioned with accounts, plans, API keys, or local inference credentials so they will not malfunction when spun up?
8
+ zero_secret_output: true
9
+ secret_provider_status_only:
10
+ - Doppler
11
+ - 1Password CLI (op)
12
+ - environment variable names
13
+ - direnv
14
+ - mise
15
+ - dotenv-style file presence
16
+ - GitHub auth
17
+ - local provider config files
18
+ model_responsiveness_statuses:
19
+ - MODEL_READY
20
+ - MODEL_SLOW
21
+ - MODEL_STALLED
22
+ - MODEL_REASONING_ONLY
23
+ - STREAMING_PROTOCOL_MISMATCH
24
+ - MODEL_UNREACHABLE
25
+ harness_capabilities:
26
+ Codex:
27
+ can_hydrate_deferred_mcp_tools_at_boot: true
28
+ native_skill_invocation: true
29
+ scp_skill_recommended: true
30
+ Claude Code:
31
+ can_hydrate_deferred_mcp_tools_at_boot: true
32
+ native_skill_invocation: true
33
+ scp_skill_recommended: true
34
+ Droid:
35
+ can_hydrate_deferred_mcp_tools_at_boot: true
36
+ native_skill_invocation: false
37
+ scp_skill_recommended: false
38
+ Goose:
39
+ local_inference_smoke_test_required: true
40
+ visible_content_required_within_seconds: 60
41
+ reasoning_content_only_class: MODEL_REASONING_ONLY
42
+ streaming_mismatch_class: STREAMING_PROTOCOL_MISMATCH
43
+ Crush:
44
+ permission_prompt_class: BLOCKED_BY_PERMISSION
45
+ OpenHands:
46
+ missing_inference_credentials_class: BLOCKED_BY_API_KEY
47
+ provider_config_blocker_class: AUTH_PROVIDER_BLOCKED
48
+ KiloCode:
49
+ login_commands:
50
+ - kilo auth login
51
+ - /connect
52
+ login_blocker_class: BLOCKED_BY_LOGIN
53
+ Pi:
54
+ role_compatibility_failure_class: ROLE_COMPATIBILITY_FAILED
55
+ Aider:
56
+ auth_probe_required: true
57
+ NanoCoder:
58
+ auth_probe_required: true
5
59
  profiles:
6
60
  A/EXEC-PM:
7
61
  model: GPT-5.5-class frontier reasoning model
@@ -13,6 +13,42 @@ required_fields:
13
13
  - write_scope
14
14
  - evidence_path
15
15
  - current_task
16
+ receipt_types:
17
+ - SCP_BOOT_RECEIPT
18
+ - SCP_MIN_BOOT_RECEIPT
19
+ minimum_compatible_mcp_version: 0.4.5
20
+ field_types:
21
+ role: string
22
+ authority_layer: string
23
+ team: string
24
+ terminal_locator: string
25
+ branch: string
26
+ cwd: string
27
+ model_harness: string
28
+ permission_mode: string
29
+ may_implement: boolean
30
+ may_qa_accept: boolean
31
+ reports_to: string
32
+ write_scope: string_array
33
+ evidence_path: string
34
+ current_task: string
35
+ write_scope_policy:
36
+ empty_array_valid_for:
37
+ - no current write assignment
38
+ - may_implement false roles
39
+ - DEV roles in BOOTSTRAPPED_IDLE before assignment
40
+ null_policy: invalid; use [] for unassigned scope
41
+ allowed_lifecycle_states:
42
+ - SURFACE_PROVISIONED
43
+ - BOOTSTRAPPED_IDLE
44
+ - ACTIVE_WATCH
45
+ - VACANT_ROLE_SLOT
46
+ - AGENT_SUBSTITUTION_REQUIRED
47
+ - RELEASED_BY_OPERATOR
48
+ - HANDED_OFF
49
+ - PARKED_IDLE
50
+ - FAILED
51
+ - WATCH_UNSUPPORTED
16
52
  recommended_fields:
17
53
  - upstream
18
54
  - head_sha
@@ -25,6 +61,12 @@ recommended_fields:
25
61
  - parent_surface_ref
26
62
  - column_index
27
63
  - team_letter
64
+ - lifecycle_state
65
+ - mcp_version
66
+ - scp_context_source
67
+ receipt_type_policy:
68
+ SCP_BOOT_RECEIPT: full governed occupant receipt after role/context/readiness are known
69
+ SCP_MIN_BOOT_RECEIPT: minimal bootstrap-only receipt for orientation or pre-dispatch identity proof
28
70
  staffing_audit:
29
71
  description: >-
30
72
  For any role outside the executive office (team != "A"), the boot receipt
@@ -7,3 +7,44 @@ required_fields:
7
7
  - model_profile
8
8
  - handoff_sources
9
9
  - startup_objectives
10
+ role_slot_schema:
11
+ required_fields:
12
+ - role_slot
13
+ - harness
14
+ - readiness_status
15
+ - layout_locator
16
+ - scp_context_source
17
+ layout_locator_fields:
18
+ - workspace
19
+ - pane
20
+ - surface
21
+ readiness_statuses:
22
+ - PASS
23
+ - FAIL
24
+ - WAIVED_BY_EXEC_PM
25
+ - SUBSTITUTION_APPROVED_BY_EXEC_PM
26
+ - NON_GOVERNED_ONE_SHOT_ONLY
27
+ - VACANT_ROLE_SLOT
28
+ watcher_assignments:
29
+ A/EXEC-ODIN:
30
+ watches:
31
+ - executive_office
32
+ - team_odins
33
+ - cross_team_drift
34
+ - missing_receipts
35
+ - stale_proof
36
+ TEAM_ODIN:
37
+ watches:
38
+ - own_team_pm
39
+ - own_dev_slots
40
+ - own_qa_slots
41
+ - own_shadow_slots
42
+ A/EXEC-ASST:
43
+ may_maintain:
44
+ - delivery_proof_ledger
45
+ - heartbeat_ledger
46
+ minimum_compatible_mcp_version: 0.4.5
47
+ scp_context_sources:
48
+ - native sentinel-coordination-protocol skill
49
+ - odin-sentinel MCP at or above minimum version
50
+ - full injected SCP protocol text
@@ -1,10 +1,13 @@
1
- version: 0.3.0
1
+ version: 0.4.7
2
2
  roles:
3
3
  EXEC_PM:
4
4
  title: EXEC PM
5
5
  layer: executive
6
6
  may_implement_default: false
7
7
  may_qa_accept_default: false
8
+ must_actively_watch: false
9
+ may_intervene: false
10
+ authority_layer: executive
8
11
  purpose: Intent, priority, authorization, escalation, and claim framing.
9
12
  authority:
10
13
  sole_staffing_authority:
@@ -38,6 +41,28 @@ roles:
38
41
  layer: meta_control
39
42
  may_implement_default: false
40
43
  may_qa_accept_default: false
44
+ must_actively_watch: true
45
+ may_intervene: true
46
+ authority_layer: meta_control
47
+ normal_successor_state_after_receipt: ACTIVE_WATCH
48
+ watch_contract:
49
+ default_poll_interval_seconds: 30
50
+ watch_warn_after_seconds: 300
51
+ stalled_after_seconds: 600
52
+ watches:
53
+ - executive_office_health
54
+ - team_odin_health
55
+ - cross_team_drift
56
+ - stale_proof
57
+ - blocked_panes
58
+ - context_exhaustion
59
+ - missing_receipts
60
+ may_inject_corrective_prompts: true
61
+ forbidden:
62
+ - implement product work
63
+ - QA-accept work
64
+ - route business priorities
65
+ - override EXEC PM launch/activation authority
41
66
  purpose: Governance health, polling, delivery proof, role boundaries, and closeout hygiene.
42
67
  authority:
43
68
  intervention_authority:
@@ -80,24 +105,36 @@ roles:
80
105
  layer: executive_support
81
106
  may_implement_default: false
82
107
  may_qa_accept_default: false
108
+ must_actively_watch: false
109
+ may_intervene: false
110
+ authority_layer: executive_support
83
111
  purpose: Ledger, reminders, pane inventory, artifact index, and delivery checks.
84
112
  EXEC_RSCH:
85
113
  title: EXEC RSCH
86
114
  layer: research
87
115
  may_implement_default: false
88
116
  may_qa_accept_default: false
117
+ must_actively_watch: false
118
+ may_intervene: false
119
+ authority_layer: research
89
120
  purpose: Read-only strategy, alternatives, context recovery, and risk analysis.
90
121
  EXEC_QA:
91
122
  title: EXEC QA
92
123
  layer: quality
93
124
  may_implement_default: false
94
125
  may_qa_accept_default: true
126
+ must_actively_watch: false
127
+ may_intervene: false
128
+ authority_layer: quality
95
129
  purpose: Independent adversarial audit of process, evidence, closure language, and drift.
96
130
  TEAM_PM:
97
131
  title: TEAM PM
98
132
  layer: pod_control
99
133
  may_implement_default: false
100
134
  may_qa_accept_default: false
135
+ must_actively_watch: false
136
+ may_intervene: false
137
+ authority_layer: pod_control
101
138
  purpose: Pod task routing, worker activation, and reporting.
102
139
  forbidden_actions:
103
140
  - spawn agents on own pod or any other pod
@@ -118,6 +155,28 @@ roles:
118
155
  layer: meta_control
119
156
  may_implement_default: false
120
157
  may_qa_accept_default: false
158
+ must_actively_watch: true
159
+ may_intervene: true
160
+ authority_layer: meta_control
161
+ normal_successor_state_after_receipt: ACTIVE_WATCH
162
+ watch_contract:
163
+ default_poll_interval_seconds: 30
164
+ watch_warn_after_seconds: 300
165
+ stalled_after_seconds: 600
166
+ watches:
167
+ - own_team_pm
168
+ - own_dev_slots
169
+ - own_qa_slots
170
+ - own_shadow_slots
171
+ reports_to:
172
+ - own TEAM PM
173
+ - A/EXEC-ODIN
174
+ may_inject_corrective_prompts: true
175
+ forbidden:
176
+ - implement product work
177
+ - QA-accept work
178
+ - route business priorities
179
+ - override EXEC PM launch/activation authority
121
180
  purpose: Pod health monitoring, polling, blockers, freezes, and lateral ODIN mesh awareness.
122
181
  authority:
123
182
  intervention_authority:
@@ -152,16 +211,25 @@ roles:
152
211
  layer: implementation
153
212
  may_implement_default: true
154
213
  may_qa_accept_default: false
214
+ must_actively_watch: false
215
+ may_intervene: false
216
+ authority_layer: implementation
155
217
  purpose: Bounded implementation inside exact write scope with evidence.
156
218
  QA_WORKER:
157
219
  title: QA WORKER
158
220
  layer: quality
159
221
  may_implement_default: false
160
222
  may_qa_accept_default: true
223
+ must_actively_watch: false
224
+ may_intervene: false
225
+ authority_layer: quality
161
226
  purpose: Independent verification of worker evidence and acceptance criteria.
162
227
  SHADOW_REVIEWER:
163
228
  title: SHADOW REVIEWER
164
229
  layer: review
165
230
  may_implement_default: false
166
231
  may_qa_accept_default: false
232
+ must_actively_watch: false
233
+ may_intervene: false
234
+ authority_layer: review
167
235
  purpose: Independent critique, risk surfacing, and second-pass review.