@grainulation/wheat 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +136 -0
  3. package/bin/wheat.js +193 -0
  4. package/compiler/detect-sprints.js +319 -0
  5. package/compiler/generate-manifest.js +280 -0
  6. package/compiler/wheat-compiler.js +1229 -0
  7. package/lib/compiler.js +35 -0
  8. package/lib/connect.js +418 -0
  9. package/lib/disconnect.js +188 -0
  10. package/lib/guard.js +151 -0
  11. package/lib/index.js +14 -0
  12. package/lib/init.js +457 -0
  13. package/lib/install-prompt.js +186 -0
  14. package/lib/quickstart.js +276 -0
  15. package/lib/serve-mcp.js +509 -0
  16. package/lib/server.js +391 -0
  17. package/lib/stats.js +184 -0
  18. package/lib/status.js +135 -0
  19. package/lib/update.js +71 -0
  20. package/package.json +53 -0
  21. package/public/index.html +1798 -0
  22. package/templates/claude.md +122 -0
  23. package/templates/commands/blind-spot.md +47 -0
  24. package/templates/commands/brief.md +73 -0
  25. package/templates/commands/calibrate.md +39 -0
  26. package/templates/commands/challenge.md +72 -0
  27. package/templates/commands/connect.md +104 -0
  28. package/templates/commands/evaluate.md +80 -0
  29. package/templates/commands/feedback.md +60 -0
  30. package/templates/commands/handoff.md +53 -0
  31. package/templates/commands/init.md +68 -0
  32. package/templates/commands/merge.md +51 -0
  33. package/templates/commands/present.md +52 -0
  34. package/templates/commands/prototype.md +68 -0
  35. package/templates/commands/replay.md +61 -0
  36. package/templates/commands/research.md +73 -0
  37. package/templates/commands/resolve.md +42 -0
  38. package/templates/commands/status.md +56 -0
  39. package/templates/commands/witness.md +79 -0
  40. package/templates/explainer.html +343 -0
@@ -0,0 +1,122 @@
1
+ # Wheat — Research Sprint
2
+
3
+ > This file configures Claude Code for Wheat research sprints. It is auto-maintained by `wheat init`. Edit with care.
4
+
5
+ ## Sprint
6
+
7
+ **Question:** {{QUESTION}}
8
+
9
+ **Audience:** {{AUDIENCE}}
10
+
11
+ **Constraints:**
12
+ {{CONSTRAINTS}}
13
+
14
+ **Done looks like:** {{DONE_CRITERIA}}
15
+
16
+ ## Connectors
17
+
18
+ _No connectors configured. Use `/connect` to link org tools._
19
+
20
+ ## Intent Router
21
+
22
+ When the user sends a plain message (no slash command), assess whether a Wheat command applies. If it does, announce which command you're running and execute it. If no command fits, respond normally.
23
+
24
+ **Route by intent:**
25
+
26
+ | User says something like... | Route to | Why |
27
+ |---|---|---|
28
+ | "look into X", "what about X", "explore X", "how does X work" | `/research X` | Information gathering |
29
+ | "build X", "try X", "make a quick X", "test whether X" | `/prototype` | Hands-on validation |
30
+ | "is p001 really true?", "I doubt X", "what if X is wrong" | `/challenge <id>` | Adversarial testing |
31
+ | "check this: <url>", "does <url> support X", "verify X against <url>" | `/witness <id> <url>` | External corroboration |
32
+ | "what are we missing", "any gaps?", "what haven't we considered" | `/blind-spot` | Structural gap analysis |
33
+ | "where are we", "what's the status", "show me the dashboard" | `/status` | Sprint snapshot |
34
+ | "write it up", "give me the recommendation", "summarize for the team" | `/brief` | Decision document |
35
+ | "make slides", "prepare for the meeting" | `/present` | Stakeholder presentation |
36
+ | "someone else is taking over", "hand this off", "document for successor" | `/handoff` | Knowledge transfer |
37
+ | "combine with the other sprint", "merge these" | `/merge <path>` | Cross-sprint merge |
38
+ | "how did we get here", "show the history", "what changed over time" | `/replay` | Sprint archaeology |
39
+ | "we shipped, here's what happened", "actual results were X" | `/calibrate --outcome "X"` | Prediction scoring |
40
+ | "the stakeholder said X", "new constraint: X", "change of direction" | `/feedback` | Stakeholder input |
41
+ | "resolve the conflict", "pick between X and Y" | `/resolve` | Conflict adjudication |
42
+ | "connect to <repo/jira/docs>" | `/connect <type> <target>` | External source linking |
43
+
44
+ **When NOT to route:** Questions about the framework itself ("how does the compiler work?"), code edits to wheat files, general conversation, ambiguous intent. When in doubt, ask: "That sounds like it could be a `/research` -- want me to run it as a full research pass, or just answer the question?"
45
+
46
+ **Announce the routing:** Always tell the user what you're doing:
47
+ > Running as `/research "SSE scalability"` -- this will create claims and compile. Say "just answer" if you wanted a quick response instead.
48
+
49
+ This gives the user a chance to redirect before the full pipeline runs.
50
+
51
+ ### Claims System (Bran IR)
52
+ - All findings are tracked as typed claims in `claims.json`
53
+ - Every slash command that produces findings MUST append claims
54
+ - Every slash command that produces output artifacts MUST run `wheat compile` first
55
+ - Output artifacts consume `compilation.json`, never `claims.json` directly
56
+ - The compiler is the enforcement layer -- if it says blocked, no artifact gets produced
57
+
58
+ ### Claim Types
59
+ - `constraint` -- hard requirements, non-negotiable boundaries
60
+ - `factual` -- verifiable statements about the world
61
+ - `estimate` -- projections, approximations, ranges
62
+ - `risk` -- potential failure modes, concerns
63
+ - `recommendation` -- proposed courses of action
64
+ - `feedback` -- stakeholder input, opinions, direction changes
65
+
66
+ ### Evidence Tiers (lowest to highest)
67
+ 1. `stated` -- stakeholder said it, no verification
68
+ 2. `web` -- found online, not independently verified
69
+ 3. `documented` -- in source code, official docs, or ADRs
70
+ 4. `tested` -- verified via prototype or benchmark
71
+ 5. `production` -- measured from live production systems
72
+
73
+ ### Claim ID Prefixes
74
+ - `d###` -- define phase (from /init)
75
+ - `r###` -- research phase (from /research)
76
+ - `p###` -- prototype phase (from /prototype)
77
+ - `e###` -- evaluate phase (from /evaluate)
78
+ - `f###` -- feedback phase (from /feedback)
79
+ - `x###` -- challenge claims (from /challenge)
80
+ - `w###` -- witness claims (from /witness)
81
+ - `burn-###` -- synthetic claims (from /control-burn, always reverted)
82
+ - `cal###` -- calibration claims (from /calibrate)
83
+ - `<sprint-slug>-<prefix>###` -- merged claims keep original prefix with sprint slug (from /merge)
84
+
85
+ ### Next Command Hints
86
+ Every slash command MUST end its output with a "Next steps" section suggesting 2-4 concrete commands the user could run next, based on the current sprint state. Use this decision tree:
87
+
88
+ - Unresolved conflicts exist -> suggest `/resolve`
89
+ - Claim has no corroboration -> suggest `/witness <id> <relevant-url>`
90
+ - Topic has weak evidence -> suggest `/research <topic>` or `/prototype`
91
+ - Topic has type monoculture -> suggest `/challenge <id>` or `/research <topic>`
92
+ - Sprint is late-phase with gaps -> suggest `/blind-spot`
93
+ - Claims untested against reality -> suggest `/calibrate`
94
+ - Sprint ready for output -> suggest `/brief`, `/present`, or `/handoff`
95
+ - Multiple sprints exist -> suggest `/merge`
96
+ - Want to understand history -> suggest `/replay`
97
+
98
+ Format:
99
+ ```
100
+ Next steps:
101
+ /challenge p001 -- stress-test the zero-deps claim
102
+ /witness r002 <url> -- corroborate fs.watch reliability
103
+ /blind-spot -- check for structural gaps
104
+ ```
105
+
106
+ ### Git Discipline
107
+ - Every slash command that modifies claims.json auto-commits
108
+ - Commit format: `wheat: /<command> <summary> -- added/updated <claim IDs>`
109
+ - `git log --oneline claims.json` = the sprint event log
110
+ - Compilation certificate references the claims hash for reproducibility
111
+
112
+ ### Output Artifacts
113
+ - HTML files are self-contained (inline CSS/JS, no external deps)
114
+ - Use the dark scroll-snap template for explainers and presentations
115
+ - Use the dashboard template for status and comparisons
116
+ - PDFs generated via `node build-pdf.js <file.md>`
117
+
118
+ ### Directory Structure
119
+ - `research/` -- topic explainers (HTML + MD)
120
+ - `prototypes/` -- working proof-of-concepts
121
+ - `evidence/` -- evaluation results and comparison dashboards
122
+ - `output/` -- compiled artifacts (briefs, presentations, dashboards)
@@ -0,0 +1,47 @@
1
+ # /blind-spot — Analyze What's NOT Being Claimed
2
+
3
+ You are scanning the claim set for structural gaps — not what's wrong, but what's *missing*. Read CLAUDE.md for sprint context, claims.json for existing claims, and compilation.json for coverage data.
4
+
5
+ ## Process
6
+
7
+ 1. **Run the compiler** to get fresh data:
8
+ ```bash
9
+ npx @grainulation/wheat compile --summary
10
+ ```
11
+
12
+ 2. **Read compilation.json** for coverage analysis, including source diversity, type diversity, and corroboration data.
13
+
14
+ 3. **Analyze four categories of blind spots**:
15
+
16
+ ### (a) Dependency gaps
17
+ Scan claim content for topic-like nouns that are NOT in the current topic set. If claims reference concepts like "latency," "compliance," "security," "cost," or "performance" but no topic covers those, they're implicit dependencies never addressed.
18
+
19
+ ### (b) Type monoculture
20
+ Check `type_diversity` in coverage for each topic. Flag topics with < 2 distinct claim types. A topic with 5 factual claims but no risks is suspicious — where's the downside analysis?
21
+
22
+ ### (c) Echo chambers
23
+ Check `source_origins` and `source_count` in coverage for each topic. Flag topics where:
24
+ - All claims come from a single source origin (e.g., all "research" with no external feedback)
25
+ - Claims >= 3 but source_count == 1
26
+
27
+ ### (d) Evidence ceiling
28
+ Check `max_evidence` relative to the current sprint phase. If the sprint phase is `prototype` but a key topic is still at `stated` or `web` tier, that's a gap.
29
+
30
+ Phase expectations:
31
+ - `define`: `stated` is fine everywhere
32
+ - `research`: key topics should be at least `web`
33
+ - `prototype`: key topics should be at least `tested`
34
+ - `evaluate`: everything should be `documented` or above
35
+
36
+ 4. **Check dismissed blind spots**: Look for a `dismissed_blind_spots` field in claims.json meta. Don't re-flag items the user has already dismissed.
37
+
38
+ 5. **Print the analysis** to the terminal. This command does NOT modify claims.json — it only reads and reports.
39
+
40
+ ## Tell the user
41
+
42
+ - Present the blind spot analysis clearly
43
+ - For each gap, suggest a specific action (which command to run)
44
+ - Remind them they can dismiss false-positive blind spots by adding to `meta.dismissed_blind_spots`
45
+ - If no blind spots found, say so — a clean bill of health is valuable information
46
+
47
+ $ARGUMENTS
@@ -0,0 +1,73 @@
1
+ # /brief — Compile the decision document
2
+
3
+ You are compiling the final decision brief for this Wheat sprint. This is the Bran compilation step — deterministic output from resolved claims.
4
+
5
+ ## Process
6
+
7
+ 1. **Run the compiler with check**:
8
+ ```bash
9
+ npx @grainulation/wheat compile --check
10
+ ```
11
+
12
+ **If the compiler returns an error (exit code 1), STOP.** Do not generate a brief. Instead:
13
+ - Show the user the compilation errors
14
+ - Explain what needs to be resolved
15
+ - Suggest specific commands to fix each blocker
16
+ - Do NOT proceed until compilation passes
17
+
18
+ 2. **Read compilation.json** — use ONLY `resolved_claims` as your source material. Never read claims.json directly for the brief.
19
+
20
+ 3. **Generate the brief as markdown**: Create `output/brief.md` with this structure:
21
+
22
+ ```markdown
23
+ # Decision Brief: [Sprint Question]
24
+
25
+ **Date**: [date] | **Audience**: [audience] | **Phase**: Compiled
26
+
27
+ ## Executive Summary
28
+ [2-3 sentences: the recommendation and why]
29
+
30
+ ## Recommendation
31
+ [The recommended course of action, with specific next steps]
32
+
33
+ ## Evidence Summary
34
+ [For each topic: key findings, evidence tier, source]
35
+ [Every statement must cite a claim ID]
36
+
37
+ ## Tradeoffs and Risks
38
+ [Risks identified, with evidence tier for each]
39
+
40
+ ## Resolved Conflicts
41
+ [What disagreed, how it was resolved, what evidence won]
42
+
43
+ ## Appendix: Claim Inventory
44
+ [Table of all resolved claims: ID, type, content, evidence, source]
45
+
46
+ ---
47
+ Compilation certificate: [hash] | Compiler: wheat v[version] | Claims: [count] | Compiled: [timestamp]
48
+ ```
49
+
50
+ 4. **Also generate brief as HTML**: Create `output/brief.html` — a clean, print-friendly HTML version for browser viewing.
51
+
52
+ ## Key rules
53
+
54
+ - **Every statement in the brief must trace to a claim ID**. No uncited assertions.
55
+ - **Use only resolved_claims from compilation.json**. Superseded claims are excluded.
56
+ - **Include the compilation certificate** — this is the Bran determinism invariant. Same claims = same brief.
57
+ - **The brief is deterministic**: given the same compilation.json, the structure and content should be reproducible.
58
+
59
+ ## Git commit
60
+
61
+ Stage all output files.
62
+
63
+ Commit: `wheat: /brief compiled — [total] claims, [conflicts resolved] conflicts resolved, certificate [hash]`
64
+
65
+ ## Tell the user
66
+
67
+ - The brief is ready at `output/brief.md` and `output/brief.html`
68
+ - Show the compilation certificate
69
+ - Remind them they can share these with stakeholders
70
+ - Mention `/present` if they need a presentation version
71
+ - Mention `/feedback` for incorporating stakeholder responses
72
+
73
+ $ARGUMENTS
@@ -0,0 +1,39 @@
1
+ # /calibrate — Score Past Predictions Against Reality
2
+
3
+ You are checking what actually happened after a sprint's recommendations were implemented. This closes the feedback loop by comparing predictions to outcomes.
4
+
5
+ ## Process
6
+
7
+ 1. **Parse the outcome**: The user provides outcome data, either as:
8
+ - Free text: `/calibrate --outcome "Shipped Auth0. Took 3 weeks not 2. Costs $18K/year not $15K."`
9
+ - Claim-specific: `/calibrate e003 "actual: 3 weeks, $18K/year"`
10
+
11
+ 2. **Read the sprint data** and match outcomes to original predictions.
12
+
13
+ 3. **Create calibration claims** (`cal###` prefix, evidence: `production`).
14
+
15
+ 4. **Compute accuracy scorecard** by evidence tier, source origin, and claim type.
16
+
17
+ 5. **Write/update calibration.json** and add claims to claims.json:
18
+ ```bash
19
+ npx @grainulation/wheat compile --summary
20
+ ```
21
+
22
+ 6. **Print the scorecard** to the terminal.
23
+
24
+ ## The meta-insight
25
+
26
+ This is the only command that validates the framework itself. If `tested` claims are right 95% of the time and `web` 65%, the tier system works.
27
+
28
+ ## Git commit
29
+
30
+ Commit: `wheat: /calibrate — scored <N> predictions against outcomes`
31
+
32
+ ## Tell the user
33
+
34
+ - The accuracy scorecard
35
+ - Which predictions were wrong and by how much
36
+ - Whether the evidence tier hierarchy is predictive
37
+ - Suggest: future sprints should weight evidence tiers based on this data
38
+
39
+ $ARGUMENTS
@@ -0,0 +1,72 @@
1
+ # /challenge — Structured Devil's Advocacy
2
+
3
+ You are stress-testing a specific claim by researching the **strongest possible counter-argument** with real evidence. Read CLAUDE.md for sprint context and claims.json for existing claims.
4
+
5
+ ## Process
6
+
7
+ 1. **Identify the target claim**: The user's argument is a claim ID (e.g., `p001`). Read that claim from claims.json. If no ID provided, ask the user which claim to challenge.
8
+
9
+ 2. **Understand what's being claimed**: Break down the claim into its core assertions.
10
+
11
+ 3. **Research AGAINST the claim**: Use web search to find the strongest counter-evidence. Search for problems, limitations, failure modes, alternatives, and contradictions. Be adversarial — your job is to find what's wrong, not confirm what's right.
12
+
13
+ Guidelines for research:
14
+ - Focus on factual counter-evidence, not opinion
15
+ - Only challenge claims at `web` tier or above (challenging `stated` is pointless — they're already known-weak)
16
+ - Distinguish "contradicts the claim" from "adds a related concern"
17
+ - Look for: documented bugs, breaking changes, scalability limits, maintenance costs, better alternatives
18
+
19
+ 4. **Create challenge claims**: For each substantive counter-argument found, create a claim with:
20
+ - ID: `x###` prefix (continue sequence from existing x-prefixed claims)
21
+ - `"source.origin": "challenge"`
22
+ - `"source.challenged_claim": "<target claim ID>"`
23
+ - Evidence tier based on what you found (web, documented, etc.)
24
+ - Set `conflicts_with` ONLY if the challenge directly contradicts the target claim's factual assertions.
25
+
26
+ ```json
27
+ {
28
+ "id": "x001",
29
+ "type": "risk|factual",
30
+ "topic": "<same topic as challenged claim>",
31
+ "content": "<specific counter-argument with evidence>",
32
+ "source": {
33
+ "origin": "challenge",
34
+ "challenged_claim": "<target claim ID>",
35
+ "artifact": null,
36
+ "connector": null
37
+ },
38
+ "evidence": "web|documented",
39
+ "status": "active",
40
+ "phase_added": "<current phase>",
41
+ "timestamp": "<ISO timestamp>",
42
+ "conflicts_with": [],
43
+ "resolved_by": null,
44
+ "tags": ["challenge", "<relevant tags>"]
45
+ }
46
+ ```
47
+
48
+ 5. **Run the compiler**:
49
+ ```bash
50
+ npx @grainulation/wheat compile --summary
51
+ ```
52
+ Report whether challenges created new conflicts and whether the compiler auto-resolved any.
53
+
54
+ 6. **Assess the outcome**:
55
+ - If the challenge finds `tested` or `documented` evidence contradicting a `web`-tier claim -> compiler may auto-resolve
56
+ - If same tier -> unresolved conflict -> needs `/resolve`
57
+ - If challenge only raises concerns without contradiction -> no conflict, just enriched claim set
58
+
59
+ ## Git commit
60
+
61
+ Stage claims.json and any new files.
62
+
63
+ Commit: `wheat: /challenge <claim ID> — added <challenge claim IDs>`
64
+
65
+ ## Tell the user
66
+
67
+ - Summarize what you challenged and what you found
68
+ - Flag which challenges contradict vs. add concerns
69
+ - Report compiler status (new conflicts? auto-resolved?)
70
+ - Suggest: `/resolve` if unresolved conflicts, `/witness` to corroborate survivors, more `/challenge` for other claims
71
+
72
+ $ARGUMENTS
@@ -0,0 +1,104 @@
1
+ # /connect — Link an external data source
2
+
3
+ You are connecting an external tool or data source to this Wheat sprint. Connected sources provide higher-quality evidence than web research alone.
4
+
5
+ ## Connector Types
6
+
7
+ ### GitHub Repository
8
+ ```
9
+ /connect github <org/repo>
10
+ ```
11
+ - Read the repo's README, key source files, architecture
12
+ - Extract claims about existing infrastructure, patterns, dependencies
13
+ - Evidence tier: `documented`
14
+ - Track as connector in claims.json source field
15
+
16
+ ### Atlas File
17
+ ```
18
+ /connect atlas <path-to-atlas.yaml>
19
+ ```
20
+ - Read a RepoAtlas-style YAML file for multi-repo routing intelligence
21
+ - Extract claims about repo ownership, dependencies, infrastructure
22
+ - Evidence tier: `documented`
23
+
24
+ ### Jira / Linear (via MCP)
25
+ ```
26
+ /connect jira <project-key>
27
+ ```
28
+ - Read relevant tickets, priorities, blockers
29
+ - Extract constraint and risk claims
30
+ - Evidence tier: `stated` (tickets are stakeholder input)
31
+
32
+ ### Monitoring (Datadog, Grafana, etc.)
33
+ ```
34
+ /connect monitoring <dashboard-name>
35
+ ```
36
+ - Pull current metrics if accessible
37
+ - Evidence tier: `production` (highest tier)
38
+
39
+ ### Confluence / Notion (via MCP)
40
+ ```
41
+ /connect docs <space/page>
42
+ ```
43
+ - Read existing documentation, ADRs, decision records
44
+ - Evidence tier: `documented`
45
+
46
+ ## Process
47
+
48
+ 1. **Parse the argument** to determine connector type and target.
49
+
50
+ 2. **Attempt to access the source**: Use available MCP tools, file system access, or web fetch as appropriate. If the source isn't accessible, tell the user what's needed (MCP server config, file path, etc.)
51
+
52
+ 3. **Extract initial claims**: Pull relevant information and create claims:
53
+
54
+ ```json
55
+ {
56
+ "id": "r0XX",
57
+ "type": "factual|constraint",
58
+ "topic": "<relevant topic>",
59
+ "content": "<extracted finding>",
60
+ "source": {
61
+ "origin": "connector",
62
+ "artifact": null,
63
+ "connector": {
64
+ "type": "<github|atlas|jira|monitoring|docs>",
65
+ "target": "<org/repo or project-key or path>",
66
+ "ref": "<specific file/ticket/page if applicable>",
67
+ "fetched": "<ISO timestamp>"
68
+ }
69
+ },
70
+ "evidence": "documented",
71
+ "status": "active",
72
+ "phase_added": "research",
73
+ "timestamp": "<ISO timestamp>",
74
+ "conflicts_with": [],
75
+ "resolved_by": null,
76
+ "tags": ["connector", "<type>"]
77
+ }
78
+ ```
79
+
80
+ 4. **Register the connector** in claims.json `meta.connectors`:
81
+ ```json
82
+ { "type": "github", "target": "org/repo", "connected": "<ISO timestamp>" }
83
+ ```
84
+
85
+ 5. **Update CLAUDE.md** Connectors section with the new connection.
86
+
87
+ 6. **Run the compiler**:
88
+ ```bash
89
+ npx @grainulation/wheat compile --summary
90
+ ```
91
+
92
+ ## Git commit
93
+
94
+ Stage claims.json, CLAUDE.md, and any new files.
95
+
96
+ Commit: `wheat: /connect <type> <target> — added <claim IDs>`
97
+
98
+ ## Tell the user
99
+
100
+ - Confirm what was connected and what was found
101
+ - List the claims extracted
102
+ - Suggest `/research` to dig deeper into findings, or `/status` to see the updated dashboard
103
+
104
+ $ARGUMENTS
@@ -0,0 +1,80 @@
1
+ # /evaluate — Test claims against reality, resolve conflicts
2
+
3
+ You are running the evaluation phase of the current Wheat sprint. This is the honesty phase — where claims meet data.
4
+
5
+ Read CLAUDE.md for sprint context and claims.json for all existing claims.
6
+
7
+ ## Process
8
+
9
+ 1. **Run the compiler first**:
10
+ ```bash
11
+ npx @grainulation/wheat compile --summary
12
+ ```
13
+ Identify conflicts, weak evidence areas, and coverage gaps.
14
+
15
+ 2. **Evaluate systematically**: For each topic with weak or conflicting evidence:
16
+ - Run benchmarks, cost calculations, feature comparisons
17
+ - Test prototypes against real conditions
18
+ - Pull production metrics from connected tools if available
19
+ - Cross-reference claims against each other
20
+
21
+ 3. **Resolve conflicts**: When evaluation produces a clear answer:
22
+ - Update the winning claim's evidence tier
23
+ - Mark the losing claim as `superseded` with `resolved_by`
24
+ - Add new evaluation claims (evidence: "tested") if needed
25
+
26
+ 4. **Generate comparison dashboard**: Create `evidence/<topic-or-sprint-slug>.html` — a dashboard-style HTML page showing:
27
+ - Side-by-side comparisons with real numbers
28
+ - Conflict resolutions with evidence
29
+ - Data tables, charts (CSS-only), metrics
30
+
31
+ ## Claim updates
32
+
33
+ Evaluation claims use evidence tier `tested` or `production`:
34
+
35
+ ```json
36
+ {
37
+ "id": "e001",
38
+ "type": "factual",
39
+ "topic": "<what was evaluated>",
40
+ "content": "<measured result — always include numbers>",
41
+ "source": {
42
+ "origin": "evaluation",
43
+ "artifact": "evidence/<slug>.html",
44
+ "connector": null
45
+ },
46
+ "evidence": "tested",
47
+ "status": "active",
48
+ "phase_added": "evaluate",
49
+ "timestamp": "<ISO timestamp>",
50
+ "conflicts_with": [],
51
+ "resolved_by": null,
52
+ "tags": []
53
+ }
54
+ ```
55
+
56
+ Update `meta.phase` to "evaluate" in claims.json.
57
+
58
+ ## Run the compiler again
59
+
60
+ ```bash
61
+ npx @grainulation/wheat compile --summary
62
+ ```
63
+
64
+ Verify that conflicts are resolved. If the compiler still shows blockers, tell the user what remains.
65
+
66
+ ## Git commit
67
+
68
+ Stage claims.json and all new/changed files.
69
+
70
+ Commit: `wheat: /evaluate — resolved <conflict details>, added <claim IDs>`
71
+
72
+ ## Tell the user
73
+
74
+ - Show the compilation status (ready or still blocked)
75
+ - Summarize what was evaluated and key findings
76
+ - Point them to the comparison dashboard HTML
77
+ - If ready: suggest `/brief` to compile the decision document
78
+ - If blocked: explain what conflicts remain and how to resolve them
79
+
80
+ $ARGUMENTS
@@ -0,0 +1,60 @@
1
+ # /feedback — Incorporate stakeholder input
2
+
3
+ You are processing feedback from stakeholders for this Wheat sprint. Feedback introduces new claims (usually constraints or direction changes) that may trigger re-evaluation.
4
+
5
+ Read CLAUDE.md and claims.json for context.
6
+
7
+ ## Process
8
+
9
+ 1. **Parse the feedback**: The user's argument contains stakeholder input. This could be:
10
+ - A new constraint ("CTO says prioritize speed over cost")
11
+ - A correction ("the compliance team says we need SOC2 Type II, not Type I")
12
+ - A direction change ("skip the custom build option, focus on Auth0 vs Clerk")
13
+ - A question ("what about latency in EU regions?")
14
+
15
+ 2. **Create claims**: Each piece of feedback becomes a claim:
16
+
17
+ ```json
18
+ {
19
+ "id": "f001",
20
+ "type": "constraint|feedback",
21
+ "topic": "<relevant topic>",
22
+ "content": "<the feedback, attributed>",
23
+ "source": {
24
+ "origin": "stakeholder",
25
+ "artifact": null,
26
+ "connector": null
27
+ },
28
+ "evidence": "stated",
29
+ "status": "active",
30
+ "phase_added": "feedback",
31
+ "timestamp": "<ISO timestamp>",
32
+ "conflicts_with": [],
33
+ "resolved_by": null,
34
+ "tags": ["<stakeholder name or role>"]
35
+ }
36
+ ```
37
+
38
+ 3. **Check for conflicts**: Does this feedback contradict existing claims? If a stakeholder says "budget is $10K max" but existing research shows a solution costing $15K, that's a conflict. Mark it.
39
+
40
+ 4. **Run the compiler**:
41
+ ```bash
42
+ npx @grainulation/wheat compile --summary
43
+ ```
44
+
45
+ 5. **Update CLAUDE.md** if the feedback changes constraints or audience.
46
+
47
+ ## Git commit
48
+
49
+ Stage claims.json, CLAUDE.md, and any changed files.
50
+
51
+ Commit: `wheat: /feedback "<summary>" — added <claim IDs>`
52
+
53
+ ## Tell the user
54
+
55
+ - Confirm what feedback was captured as claims
56
+ - Show any new conflicts introduced
57
+ - If compilation is now blocked, explain what needs re-evaluation
58
+ - Suggest next steps: `/research` for new questions, `/evaluate` to re-test, `/brief` to recompile
59
+
60
+ $ARGUMENTS
@@ -0,0 +1,53 @@
1
+ # /handoff — Package Sprint for Transfer
2
+
3
+ You are generating a self-contained briefing optimized for a **successor** — someone who needs to continue this sprint, not a stakeholder making a decision. Read CLAUDE.md, claims.json, and compilation.json.
4
+
5
+ ## Key distinction from other output commands
6
+
7
+ | Command | Audience | Optimized for |
8
+ |---------|----------|---------------|
9
+ | `/brief` | Decision-makers | "What should we do?" |
10
+ | `/present` | External audiences | Persuasion |
11
+ | `/status` | Current researcher | Snapshot |
12
+ | `/handoff` | Successor | "What do I need to know to continue?" |
13
+
14
+ ## Process
15
+
16
+ 1. **Run the compiler**:
17
+ ```bash
18
+ npx @grainulation/wheat compile --summary
19
+ ```
20
+
21
+ 2. **Read all data sources**:
22
+ - `compilation.json` — current state
23
+ - `claims.json` — all claims including superseded ones (the full history)
24
+ - `git log --oneline claims.json` — the event log
25
+ - `CLAUDE.md` — sprint context and conventions
26
+
27
+ 3. **Build the reasoning chain**: For each topic, reconstruct the narrative:
28
+ - What constraint or question initiated work on this topic?
29
+ - What did research find?
30
+ - Did prototyping confirm or contradict research?
31
+ - Were there conflicts? How were they resolved?
32
+
33
+ 4. **Identify open questions**: From compilation.json:
34
+ - Unresolved conflicts
35
+ - Coverage gaps
36
+ - Unmitigated risks
37
+ - Dismissed blind spots
38
+
39
+ 5. **Generate the handoff document**: Create `output/handoff.md` and `output/handoff.html`.
40
+
41
+ 6. **Print a summary** to the terminal.
42
+
43
+ ## Git commit
44
+
45
+ Commit: `wheat: /handoff — generated sprint handoff document`
46
+
47
+ ## Tell the user
48
+
49
+ - Point them to `output/handoff.md` and `output/handoff.html`
50
+ - Highlight the most important open questions
51
+ - Suggest: `/replay` for detailed timeline, `/blind-spot` for gap analysis
52
+
53
+ $ARGUMENTS