@alphazede/bearing-lite 0.2.2 → 1.0.0

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/CONTRIBUTING.md +11 -6
  2. package/README.md +224 -131
  3. package/com.github.copilot/hooks/hooks.json +33 -0
  4. package/hooks/assurance-budget.cjs +33 -11
  5. package/hooks/com.anthropic.claude-code/mapping.md +35 -16
  6. package/hooks/plan-package.cjs +5 -4
  7. package/hooks/policy.cjs +10 -4
  8. package/hooks/profiles.cjs +119 -0
  9. package/hooks/te-host.cjs +40 -5
  10. package/hooks/transition-order.cjs +12 -4
  11. package/hooks/verification.cjs +358 -0
  12. package/package.json +6 -3
  13. package/plugin.json +2 -34
  14. package/profiles.json +1 -0
  15. package/schemas/implementation.schema.json +204 -5
  16. package/schemas/journey.schema.json +3 -3
  17. package/schemas/profiles.schema.json +359 -0
  18. package/schemas/verification.schema.json +126 -0
  19. package/skills/{set-bearings → architectural-alignment}/SKILL.md +17 -13
  20. package/skills/{set-bearings → architectural-alignment}/templates/workspace.md +1 -1
  21. package/skills/bearing-lite/SKILL.md +22 -22
  22. package/skills/bearing-lite/references/assurance-policy.md +32 -16
  23. package/skills/bearing-lite/references/lineups.md +7 -110
  24. package/skills/bearing-lite/references/owner-stops.md +13 -13
  25. package/skills/bearing-lite/references/peer-synthesis.md +11 -12
  26. package/skills/bearing-lite/references/profiles.md +149 -0
  27. package/skills/bearing-lite/references/resume.md +30 -0
  28. package/skills/bearing-lite/references/review-policy.md +3 -3
  29. package/skills/bearing-lite/references/role-routing.mmd +14 -14
  30. package/skills/bearing-lite/references/task-state.md +10 -10
  31. package/skills/bearing-lite/references/task-state.mmd +2 -2
  32. package/skills/bearing-lite/references/verification.md +52 -0
  33. package/skills/bearing-lite/templates/task.md +29 -28
  34. package/skills/{explorer → coordinator}/SKILL.md +16 -16
  35. package/skills/{crewmate → implementer}/SKILL.md +17 -15
  36. package/skills/{repository-fit → intake}/SKILL.md +10 -9
  37. package/skills/integration-engineer/SKILL.md +17 -12
  38. package/skills/light-implementer/SKILL.md +6 -5
  39. package/skills/onboard-bearing/SKILL.md +46 -0
  40. package/skills/plan-integrator/SKILL.md +14 -14
  41. package/skills/{map-the-route → planning-and-design}/SKILL.md +27 -27
  42. package/skills/{map-the-route → planning-and-design}/references/artifact-grammar.md +29 -27
  43. package/skills/prompt/SKILL.md +245 -0
  44. package/skills/requirements-engineer/SKILL.md +11 -11
  45. package/skills/{park-ranger → reviewer}/SKILL.md +16 -13
  46. package/skills/{gather-supplies → scope-definition}/SKILL.md +13 -13
  47. package/skills/scribe/SKILL.md +8 -8
  48. package/skills/systems-modeler/SKILL.md +5 -3
  49. package/skills/test-engineer/SKILL.md +16 -13
  50. package/templates/dod-manifest-v1.html +648 -0
  51. package/tools/render-dod-manifest.mjs +1743 -0
  52. package/lineups.json +0 -1
  53. package/schemas/lineups.schema.json +0 -145
  54. package/skills/navigator/SKILL.md +0 -36
  55. package/skills/surveyor/SKILL.md +0 -48
  56. package/skills/validator/SKILL.md +0 -37
  57. package/skills/validator/references/grading-rubric.md +0 -40
package/CONTRIBUTING.md CHANGED
@@ -16,14 +16,20 @@ most.
16
16
  ## How this repository works
17
17
 
18
18
  Bearing Lite is developed directly as a public skills-first Agent Plugin. The
19
- portable product surface is `plugin.json`, `skills/`, optional `hooks/`, and
20
- the public governance documents. There is no CLI binary, MCP server, browser
21
- control room, or hidden runtime state to maintain for ordinary contributions.
19
+ portable product surface is `plugin.json`, `skills/`, optional `hooks/`,
20
+ `profiles.json`, and the public governance documents. There is no CLI binary,
21
+ MCP server, browser control room, or hidden runtime state to maintain for
22
+ ordinary contributions.
22
23
 
23
24
  Pull requests that stay inside that product boundary are welcome. Changes that
24
25
  reintroduce deep-harness coupling, model or provider pins, secret material, or
25
26
  private path spill will be declined.
26
27
 
28
+ The public lifecycle is Intake → Architectural Alignment → Scope Definition →
29
+ Planning and Design, then bounded implementation and independent assessment.
30
+ Use those names. Do not reactivate retired camp terminology in active public
31
+ flow.
32
+
27
33
  ## Reporting a bug
28
34
 
29
35
  Open a bug report and include the Bearing Lite version (or commit), how you
@@ -51,9 +57,8 @@ Useful local checks for documentation and contract tests (when present in the
51
57
  checkout):
52
58
 
53
59
  ```sh
54
- node --test test/diagram-sync.test.mjs
55
- node --test test/public-boundary.test.mjs
56
- node --test test/skills-conformance.test.mjs
60
+ node --test test/public-boundary.test.mjs test/skills-conformance.test.mjs
61
+ node --test test/*.test.mjs
57
62
  python3 test/schema-validation.py
58
63
  ```
59
64
 
package/README.md CHANGED
@@ -3,20 +3,85 @@
3
3
  [![npm](https://img.shields.io/npm/v/@alphazede/bearing-lite)](https://www.npmjs.com/package/@alphazede/bearing-lite)
4
4
  [![license](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE-APACHE)
5
5
 
6
- **Bearing Lite** (`@alphazede/bearing-lite`) is a skills-first Agent Plugin for
7
- planning, routing, bounded execution, and independent review of repository work.
8
- It ships portable skills, references, templates, and optional client hooks.
6
+ **Bearing Lite** (`@alphazede/bearing-lite`) is a skills-first [Agent
7
+ Plugins](https://agent-plugins.org/schemas/1.0.0/plugin.schema.json) package
8
+ that gives AI-assisted repository work a structured delivery lifecycle from
9
+ an owner-approved plan to an independently assessed result. It improves
10
+ repeatability and reduces hallucination risk through bounded
11
+ implementation, deterministic checks, verification, validation, independent
12
+ assurance, and traceable evidence. Planning artifacts and the Definition of
13
+ Done Manifest compare what AI was authorized to touch with actual changes,
14
+ supporting evidence, and unresolved gaps. It ships portable skills,
15
+ references, templates, and optional client adapters. An agent cannot certify
16
+ its own work. Owner Authority remains human-only. Bearing Lite was created
17
+ by William Rumph.
18
+
19
+ ## Situation
20
+
21
+ Teams now ask coding agents to change real repositories. The work needs a
22
+ visible plan, exact write sets, deterministic checks, and independent
23
+ assessment before anyone treats the result as done.
24
+
25
+ ## Complication
26
+
27
+ Unbounded agent sessions invent architecture, skip owner decisions, mix
28
+ implementation with self-review, and leave no comparable record of what was
29
+ authorized versus what changed.
30
+
31
+ ## Question
32
+
33
+ How can AI-assisted repository work follow one input-to-evidence path that
34
+ stays reviewable, portable, and bounded without pinning a provider?
35
+
36
+ ## Answer
37
+
38
+ Use the Bearing Delivery Lifecycle: Intake → Architectural Alignment → Scope Definition → Planning and Design, then owner authorization, bounded
39
+ implementation, Test Engineer assurance, Reviewer defect review, and
40
+ Integration Engineer execution assessment. Persistent configuration is
41
+ `~/.agents/bearing-lite/profiles.json` only. The Definition of Done Manifest
42
+ is the human-readable projection of planned versus actual work; it never
43
+ grants execution, acceptance, release, or deployment authority.
44
+
45
+ Focused pages:
46
+
47
+ - Explanation: [lifecycle guide](docs/guides/lifecycle.md)
48
+ - Reference: [roles and sessions](docs/guides/roles.md),
49
+ [lifecycle specification](docs/architecture/bearing-delivery-lifecycle.md)
50
+ - Troubleshooting: [wait, resume, and configuration](docs/guides/troubleshooting.md)
51
+ - Process diagrams:
52
+ [lifecycle context](docs/architecture/bearing-process/lifecycle-context.svg),
53
+ [planning and implementation](docs/architecture/bearing-process/lifecycle-process-views.svg)
9
54
 
10
- An agent cannot certify its own work. The stateful Router owns the planning
11
- conversation, visible Journey state, and Expedition sequencing. Crewmate and
12
- Explorer may continue in-wave when the envelope is unchanged. Independent
13
- assurance runs once at the end on the final integrated candidate. One repair
14
- may follow; it is verified deterministically without another review. Owner
15
- Authority remains human-only.
16
-
17
- Bearing Lite was created by William Rumph.
18
-
19
- ## Quick start with Pi
55
+ If Bearing Lite helps keep a long agent task scoped and reviewable,
56
+ [star the repository](https://github.com/alphazede/bearing-lite).
57
+
58
+ ## Onboarding
59
+
60
+ 1. Install the plugin or copy `skills/` into a host skills directory.
61
+ 2. Run **onboard-bearing**. It asks one setting at a time, never selects or
62
+ writes a value without an explicit instruction, and preserves every
63
+ unaddressed existing value.
64
+ 3. Configure named role and session routes, fallbacks, development strategy
65
+ (`single_implementer` or `tdd`), planning review, assurance cadence,
66
+ concurrency, the planning-to-implementation clean-session boolean, holds,
67
+ and optional Reverify. No value is preselected.
68
+ 4. If you decline Reverify or decline its download, onboard-bearing persists
69
+ `reverify.enabled: false` for that named profile and does not ask again
70
+ during ordinary Lifecycles.
71
+ 5. A leftover `~/.agents/bearing-lite/lineups.json` is not live configuration.
72
+ Runtime returns `MIGRATION_REQUIRED` until onboard-bearing migrates it.
73
+
74
+ The only persistent Bearing user configuration is
75
+ `~/.agents/bearing-lite/profiles.json`. Runtime never searches, merges,
76
+ prefers, or falls back to `lineups.json`.
77
+
78
+ Some agent harnesses may stall after delegated work completes. Before
79
+ restarting the task, check whether the assigned agent is still active and
80
+ avoid duplicate dispatch. Wait/status reliability varies by host and route;
81
+ use a host-native status check when one exists. Missing expensive models or
82
+ wrappers do not make a route ineligible.
83
+
84
+ ## Quick start
20
85
 
21
86
  Install the published skills package:
22
87
 
@@ -27,25 +92,27 @@ pi install npm:@alphazede/bearing-lite
27
92
  Then give your agent a real task:
28
93
 
29
94
  > Use Bearing Lite to add rate limiting to this API without changing its public
30
- > responses. Require one independent review at the end.
95
+ > responses. Require independent assurance at the configured cadence.
31
96
 
32
- Bearing Lite fills missing planning stages, then Map the Route creates the
33
- complete five-artifact package (`<journey-topic>-technical-plan.md`,
34
- `design.md`, `seit.json`, `implementation.json`, and two-state `review.html`)
35
- with proposed route, lineup, role states, reasoning, and at-end cadence. One
36
- integrated owner review approves or changes that package before bounded
37
- sessions dispatch, with visible Markdown task state over those JSON
38
- authorities.
39
-
40
- If Bearing Lite helps keep a long agent task scoped and reviewable,
41
- [star the repository](https://github.com/alphazede/bearing-lite). It helps other
42
- coding-agent users find it.
97
+ Bearing Lite fills missing planning stages, then Planning and Design creates
98
+ the complete five-artifact package (`<lifecycle-topic>-technical-plan.md`,
99
+ `design.md`, `seit.json`, `implementation.json`, and
100
+ `<plan-name>-dod-manifest.html`) with proposed route, profile, role states,
101
+ reasoning, and cadence. One integrated owner review approves or changes that
102
+ package before bounded sessions dispatch, with visible Markdown task state
103
+ over those JSON authorities.
43
104
 
44
105
  ## Install
45
106
 
46
107
  Install as a host plugin. The portable identity is always `bearing-lite` /
47
108
  `@alphazede/bearing-lite`. No postinstall script, global hook copy, or
48
- host-config mutation is required.
109
+ host-config mutation is required. Host-specific plugin manifests and
110
+ discovery remain host contracts; this README does not replace them.
111
+
112
+ ### Plugin with hooks
113
+
114
+ Claude Code, Codex, and Grok Build install from a local checkout and load
115
+ session-start activation and stop closeout hooks.
49
116
 
50
117
  ```sh
51
118
  # Claude Code
@@ -59,37 +126,69 @@ codex plugin add bearing-lite@bearing-lite
59
126
  # Grok Build
60
127
  grok plugin marketplace add /path/to/bearing-lite
61
128
  grok plugin install bearing-lite --trust
129
+ ```
130
+
131
+ ### UI or TUI plugin installation
132
+
133
+ These hosts install through their own UI or TUI. They are still plugin
134
+ clients, not a skills-only copy.
135
+
136
+ **Cursor.** Open Customize in the sidebar, find the plugin, and select
137
+ Install for a project or user scope. The shipped layout is
138
+ `.cursor-plugin/`. Cursor has no verified local-path plugin-install CLI.
139
+
140
+ **Kimi Code.** In the TUI, run `/plugins install /path/to/bearing-lite`.
141
+ Kimi Code has no `kimi plugin` CLI.
142
+
143
+ **GitHub Copilot in VS Code.** Run **Chat: Install Plugin From Source** from
144
+ the Command Palette and enter a Git repository URL such as
145
+ `https://github.com/alphazede/bearing-lite`. See [Agent plugins in VS
146
+ Code](https://code.visualstudio.com/docs/agent-customization/agent-plugins).
147
+ The package is Agent Plugins 1.0 `plugin.json` plus
148
+ `com.github.copilot/hooks/hooks.json`. There is no verified VS Code CLI
149
+ plugin-install command for Bearing.
62
150
 
63
- # Cursor
64
- # Add the checkout as a Cursor marketplace/plugin (.cursor-plugin/)
151
+ **GitHub Copilot CLI** was not available in the validation environment. This
152
+ README does not advertise a Copilot CLI install command.
65
153
 
66
- # Kimi Code
67
- # /plugins install /path/to/bearing-lite
154
+ ### Skills-only installation
68
155
 
156
+ AGY, Pi, DeepCode, and Muse Code load skills without command hooks.
157
+
158
+ ```sh
69
159
  # AGY (Antigravity) — install the .agy root, not the repo root
70
160
  agy plugin install /path/to/bearing-lite/.agy
71
161
 
72
- # Pi — skills package, no command hooks
162
+ # Pi — published skills package
73
163
  pi install npm:@alphazede/bearing-lite
74
164
 
75
- # DeepCodediscover the packaged skills through ~/.deepcode/skills or ~/.agents/skills;
76
- # DeepCode has no plugin-install or command-hook surface
165
+ # Muse Code no plugin subsystem; install each skill
166
+ for skill in /path/to/bearing-lite/skills/*/SKILL.md; do
167
+ muse skills install "$(dirname "$skill")" --scope user
168
+ done
77
169
  ```
78
170
 
79
- Claude Code, Codex, Grok Build, Cursor, and Kimi Code are **partial** hook
80
- clients: session start runs the activation advisory and stop runs the closeout
81
- advisory. AGY, Pi, and DeepCode are **skills-only**. Transition-order and
82
- protected-action checks stay in the skills on every host. Node.js must be on
83
- `PATH` for the hook adapters.
171
+ **DeepCode** has no plugin-install or command-hook surface. Copy `skills/`
172
+ into `~/.deepcode/skills` or `~/.agents/skills`.
173
+
174
+ Claude Code, Codex, Grok Build, Cursor, Kimi Code, and GitHub Copilot in VS
175
+ Code are **partial** hook clients: session start runs the activation
176
+ advisory and stop runs the closeout advisory. GitHub Copilot in VS Code also
177
+ has the implemented Test Engineering channels `PreToolUse`, `Stop`, and
178
+ `SubagentStop`. AGY, Pi, DeepCode, and Muse Code are **skills-only**.
179
+ Transition-order, protected-action, planning-review, and assurance-budget
180
+ checks stay procedural on every host. Node.js must be on `PATH` for the hook
181
+ adapters.
84
182
 
85
183
  Planning-review constraints live only in
86
184
  [`skills/bearing-lite/references/review-policy.md`](skills/bearing-lite/references/review-policy.md);
87
- the shared evaluator is `hooks/planning-review.cjs`. Journey-specific abstract
88
- slot IDs and owner-selected primary/ordered fallback route references belong
89
- only in the approved `lineup_snapshot`. Existing host mappings cannot safely
90
- derive the nested record from session events, so they preserve partial or
91
- skills-only coverage and apply this gate procedurally. Planning review is a
92
- pre-dispatch plan gate; implementation `max_assurance_rounds` remains separate.
185
+ the shared evaluator is `hooks/planning-review.cjs`. Lifecycle-specific
186
+ abstract slot IDs and owner-selected primary/ordered fallback route
187
+ references belong only in the approved profile snapshot. Existing host
188
+ mappings cannot safely derive the nested record from session events, so they
189
+ preserve partial or skills-only coverage and apply this gate procedurally.
190
+ Planning review is a pre-dispatch plan gate; implementation
191
+ `max_assurance_rounds` remains separate.
93
192
 
94
193
  **Skills-only copy** of `skills/` into a host skills directory does not
95
194
  register hooks. That path remains first-class. See
@@ -97,104 +196,95 @@ register hooks. That path remains first-class. See
97
196
 
98
197
  ## What it does
99
198
 
100
- 1. **Fill only missing planning stages:** Repository Fit Set Bearings Gather
101
- Supplies.
102
- 2. **Invoke Map the Route** after material intent is settled. It creates
103
- technical-plan, `design.md`, `seit.json`, `implementation.json`, and
104
- two-state `review.html` together.
199
+ 1. **Fill only missing planning stages:** IntakeArchitectural Alignment
200
+ Scope Definition.
201
+ 2. **Invoke Planning and Design** after material intent is settled. It creates
202
+ technical-plan, `design.md`, `seit.json`, `implementation.json`, and the
203
+ Definition of Done Manifest together.
105
204
  3. **Review once:** approve or change the proposed route, user-owned
106
- primary/fallback lineup, role states, reasoning, at-end cadence, and plan.
107
- 4. **Dispatch bounded sessions** with compact receipts. Crewmate and Explorer may
108
- continue in-wave; assurance always starts fresh at the end.
205
+ primary/fallback profile, role states, reasoning, cadence, and plan.
206
+ 4. **Dispatch bounded sessions** with compact receipts. Implementer and
207
+ Coordinator may continue in-wave; declared assurance starts fresh at the
208
+ configured cadence boundary.
109
209
  5. **Record state visibly.** The project's human-readable Markdown plan is the
110
210
  only task-state record: task blocks, task states, and their transitions. The
111
- Journey, execution, V&V, and authority records are machine-readable JSON
112
- validated against `schemas/`: `journey.json` (Journey identity, checkout
113
- lease, decisions, planning receipts, lineup selection), `seit.json` (V&V
211
+ Lifecycle, execution, V&V, and authority records are machine-readable JSON
212
+ validated against `schemas/`: `journey.json` (Lifecycle identity, checkout
213
+ lease, decisions, planning receipts, profile selection), `seit.json` (V&V
114
214
  proof rows), `implementation.json` (nested execution authority, waves,
115
- slices, dispatch), and `authority.json` (authority envelope). `review.html`
116
- and diagrams present state; like diagrams, they never authorize a
117
- transition, create state, or grant authority.
215
+ slices, dispatch), and `authority.json` (authority envelope). The Definition
216
+ of Done Manifest and diagrams present state; like diagrams, they never
217
+ authorize a transition, create state, or grant authority.
118
218
 
119
219
  Bearing Lite never selects models, providers, credentials, or launchers. The
120
220
  owner provides each role's primary/fallback agent or harness, model, and
121
- reasoning level in `~/.agents/bearing-lite/lineups.json`, then confirms
122
- the applicable Journey snapshot before implementation.
123
-
124
- ## Routes and scaling
125
-
126
- | Route | When | Cost |
127
- |---|---|---|
128
- | **Explorer Journey** | One bounded packet or one wave | Direct Crewmate or one Explorer |
129
- | **Expedition** | Multi-phase or concurrent independent lanes | Router sequences; Explorer owns waves |
221
+ reasoning level in `~/.agents/bearing-lite/profiles.json`, then confirms
222
+ the applicable Lifecycle snapshot before implementation.
130
223
 
131
- An **Explorer Journey** uses a direct Crewmate for one ready packet or one
132
- Explorer over a compact/sequential wave.
133
- **Expedition** lets the Router sequence waves so independent lanes
134
- stay small and sharp instead of degrading in one long context. Either shape can
135
- use substantial tokens; the product does not impose a default budget ceiling.
224
+ ## Roles and cadence
136
225
 
137
- ### Role routing (explanatory)
226
+ Owner questions follow [the owner-stop policy](skills/bearing-lite/references/owner-stops.md).
227
+ The integrated approval records bounded continuation with exclusions and expiry.
138
228
 
139
229
  Current routing diagram source: [`skills/bearing-lite/references/role-routing.mmd`](skills/bearing-lite/references/role-routing.mmd).
140
230
  The text below remains authoritative for clients that do not render Mermaid.
141
231
 
142
- **Authoritative text (vision optional):** Owner Authority remains human-only. The
143
- Bearing Lite Router is the stateful planning controller, not a work role. It
144
- invokes only missing planning stages, has Map the Route generate all five
145
- artifacts with proposed lineup and `review_cadence: at-end`, then presents one
146
- integrated owner review before dispatching an Explorer Journey or Expedition. Explorer
147
- coordinates proven-independent in-wave lanes without a nested coordinator.
148
- Assurance Test Engineer, Park Ranger, and Surveyor appear only when declared
149
- and only at the end on the final integrated candidate. Diagrams
232
+ **Authoritative text (vision optional):** Owner Authority remains human-only.
233
+ The Bearing Lite Orchestrator is the stateful planning controller, not a work
234
+ role. It invokes only missing planning stages, has Planning and Design
235
+ generate all five artifacts with proposed profile and cadence, then presents
236
+ one integrated owner review before dispatching bounded implementation.
237
+ Coordinator owns proven-independent in-wave lanes without a nested
238
+ coordinator. Assurance Test Engineer, Reviewer, and Integration Engineer
239
+ execution appear when declared at the configured cadence boundary. Diagrams
150
240
  explain orientation; they never authorize a transition.
151
241
 
152
- ## Roles and authority
153
-
154
- Owner questions follow [the owner-stop policy](skills/bearing-lite/references/owner-stops.md).
155
- The integrated approval records bounded continuation with exclusions and expiry.
156
- The Router applies approved policy and fallbacks, batches nonblocking questions,
157
- and continues ready independent work while dependent work waits. Approval shows
158
- the first-package summary or subsequent changes with the complete package available.
159
- Local receipt metrics distinguish questions, round trips, response intervals and
160
- fully blocked time; no telemetry leaves the checkout. The transition preflight
161
- and scheduling remain procedural, including on skills-only hosts. A legacy
162
- Journey without explicit timing coverage reports unavailable, not zero wait.
163
-
164
- | Role | What it is | Executes | Notes |
165
- |---|---|---|---|
166
- | **Router** | Stateful planning controller | no | User-facing; planning-state writer; Expedition sequencing |
167
- | **Navigator** | Compatibility diagnostic | no | Not a normal role; existing plans reroute to Router |
168
- | **Explorer** | One-wave controller | no | Dispatches Crewmates; owns proven-independent lanes |
169
- | **Crewmate** | Bounded implementer | yes | Split test-writing versus product; neither self-certifies |
170
- | **Light Implementer** | Mechanical implementer | yes | `work_class: light` slices only; verified by the packet's command; no repair loop |
171
- | **Scribe** | Event side lane | no | Transcribes; cannot activate authority |
172
- | **Plan Integrator** | Artifact reconciliation | no | Generates `implementation.json` and `review.html` |
173
- | **Systems Modeler** | Engineering views | no | After requirements; before design finalization |
174
- | **Integration Engineer** | Progressive assembly | no | Dual planning and execution sessions |
175
- | **Test Engineer** | Planning and Assurance V&V | no | Retires Validator; Validator is not an active role |
176
- | **Park Ranger** | Defect review | no | Consumes Assurance Test Engineer; no routine TE |
177
- | **Surveyor** | User-facing acceptance | no | Read-only RE, SysML Modeling, and TE |
178
- | **Owner Authority** | Human decision | n/a | Never an agent role |
242
+ | Role | Sessions | Primary work |
243
+ |---|---|---|
244
+ | **Orchestrator** | planning control | User-facing; planning-state writer; wave sequencing. Observed, not selected. |
245
+ | **Intake** | planning | Confirms repository and plan directory |
246
+ | **Architectural Alignment** | planning | Workspace map and architecture extract |
247
+ | **Scope Definition** | planning | One owner question at a time |
248
+ | **Planning and Design** | planning | Five-artifact package |
249
+ | **Requirements Engineer** | planning | Quality gate when a register applies |
250
+ | **Systems Modeler** | planning | After requirements; before design finalization |
251
+ | **Plan Integrator** | planning | Mechanical assembly; no new judgment |
252
+ | **Coordinator** | implementation | One-wave controller; proven-independent lanes |
253
+ | **Implementer** | implementation | Split Test Implementer / Product Implementer; neither self-certifies |
254
+ | **Light Implementer** | implementation | `work_class: light` slices only |
255
+ | **Scribe** | planning and implementation | Transcribes; cannot activate authority |
256
+ | **Test Engineer** | planning and assurance sessions | Planning Test Engineer authors V&V; Assurance Test Engineer assesses the candidate. Default assurance cadence: `phase` |
257
+ | **Reviewer** | implementation review | Independent defect review. Default cadence: `phase` |
258
+ | **Integration Engineer** | planning and execution sessions | Planning owns assembly strategy; execution owns final system-level validation. Default execution cadence: `lifecycle` |
259
+ | **Owner Authority** | human decision | Never an agent role |
260
+ | **onboard-bearing** | configuration | One-setting-at-a-time profile writes; no credentials |
261
+
262
+ Cadence values are `slice`, `phase`, or `lifecycle`. Defaults are `phase` for
263
+ Test Engineer assurance, `phase` for Reviewer, and `lifecycle` for Integration
264
+ Engineer execution. A declared boundary runs each enabled session once, allows
265
+ one aggregated repair, then uses deterministic closure without automatic
266
+ rereview.
267
+
268
+ `single_implementer` is the speed default: one Implementer writes product
269
+ changes plus tests. `tdd` orders Test Implementer before Product Implementer
270
+ for a behavior-changing slice. Independent dependency-ready slices may run
271
+ concurrently when write sets and mutable resources do not overlap.
179
272
 
180
273
  **Independent review:** a candidate author never provides their own Assurance
181
- Test Engineer, Park Ranger, or Surveyor verdict.
274
+ Test Engineer, Reviewer, or Integration Engineer execution verdict.
182
275
 
183
276
  Public Bearing Lite remains usable without AlphaZede-specific skills
184
277
  (`requirements-engineering`, `sysml-modeling`, `test-engineering`,
185
278
  `integration-engineering`). Specialized capabilities activate when selected
186
- or required. Unavailability of a selected-or-required capability is a typed capability gap,
187
- not success and not invented behavior. Selected-only missing and required-only
188
- missing are each typed gaps. Only unselected and unrequired absence remains
189
- inactive / not a global failure.
279
+ or required. Unavailability of a selected-or-required capability is a typed capability gap, not success and not invented behavior. Selected-only missing and required-only missing are each typed gaps. Only unselected and unrequired absence remains inactive / not a global failure.
190
280
 
191
281
  Failure escalates to the nearest role whose scope can see it:
192
282
 
193
283
  | Failure scope | Escalates to |
194
284
  |---|---|
195
- | Within one slice or packet | Explorer or nearest parent |
196
- | Across slices in a wave | Explorer |
197
- | Across waves or phases | Router |
285
+ | Within one slice or packet | Coordinator or nearest parent |
286
+ | Across slices in a wave | Coordinator |
287
+ | Across waves or phases | Orchestrator |
198
288
  | Contract, security, or authority change | Owner Authority |
199
289
 
200
290
  ## Task state (explanatory)
@@ -212,19 +302,21 @@ Ordinary execution corrections remain bounded. The assurance gate allows one
212
302
  review-directed repair, followed by deterministic coordinator verification and
213
303
  no second review. Diagrams never create state or authorize transitions.
214
304
 
215
- `hooks/reconcile.cjs` deterministically applies evidence events to Journey state.
216
- It is a short-lived Router-run invocation, not a daemon or host event adapter;
217
- hosts emit no events today, so invocation remains a procedural limitation.
218
- It observes merge and issue closure but never grants acceptance, merges, or closes issues.
305
+ `hooks/reconcile.cjs` deterministically applies evidence events to Lifecycle
306
+ state. It is a short-lived Orchestrator-run invocation, not a daemon or host
307
+ event adapter; hosts emit no events today, so invocation remains a procedural
308
+ limitation. It observes merge and issue closure but never grants acceptance,
309
+ merges, or closes issues.
219
310
 
220
311
  ## Implementation process (explanatory)
221
312
 
222
313
  Default packet completion is author self-check plus coordinator confirmation.
223
- Declared independent assurance runs once at the end. A repairable
224
- verdict permits one repair; deterministic coordinator verification then closes
225
- the gate without another review. Once the Journey is `COMPLETE`, an already
226
- authorized deployment proceeds with operational checks and rollback readiness,
227
- not a new assurance round. Source-changing deployment work is separate work.
314
+ Declared independent assurance runs at the configured cadence boundary. A
315
+ repairable verdict permits one repair; deterministic coordinator verification
316
+ then closes the gate without another review. Once the Lifecycle is `COMPLETE`,
317
+ an already authorized deployment proceeds with operational checks and rollback
318
+ readiness, not a new assurance round. Source-changing deployment work is
319
+ separate work.
228
320
 
229
321
  ```mermaid
230
322
  flowchart LR
@@ -241,11 +333,11 @@ flowchart LR
241
333
 
242
334
  | Path | Purpose |
243
335
  |---|---|
244
- | `plugin.json` | Agent Plugins v1.0.0 manifest |
245
- | `skills/` | Router, planning stages, and role skills |
246
- | `hooks/` | Four portable class adapters plus the verified Claude Code / Codex mapping |
247
- | `lineups.json` | Empty shipped catalog; no packaged providers, models, or defaults |
248
- | `schemas/` | JSON Schema for `seit.json`, `implementation.json`, `authority.json`, and `journey.json` |
336
+ | `plugin.json` | Agent Plugins 1.0 manifest ([schema](https://agent-plugins.org/schemas/1.0.0/plugin.schema.json)) |
337
+ | `skills/` | Orchestrator, planning stages, and role skills |
338
+ | `hooks/` | Portable class adapters plus verified host mappings |
339
+ | `profiles.json` | Empty shipped catalog; no packaged providers, models, or defaults |
340
+ | `schemas/` | JSON Schema for `seit.json`, `implementation.json`, `authority.json`, `journey.json`, and `profiles.json` |
249
341
  | `README.md` and governance docs | Public product and conduct surfaces |
250
342
 
251
343
  There is no `mcp.json`, `bin` entrypoint, postinstall, or runtime dependency on
@@ -261,7 +353,8 @@ default route, or launcher. Owners and clients choose how to satisfy each role.
261
353
 
262
354
  Issues and carefully scoped pull requests help. See
263
355
  [CONTRIBUTING.md](CONTRIBUTING.md). Everyone is covered by the
264
- [Code of Conduct](CODE_OF_CONDUCT.md).
356
+ [Code of Conduct](CODE_OF_CONDUCT.md). Release notes and acknowledgements are
357
+ in [docs/releases/](docs/releases/announcement.md).
265
358
 
266
359
  ## Security
267
360
 
@@ -0,0 +1,33 @@
1
+ {
2
+ "description": "Bearing Lite GitHub Copilot / VS Code mapping. Partial coverage: SessionStart activation, Stop closeout, te_test_write on PreToolUse, and te_completion on Stop and SubagentStop. Transition-order and protected-action remain procedural on this host.",
3
+ "hooks": {
4
+ "SessionStart": [
5
+ {
6
+ "type": "command",
7
+ "command": "node \"${PLUGIN_ROOT}/hooks/com.anthropic.claude-code/host.cjs\""
8
+ }
9
+ ],
10
+ "PreToolUse": [
11
+ {
12
+ "type": "command",
13
+ "command": "node \"${PLUGIN_ROOT}/hooks/te-host.cjs\" --host=copilot"
14
+ }
15
+ ],
16
+ "Stop": [
17
+ {
18
+ "type": "command",
19
+ "command": "node \"${PLUGIN_ROOT}/hooks/com.anthropic.claude-code/host.cjs\""
20
+ },
21
+ {
22
+ "type": "command",
23
+ "command": "node \"${PLUGIN_ROOT}/hooks/te-host.cjs\" --host=copilot"
24
+ }
25
+ ],
26
+ "SubagentStop": [
27
+ {
28
+ "type": "command",
29
+ "command": "node \"${PLUGIN_ROOT}/hooks/te-host.cjs\" --host=copilot"
30
+ }
31
+ ]
32
+ }
33
+ }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  /**
4
- * Per-declared-phase-or-wave assurance budget (ROUTER-EMV-CADENCE-IMPLEMENTATION-001).
4
+ * Per-declared-cadence-unit assurance budget (ROUTER-EMV-CADENCE-IMPLEMENTATION-001).
5
5
  * Exact runtime mirror of `skills/bearing-lite/references/assurance-policy.md`.
6
6
  * A pure evaluator behind the existing `transition` class, like planning-review.cjs:
7
7
  * it declares no HOOK_CLASS and registers no host event.
@@ -30,15 +30,34 @@ function readJson(file) {
30
30
  }
31
31
  }
32
32
 
33
+ function idsFrom(list, key) {
34
+ if (!Array.isArray(list)) return [];
35
+ return list.map((item) => item && item[key]).filter((id) => typeof id === "string" && id);
36
+ }
37
+
38
+ function lifecycleId(declaration) {
39
+ const settings = isPlainObject(declaration.journey_settings) ? declaration.journey_settings : {};
40
+ if (typeof settings.lifecycle_id === "string" && settings.lifecycle_id) return settings.lifecycle_id;
41
+ if (typeof declaration.lifecycle_id === "string" && declaration.lifecycle_id) {
42
+ return declaration.lifecycle_id;
43
+ }
44
+ if (typeof declaration.journey === "string" && declaration.journey) return declaration.journey;
45
+ if (isPlainObject(declaration.journey) && typeof declaration.journey.id === "string" && declaration.journey.id) {
46
+ return declaration.journey.id;
47
+ }
48
+ return "";
49
+ }
50
+
33
51
  /** Declared unit ids from the frozen declaration, in declaration order. */
34
- function declaredUnits(declaration) {
35
- const waves = Array.isArray(declaration.waves) ? declaration.waves : [];
36
- const waveIds = waves.map((wave) => wave && wave.id).filter((id) => typeof id === "string" && id);
52
+ function declaredUnits(declaration, unitKind) {
53
+ if (unitKind === "slice") return idsFrom(declaration.slices, "id");
54
+ if (unitKind === "lifecycle") {
55
+ const id = lifecycleId(declaration);
56
+ return id ? [id] : [];
57
+ }
58
+ const waveIds = idsFrom(declaration.waves, "id");
37
59
  if (waveIds.length) return waveIds;
38
- const phases = Array.isArray(declaration.phases) ? declaration.phases : [];
39
- const phaseIds = phases
40
- .map((phase) => phase && phase.phaseId)
41
- .filter((id) => typeof id === "string" && id);
60
+ const phaseIds = idsFrom(declaration.phases, "phaseId");
42
61
  if (phaseIds.length) return phaseIds;
43
62
  return [DIRECT];
44
63
  }
@@ -54,9 +73,12 @@ function evaluateAssuranceBudget(input) {
54
73
  if (!isPlainObject(input)) {
55
74
  return verdict("NEEDS_MORE_EVIDENCE", "assurance_request_missing");
56
75
  }
76
+ const sliceRequested = input.request_scope === "slice" || input.unit_kind === "slice";
77
+ const cadence = typeof input.cadence === "string" ? input.cadence : POLICY.default_cadence?.["test_engineer.assurance"] || "phase";
57
78
  if (
58
- POLICY.automatic_per_slice_review === "prohibited" &&
59
- (input.request_scope === "slice" || input.unit_kind === "slice")
79
+ sliceRequested &&
80
+ (POLICY.automatic_per_slice_review === "prohibited" ||
81
+ (POLICY.automatic_per_slice_review === "cadence_gated" && cadence !== "slice"))
60
82
  ) {
61
83
  return verdict("OWNER_AMENDMENT_REQUIRED", "automatic_per_slice_review_prohibited");
62
84
  }
@@ -85,7 +107,7 @@ function evaluateAssuranceBudget(input) {
85
107
  return verdict("NEEDS_MORE_EVIDENCE", "task_record_journey_mismatch");
86
108
  }
87
109
 
88
- const declared = declaredUnits(declaration);
110
+ const declared = declaredUnits(declaration, input.unit_kind);
89
111
  const requested =
90
112
  typeof input.assurance_unit === "string" && input.assurance_unit
91
113
  ? input.assurance_unit