@alphazede/bearing-lite 0.1.10 → 0.2.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 (46) hide show
  1. package/CONTRIBUTING.md +25 -0
  2. package/README.md +76 -32
  3. package/hooks/assurance-budget.cjs +167 -0
  4. package/hooks/closeout.cjs +64 -15
  5. package/hooks/com.anthropic.claude-code/host.cjs +8 -11
  6. package/hooks/com.anthropic.claude-code/mapping.md +88 -2
  7. package/hooks/com.cursor/hooks.json +11 -1
  8. package/hooks/hooks.json +45 -1
  9. package/hooks/planning-review.cjs +99 -0
  10. package/hooks/te-capability.cjs +137 -0
  11. package/hooks/te-host.cjs +620 -0
  12. package/hooks/transition-order.cjs +45 -2
  13. package/lineups.json +1 -0
  14. package/package.json +9 -4
  15. package/plugin.json +1 -1
  16. package/schemas/authority.schema.json +75 -0
  17. package/schemas/implementation.schema.json +127 -0
  18. package/schemas/journey.schema.json +88 -0
  19. package/schemas/lineups.schema.json +145 -0
  20. package/schemas/seit.schema.json +108 -0
  21. package/skills/bearing-lite/SKILL.md +39 -46
  22. package/skills/bearing-lite/agents/openai.yaml +1 -1
  23. package/skills/bearing-lite/references/assurance-policy.md +66 -0
  24. package/skills/bearing-lite/references/lineups.md +81 -0
  25. package/skills/bearing-lite/references/peer-synthesis.md +8 -4
  26. package/skills/bearing-lite/references/review-policy.md +37 -0
  27. package/skills/bearing-lite/references/role-routing.mmd +10 -10
  28. package/skills/bearing-lite/references/task-state.md +6 -6
  29. package/skills/bearing-lite/references/task-state.mmd +1 -1
  30. package/skills/bearing-lite/templates/default-role-lineup.md +11 -3
  31. package/skills/bearing-lite/templates/task.md +75 -21
  32. package/skills/crewmate/SKILL.md +26 -17
  33. package/skills/explorer/SKILL.md +35 -34
  34. package/skills/gather-supplies/SKILL.md +9 -2
  35. package/skills/integration-engineer/SKILL.md +41 -0
  36. package/skills/map-the-route/SKILL.md +48 -36
  37. package/skills/map-the-route/references/artifact-grammar.md +94 -35
  38. package/skills/navigator/SKILL.md +18 -41
  39. package/skills/park-ranger/SKILL.md +24 -16
  40. package/skills/plan-integrator/SKILL.md +37 -0
  41. package/skills/scribe/SKILL.md +34 -0
  42. package/skills/surveyor/SKILL.md +22 -15
  43. package/skills/systems-modeler/SKILL.md +35 -0
  44. package/skills/test-engineer/SKILL.md +46 -0
  45. package/skills/validator/SKILL.md +20 -25
  46. package/skills/validator/references/grading-rubric.md +5 -4
@@ -3,51 +3,44 @@ name: bearing-lite
3
3
  description: Bearing Lite Router for Journeys. Not for ordinary work, assigned packets, implementation, or publication.
4
4
  ---
5
5
 
6
- The Router alone writes Journey planning state and owns owner conversation;
7
- planning nodes return owner questions. No second start confirmation, `.bearing`,
8
- or hidden ledger. plugin hosts are partial; skill-copy is skills-only.
6
+ The 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.
9
8
 
10
- 1. Say `Preparing this Journey.` Inventory visible nonterminal Journeys; acquire or
11
- resume a generation-bound checkout lease before any planning write or dispatch.
12
- A live same-checkout competitor returns `WAITING_ON` with sanitized competing identity;
13
- Distinct explicitly approved compatible worktrees may proceed.
14
- 2. New Journey: recommend Explorer Journey or Expedition with reason; say when
15
- the other fits. Ask exactly: `What Journey shall
16
- we Embark on—an Explorer Journey or an Expedition?`
17
- 3. On resume, keep the same lease generation and next incomplete stage. Parent-proven
18
- same-Journey progress refreshes `candidate_revision` on that generation.
19
- Never replay accepted stages or duplicate a dispatch.
20
- 4. If `~/.agents/bearing-lite/default-role-lineup.md` is absent, create a
21
- proposed copy from `templates/default-role-lineup.md`; confirm one role at a
22
- time. Never infer identity values.
23
- 5. Run one missing stage in order: Repository Fit → Set Bearings → Gather
24
- Supplies. The Router holds every owner conversation inline; Gather Supplies
25
- is a Router-led interview, never dispatched. Dispatch a fresh session only
26
- for bounded mechanical legwork (mapping, drafting) after stage intent is
27
- clear, on a cheaper lower-reasoning model than the Router; integrate returns.
28
- 6. Before Map the Route, display each role's primary/fallback, model, reasoning,
29
- and active/standby/unused state. Ask `Is this a
30
- good lineup for the roles on this Journey?`; never choose. Recommend cadence
31
- with a reason plus one cheaper and one more expensive alternative stating
32
- what each gives up or buys. Ask `Where should the single independent
33
- review run—after a slice, after an integrated round, or at the end?`
34
- 7. Record route, lineup, and cadence before task mapping; if declined, record the named default explicitly.
35
- The recorded snapshot is authoritative for this Journey. Later edits to
36
- `~/.agents/bearing-lite/default-role-lineup.md` have no effect on it. Replace
37
- only through an explicit owner-confirmed dated visible amendment. Invoke Map the Route with the snapshot.
38
- 8. Every ready node gets a fresh session with lineup identity from the recorded snapshot.
9
+ 1. Say `Preparing this Journey.` Acquire or resume a generation-bound checkout lease before
10
+ planning or dispatch. A live same-checkout competitor returns `WAITING_ON` with sanitized identity.
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. If `~/.agents/bearing-lite/default-role-lineup.md` is absent, create a
14
+ proposed copy; never infer identity values. The recorded snapshot is authoritative for this Journey.
15
+ Later edits to
16
+ `~/.agents/bearing-lite/default-role-lineup.md` have no effect on it except through an
17
+ explicit owner-confirmed dated visible amendment. Dispatch uses lineup identity from the recorded snapshot.
18
+ 4. Run Repository Fit Set Bearings → Gather Supplies; unresolved material intent blocks Map the Route.
19
+ 5. Invoke Map the Route after settled intent. Do not ask for lineup or route
20
+ before it; carry owner-supplied lineup and `review_cadence: at-end` as proposals.
21
+ Follow `references/lineups.md` for catalog selection and save.
22
+ 6. Enforce `references/review-policy.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; regenerate changes.
25
+ Never add a staged lineup or route-review gate.
26
+ Dispatch only after approval.
27
+ 7. Crewmate and Explorer may continue in-wave.
28
+ Use the visible wave receipt and update implementation and review once per wave.
39
29
 
40
- Return `READY`, `WAITING_ON`, `OWNER_DECISION_REQUIRED`, or `COMPLETE`. Fallback
41
- requires primary unavailability; both failing returns to owner. Allow three
42
- evidence-changing corrections outside assurance. `max_assurance_rounds` is 1
43
- per Journey; the sole review may authorize one repair. Direct route checks
44
- `assurance_rounds`; Navigator is not required. After repair, run deterministic
45
- coordinator verification and close the gate without another review. Failed repair
46
- or scope change returns `OWNER_DECISION_REQUIRED` naming the candidate and count.
47
- Only a separately scoped new Journey resets the review allowance.
48
- `COMPLETE` ends Bearing assurance: authorized deployment keeps deployment checks
49
- and rollback readiness without reopening review. Candidate-changing deployment
50
- work starts a new Journey. release the checkout lease exactly once on `COMPLETE`
51
- or `CANCELLED`. Recover by explicit recorded generation increment; it cannot steal a live lease.
52
- Process discovery cannot replace the lease. Never implement,
53
- self-assure, select models, or publish.
30
+ Return `READY`, `WAITING_ON`, `OWNER_DECISION_REQUIRED`, or `COMPLETE`.
31
+ `max_assurance_rounds` is 1 per declared phase or wave-end, not per Journey;
32
+ Direct route checks `assurance_rounds`, never
33
+ dispatch Navigator, and one review may authorize one repair. Verify repair
34
+ deterministically without another review; failed repair/scope change returns
35
+ `OWNER_DECISION_REQUIRED` naming the candidate and count. `COMPLETE` ends Bearing assurance.
36
+ Authorized deployment without reopening review.
37
+ Planning review is a separate pre-dispatch gate; it never consumes implementation
38
+ `required_assurance`, `assurance_rounds`, or `max_assurance_rounds`.
39
+ Release the lease once: release the checkout lease exactly once on `COMPLETE` or `CANCELLED`;
40
+ recovery needs explicit recorded generation increment.
41
+ Recovery cannot steal a live lease.
42
+ Selected or required capabilities activate. Unavailability of selected-or-required
43
+ capability is a typed capability gap, not success and not invented behavior.
44
+ Selected-only missing and required-only missing are typed gaps. Unselected
45
+ and unrequired absence remains inactive, not a global failure.
46
+ Never implement, self-assure, select models, or publish.
@@ -1,7 +1,7 @@
1
1
  interface:
2
2
  display_name: "Bearing Lite"
3
3
  short_description: "Route a stateful repository Journey"
4
- default_prompt: "Use $bearing-lite to start or resume this Journey, resolve planning one stage at a time, confirm the lineup and review cadence, then dispatch fresh bounded sessions."
4
+ default_prompt: "Use $bearing-lite to start or resume this Journey, resolve planning one stage at a time, confirm the lineup, record at-end review, then dispatch bounded sessions."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: false
@@ -0,0 +1,66 @@
1
+ # Assurance budget policy
2
+
3
+ Decision source: `OWNER-EMV-REVIEW-CADENCE-UNIFICATION-001` through
4
+ `ROUTER-EMV-CADENCE-IMPLEMENTATION-001`.
5
+
6
+ The implementation assurance budget is scoped to each **declared phase or
7
+ wave**, not to the Journey and not to a slice. Automatic review is dispatched
8
+ at the end of each declared phase or wave. `hooks/assurance-budget.cjs` is the
9
+ exact runtime mirror of the block below; the block is authoritative.
10
+
11
+ ```json
12
+ {
13
+ "budget_scope": "per_declared_phase_or_wave",
14
+ "review_rounds": 1,
15
+ "aggregated_repairs_max": 1,
16
+ "post_repair_gate": "deterministic_PASS",
17
+ "automatic_phase_or_wave_end_review": "required",
18
+ "automatic_per_slice_review": "prohibited",
19
+ "post_repair_rereview": "prohibited",
20
+ "automatic_rereview_of_same_unit": "prohibited",
21
+ "budget_reset_on_candidate_change": false,
22
+ "budget_reset_on_model_change": false,
23
+ "budget_reset_on_harness_change": false,
24
+ "budget_reset_on_role_change": false,
25
+ "budget_reset_on_session_change": false,
26
+ "budget_reset_on_resume": false,
27
+ "budget_reset_on_alias_or_rename": false,
28
+ "budget_reset_condition": "next_distinct_declared_phase_or_wave_present_in_the_frozen_declaration"
29
+ }
30
+ ```
31
+
32
+ ## Unit identity
33
+
34
+ Budget identity is `journey + unit_kind + unit_id`. The unit id is resolved
35
+ from the frozen declaration: `waves[].id`, else `phases[].phaseId`, else the
36
+ single `direct` sentinel when neither is declared. A unit id absent from the
37
+ frozen declaration fails closed as `undeclared_review_unit`; renaming a
38
+ declared unit's display name never mints a fresh budget.
39
+
40
+ The budget key
41
+ records no route, provider, model, harness, account, or agent identity.
42
+ Candidate revision, lease generation, assigned role, session, and
43
+ slice id are likewise never key components, and none of them lowers a spent
44
+ count.
45
+
46
+ ## Spending the budget
47
+
48
+ - One review round per declared phase or wave. A second round on the same unit
49
+ halts with `assurance_round_limit`.
50
+ - A repairable verdict permits at most one aggregate repair. A second repair
51
+ halts with `assurance_repair_limit`.
52
+ - After that repair the coordinator closes the unit on a deterministic `PASS`
53
+ gate; a missing or non-`PASS` gate halts with
54
+ `deterministic_post_repair_gate_required`.
55
+ - The repaired unit is never reviewed again. `automatic_rereview_requested` and
56
+ `review_after_repair` both require an owner amendment.
57
+ - A transport receipt of `WAITING_ON` or `UNAVAILABLE` is not a spent round; it
58
+ returns `NEEDS_MORE_EVIDENCE`.
59
+ - The next distinct declared phase or wave carries its own budget.
60
+
61
+ ## Planning review stays separate
62
+
63
+ Planning review is a separate pre-dispatch gate with its own 1/1 allowance in
64
+ `references/review-policy.md`. It never consumes implementation
65
+ `required_assurance`, `assurance_rounds`, or `max_assurance_rounds`, and this
66
+ budget never consumes the planning gate.
@@ -0,0 +1,81 @@
1
+ # Named lineup catalog
2
+
3
+ Candidate procedure for the user-owned JSON catalog. It is not a staged
4
+ lineup or route-review gate. Selection is not an authority grant.
5
+
6
+ ## Location
7
+
8
+ The live user catalog is exactly one file:
9
+
10
+ `<absolute home>/.agents/bearing-lite/lineups.json`
11
+
12
+ Resolve `<absolute home>` as a nonempty absolute `HOME`, else a nonempty
13
+ absolute `USERPROFILE` on its platform; otherwise fail closed with
14
+ `home_unresolved`. Do not use cwd, the package root, XDG, a relative
15
+ `lineups.json`, or a second search root.
16
+
17
+ The packaged catalog is package-root `lineups.json`. Never read it as user
18
+ data. Never write the packaged catalog, including resolved symlink aliases
19
+ of that file.
20
+
21
+ Missing user file means no named profiles. Do not auto-create the live
22
+ catalog. An empty `lineups` object is valid and is not an error. A
23
+ malformed unused catalog cannot override explicit inline owner choices.
24
+
25
+ ## Validity
26
+
27
+ Named selection and save require a valid catalog. Bind
28
+ `schemas/lineups.schema.json` Draft 2020-12 validation before named
29
+ selection or save. That schema is the validation document, not a second
30
+ search root for user data. Do not add a runtime catalog library.
31
+
32
+ On load and on save, inspect raw object members first. Reject duplicate
33
+ raw JSON keys; do not silently collapse. Then parse and apply Draft 2020-12
34
+ validation against package-root `schemas/lineups.schema.json`. Fail closed
35
+ as follows even when the schema cannot express the check:
36
+
37
+ - Reject duplicate role assignments within each phase.
38
+ - Reject ASCII case-fold collisions on both load and save. Do not trim
39
+ or case-fold names.
40
+ - Defaults keys must resolve exactly. Unresolved defaults fail closed.
41
+ - Invalid structure or name fails closed on both load and save.
42
+
43
+ Refuse named selection or save on any of those failures. Do not invent a
44
+ fallback profile and do not read packaged bytes as user data.
45
+
46
+ ## Selection
47
+
48
+ Explicit inline owner choices require no catalog lookup and no extra
49
+ confirmation. Consume them as already explicit.
50
+
51
+ A named choice needs a valid catalog and an exact selected key. Do not trim
52
+ or case-fold the name. Independent planning and implementation selections
53
+ remain separate; the owner may pick two names, one name twice, or inline on
54
+ either side.
55
+
56
+ Optional user `defaults.planning` and `defaults.implementation` are
57
+ recommendations requiring selection or confirmation. They are never a silent
58
+ grant and not an authority grant. Do not apply them without that
59
+ confirmation. Do not invent a packaged default.
60
+
61
+ Copy selected entries into the Journey snapshot as a frozen snapshot copy.
62
+ Preserve fallback array order. Bind a SHA-256 configuration digest of that
63
+ frozen snapshot copy. Digest that copy only: selected entries with fallback
64
+ order and selection sources. Exclude N/K/C, review cadence, route, and
65
+ authority. Canonical JSON: UTF-8, sort_keys, compact separators.
66
+ Later catalog edits do not mutate the frozen snapshot copy or its digest.
67
+
68
+ ## Save
69
+
70
+ Save only on explicit owner request. Never save this Journey as a side
71
+ effect of selection, freeze, or routing.
72
+
73
+ Create versus replace: if replace is already explicit, do not ask again;
74
+ otherwise preview the selected-entry replacement and confirm. Create must
75
+ not overwrite an existing exact key. Replace updates only that key.
76
+
77
+ Preserve unrelated valid keys and defaults. Refuse changed-input overwrite.
78
+ Use a safe atomic update (sibling temp file, then rename).
79
+
80
+ Do not write N/K/C, review cadence, route, or authority into catalog
81
+ entries.
@@ -10,10 +10,14 @@ copy peer text, runtimes, state stores, or authority assumptions.
10
10
  | Repository Fit | [Kiro steering](https://kiro.dev/docs/steering/) | verified workspace and explicit global/workspace scope |
11
11
  | Set Bearings | [Kiro steering](https://kiro.dev/docs/steering/) | durable human-readable workspace context |
12
12
  | Gather Supplies | [Matt Pocock grilling](https://github.com/mattpocock/skills/blob/main/skills/productivity/grilling/SKILL.md) | relentless dependency-ordered interview, one recommended question at a time |
13
- | Map the Route | [Kiro Quick Spec](https://kiro.dev/docs/specs/quick-spec/) and [GitHub Spec Kit](https://github.com/github/spec-kit/blob/main/workflows/speckit/workflow.yml) | staged requirements/design/tasks and explicit gates |
14
- | Navigator | LangChain subagents | central sequencing, context isolation, and conflict-aware wave integration |
13
+ | Map the Route | [Kiro Quick Spec](https://kiro.dev/docs/specs/quick-spec/) and [GitHub Spec Kit](https://github.com/github/spec-kit/blob/main/workflows/speckit/workflow.yml) | technical-plan, design.md, seit.json, implementation.json, two-state review.html |
14
+ | Navigator | compatibility diagnostic | unused on new Journeys; Router owns sequencing |
15
15
  | Explorer | LangChain subagents | bounded worker dispatch, proven-independent lane coordination, and result integration |
16
- | Crewmate | Spec Kit implement step | bounded execution after approved planning |
17
- | Validator | Spec Kit gate | evidence gate on a stable candidate |
16
+ | Crewmate | Spec Kit implement step | bounded execution after approved planning; split test-writing versus product |
17
+ | Scribe | event side lane | transcribes; cannot activate authority |
18
+ | Plan Integrator | Spec Kit tasks gate | reconciles five artifacts; generates implementation.json and review.html |
19
+ | Systems Modeler | MBSE view selection | after requirements; before design finalization |
20
+ | Integration Engineer | assembly method | dual planning and execution sessions |
21
+ | Test Engineer | Spec Kit gate | Planning and Assurance sessions; Validator absent from active roles |
18
22
  | Park Ranger | LangChain reviewer subagent | independent defect review with a typed return |
19
23
  | Surveyor | Spec Kit review gate | outcome comparison before completion |
@@ -0,0 +1,37 @@
1
+ # Planning review policy
2
+
3
+ This machine-readable block is the single declarative authority for
4
+ planning-review constraints. `hooks/planning-review.cjs` exports its runtime
5
+ mirror; focused tests require an exact match. Changing these bounds needs
6
+ an explicit owner amendment. This policy records no route, provider, model,
7
+ harness, account, or agent identity.
8
+
9
+ ```json
10
+ {
11
+ "reviewer_slots_min": 2,
12
+ "reviewer_slots_max": 2,
13
+ "independence_required": true,
14
+ "isolated_findings_until_aggregation": true,
15
+ "candidate_fields": ["candidate_ref", "candidate_revision", "candidate_digest"],
16
+ "shared_candidate_required": true,
17
+ "review_rounds": 1,
18
+ "aggregated_repairs_max": 1,
19
+ "post_repair_gate": "deterministic_PASS",
20
+ "automatic_rereview": "prohibited",
21
+ "slot_exhaustion_outcome": "FAIL_ROUND",
22
+ "terminal_outcomes": ["HALT", "OWNER_AMENDMENT_REQUIRED"]
23
+ }
24
+ ```
25
+
26
+ Map the Route writes the separate Journey binding in the approved lineup
27
+ snapshot. It lists unique abstract `slot_id` values, each slot's owner-selected
28
+ `primary_route_ref`, and ordered `fallback_route_refs`. Each receipt records a
29
+ distinct selected route from its slot. All receipts bind to the same non-empty
30
+ candidate ref, revision, and digest. Exhausting any slot
31
+ returns `FAIL_ROUND`. Candidate or independence mismatch, a second round or
32
+ repair, or a missing deterministic PASS after repair returns `HALT`. Automatic
33
+ confirmation or rereview returns `OWNER_AMENDMENT_REQUIRED`.
34
+
35
+ This gate reviews planning artifacts before dispatch. It never invokes a
36
+ reviewer. Implementation assurance remains governed separately by
37
+ `max_assurance_rounds` and task `required_assurance` / `assurance_rounds`.
@@ -1,21 +1,21 @@
1
1
  flowchart TD
2
2
  O[Owner Authority] <--> R[Stateful Bearing Lite Router]
3
- R --> J{Explorer Journey or Expedition?}
4
3
  R --> P{Next missing planning stage?}
5
4
  P -->|Repository Fit| PF[Fresh Repository Fit]
6
5
  P -->|Set Bearings| SB[Fresh Set Bearings]
7
6
  P -->|Gather Supplies| GS[Fresh Gather Supplies]
8
7
  P -->|Map the Route| MR[Fresh Map the Route]
9
- PF & SB & GS & MR -->|typed return| R
10
- R --> L[Owner confirms lineup and review cadence]
11
- J -->|Explorer Journey: one packet| C[Fresh Crewmate]
12
- J -->|Explorer Journey: one wave| E[Fresh Explorer]
13
- J -->|Expedition| N[Fresh Navigator]
14
- N --> E
8
+ PF & SB & GS -->|typed return| R
9
+ R --> MR
10
+ MR -->|five artifacts with proposed route, lineup, role states, reasoning, cadence| I{One integrated owner review}
11
+ I -->|change| MR
12
+ I -->|approve Explorer Journey: one packet| C[Crewmate may continue in-wave]
13
+ I -->|approve Explorer Journey: one wave| E[Explorer may continue in-wave]
14
+ I -->|approve Expedition: Router sequences waves| E
15
15
  E --> C
16
- C --> A{Selected cadence boundary?}
17
- A -->|Validator declared| V[Fresh Validator]
16
+ C --> A{Declared phase or wave end candidate?}
17
+ A -->|Assurance Test Engineer declared| V[Fresh Assurance Test Engineer]
18
18
  A -->|Park Ranger declared| PK[Fresh Park Ranger]
19
19
  A -->|Surveyor declared| S[Fresh Surveyor]
20
20
  A -->|not yet| E
21
- V & PK & S -->|typed verdict| R
21
+ V & PK & S -->|compact receipt| R
@@ -11,10 +11,10 @@ The project's human-readable plan is the only task-state record. Diagrams explai
11
11
  | `WAITING_ON` | Parent coordinator | Named prerequisite, checkout-lease conflict, or independent-assurance dispatch unavailable |
12
12
  | `IN_PROGRESS` | Assigned worker or coordinator | Assigned action is being performed |
13
13
  | `EVIDENCE_READY` | Parent coordinator | Candidate and evidence ready for next missing assurance |
14
- | `VALIDATING` | Validator | Evidence sufficiency under validation |
14
+ | `VALIDATING` | Assurance Test Engineer | Evidence sufficiency under validation |
15
15
  | `REVIEWING` | Park Ranger when required | Independent defect review active |
16
16
  | `ACCEPTANCE` | Surveyor, Owner Authority, or parent coordinator when `required_assurance` is `none` | User-facing acceptance or coordinator completion confirmation is active |
17
- | `CORRECTION_REQUIRED` | Navigator or nearest parent coordinator | Agent-owned in-authority correction required |
17
+ | `CORRECTION_REQUIRED` | Router or nearest parent coordinator | Agent-owned in-authority correction required |
18
18
  | `OWNER_DECISION_REQUIRED` | Owner Authority | Authority, scope, security, or replacement-path judgment required |
19
19
  | `COMPLETE` | Parent coordinator after assurance | Outcome and required assurance satisfied |
20
20
  | `CANCELLED` | Owner Authority or authorized parent | Task will not proceed |
@@ -27,7 +27,7 @@ The project's human-readable plan is the only task-state record. Diagrams explai
27
27
  - `IN_PROGRESS` → `EVIDENCE_READY` with candidate and handoff; → `CORRECTION_REQUIRED` on correctable failure; → `OWNER_DECISION_REQUIRED` on security, authority, or integrity guard.
28
28
  - `CORRECTION_REQUIRED` → `READY` on attempt 1 or 2 with a new hypothesis and evidence; → `OWNER_DECISION_REQUIRED` on the third failed correction or out-of-contract amendment.
29
29
  - `EVIDENCE_READY` → `VALIDATING` | `REVIEWING` | `ACCEPTANCE` for the next missing required role; → `WAITING_ON` if assurance dispatch is unavailable.
30
- - During the single assurance round, an accepted Validator or Park Ranger handoff returns to `EVIDENCE_READY` to select the next missing assurance role in declared order.
30
+ - During the single assurance round, an accepted Assurance Test Engineer or Park Ranger handoff returns to `EVIDENCE_READY` to select the next missing assurance role in declared order.
31
31
  - `VALIDATING` → `CORRECTION_REQUIRED` when more evidence or repair is needed; otherwise back through `EVIDENCE_READY` for remaining assurance.
32
32
  - `REVIEWING` → `CORRECTION_REQUIRED` | `EVIDENCE_READY` | `OWNER_DECISION_REQUIRED` by verdict.
33
33
  - `ACCEPTANCE` → `COMPLETE` when every required assurance accepted the same candidate; when `required_assurance` is `none`, parent-coordinator confirmation satisfies the assurance requirement; → `CORRECTION_REQUIRED` on acceptance gap.
@@ -36,11 +36,11 @@ The project's human-readable plan is the only task-state record. Diagrams explai
36
36
  ## Ownership rules
37
37
 
38
38
  - One parent coordinator writes each task block and its transitions.
39
- - Navigator alone writes cross-wave dependencies and Expedition-wide sequencing.
39
+ - Router alone writes cross-wave dependencies and Expedition-wide sequencing.
40
40
  - Workers and assurance roles return handoffs; they do not race plan edits.
41
- - Candidate authors never provide their own Validator, Park Ranger, or Surveyor verdict.
41
+ - Candidate authors never provide their own Assurance Test Engineer, Park Ranger, or Surveyor verdict.
42
42
  - Waiting on a prerequisite consumes no correction attempt. Each task has its own three-attempt correction counter; identical retries without new evidence are invalid.
43
- - One Journey receives at most one assurance round and one review-directed repair. Replacement candidates do not reset the count. The coordinator verifies that repair deterministically and does not dispatch assurance again.
43
+ - Each declared phase or wave receives at most one assurance round and one review-directed repair. Replacement candidates do not reset the count within that declared unit; the next distinct declared phase or wave carries its own 1/1 budget. The coordinator verifies that repair deterministically and does not dispatch assurance again.
44
44
  - `COMPLETE` is terminal for Bearing assurance. An already authorized deployment keeps operational verification and rollback readiness but does not reopen review; candidate-changing deployment work requires separate scope.
45
45
 
46
46
  ## Checkout lease
@@ -12,7 +12,7 @@ stateDiagram-v2
12
12
  IN_PROGRESS --> OWNER_DECISION_REQUIRED
13
13
  CORRECTION_REQUIRED --> READY
14
14
  CORRECTION_REQUIRED --> OWNER_DECISION_REQUIRED: third failed correction
15
- EVIDENCE_READY --> VALIDATING: Validator required
15
+ EVIDENCE_READY --> VALIDATING: Assurance Test Engineer required
16
16
  EVIDENCE_READY --> REVIEWING: Park Ranger required
17
17
  EVIDENCE_READY --> ACCEPTANCE: Surveyor, owner, or coordinator when required_assurance is none
18
18
  EVIDENCE_READY --> WAITING_ON: assurance dispatch unavailable
@@ -6,19 +6,27 @@ implementation and asks whether it is good for the current Journey. Never fill
6
6
  agent, model, or reasoning values on the user's behalf.
7
7
 
8
8
  ```markdown
9
- review_cadence: <per-slice | per-round | at-end>
9
+ review_cadence: at-end
10
10
 
11
11
  | Role | Primary agent/harness | Primary model | Primary reasoning | Fallback agent/harness | Fallback model | Fallback reasoning |
12
12
  | --- | --- | --- | --- | --- | --- | --- |
13
13
  | Router | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
14
- | Navigator | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
15
14
  | Explorer | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
16
15
  | Crewmate | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
17
- | Validator | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
16
+ | Test Engineer | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
17
+ | Scribe | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
18
+ | Plan Integrator | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
19
+ | Systems Modeler | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
20
+ | Integration Engineer | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
18
21
  | Park Ranger | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
19
22
  | Surveyor | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
20
23
  ```
21
24
 
25
+ Navigator is not a normal lineup role. Existing plans that still assign it use
26
+ the Navigator compatibility diagnostic; treat the assignment as unused.
27
+ Validator is not a normal lineup role. Existing plans that still assign it use
28
+ the Validator compatibility diagnostic; treat the assignment as unused.
29
+
22
30
  Journey artifacts copy the confirmed values and mark named instances active,
23
31
  standby, or unused. Only verified primary unavailability activates its approved
24
32
  fallback. If both are unavailable, return `OWNER_DECISION_REQUIRED`.
@@ -2,29 +2,54 @@
2
2
 
3
3
  Use one compact Markdown block per task in the project's existing plan or progress document. Omit unused conditional fields. Prefer the project's format; add only missing fields. Do not create a Bearing-owned state file or hidden ledger.
4
4
 
5
- ## Journey settings (record before task mapping)
5
+ ## Journey settings
6
6
 
7
- Record these plan-level choices once, above the task blocks:
7
+ Map the Route records these plan-level proposals above the task blocks in the
8
+ complete five-artifact package. The integrated owner review approves or changes
9
+ the journey, lineup, role states, reasoning, cadence, and plan together; no
10
+ pre-Map lineup or route-review gate is allowed.
8
11
 
9
12
  ```markdown
10
13
  - journey: <Explorer Journey | Expedition>
11
- - review_cadence: <per-slice | per-round | at-end>
12
- - choice_basis: <owner-confirmed recommendation and reason>
13
- - lineup_snapshot: <named active, standby, and unused role instances>
14
+ - review_cadence: at-end
15
+ - choice_basis: <proposed recommendation and reason; owner-approved at integrated review>
16
+ - lineup_snapshot: <named implementation/assurance instances plus the planning_review binding below>
17
+ - planning_review:
18
+ - policy_ref: skills/bearing-lite/references/review-policy.md
19
+ - candidate_ref: <shared planning-package reference>
20
+ - candidate_revision: <shared planning-package revision>
21
+ - candidate_digest: <shared planning-package digest>
22
+ - reviewer_slots:
23
+ - slot_id: <abstract unique slot>
24
+ primary_route_ref: <owner-selected lineup route reference>
25
+ fallback_route_refs: [<ordered owner-selected route references>]
26
+ - round_number: 1
27
+ - completed_rounds: <0-1>
28
+ - receipts: <one isolated receipt per slot, including the distinct selected_route_ref>
29
+ - aggregated_repairs: <0-1>
30
+ - deterministic_gate: <PASS after repair; otherwise omitted>
14
31
  ```
15
32
 
16
- `review_cadence` selects where the Journey's single independent review runs,
17
- not task-level tests or author self-checks. Never infer it from
18
- `required_assurance` on an individual task. `per-slice` and `per-round` select
19
- one declared boundary; `at-end` selects the final integrated candidate. The
20
- Router asks the owner to confirm both the applicable lineup and boundary before
21
- implementation.
22
- `lineup_snapshot` is authoritative for this Journey after recording. Later
33
+ `review_cadence` is `at-end` for each declared phase or wave. The single
34
+ independent review runs on that unit's integrated candidate at its end, not at
35
+ a slice or round boundary, and not as
36
+ task-level tests or author self-checks. Never infer it from
37
+ `required_assurance` on an individual task. The proposal is visible in
38
+ `implementation.json` and `review.html`, then becomes authoritative only after
39
+ the integrated owner approval; do not offer `per-slice` or `per-round`.
40
+ `journey` stays a proposal until the mapped implementation graph exists and the
41
+ integrated owner review approves it. `lineup_snapshot` is authoritative after
42
+ that approval. Later
23
43
  edits to `~/.agents/bearing-lite/default-role-lineup.md` have no effect.
24
44
  Replace it only through an explicit owner-confirmed dated visible amendment.
25
45
  Record the amendment date beside the replacement values. Dispatch identities
26
46
  come from this snapshot, not from the current global defaults file.
27
47
 
48
+ Every configured planning-review slot uses the same candidate ref, revision,
49
+ and digest. Findings stay isolated until one aggregation. Slot exhaustion is
50
+ `FAIL_ROUND`; policy violations halt or require an owner amendment. The binding
51
+ does not populate `required_assurance` and does not dispatch reviewers.
52
+
28
53
  ## Checkout lease (record before any planning write)
29
54
 
30
55
  The Router's first write is this visible lease. Inventory nonterminal Journeys
@@ -53,6 +78,26 @@ same generation. `COMPLETE` or `CANCELLED` releases the lease exactly
53
78
  once. Stale recovery is explicit, recorded, increments generation, and cannot
54
79
  steal a live lease. Process discovery cannot replace this durable lease.
55
80
 
81
+ ## Wave receipt (record at wave start)
82
+
83
+ Continuations reuse this visible record beside the checkout lease. Validate at
84
+ wave start, after detected drift, and before commit — not before every
85
+ mutation. Resume from it; do not reread every accepted artifact or redispatch
86
+ completed slices.
87
+
88
+ ```markdown
89
+ - wave_receipt:
90
+ - wave: <wave id>
91
+ - lease_generation: <generation>
92
+ - branch: <branch>
93
+ - candidate_revision: <revision at last check>
94
+ - authority: <envelope>
95
+ - checked_at: <wave_start | external_change | commit>
96
+ ```
97
+
98
+ Stale, forged, or drifted receipts fail closed. Changed HEAD, authority,
99
+ generation, route, or writer overlap forces revalidation or a fresh session.
100
+
56
101
  ## Always present
57
102
 
58
103
  ```markdown
@@ -67,7 +112,7 @@ steal a live lease. Process discovery cannot replace this durable lease.
67
112
  Field rules:
68
113
 
69
114
  - `task_id` — stable identifier unique within the plan.
70
- - `outcome` — approved intent for this task only.
115
+ - `outcome` — approved intent for this task only. Never a role-return token and never copied into `verdict`.
71
116
  - `status` — one of `PROPOSED`, `READY`, `WAITING_ON`, `IN_PROGRESS`, `EVIDENCE_READY`, `VALIDATING`, `REVIEWING`, `ACCEPTANCE`, `CORRECTION_REQUIRED`, `OWNER_DECISION_REQUIRED`, `COMPLETE`, `CANCELLED`.
72
117
  - `assigned_role` — current role contract for the active step, or unassigned while proposing.
73
118
  - `depends_on` — list of other `task_id` values only, never prose.
@@ -78,23 +123,32 @@ Field rules:
78
123
  ```markdown
79
124
  - scope: <allowed paths, systems, and boundaries>
80
125
  - authority: <approved envelope; protected actions remain owner-only>
81
- - required_assurance: [Validator]
126
+ - required_assurance: [Assurance Test Engineer]
82
127
  ```
83
128
 
84
- `required_assurance` lists only roles that must accept the same candidate (for example `Validator`, and `Park Ranger` or `Surveyor` when their triggers apply).
129
+ `required_assurance` lists only roles that must accept the same candidate (for example `Assurance Test Engineer`, and `Park Ranger` or `Surveyor` when their triggers apply).
130
+
131
+ test-writing Crewmate write set is tests and approved fixtures only. Product
132
+ write set excludes tests and must not weaken independently authored tests.
133
+ Neither self-certifies.
85
134
 
86
135
  ## After candidate work (add when evidence exists)
87
136
 
88
137
  ```markdown
89
138
  - candidate_ref: <strongest native revision or changed-path reference available>
90
- - evidence: <commands run, results observed, and inferences labeled separately>
91
- - assurance_rounds: <0-1 completed assurance rounds for this Journey>
139
+ - changed_paths: <paths changed in this candidate>
140
+ - tests: <commands run and observed results>
141
+ - findings: <labeled inferences and gaps>
142
+ - verdict: <closed role-return token>
143
+ - assurance_rounds: <0-1 completed assurance rounds for this declared phase or wave>
92
144
  ```
93
145
 
146
+ `verdict` is one of `ACCEPT`, `ACCEPT_WITH_FINDINGS`, `BLOCK`, `CANDIDATE_READY`, `FAIL`, `GAPS`, `NEEDS_MORE_EVIDENCE`, `OWNER_DECISION_REQUIRED`, `PARTIAL`, `PASS`, `READY`, `REPAIR_REQUIRED`, `REROUTED`, `WAITING_ON`. Do not copy task `outcome` into `verdict`.
94
147
  `candidate_ref` must not claim stronger provenance than the client can prove.
95
- `assurance_rounds` counts the Journey's single submission to required assurance
96
- against Bearing Lite `max_assurance_rounds`. A repair or replacement candidate
97
- does not reset it; only a separately scoped new Journey starts at 0. The parent
148
+ `assurance_rounds` counts this declared phase or wave's single submission to
149
+ required assurance against Bearing Lite `max_assurance_rounds`. A repair or
150
+ replacement candidate does not reset it; the next distinct declared phase or
151
+ wave carries its own budget. The parent
98
152
  coordinator writes the count before dispatch. If the review permits correction, spend at
99
153
  most one remaining `attempts` repair, run deterministic coordinator verification,
100
154
  and close the gate without another review. A failed repair or scope change
@@ -115,4 +169,4 @@ review. Any source or candidate change during deployment is separately scoped.
115
169
 
116
170
  ## Single-writer reminder
117
171
 
118
- Only the parent coordinator updates this block after rereading it. Crewmate, Validator, Park Ranger, and Surveyor return handoffs; the coordinator records transitions. Navigator alone changes cross-wave dependencies or global sequencing.
172
+ Only the parent coordinator updates this block after rereading it. Crewmate, Test Engineer, Park Ranger, and Surveyor return compact receipts (`verdict`, `candidate_ref`, `changed_paths`, `tests`, `findings`, `blocker`); the coordinator records transitions. Router alone changes cross-wave dependencies or global sequencing. Update `implementation.json` and `review.html` once per wave, plus owner-decision or blocker changes.