@alphazede/bearing-lite 0.1.1 → 0.1.9

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/README.md CHANGED
@@ -14,6 +14,27 @@ execution/correction round, or once at the end. Owner Authority remains human-on
14
14
 
15
15
  Bearing Lite was created by William Rumph.
16
16
 
17
+ ## Quick start with Pi
18
+
19
+ Install the published skills package:
20
+
21
+ ```sh
22
+ pi install npm:@alphazede/bearing-lite
23
+ ```
24
+
25
+ Then give your agent a real task:
26
+
27
+ > Use Bearing Lite to add rate limiting to this API without changing its public
28
+ > responses. Require one independent review at the end.
29
+
30
+ Bearing Lite asks whether the work is an Explorer Journey or an Expedition,
31
+ fills only the missing planning stages, confirms the agent lineup and review
32
+ cadence, and dispatches bounded sessions with visible Markdown state.
33
+
34
+ If Bearing Lite helps keep a long agent task scoped and reviewable,
35
+ [star the repository](https://github.com/alphazede/bearing-lite). It helps other
36
+ coding-agent users find it.
37
+
17
38
  ## Install
18
39
 
19
40
  Install as a host plugin. The portable identity is always `bearing-lite` /
@@ -43,7 +64,7 @@ grok plugin install bearing-lite --trust
43
64
  agy plugin install /path/to/bearing-lite/.agy
44
65
 
45
66
  # Pi — skills package, no command hooks
46
- pi install git:github.com/alphazede/bearing-lite
67
+ pi install npm:@alphazede/bearing-lite
47
68
  ```
48
69
 
49
70
  Claude Code, Codex, Grok Build, Cursor, and Kimi Code are **partial** hook
@@ -75,11 +96,11 @@ the applicable Journey snapshot before implementation.
75
96
  | Route | When | Cost |
76
97
  |---|---|---|
77
98
  | **Explorer Journey** | One bounded packet or one wave | Direct Crewmate or one Explorer |
78
- | **Expedition** | Multi-phase or concurrent independent lanes | Navigator; Trail Boss only for concurrent/conflicting waves |
99
+ | **Expedition** | Multi-phase or concurrent independent lanes | Navigator |
79
100
 
80
101
  An **Explorer Journey** uses a direct Crewmate for one ready packet or one
81
102
  Explorer over a compact/sequential wave.
82
- **Expedition** adds navigation (and sometimes a Trail Boss) so independent lanes
103
+ **Expedition** adds navigation so independent lanes
83
104
  stay small and sharp instead of degrading in one long context. Either shape can
84
105
  use substantial tokens; the product does not impose a default budget ceiling.
85
106
 
@@ -91,8 +112,9 @@ The text below remains authoritative for clients that do not render Mermaid.
91
112
  **Authoritative text (vision optional):** Owner Authority remains human-only. The
92
113
  Bearing Lite Router is the stateful planning controller, not a work role. It
93
114
  invokes only missing planning stages in fresh sessions, confirms the owner's
94
- lineup and cadence, then dispatches an Explorer Journey or Expedition. Nested
95
- Sub-Explorer opens only for proven-independent lanes. Validator, Park Ranger,
115
+ lineup and cadence, then dispatches an Explorer Journey or Expedition. Explorer
116
+ coordinates proven-independent in-wave lanes without a nested coordinator.
117
+ Validator, Park Ranger,
96
118
  and Surveyor appear only when declared and when the selected per-slice,
97
119
  per-round, or at-end boundary is reached. Diagrams explain orientation; they
98
120
  never authorize a transition.
@@ -102,10 +124,8 @@ never authorize a transition.
102
124
  | Role | What it is | Executes | Notes |
103
125
  |---|---|---|---|
104
126
  | **Router** | Stateful planning controller | no | User-facing; planning-state writer |
105
- | **Navigator** | Expedition orchestrator | no | Owns cross-wave sequencing |
106
- | **Trail Boss** | Multi-wave controller | no | Only concurrent or conflicting waves |
107
- | **Explorer** | One-wave controller | no | Dispatches Crewmates |
108
- | **Sub-explorer** | Nested lane controller | no | Only when lanes are proven independent |
127
+ | **Navigator** | Expedition orchestrator | no | Owns cross-wave sequencing and conflicts |
128
+ | **Explorer** | One-wave controller | no | Dispatches Crewmates; owns proven-independent lanes |
109
129
  | **Crewmate** | Bounded implementer | yes | Most hands-on work; exact write set |
110
130
  | **Validator** | Evidence sufficiency | no | Independent of the author |
111
131
  | **Park Ranger** | Defect review | no | Independent of the author |
@@ -120,21 +140,21 @@ Failure escalates to the nearest role whose scope can see it:
120
140
  | Failure scope | Escalates to |
121
141
  |---|---|
122
142
  | Within one slice or packet | Explorer or nearest parent |
123
- | Across slices in a wave | Trail Boss when present, else Navigator |
124
- | Across phases | Navigator |
143
+ | Across slices in a wave | Explorer |
144
+ | Across waves or phases | Navigator |
125
145
  | Contract, security, or authority change | Owner Authority |
126
146
 
127
147
  ## Task state (explanatory)
128
148
 
129
- ![Bearing Lite task state machine: PROPOSED through READY, IN_PROGRESS, EVIDENCE_READY, optional VALIDATING or REVIEWING, ACCEPTANCE, COMPLETE, with WAITING_ON, CORRECTION_REQUIRED, OWNER_DECISION_REQUIRED, and CANCELLED paths](skills/bearing-lite/assets/task-state.png)
130
-
131
- Reviewable Mermaid source: [`skills/bearing-lite/references/task-state.mmd`](skills/bearing-lite/references/task-state.mmd).
149
+ Current task-state diagram source: [`skills/bearing-lite/references/task-state.mmd`](skills/bearing-lite/references/task-state.mmd).
150
+ The text below remains authoritative for clients that do not render Mermaid.
132
151
  Authoritative transition rules: [`skills/bearing-lite/references/task-state.md`](skills/bearing-lite/references/task-state.md).
133
152
 
134
153
  **Authoritative summary:** The project's plan is the only task-state record.
135
154
  Normal progress is `PROPOSED` → `READY` → `IN_PROGRESS` → `EVIDENCE_READY`, then
136
155
  optional `VALIDATING` / `REVIEWING` when required, then `ACCEPTANCE` →
137
- `COMPLETE`. `WAITING_ON` holds for missing prerequisites or assurance dispatch.
156
+ `COMPLETE`. `WAITING_ON` holds for missing prerequisites, checkout-lease
157
+ conflict, or assurance dispatch.
138
158
  `CORRECTION_REQUIRED` allows two in-authority repairs; a third failed correction
139
159
  escalates to `OWNER_DECISION_REQUIRED`. Diagrams never create state or authorize
140
160
  transitions.
@@ -53,7 +53,8 @@ const TASK_MARK = /(?:^|\n)###\s*task_id:\s*\S+/;
53
53
  const TASK_LINE = /^###\s*task_id:\s*(\S+)\s*$/;
54
54
  const FIELD_LINE =
55
55
  /^-\s*(assigned_role|next_action|status|required_assurance|blocker|evidence|candidate_ref|scope|authority|outcome|depends_on|receiving_role|plan_ref|role|subject):\s*(.*)$/;
56
- const JOURNEY_LINE = /^-\s*journey:\s*(.+)$/i;
56
+ const JOURNEY_LINE = /^\s*-\s*journey:\s*(.+)$/i;
57
+ const LEASE_MARK = /^\s*-\s*checkout_lease:/m;
57
58
 
58
59
  const ACTIVATION_EVENTS = new Set([
59
60
  "SessionStart",
@@ -63,6 +64,7 @@ const ACTIVATION_EVENTS = new Set([
63
64
  "SubagentStart",
64
65
  ]);
65
66
  const CLOSEOUT_EVENTS = new Set(["Stop", "SubagentStop", "SessionEnd"]);
67
+ const STOP_CONTINUATION_EVENTS = new Set(["Stop", "SubagentStop"]);
66
68
 
67
69
  const EVENT_ALIASES = Object.freeze({
68
70
  sessionstart: "SessionStart",
@@ -212,9 +214,13 @@ function deriveContext(cwd) {
212
214
  } catch {
213
215
  continue;
214
216
  }
215
- if (!TASK_MARK.test(text) && !/^-\s*assigned_role:/m.test(text)) continue;
216
- planPresent = true;
217
217
  const parsed = parsePlanMarkdown(text);
218
+ const hasAssignedRole = /^-\s*assigned_role:/m.test(text);
219
+ const hasLease = LEASE_MARK.test(text);
220
+ if (!TASK_MARK.test(text) && !hasAssignedRole && !parsed.journey && !hasLease) {
221
+ continue;
222
+ }
223
+ planPresent = true;
218
224
  if (parsed.journey) journey = parsed.journey;
219
225
  for (const task of parsed.tasks) allTasks.push(task);
220
226
  }
@@ -248,6 +254,28 @@ function classForEvent(eventName) {
248
254
  return null;
249
255
  }
250
256
 
257
+ function isTruthyFlag(value) {
258
+ return value === true || value === "true";
259
+ }
260
+
261
+ function isStopReentry(input, eventName) {
262
+ if (!STOP_CONTINUATION_EVENTS.has(eventName)) return false;
263
+ return isTruthyFlag(input.stop_hook_active) || isTruthyFlag(input.stopHookActive);
264
+ }
265
+
266
+ function hasDiscoverableJourney(derived) {
267
+ return (
268
+ derived.plan_present === true ||
269
+ derived.router_invoked === true ||
270
+ Boolean(derived.assigned_role) ||
271
+ derived.active_task != null
272
+ );
273
+ }
274
+
275
+ function quietSuccess() {
276
+ return {};
277
+ }
278
+
251
279
  function formatAdvice(verdict) {
252
280
  const lines = [
253
281
  "Bearing Lite " + verdict.hook_class + ": " + verdict.outcome,
@@ -346,6 +374,10 @@ function handle(input) {
346
374
  return unavailableHost(eventName || "SessionStart", "unmapped_host_event");
347
375
  }
348
376
 
377
+ if (isStopReentry(parsed, eventName)) {
378
+ return quietSuccess();
379
+ }
380
+
349
381
  const cwd =
350
382
  presentString(parsed.cwd) ||
351
383
  presentString(parsed.workspaceRoot) ||
@@ -361,6 +393,10 @@ function handle(input) {
361
393
  );
362
394
  }
363
395
 
396
+ if (STOP_CONTINUATION_EVENTS.has(eventName) && !hasDiscoverableJourney(derived)) {
397
+ return quietSuccess();
398
+ }
399
+
364
400
  return toHostResponse(eventName, evaluateForHost(eventName, derived));
365
401
  }
366
402
 
@@ -43,7 +43,7 @@ trees) and sets only:
43
43
 
44
44
  | Bearing field | Source |
45
45
  |---|---|
46
- | `plan_present` | a Markdown file contains a `task_id` or `assigned_role` block |
46
+ | `plan_present` | a Markdown file contains a `task_id`, `assigned_role`, non-placeholder journey marker, or `checkout_lease` block |
47
47
  | `router_invoked` | a `- journey:` setting is present and not a placeholder |
48
48
  | `assigned_role` | active task `assigned_role` when not `unassigned` or `<…>` |
49
49
  | `next_action` / `next_action_known` | active task `next_action` when not a placeholder |
@@ -57,7 +57,13 @@ of inventing context.
57
57
 
58
58
  | Outcome | Host JSON | Process exit |
59
59
  |---|---|---|
60
- | `ADVISE`, `REROUTE`, `UNAVAILABLE` | `hookSpecificOutput.additionalContext` | always `0` |
60
+ | `ADVISE`, `REROUTE`, `UNAVAILABLE` on activation or a discoverable-Journey first-pass Stop | `hookSpecificOutput.additionalContext` | always `0` |
61
+ | Stop/SubagentStop re-entry (`stop_hook_active`) | quiet success (empty JSON; no `additionalContext`) | always `0` |
62
+ | Stop/SubagentStop with no discoverable Journey | quiet success (empty JSON; no `additionalContext`) | always `0` |
63
+ | first-pass Stop/SubagentStop with a discoverable Journey | `hookSpecificOutput.additionalContext` | always `0` |
61
64
  | `BLOCK` | JSON `decision: "block"` only; this mapping never requests protected completion | always `0` |
62
65
 
63
- Never map policy or infrastructure to a non-zero exit.
66
+ A discoverable Journey is a visible plan with a `task_id`, `assigned_role`,
67
+ non-placeholder journey marker, or `checkout_lease` block. Empty cwd and
68
+ `stop_hook_active` re-entry stay quiet. Never map policy or infrastructure to
69
+ a non-zero exit.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alphazede/bearing-lite",
3
- "version": "0.1.1",
3
+ "version": "0.1.9",
4
4
  "description": "Skills-first Agent Plugin for planning, routing, bounded execution, and independent review of repository work—without CLI, MCP, server, or hidden runtime state.",
5
5
  "keywords": [
6
6
  "agent-plugins",
package/plugin.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "bearing-lite",
4
- "version": "0.1.1",
4
+ "version": "0.1.9",
5
5
  "description": "Skills-first portable plugin that routes repository work through the smallest valid planning stages and agent roles, using project Markdown as the only task record.",
6
6
  "author": {
7
7
  "name": "William Rumph / AlphaZede",
@@ -1,52 +1,49 @@
1
1
  ---
2
2
  name: bearing-lite
3
- description: >
4
- Stateful Bearing Lite Router for starting or resuming a Journey, owning the
5
- planning conversation, recording visible state, and dispatching fresh nodes.
6
- Use only on explicit Bearing Lite invocation. Do not use for ordinary work,
7
- an assigned role packet, model selection, implementation, or publication.
3
+ description: Bearing Lite Router for Journeys. Not for ordinary work, assigned packets, implementation, or publication.
8
4
  ---
9
5
 
10
- # Bearing Lite Router
11
-
12
- Owner-facing planning controller, never a work role. Explicit invocation is
13
- consent to begin; do not ask for another start confirmation.
14
-
15
- ## Inputs and state
16
-
17
- Read the request, repository evidence, visible plan artifacts, and global lineup
18
- when present. The Router alone writes Journey planning state; no `.bearing`,
19
- CLI, MCP, scheduler, or hidden ledger. Report hook coverage honestly: plugin
20
- hosts are partial; skill-copy is skills-only.
21
-
22
- ## Algorithm
23
-
24
- 1. Say `Gathering Supplies for this Journey.` Detect new versus resumed work.
25
- 2. For a new Journey, recommend one route and ask exactly: `What Journey shall
26
- we Embark on—an Explorer Journey or an Expedition?` Explorer fits one bounded
27
- wave; Expedition fits dependency-connected waves.
28
- 3. For a resume, state the next incomplete planning stage and continue unless
29
- owner intent is missing. Never replay accepted stages.
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.
9
+
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.
30
20
  4. If `~/.agents/bearing-lite/default-role-lineup.md` is absent, create a
31
- proposed copy from `templates/default-role-lineup.md` and ask the owner to
32
- fill or confirm it one role at a time. Never infer identity values.
33
- 5. Invoke one missing stage in order: Repository Fit → Set Bearings → Gather
34
- Supplies → Map the Route. Give each a fresh session and integrate its return.
35
- 6. Before implementation, display every role's primary/fallback agent or
36
- harness, model, reasoning, and active/standby/unused state. Ask `Is this a
37
- good lineup for the roles on this Journey?`; never choose those values.
38
- 7. Ask `How often would you like an independent review—per slice, per round, or
39
- at the end?` Record `per-slice`, `per-round`, or `at-end` in global config and
40
- the Journey snapshot. The owner's Journey answer overrides the default.
41
- 8. Dispatch only ready nodes. Every node gets a fresh session containing the
42
- approved baseline, bounded assignment, dependencies, authority, relevant
43
- evidence, review cadence, lineup identity, and return schema.
44
-
45
- ## Return and recovery
46
-
47
- Write the node result into visible state and return `READY`, `WAITING_ON`,
48
- `OWNER_DECISION_REQUIRED`, or `COMPLETE` with evidence and next action. Use only
49
- the approved fallback after verified primary unavailability; if both fail,
50
- return to the owner. Allow at most three evidence-changing corrections.
51
-
52
- Never implement, self-assure, select models, expand scope, or publish.
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 `How often would you like an independent
33
+ review—per slice, per 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.
39
+
40
+ Return `READY`, `WAITING_ON`, `OWNER_DECISION_REQUIRED`, or `COMPLETE`. Fallback
41
+ follows primary unavailability; both failing returns to owner.
42
+ Allow three evidence-changing corrections. `max_assurance_rounds` is 3 per
43
+ candidate lineage; Direct route checks `assurance_rounds`; Navigator is not required. At the
44
+ bound, do not dispatch another review. If a repairable result has a remaining
45
+ `attempts` repair, spend it and close the gate; otherwise return
46
+ `OWNER_DECISION_REQUIRED` naming the candidate and count; new candidate lineage resets;
47
+ release the checkout lease exactly once on `COMPLETE` or `CANCELLED`. Recover by
48
+ explicit recorded generation increment that cannot steal a live lease. Process discovery
49
+ cannot replace the lease. Never implement, self-assure, select models, or publish.
@@ -11,10 +11,8 @@ copy peer text, runtimes, state stores, or authority assumptions.
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
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 and context isolation |
15
- | Trail Boss | Spec Kit fan-out/fan-in workflows | conflict-aware wave integration |
16
- | Explorer | LangChain subagents | bounded worker dispatch and result integration |
17
- | Sub-Explorer | LangChain subagents | one justified extra context-isolation level |
14
+ | Navigator | LangChain subagents | central sequencing, context isolation, and conflict-aware wave integration |
15
+ | Explorer | LangChain subagents | bounded worker dispatch, proven-independent lane coordination, and result integration |
18
16
  | Crewmate | Spec Kit implement step | bounded execution after approved planning |
19
17
  | Validator | Spec Kit gate | evidence gate on a stable candidate |
20
18
  | Park Ranger | LangChain reviewer subagent | independent defect review with a typed return |
@@ -11,14 +11,8 @@ flowchart TD
11
11
  J -->|Explorer Journey: one packet| C[Fresh Crewmate]
12
12
  J -->|Explorer Journey: one wave| E[Fresh Explorer]
13
13
  J -->|Expedition| N[Fresh Navigator]
14
- N --> TB{Concurrent or conflicting waves?}
15
- TB -->|yes| T[Fresh Trail Boss]
16
- TB -->|no| E
17
- T --> E
18
- E --> X{Two or more proven-independent lanes?}
19
- X -->|yes| SE[Fresh Sub-Explorer]
20
- SE --> C
21
- X -->|no| C
14
+ N --> E
15
+ E --> C
22
16
  C --> A{Selected cadence boundary?}
23
17
  A -->|Validator declared| V[Fresh Validator]
24
18
  A -->|Park Ranger declared| PK[Fresh Park Ranger]
@@ -8,7 +8,7 @@ The project's human-readable plan is the only task-state record. Diagrams explai
8
8
  | --- | --- | --- |
9
9
  | `PROPOSED` | Parent coordinator | Task exists but is not execution-ready |
10
10
  | `READY` | Parent coordinator | Dependencies, scope, authority, and route are satisfied |
11
- | `WAITING_ON` | Parent coordinator | Named prerequisite or independent-assurance dispatch unavailable |
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
14
  | `VALIDATING` | Validator | Evidence sufficiency under validation |
@@ -40,3 +40,21 @@ The project's human-readable plan is the only task-state record. Diagrams explai
40
40
  - Workers and assurance roles return handoffs; they do not race plan edits.
41
41
  - Candidate authors never provide their own Validator, 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
+
44
+ ## Checkout lease
45
+
46
+ The Router inventories visible nonterminal Journeys and holds one
47
+ generation-bound checkout lease before any planning write or dispatch.
48
+
49
+ - Same checkout plus a live other Journey → `WAITING_ON` with sanitized
50
+ competing Journey and controller. Distinct explicitly approved compatible
51
+ worktrees may proceed.
52
+ - Resume keeps the same generation and must not duplicate dispatch.
53
+ - `COMPLETE` or `CANCELLED` releases the lease exactly once.
54
+ - Stale recovery is explicit, recorded, increments generation, and cannot
55
+ steal a live lease. Forged or stale-generation records fail closed.
56
+ - Branch or HEAD drift from the leased identity stops the transition before
57
+ mutation. Authorized same-Journey candidate progress whose parent is the
58
+ current leased revision refreshes `candidate_revision` on the same
59
+ generation. Foreign controller, branch/worktree, or unrelated HEAD still
60
+ fail closed as `WAITING_ON`.
@@ -1,7 +1,7 @@
1
1
  stateDiagram-v2
2
2
  [*] --> PROPOSED
3
3
  PROPOSED --> READY
4
- PROPOSED --> WAITING_ON
4
+ PROPOSED --> WAITING_ON: named prerequisite or checkout-lease conflict
5
5
  WAITING_ON --> READY: prerequisite satisfied
6
6
  WAITING_ON --> EVIDENCE_READY: fresh assurance available
7
7
  WAITING_ON --> CANCELLED
@@ -12,9 +12,7 @@ review_cadence: <per-slice | per-round | at-end>
12
12
  | --- | --- | --- | --- | --- | --- | --- |
13
13
  | Router | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
14
14
  | Navigator | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
15
- | Trail Boss | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
16
15
  | Explorer | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
17
- | Sub-Explorer | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
18
16
  | Crewmate | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
19
17
  | Validator | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
20
18
  | Park Ranger | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET | OWNER_TO_SET |
@@ -18,6 +18,39 @@ author self-checks. Never infer it from `required_assurance` on an individual
18
18
  task. `per-round` means after each integrated execution or correction round;
19
19
  `at-end` means one review of the final integrated candidate. The Router asks the
20
20
  owner to confirm both the applicable lineup and cadence before implementation.
21
+ `lineup_snapshot` is authoritative for this Journey after recording. Later
22
+ edits to `~/.agents/bearing-lite/default-role-lineup.md` have no effect.
23
+ Replace it only through an explicit owner-confirmed dated visible amendment.
24
+ Record the amendment date beside the replacement values. Dispatch identities
25
+ come from this snapshot, not from the current global defaults file.
26
+
27
+ ## Checkout lease (record before any planning write)
28
+
29
+ The Router's first write is this visible lease. Inventory nonterminal Journeys
30
+ first. Do not dispatch or write other planning state until the lease is
31
+ `active` for this Journey.
32
+
33
+ ```markdown
34
+ - checkout_lease:
35
+ - journey: <Journey id>
36
+ - controller: <Router>
37
+ - repository: <canonical repository>
38
+ - checkout: <worktree or checkout identity>
39
+ - branch: <branch>
40
+ - candidate_revision: <candidate revision>
41
+ - acquired_at: <acquisition time>
42
+ - generation: <positive integer>
43
+ - state: <active | released>
44
+ ```
45
+
46
+ Same checkout plus a live other Journey returns `WAITING_ON` with sanitized
47
+ competing Journey and controller identities. Distinct explicitly approved
48
+ compatible worktrees may proceed. Resume keeps the same generation and does
49
+ not duplicate dispatch. Authorized same-Journey candidate progress whose
50
+ parent is the current leased revision refreshes `candidate_revision` on the
51
+ same generation. `COMPLETE` or `CANCELLED` releases the lease exactly
52
+ once. Stale recovery is explicit, recorded, increments generation, and cannot
53
+ steal a live lease. Process discovery cannot replace this durable lease.
21
54
 
22
55
  ## Always present
23
56
 
@@ -54,9 +87,18 @@ Field rules:
54
87
  ```markdown
55
88
  - candidate_ref: <strongest native revision or changed-path reference available>
56
89
  - evidence: <commands run, results observed, and inferences labeled separately>
90
+ - assurance_rounds: <0-3 completed assurance rounds for this candidate lineage>
57
91
  ```
58
92
 
59
93
  `candidate_ref` must not claim stronger provenance than the client can prove.
94
+ `assurance_rounds` counts each candidate version submitted to required assurance
95
+ in one candidate lineage against Bearing Lite `max_assurance_rounds`. A repair
96
+ of the same work stays in the lineage. A new candidate lineage resets the count
97
+ to 0. The parent coordinator writes the count and checks it before redispatched
98
+ assurance. Review and repair rounds are separate budgets, and the cycle ends on
99
+ a repair: `assurance_rounds` counts reviews while `attempts` counts repairs.
100
+ When the last review permits a remaining repair, spend it and close the gate
101
+ without another review.
60
102
 
61
103
  ## Waiting or correcting only
62
104
 
@@ -14,7 +14,8 @@ Lowest mutation authority and highest hands-on work in the Bearing ladder.
14
14
  ## Inputs and match
15
15
 
16
16
  - **Inputs:** approved baseline, objective, dependencies, exact write set,
17
- authority, acceptance/SEIT rows, commands, cadence, stop rule, return schema.
17
+ authority, acceptance/SEIT rows, commands, cadence, stop rule, return schema,
18
+ and lineup identity from the recorded Journey snapshot.
18
19
  - **Match:** one packet is `READY` and every input is fixed.
19
20
  - **Non-match:** multi-packet coordination, design gaps, missing authority,
20
21
  assurance, or owner-only action.
@@ -22,7 +23,15 @@ Lowest mutation authority and highest hands-on work in the Bearing ladder.
22
23
  ## Algorithm
23
24
 
24
25
  1. Start a fresh session and confirm candidate continuity, boundaries, and clean
25
- dependency state. Do not infer missing owner choices.
26
+ dependency state. Do not infer missing owner choices. Read dispatch
27
+ identities only from the recorded Journey snapshot, never from the current
28
+ global defaults file. Revalidate the visible checkout
29
+ lease against the approved Journey, repository, checkout/worktree, branch,
30
+ candidate revision, generation, and active state before the first write and
31
+ every mutation. Released, stale-generation, forged, or
32
+ branch/HEAD-drifted leases fail closed. Authorized same-Journey
33
+ candidate progress whose parent is the current leased revision refreshes
34
+ candidate_revision on the same generation. On mismatch, return WAITING_ON without writing.
26
35
  2. For a verified contract defect, create the smallest failing regression first.
27
36
  3. Make the smallest change that satisfies the packet inside the write set.
28
37
  4. Run assigned focused commands and author self-checks. Review cadence never
@@ -3,35 +3,52 @@ name: explorer
3
3
  description: >
4
4
  Own one approved execution wave, dispatching bounded fresh-session packets
5
5
  and integrating their evidence. Use for Explorer Journey, wave orchestration,
6
- or parallel packet sequencing. Do not use for implementation, cross-wave
7
- Trail Boss work, planning, automatic nesting, or independent assurance.
6
+ proven-independent in-wave lanes, or parallel packet sequencing. Do not use
7
+ for implementation, cross-wave work, planning, automatic nesting, or
8
+ independent assurance.
8
9
  ---
9
10
 
10
11
  # Explorer
11
12
 
12
- Wave authority. Coordinates more and implements less than Sub-Explorer.
13
+ Wave authority. Coordinates more and implements less than Crewmate.
13
14
 
14
15
  ## Inputs and match
15
16
 
16
17
  - **Inputs:** approved baseline, wave objective, packet graph, dependencies,
17
- scope, authority, lineup, review cadence, acceptance, and return schema.
18
- - **Match:** one wave needs packet sequencing, dispatch, or integration.
18
+ scope, authority, lineup from the recorded Journey snapshot, review cadence,
19
+ acceptance, and return schema.
20
+ - **Match:** one wave needs packet sequencing, dispatch, integration, or
21
+ proven-independent lane coordination.
19
22
  - **Non-match:** one bounded packet needs no orchestration, multiple waves
20
23
  conflict, or assurance alone is requested.
21
24
 
22
25
  ## Algorithm
23
26
 
24
27
  1. Start fresh and verify wave readiness, exact packet boundaries, dependencies,
25
- and approved primary/fallback identities.
26
- 2. Use direct Crewmates by default. Add one Sub-Explorer only for at least two
27
- proven-independent lanes where it materially reduces conflict or context.
28
+ and approved primary/fallback identities from the recorded Journey snapshot,
29
+ never from the current global defaults file. Revalidate the visible checkout
30
+ lease against the approved Journey, repository, checkout/worktree, branch,
31
+ candidate revision, generation, and active state before the first write,
32
+ dispatch, or integration. Released, stale-generation, forged, or
33
+ branch/HEAD-drifted leases fail closed. Authorized same-Journey
34
+ candidate progress whose parent is the current leased revision refreshes
35
+ candidate_revision on the same generation. The same valid lease continues
36
+ without duplicate dispatch.
37
+ 2. Use direct Crewmates by default. When two or more lanes are proven
38
+ independent, coordinate those lanes directly inside this wave; never add a
39
+ nested coordinator.
28
40
  3. Give every node a fresh bounded session. Never pass raw conversation history.
29
41
  4. Inspect returns against write sets and acceptance; integrate evidence without
30
42
  implementing missing packet work.
31
43
  5. Dispatch declared assurance at `per-slice` or after each integrated execution
32
44
  or correction round at `per-round`. At `at-end`, an Explorer Journey reviews
33
45
  its final wave once; an Expedition wave defers assurance to the Navigator's
34
- final Journey boundary. Deterministic checks always run.
46
+ final Journey boundary. Deterministic checks always run. Before redispatched
47
+ assurance, honor `max_assurance_rounds` from visible `assurance_rounds`. At
48
+ the bound, do not dispatch another review. If a repairable result has a
49
+ remaining `attempts` repair, spend it and close the gate; otherwise return
50
+ `OWNER_DECISION_REQUIRED` with candidate and count. A new candidate lineage
51
+ resets the count.
35
52
 
36
53
  ## Return and recovery
37
54
 
@@ -13,8 +13,9 @@ Planning node, not a persona or plan-state writer.
13
13
 
14
14
  ## Match and inputs
15
15
 
16
- - **Match:** a Journey choice or material scope, behavior, authority, risk, or
17
- acceptance decision is unresolved.
16
+ - **Match:** a material scope, behavior, authority, risk, or acceptance
17
+ decision is unresolved. The Explorer-versus-Expedition route choice is not
18
+ gathered here; the Router asks it at the pre-implementation gate.
18
19
  - **Non-match:** evidence can answer it, the owner already decided it, or a work
19
20
  packet is ready.
20
21
  - **Inputs:** goal, visible plan state, repository evidence, prior decisions,
@@ -25,21 +26,28 @@ Planning node, not a persona or plan-state writer.
25
26
  1. Inspect the repository and available evidence before asking. Never ask the
26
27
  owner for a fact tools can establish.
27
28
  2. Select the earliest unresolved decision whose dependencies are satisfied.
28
- 3. Ask exactly one question. Lead with the recommended answer and why, then
29
- explain only material alternatives and tradeoffs. Wait for the owner.
29
+ 3. Ask exactly one question, relayed to the owner through the Router. Lead
30
+ with the recommended answer and why, then explain only material
31
+ alternatives and tradeoffs. Wait for the owner.
30
32
  4. Challenge vague terms, contradictions, unsafe assumptions, and incomplete
31
33
  acceptance. A default, probability, or silence is not approval.
32
34
  5. Follow the affected dependency branch. Revisit an earlier answer when new
33
35
  evidence conflicts; otherwise do not replay it.
34
- 6. Return each confirmed decision immediately to the Router for recording.
35
- 7. When no material branch remains, summarize the shared interpretation and ask
36
- for explicit confirmation that shared understanding has been reached.
36
+ 6. Buffer confirmed decisions in the active session. Do not persist, patch, or
37
+ re-render Journey state after each answer.
38
+ 7. Return one consolidated decision batch to the Router at a natural checkpoint:
39
+ the dependency branch is complete, Map the Route is next, handoff/context
40
+ loss is imminent, or the owner requests a flush.
41
+ 8. When no material branch remains, summarize the shared interpretation and ask
42
+ for explicit confirmation that shared understanding has been reached; then
43
+ return the final decision batch.
37
44
 
38
45
  ## Return and recovery
39
46
 
40
47
  Return `DECISION_CONFIRMED`, `SHARED_UNDERSTANDING_CONFIRMED`,
41
48
  `NEEDS_EVIDENCE`, or `OWNER_DECISION_REQUIRED` with decision ID, answer,
42
- rationale, affected requirements, remaining branch, and next action. Stop after
43
- three evidence-changing attempts on one blocked decision.
49
+ rationale, affected requirements, buffered decision count, remaining branch,
50
+ checkpoint, and next action. Stop after three evidence-changing attempts on one
51
+ blocked decision.
44
52
 
45
53
  Never write Journey state, choose for the owner, design, or implement.
@@ -14,30 +14,33 @@ Fresh planning node. The Router remains the plan-state writer and user contact.
14
14
  ## Inputs and match
15
15
 
16
16
  - **Inputs:** confirmed decisions, repository map, artifact status, requirements,
17
- owner-selected lineup/cadence, repository rules, and return schema.
17
+ owner-selected route/lineup/cadence, repository rules, and return schema.
18
18
  - **Match:** first specification gate or post-approval planning package is missing.
19
19
  - **Non-match:** executable tasks already map to current approved artifacts.
20
20
 
21
21
  ## Algorithm
22
22
 
23
- 1. Derive `<journey-topic>-spec.md` from the confirmed title and return the name
24
- for owner verification before first write. Never require generic `plan-spec.md`.
25
- 2. Write the testable specification and self-contained offline `review.html`.
26
- Open the exact HTML in the user's browser and verify the launcher/process.
27
- 3. After specification approval, select and record suitable design lenses
28
- without asking unless owner intent changes. Write `design.md`, then `seit.md`;
29
- draft `implementation.md` only after both prospective gates are complete.
23
+ 1. Derive and announce `<journey-topic>-spec.md` from the confirmed title;
24
+ require owner input only on ambiguity or collision. Never require generic
25
+ `plan-spec.md`.
26
+ 2. Author in dependency order: testable specification, `design.md`, `seit.md`,
27
+ then `implementation.md`. Run prospective checks internally; interrupt the
28
+ owner only when evidence creates a material intent, scope, risk, or authority
29
+ decision.
30
+ 3. Generate one complete self-contained offline `review.html` after all four
31
+ artifacts are current. Include implementation, traceability, roles, waves,
32
+ failure/recovery paths, and approval boundaries in that review.
30
33
  4. Give every slice stable requirement/design/SEIT IDs, dependencies, exact
31
34
  write set, authority, fresh-session role, evidence, recovery, and stop rule.
32
- 5. Copy the confirmed lineup and review cadence into implementation and HTML.
33
- Show named active, standby, and unused role instances.
34
- 6. Generate the final HTML with deep zoomable diagrams for architecture, state,
35
- interactions, failures, dependencies, and ownership. Put the recommended
36
- Journey path in Implementation, open it, and request owner approval.
35
+ 5. Copy the confirmed route, lineup, and review cadence into implementation and
36
+ HTML. Show named active, standby, and unused role instances.
37
+ 6. Open the exact final HTML, verify its launcher/process, and request one
38
+ integrated owner approval. Use staged owner approvals only when the owner
39
+ explicitly requests them.
37
40
 
38
41
  ## Return and recovery
39
42
 
40
- Return `SPEC_REVIEW_READY`, `PLAN_REVIEW_READY`, `NEEDS_OWNER_DECISION`, or
41
- `VALIDATION_FAILED` with artifact paths, evidence, blocker, and next action.
42
- After final approval, `review.html` is authoritative. At most three
43
- evidence-changing correction rounds; never invent approval or implement.
43
+ Return `PLAN_REVIEW_READY`, `NEEDS_OWNER_DECISION`, or `VALIDATION_FAILED` with
44
+ artifact paths, evidence, blocker, and next action. After approval,
45
+ `review.html` is authoritative. At most three evidence-changing correction
46
+ rounds; never invent approval or implement.
@@ -76,8 +76,8 @@ placeholders, bare negations, or deferral language.
76
76
 
77
77
  ## Completion boundary
78
78
 
79
- The first review gate needs the topic-specific specification and `review.html`.
80
- After approval, complete-route work remains incomplete until that specification,
81
- `design.md`, `seit.md`, and `implementation.md` are current. Bearing then
82
- generates and opens the complete `review.html`; it becomes authoritative only
83
- after owner approval.
79
+ Author specification, design, SEIT, and implementation in that dependency order
80
+ with internal prospective checks. The owner review gate requires all four
81
+ artifacts plus the complete `review.html`; do not insert a specification-only
82
+ owner gate unless the owner explicitly requests staged approvals. The HTML
83
+ becomes authoritative only after integrated owner approval.
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: navigator
3
3
  description: >
4
- Sequence dependency-connected Expedition waves, fresh-session coordinators,
5
- and integration boundaries. Use for Navigator, Expedition, or multi-wave
4
+ Sequence dependency-connected Expedition waves, resolve cross-wave conflicts,
5
+ and own integration boundaries. Use for Navigator, Expedition, or multi-wave
6
6
  execution control. Do not use for one packet/wave, product implementation,
7
7
  planning-state ownership, model selection, publication, or assurance.
8
8
  ---
@@ -14,20 +14,37 @@ Highest execution authority below Router; performs the least hands-on execution.
14
14
  ## Inputs and match
15
15
 
16
16
  - **Inputs:** approved artifacts, wave graph, dependencies, repository scope,
17
- authority, lineup, review cadence, acceptance, and return schema.
18
- - **Match:** an Expedition has multiple dependency-connected waves or phases.
17
+ authority, lineup from the recorded Journey snapshot, review cadence,
18
+ acceptance, and return schema.
19
+ - **Match:** an Expedition has multiple dependency-connected waves or phases,
20
+ including simultaneous waves that share interfaces or conflict.
19
21
  - **Non-match:** one Explorer wave or Crewmate packet is sufficient.
20
22
 
21
23
  ## Algorithm
22
24
 
23
25
  1. Start fresh and reread the approved specification, design, SEIT,
24
26
  implementation, and review baseline. Verify snapshot lineup and cadence.
25
- 2. Sequence fresh Explorer sessions. Add Trail Boss only for simultaneous waves
26
- with shared-interface or dependency conflicts.
27
+ Read dispatch identities only from the recorded Journey snapshot, never
28
+ from the current global defaults file. Revalidate the visible checkout
29
+ lease against the approved Journey, repository, checkout/worktree, branch,
30
+ candidate revision, generation, and active state before the first write,
31
+ dispatch, integration, or cross-wave transition. Released, stale-generation,
32
+ forged, or branch/HEAD-drifted leases fail closed. Authorized same-Journey
33
+ candidate progress whose parent is the current leased revision refreshes
34
+ candidate_revision on the same generation. The same valid lease
35
+ continues without duplicate dispatch.
36
+ 2. Sequence fresh Explorer sessions. For simultaneous waves with
37
+ shared-interface or dependency conflicts, resolve ordering and integration
38
+ here; never add a nested multi-wave controller.
27
39
  3. Integrate typed wave returns and correct only sequencing/coverage gaps inside
28
40
  approved authority; never perform implementation.
29
41
  4. Dispatch independent assurance at the confirmed cadence: every slice, every
30
42
  integrated execution/correction round, or only the final integrated outcome.
43
+ Before redispatched assurance, honor `max_assurance_rounds` from visible
44
+ `assurance_rounds`. At the bound, do not dispatch another review. If a
45
+ repairable result has a remaining `attempts` repair, spend it and close the
46
+ gate; otherwise return `OWNER_DECISION_REQUIRED` with candidate and count.
47
+ A new candidate lineage resets the count.
31
48
  5. Return to the Router after the bounded Expedition outcome; do not silently
32
49
  continue into another Journey or protected action.
33
50
 
@@ -34,6 +34,18 @@ Independent defect assurance, outside the mutation-authority ladder.
34
34
 
35
35
  Return `BLOCK`, `REPAIR_REQUIRED`, `ACCEPT_WITH_FINDINGS`, or `ACCEPT` with
36
36
  candidate ref, findings, evidence, verdict, blocker, next action, and receiver.
37
- Review again only after candidate-changing repairs, at most three rounds.
37
+ `ACCEPT`, `ACCEPT_WITH_FINDINGS`, and `BLOCK` are terminal. `REPAIR_REQUIRED`
38
+ permits bounded correction. `ACCEPT_WITH_FINDINGS` accepts residual findings;
39
+ do not follow it with another repair. Coordinators enforce
40
+ `max_assurance_rounds`. Review again only after candidate-changing repairs
41
+ when rounds remain.
42
+
43
+ The gate cycle terminates on a repair, not on a review: `review → repair →
44
+ review → repair → done`. The final repair within bounds completes the gate.
45
+ Do not require an additional review to confirm the last repair — that would
46
+ make every review demand another repair and every repair another review, an
47
+ unbounded loop. A coordinator that has consumed its review rounds and has an
48
+ `attempts` repair remaining spends it and closes the gate; that is completion,
49
+ not bounds exhaustion.
38
50
 
39
51
  Never edit, self-review, duplicate general review, or grant publication rights.
@@ -27,7 +27,8 @@ Fresh planning node. It returns evidence; the Router records the decision.
27
27
  owner evidence with a typed finding.
28
28
  4. Propose exactly one repository and one plan-directory assumption with path
29
29
  evidence and a short reason.
30
- 5. Ask one owner confirmation question. A recommendation is not confirmation.
30
+ 5. Return one owner confirmation question through the Router. A recommendation
31
+ is not confirmation.
31
32
 
32
33
  ## Return and recovery
33
34
 
@@ -33,8 +33,10 @@ Independent assurance responsibility, outside the mutation-authority ladder.
33
33
  ## Return and recovery
34
34
 
35
35
  Return `PASS`, `NEEDS_MORE_EVIDENCE`, or `FAIL` with candidate ref, criteria,
36
- evidence, findings, blocker, next action, and receiver. Re-evaluate only a new
37
- candidate or materially new evidence, at most three rounds.
36
+ evidence, findings, blocker, next action, and receiver. `PASS` is terminal.
37
+ `NEEDS_MORE_EVIDENCE` and `FAIL` permit bounded correction. Coordinators
38
+ enforce `max_assurance_rounds`; this role does not redispatch. Re-evaluate only
39
+ a new candidate or materially new evidence.
38
40
 
39
41
  Never implement, repeat unchanged review, replace Park Ranger/Surveyor, or
40
42
  grant owner-only approval.
@@ -1,39 +0,0 @@
1
- ---
2
- name: sub-explorer
3
- description: >
4
- Coordinate at least two proven-independent lanes inside one Explorer wave in
5
- a fresh session. Use for Sub-Explorer or necessary in-wave lane coordination.
6
- Do not use for one lane, nested Sub-Explorers, implementation, cross-wave
7
- control, planning, or assurance.
8
- ---
9
-
10
- # Sub-Explorer
11
-
12
- Second mutation-authority level; coordinates more and implements less than a
13
- Crewmate. Maximum one Sub-Explorer level.
14
-
15
- ## Inputs and match
16
-
17
- - **Inputs:** parent wave, lane boundaries, packet specs, dependencies,
18
- authority, lineup identities, cadence, and return schema.
19
- - **Match:** two or more disjoint lanes materially reduce context or conflict.
20
- - **Non-match:** direct packets suffice, independence is unproven, or another
21
- Sub-Explorer level is requested.
22
-
23
- ## Algorithm
24
-
25
- 1. Start fresh; verify parent authority, lane disjointness, dependencies, and
26
- approved primary/fallback identity for each node.
27
- 2. Dispatch fresh Crewmate sessions with only their bounded packet and evidence.
28
- 3. Track returns by packet ID; preserve foreign changes and never write a packet.
29
- 4. Reconcile lane evidence and return conflicts to the Explorer.
30
- 5. Request assurance only at the recorded cadence boundary and only through the
31
- parent coordinator.
32
-
33
- ## Return and recovery
34
-
35
- Return `READY`, `REROUTED`, `WAITING_ON`, or `OWNER_DECISION_REQUIRED` with
36
- plan ref, role, subject, dependencies, scope, authority, evidence, blocker, next
37
- action, and receiver. Allow three evidence-changing corrections per lane.
38
-
39
- Never implement, add nesting, expand the wave, or provide assurance.
@@ -1,40 +0,0 @@
1
- ---
2
- name: trail-boss
3
- description: >
4
- Coordinate concurrent Explorer waves that share interfaces, dependencies, or
5
- integration conflicts in a fresh session. Use for Trail Boss, cross-wave
6
- readiness, or integration ordering. Do not use for one wave, packet work,
7
- planning, model selection, review, grading, or assurance.
8
- ---
9
-
10
- # Trail Boss
11
-
12
- Cross-wave authority. Coordinates more and implements less than Explorer.
13
-
14
- ## Inputs and match
15
-
16
- - **Inputs:** approved wave graph, lane status, shared interfaces, dependencies,
17
- authority, lineup, cadence, budgets, and return schema.
18
- - **Match:** at least two active Explorer waves require conflict or integration
19
- control.
20
- - **Non-match:** one Explorer can sequence all work or the request is execution
21
- or assurance.
22
-
23
- ## Algorithm
24
-
25
- 1. Start fresh; verify every wave owner, dependency edge, shared interface, and
26
- candidate boundary.
27
- 2. Schedule readiness and integration order. Serialize conflicting writes;
28
- allow parallel waves only when independence is proven.
29
- 3. Dispatch fresh Explorer sessions with bounded wave packets and named lineup.
30
- 4. Reconcile typed returns and surface interface drift without repairing it.
31
- 5. Tell the Navigator when the cadence boundary is ready for assurance; never
32
- create an extra review round.
33
-
34
- ## Return and recovery
35
-
36
- Return `READY`, `REROUTED`, `WAITING_ON`, or `OWNER_DECISION_REQUIRED` with
37
- plan ref, role, subject, dependencies, scope, authority, evidence, blocker, next
38
- action, and receiver. Try at most three evidence-changing schedules.
39
-
40
- Never implement, absorb Explorer work, self-assure, or expand authority.
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "Trail Boss"
3
- short_description: "Coordinate approved Expedition Explorer lanes"
4
- default_prompt: "Use $trail-boss to coordinate the approved Expedition wave graph."