@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,363 @@
1
+ ---
2
+ schema: recommendations
3
+ version: v0.3
4
+ date: 2026-05-24
5
+ status: active
6
+ ---
7
+
8
+ # Recommendations schema — v0.3
9
+
10
+ *Authoritative versioned spec for the recommendations file format that all packs produce and Pilot reads.*
11
+
12
+ This document is the authoritative spec. Every pack's recommendations skill writes a file that conforms to this shape. `/pilot-roadmap` reads those files and trusts them — it does not re-evaluate upstream sources. If a pack's output diverges from this spec, Pilot's merge step degrades silently.
13
+
14
+ ---
15
+
16
+ ## 1. File naming convention
17
+
18
+ ```
19
+ docs/<pack>/<pack>-recommendations.md
20
+ ```
21
+
22
+ | Pack | File path |
23
+ |---|---|
24
+ | Compass | `docs/compass/compass-recommendations.md` |
25
+ | Layers+ | `docs/layers-plus/layers-plus-recommendations.md` |
26
+ | Ally | `docs/ally/ally-recommendations.md` |
27
+ | Rubric | `docs/rubric/rubric-recommendations.md` |
28
+ | Maven | `docs/maven/maven-recommendations.md` |
29
+ | Forge | `docs/forge/forge-recommendations.md` |
30
+ | Helm | `docs/helm/helm-recommendations.md` |
31
+ | Verify | `docs/verify/verify-recommendations.md` |
32
+ | Guard | `docs/guard/guard-recommendations.md` |
33
+ | Charter | `docs/charter/charter-recommendations.md` |
34
+ | Anchor | `docs/anchor/anchor-recommendations.md` |
35
+ | Ledger | `docs/ledger/ledger-recommendations.md` |
36
+ | Roster | `docs/roster/roster-recommendations.md` |
37
+ | Pitch | `docs/pitch/pitch-recommendations.md` |
38
+
39
+ The filename is stable across re-runs. The skill overwrites in place; the roadmap always reads the latest snapshot.
40
+
41
+ ---
42
+
43
+ ## 2. Required sections
44
+
45
+ Every recommendations file must contain these sections, in this order:
46
+
47
+ 1. **Summary block** — open findings counts by severity, current bottleneck, 1–2 sentence strategy statement
48
+ 2. **Tier 1** — act now (🔴 High findings or Compass T1 moves)
49
+ 3. **Tier 2** — plan for (🟡 Medium or Compass T2)
50
+ 4. **Tier 3** — watch (🟢 Low or Compass T3)
51
+ 5. **What's working — don't disrupt** — strengths the recommendations preserve
52
+ 6. **Manual checks required** — findings that need live testing or operator judgement
53
+ 7. **Out of scope / accepted exceptions** — deferred items with rationale and revisit trigger
54
+
55
+ Optional sections (present in some packs, allowed in all):
56
+
57
+ - **Cross-pillar citations** — where this pack's findings link to other packs
58
+ - **Validation gaps** (Maven) — assumptions under 🔴 / 🟡 items not yet tested
59
+ - **Evidence trace** (Compass) — source row IDs, confidence ratings, external signal count
60
+
61
+ ---
62
+
63
+ ## 3. Finding ID format
64
+
65
+ Finding IDs must be stable across re-runs. If a finding is re-run and the underlying issue is unchanged, its ID does not change.
66
+
67
+ ### Format
68
+
69
+ ```
70
+ <PACK-PREFIX><N>
71
+ ```
72
+
73
+ Where `N` is a monotonically increasing integer within the pack's namespace. IDs are never reused for a different finding.
74
+
75
+ ### Registered pack prefixes
76
+
77
+ | Pack | Prefix | Example |
78
+ |---|---|---|
79
+ | Compass / Strategy | `SR` | SR1, SR2 |
80
+ | Layers+ / Tiers | `T1-`, `T2-`, `T3-` | T1-1, T2-3 |
81
+ | Ally | `T1-`, `T2-`, `T3-` | T1-1, T2-2 |
82
+ | Rubric | `RR` | RR1, RR2 |
83
+ | Maven | `MR` | MR1, MR2 |
84
+ | Forge | `FR` | FR1, FR2 |
85
+ | Helm | `HR` | HR1, HR2 |
86
+ | Verify | `VR` | VR1, VR2 |
87
+ | Guard | `GR` | GR1, GR2 |
88
+ | Charter | `CR` | CR1, CR2 |
89
+ | Anchor | `AR` | AR1, AR2 |
90
+ | Ledger | `LR` | LR1, LR2 |
91
+ | Roster | `RO` | RO1, RO2 |
92
+ | Pitch | `PR` | PR1, PR2 |
93
+ | Felt | `FL` | FL1, FL2 |
94
+
95
+ **Note on Layers+ and Ally sharing the `T1-`/`T2-`/`T3-` prefix:** both packs use tier-relative IDs rather than a pack-scoped prefix. When Pilot reads both files, it disambiguates by source file. Verbose mode tags items with their pillar: `[layers-plus:T1-1]` vs `[ally:T1-1]`. This is a known namespace collision — a future schema version may assign distinct prefixes to one or both packs.
96
+
97
+ **Registering a new pack prefix:** add a row to the table above and increment the schema version.
98
+
99
+ ---
100
+
101
+ ## 4. Canonical finding shape
102
+
103
+ This is the most important section. Every finding — whether written as a heading block (Compass/Maven style) or a table row (Layers+/Ally/Rubric style) — must carry these five fields.
104
+
105
+ ```
106
+ id · severity · location · what's wrong · what to do
107
+ ```
108
+
109
+ ### Field definitions
110
+
111
+ | Field | Required | Description |
112
+ |---|---|---|
113
+ | **id** | Yes | Stable pack-prefixed ID (see §3). Never changes between re-runs for the same finding. |
114
+ | **severity** | Yes | 🔴 High / 🟡 Medium / 🟢 Low — consistent scale across all packs (see §5). |
115
+ | **location** | Yes | File path, skill name, zone, route, or surface. Must be specific — not "everywhere" or "the codebase". |
116
+ | **what's wrong** | Yes | One sentence describing the gap, drift, or risk. Describes the current state, not the desired state. |
117
+ | **what to do** | Yes | One concrete action sentence. Describes the fix or move, not the problem. |
118
+ | **evidence trace** | Optional | Source row IDs, confidence ratings, external signal count. Required for Compass lens skills. Recommended for any finding claiming Validated confidence. |
119
+ | **gate-ship** | Optional | `true` / `false` (default: `false`). Set to `true` on findings that must be resolved before `/pilot-ship` proceeds. Only Guard and Verify set this by default; any lane may set it. `/pilot-ship` parses this field across all packs — do not use alternative names (`block`, `block-ship`, etc.). |
120
+
121
+ ### Heading-block format (Compass / Maven)
122
+
123
+ ```markdown
124
+ ### SR1 · Short title
125
+
126
+ **Move:** What to do — one concrete sentence
127
+ **Why now:** What erodes or compounds if this is deferred
128
+ **Effort signal:** Low / Medium / High
129
+ **Closes findings:** [finding IDs this move resolves]
130
+ **Evidence:** [source row IDs, confidence, weight — e.g. "P2 (Hypothesis, Central) · 0 external signals"]
131
+ ```
132
+
133
+ The `**Move:**` field satisfies **what to do**. The heading title + `**Move:**` context satisfies **what's wrong** (implied from the finding being surfaced at all; "Why now:" makes the gap explicit).
134
+
135
+ ### Table-row format (Layers+ / Ally / Rubric)
136
+
137
+ ```markdown
138
+ | ID | Severity | Location | Finding | What to do | Effort |
139
+ |---|---|---|---|---|---|
140
+ | T1-1 | 🔴 High | [zone / file / path] | [one sentence — what's wrong] | [one sentence — what to fix] | M |
141
+ ```
142
+
143
+ The columns map directly to the canonical shape. "Effort" is an extension field — allowed in all packs, not required by the schema.
144
+
145
+ ---
146
+
147
+ ## 5. Tier definitions
148
+
149
+ | Tier | Name | Meaning | Compass label | Ally / Layers+ / Rubric / Maven label |
150
+ |---|---|---|---|---|
151
+ | T1 | Act now | Validated evidence of active erosion or a blocked user group. Deferring costs more. T1 findings must have at least one Validated input — Hypothesis-only evidence drops to T2. | T1 — Act now | 🔴 High |
152
+ | T2 | Plan for | Gap or misalignment that will compound. Not urgent today. Schedule deliberately. | T2 — Plan for | 🟡 Medium |
153
+ | T3 | Watch | Could escalate if an external signal changes. Review quarterly or on trigger. | T3 — Watch | 🟢 Low |
154
+
155
+ The severity emoji (🔴 🟡 🟢) and the Compass tier labels are equivalent views of the same scale. Pilot maps them in both directions when building the merged roadmap.
156
+
157
+ ---
158
+
159
+ ## 6. Confidence / evidence notation
160
+
161
+ Use these terms consistently in evidence traces and frontmatter:
162
+
163
+ | Term | Meaning |
164
+ |---|---|
165
+ | **Validated** | Confirmed by observed output, user data, or external signal. Anchors T1 eligibility. |
166
+ | **Working** | Hypothesis that has been partially tested or is grounded in consistent observed behaviour. T2 default. |
167
+ | **Hypothesis** | Assumed but not yet tested. Cannot anchor a T1 finding without at least one Validated or Working co-source. |
168
+
169
+ **Frontmatter usage (Maven pattern, optional for other packs):**
170
+
171
+ ```yaml
172
+ foundation: validated | hypothesis | missing
173
+ note: "Built without validated positioning. Treat as working hypothesis."
174
+ ```
175
+
176
+ **Finding row usage:**
177
+
178
+ Confidence is expressed in the evidence trace field: `"P2 (Hypothesis, Central) · 0 external signals"`. If a finding has no evidence trace, Pilot assumes Working confidence.
179
+
180
+ ---
181
+
182
+ ## 7. What Pilot reads — how `/pilot-roadmap` consumes this file
183
+
184
+ `/pilot-roadmap` reads each pack's recommendations file as the authoritative source. It does not re-evaluate the upstream sources. The recommendations file is the unit of trust.
185
+
186
+ **Extraction:** Pilot extracts per finding: ID, severity/tier, title, brief description, evidence trace, status (open / in-flight / closed / blocked). The canonical finding shape (§4) makes this extraction deterministic.
187
+
188
+ **Tier mapping:**
189
+
190
+ | Pack output | Roadmap tier |
191
+ |---|---|
192
+ | Compass T1 (Act now) | **Now** |
193
+ | 🔴 High from any other pack | **Now** |
194
+ | Compass T2 (Plan for) | **Next** |
195
+ | 🟡 Medium from any other pack | **Next** |
196
+ | Compass T3 (Watch) | **Watch** |
197
+ | 🟢 Low from any other pack | **Watch** |
198
+ | Closed or Retired | Dropped |
199
+
200
+ **Validated-input gate:** if an item would land in **Now** but its evidence trace is Hypothesis-only or Assumed-only, Pilot demotes it to **Next** and adds a note. This gate is inherited from `/compass-recommendations` and applies across all pillars.
201
+
202
+ **De-duplication:** if two packs surface findings that trace to the same source row or gap, Pilot collapses them into one roadmap item and notes that multiple pillars surfaced it. It does not write two items that rest on the same signal.
203
+
204
+ **Conflict detection:** if two packs recommend opposing actions on the same surface, Pilot surfaces the conflict in the **Conflicts surfaced** section and does not silently pick a side.
205
+
206
+ **Malformed file:** if a recommendations file is structurally unreadable (Pilot cannot extract IDs, tiers, or evidence), Pilot stops and surfaces the parse error. It does not write a degraded roadmap.
207
+
208
+ ---
209
+
210
+ ## 8. Current conformance
211
+
212
+ Assessment against the canonical finding shape (§4): id · severity · location · what's wrong · what to do.
213
+
214
+ ### Compass (`/compass-recommendations`)
215
+
216
+ **Status: Conformant with extensions.**
217
+
218
+ Compass uses heading-block format. All five canonical fields are present:
219
+ - ID: `SR<N>` prefix, stable.
220
+ - Severity: implied by tier (T1 = High, T2 = Medium, T3 = Watch).
221
+ - Location: "Closes findings: [lens finding IDs]" satisfies location indirectly. Location is lens-level, not file-path-level (expected for a strategy layer).
222
+ - What's wrong: `**Why now:**` field.
223
+ - What to do: `**Move:**` field.
224
+ - Evidence trace: present and required (T1 moves must cite at least one Validated source).
225
+
226
+ **Divergence:** Tier 3 uses a table format (signal to watch / trigger to escalate) rather than the heading-block format used for T1/T2. This is intentional and acceptable — T3 items are signals, not moves.
227
+
228
+ ---
229
+
230
+ ### Layers+ (`/layers-plus-roadmap`)
231
+
232
+ **Status: Partially conformant — missing "what's wrong" (Finding) column.**
233
+
234
+ Layers+ uses table-row format. The tier tables have: ID, Item (description), Layer(s), Effort, Findings closed.
235
+
236
+ - ID: `T1-<N>` / `T2-<N>` / `T3-<N>` — conformant.
237
+ - Severity: implied by tier placement — conformant.
238
+ - Location: "Layer(s)" column satisfies location at the layer level — partially conformant (layer name, not file path or zone name).
239
+ - What's wrong: **absent as a distinct column.** The "Item" column contains a fix description (what to do), not a gap description (what's wrong). The two-sided shape (gap + fix) is collapsed into one cell.
240
+ - What to do: present in "Item" column.
241
+
242
+ **Gap:** add a "Finding" column (what's wrong, one sentence) alongside the "Item" column (what to do). Without it, Pilot cannot extract the gap description for the **Why now** briefing in the roadmap.
243
+
244
+ ---
245
+
246
+ ### Ally (`/ally-plan`)
247
+
248
+ **Status: Conformant with extensions.**
249
+
250
+ Ally uses table-row format with: ID, Fix, WCAG, Zones, Routes, Effort, Findings closed.
251
+
252
+ - ID: `T1-<N>` / `T2-<N>` / `T3-<N>` — conformant.
253
+ - Severity: implied by tier — conformant.
254
+ - Location: "Zones" + "Routes" columns provide richer location than the schema requires — conformant and exceeds minimum.
255
+ - What's wrong: the "Findings closed" column links back to zone finding IDs, which carry the gap description in their source files. The recommendations file itself does not restate what's wrong in a dedicated column.
256
+ - What to do: "Fix" column — conformant.
257
+ - Extra: WCAG criterion column — an Ally-specific extension, not in schema but not conflicting.
258
+
259
+ **Minor gap:** the "Finding" (what's wrong) is not restated inline in the recommendations table — it's in the source zone files. Pilot must follow the finding ID back to the zone file to get the gap sentence. Adding a brief "Finding" column to the tier tables (same as Layers+ gap above) would make the recommendations file self-contained.
260
+
261
+ ---
262
+
263
+ ### Rubric (`/rubric-status` → `rubric-recommendations.md`)
264
+
265
+ **Status: Conformant (heading-block format, Compass-style).**
266
+
267
+ Rubric uses heading-block format for T1/T2 and a table for T3. All five canonical fields are present:
268
+ - ID: `RR<N>` — conformant.
269
+ - Severity: implied by tier.
270
+ - Location: "Closes findings:" field cites source finding IDs with file names — conformant.
271
+ - What's wrong: "Why now:" field — conformant.
272
+ - What to do: "Move:" field — conformant.
273
+ - Evidence: present.
274
+
275
+ **Note:** Rubric does not have a dedicated `/rubric-recommendations` skill — the recommendations file is produced by `/rubric-status`. The output conforms; the skill name diverges from the pattern. This is acceptable at v0.1 but should be noted for future skill naming conventions.
276
+
277
+ ---
278
+
279
+ ### Maven (`/maven-recommendations`)
280
+
281
+ **Status: Conformant with extensions.**
282
+
283
+ Maven uses heading-block format for 🔴 / 🟡 and a table for 🟢. All five canonical fields are present:
284
+ - ID: `MR<N>` — conformant.
285
+ - Severity: `🔴 High / 🟡 Medium / 🟢 Low` explicit in section headers — conformant.
286
+ - Location: "Closes gap in:" field cites source files and sections — conformant.
287
+ - What's wrong: "Why now:" field — conformant.
288
+ - What to do: "Move:" field — conformant.
289
+ - Evidence: "Evidence:" field — present and required for 🔴 items.
290
+
291
+ **No gaps against canonical shape.**
292
+
293
+ ---
294
+
295
+ ### Forge (`/forge-recommendations`)
296
+
297
+ **Status: Diverges — see [four-lane-reconciliation.md](../observations/four-lane-reconciliation.md).**
298
+
299
+ Registered prefix: `FR`. Divergences to resolve: missing "What's working", "Manual checks required", "Out of scope" sections (D2); tier vocabulary uses Now/Next/Watch instead of 🔴/🟡/🟢 (D3); `block-ship` annotation not yet normalised to `gate-ship` (D7); evidence trace absent (D4).
300
+
301
+ ---
302
+
303
+ ### Helm (`/helm-recommendations`)
304
+
305
+ **Status: Diverges — see [four-lane-reconciliation.md](../observations/four-lane-reconciliation.md).**
306
+
307
+ Registered prefix: `HR`. Same divergences as Forge (D2, D3, D4, D7).
308
+
309
+ ---
310
+
311
+ ### Verify (`/verify-recommendations`)
312
+
313
+ **Status: Diverges — see [four-lane-reconciliation.md](../observations/four-lane-reconciliation.md).**
314
+
315
+ Registered prefix: `VR`. Same divergences as Forge (D2, D3, D4, D7). Verify is also a ship-gate lane — `gate-ship: true` applies to release-blocking findings.
316
+
317
+ ---
318
+
319
+ ### Guard (`/guard-recommendations`)
320
+
321
+ **Status: Diverges — see [four-lane-reconciliation.md](../observations/four-lane-reconciliation.md).**
322
+
323
+ Registered prefix: `GR`. Same divergences as Forge (D2, D3, D4, D7). Guard is also a ship-gate lane — `gate-ship: true` applies to Critical findings. Guard adds an `accepted-risk` triage state not yet in the base schema; this is a Guard-specific extension.
324
+
325
+ ---
326
+
327
+ ### Charter, Anchor, Ledger, Roster, Pitch
328
+
329
+ **Status: Scaffold only — recommendations skills not yet written.**
330
+
331
+ Registered prefixes: `CR` (Charter), `AR` (Anchor), `LR` (Ledger), `RO` (Roster), `PR` (Pitch). Conformance assessment pending skill development.
332
+
333
+ ---
334
+
335
+ ### Summary table
336
+
337
+ | Pack | ID | Severity | Location | What's wrong | What to do | Evidence trace | Status |
338
+ |---|---|---|---|---|---|---|---|
339
+ | Compass | Conformant | Conformant | Conformant (lens-level) | Conformant | Conformant | Required | **Conformant** |
340
+ | Layers+ | Conformant | Conformant | Partial (layer name only) | **Absent** | Conformant | Not present | **Diverges — missing Finding column** |
341
+ | Ally | Conformant | Conformant | Conformant | Indirect (via finding ID) | Conformant | Not present | **Minor gap — Finding not inline** |
342
+ | Rubric | Conformant | Conformant | Conformant | Conformant | Conformant | Present | **Conformant** |
343
+ | Maven | Conformant | Conformant | Conformant | Conformant | Conformant | Required | **Conformant** |
344
+ | Forge | Pending | Pending | Pending | Pending | Pending | Absent | **Diverges — see reconciliation doc** |
345
+ | Helm | Pending | Pending | Pending | Pending | Pending | Absent | **Diverges — see reconciliation doc** |
346
+ | Verify | Pending | Pending | Pending | Pending | Pending | Absent | **Diverges — see reconciliation doc** |
347
+ | Guard | Pending | Pending | Pending | Pending | Pending | Absent | **Diverges — see reconciliation doc** |
348
+ | Charter / Anchor / Ledger / Roster / Pitch | — | — | — | — | — | — | **Scaffold only** |
349
+
350
+ ---
351
+
352
+ ## 9. Schema changelog
353
+
354
+ | Version | Date | Change |
355
+ |---|---|---|
356
+ | v0.1 | 2026-05-22 | Initial publication — making the implicit schema explicit. No changes to pack skill specs in this version; conformance gaps noted above are addressed as follow-on work. |
357
+ | v0.2 | 2026-05-24 | Register prefixes for 9 new lanes (FR/HR/VR/GR/CR/AR/LR/RO/PR). Add `gate-ship` field to canonical finding shape §4. Add §1 file paths and §8 conformance entries for all new lanes. Reconciliation divergences (D1–D7) documented in four-lane-reconciliation.md; skill-level fixes tracked separately. |
358
+ | v0.3 | 2026-05-24 | Register `FL` prefix for Felt (UX research lane). |
359
+
360
+ ---
361
+
362
+ _Maintained in `pilot` repo · `docs/shared/recommendations-schema.md`_
363
+ _Next review: when any pack skill spec is updated to change its finding table shape, or when a new pack is added._
package/package.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "@keighleykodric/weeve",
3
+ "version": "0.1.0",
4
+ "description": "Cross-functional alignment system — install and manage Weeve lanes",
5
+ "bin": {
6
+ "weeve": "./bin/weeve.js"
7
+ },
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/keighleykodric/weeve.git"
12
+ },
13
+ "keywords": ["weeve", "alignment", "cross-functional", "claude-code", "skills"]
14
+ }