@keighleykodric/weeve 0.1.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.
@@ -0,0 +1,94 @@
1
+ # Engineering pack — contract shape
2
+
3
+ _Pilot reference document · Draft 2026-05-23_
4
+
5
+ This document defines the contract shape for a future engineering pack — what `engineering-recommendations.md` would contain, how findings are tiered, and how Pilot synthesizes it alongside strategy, product, accessibility, design system, and marketing outputs.
6
+
7
+ **Purpose:** Claim the dev lane by defining the schema now, before it's filled. Anyone building an engineering pack for this family has a conformant target to hit. ClaudeFast and successor tools become plug-in candidates rather than competitors.
8
+
9
+ ---
10
+
11
+ ## What the engineering domain covers
12
+
13
+ The engineering domain audits the operator's technical foundation — not whether the product works (that's QA) but whether the team can ship it safely, repeatedly, and at speed.
14
+
15
+ | Subdomain | Questions it asks |
16
+ |---|---|
17
+ | CI/CD pipeline | Is every change tested before merge? Is the deploy path automated and auditable? |
18
+ | Infrastructure | Are environments reproducible? Is there a paper trail for who changed what? |
19
+ | Security posture | Are secrets managed correctly? Are dependencies audited? Is access scoped? |
20
+ | Test coverage | Are the right things tested at the right level (unit / integration / e2e)? |
21
+ | Observability | Can the team detect, diagnose, and recover from failures without tribal knowledge? |
22
+ | Technical debt | Is debt tracked, prioritised, and scheduled — or just accumulated? |
23
+
24
+ The engineering pack audits the operator's *shipping system*, not the product's feature set. Stays in its lane.
25
+
26
+ ---
27
+
28
+ ## `engineering-recommendations.md` — the output recommendations file
29
+
30
+ Follows the shared schema (`docs/shared/recommendations-schema.md` v0.1). Three tiers, stable IDs, evidence-traced.
31
+
32
+ ### Tier 1 — Foundations (fix first)
33
+
34
+ Items that block safe, reliable shipping. Examples:
35
+
36
+ ```
37
+ ENG-T1-1 · 🔴 High · CI/CD · No automated tests run on PR · Every merge is manual trust. Add a test-runner step to the PR pipeline before merge is allowed. · Effort: S
38
+ ENG-T1-2 · 🔴 High · Security · Secrets in source control · Rotate affected credentials immediately; move to env var management (Vault, Doppler, or platform secrets). · Effort: XS
39
+ ENG-T1-3 · 🟡 Medium · Observability · No structured error logging · Errors surface as user complaints, not alerts. Add structured logging to critical paths; wire to an alerting channel. · Effort: M
40
+ ```
41
+
42
+ ### Tier 2 — Layer-specific
43
+
44
+ Targeted improvements within a subdomain once foundations are stable.
45
+
46
+ ```
47
+ ENG-T2-1 · 🟡 Medium · CI/CD · Deploy pipeline has no rollback path · One bad deploy requires manual intervention. Add a rollback trigger to the pipeline. · Effort: S
48
+ ENG-T2-2 · 🟡 Medium · Test coverage · No integration tests for critical user flows · Unit tests pass but flows break at seams. Add integration tests for checkout, auth, and payment paths. · Effort: M
49
+ ```
50
+
51
+ ### Tier 3 — Polish
52
+
53
+ Self-contained improvements with no dependencies.
54
+
55
+ ```
56
+ ENG-T3-1 · 🟢 Low · Technical debt · No debt register · Debt is invisible until it blocks a sprint. Create a lightweight `docs/engineering/debt.md` with known items, effort estimates, and revisit triggers. · Effort: XS
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Pilot synthesis — how it integrates
62
+
63
+ Pilot reads `engineering-recommendations.md` the same way it reads any pack output: looks for the `## Tier 1`, `## Tier 2`, `## Tier 3` sections, extracts items, merges with other pack findings, and surfaces cross-pack conflicts.
64
+
65
+ **Expected cross-pack citations:**
66
+
67
+ | Engineering finding | Cross-pack implication |
68
+ |---|---|
69
+ | No CI pipeline | Ally finding fixes may not ship (no automated gate) — cite in ally-recommendations |
70
+ | No rollback path | Rubric token changes are risky without rollback — cite in rubric-recommendations |
71
+ | Secrets in source control | Compass strategic moves gated on security posture — cite in compass-recommendations |
72
+ | No observability | Layers+ interaction flow findings can't be validated in prod — cite in layers-plus-recommendations |
73
+
74
+ Pilot surfaces these cross-pack conflicts explicitly in `pilot-roadmap.md` rather than silently picking a side.
75
+
76
+ ---
77
+
78
+ ## ID prefix
79
+
80
+ Engineering pack uses `ENG-` prefix for all finding IDs. Tier label included: `ENG-T1-`, `ENG-T2-`, `ENG-T3-`.
81
+
82
+ Qualified cross-pack reference format (per `docs/shared/id-prefix-reference.md`): `ENG::ENG-T1-1`.
83
+
84
+ ---
85
+
86
+ ## Why now
87
+
88
+ The Claude Code skills ecosystem had 15,134 repos indexed by May 2026 and is commoditising. Every adjacent tool (ClaudeFast, Copilot Workspace, Cursor) will eventually cover engineering workflows. The contract shape — what `engineering-recommendations.md` *is* — is at Genesis stage. Defining it now means future tools that want to plug into this family have a target to conform to, rather than a format to compete with.
89
+
90
+ This document is the lane claim. The engineering pack itself can be built by any contributor (internal or external) once the recommendations file shape is clear.
91
+
92
+ ---
93
+
94
+ _Maintained in pilot/docs/shared/ · Referenced by: pilot-roadmap skill, compass-recommendations SR4_
@@ -0,0 +1,235 @@
1
+ # Cross-pack ID prefix reference
2
+
3
+ _Version: 0.2_
4
+ _Published: 2026-05-24_
5
+ _Scope: All lanes — Compass, Layers+, Ally, Rubric, Maven, Forge, Helm, Verify, Guard, Charter, Anchor, Ledger, Roster, Pitch, Pilot_
6
+
7
+ Finding IDs are pack-local. Each pack uses its own prefix system. This document is the single cross-pack reference so Pilot can synthesise across packs without ID collisions.
8
+
9
+ ---
10
+
11
+ ## Pilot
12
+
13
+ Pilot generates its own IDs when synthesising across packs.
14
+
15
+ | Prefix | Meaning | Example |
16
+ |---|---|---|
17
+ | `P-N` | Now batch (current sprint) | `P-N1`, `P-N7` |
18
+ | `P-X` | Next / cross-pack backlog item | `P-X5`, `P-X18` |
19
+ | `P-B` | Backlog (pre-prioritised) | `P-B1` |
20
+ | `P-W` | Watch signal | `P-W1`, `P-W14` |
21
+
22
+ ---
23
+
24
+ ## Compass
25
+
26
+ Compass uses a two-part ID system: primitive-layer prefixes for raw findings, and `SR` prefixes for synthesised strategic recommendations.
27
+
28
+ **Primitive findings (within pack):**
29
+
30
+ | Prefix | Layer | Example |
31
+ |---|---|---|
32
+ | `CI` | Context item (external forces) | `CI5` |
33
+ | `D` | Doctrine finding | `D6` |
34
+ | `J` | JTBD lens finding | `J1`, `J3` |
35
+ | `M` | Move finding | `M1` |
36
+ | `P` | 7 Powers finding | `P2`, `P3` |
37
+ | `W` | Wardley lens finding | `W1`, `W3` |
38
+ | `C` | Choice finding | `C1`, `C4` |
39
+
40
+ **Synthesised recommendations (Pilot-readable recommendations file):**
41
+
42
+ | Prefix | Meaning | Example |
43
+ |---|---|---|
44
+ | `SR` | Strategic recommendation (tiered) | `SR1`, `SR6` |
45
+
46
+ ---
47
+
48
+ ## Layers+
49
+
50
+ Layers+ uses layer-prefixed finding IDs that reflect the seven-layer model. Cross-lens suffixes are appended when findings span accessibility or design system concerns.
51
+
52
+ | Prefix | Layer | Example |
53
+ |---|---|---|
54
+ | `OB` | Observed behaviour | `OB1`, `OB2` |
55
+ | `D` | The domain | `D1` |
56
+ | `UN` | User needs | `UN1` |
57
+ | `ST` | Strategy | `ST1`, `ST2` |
58
+ | `CM` | Conceptual model | `CM2`, `CM-A1`, `CM-DS1` |
59
+ | `IF` | Interaction flow | `IF1`, `IF-A1`, `IF-DS1` |
60
+ | `SU` | Surface | `SU4`, `SU-AP1`, `SU-AR1` |
61
+
62
+ Cross-lens suffix convention:
63
+ - `-A` — accessibility sub-finding (routes to Ally)
64
+ - `-DS` — design system sub-finding (routes to Rubric)
65
+ - `-AP` — accessibility, primary concern
66
+ - `-AR` — accessibility, reach/AT concern
67
+
68
+ **Synthesised recommendations (Pilot-readable recommendations file):**
69
+
70
+ | Prefix | Meaning | Example |
71
+ |---|---|---|
72
+ | `T1-` | Tier 1 recommendation | `T1-1`, `T1-4` |
73
+ | `T2-` | Tier 2 recommendation | `T2-1`, `T2-7` |
74
+ | `T3-` | Tier 3 recommendation | `T3-1`, `T3-4` |
75
+
76
+ ---
77
+
78
+ ## Ally
79
+
80
+ Ally uses zone-prefixed finding IDs. Zone abbreviations match the seven Ally zones.
81
+
82
+ | Prefix | Zone | Example |
83
+ |---|---|---|
84
+ | `Bones-` | Semantic structure | `Bones-M1` |
85
+ | `Flow-` | Keyboard nav / focus | `Flow-M1` |
86
+ | `Signal-` | Contrast / text alternatives | `Signal-M1`, `Signal-M2` |
87
+ | `Control-` | Input / form handling | `Control-M1` |
88
+ | `Ease-` | Cognitive ease / readability | `Ease-H1`, `Ease-M1` |
89
+ | `Calm-` | Motion / sensory | `Calm-L1` |
90
+ | `Reach-` | AT compatibility | `Reach-M1`, `Reach-L1` |
91
+
92
+ Severity suffix: `-H` (High), `-M` (Medium), `-L` (Low), followed by a sequence number.
93
+
94
+ Dashboard-specific findings use `Dashboard-Manual-N`.
95
+
96
+ **Synthesised recommendations (Pilot-readable recommendations file):**
97
+
98
+ | Prefix | Meaning | Example |
99
+ |---|---|---|
100
+ | `T1-` | Tier 1 recommendation | `T1-1`, `T1-3` |
101
+ | `T2-` | Tier 2 recommendation | `T2-1`, `T2-7` |
102
+ | `T3-` | Tier 3 recommendation | `T3-1`, `T3-2` |
103
+
104
+ ---
105
+
106
+ ## Rubric
107
+
108
+ Rubric uses a gap cascade ID system for tickets and cross-references zone-prefixed IDs for findings.
109
+
110
+ | Prefix | Meaning | Example |
111
+ |---|---|---|
112
+ | `G[N]-T[N]` | Gap cascade ticket (Gap number – Ticket number) | `G1-T1`, `G1-T7` |
113
+
114
+ Zone findings within Rubric audits use the same zone abbreviations as Ally (Foundations, Components, Patterns, Voice, Quality gate, Governance, Adoption, Multi-brand) but without standardised short-codes in the current version.
115
+
116
+ **Synthesised recommendations (Pilot-readable recommendations file):**
117
+
118
+ Rubric currently maps its findings to `rubric-recommendations.md` without a formal Tier ID system. Findings are referenced by gap cascade ID (`G1-T1` etc.) or descriptive label. A formal tier structure is a pending addition.
119
+
120
+ ---
121
+
122
+ ## Maven
123
+
124
+ Maven uses `MR` (Maven Recommendation) prefixes for its synthesised output.
125
+
126
+ | Prefix | Meaning | Example |
127
+ |---|---|---|
128
+ | `MR` | Maven recommendation | `MR1`, `MR4` |
129
+
130
+ ---
131
+
132
+ ## Forge
133
+
134
+ | Prefix | Meaning | Example |
135
+ |---|---|---|
136
+ | `FR` | Forge recommendation | `FR1`, `FR4` |
137
+
138
+ Intake IDs are lane-internal (`I<n>`) and not propagated to Pilot.
139
+
140
+ ---
141
+
142
+ ## Helm
143
+
144
+ | Prefix | Meaning | Example |
145
+ |---|---|---|
146
+ | `HR` | Helm recommendation | `HR1`, `HR3` |
147
+
148
+ ---
149
+
150
+ ## Verify
151
+
152
+ | Prefix | Meaning | Example |
153
+ |---|---|---|
154
+ | `VR` | Verify recommendation | `VR1`, `VR2` |
155
+
156
+ ---
157
+
158
+ ## Guard
159
+
160
+ | Prefix | Meaning | Example |
161
+ |---|---|---|
162
+ | `GR` | Guard recommendation | `GR1`, `GR5` |
163
+
164
+ ---
165
+
166
+ ## Charter
167
+
168
+ | Prefix | Meaning | Example |
169
+ |---|---|---|
170
+ | `CR` | Charter recommendation | `CR1`, `CR2` |
171
+
172
+ ---
173
+
174
+ ## Anchor
175
+
176
+ | Prefix | Meaning | Example |
177
+ |---|---|---|
178
+ | `AR` | Anchor recommendation | `AR1`, `AR3` |
179
+
180
+ ---
181
+
182
+ ## Ledger
183
+
184
+ | Prefix | Meaning | Example |
185
+ |---|---|---|
186
+ | `LR` | Ledger recommendation | `LR1`, `LR2` |
187
+
188
+ ---
189
+
190
+ ## Roster
191
+
192
+ | Prefix | Meaning | Example |
193
+ |---|---|---|
194
+ | `RO` | Roster recommendation | `RO1`, `RO2` |
195
+
196
+ ---
197
+
198
+ ## Pitch
199
+
200
+ | Prefix | Meaning | Example |
201
+ |---|---|---|
202
+ | `PR` | Pitch recommendation | `PR1`, `PR3` |
203
+
204
+ ---
205
+
206
+ ## Raw capture (pre-intake)
207
+
208
+ The raw capture step (your notes, daily log, or personal CLI tool) does not generate finding IDs — captured items are routed to the appropriate lane's intake skill, which assigns lane-local IDs.
209
+
210
+ ---
211
+
212
+ ## Collision risk at Pilot synthesis
213
+
214
+ **Known collision risks:**
215
+
216
+ | Pack A | Pack B | Colliding prefix | Notes |
217
+ |---|---|---|---|
218
+ | Compass `D` | Layers+ `D` | `D` | Both use `D` for doctrine/domain findings |
219
+ | Compass `M` | Pilot `P-N` | Low risk | Different contexts |
220
+ | Ally T1/T2/T3 | Layers+ T1/T2/T3 | `T1-`, `T2-`, `T3-` | Same tier numbering, different packs — always qualify with pack name when cross-referencing |
221
+
222
+ **Convention:** When Pilot synthesises across packs, prefix all cited finding IDs with the pack abbreviation:
223
+
224
+ ```
225
+ compass:SR3 → Compass strategic recommendation 3
226
+ layers:T2-7 → Layers+ tier 2, item 7
227
+ ally:Ease-H1 → Ally Ease zone, High severity, finding 1
228
+ rubric:G1-T5 → Rubric gap cascade 1, ticket 5
229
+ maven:MR3 → Maven recommendation 3
230
+ ```
231
+
232
+ ---
233
+
234
+ _Closes: Layers+ CM-DS2 🟡 (no cross-pack ID reference)_
235
+ _Generated: 2026-05-23 · pilot-ship batch_
@@ -0,0 +1,99 @@
1
+ # Idea intake pattern
2
+
3
+ _Pilot reference document · 2026-05-23_
4
+
5
+ A lightweight holding area for working concepts — brand theses, competitive framing extensions, half-formed architectural bets — that aren't ready to be roadmap items but are too important to lose in a daily note.
6
+
7
+ **Problem:** Raw ideas currently land in ad-hoc notes or catch-all files where they get lost or forgotten before they're ready to route anywhere. The pack intake skills (e.g. `/compass-intake`) are too heavy for a working concept — they require enough shape to produce a scoped row with a stable ID.
8
+
9
+ ---
10
+
11
+ ## The holding area
12
+
13
+ Create `context/ideas/` at the repo root. One file per idea, named by date and slug:
14
+
15
+ ```
16
+ context/ideas/
17
+ 2026-05-23-brand-thesis-draft.md
18
+ 2026-05-23-engineering-lane-opportunity.md
19
+ 2026-05-20-referral-wedge-v2.md
20
+ ```
21
+
22
+ ---
23
+
24
+ ## Idea file format
25
+
26
+ Minimal frontmatter, freeform body. No required fields beyond `date` and `title`.
27
+
28
+ ```markdown
29
+ ---
30
+ date: YYYY-MM-DD
31
+ title: Short idea name
32
+ tags: [compass, maven, layers-plus] # optional — which packs this might route to
33
+ status: raw | maturing | ready # default: raw
34
+ ---
35
+
36
+ [Freeform text. No structure required. Write what you'd tell someone in a hallway.]
37
+
38
+ ## Possible next step
39
+ [Optional. One line on what would make this ready to route to a pack intake skill.]
40
+ ```
41
+
42
+ **Status values:**
43
+
44
+ | Status | Meaning |
45
+ |---|---|
46
+ | `raw` | Just captured. May be wrong or incomplete. Don't act on it yet. |
47
+ | `maturing` | Being developed. Some validation in progress. |
48
+ | `ready` | Has enough shape to route to a pack intake skill. |
49
+
50
+ ---
51
+
52
+ ## How ideas graduate
53
+
54
+ An idea is ready to route when it can answer two questions:
55
+
56
+ 1. **Which pack owns the primary slice?** (Compass = strategic bet, Layers+ = product surface, Ally = accessibility concern, Rubric = design system gap, Maven = marketing angle)
57
+ 2. **What's the one-sentence version?** (Enough to write an intake row)
58
+
59
+ When ready, run the relevant pack intake skill:
60
+
61
+ ```
62
+ /compass-intake → strategic ideas, market bets, positioning moves
63
+ /layers-plus-intake → product design changes, UX concerns
64
+ /ally-intake → accessibility gaps or requirements
65
+ /rubric-intake → design system needs
66
+ /maven-intake → marketing ideas, campaign angles
67
+ ```
68
+
69
+ After routing, update the idea file's status to `ready` and note which pack received it. The idea file becomes the origin story for the eventual roadmap item.
70
+
71
+ ---
72
+
73
+ ## What goes here vs. elsewhere
74
+
75
+ | Content type | Where it goes |
76
+ |---|---|
77
+ | Fully-formed strategic intent | `/compass-intake` directly |
78
+ | Half-formed working concept | `context/ideas/` |
79
+ | Daily capture (tasks, decisions) | Your daily note or capture tool |
80
+ | Research findings with a clear home | `/research` in the relevant pack |
81
+ | Confirmed roadmap item | Pack intake → pack recommendations → pilot roadmap |
82
+
83
+ ---
84
+
85
+ ## Linking ideas to roadmap items
86
+
87
+ When an idea graduates and becomes a roadmap item, add a reference in the idea file:
88
+
89
+ ```markdown
90
+ ## Routed
91
+ Compass intake: CI-42 (2026-05-24)
92
+ Roadmap: P-X27 (2026-05-24)
93
+ ```
94
+
95
+ This creates a traceable origin trail: idea → intake row → roadmap item → ship commit.
96
+
97
+ ---
98
+
99
+ _Maintained in pilot/docs/shared/ · Pattern for: all pilot-family projects_
@@ -0,0 +1,207 @@
1
+ # Lane conventions
2
+
3
+ Cross-cutting decisions that apply to every lane. Captured here so we don't re-litigate them per lane.
4
+
5
+ ---
6
+
7
+ ## Lane → team mapping
8
+
9
+ Lanes are framework concepts. Teams are org concepts. CODEOWNERS entries use the team name (function-named), not the lane name.
10
+
11
+ | Lane | Owner team | CODEOWNERS entry |
12
+ |---|---|---|
13
+ | Compass | strategy | `@strategy-team` |
14
+ | Layers+ | product | `@product-team` |
15
+ | Forge | engineering | `@engineering-team` |
16
+ | Helm | platform | `@platform-team` |
17
+ | Verify | qa | `@qa-team` |
18
+ | Guard | security | `@security-team` |
19
+ | Ally | accessibility | `@accessibility-team` |
20
+ | Rubric | design-system | `@design-system-team` |
21
+ | Maven | marketing | `@marketing-team` |
22
+ | Pitch | sales | `@sales-team` |
23
+ | Charter | legal | `@legal-team` |
24
+ | Anchor | support | `@support-team` |
25
+ | Ledger | finance | `@finance-team` |
26
+ | Roster | people | `@people-team` |
27
+ | Felt | ux | `@ux-team` |
28
+ | Pilot | leadership | `@leadership-team` |
29
+
30
+ Rationale: the lane is Weeve's word for the work; the team is the org's word for the people. Org charts shift more often than framework concepts, and the CODEOWNERS file lives in the org's reality.
31
+
32
+ At small/solo scale teams collapse — e.g., `@engineering-team` covers Forge, Helm, Verify, and Guard. The mapping table stays the same; what changes is which humans are in each team.
33
+
34
+ ---
35
+
36
+ ## Skill suffix convention
37
+
38
+ Each lane has a `-check` skill that verifies closed findings are actually resolved. The suffix is `-check`, not `-verify` — `-verify` is reserved as the lane name.
39
+
40
+ Lane | Follow-up skill
41
+ --- | ---
42
+ Forge | `/forge-check`
43
+ Helm | `/helm-check`
44
+ Verify | `/verify-check`
45
+ Guard | `/guard-check`
46
+ Ally | `/ally-check`
47
+ Rubric | `/rubric-check`
48
+ Maven | `/maven-check`
49
+ Compass | `/compass-check`
50
+ Layers+ | `/layers-plus-check`
51
+ Felt | `/felt-check`
52
+
53
+ Yes, `/verify-check` reads slightly recursive. That's the cost of having a lane named Verify and is preferable to inventing a different word per lane (`-followup`, `-confirm`, etc.) and losing tab-completion symmetry.
54
+
55
+ Other standard skill suffixes across all lanes: `-intake`, `-orient`, `-recommendations`, `-dashboard`, `-tickets`, `-triage`, plus one primitive per zone.
56
+
57
+ ---
58
+
59
+ ## Triage states
60
+
61
+ All lanes share a base set of triage states for findings:
62
+
63
+ - `open` — default; awaiting triage
64
+ - `closed` — fix implemented; `/<lane>-check` will verify
65
+ - `deferred` — acknowledged, scheduled for later
66
+ - `dismissed` — not going to act on this; reason recorded
67
+
68
+ Guard adds one more:
69
+
70
+ - `accepted-risk` — explicit risk acceptance with an owner and a review date; lives in `guard-accepted-risks.md` rather than recommendations
71
+
72
+ Verify and Helm may add this state too if adopters ask for explicit "accepted defect" or "accepted operational debt" tracking. For now, `dismissed` covers it.
73
+
74
+ ---
75
+
76
+ ## Severity → ship-guardrail mapping
77
+
78
+ When `/pilot-ship` runs, it consults release-relevant lanes (Guard, Verify, and any others that opt in) to decide whether to block or proceed.
79
+
80
+ Default mapping — canonical reference is Guard's severity model in `GUARD-LANE.md`:
81
+
82
+ | Finding severity | `/pilot-ship` behaviour |
83
+ |---|---|
84
+ | 🔴 Critical | **block** — must be triaged before ship in the affected area; operator override only with recorded reason |
85
+ | 🔴 High | Now item in recommendations; escalated but doesn't gate ship |
86
+ | 🟡 Medium | Next item; tracked with deadline; doesn't gate ship |
87
+ | 🟢 Low | Watch tier; not surfaced at ship time |
88
+
89
+ Only Critical gates ship by default. High findings are surfaced in the ship preview but ship proceeds — they belong on the next-release punch list, not as a stop-everything signal. This keeps the gate meaningful: if every High blocked, the gate stops being credible.
90
+
91
+ Each lane defines what "critical/high/medium/low" means in its domain. Guard is the prototype because its severity model is the most carefully defined; Verify is the other lane that can gate ship (release-readiness blockers).
92
+
93
+ ---
94
+
95
+ ## Sensitive file read-access
96
+
97
+ Most framework files follow "everyone in the org can read everything; gate writes via CODEOWNERS." A few may contain information that warrants tighter read posture:
98
+
99
+ - **Guard** — `guard-threat-model.md`, `guard-infra.md`: attack surface and exposure detail an attacker could use
100
+ - **Compass** (potentially) — unreleased strategic positioning, M&A considerations, sensitive bets
101
+ - **Layers+** (potentially) — unreleased product specifications, embargoed launch material
102
+
103
+ For OSS deployments the repo's existing access model governs — keep the alignment repo private, or move sensitive lane files to a separate private repo with cross-references from the main one. This needs a documented pattern before org rollout.
104
+
105
+ For SaaS deployments, per-file read access is a deferred feature in `GOVERNANCE.md`.
106
+
107
+ Lanes producing sensitive output should call out the relevant files explicitly in their own draft (Guard already does this in its CODEOWNERS section). When in doubt, default to "treat as sensitive" — easier to relax later than to retract.
108
+
109
+ ---
110
+
111
+ ## Intake row schema
112
+
113
+ Every lane's `/<lane>-intake` skill creates rows with the same metadata so Pilot can trace any finding back to its origin without lane-specific parsing.
114
+
115
+ ```yaml
116
+ id: I<N> # e.g., I1, I42 — lane is implied by the file it lives in
117
+ source: <freeform string> # e.g., "pen-test 2026-Q2", "post-mortem #34", "reviewer comment"
118
+ reporter: <handle or email>
119
+ date: <ISO 8601>
120
+ evidence: # optional; links to artifacts
121
+ - type: <log|ticket|doc|url>
122
+ ref: <path or url>
123
+ body: <finding text>
124
+ ```
125
+
126
+ Intake IDs use `I<N>` — a simple monotonic integer within the lane. The lane name is already implied by the file (`forge-intake.md`, `guard-intake.md`, etc.) so a lane prefix in the ID is redundant. Do not use `FORGE-0142`-style IDs — they are verbose and create false symmetry with the recommendations prefix system (`FR`, `HR`, etc.), which is Pilot-readable. Intake IDs are lane-internal only and are never propagated to Pilot.
127
+
128
+ Intake rows are pre-triage. They move into a zone file when a primitive skill processes them.
129
+
130
+ ---
131
+
132
+ ## Tier vocabulary — pack vs Pilot
133
+
134
+ There are two tier vocabularies in Weeve. They mean the same thing but live at different layers.
135
+
136
+ | Context | Vocabulary | Used by |
137
+ |---|---|---|
138
+ | Pack recommendations files | 🔴 High / 🟡 Medium / 🟢 Low | All lanes except Compass |
139
+ | Compass recommendations file | T1 — Act now / T2 — Plan for / T3 — Watch | Compass only |
140
+ | Pilot merged roadmap | **Now / Next / Watch** | Pilot only — `/pilot-roadmap` output |
141
+
142
+ **Rule:** Pack skills write 🔴/🟡/🟢 (or T1/T2/T3 for Compass). Pilot reads them and maps to Now/Next/Watch in the roadmap. Never use Now/Next/Watch in a lane's own recommendations file — that vocabulary belongs to the synthesis layer.
143
+
144
+ Pilot's tier mapping: 🔴 High → Now, 🟡 Medium → Next, 🟢 Low → Watch. Compass T1 → Now, T2 → Next, T3 → Watch.
145
+
146
+ ---
147
+
148
+ ## The four delivery lanes
149
+
150
+ Forge, Helm, Verify, and Guard form a delivery group. They run together after Layers+ establishes the product model, and feed Pilot together. Within the group:
151
+
152
+ - **Sequential:** Forge → Helm → Verify (each informs the next)
153
+ - **Parallel:** Guard runs alongside, since its inputs don't depend on the others
154
+
155
+ The group is referred to as "the four delivery lanes" — not as "the delivery triad plus security" or "engineering and its dependents." Security is a peer lane in the group, though it plays a distinct role: Guard is the only lane that can hard-block `/pilot-ship` by default (Verify can also gate release-readiness).
156
+
157
+ ---
158
+
159
+ ## Future lanes
160
+
161
+ ### Planned
162
+
163
+ - **People Ops** — owns team health, hiring posture, on-call sustainability, organisational capacity against roadmap. Brushes against Helm (on-call load) and Verify (triage discipline) today; planned as its own lane.
164
+
165
+ ### Not planned (watch for adopter pressure)
166
+
167
+ - **Data / Analytics** — would own instrumentation coverage, event schema health, metric definitions, experiment infrastructure. Currently no home; Forge would absorb badly (it's not code health), Layers+ won't (it's not product model). Could become a lane or a zone in Layers+ if an adopter raises it.
168
+ - **FinOps** — infrastructure cost is currently one zone in Helm. Could become its own lane for cost-primary adopters. Not planned; revisit if adopter pressure shows.
169
+ - **AI / ML** — model behaviour, eval posture, prompt-injection surface, training data posture sit awkwardly across Forge / Verify / Guard. Guard's `guard-appsec` zone covers the security surface; the rest would need a dedicated lane. Not planned until Weeve has AI-product adopters at scale.
170
+
171
+ ### Out of scope
172
+
173
+ - **HR / People management** — Pilot is a code-and-system framework, not an org framework. People Ops covers the work-systems side; broader HR is not a framework concern.
174
+
175
+ ---
176
+
177
+ ## Missing prerequisite files — canonical failure path
178
+
179
+ Skills read files produced by other skills. When a prerequisite file is missing, Weeve enforces one canonical behaviour: **warn and proceed**.
180
+
181
+ ### Pattern
182
+
183
+ ```
184
+ ⚠ [filename] not found — proceeding without [what it provides]. Run /[skill] to generate it.
185
+ ```
186
+
187
+ Example:
188
+
189
+ ```
190
+ ⚠ guard-recommendations.md not found — proceeding without security findings. Run /guard-recommendations to generate it.
191
+ ```
192
+
193
+ ### Rules
194
+
195
+ 1. **Never silently skip.** If a skill expects an input file and the file is missing, the skill must emit the warning line above so the operator knows what's absent and how to produce it.
196
+ 2. **Never hard-stop on a missing optional input.** A missing recommendations file, dashboard, or intake file is not a reason to abort. The skill produces the best output it can with the inputs it has and tells the operator what's missing.
197
+ 3. **Exception: `/pilot-ship` gate-ship check.** Gate-ship is the one place a hard stop is justified. If a gate-relevant lane file (e.g., `guard-recommendations.md`, `verify-recommendations.md`) contains unresolved Critical findings — or is missing entirely when the lane is registered — `/pilot-ship` may block the release. This is by design: the gate exists to prevent shipping without safety confirmation.
198
+
199
+ ### Rationale
200
+
201
+ - **Silent skip** hides problems. The operator sees a clean output and assumes everything was considered. This is the worst failure mode because it erodes trust invisibly.
202
+ - **Hard stop** on optional inputs makes Weeve brittle. A solo operator running only two lanes shouldn't be blocked because a third lane's file doesn't exist yet. Weeve should degrade gracefully.
203
+ - **Warn and proceed** gives the operator agency: they see what's missing, they know the command to fix it, and they decide whether to act now or continue.
204
+
205
+ ---
206
+
207
+ *Draft · docs/shared/lane-conventions.md · 2026-05-25*