@bradheitmann/odin-sentinel 0.4.4 → 0.4.6

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 +102 -335
  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 +65 -0
  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 +19 -4
  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 +48 -19
  53. package/scripts/audit/verify-pack.mjs +294 -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
@@ -1,35 +1,53 @@
1
1
  # Recommended Starter Team
2
2
 
3
- ODIN is opinionated, but not rigid.
4
-
5
- The profiles below are a good starting point for a visible multi-agent session.
6
- They are not bundled dependencies. Install and configure the harnesses you want,
7
- then point them at ODIN Sentinel through MCP.
3
+ This is a small, visible starter shape for ODIN Sentinel. It is not a dependency
4
+ list and not a guarantee that every named harness is ready on your machine.
8
5
 
9
6
  ## Executive Office
10
7
 
11
- | Role | Suggested Harness | Suggested Model Class | Why |
12
- | --- | --- | --- | --- |
13
- | `A/EXEC-PM` | Codex CLI | GPT-5.5-class frontier reasoning model | Stable coordination, claim-bound reporting, and careful instruction handling. |
14
- | `A/EXEC-ODIN` | Codex CLI | GPT-5.5-class frontier reasoning model | Sentinel work: staying awake, polling, quality control, and closeout hygiene. |
15
- | `A/EXEC-ASST` | Claude Code | Claude Haiku-class fast assistant model | Low-latency ledger work, reminders, artifact indexing, and simple checks. |
16
- | `A/EXEC-RSCH` | Droid | Kimi K2.6-class orchestration model | Research, alternatives, synthesis, and context recovery. |
17
- | `A/EXEC-QA` | Droid | Kimi K2.6-class review model | Independent process review, evidence checks, and drift detection. |
8
+ | Role | Suggested Harness Type | Responsibility |
9
+ | --- | --- | --- |
10
+ | `A/EXEC-PM` | Strong coordination agent | Routing, activation, assignments, waivers, escalation. |
11
+ | `A/EXEC-ODIN` | Strong monitoring agent | Health, scope, drift, permission waits, closeout hygiene. |
12
+ | `A/EXEC-ASST` | Fast assistant | Ledger notes, reminders, artifact index, delivery checks. |
13
+ | `A/EXEC-RSCH` | Research/synthesis agent | Alternatives, context recovery, risk analysis. |
14
+ | `A/EXEC-QA` | Independent reviewer | Process review and drift detection. |
18
15
 
19
16
  ## Development Pod
20
17
 
21
- | Role | Suggested Harness | Suggested Model Class | Why |
22
- | --- | --- | --- | --- |
23
- | `<TEAM>/TEAM-PM` | Claude Code | Claude Opus/Sonnet-class coding model | Pod orchestration, task decomposition, dispatch, and worker follow-up. |
24
- | `<TEAM>/ODIN` | Codex CLI | GPT-5.5-class frontier reasoning model | Lightweight pod sentinel duties, blocker detection, and quality reminders. |
25
- | `<TEAM>/DEV-1` | Droid | Kimi K2.6-class coding model | Bounded implementation work. |
26
- | `<TEAM>/QA-1` | Crush | GLM-5.1-class independent review model | Independent QA with a different review style from the implementer. |
27
- | `<TEAM>/SHADOW-1` | Droid | Kimi K2.6-class review model | Second-pass critique, architectural concerns, and risk surfacing. |
28
-
29
- ## Notes
30
-
31
- Use faster models for ledger work, routine research, and low-risk monitoring.
32
- Use stronger models for coordination, implementation, QA, and places where the
33
- cost of a missed detail is high.
34
-
35
- The defaults live in `protocol/model-profiles.yaml`. Change them freely.
18
+ | Role | Suggested Harness Type | Responsibility |
19
+ | --- | --- | --- |
20
+ | `<TEAM>/TEAM-PM` | Coding-capable coordinator | Pod assignments, follow-up, blocker routing. |
21
+ | `<TEAM>/ODIN` | Monitor | Polling, scope reminders, unsafe-lane freezes. |
22
+ | `<TEAM>/DEV-1` | Implementer | Bounded code/docs changes inside assigned write scope. |
23
+ | `<TEAM>/QA-1` | Independent reviewer | Fresh-context QA; no self-fixes during QA. |
24
+ | `<TEAM>/SHADOW-1` | Read-only reviewer | Optional second-pass critique and risk surfacing. |
25
+
26
+ ## Readiness Before Launch
27
+
28
+ Each persistent role should have:
29
+
30
+ - MCP server proof or an accepted fallback path.
31
+ - Native skill context where supported, or full prompt fallback.
32
+ - Auth/account readiness checked without printing secrets.
33
+ - Local inference smoke-tested if used.
34
+ - CMUX locator recorded in the same workspace.
35
+ - Watcher assignment recorded in the team manifest.
36
+
37
+ Role slots may exist before readiness. Occupants should wait until readiness
38
+ passes or EXEC PM records a waiver/substitution.
39
+
40
+ ## ODIN Roles Are Active Monitors
41
+
42
+ ODIN roles are not passive receipt emitters. Their default job is to watch for
43
+ stall, scope drift, missed delivery, permission waits, stale versions, and role
44
+ boundary breaches. Default active-watch cadence is 30 seconds. Treat 5 minutes
45
+ without meaningful progress as `WATCH_WARN` and 10 minutes without heartbeat or
46
+ observable progress as `STALLED`, unless the team manifest explicitly declares a
47
+ known long-running command. ODIN roles must re-arm the next watch tick instead
48
+ of returning to passive idle.
49
+
50
+ Human-facing translation: ODIN pauses are safety rails. They protect the
51
+ operator from silent failures, surprise costs, secret exposure, and agents going
52
+ off task. A warning or halt should explain the blocker in plain language and
53
+ offer the next safe choice; it should not blame the operator.
@@ -1,23 +1,23 @@
1
1
  # Client Compatibility
2
2
 
3
- ODIN Sentinel is implemented in TypeScript and runs on Node.js, but MCP clients
4
- do not need to be TypeScript or JavaScript. Clients interact with the server
5
- through MCP over stdio, which is JSON-RPC framed over standard input/output.
3
+ ODIN Sentinel is implemented in TypeScript and runs on Node.js `>=22.13.0`.
4
+ Clients can be written in any language that can speak MCP over stdio or consume a
5
+ protocol snapshot.
6
6
 
7
- ## Compatibility Contract
7
+ ## Compatibility Layers
8
8
 
9
- The server keeps the MCP boundary language-neutral:
9
+ - MCP server: language-neutral JSON-RPC over stdio.
10
+ - Native skill: host-specific context for automatic invocation and role behavior.
11
+ - Plugin: host install path that may bundle MCP config and native skill.
12
+ - Full prompt injection: fallback for hosts without MCP or native skill support.
10
13
 
11
- - tools accept and return JSON-compatible values
12
- - resources return text, JSON, Markdown, or YAML content
13
- - no tool requires a JavaScript object prototype, class instance, or local Node-specific object
14
- - no tool requires filesystem access from the client
15
- - fallback protocol snapshots are returned as plain filename-to-text maps
14
+ A persistent governed role should have MCP plus native skill or full prompt proof.
15
+ If it does not, mark it `NON_GOVERNED_ONE_SHOT_ONLY`: it can do bounded one-shot
16
+ help, but should not occupy a persistent governed role.
16
17
 
17
- ## Rust, Zig, Go, And Native Clients
18
+ ## Native And WASM Clients
18
19
 
19
- Native clients that can spawn stdio subprocesses should launch the server as a
20
- subprocess:
20
+ Native clients that can spawn subprocesses should launch:
21
21
 
22
22
  ```text
23
23
  command: node
@@ -25,35 +25,12 @@ args: [/path/to/odin-sentinel/dist/src/bin/index.js]
25
25
  transport: stdio
26
26
  ```
27
27
 
28
- Then call normal MCP methods:
28
+ Clients that cannot spawn stdio should use a host bridge or a static snapshot
29
+ from `odin.export_protocol_snapshot`.
29
30
 
30
- - `tools/list`
31
- - `tools/call`
32
- - `resources/list`
33
- - `resources/read`
31
+ ## CMUX Boundary
34
32
 
35
- ## WebAssembly Clients
36
-
37
- WASM runtimes vary. Some can spawn subprocesses through a host capability; many
38
- cannot. If the WASM client cannot spawn a stdio process, use one of these
39
- patterns:
40
-
41
- 1. Host bridge: native host process runs `odin-sentinel` and exposes MCP calls
42
- to the WASM guest.
43
- 2. Sidecar bridge: an external local process runs `odin-sentinel` and the WASM
44
- client talks to the host through its supported bridge channel.
45
- 3. Snapshot fallback: call `odin.export_protocol_snapshot` from a capable host and
46
- provide the generated text files to the WASM agent as static context.
47
-
48
- ## Portability Limits
49
-
50
- The current server runtime requires Node.js 20 or newer. This does not restrict
51
- the client implementation language; it only means the machine hosting the MCP
52
- server needs Node available.
53
-
54
- Future options if a pure native server is needed:
55
-
56
- - Rust MCP server using the same `protocol/` data files.
57
- - Go MCP server using the same `protocol/` data files.
58
- - Single-file generated JSON protocol bundle for embedded clients.
59
- - WASI-compatible read-only server if the target runtime supports stdio.
33
+ CMUX is required for governed team mode because role slots must be visible,
34
+ locatable, and human-readable. Tab-only layouts are degraded. The canonical mode
35
+ is one CMUX workspace with spatial/pod organization and EXEC PM in the same
36
+ workspace by default.
@@ -1,35 +1,38 @@
1
1
  # Cost And Privacy
2
2
 
3
- ODIN Sentinel does not provide inference.
3
+ ODIN Sentinel does not provide inference and does not host a backend. Users pay
4
+ for their own harnesses, model providers, and local inference hardware.
4
5
 
5
- It does not proxy model calls, host a backend, phone home, collect telemetry, or
6
- ship credentials. It is a local MCP server that returns protocol resources,
7
- startup packets, validation results, delegation envelopes, closeout checklists,
8
- and fallback text snapshots.
6
+ ## Network And Telemetry Boundary
9
7
 
10
- ## Who Pays For What
8
+ Normal MCP operation is local stdio:
11
9
 
12
- The maintainer does not pay when another person runs ODIN Sentinel locally.
13
-
14
- Users are responsible for their own harness setup and any model calls those
15
- harnesses make. ODIN Sentinel only returns coordination data over MCP.
16
-
17
- ODIN Sentinel only names preferred harness slots and model capability profiles.
18
- Those are dispatch preferences, not hosted compute.
10
+ ```text
11
+ MCP client <-> local stdio process <-> bundled protocol files
12
+ ```
19
13
 
20
- ## Network Boundary
14
+ No network call is required for normal protocol reads, validation tools, startup
15
+ packets, delegation packets, or closeout checklists.
21
16
 
22
- The server is stdio-only by default:
17
+ ODIN Sentinel includes optional telemetry/session-report helper tools. They are
18
+ user-invoked, redaction-oriented, and should not be described as automatic
19
+ collection. Do not claim "no telemetry" without the qualifier that telemetry is
20
+ not automatic and requires an explicit tool call/configured destination.
23
21
 
24
- ```text
25
- MCP client <-> local stdio process <-> protocol files
26
- ```
22
+ ## Secret Handling
27
23
 
28
- No network call is required for normal operation.
24
+ Do not paste API keys, OAuth material, tokens, or passwords into docs/prompts.
25
+ Ask whether providers are configured through Doppler, 1Password CLI,
26
+ environment variables, direnv, mise, or dotenv-style files. Verify status by
27
+ name/count/status only, never by printing secret values.
29
28
 
30
- ## Standalone Boundary
29
+ Beginner-safe wording: "Please make sure this tool is signed in or configured
30
+ outside the chat. If it is not, we can pause, use a different harness, or keep
31
+ that role slot empty." Do not ask the user to reveal where the secret value is
32
+ stored unless they volunteer a non-secret path or tool name.
31
33
 
32
- ODIN Sentinel is standalone.
34
+ ## Local Inference
33
35
 
34
- The default handoff search list uses `.odin/` paths. A fresh repo does not need
35
- any separate orchestration system installed for ODIN Sentinel to work.
36
+ Endpoint reachability is not enough. A local model is ready only if it returns
37
+ visible content within the session timeout and does not return only
38
+ `reasoning_content`.
@@ -1,27 +1,27 @@
1
1
  # Distribution
2
2
 
3
- ODIN Sentinel is a local stdio MCP server. The simplest public distribution is
4
- an npm package that ships prebuilt JavaScript and protocol files.
3
+ ODIN Sentinel public artifacts are the GitHub repository, npm package, optional
4
+ host plugin, public bootstrap skill/resource, public templates, and docs. When
5
+ public protocol semantics change, update them together.
5
6
 
6
- ## Recommended Install Path
7
+ ## Current Public Versions
7
8
 
8
- ```bash
9
- npm i -g @bradheitmann/odin-sentinel
10
- ```
9
+ - npm package/server: `0.4.6`
10
+ - minimum compatible child MCP version: `0.4.5`
11
11
 
12
- MCP client configuration can then use the installed binary directly:
12
+ Private local skill copies may differ for personal workflow reasons. Release
13
+ checks must not rely on private local paths and must distinguish intentional
14
+ private-local divergence from repo-internal public artifact drift.
13
15
 
14
- ```json
15
- {
16
- "mcpServers": {
17
- "odin-sentinel": {
18
- "command": "odin-sentinel-mcp"
19
- }
20
- }
21
- }
16
+ ## Install Paths
17
+
18
+ Global install:
19
+
20
+ ```bash
21
+ npm i -g @bradheitmann/odin-sentinel
22
22
  ```
23
23
 
24
- For zero-install via `npx`:
24
+ Zero-install MCP config:
25
25
 
26
26
  ```json
27
27
  {
@@ -34,9 +34,7 @@ For zero-install via `npx`:
34
34
  }
35
35
  ```
36
36
 
37
- ## Local Clone Path
38
-
39
- For source builds:
37
+ Source build:
40
38
 
41
39
  ```bash
42
40
  pnpm install
@@ -44,39 +42,26 @@ pnpm run build
44
42
  node dist/src/bin/index.js
45
43
  ```
46
44
 
47
- Then point the client at the built file:
48
-
49
- ```json
50
- {
51
- "mcpServers": {
52
- "odin-sentinel": {
53
- "command": "node",
54
- "args": ["/absolute/path/to/odin-sentinel/dist/src/bin/index.js"]
55
- }
56
- }
57
- }
58
- ```
59
-
60
- ## Advanced Root Override
61
-
62
- The server normally finds its bundled `protocol/` directory automatically.
63
-
64
- Advanced deployments can set `ODIN_SENTINEL_ROOT` to point at another checked-out
65
- ODIN Sentinel root that contains the full `protocol/` tree. Most users do not
66
- need this.
67
-
68
- ## Binary Strategy
69
-
70
- A native binary is possible, but it should not be the first distribution path.
71
- The server is small, stdio-only, and already fits the package manager workflow
72
- most MCP clients expect.
73
-
74
- Good future binary routes:
75
-
76
- - Rust or Go implementation over the same `protocol/` files.
77
- - Generated single-file protocol bundle for embedded clients.
78
- - Homebrew formula once the public package name and release cadence are stable.
79
-
80
- Avoid a bundled Node executable unless users ask for it. Those bundles tend to
81
- make asset paths, source maps, and platform support more awkward than the code
82
- deserves.
45
+ ## Release Checklist
46
+
47
+ Before publishing or updating a plugin/skill listing:
48
+
49
+ 1. Update GitHub source, docs, protocol resources, public templates, and package
50
+ metadata together.
51
+ 2. Confirm npm package metadata includes repository, homepage, bugs, license,
52
+ engines, and files.
53
+ 3. Confirm package contents exclude private planning workspaces and local evidence paths.
54
+ 4. Confirm `protocol/SCP.md` and `protocol/bootstrap-skill.md` carry the same
55
+ public version and minimum compatible child MCP version.
56
+ 5. Confirm public docs do not contain stale MCP/server version references.
57
+ 6. Confirm telemetry wording explains that session-report submission is optional
58
+ and user-invoked.
59
+ 7. Run offline release validation: `pnpm run validate`.
60
+ 8. Run pack dry-run: `pnpm pack --dry-run`.
61
+ 9. Tag the release only after GitHub, npm, plugin, public skill/bootstrap, docs,
62
+ and version tags agree.
63
+
64
+ ## Public Templates
65
+
66
+ The npm package intentionally ships `templates/` plus `AGENTS.md` and
67
+ `CLAUDE.md`. They are starter templates, not private planning artifacts.
@@ -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.6`
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@bradheitmann/odin-sentinel",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -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",
@@ -55,6 +58,18 @@
55
58
  "engines": {
56
59
  "node": ">=22.13.0"
57
60
  },
61
+ "repository": {
62
+ "type": "git",
63
+ "url": "git+https://github.com/bradheitmann/odin-sentinel.git"
64
+ },
65
+ "homepage": "https://github.com/bradheitmann/odin-sentinel#readme",
66
+ "bugs": {
67
+ "url": "https://github.com/bradheitmann/odin-sentinel/issues"
68
+ },
69
+ "odin": {
70
+ "publicVersion": "0.4.6",
71
+ "minimumCompatibleChildMcpVersion": "0.4.5"
72
+ },
58
73
  "scripts": {
59
74
  "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
60
75
  "build": "pnpm run clean && tsc -p tsconfig.build.json",
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.6
4
+
5
+ SCP_PUBLIC_VERSION: 0.4.6
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.