@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
@@ -2,10 +2,10 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://github.com/alphazede/bearing-lite/schemas/journey.schema.json",
4
4
  "title": "Bearing Lite journey.json",
5
- "description": "Append-only decisions and authority-event history plus the generation-bound checkout lease. The full mutable file digest is not the stable SEIT execution baseline. Extra lifecycle metadata is allowed at the document root. Lease identity fields stay closed.",
5
+ "description": "Append-only decisions and authority-event history plus the generation-bound checkout lease for a Bearing Lifecycle. The full mutable file digest is not the stable SEIT execution baseline. Extra lifecycle metadata is allowed at the document root. Lease identity fields stay closed. lineup_selection is not a live field; profile_selection is required.",
6
6
  "type": "object",
7
7
  "additionalProperties": true,
8
- "required": ["schema_version", "journey", "checkout_lease", "decisions", "open_decisions", "planning_receipts", "lineup_selection"],
8
+ "required": ["schema_version", "journey", "checkout_lease", "decisions", "open_decisions", "planning_receipts", "profile_selection"],
9
9
  "properties": {
10
10
  "schema_version": {"type": "string", "minLength": 1},
11
11
  "journey": {
@@ -91,7 +91,7 @@
91
91
  }
92
92
  },
93
93
  "planning_receipts": {"type": "array", "items": {"type": "object", "additionalProperties": true}},
94
- "lineup_selection": {"type": "object", "additionalProperties": true},
94
+ "profile_selection": {"type": "object", "additionalProperties": true},
95
95
  "owner_wait_tracking": {"type": "boolean", "description": "Explicit coverage marker; absence is unavailable, never zero owner wait."},
96
96
  "owner_blocked_intervals": {
97
97
  "type": "array",
@@ -0,0 +1,359 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/alphazede/bearing-lite/schemas/profiles.schema.json",
4
+ "title": "Bearing Lite profiles.json",
5
+ "description": "User-owned named profile catalog. Packaged bytes stay an empty catalog with no defaults. Selection is not an authority grant. Normal runtime never reads lineups.json or default-role-lineup.md.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema_version",
10
+ "profiles"
11
+ ],
12
+ "properties": {
13
+ "schema_version": {
14
+ "type": "integer",
15
+ "const": 1,
16
+ "description": "Integer 1. The string \"1\" used by Lifecycle artifacts is invalid here."
17
+ },
18
+ "profiles": {
19
+ "type": "object",
20
+ "description": "Named profiles. Empty object is valid. Unlimited keys; no maxProperties.",
21
+ "propertyNames": {
22
+ "type": "string",
23
+ "pattern": "^[A-Za-z][A-Za-z0-9_-]*$"
24
+ },
25
+ "additionalProperties": {
26
+ "$ref": "#/$defs/profile"
27
+ }
28
+ },
29
+ "defaults": {
30
+ "type": "object",
31
+ "description": "Optional user-owned recommendations. Not a grant.",
32
+ "additionalProperties": false,
33
+ "properties": {
34
+ "planning": {
35
+ "type": "string",
36
+ "minLength": 1
37
+ },
38
+ "implementation": {
39
+ "type": "string",
40
+ "minLength": 1
41
+ }
42
+ }
43
+ }
44
+ },
45
+ "$defs": {
46
+ "identity": {
47
+ "type": "object",
48
+ "additionalProperties": false,
49
+ "required": [
50
+ "harness",
51
+ "model",
52
+ "reasoning"
53
+ ],
54
+ "properties": {
55
+ "harness": {
56
+ "type": "string",
57
+ "minLength": 1
58
+ },
59
+ "model": {
60
+ "type": "string",
61
+ "minLength": 1
62
+ },
63
+ "reasoning": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ }
67
+ }
68
+ },
69
+ "fallback": {
70
+ "type": "object",
71
+ "additionalProperties": false,
72
+ "required": [
73
+ "condition",
74
+ "harness",
75
+ "model",
76
+ "reasoning"
77
+ ],
78
+ "properties": {
79
+ "condition": {
80
+ "type": "string",
81
+ "minLength": 1
82
+ },
83
+ "harness": {
84
+ "type": "string",
85
+ "minLength": 1
86
+ },
87
+ "model": {
88
+ "type": "string",
89
+ "minLength": 1
90
+ },
91
+ "reasoning": {
92
+ "type": "string",
93
+ "minLength": 1
94
+ }
95
+ }
96
+ },
97
+ "cadence": {
98
+ "type": "string",
99
+ "enum": [
100
+ "slice",
101
+ "phase",
102
+ "lifecycle"
103
+ ]
104
+ },
105
+ "route": {
106
+ "type": "object",
107
+ "additionalProperties": false,
108
+ "required": [
109
+ "enabled",
110
+ "primary",
111
+ "ordered_fallbacks"
112
+ ],
113
+ "properties": {
114
+ "enabled": {
115
+ "type": "boolean"
116
+ },
117
+ "primary": {
118
+ "$ref": "#/$defs/identity"
119
+ },
120
+ "ordered_fallbacks": {
121
+ "type": "array",
122
+ "items": {
123
+ "$ref": "#/$defs/fallback"
124
+ }
125
+ }
126
+ }
127
+ },
128
+ "reviewerRoute": {
129
+ "type": "object",
130
+ "additionalProperties": false,
131
+ "required": [
132
+ "enabled",
133
+ "primary",
134
+ "ordered_fallbacks"
135
+ ],
136
+ "properties": {
137
+ "enabled": {
138
+ "type": "boolean"
139
+ },
140
+ "primary": {
141
+ "$ref": "#/$defs/identity"
142
+ },
143
+ "ordered_fallbacks": {
144
+ "type": "array",
145
+ "items": {
146
+ "$ref": "#/$defs/fallback"
147
+ }
148
+ },
149
+ "cadence": {
150
+ "$ref": "#/$defs/cadence"
151
+ }
152
+ }
153
+ },
154
+ "assuranceSession": {
155
+ "type": "object",
156
+ "additionalProperties": false,
157
+ "required": [
158
+ "enabled",
159
+ "primary",
160
+ "ordered_fallbacks"
161
+ ],
162
+ "properties": {
163
+ "enabled": {
164
+ "type": "boolean"
165
+ },
166
+ "primary": {
167
+ "$ref": "#/$defs/identity"
168
+ },
169
+ "ordered_fallbacks": {
170
+ "type": "array",
171
+ "items": {
172
+ "$ref": "#/$defs/fallback"
173
+ }
174
+ },
175
+ "cadence": {
176
+ "$ref": "#/$defs/cadence"
177
+ }
178
+ }
179
+ },
180
+ "sessionedRole": {
181
+ "type": "object",
182
+ "additionalProperties": false,
183
+ "required": [
184
+ "sessions"
185
+ ],
186
+ "properties": {
187
+ "sessions": {
188
+ "type": "object",
189
+ "minProperties": 1,
190
+ "additionalProperties": false,
191
+ "properties": {
192
+ "planning": {
193
+ "$ref": "#/$defs/route"
194
+ }
195
+ }
196
+ }
197
+ }
198
+ },
199
+ "testEngineerRole": {
200
+ "type": "object",
201
+ "additionalProperties": false,
202
+ "required": [
203
+ "sessions"
204
+ ],
205
+ "properties": {
206
+ "sessions": {
207
+ "type": "object",
208
+ "minProperties": 1,
209
+ "additionalProperties": false,
210
+ "properties": {
211
+ "planning": {
212
+ "$ref": "#/$defs/route"
213
+ },
214
+ "assurance": {
215
+ "$ref": "#/$defs/assuranceSession"
216
+ }
217
+ }
218
+ }
219
+ }
220
+ },
221
+ "integrationEngineerRole": {
222
+ "type": "object",
223
+ "additionalProperties": false,
224
+ "required": [
225
+ "sessions"
226
+ ],
227
+ "properties": {
228
+ "sessions": {
229
+ "type": "object",
230
+ "minProperties": 1,
231
+ "additionalProperties": false,
232
+ "properties": {
233
+ "planning": {
234
+ "$ref": "#/$defs/route"
235
+ },
236
+ "execution": {
237
+ "$ref": "#/$defs/assuranceSession"
238
+ }
239
+ }
240
+ }
241
+ }
242
+ },
243
+ "profile": {
244
+ "type": "object",
245
+ "additionalProperties": false,
246
+ "required": [
247
+ "roles"
248
+ ],
249
+ "properties": {
250
+ "roles": {
251
+ "type": "object",
252
+ "additionalProperties": false,
253
+ "properties": {
254
+ "implementer": {
255
+ "$ref": "#/$defs/route"
256
+ },
257
+ "light_implementer": {
258
+ "$ref": "#/$defs/route"
259
+ },
260
+ "coordinator": {
261
+ "$ref": "#/$defs/route"
262
+ },
263
+ "reviewer": {
264
+ "$ref": "#/$defs/reviewerRoute"
265
+ },
266
+ "scribe": {
267
+ "$ref": "#/$defs/route"
268
+ },
269
+ "plan_integrator": {
270
+ "$ref": "#/$defs/route"
271
+ },
272
+ "systems_modeler": {
273
+ "$ref": "#/$defs/sessionedRole"
274
+ },
275
+ "test_engineer": {
276
+ "$ref": "#/$defs/testEngineerRole"
277
+ },
278
+ "integration_engineer": {
279
+ "$ref": "#/$defs/integrationEngineerRole"
280
+ },
281
+ "requirements_engineer": {
282
+ "$ref": "#/$defs/sessionedRole"
283
+ }
284
+ }
285
+ },
286
+ "development_strategy": {
287
+ "type": "object",
288
+ "additionalProperties": false,
289
+ "required": [
290
+ "mode"
291
+ ],
292
+ "properties": {
293
+ "mode": {
294
+ "type": "string",
295
+ "enum": [
296
+ "single_implementer",
297
+ "tdd"
298
+ ]
299
+ }
300
+ }
301
+ },
302
+ "planning_to_implementation_clean_session": {
303
+ "type": "boolean"
304
+ },
305
+ "concurrency": {
306
+ "type": "object",
307
+ "additionalProperties": false,
308
+ "properties": {
309
+ "dispatch_ready_independent_work": {
310
+ "type": "boolean"
311
+ },
312
+ "preserve_order_for_dependencies_interfaces_write_overlap_and_shared_mutable_resources": {
313
+ "type": "boolean"
314
+ }
315
+ }
316
+ },
317
+ "holds": {
318
+ "type": "array",
319
+ "items": {
320
+ "type": "object",
321
+ "additionalProperties": true,
322
+ "required": [
323
+ "id",
324
+ "effect"
325
+ ],
326
+ "properties": {
327
+ "id": {
328
+ "type": "string",
329
+ "minLength": 1
330
+ },
331
+ "effect": {
332
+ "type": "string",
333
+ "minLength": 1
334
+ }
335
+ }
336
+ }
337
+ },
338
+ "deterministic_verification": {
339
+ "type": "object",
340
+ "additionalProperties": false,
341
+ "properties": {
342
+ "reverify": {
343
+ "type": "object",
344
+ "additionalProperties": false,
345
+ "required": [
346
+ "enabled"
347
+ ],
348
+ "properties": {
349
+ "enabled": {
350
+ "type": "boolean"
351
+ }
352
+ }
353
+ }
354
+ }
355
+ }
356
+ }
357
+ }
358
+ }
359
+ }
@@ -0,0 +1,126 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/alphazede/bearing-lite/schemas/verification.schema.json",
4
+ "title": "Bearing Lite deterministic verification request and receipt",
5
+ "description": "DES-BDL-008 / AC-BDL-009. A request binds candidate, claim, backend, stage, authority, expected result, and command/configuration. A receipt binds the same candidate, claim, backend, version, command/configuration, and evidence digest. Schema validates structure only; hooks/verification.cjs enforces diagnostic-versus-assurance, independence, and gate eligibility. Extra lifecycle metadata is not allowed.",
6
+ "oneOf": [
7
+ { "$ref": "#/$defs/request" },
8
+ { "$ref": "#/$defs/receipt" }
9
+ ],
10
+ "$defs": {
11
+ "nonempty": {
12
+ "type": "string",
13
+ "minLength": 1
14
+ },
15
+ "sha256": {
16
+ "type": "string",
17
+ "pattern": "^[0-9a-f]{64}$"
18
+ },
19
+ "authority": {
20
+ "type": "string",
21
+ "enum": ["diagnostic", "assurance"]
22
+ },
23
+ "stage": {
24
+ "type": "string",
25
+ "enum": [
26
+ "implementation",
27
+ "integration",
28
+ "assurance",
29
+ "review",
30
+ "post_repair_closure"
31
+ ]
32
+ },
33
+ "status": {
34
+ "type": "string",
35
+ "enum": ["VERIFIED", "REFUTED", "INCONCLUSIVE", "ERROR"]
36
+ },
37
+ "expected_result": {
38
+ "type": "string",
39
+ "enum": ["VERIFIED", "REFUTED"]
40
+ },
41
+ "command_configuration": {
42
+ "type": "object",
43
+ "minProperties": 1,
44
+ "additionalProperties": true
45
+ },
46
+ "produced_by": {
47
+ "type": "object",
48
+ "additionalProperties": false,
49
+ "required": ["role", "identity", "session"],
50
+ "properties": {
51
+ "role": { "$ref": "#/$defs/nonempty" },
52
+ "identity": { "$ref": "#/$defs/nonempty" },
53
+ "session": { "$ref": "#/$defs/nonempty" }
54
+ }
55
+ },
56
+ "request": {
57
+ "type": "object",
58
+ "additionalProperties": false,
59
+ "required": [
60
+ "schema_version",
61
+ "kind",
62
+ "candidate_ref",
63
+ "candidate_revision",
64
+ "claim_id",
65
+ "claim_type",
66
+ "backend",
67
+ "stage",
68
+ "authority",
69
+ "expected_result",
70
+ "command_configuration",
71
+ "selected",
72
+ "required"
73
+ ],
74
+ "properties": {
75
+ "schema_version": { "type": "string", "const": "1" },
76
+ "kind": { "type": "string", "const": "request" },
77
+ "candidate_ref": { "$ref": "#/$defs/nonempty" },
78
+ "candidate_revision": { "$ref": "#/$defs/nonempty" },
79
+ "candidate_digest": { "$ref": "#/$defs/sha256" },
80
+ "claim_id": { "$ref": "#/$defs/nonempty" },
81
+ "claim_type": { "$ref": "#/$defs/nonempty" },
82
+ "backend": { "$ref": "#/$defs/nonempty" },
83
+ "stage": { "$ref": "#/$defs/stage" },
84
+ "authority": { "$ref": "#/$defs/authority" },
85
+ "expected_result": { "$ref": "#/$defs/expected_result" },
86
+ "command_configuration": { "$ref": "#/$defs/command_configuration" },
87
+ "selected": { "type": "boolean" },
88
+ "required": { "type": "boolean" }
89
+ }
90
+ },
91
+ "receipt": {
92
+ "type": "object",
93
+ "additionalProperties": false,
94
+ "required": [
95
+ "schema_version",
96
+ "kind",
97
+ "status",
98
+ "candidate_ref",
99
+ "candidate_revision",
100
+ "claim_id",
101
+ "backend",
102
+ "backend_version",
103
+ "command_configuration",
104
+ "evidence_digest",
105
+ "authority",
106
+ "produced_by"
107
+ ],
108
+ "properties": {
109
+ "schema_version": { "type": "string", "const": "1" },
110
+ "kind": { "type": "string", "const": "receipt" },
111
+ "status": { "$ref": "#/$defs/status" },
112
+ "candidate_ref": { "$ref": "#/$defs/nonempty" },
113
+ "candidate_revision": { "$ref": "#/$defs/nonempty" },
114
+ "candidate_digest": { "$ref": "#/$defs/sha256" },
115
+ "claim_id": { "$ref": "#/$defs/nonempty" },
116
+ "backend": { "$ref": "#/$defs/nonempty" },
117
+ "backend_version": { "$ref": "#/$defs/nonempty" },
118
+ "command_configuration": { "$ref": "#/$defs/command_configuration" },
119
+ "evidence_digest": { "$ref": "#/$defs/sha256" },
120
+ "authority": { "$ref": "#/$defs/authority" },
121
+ "produced_by": { "$ref": "#/$defs/produced_by" },
122
+ "stage": { "$ref": "#/$defs/stage" }
123
+ }
124
+ }
125
+ }
126
+ }
@@ -1,22 +1,22 @@
1
1
  ---
2
- name: set-bearings
2
+ name: architectural-alignment
3
3
  description: >
4
- Create or resume the visible Journey workspace and bounded repository map
5
- after Repository Fit is confirmed. Use for Set Bearings or stale project
6
- context. Do not use before fit, for owner decisions, design, implementation,
7
- hidden state, or deleting historical plans.
4
+ Create or resume the visible Lifecycle workspace and bounded repository map
5
+ after Intake is confirmed. Use for Architectural Alignment or stale
6
+ project context. Do not use before fit, for owner decisions, design,
7
+ implementation, hidden state, or deleting historical plans.
8
8
  ---
9
9
 
10
- # Set Bearings
10
+ # Architectural Alignment
11
11
 
12
- Fresh planning node. The Router announces `Setting Our Bearings in <repo>.`
12
+ Fresh planning node. The Orchestrator announces `Aligning architecture in <repo>.`
13
13
 
14
14
  ## Inputs and match
15
15
 
16
- - **Inputs:** confirmed repository root, owner-confirmed plan directory, Journey
16
+ - **Inputs:** confirmed repository root, owner-confirmed plan directory, Lifecycle
17
17
  title, visible existing artifacts, repository rules, and return schema.
18
- - **Match:** the workspace or repository map is missing or stale.
19
- - **Non-match:** both are current and usable by Gather Supplies or Map the Route.
18
+ - **Match:** the workspace, repository map, or architecture extract is missing or stale.
19
+ - **Non-match:** both are current and usable by Scope Definition or Planning and Design.
20
20
 
21
21
  ## Algorithm
22
22
 
@@ -30,13 +30,17 @@ Fresh planning node. The Router announces `Setting Our Bearings in <repo>.`
30
30
  root manifest, task runner, CI entrypoint, top-level instructions, and root
31
31
  test configs. Strictly prohibit discovery traversal into repo-relative
32
32
  `src/`, `lib/`, `vendor/`, and `docs/`.
33
- 4. If bounds are exhausted before required anchors are found, return
33
+ 4. Extract existing architecture covering the affected scope. If none exists or
34
+ evidence does not cover it, record that gap, establish minimum system context
35
+ from repository facts and owner intent, and activate Systems Modeler rather
36
+ than inventing architecture.
37
+ 5. If bounds are exhausted before required anchors are found, return
34
38
  `NEEDS_EVIDENCE` naming the missing anchor. Never compose unobserved commands.
35
- 5. Create missing plan directory or update `workspace.md` in place, preserving
39
+ 6. Create missing plan directory or update `workspace.md` in place, preserving
36
40
  existing recorded evidence and unrelated edits. Initialize a missing file
37
41
  from `templates/workspace.md`. Quote validation commands with source and mark
38
42
  `[observed, not run]`. Drop detail before Constraints and Unknowns.
39
- 6. Verify written paths remain inside authority and return `WORKSPACE_READY`.
43
+ 7. Verify written paths remain inside authority and return `WORKSPACE_READY`.
40
44
 
41
45
  ## Return and recovery
42
46
 
@@ -1,4 +1,4 @@
1
- # Workspace Environment: <journey-topic>
1
+ # Workspace Environment: <lifecycle-title>
2
2
 
3
3
  ## Repository Identity
4
4
  - Root: `<repository-root>`
@@ -1,35 +1,35 @@
1
1
  ---
2
2
  name: bearing-lite
3
- description: Bearing Lite Router for Journeys. Not for ordinary work, assigned packets, implementation, or publication.
3
+ description: Bearing Lite Orchestrator for Lifecycles. Not for ordinary work, assigned packets, implementation, or publication.
4
4
  ---
5
5
 
6
- Router alone writes Journey planning state, owns owner conversation, and owns Expedition sequencing;
7
- planning nodes return owner questions. Plugin hosts are partial; skill-copy is skills-only.
6
+ Orchestrator alone writes Lifecycle planning state, owns owner conversation, and owns
7
+ sequencing; planning nodes return owner questions. Plugin hosts are partial; skill-copy is skills-only.
8
8
 
9
- 1. Say `Preparing this Journey.` Acquire or resume a generation-bound checkout lease before
9
+ 1. Say `Preparing this Lifecycle.` Acquire or resume a generation-bound checkout lease before
10
10
  planning or dispatch. A live same-checkout competitor returns `WAITING_ON` with sanitized identity.
11
11
  2. Resume the next incomplete stage in the same generation; refresh `candidate_revision`.
12
- Never replay accepted stages or duplicate dispatch. Invalid leases fail closed.
13
- 3. Lineup comes only from `~/.agents/bearing-lite/lineups.json` per
14
- `references/lineups.md`; a missing catalog returns `no_named_profiles`,
15
- never a generated file; never infer identity values. The Router is observed, not selected.
16
- The recorded snapshot is authoritative for this Journey. Later edits to
17
- `~/.agents/bearing-lite/lineups.json` have no effect on it except through an
18
- explicit owner-confirmed dated visible amendment. Dispatch uses lineup identity from the recorded snapshot.
19
- 4. Run Repository Fit Set Bearings Gather Supplies; unresolved material intent blocks Map the Route.
20
- 5. Invoke Map the Route after settled intent. Do not ask for lineup or route
21
- before it; carry owner-supplied lineup and `review_cadence: at-end` as proposals.
12
+ One host-native liveness check classifies RUNNING, COMPLETED, INACTIVE, or UNKNOWN.
13
+ Never replay accepted stages or duplicate dispatch.
14
+ UNKNOWN without owner-requested resume returns `WAITING_ON`. Invalid leases fail closed.
15
+ 3. Profile comes only from `~/.agents/bearing-lite/profiles.json` per
16
+ `references/profiles.md`; a missing catalog returns `no_named_profiles`,
17
+ never a generated file; never infer identity values. A leftover user lineup
18
+ returns `MIGRATION_REQUIRED`. The Orchestrator is observed, not selected.
19
+ The recorded snapshot is authoritative for this Lifecycle. Later edits to
20
+ `~/.agents/bearing-lite/profiles.json` have no effect on it except through an
21
+ explicit owner-confirmed dated visible amendment. Dispatch uses that snapshot.
22
+ 4. Run Intake → Architectural Alignment → Scope Definition; unresolved material intent blocks Planning and Design.
23
+ 5. Invoke Planning and Design after settled intent. Do not ask for profile or route
24
+ before it; carry owner-supplied profile and cadence.
22
25
  6. Enforce `references/review-policy.md` and `references/owner-stops.md`. Show one integrated
23
- approval-or-change gate for outcome, design, route, lineup, role states,
24
- reasoning, cadence, and plan. Record the approved Journey type and snapshot.
25
- Never add a staged lineup or route-review gate.
26
- Dispatch only after approval.
27
- 7. Crewmate and Explorer may continue in-wave. `work_class: light` slices go to the
28
- Light Implementer; a `reclassify: judgement` return re-dispatches to the Crewmate.
29
- Use visible wave receipts and update implementation and review once per wave.
26
+ approval-or-change gate. Record the approved Lifecycle type and snapshot.
27
+ Never add a staged profile or route-review gate. Dispatch only after approval.
28
+ 7. Implementer and Coordinator may continue in-wave. `work_class: light` slices go to Light
29
+ Implementer; `reclassify: judgement` re-dispatches to Implementer. Use visible wave receipts and update implementation and DoD Manifest once per wave.
30
30
 
31
31
  Return `READY`, `WAITING_ON`, `OWNER_DECISION_REQUIRED`, or `COMPLETE`.
32
- `max_assurance_rounds` is 1 per declared phase or wave-end, not per Journey;
32
+ `max_assurance_rounds` is 1 per declared phase or wave-end, not per Lifecycle;
33
33
  Direct route checks `assurance_rounds`, never
34
34
  dispatch Navigator, and one review may authorize one repair. Verify repair
35
35
  deterministically without another review; failed repair/scope change returns