@keighleykodric/weeve 0.1.0 → 0.1.2
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 +75 -19
- package/bin/weeve.js +467 -2
- package/examples/core/CODEOWNERS.template +9 -0
- package/examples/core/README.md +63 -0
- package/examples/core/demo/README.md +38 -0
- package/examples/core/demo/weeve/ally/ally-intake.md +16 -0
- package/examples/core/demo/weeve/compass/compass-intake.md +15 -0
- package/examples/core/demo/weeve/layers-plus/figma-notes.md +31 -0
- package/examples/core/demo/weeve/layers-plus/layers-plus-intake.md +13 -0
- package/examples/core/demo/weeve/rubric/component-inventory.md +42 -0
- package/examples/core/demo/weeve/rubric/rubric-intake.md +14 -0
- package/examples/core/demo/weeve/shared/competitive.md +28 -0
- package/examples/core/demo/weeve/shared/roadmap.md +26 -0
- package/examples/core/demo/weeve/shared/weeve-guardrails.md +28 -0
- package/examples/core/demo/weeve/shared/weeve-intake.md +18 -0
- package/examples/core/demo/weeve/shared/weeve-project.md +33 -0
- package/examples/core/demo/weeve.yaml +15 -0
- package/examples/core/weeve.yaml +14 -0
- package/examples/engineering/CODEOWNERS.template +9 -0
- package/examples/engineering/README.md +61 -0
- package/examples/engineering/demo/README.md +20 -0
- package/examples/engineering/demo/weeve/forge/architecture.md +39 -0
- package/examples/engineering/demo/weeve/forge/ci-metrics.md +47 -0
- package/examples/engineering/demo/weeve/forge/forge-intake.md +41 -0
- package/examples/engineering/demo/weeve/guard/guard-intake.md +17 -0
- package/examples/engineering/demo/weeve/helm/helm-intake.md +16 -0
- package/examples/engineering/demo/weeve/helm/incidents.md +40 -0
- package/examples/engineering/demo/weeve/helm/on-call-runbook.md +33 -0
- package/examples/engineering/demo/weeve/shared/roadmap.md +25 -0
- package/examples/engineering/demo/weeve/shared/team.md +33 -0
- package/examples/engineering/demo/weeve/shared/weeve-guardrails.md +27 -0
- package/examples/engineering/demo/weeve/shared/weeve-intake.md +18 -0
- package/examples/engineering/demo/weeve/shared/weeve-project.md +29 -0
- package/examples/engineering/demo/weeve/verify/coverage-report.md +49 -0
- package/examples/engineering/demo/weeve/verify/verify-intake.md +16 -0
- package/examples/engineering/demo/weeve.yaml +15 -0
- package/examples/engineering/weeve.yaml +14 -0
- package/examples/gtm/CODEOWNERS.template +8 -0
- package/examples/gtm/README.md +59 -0
- package/examples/gtm/demo/README.md +19 -0
- package/examples/gtm/demo/weeve/compass/compass-intake.md +15 -0
- package/examples/gtm/demo/weeve/maven/maven-intake.md +35 -0
- package/examples/gtm/demo/weeve/maven/website-notes.md +33 -0
- package/examples/gtm/demo/weeve/pitch/pitch-intake.md +54 -0
- package/examples/gtm/demo/weeve/pitch/sales-deck-notes.md +28 -0
- package/examples/gtm/demo/weeve/pitch/win-loss-notes.md +40 -0
- package/examples/gtm/demo/weeve/shared/competitive.md +30 -0
- package/examples/gtm/demo/weeve/shared/roadmap.md +19 -0
- package/examples/gtm/demo/weeve/shared/weeve-guardrails.md +24 -0
- package/examples/gtm/demo/weeve/shared/weeve-intake.md +18 -0
- package/examples/gtm/demo/weeve/shared/weeve-project.md +25 -0
- package/examples/gtm/demo/weeve.yaml +22 -0
- package/examples/gtm/weeve.yaml +14 -0
- package/examples/product/CODEOWNERS.template +10 -0
- package/examples/product/README.md +67 -0
- package/examples/product/demo/README.md +21 -0
- package/examples/product/demo/weeve/ally/ally-intake.md +16 -0
- package/examples/product/demo/weeve/compass/compass-intake.md +15 -0
- package/examples/product/demo/weeve/felt/felt-intake.md +37 -0
- package/examples/product/demo/weeve/felt/user-research.md +68 -0
- package/examples/product/demo/weeve/layers-plus/layers-plus-intake.md +14 -0
- package/examples/product/demo/weeve/rubric/component-inventory.md +42 -0
- package/examples/product/demo/weeve/rubric/rubric-intake.md +14 -0
- package/examples/product/demo/weeve/shared/competitive.md +28 -0
- package/examples/product/demo/weeve/shared/roadmap.md +32 -0
- package/examples/product/demo/weeve/shared/weeve-guardrails.md +27 -0
- package/examples/product/demo/weeve/shared/weeve-intake.md +18 -0
- package/examples/product/demo/weeve/shared/weeve-project.md +29 -0
- package/examples/product/demo/weeve.yaml +21 -0
- package/examples/product/weeve.yaml +14 -0
- package/examples/strategy/CODEOWNERS.template +8 -0
- package/examples/strategy/README.md +59 -0
- package/examples/strategy/demo/README.md +19 -0
- package/examples/strategy/demo/weeve/compass/compass-intake.md +34 -0
- package/examples/strategy/demo/weeve/compass/customer-segments.md +34 -0
- package/examples/strategy/demo/weeve/layers-plus/layers-plus-intake.md +15 -0
- package/examples/strategy/demo/weeve/maven/maven-intake.md +33 -0
- package/examples/strategy/demo/weeve/shared/competitive.md +40 -0
- package/examples/strategy/demo/weeve/shared/roadmap.md +29 -0
- package/examples/strategy/demo/weeve/shared/weeve-guardrails.md +22 -0
- package/examples/strategy/demo/weeve/shared/weeve-intake.md +17 -0
- package/examples/strategy/demo/weeve/shared/weeve-project.md +25 -0
- package/examples/strategy/demo/weeve.yaml +15 -0
- package/examples/strategy/weeve.yaml +14 -0
- package/package.json +14 -3
- package/spec/contributing-template.md +109 -0
- package/spec/readme-template.md +55 -0
- package/{docs/shared/SHIP-GATE.md → spec/ship-gate.md} +7 -7
- package/spec/signals-schema.md +685 -0
- package/spec/weeve-yaml.md +274 -0
- package/.github/SECURITY.md +0 -22
- package/GOVERNANCE.md +0 -173
- package/WORKFLOW.md +0 -354
- package/docs/shared/engineering-pack-contract.md +0 -94
- package/docs/shared/id-prefix-reference.md +0 -235
- package/docs/shared/idea-intake-pattern.md +0 -99
- package/docs/shared/lane-conventions.md +0 -207
- package/docs/shared/recommendations-schema.md +0 -363
|
@@ -1,99 +0,0 @@
|
|
|
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_
|
|
@@ -1,207 +0,0 @@
|
|
|
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*
|
|
@@ -1,363 +0,0 @@
|
|
|
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._
|