@alphazede/bearing-lite 0.1.11 → 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 (40) hide show
  1. package/CONTRIBUTING.md +25 -0
  2. package/README.md +39 -13
  3. package/hooks/assurance-budget.cjs +167 -0
  4. package/hooks/com.anthropic.claude-code/mapping.md +72 -0
  5. package/hooks/com.cursor/hooks.json +11 -1
  6. package/hooks/hooks.json +45 -1
  7. package/hooks/te-capability.cjs +137 -0
  8. package/hooks/te-host.cjs +620 -0
  9. package/hooks/transition-order.cjs +32 -2
  10. package/lineups.json +1 -0
  11. package/package.json +4 -2
  12. package/plugin.json +1 -1
  13. package/schemas/authority.schema.json +75 -0
  14. package/schemas/implementation.schema.json +127 -0
  15. package/schemas/journey.schema.json +88 -0
  16. package/schemas/lineups.schema.json +145 -0
  17. package/schemas/seit.schema.json +108 -0
  18. package/skills/bearing-lite/SKILL.md +15 -15
  19. package/skills/bearing-lite/references/assurance-policy.md +66 -0
  20. package/skills/bearing-lite/references/lineups.md +81 -0
  21. package/skills/bearing-lite/references/peer-synthesis.md +7 -3
  22. package/skills/bearing-lite/references/role-routing.mmd +2 -2
  23. package/skills/bearing-lite/references/task-state.md +4 -4
  24. package/skills/bearing-lite/references/task-state.mmd +1 -1
  25. package/skills/bearing-lite/templates/default-role-lineup.md +7 -1
  26. package/skills/bearing-lite/templates/task.md +16 -10
  27. package/skills/crewmate/SKILL.md +3 -0
  28. package/skills/explorer/SKILL.md +7 -6
  29. package/skills/gather-supplies/SKILL.md +7 -1
  30. package/skills/integration-engineer/SKILL.md +41 -0
  31. package/skills/map-the-route/SKILL.md +7 -6
  32. package/skills/map-the-route/references/artifact-grammar.md +47 -29
  33. package/skills/park-ranger/SKILL.md +14 -9
  34. package/skills/plan-integrator/SKILL.md +37 -0
  35. package/skills/scribe/SKILL.md +34 -0
  36. package/skills/surveyor/SKILL.md +15 -9
  37. package/skills/systems-modeler/SKILL.md +35 -0
  38. package/skills/test-engineer/SKILL.md +46 -0
  39. package/skills/validator/SKILL.md +20 -27
  40. package/skills/validator/references/grading-rubric.md +5 -4
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.11",
4
+ "version": "0.2.0",
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",
@@ -0,0 +1,75 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/alphazede/bearing-lite/schemas/authority.schema.json",
4
+ "title": "Bearing Lite authority.json",
5
+ "description": "Current machine-enforced authority envelope. Lineup or route selection is not a grant. CONTRACT-EMV-009 envelope fields are required. Canonical keys are granting_owner_decisions (array) and expiry_conditions (array of strings). effective is boolean only. Extra lifecycle metadata is allowed.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "schema_version",
10
+ "schema",
11
+ "id",
12
+ "state",
13
+ "subject",
14
+ "repositories",
15
+ "baseline",
16
+ "granting_owner_decisions",
17
+ "allowed",
18
+ "prohibited",
19
+ "role_grants",
20
+ "effective",
21
+ "expiry_conditions",
22
+ "supersedes",
23
+ "approval_receipt"
24
+ ],
25
+ "properties": {
26
+ "schema_version": { "type": "string", "minLength": 1 },
27
+ "schema": { "type": "string", "minLength": 1, "description": "Envelope schema identity" },
28
+ "id": { "type": "string", "minLength": 1, "description": "Authority envelope ID" },
29
+ "state": { "type": "string", "minLength": 1 },
30
+ "subject": { "type": "object", "minProperties": 1, "additionalProperties": true },
31
+ "repositories": {
32
+ "type": "array",
33
+ "items": { "type": "object", "additionalProperties": true }
34
+ },
35
+ "baseline": { "type": "object", "minProperties": 1, "additionalProperties": true },
36
+ "granting_owner_decisions": {
37
+ "type": "array",
38
+ "items": { "type": "string", "minLength": 1 }
39
+ },
40
+ "allowed": {
41
+ "type": "object",
42
+ "additionalProperties": true,
43
+ "required": ["scope", "actions", "paths"],
44
+ "properties": {
45
+ "scope": { "type": "array", "items": { "type": "string" } },
46
+ "actions": { "type": "array", "items": { "type": "string" } },
47
+ "paths": { "type": "array", "items": { "type": "string" } }
48
+ }
49
+ },
50
+ "prohibited": {
51
+ "type": "object",
52
+ "additionalProperties": true,
53
+ "required": ["scope", "actions", "paths"],
54
+ "properties": {
55
+ "scope": { "type": "array", "items": { "type": "string" } },
56
+ "actions": { "type": "array", "items": { "type": "string" } },
57
+ "paths": { "type": "array", "items": { "type": "string" } }
58
+ }
59
+ },
60
+ "role_grants": {
61
+ "type": "array",
62
+ "items": { "type": "object", "additionalProperties": true }
63
+ },
64
+ "effective": { "type": "boolean", "description": "Machine-enforced effectiveness. Boolean only: a string is not an effectiveness decision." },
65
+ "expiry_conditions": {
66
+ "type": "array",
67
+ "items": { "type": "string", "minLength": 1 }
68
+ },
69
+ "supersedes": {
70
+ "type": "array",
71
+ "items": { "type": "string" }
72
+ },
73
+ "approval_receipt": { "type": "object", "additionalProperties": true }
74
+ }
75
+ }
@@ -0,0 +1,127 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/alphazede/bearing-lite/schemas/implementation.schema.json",
4
+ "title": "Bearing Lite implementation.json",
5
+ "description": "Nested execution authority. XLSX is never authority. Owner-configured n, k, and c have no assistant default integers. Every slice requires CONTRACT-EMV-008 fields including reasoning_level (object), not a sibling reasoning string. human_decision may be a string, object, or null. authority_id is a nonempty string on dispatchable slices and may be null only when dispatchable is false or slice_status is publication-blocked. Extra lifecycle metadata is allowed.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "schema_version",
10
+ "artifact",
11
+ "source_baseline",
12
+ "journey_settings",
13
+ "lineup_freeze",
14
+ "waves",
15
+ "dependencies",
16
+ "slices",
17
+ "traceability"
18
+ ],
19
+ "$defs": {
20
+ "contentfulObject": {
21
+ "type": "object",
22
+ "minProperties": 1,
23
+ "additionalProperties": true
24
+ },
25
+ "stringList": {
26
+ "type": "array",
27
+ "items": { "type": "string" }
28
+ },
29
+ "slice": {
30
+ "type": "object",
31
+ "additionalProperties": true,
32
+ "required": [
33
+ "role",
34
+ "goal",
35
+ "type",
36
+ "requirement_ids",
37
+ "design_ids",
38
+ "seit_proof_rows",
39
+ "design_lenses",
40
+ "model_route",
41
+ "reasoning_level",
42
+ "review_path",
43
+ "write_set",
44
+ "command_ids",
45
+ "stop_condition",
46
+ "human_decision",
47
+ "authority_id"
48
+ ],
49
+ "properties": {
50
+ "id": { "type": "string" },
51
+ "role": { "type": "string", "minLength": 1 },
52
+ "goal": { "type": "string", "minLength": 1, "maxLength": 512 },
53
+ "type": { "type": "string", "minLength": 1 },
54
+ "requirement_ids": { "$ref": "#/$defs/stringList" },
55
+ "design_ids": { "$ref": "#/$defs/stringList" },
56
+ "seit_proof_rows": { "$ref": "#/$defs/stringList" },
57
+ "design_lenses": { "$ref": "#/$defs/stringList" },
58
+ "model_route": { "$ref": "#/$defs/contentfulObject" },
59
+ "reasoning_level": { "$ref": "#/$defs/contentfulObject" },
60
+ "review_path": { "$ref": "#/$defs/contentfulObject" },
61
+ "write_set": { "$ref": "#/$defs/stringList" },
62
+ "command_ids": { "$ref": "#/$defs/stringList" },
63
+ "stop_condition": { "type": "string", "minLength": 1 },
64
+ "human_decision": { "type": ["string", "object", "null"] },
65
+ "authority_id": { "type": ["string", "null"] },
66
+ "dispatchable": { "type": "boolean" },
67
+ "slice_status": { "type": "string" }
68
+ },
69
+ "if": {
70
+ "not": {
71
+ "anyOf": [
72
+ {
73
+ "properties": { "dispatchable": { "const": false } },
74
+ "required": ["dispatchable"]
75
+ },
76
+ {
77
+ "properties": { "slice_status": { "const": "publication-blocked" } },
78
+ "required": ["slice_status"]
79
+ }
80
+ ]
81
+ }
82
+ },
83
+ "then": {
84
+ "properties": {
85
+ "authority_id": { "type": "string", "minLength": 1 }
86
+ }
87
+ }
88
+ }
89
+ },
90
+ "properties": {
91
+ "schema_version": { "type": "string", "minLength": 1 },
92
+ "artifact": { "$ref": "#/$defs/contentfulObject" },
93
+ "source_baseline": { "$ref": "#/$defs/contentfulObject" },
94
+ "journey_settings": {
95
+ "type": "object",
96
+ "additionalProperties": true,
97
+ "required": ["review_cardinality"],
98
+ "properties": {
99
+ "review_cardinality": {
100
+ "type": "object",
101
+ "additionalProperties": true,
102
+ "description": "Owner-configured reviewer count n, repair bound k, and confirmation count c. No default integers.",
103
+ "required": ["n", "k", "c"],
104
+ "properties": {
105
+ "n": { "type": "integer", "minimum": 0 },
106
+ "k": { "type": "integer", "minimum": 0 },
107
+ "c": { "type": "integer", "minimum": 0 }
108
+ }
109
+ }
110
+ }
111
+ },
112
+ "lineup_freeze": { "$ref": "#/$defs/contentfulObject" },
113
+ "waves": {
114
+ "type": "array",
115
+ "items": { "type": "object", "additionalProperties": true }
116
+ },
117
+ "dependencies": {
118
+ "type": "array",
119
+ "items": { "type": "object", "additionalProperties": true }
120
+ },
121
+ "slices": {
122
+ "type": "array",
123
+ "items": { "$ref": "#/$defs/slice" }
124
+ },
125
+ "traceability": { "$ref": "#/$defs/contentfulObject" }
126
+ }
127
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/alphazede/bearing-lite/schemas/journey.schema.json",
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.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "schema_version",
10
+ "journey",
11
+ "checkout_lease",
12
+ "decisions",
13
+ "open_decisions",
14
+ "planning_receipts",
15
+ "lineup_selection"
16
+ ],
17
+ "properties": {
18
+ "schema_version": { "type": "string", "minLength": 1 },
19
+ "journey": {
20
+ "type": "object",
21
+ "additionalProperties": true,
22
+ "required": ["id", "title", "status", "planning_repository"],
23
+ "properties": {
24
+ "id": { "type": "string", "minLength": 1 },
25
+ "title": { "type": "string", "minLength": 1 },
26
+ "status": { "type": "string", "minLength": 1 },
27
+ "planning_repository": { "type": "string", "minLength": 1 }
28
+ }
29
+ },
30
+ "checkout_lease": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "required": [
34
+ "journey",
35
+ "controller",
36
+ "repository",
37
+ "checkout",
38
+ "branch",
39
+ "candidate_revision",
40
+ "acquired_at",
41
+ "generation",
42
+ "state"
43
+ ],
44
+ "properties": {
45
+ "journey": { "type": "string", "minLength": 1 },
46
+ "controller": { "type": "string", "minLength": 1 },
47
+ "repository": { "type": "string", "minLength": 1 },
48
+ "checkout": { "type": "string", "minLength": 1 },
49
+ "branch": { "type": "string", "minLength": 1 },
50
+ "candidate_revision": { "type": "string", "minLength": 1 },
51
+ "acquired_at": { "type": "string", "minLength": 1 },
52
+ "generation": { "type": "integer", "minimum": 1 },
53
+ "state": { "enum": ["active", "released"] }
54
+ }
55
+ },
56
+ "history": {
57
+ "type": "object",
58
+ "additionalProperties": true,
59
+ "description": "Optional append-only Journey history wrapper",
60
+ "properties": {
61
+ "decisions": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
62
+ "authority_events": { "type": "array", "items": { "type": "object", "additionalProperties": true } }
63
+ }
64
+ },
65
+ "decisions": {
66
+ "type": "array",
67
+ "description": "Append-only confirmed owner decisions",
68
+ "items": { "type": "object", "additionalProperties": true }
69
+ },
70
+ "authority_events": {
71
+ "type": "array",
72
+ "description": "Append-only authority grant, amend, revoke, or supersede events",
73
+ "items": { "type": "object", "additionalProperties": true }
74
+ },
75
+ "open_decisions": {
76
+ "type": "array",
77
+ "items": { "type": "object", "additionalProperties": true }
78
+ },
79
+ "planning_receipts": {
80
+ "type": "array",
81
+ "items": { "type": "object", "additionalProperties": true }
82
+ },
83
+ "lineup_selection": {
84
+ "type": "object",
85
+ "additionalProperties": true
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,145 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/alphazede/bearing-lite/schemas/lineups.schema.json",
4
+ "title": "Bearing Lite lineups.json",
5
+ "description": "User-owned named lineup catalog. Packaged bytes stay an empty catalog with no defaults. Selection is not an authority grant.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema_version",
10
+ "lineups"
11
+ ],
12
+ "properties": {
13
+ "schema_version": {
14
+ "type": "integer",
15
+ "const": 1,
16
+ "description": "Integer 1. The string \"1\" used by Journey artifacts is invalid here."
17
+ },
18
+ "lineups": {
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
+ "assignment": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": [
101
+ "role",
102
+ "primary",
103
+ "ordered_fallbacks"
104
+ ],
105
+ "properties": {
106
+ "role": {
107
+ "type": "string",
108
+ "minLength": 1
109
+ },
110
+ "primary": {
111
+ "$ref": "#/$defs/identity"
112
+ },
113
+ "ordered_fallbacks": {
114
+ "type": "array",
115
+ "items": {
116
+ "$ref": "#/$defs/fallback"
117
+ }
118
+ }
119
+ }
120
+ },
121
+ "phase": {
122
+ "type": "array",
123
+ "minItems": 1,
124
+ "items": {
125
+ "$ref": "#/$defs/assignment"
126
+ }
127
+ },
128
+ "profile": {
129
+ "type": "object",
130
+ "additionalProperties": false,
131
+ "required": [
132
+ "planned_planning_assignments",
133
+ "implementation_assignments"
134
+ ],
135
+ "properties": {
136
+ "planned_planning_assignments": {
137
+ "$ref": "#/$defs/phase"
138
+ },
139
+ "implementation_assignments": {
140
+ "$ref": "#/$defs/phase"
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,108 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/alphazede/bearing-lite/schemas/seit.schema.json",
4
+ "title": "Bearing Lite seit.json",
5
+ "description": "Canonical JSON Schema-validated tailored V&V plan. CONTRACT-EMV-007 always-on sections must appear as named objects or lists with content, not as a labels-only always_on_sections array: scope/baseline; responsibility/change authority; applicable documents/precedence; requirements flowdown/architecture context; V&V methods; verification and validation matrices; levels/integration sequence; environments/fixtures/data/simulations/support; procedures/commands; evidence/pass-fail; anomaly/corrective/closure. System fields only where applicable. Proof cases require the full canonical field set including observable_evidence and pass_fail_rule. Extra lifecycle metadata is allowed.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "schema_version",
10
+ "source_baseline",
11
+ "decision_baseline",
12
+ "responsibility_and_change_authority",
13
+ "applicable_documents_and_precedence",
14
+ "system_description_and_requirements_flowdown",
15
+ "vv_methods",
16
+ "levels",
17
+ "environments_fixtures_data_simulations_support",
18
+ "procedures_and_commands",
19
+ "evidence_and_pass_fail",
20
+ "anomaly_corrective_closure",
21
+ "integration_vv_sequence",
22
+ "proof_cases"
23
+ ],
24
+ "$defs": {
25
+ "contentfulObject": {
26
+ "type": "object",
27
+ "minProperties": 1,
28
+ "additionalProperties": true
29
+ },
30
+ "contentfulArray": {
31
+ "type": "array",
32
+ "minItems": 1
33
+ },
34
+ "contentfulString": {
35
+ "type": "string",
36
+ "minLength": 1
37
+ },
38
+ "proofCase": {
39
+ "type": "object",
40
+ "additionalProperties": true,
41
+ "required": [
42
+ "id",
43
+ "kind",
44
+ "requirement_id",
45
+ "design_id",
46
+ "command_id",
47
+ "method",
48
+ "preconditions",
49
+ "stimulus_or_procedure",
50
+ "expected_result",
51
+ "observable_evidence",
52
+ "pass_fail_rule",
53
+ "method_fields",
54
+ "negative_or_failure_case"
55
+ ],
56
+ "properties": {
57
+ "id": { "$ref": "#/$defs/contentfulString" },
58
+ "kind": { "$ref": "#/$defs/contentfulString" },
59
+ "requirement_id": { "$ref": "#/$defs/contentfulString" },
60
+ "design_id": { "$ref": "#/$defs/contentfulString" },
61
+ "command_id": { "$ref": "#/$defs/contentfulString" },
62
+ "method": { "$ref": "#/$defs/contentfulString" },
63
+ "preconditions": {
64
+ "type": "array",
65
+ "minItems": 1,
66
+ "items": { "type": "string", "minLength": 1 }
67
+ },
68
+ "stimulus_or_procedure": { "$ref": "#/$defs/contentfulString" },
69
+ "expected_result": { "$ref": "#/$defs/contentfulString" },
70
+ "observable_evidence": { "$ref": "#/$defs/contentfulString" },
71
+ "pass_fail_rule": { "$ref": "#/$defs/contentfulString" },
72
+ "method_fields": { "$ref": "#/$defs/contentfulObject" },
73
+ "negative_or_failure_case": { "$ref": "#/$defs/contentfulString" }
74
+ }
75
+ }
76
+ },
77
+ "properties": {
78
+ "schema_version": { "$ref": "#/$defs/contentfulString" },
79
+ "artifact": { "$ref": "#/$defs/contentfulObject" },
80
+ "source_baseline": { "$ref": "#/$defs/contentfulObject" },
81
+ "decision_baseline": {
82
+ "type": "object",
83
+ "minProperties": 1,
84
+ "additionalProperties": true,
85
+ "description": "Stable decision-baseline projection of confirmed decision identities and open-item statuses. Not the whole-file journey.json digest.",
86
+ "properties": {
87
+ "kind": { "type": "string" },
88
+ "confirmed_decisions": { "type": "object", "additionalProperties": true },
89
+ "open_items": { "type": "array", "items": { "type": "object", "additionalProperties": true } }
90
+ }
91
+ },
92
+ "responsibility_and_change_authority": { "$ref": "#/$defs/contentfulObject" },
93
+ "applicable_documents_and_precedence": { "$ref": "#/$defs/contentfulObject" },
94
+ "system_description_and_requirements_flowdown": { "$ref": "#/$defs/contentfulObject" },
95
+ "vv_methods": { "$ref": "#/$defs/contentfulObject" },
96
+ "levels": { "$ref": "#/$defs/contentfulArray" },
97
+ "environments_fixtures_data_simulations_support": { "$ref": "#/$defs/contentfulObject" },
98
+ "procedures_and_commands": { "$ref": "#/$defs/contentfulArray" },
99
+ "evidence_and_pass_fail": { "$ref": "#/$defs/contentfulObject" },
100
+ "anomaly_corrective_closure": { "$ref": "#/$defs/contentfulObject" },
101
+ "integration_vv_sequence": { "$ref": "#/$defs/contentfulArray" },
102
+ "proof_cases": {
103
+ "type": "array",
104
+ "minItems": 1,
105
+ "items": { "$ref": "#/$defs/proofCase" }
106
+ }
107
+ }
108
+ }
@@ -10,37 +10,37 @@ planning nodes return owner questions. Plugin hosts are partial; skill-copy is s
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
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 proposed copy
14
- from `templates/default-role-lineup.md`;
15
- never infer identity values. The recorded snapshot is authoritative for this Journey.
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.
16
15
  Later edits to
17
16
  `~/.agents/bearing-lite/default-role-lineup.md` have no effect on it except through an
18
17
  explicit owner-confirmed dated visible amendment. Dispatch uses lineup identity from the recorded snapshot.
19
18
  4. Run Repository Fit → Set Bearings → Gather Supplies; unresolved material intent blocks Map the Route.
20
19
  5. Invoke Map the Route after settled intent. Do not ask for lineup or route
21
20
  before it; carry owner-supplied lineup and `review_cadence: at-end` as proposals.
22
- 6. On `PLAN_REVIEW_READY`, enforce `references/review-policy.md`: one candidate,
23
- unique independent slots, one round and aggregated repair, deterministic PASS,
24
- no rereview. Journey snapshots bind slots; validation never dispatches. Show one integrated
21
+ Follow `references/lineups.md` for catalog selection and save.
22
+ 6. Enforce `references/review-policy.md`. Show one integrated
25
23
  approval-or-change gate for outcome, design, route, lineup, role states,
26
24
  reasoning, cadence, and plan. Record the approved Journey type and snapshot; regenerate changes.
27
25
  Never add a staged lineup or route-review gate.
28
26
  Dispatch only after approval.
29
- 7. Dispatch from the snapshot. Crewmate and Explorer may continue in-wave unchanged.
30
- Validate the lease at wave start, after drift, and before commit; use the visible wave receipt
31
- and update implementation and review once per wave.
27
+ 7. Crewmate and Explorer may continue in-wave.
28
+ Use the visible wave receipt and update implementation and review once per wave.
32
29
 
33
- Return `READY`, `WAITING_ON`, `OWNER_DECISION_REQUIRED`, or `COMPLETE`. Three
34
- evidence-changing corrections outside assurance.
35
- `max_assurance_rounds` is 1 per Journey; Direct route checks `assurance_rounds`, never
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
36
33
  dispatch Navigator, and one review may authorize one repair. Verify repair
37
34
  deterministically without another review; failed repair/scope change returns
38
- `OWNER_DECISION_REQUIRED` naming the candidate and count. Only a separately scoped,
39
- materially changed new Journey resets review allowance. `COMPLETE` ends Bearing assurance.
40
- Authorized deployment keeps checks without reopening review.
35
+ `OWNER_DECISION_REQUIRED` naming the candidate and count. `COMPLETE` ends Bearing assurance.
36
+ Authorized deployment without reopening review.
41
37
  Planning review is a separate pre-dispatch gate; it never consumes implementation
42
38
  `required_assurance`, `assurance_rounds`, or `max_assurance_rounds`.
43
39
  Release the lease once: release the checkout lease exactly once on `COMPLETE` or `CANCELLED`;
44
40
  recovery needs explicit recorded generation increment.
45
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
46
  Never implement, self-assure, select models, or publish.