All notable changes to this project will be documented in this file.
fix(pkg): include public/ in npm tarball— the dashboard UI served bywheat servehas been 404'ing on/since 1.0.1, whenpublic/was silently dropped from thefilesarray inpackage.json.public/index.html(the 63KB dashboard template) is now shipped again, sonpx @grainulation/wheat serverenders the dashboard instead of returning HTTP 404.
- New test
test/tarball.test.jsasserts that every load-bearing runtime file (includingpublic/index.html,lib/server.js,lib/serve-mcp.js, the CLI bins, and the compiler bundle) appears innpm pack --dry-run --jsonoutput AND survives a realnpm pack+tar xzfroundtrip. Prevents this class of packaging regression forever — zero new dependencies, Node built-ins only.
lib/serve-mcp.jsnow adopts@grainulation/barn/mcp-crash#installCrashHandlersin place of the ~84-line inline crash handler added in 1.1.6. Behaviour is unchanged (structured JSON on stderr, exit 1 onuncaughtException/unhandledRejection) but every Grainulation MCP server now shares identical semantics.- Test-only env hook renamed from
WHEAT_MCP_CRASH_TESTtoBARN_MCP_CRASH_TESTto match the cross-service helper.
toolDeepwikinow attachesres.on("error")alongside the existingdata/endlisteners. A mid-streamECONNRESET(or otherIncomingMessageerror event) is now reported as a clean JSON-RPC error instead of a potentially unhandlederrorevent on the response body.
@grainulation/barndep bumped^1.2.1→^1.2.2(adds the/mcp-crashsubpath export).
lib/install-prompt.jsroutes~/.grainulation/usage.jsonwrites throughatomicWriteJSONfrom@grainulation/barn/atomic. Concurrent wheat invocations can no longer produce a torn JSON on the usage file.
- Picomatch ReDoS (GHSA-3v7f-55p6-f55p, GHSA-c2c7-rcm5-vvqj). Transitive devDep bumped 2.3.1 → 2.3.2 via
npm audit fix. DevDep-only (via@changesets/cli) — never shipped to consumers; bundle is unchanged.
- CI: install dependencies before running the test matrix (fixes subprocess module resolution)
- CI: prettier pass + MCP test harness chunk-safety fix
(Production-polish sprint release — SBOM + OIDC provenance; refuted status + atomic writes + barn containment shipped.)
- Refactored to use
@grainulation/barnfor JSON-RPC, path guards, and CLI verbose logging — consolidates shared utilities across the ecosystem
- Corrected all user-facing references to the
wheat-mcpinvocation - Corrected MCP package invocation in
wheat init - Removed dead code and unused parameters flagged by eslint audit
- Added missing
execFileSyncimport inserve-mcp.js
- Fixed broken
add-claimexample in the README quick-start - Added SECURITY.md
- README honesty pass (production polish), added
publishConfig, expanded.gitignoreto cover.env - CI: fixed zero-dep gate
- Dropped Node 18 from the CI matrix —
enginesalready required>=20
- DeepWiki link in docs (was broken)
- Wheat chip label shortened from "evidence compiler" to "compiler"
- Bottom padding added to CTA section (32px)
- Tightened margins around the npx install CTA block and CTA section padding (24px → 8px)
- Trimmed npm tarball — removed local-only files from the package
- Revised landing page: contrasting hero, claim definition, before/after, install CTA
- Syntax highlighting on sprint terminal examples
- Aligned meta tags, softened the Jake example, updated ecosystem chip, added tagline
- Centralized environment variables to
defaults.js; removed doc URLs - Static imports in the wheat CLI — eliminated a computed dynamic import
- Inlined compiler calls — eliminated 4
child_processspawns
publish.ymlworkflow — publishing is now manual (token-create-publish-delete)
- CI skips publish when the version already exists on npm
Security hardening release.
- CSP meta tag added (Rx-6)
- MCP
dirparameter is now contained to the workspace (Rx-4) - Fixed a prefix-collision in directory containment by appending
path.sep(w105)
- Missing runtime files added to
.gitignore(Rx-10)
- Restored CI badge and npm downloads badge
claims-ops.jsextracted with new CLI commands:add,search,resolve
- README value-prop rewritten per HN feedback (Rx-3)
- P0 onboarding issues (Rx-001, Rx-005)
- Bearer auth added to the farmer probe and generated hooks (Rx-002)
.farmer-tokenand runtime files added to.gitignore(Rx-003)
- Anti-rationalization tables and personas for the
/challenge,/witness, and/blind-spotslash commands
- Optional
dirparameter on all MCP tool calls for sub-sprint isolation - Parent-directory sprint detection warning in
wheat init - Sub-sprints documentation in README
- MCP Server Troubleshooting section in
templates/claude.md— everywheat initnow includes max-2-retry rule, manual re-add command, and/grainulator:healthcheckreference
--quietmode now skips sprint detection and manifest generation (3.5x faster)detect-sprints.jsconsolidated from 2 batch git calls to 1
- Added CODE_OF_CONDUCT.md and CONTRIBUTING.md
- 14x compile speedup (3.5s to 0.25s) via three changes:
- Batch git queries in detect-sprints.js (2 calls instead of 32)
- Export
buildManifest()from generate-manifest.js for direct import - Replace subprocess spawn in wheat-compiler.js with inline
buildManifest()call
- Slim
compilation.json— strip claim content fromresolved_claims(25% smaller, ~17K fewer tokens per read). Build scripts hydrate content from claims.json on demand.
- MCP server version now reads from package.json instead of hardcoded constant
/briefdefaults to fast next-steps only; full brief is opt-in via--fullflag
wheat initnow accepts--non-interactiveas an alias for--headless- MCP server exposes
wheat/inittool for cross-session sprint bootstrap wheat connect farmernow also runswheat update(slash commands) and writes sprint paths to.farmer-config.json- Added
/nextslash command -- routes next steps through Farmer for mobile feedback - 18 slash command templates (was 17)
- Compiler error messages now show expected claim shape when schema violations are detected
- Pre-commit hook prefers local wheat binary over
npx --yes(addresses Socket supply-chain flag) - MCP server uses
execFileSyncinstead ofexecSync(no shell invocation)
- Rewritten landing page copy for clarity -- plain language, no forced analogies
- Added FAQ entries: "What are claims?", "What's a sprint?", "How is this different from Obra?"
- Added structured data for Google rich results: FAQPage, HowTo, enhanced SoftwareApplication schema
- SEO keywords targeting real search queries (architecture decision, ADR, technology evaluation, Claude Code)
- Updated concepts.md with engineering mental model table and sprint definition
- Updated README tagline and "How it works" section
- All docs now reference 18 slash commands
First stable release. Published to npm as @grainulation/wheat.
First public beta of Wheat, a research sprint framework for structured decision-making.
- CLI entrypoint (
bin/wheat.js) — dispatchesinit,compile,guard,status,updatesubcommands - Conversational init (
lib/init.js) — interactive, quick (--question), and headless (--headless) modes for bootstrapping a sprint in any repo - Bran compiler (
compiler/wheat-compiler.js) — 7-pass compilation pipeline that validates claims, detects conflicts, checks evidence strength, and producescompilation.json - Sprint detection (
compiler/detect-sprints.js) — git-based multi-sprint discovery without config pointers - Manifest generator (
compiler/generate-manifest.js) — topic-map manifest for AI-assisted codebase navigation - Guard hook (
lib/guard.js) — PreToolUse hook for Claude Code that blocks output artifact generation unless compilation is fresh and passing - Status checker (
lib/status.js) — terminal snapshot of sprint health - Command updater (
lib/update.js) — syncs slash command templates to.claude/commands/ - 18 slash command templates —
/research,/prototype,/challenge,/witness,/blind-spot,/status,/brief,/present,/feedback,/resolve,/replay,/calibrate,/handoff,/merge,/connect,/evaluate,/init,/next - CLAUDE.md template — auto-generated AI assistant configuration with intent router
- Explainer HTML template — dark scroll-snap presentation template for output artifacts
- GitHub CI workflow — tests across Node 18, 20, 22; verifies zero dependencies
- Zero npm dependencies — uses only Node built-in modules
bin/wheat.js CLI entrypoint
lib/ Subcommand handlers (init, compile, guard, status, update)
compiler/ Bran compiler + sprint detection + manifest generation
templates/ CLAUDE.md template, slash commands, HTML templates
- Node.js >= 18
- Git (for sprint detection and guard hooks)