@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.
- package/CONTRIBUTING.md +11 -6
- package/README.md +224 -131
- package/com.github.copilot/hooks/hooks.json +33 -0
- package/hooks/assurance-budget.cjs +33 -11
- package/hooks/com.anthropic.claude-code/mapping.md +35 -16
- package/hooks/plan-package.cjs +5 -4
- package/hooks/policy.cjs +10 -4
- package/hooks/profiles.cjs +119 -0
- package/hooks/te-host.cjs +40 -5
- package/hooks/transition-order.cjs +12 -4
- package/hooks/verification.cjs +358 -0
- package/package.json +6 -3
- package/plugin.json +2 -34
- package/profiles.json +1 -0
- package/schemas/implementation.schema.json +204 -5
- package/schemas/journey.schema.json +3 -3
- package/schemas/profiles.schema.json +359 -0
- package/schemas/verification.schema.json +126 -0
- package/skills/{set-bearings → architectural-alignment}/SKILL.md +17 -13
- package/skills/{set-bearings → architectural-alignment}/templates/workspace.md +1 -1
- package/skills/bearing-lite/SKILL.md +22 -22
- package/skills/bearing-lite/references/assurance-policy.md +32 -16
- package/skills/bearing-lite/references/lineups.md +7 -110
- package/skills/bearing-lite/references/owner-stops.md +13 -13
- package/skills/bearing-lite/references/peer-synthesis.md +11 -12
- package/skills/bearing-lite/references/profiles.md +149 -0
- package/skills/bearing-lite/references/resume.md +30 -0
- package/skills/bearing-lite/references/review-policy.md +3 -3
- package/skills/bearing-lite/references/role-routing.mmd +14 -14
- package/skills/bearing-lite/references/task-state.md +10 -10
- package/skills/bearing-lite/references/task-state.mmd +2 -2
- package/skills/bearing-lite/references/verification.md +52 -0
- package/skills/bearing-lite/templates/task.md +29 -28
- package/skills/{explorer → coordinator}/SKILL.md +16 -16
- package/skills/{crewmate → implementer}/SKILL.md +17 -15
- package/skills/{repository-fit → intake}/SKILL.md +10 -9
- package/skills/integration-engineer/SKILL.md +17 -12
- package/skills/light-implementer/SKILL.md +6 -5
- package/skills/onboard-bearing/SKILL.md +46 -0
- package/skills/plan-integrator/SKILL.md +14 -14
- package/skills/{map-the-route → planning-and-design}/SKILL.md +27 -27
- package/skills/{map-the-route → planning-and-design}/references/artifact-grammar.md +29 -27
- package/skills/prompt/SKILL.md +245 -0
- package/skills/requirements-engineer/SKILL.md +11 -11
- package/skills/{park-ranger → reviewer}/SKILL.md +16 -13
- package/skills/{gather-supplies → scope-definition}/SKILL.md +13 -13
- package/skills/scribe/SKILL.md +8 -8
- package/skills/systems-modeler/SKILL.md +5 -3
- package/skills/test-engineer/SKILL.md +16 -13
- package/templates/dod-manifest-v1.html +648 -0
- package/tools/render-dod-manifest.mjs +1743 -0
- package/lineups.json +0 -1
- package/schemas/lineups.schema.json +0 -145
- package/skills/navigator/SKILL.md +0 -36
- package/skills/surveyor/SKILL.md +0 -48
- package/skills/validator/SKILL.md +0 -37
- 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/`,
|
|
20
|
-
the public governance documents. There is no CLI binary,
|
|
21
|
-
control room, or hidden runtime state to maintain for
|
|
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/
|
|
55
|
-
node --test test
|
|
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
|
[](https://www.npmjs.com/package/@alphazede/bearing-lite)
|
|
4
4
|
[](LICENSE-APACHE)
|
|
5
5
|
|
|
6
|
-
**Bearing Lite** (`@alphazede/bearing-lite`) is a skills-first Agent
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
95
|
+
> responses. Require independent assurance at the configured cadence.
|
|
31
96
|
|
|
32
|
-
Bearing Lite fills missing planning stages, then
|
|
33
|
-
complete five-artifact package (`<
|
|
34
|
-
`design.md`, `seit.json`, `implementation.json`, and
|
|
35
|
-
with proposed route,
|
|
36
|
-
integrated owner review approves or changes that
|
|
37
|
-
sessions dispatch, with visible Markdown task state
|
|
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
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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
|
|
162
|
+
# Pi — published skills package
|
|
73
163
|
pi install npm:@alphazede/bearing-lite
|
|
74
164
|
|
|
75
|
-
#
|
|
76
|
-
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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`.
|
|
88
|
-
slot IDs and owner-selected primary/ordered fallback route
|
|
89
|
-
only in the approved
|
|
90
|
-
derive the nested record from session events, so they
|
|
91
|
-
skills-only coverage and apply this gate procedurally.
|
|
92
|
-
pre-dispatch plan gate; implementation
|
|
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:**
|
|
101
|
-
|
|
102
|
-
2. **Invoke
|
|
103
|
-
technical-plan, `design.md`, `seit.json`, `implementation.json`, and
|
|
104
|
-
|
|
199
|
+
1. **Fill only missing planning stages:** Intake → Architectural 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
|
|
107
|
-
4. **Dispatch bounded sessions** with compact receipts.
|
|
108
|
-
continue in-wave; assurance
|
|
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
|
-
|
|
112
|
-
validated against `schemas/`: `journey.json` (
|
|
113
|
-
lease, decisions, planning receipts,
|
|
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).
|
|
116
|
-
and diagrams present state; like diagrams, they never
|
|
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/
|
|
122
|
-
the applicable
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
143
|
-
Bearing Lite
|
|
144
|
-
invokes only missing planning stages, has
|
|
145
|
-
artifacts with proposed
|
|
146
|
-
integrated owner review before dispatching
|
|
147
|
-
|
|
148
|
-
Assurance Test Engineer,
|
|
149
|
-
|
|
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
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
|
165
|
-
|
|
166
|
-
| **
|
|
167
|
-
| **
|
|
168
|
-
| **
|
|
169
|
-
| **
|
|
170
|
-
| **
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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,
|
|
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 |
|
|
196
|
-
| Across slices in a wave |
|
|
197
|
-
| Across waves or phases |
|
|
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
|
|
216
|
-
It is a short-lived
|
|
217
|
-
hosts emit no events today, so invocation remains a procedural
|
|
218
|
-
It observes merge and issue closure but never grants acceptance,
|
|
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
|
|
224
|
-
verdict permits one repair; deterministic coordinator verification
|
|
225
|
-
the gate without another review. Once the
|
|
226
|
-
authorized deployment proceeds with operational checks and rollback
|
|
227
|
-
not a new assurance round. Source-changing deployment work is
|
|
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
|
|
245
|
-
| `skills/` |
|
|
246
|
-
| `hooks/` |
|
|
247
|
-
| `
|
|
248
|
-
| `schemas/` | JSON Schema for `seit.json`, `implementation.json`, `authority.json`, and `
|
|
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-
|
|
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
|
-
|
|
36
|
-
|
|
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
|
|
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
|
-
|
|
59
|
-
(
|
|
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
|