@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
@@ -0,0 +1,61 @@
1
+ # PM Role Template
2
+
3
+ Use this as a public starter template for an ODIN Sentinel PM role.
4
+
5
+ ## Team Objective
6
+
7
+ - Outcome: `<desired result>`
8
+ - Deadline or session boundary: `<timebox>`
9
+ - Human operator: `<name or role>`
10
+
11
+ ## Roles
12
+
13
+ - EXEC PM: owns launch/activation, readiness waivers or substitutions, CMUX
14
+ topology, staffing, final claim framing, and escalation.
15
+ - TEAM PM: owns routing and worker activation inside an assigned team after EXEC
16
+ PM launch. TEAM PM cannot staff new occupants, waive launch readiness, mutate
17
+ CMUX topology, or close lifecycle unless EXEC PM explicitly delegates it.
18
+ - ODIN: monitors health, scope, delivery, and drift; intervenes or escalates.
19
+ - DEV: implements assigned write scope only.
20
+ - QA: verifies independently and reports PASS/FAIL.
21
+
22
+ ## Readiness Gates
23
+
24
+ - Node.js version satisfies package metadata: `<status>`
25
+ - ODIN MCP server configured and smoke-tested: `<status>`
26
+ - Native skill or prompt fallback available: `<status>`
27
+ - CMUX workspace and role slots ready: `<status>`
28
+ - Harness auth/account readiness checked: `<status>`
29
+ - Local inference smoke-tested if used: `<status>`
30
+ - Role compatibility smoke test passed: `<status>`
31
+ - Launch/waiver authority holder: `A/EXEC-PM`
32
+
33
+ ## Operator-Friendly Status
34
+
35
+ - Plain-language summary: `<what is happening in one sentence>`
36
+ - Current blocker, if any: `<sign-in | permission prompt | API/account setup | local model smoke test | none>`
37
+ - Safe next choice for the human operator: `<approve | sign in | choose fallback harness | keep slot vacant | ask for help>`
38
+ - Secret-handling reminder: `Do not paste API keys or tokens into chat.`
39
+
40
+ ## Assignments
41
+
42
+ - `<role slot>` -> `<agent/harness>` -> `<scope>`
43
+
44
+ ## Blockers And Escalation
45
+
46
+ - Blocker: `<description>`
47
+ - Owner: `<role>`
48
+ - Escalate to human when: `<condition>`
49
+
50
+ ## User-Defined Criteria
51
+
52
+ - `<project-specific criterion>`
53
+
54
+ ## Minimal Filled Example
55
+
56
+ - Outcome: `Clarify install documentation for first-time users`
57
+ - Human operator: `project maintainer`
58
+ - Readiness summary: `MCP smoke test passes; Claude Code sign-in still needed`
59
+ - Safe next choice: `sign in to Claude Code, choose another harness, or keep that slot vacant`
60
+ - Assignment: `B/DEV-1 -> Codex -> README.md only`
61
+ - User-defined criterion: `Do not ask the operator to paste API keys`
@@ -0,0 +1,46 @@
1
+ # QA Slice Template
2
+
3
+ Use this as a public starter template. Replace every placeholder before launch.
4
+
5
+ ## Parent DEV Reference
6
+
7
+ - DEV task: `<task id or title>`
8
+ - DEV changed files: `<list supplied by DEV>`
9
+ - Expected verification: `<commands or checks>`
10
+
11
+ ## Fresh-Context Review
12
+
13
+ QA starts from the task contract and changed files, not from DEV's confidence.
14
+
15
+ ## Checks
16
+
17
+ - Acceptance criteria:
18
+ - `<criterion>` -> PASS/FAIL
19
+ - Scope compliance:
20
+ - Only declared write-allowed files changed: PASS/FAIL
21
+ - Security/privacy:
22
+ - No secrets printed or committed: PASS/FAIL
23
+ - No unsafe permission or auth behavior: PASS/FAIL
24
+ - Regression risk:
25
+ - Relevant tests or manual checks reproduced: PASS/FAIL
26
+ - User-defined criteria:
27
+ - `<project-specific criterion>` -> PASS/FAIL
28
+
29
+ ## QA Verdict
30
+
31
+ Return one verdict:
32
+
33
+ - PASS: all required checks passed.
34
+ - FAIL: one or more required checks failed.
35
+ - BLOCKED: QA could not verify because required evidence, access, or commands are missing.
36
+
37
+ QA reports issues. QA does not fix code during the QA pass.
38
+
39
+ ## Minimal Filled Example
40
+
41
+ - DEV task: `Update one README paragraph to clarify install steps`
42
+ - DEV changed files: `README.md`
43
+ - Expected verification: `pnpm test`
44
+ - Acceptance criterion: `README explains global and zero-install paths`
45
+ - Scope compliance: `Only README.md changed`
46
+ - Verdict: `PASS`, `FAIL`, or `BLOCKED` with one-sentence evidence
@@ -0,0 +1,163 @@
1
+ session_id: "<session-id>"
2
+ topology:
3
+ mode: "governed-team"
4
+ cmux_required: true
5
+ cmux_workspace: "<workspace-ref>"
6
+ layout: "human-readable spatial/pod organization"
7
+ executive_office:
8
+ - "A/EXEC-PM"
9
+ - "A/EXEC-ODIN"
10
+ - "A/EXEC-ASST"
11
+ development_pods:
12
+ - "B"
13
+ odin_mesh:
14
+ cadence_seconds: 30
15
+ executive_odin: "A/EXEC-ODIN"
16
+ team_odins:
17
+ - "B/ODIN"
18
+ model_profile:
19
+ minimum_compatible_child_mcp_version: "0.4.5"
20
+ inference_provider_inventory: []
21
+ handoff_sources:
22
+ - "<handoff path or none>"
23
+ startup_objectives:
24
+ - "<plain-language objective>"
25
+ role_slots:
26
+ - role_slot: "A/EXEC-PM"
27
+ harness: "<harness>"
28
+ readiness_status: "PASS"
29
+ layout_locator:
30
+ workspace: "<workspace-ref>"
31
+ pane: "<pane-ref>"
32
+ surface: "<surface-ref>"
33
+ scp_context_source: "native sentinel-coordination-protocol skill"
34
+ mcp_available: true
35
+ mcp_version: "0.4.5"
36
+ scp_skill_available: true
37
+ full_protocol_text_injected: false
38
+ watcher: "A/EXEC-ODIN"
39
+ - role_slot: "A/EXEC-ODIN"
40
+ harness: "<harness>"
41
+ readiness_status: "PASS"
42
+ layout_locator:
43
+ workspace: "<workspace-ref>"
44
+ pane: "<pane-ref>"
45
+ surface: "<surface-ref>"
46
+ scp_context_source: "native sentinel-coordination-protocol skill"
47
+ mcp_available: true
48
+ mcp_version: "0.4.5"
49
+ scp_skill_available: true
50
+ full_protocol_text_injected: false
51
+ watches:
52
+ - "A/EXEC-PM"
53
+ - "B/ODIN"
54
+ - role_slot: "B/ODIN"
55
+ harness: "<harness>"
56
+ readiness_status: "PASS"
57
+ layout_locator:
58
+ workspace: "<workspace-ref>"
59
+ pane: "<pane-ref>"
60
+ surface: "<surface-ref>"
61
+ scp_context_source: "native sentinel-coordination-protocol skill"
62
+ mcp_available: true
63
+ mcp_version: "0.4.5"
64
+ scp_skill_available: true
65
+ full_protocol_text_injected: false
66
+ watches:
67
+ - "B/TEAM-PM"
68
+ - "B/DEV-1"
69
+ - role_slot: "B/DEV-1"
70
+ harness: "<harness>"
71
+ readiness_status: "PASS"
72
+ layout_locator:
73
+ workspace: "<workspace-ref>"
74
+ pane: "<pane-ref>"
75
+ surface: "<surface-ref>"
76
+ scp_context_source: "native sentinel-coordination-protocol skill"
77
+ mcp_available: true
78
+ mcp_version: "0.4.5"
79
+ scp_skill_available: true
80
+ full_protocol_text_injected: false
81
+ watcher: "B/ODIN"
82
+ fallback_policy:
83
+ non_governed_one_shot_only: "Allowed only for bounded, non-persistent help when MCP/skill/protocol proof is absent. Not suitable for a persistent governed role."
84
+ operator_friendly_status:
85
+ summary: "<what is happening in one sentence>"
86
+ current_blocker: "<sign-in | permission prompt | API/account setup | local model smoke test | none>"
87
+ safe_next_choice: "<approve | sign in | choose fallback harness | keep slot vacant | ask for help>"
88
+ user_defined_criteria:
89
+ - "<project-specific criterion>"
90
+
91
+ # Minimal filled example
92
+ #
93
+ # session_id: "example-session"
94
+ # topology:
95
+ # mode: "governed-team"
96
+ # cmux_required: true
97
+ # cmux_workspace: "workspace:1"
98
+ # layout: "A executive office plus B development pod"
99
+ # executive_office:
100
+ # - "A/EXEC-PM"
101
+ # - "A/EXEC-ODIN"
102
+ # development_pods:
103
+ # - "B"
104
+ # odin_mesh:
105
+ # cadence_seconds: 30
106
+ # executive_odin: "A/EXEC-ODIN"
107
+ # team_odins:
108
+ # - "B/ODIN"
109
+ # model_profile:
110
+ # minimum_compatible_child_mcp_version: "0.4.5"
111
+ # inference_provider_inventory: []
112
+ # handoff_sources:
113
+ # - "none"
114
+ # startup_objectives:
115
+ # - "Clarify install documentation for first-time users"
116
+ # role_slots:
117
+ # - role_slot: "A/EXEC-PM"
118
+ # harness: "Codex"
119
+ # readiness_status: "PASS"
120
+ # layout_locator:
121
+ # workspace: "workspace:1"
122
+ # pane: "pane:1"
123
+ # surface: "surface:1"
124
+ # scp_context_source: "native sentinel-coordination-protocol skill"
125
+ # mcp_available: true
126
+ # mcp_version: "0.4.5"
127
+ # scp_skill_available: true
128
+ # full_protocol_text_injected: false
129
+ # watcher: "A/EXEC-ODIN"
130
+ # - role_slot: "B/ODIN"
131
+ # harness: "Codex"
132
+ # readiness_status: "PASS"
133
+ # layout_locator:
134
+ # workspace: "workspace:1"
135
+ # pane: "pane:2"
136
+ # surface: "surface:2"
137
+ # scp_context_source: "native sentinel-coordination-protocol skill"
138
+ # mcp_available: true
139
+ # mcp_version: "0.4.5"
140
+ # scp_skill_available: true
141
+ # full_protocol_text_injected: false
142
+ # watches:
143
+ # - "B/TEAM-PM"
144
+ # - "B/DEV-1"
145
+ # - role_slot: "B/DEV-1"
146
+ # harness: "Codex"
147
+ # readiness_status: "PASS"
148
+ # layout_locator:
149
+ # workspace: "workspace:1"
150
+ # pane: "pane:2"
151
+ # surface: "surface:3"
152
+ # scp_context_source: "odin-sentinel MCP at or above minimum version"
153
+ # mcp_available: true
154
+ # mcp_version: "0.4.5"
155
+ # scp_skill_available: false
156
+ # full_protocol_text_injected: false
157
+ # watcher: "B/ODIN"
158
+ # operator_friendly_status:
159
+ # summary: "Docs update is ready to dispatch."
160
+ # current_blocker: "none"
161
+ # safe_next_choice: "launch B/DEV-1"
162
+ # user_defined_criteria:
163
+ # - "Do not ask the operator to paste API keys."