@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.
- package/AGENTS.md +64 -0
- package/CLAUDE.md +43 -0
- package/README.md +113 -302
- package/dist/src/mcp/server.js +43 -12
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/protocol/schemas.d.ts +2529 -4
- package/dist/src/protocol/schemas.js +214 -18
- package/dist/src/protocol/schemas.js.map +1 -1
- package/dist/src/protocol/service.d.ts +96 -2
- package/dist/src/protocol/service.js +516 -4
- package/dist/src/protocol/service.js.map +1 -1
- package/dist/src/protocol/surface-layout.d.ts +40 -1
- package/dist/src/protocol/surface-layout.js +98 -1
- package/dist/src/protocol/surface-layout.js.map +1 -1
- package/dist/src/protocol/validators.d.ts +3 -0
- package/dist/src/protocol/validators.js +28 -0
- package/dist/src/protocol/validators.js.map +1 -1
- package/dist/src/protocol/version.d.ts +3 -0
- package/dist/src/protocol/version.js +3 -0
- package/dist/src/protocol/version.js.map +1 -1
- package/dist/src/telemetry/config.d.ts +8 -0
- package/dist/src/telemetry/config.js +24 -0
- package/dist/src/telemetry/config.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +5 -5
- package/dist/src/telemetry/index.js +3 -3
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/redactor.js +25 -7
- package/dist/src/telemetry/redactor.js.map +1 -1
- package/dist/src/telemetry/report.d.ts +108 -0
- package/dist/src/telemetry/report.js +83 -3
- package/dist/src/telemetry/report.js.map +1 -1
- package/dist/src/telemetry/submit.d.ts +2 -0
- package/dist/src/telemetry/submit.js +79 -6
- package/dist/src/telemetry/submit.js.map +1 -1
- package/docs/guides/quick-start.md +112 -44
- package/docs/guides/quickstart-prompts.md +46 -113
- package/docs/guides/recommended-starter-team.md +45 -27
- package/docs/reference/client-compatibility.md +20 -43
- package/docs/reference/cost-and-privacy.md +26 -23
- package/docs/reference/distribution.md +40 -55
- package/docs/reference/public-surface-audit.md +35 -114
- package/package.json +22 -6
- package/protocol/SCP.md +8 -1
- package/protocol/bootstrap-skill.md +16 -11
- package/protocol/closeout.yaml +7 -1
- package/protocol/delegation.yaml +1 -1
- package/protocol/model-profiles.yaml +55 -1
- package/protocol/receipts/boot-receipt.yaml +42 -0
- package/protocol/receipts/team-manifest.yaml +41 -0
- package/protocol/roles.yaml +69 -1
- package/protocol/topology.yaml +78 -36
- package/scripts/audit/public-surface.mjs +47 -19
- package/scripts/audit/verify-pack.mjs +293 -27
- package/templates/dev-slice-template.md +56 -0
- package/templates/pm-role-template.md +61 -0
- package/templates/qa-slice-template.md +46 -0
- 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
|
-
##
|
|
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
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
78
|
-
- `/path/to/odin-sentinel/dist/src/bin/index.js`
|
|
17
|
+
## Public Distribution Files
|
|
79
18
|
|
|
80
|
-
|
|
19
|
+
The intended public package includes:
|
|
81
20
|
|
|
82
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
42
|
+
## Current Public Surface
|
|
122
43
|
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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.
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"description": "
|
|
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": "
|
|
45
|
-
"yaml": "
|
|
46
|
-
"zod": "
|
|
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
|
+
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
|
|
21
|
+
- the repository-distributed SCP protocol bundle, or an operator-declared canonical SCP skill source outside this public package.
|
|
17
22
|
|
|
18
|
-
All
|
|
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
|
|
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
|
|
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
|
|
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/
|
|
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.
|
|
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
|
|
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:
|
|
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
|
-
-
|
|
1442
|
-
-
|
|
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.
|
package/protocol/closeout.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
version: 0.
|
|
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.
|
package/protocol/delegation.yaml
CHANGED
|
@@ -1,7 +1,61 @@
|
|
|
1
|
-
version: 0.
|
|
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
|
package/protocol/roles.yaml
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
version: 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.
|