thevoidforge 21.0.11 → 21.0.13

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 (108) hide show
  1. package/dist/.claude/commands/ai.md +69 -0
  2. package/dist/.claude/commands/architect.md +121 -0
  3. package/dist/.claude/commands/assemble.md +201 -0
  4. package/dist/.claude/commands/assess.md +75 -0
  5. package/dist/.claude/commands/blueprint.md +135 -0
  6. package/dist/.claude/commands/build.md +116 -0
  7. package/dist/.claude/commands/campaign.md +201 -0
  8. package/dist/.claude/commands/cultivation.md +166 -0
  9. package/dist/.claude/commands/current.md +128 -0
  10. package/dist/.claude/commands/dangerroom.md +74 -0
  11. package/dist/.claude/commands/debrief.md +178 -0
  12. package/dist/.claude/commands/deploy.md +99 -0
  13. package/dist/.claude/commands/devops.md +143 -0
  14. package/dist/.claude/commands/gauntlet.md +140 -0
  15. package/dist/.claude/commands/git.md +104 -0
  16. package/dist/.claude/commands/grow.md +146 -0
  17. package/dist/.claude/commands/imagine.md +126 -0
  18. package/dist/.claude/commands/portfolio.md +50 -0
  19. package/dist/.claude/commands/prd.md +113 -0
  20. package/dist/.claude/commands/qa.md +107 -0
  21. package/dist/.claude/commands/review.md +151 -0
  22. package/dist/.claude/commands/security.md +100 -0
  23. package/dist/.claude/commands/test.md +96 -0
  24. package/dist/.claude/commands/thumper.md +116 -0
  25. package/dist/.claude/commands/treasury.md +100 -0
  26. package/dist/.claude/commands/ux.md +118 -0
  27. package/dist/.claude/commands/vault.md +189 -0
  28. package/dist/.claude/commands/void.md +108 -0
  29. package/dist/CHANGELOG.md +1918 -0
  30. package/dist/CLAUDE.md +250 -0
  31. package/dist/HOLOCRON.md +856 -0
  32. package/dist/VERSION.md +123 -0
  33. package/dist/docs/NAMING_REGISTRY.md +478 -0
  34. package/dist/docs/methods/AI_INTELLIGENCE.md +276 -0
  35. package/dist/docs/methods/ASSEMBLER.md +142 -0
  36. package/dist/docs/methods/BACKEND_ENGINEER.md +165 -0
  37. package/dist/docs/methods/BUILD_JOURNAL.md +185 -0
  38. package/dist/docs/methods/BUILD_PROTOCOL.md +426 -0
  39. package/dist/docs/methods/CAMPAIGN.md +568 -0
  40. package/dist/docs/methods/CONTEXT_MANAGEMENT.md +189 -0
  41. package/dist/docs/methods/DEEP_CURRENT.md +184 -0
  42. package/dist/docs/methods/DEVOPS_ENGINEER.md +295 -0
  43. package/dist/docs/methods/FIELD_MEDIC.md +261 -0
  44. package/dist/docs/methods/FORGE_ARTIST.md +108 -0
  45. package/dist/docs/methods/FORGE_KEEPER.md +268 -0
  46. package/dist/docs/methods/GAUNTLET.md +344 -0
  47. package/dist/docs/methods/GROWTH_STRATEGIST.md +466 -0
  48. package/dist/docs/methods/HEARTBEAT.md +168 -0
  49. package/dist/docs/methods/MCP_INTEGRATION.md +139 -0
  50. package/dist/docs/methods/MUSTER.md +148 -0
  51. package/dist/docs/methods/PRD_GENERATOR.md +186 -0
  52. package/dist/docs/methods/PRODUCT_DESIGN_FRONTEND.md +250 -0
  53. package/dist/docs/methods/QA_ENGINEER.md +337 -0
  54. package/dist/docs/methods/RELEASE_MANAGER.md +145 -0
  55. package/dist/docs/methods/SECURITY_AUDITOR.md +320 -0
  56. package/dist/docs/methods/SUB_AGENTS.md +335 -0
  57. package/dist/docs/methods/SYSTEMS_ARCHITECT.md +171 -0
  58. package/dist/docs/methods/TESTING.md +359 -0
  59. package/dist/docs/methods/THUMPER.md +175 -0
  60. package/dist/docs/methods/TIME_VAULT.md +120 -0
  61. package/dist/docs/methods/TREASURY.md +184 -0
  62. package/dist/docs/methods/TROUBLESHOOTING.md +265 -0
  63. package/dist/docs/patterns/README.md +52 -0
  64. package/dist/docs/patterns/ad-billing-adapter.ts +537 -0
  65. package/dist/docs/patterns/ad-platform-adapter.ts +421 -0
  66. package/dist/docs/patterns/ai-classifier.ts +195 -0
  67. package/dist/docs/patterns/ai-eval.ts +272 -0
  68. package/dist/docs/patterns/ai-orchestrator.ts +341 -0
  69. package/dist/docs/patterns/ai-router.ts +194 -0
  70. package/dist/docs/patterns/ai-tool-schema.ts +237 -0
  71. package/dist/docs/patterns/api-route.ts +241 -0
  72. package/dist/docs/patterns/backtest-engine.ts +499 -0
  73. package/dist/docs/patterns/browser-review.ts +292 -0
  74. package/dist/docs/patterns/combobox.tsx +300 -0
  75. package/dist/docs/patterns/component.tsx +262 -0
  76. package/dist/docs/patterns/daemon-process.ts +338 -0
  77. package/dist/docs/patterns/data-pipeline.ts +297 -0
  78. package/dist/docs/patterns/database-migration.ts +466 -0
  79. package/dist/docs/patterns/e2e-test.ts +629 -0
  80. package/dist/docs/patterns/error-handling.ts +312 -0
  81. package/dist/docs/patterns/execution-safety.ts +601 -0
  82. package/dist/docs/patterns/financial-transaction.ts +342 -0
  83. package/dist/docs/patterns/funding-plan.ts +462 -0
  84. package/dist/docs/patterns/game-entity.ts +137 -0
  85. package/dist/docs/patterns/game-loop.ts +113 -0
  86. package/dist/docs/patterns/game-state.ts +143 -0
  87. package/dist/docs/patterns/job-queue.ts +225 -0
  88. package/dist/docs/patterns/kongo-integration.ts +164 -0
  89. package/dist/docs/patterns/middleware.ts +363 -0
  90. package/dist/docs/patterns/mobile-screen.tsx +139 -0
  91. package/dist/docs/patterns/mobile-service.ts +167 -0
  92. package/dist/docs/patterns/multi-tenant.ts +382 -0
  93. package/dist/docs/patterns/oauth-token-lifecycle.ts +223 -0
  94. package/dist/docs/patterns/outbound-rate-limiter.ts +260 -0
  95. package/dist/docs/patterns/prompt-template.ts +195 -0
  96. package/dist/docs/patterns/revenue-source-adapter.ts +311 -0
  97. package/dist/docs/patterns/service.ts +224 -0
  98. package/dist/docs/patterns/sse-endpoint.ts +118 -0
  99. package/dist/docs/patterns/stablecoin-adapter.ts +511 -0
  100. package/dist/docs/patterns/third-party-script.ts +68 -0
  101. package/dist/scripts/thumper/gom-jabbar.sh +241 -0
  102. package/dist/scripts/thumper/relay.sh +610 -0
  103. package/dist/scripts/thumper/scan.sh +359 -0
  104. package/dist/scripts/thumper/thumper.sh +190 -0
  105. package/dist/scripts/thumper/water-rings.sh +76 -0
  106. package/dist/wizard/ui/index.html +1 -1
  107. package/package.json +1 -1
  108. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,1918 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
6
+
7
+ ---
8
+
9
+ ## [21.0.0] - 2026-04-08
10
+
11
+ ### Breaking Changes — The Extraction (ADR-038)
12
+
13
+ The wizard is now a standalone npm package. Projects contain methodology only.
14
+
15
+ - **Monorepo structure:** `packages/voidforge/` (wizard+CLI) and `packages/methodology/` (@voidforge/methodology)
16
+ - **CLI router:** `npx voidforge` with 12 commands (init, update, install, uninstall, deploy, doctor, migrate, version, templates, help)
17
+ - **.voidforge marker file:** JSON identity file at project root for CLI detection
18
+ - **Project creation:** `npx voidforge init --headless` creates projects with methodology copy, identity injection, marker, git init
19
+ - **Extension system:** `npx voidforge install <ext>` for danger-room (config) and cultivation (heartbeat, 12 jobs, treasury)
20
+ - **Update mechanisms:** `npx voidforge update` replaces `/void` git-fetch with methodology diff/apply preserving CLAUDE.md identity
21
+ - **Daemon aggregator:** Multi-project heartbeat connection, aggregated KPIs, freeze/unfreeze
22
+ - **v20.x migration:** `npx voidforge migrate` with backup, rollback, dry-run
23
+ - **Tests:** 675 (618 original + 57 new across 7 modules)
24
+
25
+ ### Post-Campaign Tasks
26
+
27
+ - [ ] npm account creation for publishing
28
+ - [ ] Deprecation commits on scaffold/core branches
29
+ - [ ] CI/CD pipeline for npm publish on git tag
30
+ - [ ] Build pipeline (tsc compile to dist/) for production distribution
31
+
32
+ ---
33
+
34
+ ## [20.2.0] - 2026-04-03
35
+
36
+ ### Added
37
+ - **ADR-037: Graceful Tier Degradation** — sentinel file check, methodology-only fallback, --audit-only expansion, cultivation graceful skip, phantom directory cleanup.
38
+ - **PRD-graceful-degradation.md** — 6 requirements for scaffold /cultivation and /grow experience.
39
+ - **Spring Cleaning migration** in `/void` — auto-cleans leaked main-only files from old scaffold/core clones. Fingerprints ambiguous files before removing. Detects Full-tier wizard usage.
40
+ - **GROWTH_STRATEGIST.md "Scaffold/Core Users"** section — documents which /grow phases work without wizard.
41
+ - **TROUBLESHOOTING.md** — Step 0 (What Changed?), Hypothesis Invalidation, Post-Deploy Debugging Protocol. (Field reports #271, #275)
42
+ - **QA_ENGINEER.md** — Stateful Service Audit: verify runtime state survives restart. (Field report #271)
43
+ - **SECURITY_AUDITOR.md** — Verify Before Transact: read-back verification for >$100 irreversible operations. (Field report #271)
44
+ - **SYSTEMS_ARCHITECT.md** — Strategy Consolidation Check + Access Control Granularity in conflict checklist. (Field reports #273, #274)
45
+ - **GAUNTLET.md** — Troi Marketing Copy Drift Check in standard and Infinity rounds. (Field report #273)
46
+ - **execution-safety.ts** — Derive Don't Accumulate pattern + never raw transfer() to smart contracts. (Field reports #271, #274, #275)
47
+ - **relay.sh** — Transport pre-flight validation at daemon startup for all 3 transports. (Field report #276)
48
+ - **BACKEND_ENGINEER.md** — Stateless by Default: all runtime state must be reconstructable within one startup cycle. (Field report #274)
49
+
50
+ ### Changed
51
+ - **Tier gate sentinel** — all 6 Full-tier commands (`/cultivation`, `/grow`, `/dangerroom`, `/treasury`, `/portfolio`, `/current`) check `wizard/server.ts` not `wizard/` directory. Prevents phantom empty directories from bypassing the gate.
52
+ - **/grow Prerequisites** — "On no" proceeds to Phases 1-3 instead of hard stopping. `--audit-only`, `--seo`, `--content` skip the wizard gate entirely.
53
+ - **/cultivation install** — Steps 4-8 display skip messages when wizard absent. Step 7 shows partial install summary. "On no" proceeds to Steps 1-3.
54
+ - **/grow --audit-only** — expanded from Phase 1 to Phases 1-3 (reconnaissance + foundation + content).
55
+ - **.gitignore** — hardened with keys/certs, coverage, playwright reports, editor backups, settings.json, package-lock.json patterns. `wizard/` added on scaffold/core.
56
+ - **ROADMAP.md** — header updated to v20.2.0.
57
+ - **package.json** — replaced with minimal version on scaffold (name + version + description only, no dependencies).
58
+
59
+ ### Removed
60
+ - **274 files** from scaffold branch — wizard/ (216 files), build configs, main-only scripts, stale v15.2.1 docs, wizard-specific ADRs (32), PRD-VOIDFORGE, PROPHECY, WORKSHOP, marketing copy, package-lock.json. Scaffold: 408 → 134 tracked files.
61
+ - **16 files** from core branch — same categories. Added 3 methodology-relevant ADRs (008, 032, 034).
62
+ - **20 residual wizard files** from scaffold (UI + headless-deploy.ts from earlier incomplete cleanup).
63
+ - **6 field reports closed** — #271 (debugging protocol), #272 (LEARNINGS validated), #273 (marketing drift), #274 (stateless + strategy), #275 (merged with #271), #276 (thumper tmux — 1 accept, 3 wontfix).
64
+
65
+ ---
66
+
67
+ ## [20.1.1] - 2026-04-02
68
+
69
+ ### Changed
70
+ - **Parallel Agent Standard** added to `SUB_AGENTS.md` — standard brief format, structured deliverables, 3-agent concurrency cap, orchestration loop. Main thread orchestrates, sub-agents do the work. Dispatch directives added to ASSEMBLER.md (Rule 11), GAUNTLET.md, BUILD_PROTOCOL.md, CAMPAIGN.md, QA_ENGINEER.md, SECURITY_AUDITOR.md, CONTEXT_MANAGEMENT.md.
71
+ - **ID Space Audit** added to `QA_ENGINEER.md` — verify identifier comparisons use the same ID type.
72
+ - **Safety Parameter Audit** added to `SECURITY_AUDITOR.md` — verify safety-critical params can't be overridden to unsafe values.
73
+ - **Maul re-probe** formalized as mandatory gate in `ASSEMBLER.md` — review fixes can introduce new failure modes.
74
+
75
+ ---
76
+
77
+ ## [20.1.0] - 2026-04-02
78
+
79
+ ### Added
80
+ - **Kongo Engine integration** (10 modules, 119 tests) — first-party landing page system for `/cultivation` and `/grow`. Typed HTTP client, page CRUD, campaign/variant management, AI variant generation, growth signal computation (two-proportion z-test), webhook HMAC verification, API key provisioning, PRD-to-seed extraction, heartbeat daemon jobs. Architecture: ADR-036.
81
+ - **`docs/patterns/kongo-integration.ts`** (37th pattern) — client, from-PRD generation, growth signal, webhook handling, daemon jobs.
82
+ - **`docs/LEARNINGS.md`** — first use of the Operational Learnings system (ADR-035). 3 initial entries from the Kongo build.
83
+ - **GROWTH_STRATEGIST.md Phase 3.5** — Kongo page generation between Content and Distribution phases. Content Engine section with 3-phase activation model, integration classification, weekly feedback loop, Wayne testLayer: 'page'.
84
+ - **HEARTBEAT.md Kongo jobs** — kongo-signal (hourly), kongo-seed (on winner), kongo-webhook (event-driven).
85
+ - **GAUNTLET.md** — Vin (Analytics) statistical review agent in Round 2 First Strike.
86
+ - **CAMPAIGN.md** — hard Gauntlet gate in Step 6, L-scope review scaling in Step 4, Kenobi quick-scan for auth/crypto missions, cross-mission data handoff check, blitz validation clarification.
87
+ - **PRD_GENERATOR.md** — external API doc reading requirement before writing data models.
88
+ - **BUILD_PROTOCOL.md** — stored value rename check, worker env verification checkpoint.
89
+ - **BACKEND_ENGINEER.md** — optimized path fallback rule.
90
+ - **AI_INTELLIGENCE.md** — token limit headroom rule, prohibition placement guidance.
91
+ - **FORGE_KEEPER.md** — Radagast description accuracy check in Step 4.
92
+ - **LESSONS.md** — muster semantic briefing lesson.
93
+
94
+ ### Fixed
95
+ - **Growth signal control selection** (Gauntlet CRITICAL) — was using worst variant as baseline, now uses first variant by creation order (order=0) with deterministic tiebreaker.
96
+ - **Z-test confidence computation** (Gauntlet CRITICAL) — was using normalCdf as confidence; now computes proper one-tailed p-value (confidence = 1 - pValue).
97
+ - **Poll timeout** (Gauntlet CRITICAL) — was 120s for 2-10 min generation; now 660s.
98
+ - **Webhook future timestamp bypass** (Gauntlet HIGH) — rejects timestamps >60s in future.
99
+ - **Response body credential leak** (Gauntlet HIGH) — raw response body removed from error messages.
100
+ - **Response body DoS** (Gauntlet HIGH) — 10 MB size limit on HTTP responses.
101
+ - **Pagination infinite loop** (Gauntlet HIGH) — bounded to 20 pages max in batch campaign status.
102
+ - **Authorization header override** (Gauntlet HIGH) — case-insensitive sanitization prevents extraHeaders from overriding auth.
103
+ - **seedPush no-op** (Gauntlet HIGH) — now returns winning slot values instead of discarding.
104
+ - **Frontmatter delimiter guard** (Gauntlet HIGH) — missing closing delimiter treated as no frontmatter.
105
+ - **Z-test NaN guard** (Gauntlet HIGH) — catches views=0, se=NaN via `!(se > 0)`.
106
+ - **ADR-036 stale endpoints** — implementation status table replaces hypothetical endpoint list.
107
+
108
+ ### Security
109
+ - Webhook HMAC: future timestamp bypass closed, body size limit (1 MB) added.
110
+ - HTTP client: response body size limit (10 MB), credential leak removed from errors, auth header override prevention, double-reject settled flag.
111
+
112
+ ---
113
+
114
+ ## [19.5.0] - 2026-03-31
115
+
116
+ ### Added
117
+ - **`/blueprint` command** (28th slash command) — fourth entry path for users with pre-written specs. Validates PRD frontmatter, discovers supporting documents, merges project directives into CLAUDE.md, runs conflict scan, hands off to campaign.
118
+ - **Document discovery module** (`wizard/lib/document-discovery.ts`) — Wong scans for PRD, project directives, operations playbook, ADRs, and reference materials following Blueprint Path convention.
119
+ - **CLAUDE.md merge utility** (`wizard/lib/claude-merge.ts`) — safe idempotent append of project-specific directives. Never replaces methodology. Includes unmerge for re-merging with updated directives.
120
+ - **PRD structural validator** (`wizard/lib/prd-validator.ts`) — Troi's compliance checks (section detection, conditional rules based on frontmatter) + Picard's conflict scan (auth+database, payments+auth, workers+deploy, cache+deploy, admin+auth).
121
+ - **Blueprint API endpoint** (`wizard/api/blueprint.ts`) — detect, validate, and merge routes registered with wizard server for auto-detection.
122
+ - **Wizard auto-detection** — detects existing `docs/PRD.md` when transitioning from Step 3 to Step 4, offers "Use my blueprint" or "Start fresh" choice.
123
+ - **PRD template** (`docs/templates/PRD-TEMPLATE.md`) — complete frontmatter field reference with all required and optional fields.
124
+ - **`/prd --import`** flag — import and validate an existing PRD without running the interview.
125
+ - **`language` and `description`** fields added to `PrdFrontmatter` interface.
126
+ - **45 new tests** — document discovery (12), CLAUDE.md merge (11), PRD validator (22).
127
+
128
+ ### Fixed
129
+ - **Path traversal** (Gauntlet CRITICAL) — blueprint merge endpoint validates `directivesPath` does not escape project root.
130
+ - **Typo** `executeBluprintMerge` → `executeBlueprintMerge`.
131
+ - **Blueprint API routes registered** with wizard server (were exported but never mounted).
132
+ - **Wizard dead-end flow** — "Use my blueprint" now shows validation results inline instead of `alert()` dead-end.
133
+ - **Blueprint banner colors** — uses theme accent (`#5b5bf7`) instead of mismatched gold (`#e2b714`).
134
+ - **`workers` negation inconsistency** — `scanConflicts` now checks `!== 'none'` consistently with `validatePrdStructure`.
135
+
136
+ ---
137
+
138
+ ## [19.4.0] - 2026-03-30
139
+
140
+ ### Added
141
+ - **Campaign adapter directory** `wizard/lib/financial/campaign/` — new adapter category for campaign CRUD operations
142
+ - **Sandbox campaign adapter** — full lifecycle (create → pending_review → active → paused → resumed → completed) with realistic fake metrics (CTR 1.2-3.8%, CPC $0.45-$2.10, ROAS 1.5-4.2x), idempotency keys, deleted-campaign guards
143
+ - **Google Ads campaign adapter** — Campaign CRUD via Google Ads API v17, GAQL queries, 15k ops/day rate limiting
144
+ - **Meta Marketing campaign adapter** — Campaign CRUD via Graph API v19.0, 200 calls/hr rate limiting
145
+ - **TikTok Marketing campaign adapter** — Campaign CRUD via Marketing API v1.3, 10 calls/sec rate limiting
146
+ - **Campaign adapter factory** `getCampaignAdapter()` — config-driven instantiation with cached sandbox fallback per platform
147
+ - **5 heartbeat handlers wired** — handleCampaignLaunch, handleCampaignPause, handleCampaignResume, handleBudgetChange, handleCreativeUpdate now call real platform adapters
148
+ - **Campaign status polling** — every 5 minutes, polls adapter.getPerformance() for live metrics (spend, CTR, CPC, ROAS), enriches campaign records for Danger Room display
149
+ - **Circuit breaker** — 3 consecutive adapter failures marks platform degraded
150
+ - **48 new tests** — sandbox adapter (30), platform adapters (19), heartbeat handlers (13), campaign polling (7) — minus existing, net +48 (406 → 454)
151
+
152
+ ### Changed
153
+ - **Freeze handler** pauses ALL active campaigns across ALL platforms via adapter.pauseCampaign(), transitions to `suspended`
154
+ - **Unfreeze handler** resumes ALL suspended campaigns via adapter.resumeCampaign()
155
+ - **Freeze returns 207** on partial failure (previously always 200)
156
+ - **Token refresh** now calls adapter.refreshToken() instead of logging
157
+
158
+ ### Fixed
159
+ - **GAQL injection** (Victory Gauntlet CRITICAL) — sanitize all query parameters in Google campaign adapter
160
+ - **Path traversal** (Victory Gauntlet CRITICAL) — validate campaignId format before file I/O
161
+ - **Sandbox adapter ephemeral** (Victory Gauntlet CRITICAL) — cache instances per platform so campaign state persists between operations
162
+ - **Budget validation** — reject negative, NaN, Infinity, non-integer values
163
+ - **WAL entry** for budget changes (ADR-3 compliance)
164
+ - **Idempotency keys** on Meta and TikTok createCampaign (previously missing)
165
+ - **Compliance guard** on all 3 platform adapters
166
+ - **BUDGET_EXCEEDED** error mapping on all 3 platforms
167
+
168
+ ### Removed
169
+ - **5 VG-R1-006 stub handlers** returning 501 — all replaced with full implementations
170
+ - **Stale VG-R1-006 comment** on reconciliation handler (already wired)
171
+
172
+ ---
173
+
174
+ ## [19.3.0] - 2026-03-30
175
+
176
+ ### Added
177
+ - **Multi-Environment Isolation** — 8-point checklist in DEVOPS_ENGINEER.md: separate users, credentials, storage, Redis auth, worktree model, git hooks, Docker port audit, staging-first flow (field report #241)
178
+ - **4 testing anti-patterns** in TESTING.md — error format migration checklist, source-code string assertions, standalone test app handler, version-agnostic assertions (field report #227)
179
+ - **HTML Sanitizer Preservation** section in BACKEND_ENGINEER.md — DOMPurify client-fallback detection (field report #228)
180
+ - **Schema.sql sync gate** in BUILD_PROTOCOL.md Phase 12 — IF NOT EXISTS post-processing, reference file freshness (field reports #232, #242)
181
+ - **Tenant isolation completeness** gate in CAMPAIGN.md Victory — campaign-level org_id sweep (field report #229)
182
+ - **Dead code discovery** in GAUNTLET.md Round 1 Kusanagi — dead API method scan (field report #233)
183
+ - **Cross-environment contamination** check in GAUNTLET.md Round 1 — shared credentials, Docker bypass (field report #241)
184
+ - **System Protocol identity headers** on 8 utility docs (BUILD_PROTOCOL, BUILD_JOURNAL, CONTEXT_MANAGEMENT, MCP_INTEGRATION, MUSTER, PRD_GENERATOR, SUB_AGENTS, TROUBLESHOOTING)
185
+ - **5 undocumented patterns** now in CLAUDE.md — ad-billing-adapter.ts, browser-review.ts, e2e-test.ts, funding-plan.ts, stablecoin-adapter.ts (35 total)
186
+
187
+ ### Changed
188
+ - **Confidence scoring** deduplicated — 3 agent docs (UX, QA, Security) now cross-reference GAUNTLET.md with low-confidence escalation rule intact
189
+ - **RC-STUB** detection expanded — else/default branches flagged as most commonly missed variant (field report #230)
190
+ - **Pattern count** in Docs Reference table corrected from 32 to 35
191
+
192
+ ### Fixed
193
+ - **22 field reports triaged** on tmcleod3/voidforge — 14 informational closed, 8 actionable with 13 fixes applied, all 22 closed
194
+ - **Assessment findings** reduced from 18 (v16.1.0) to 0 (v19.3.0) — all Critical and High resolved
195
+
196
+ ## [19.2.0] - 2026-03-26
197
+
198
+ ### Added
199
+ - **TikTok billing adapter** — spend monitoring, debit projection, MONITORED_ONLY classification via Marketing API
200
+ - **AdPlatform type widened** — `google | meta` → 7-platform union (future-proof)
201
+ - **5 new TikTok billing tests** — capability detection, spend projection, normalized state
202
+
203
+ ### Changed
204
+ - **Adapter extensibility proven** — adding a new billing platform: 3 files, same pattern every time
205
+
206
+ ## [19.1.0] - 2026-03-26
207
+
208
+ ### Added
209
+ - **Adapter factory** (`adapter-factory.ts`) — config-driven adapter selection. Reads `funding-config.json.enc` from vault, returns Circle/Mercury/Google/Meta real adapters or sandbox fallback. Zero hard-coded adapter instantiations.
210
+ - **Auto-funding execution** — approved funding plans from `funding-plans.jsonl` now automatically execute off-ramps via the adapter factory. Plan lifecycle: APPROVED → PENDING_SETTLEMENT → SETTLED.
211
+ - **WAL recovery** — daemon startup reads `pending-ops.jsonl` and resumes incomplete operations.
212
+ - **WAL rotation** — 7-file rotation on `pending-ops.jsonl` (same pattern as audit-log).
213
+ - **66 new financial tests** — funding-policy (22), reconciliation-engine (17), platform-planner (15), sandbox-stablecoin (12). Total: 314 → 380.
214
+
215
+ ### Fixed
216
+ - **Billing jobs wired** — Google invoice scan and Meta debit monitor now read real data via adapter factory (were no-ops returning immediately)
217
+ - **`pendingObligationsCents` populated** — runway forecast now includes real invoice/debit obligations (was hardcoded to 0)
218
+ - **CB-4/CB-5 invocable** — billing circuit breakers now called from billing jobs (were dead code)
219
+ - **Mercury wired** — bank-settlement-monitor reads real bank balance via adapter factory (was never populated)
220
+ - **Circle stable IDs** — `listCompletedTransfers` uses Circle payout ID, not random UUID (was breaking reconciliation)
221
+ - **Sandbox unknown transfer** — `getTransferStatus` returns 'failed' for unknown IDs (was returning 'completed' with 0 amount)
222
+
223
+ ## [19.0.0] - 2026-03-25
224
+
225
+ ### Added
226
+ - **Stablecoin Ad Funding Rail** — complete USDC → Circle off-ramp → Mercury bank → Google/Meta billing pipeline
227
+ - **3 new pattern files** — `stablecoin-adapter.ts` (511 lines), `ad-billing-adapter.ts` (537 lines), `funding-plan.ts` (462 lines). 35 patterns total.
228
+ - **`wizard/lib/financial/` directory** — 14 modules: stablecoin adapters (Circle real + sandbox), Mercury bank adapter, Google/Meta billing adapters, treasury planner, funding policy engine (7 rules), reconciliation engine (3-way matching), auto-funding evaluator, platform planner (invoice settlement + debit protection + portfolio rebalancing), reporting (daily markdown + monthly JSON + funding simulation), registries
229
+ - **Circle adapter** — real `node:https` against Circle Business Account API v1 (balance, off-ramp, transfer lifecycle)
230
+ - **Mercury adapter** — real `node:https` against Mercury API v1 (balance, transactions)
231
+ - **Google Ads billing adapter** — billing setup detection, invoice reads, settlement instructions, capability classification
232
+ - **Meta Ads billing adapter** — funding source classification, debit projection, direct debit tracking
233
+ - **Sandbox stablecoin adapter** — $50K simulated USDC balance, 3-poll transfer lifecycle
234
+ - **8 new heartbeat daemon jobs** — stablecoin balance, off-ramp poll, settlement monitor, Google invoice scan, Meta debit monitor, runway forecast, funding reconciliation, stale plan detector
235
+ - **6 treasury socket handlers** — /treasury/offramp (vault+TOTP), /treasury/freeze, /treasury/unfreeze (vault+TOTP), /treasury/balances, /treasury/funding-status, /treasury/runway
236
+ - **6 circuit breakers** — provider down (3 polls), SLA breach (24h), recon mismatch (2 consecutive), invoice coverage shortfall, debit failure, daily cap ($50K)
237
+ - **Danger Room funding intelligence** — Growth tab (runway + funding risk + next event), Treasury tab (USDC balance + pending + bank + invoices + reconciliation + freeze state), Campaigns tab (billing capability per platform), Heartbeat tab (funding ops)
238
+ - **20 treasury-planner tests** — runway, offramp triggers, plan generation, spend forecasting
239
+
240
+ ### Changed
241
+ - **Method docs** updated: TREASURY.md (stablecoin section + 9 commands), HEARTBEAT.md (8 jobs + 5 states), GROWTH_STRATEGIST.md (billing capability verification)
242
+ - **Command docs** updated: cultivation.md (stablecoin option), grow.md (billing checks), treasury.md (crypto commands)
243
+ - **Heartbeat daemon** extended with treasury module — backward compatible (stablecoin gated on config)
244
+ - **HeartbeatState** interface extended with 5 optional treasury fields
245
+
246
+ ## [18.2.0] - 2026-03-25
247
+
248
+ ### Fixed
249
+ - **A11y heading hierarchy** — `<h3>` → `<h2>` in index.html (3 headings) and deploy.html (2 headings) to maintain proper hierarchy under `<h1>`
250
+ - **Semantic headings in dashboards** — 40 `.panel-title` divs changed to `<h2>` in danger-room.html (29) and war-room.html (11) for screen reader navigation landmarks
251
+ - **Tower CDN fallback** — When xterm.js fails to load from CDN (offline/air-gapped), tower page now shows a helpful message instead of silently breaking
252
+
253
+ ### Security (verified clean)
254
+ - All 7 pages return correct security headers (CSP, X-Frame-Options, CORS, Referrer-Policy, Permissions-Policy)
255
+ - CSRF protection verified: POST without X-VoidForge-Request returns 403
256
+ - Directory traversal verified: `../../etc/passwd` returns 404
257
+ - No stack traces or internal paths exposed on any page
258
+
259
+ ## [18.1.0] - 2026-03-25
260
+
261
+ ### Added
262
+ - **`browser-review.ts` pattern** (32nd pattern) — Review browser launcher with network isolation, console error capture with noise filtering, page state capture (screenshot + a11y + headings), responsive capture (3 viewports), behavioral walkthrough (click all buttons, fill all forms), security inspection (cookies, CORS, CSP)
263
+ - **QA Step 3.6 "Browser Forensic Review"** — console error sweep, error state gallery (force API failures + screenshot), form torture (empty/max/unicode/XSS), network failure simulation
264
+ - **UX Browser-Assisted Walkthrough** — proof-of-life screenshots, behavioral verification (click + verify response), form interaction, keyboard walkthrough, responsive proof-of-life at 3 viewports. Samwise browser a11y with axe-core + color scheme emulation.
265
+ - **Security browser checks expanded** — cookie inspection via `inspectCookies()`, CORS verification via `captureCORSHeaders()`, CSP violation capture via `captureCSPViolations()`, auth redirect verification, mixed content detection
266
+ - **Gauntlet Hawkeye R2.5 Browser Intelligence** — console error capture, proof-of-life screenshots shared with Round 2 agents, cookie/CORS inspection forwarded to Kenobi
267
+
268
+ ### Changed
269
+ - Agents now interact with running applications during review passes — console errors, behavioral walkthroughs, and security inspection reduce human eyeball dependency. Screenshots are evidence (not design review — Riker's dissent adopted from the Muster).
270
+
271
+ ## [18.0.0] - 2026-03-24
272
+
273
+ ### Added
274
+ - **Playwright E2E testing infrastructure** — `@playwright/test` + `@axe-core/playwright` with network isolation, test port 3199, VOIDFORGE_TEST mode, separate CI job with browser caching
275
+ - **21 E2E tests** across 4 test files: lobby (empty state, keyboard nav, modal, a11y), login (form, validation, a11y), setup wizard (load, input, a11y, keyboard), danger room (5-tab navigation, growth empty state, a11y), deploy (load, a11y), tower (UI shell), war room (load)
276
+ - **`e2e-test.ts` pattern file** — Page Object Model, axe-core fixture, auth helper, network mock, WebSocket mock, CWV measurement, flaky test protocol, framework adaptations (Next.js, Express, Django, Rails)
277
+ - **Browser verification in 6 method docs** — QA (Batman browser verification + Huntress flaky monitoring), UX (Samwise browser a11y + Éowyn enchantment verification + Gimli CWV), Gauntlet (Hawkeye R2.5 browser smoke + Troi browser PRD compliance), Build Protocol (Playwright in Phase 1/4/9-11), Security (5 browser-based checks), DevOps (E2E CI architecture)
278
+ - **TESTING.md E2E section** — testing pyramid position, 2-min performance budget, flaky test protocol, sharding guidance
279
+ - **PRD frontmatter `e2e` field** — `yes | no`, defaults by project type
280
+
281
+ ### Changed
282
+ - **CI pipeline** expanded from typecheck + unit tests to include a separate Playwright E2E job (parallel, Chromium-only, cached browsers)
283
+ - **VOIDFORGE_TEST mode** — rate limit bypass, TOTP 000000 accept, self-start on PORT env var (for test isolation)
284
+
285
+ ## [17.3.0] - 2026-03-24
286
+
287
+ ### Added
288
+ - **`--muster` flag** — Full 9-universe agent deployment in 3 waves (Vanguard → Main Force → Adversarial). Available on `/architect`, `/campaign`, `/build`, `/gauntlet`. 30-50 agents for decisions that matter. See `docs/methods/MUSTER.md`.
289
+ - **`MUSTER.md` method doc** — Reusable protocol: beacons, muster roll, the ride, the council. 40+ agents mapped with inclusion criteria.
290
+ - **Flag taxonomy in CLAUDE.md** — 3-tier system: Universal (--resume, --plan, --fast, --dry-run, --status, --blitz), Scope (--security-only, --ux-only, --qa-only), Intensity (--fast < standard < --muster < --infinity)
291
+
292
+ ### Changed
293
+ - **`--quick` renamed to `--fast`** on Gauntlet for cross-command consistency (deprecated alias noted)
294
+ - **`--plan` added** to `/architect` and `/grow`
295
+ - **`--status`** standardized as flag (not subcommand) on `/cultivation`, `/dangerroom`, `/thumper`
296
+ - **`--dry-run` added** to `/treasury`, `/grow`, `/git`
297
+ - **`--blitz` added** to `/assemble` and `/build`
298
+ - **`--resume` added** to `/build`
299
+
300
+ ## [17.2.0] - 2026-03-24
301
+
302
+ ### Added
303
+ - **101 new security tests** for 7 P0 modules: totp (14), tower-session (20), tower-rate-limit (9), user-manager (16), compliance (12), treasury-backup (7), autonomy-controller (23). Total: 193 → 294.
304
+
305
+ ### Fixed
306
+ - **TypeScript mock type error** in stripe-adapter.test.ts — `req.end` mock now returns req for ClientRequest compatibility. `tsc --noEmit` clean.
307
+
308
+ ## [17.1.0] - 2026-03-24
309
+
310
+ ### Added
311
+ - **3 new test files** — stripe-adapter (9 tests: mocked HTTPS, error handling), heartbeat-data (10 tests: file-based campaign/treasury reads), audit-log (7 tests: rotation cascade, no-throw). Total: 167 → 193.
312
+ - **3 ADRs** — ADR-032 (No Stubs Doctrine), ADR-033 (Sandbox Demo Pipeline), ADR-034 (Raw HTTPS for External APIs)
313
+ - **TypeScript CI** — `npm run typecheck` added to validate-branches.yml before tests
314
+
315
+ ### Fixed
316
+ - **Timing-safe vault comparison** — HMAC both inputs to fixed-size digests before `timingSafeEqual` (no more password length leak via timing)
317
+ - **Negative spend clamping** — `Math.max(0, ...)` on spend log entries prevents negative amountCents from producing nonsensical ROAS
318
+ - **Inverted date range handling** — sandbox adapters return empty results instead of silently treating end-before-start as 1 day
319
+ - **IPv6 proxy shutdown** — stored at module level and closed in shutdown handler (was a dangling listener)
320
+ - **28 TypeScript errors** in pattern files — type-safe API response casts, removed unused @ts-expect-error, fixed session type in server.ts. `tsc --noEmit` now produces **0 errors**
321
+
322
+ ### Changed
323
+ - **Sandbox campaigns Map** moved from module level to instance scope — prevents state leaks between tests and adapter instances
324
+ - `readCampaigns()` and `readTreasurySummary()` exported from heartbeat.ts for direct unit testing
325
+
326
+ ## [17.0.0] - 2026-03-24
327
+
328
+ ### Added
329
+ - **No Stubs Doctrine** — enforced across CLAUDE.md, BUILD_PROTOCOL, CAMPAIGN, GAUNTLET (RC-STUB), ARCHITECT (ADR scope), ASSESS, GROWTH_STRATEGIST, LESSONS. Never ship stub code again.
330
+ - **Sandbox ad platform adapter** — full implementation with realistic campaign data, spend tracking, performance metrics. Enables Cultivation pipeline demo without real API credentials.
331
+ - **Sandbox bank adapter** — full implementation with realistic transactions and balances for treasury demo.
332
+ - **Stripe revenue adapter** — real Stripe API integration via `node:https` (zero new dependencies). connect, getTransactions, getBalance. Free test mode supported.
333
+ - **Danger Room growth tabs** — 4 new tabs: #growth (KPI cards), #campaigns (campaign table), #treasury (vault + budget status), #heartbeat (daemon + token health). 30-second auto-refresh.
334
+ - **Implementation Completeness Policy** (PRD §8.1) — formal policy codifying the No Stubs Doctrine
335
+ - **74 new tests** — financial-vault (13), reconciliation (11), campaign-state-machine (33), sandbox-adapter (17). Total: 93 → 167.
336
+
337
+ ### Changed
338
+ - **Heartbeat daemon wired to real data** — readCampaigns() reads treasury/campaigns/*.json, readTreasurySummary() reads spend/revenue JSONL logs, all 8 scheduled jobs perform real reads and meaningful logging
339
+ - **Heartbeat handlers return 501** (honest "not yet wired") instead of 200 (fake success) for campaign pause/resume/launch/budget — No Stubs Doctrine enforcement
340
+ - **Adapter registry** tracks `implemented: true/false` per platform and `REVENUE_ADAPTERS` registry added
341
+ - **PRD counts corrected** — 260+ agents (was 185+), 30 patterns (was 10), 17 leads (was 15), 9 universes (was 8)
342
+ - **PRD roadmap collapsed** — shipped versions (v4-v16.1) summarized, v17.0 + v17.1+ plan added
343
+
344
+ ### Fixed
345
+ - **X-Forwarded-For parsing** — use leftmost entry (real client IP) not rightmost (proxy 127.0.0.1). Rate limiting and session IP binding were completely broken in remote mode.
346
+ - **Local mode loopback binding** — bind to `127.0.0.1` + `::1` proxy instead of `::` (IPv6 wildcard). Prevents LAN exposure of vault data. (PRD §9.20.1)
347
+ - **Vault unlock rate limiting** — use getClientIp() instead of req.socket.remoteAddress. All users shared one rate limit bucket behind proxy.
348
+ - **Freeze endpoint** — wired to daemon Unix socket with auth token instead of returning fake `{ ok: true }`. Requires deployer RBAC.
349
+ - **AWS credential validation** — calls STS.GetCallerIdentity (SDK already a dependency) instead of format-only check
350
+ - **TOCTOU race in auth setup** — removed outer hasUsers() check, rely on createUser()'s serialized atomic check
351
+ - **Audit log 7-rotation** — retains .1 through .7 instead of single .1 that lost financial audit trail
352
+ - **auth.json backup-before-write** — prevents remote mode lockout on corruption
353
+ - **/api/server/status** — registered via addRoute() for auth middleware coverage in remote mode
354
+ - **Treasury backup size limit** — 100MB per file to prevent unbounded memory allocation
355
+ - **Missing await on buildStateSnapshot()** — heartbeat.json was writing `{}` instead of real state
356
+ - **Stripe error handling** — non-JSON error responses (proxy 502) no longer cause SyntaxError
357
+ - **Sandbox adapter type alignment** — return types match pattern interfaces (externalId, spend, platform, scopes)
358
+
359
+ ### Removed
360
+ - **8 stub adapter files deleted** — meta.ts, google.ts, tiktok.ts, linkedin.ts, twitter.ts, reddit.ts, mercury.ts, brex.ts (610 lines, 77 `throw new Error('Implement...')` calls). Per No Stubs Doctrine: real adapters ship when developer accounts are available (v17.1+).
361
+ - **Dead getClientIp** from tower-rate-limit.ts — single source of truth in tower-auth.ts
362
+
363
+ ### Security
364
+ - Freeze endpoint requires `deployer` role minimum (was accessible to any authenticated user)
365
+ - 3 P0 fixes verified by Kenobi: XFF parsing, loopback binding, vault rate limit IP
366
+
367
+ ## [16.1.0] - 2026-03-24
368
+
369
+ ### Added
370
+ - **Database migration safety** — `database-migration.ts` pattern (backward-compat, batched ops, rollback, zero-downtime validation) + Migration Safety Gate checklist in BUILD_PROTOCOL.md Phase 2
371
+ - **Data pipeline pattern** — `data-pipeline.ts` (typed stages, checkpoint/resume, quality checks, idempotent processing)
372
+ - **Backtest engine pattern** — `backtest-engine.ts` (walk-forward validation, no-lookahead enforcement, Sharpe/drawdown/profit factor, slippage/commission modeling)
373
+ - **Execution safety pattern** — `execution-safety.ts` (order validation, position limits, exchange precision from API, paper/live toggle, circuit breaker, reconciliation, audit trail)
374
+ - **Branch CI validation** — `.github/workflows/validate-branches.yml` validates all 3 branches on push (command files, method docs, pattern files, VERSION.md)
375
+ - **PRD frontmatter** — `type: "quantitative"`, `data_source`, `backtest`, `live_execution`, `ai:` fields
376
+
377
+ ### Changed
378
+ - **Dependency health check** added to `/assess` (Crusher) and `/campaign` Step 0 (Kira): auto-check if project >30 days stale
379
+ - **Load testing guidance** added to DEVOPS_ENGINEER.md: when/what/tools/diagnostics
380
+ - Pattern count: 26 → 30 across CLAUDE.md, README.md, HOLOCRON.md, patterns/README.md
381
+ - **Personality section** added to CLAUDE.md: never agree just to agree, challenge when appropriate
382
+
383
+ ## [16.0.0] - 2026-03-24
384
+
385
+ ### Added
386
+ - **Foundation universe (Isaac Asimov)** — 9th universe, 13 named agents for the AI Intelligence domain
387
+ - **Hari Seldon** — 18th lead agent, AI Intelligence Architect. Owns: model selection, prompt engineering, tool-use schemas, orchestration patterns, failure modes, token economics, evaluation, AI safety, model versioning, LLM observability
388
+ - **`/ai` command** — Seldon's AI Intelligence Audit: 5-phase protocol (Surface Map → Parallel Audits → Sequential Audits → Remediate → Re-Verify)
389
+ - **`AI_INTELLIGENCE.md`** — Full method doc with 12 sub-agents, 10 operating rules, 5 checklists, 8 anti-patterns
390
+ - **6 AI pattern files** — `ai-orchestrator.ts` (agent loops, circuit breaker), `ai-classifier.ts` (confidence thresholds, fallback chains), `ai-router.ts` (intent routing), `prompt-template.ts` (versioned prompts), `ai-eval.ts` (golden datasets, regression detection), `ai-tool-schema.ts` (typed tools, provider adapters)
391
+ - **7th Gauntlet Stone: Wisdom** — AI Intelligence domain in comprehensive review
392
+ - **PRD frontmatter** — `ai: yes`, `ai_provider`, `ai_models`, `ai_features` fields
393
+
394
+ ### Changed
395
+ - **8 existing commands** integrated with Seldon's AI layer: `/build` (AI Gate at Phase 4), `/gauntlet` (7th Stone + Crossfire + Council), `/assemble` (Phase 6.5), `/campaign` (5th requirement type), `/security` (Bliss handoff), `/qa` (AI Behavior Testing), `/architect` (Seldon Review), `/prd` (AI Architecture section)
396
+ - Agent counts: 247 → 260+, 8 → 9 universes, 25 → 26 commands, 20 → 26 patterns, 17 → 18 leads
397
+
398
+ ## [15.3.0] - 2026-03-23
399
+
400
+ ### Changed
401
+ - **README.md** — 247 agents / 8 universes / 25 commands / 20 patterns / 17 leads
402
+ - **HOLOCRON.md** — Same count updates + 8 missing command descriptions + Cosmere universe
403
+ - **ARCHITECTURE.md** — Updated to v15.2.1: 5 subsystems, tower-auth split, vault security, LAN mode
404
+ - **FAILURE_MODES.md** — 11 new failure modes (vault brute-force, deploy, Danger Room, heartbeat)
405
+ - **SCALING.md** — 7 new scaling improvements (batch writes, LAN mode, tiered polling, test suite)
406
+ - **TECH_DEBT.md** — Full rewrite: 17 resolved items, 11 current items
407
+ - **ROADMAP.md** — Header fixed from v12.6.4 to v15.2.1
408
+ - **COMPATIBILITY.md** — Engine range corrected, vitest added
409
+ - **patterns/README.md** — 7 → 20 patterns indexed
410
+
411
+ ## [15.2.1] - 2026-03-23
412
+
413
+ ### Changed
414
+ - **GAUNTLET.md** — Added Dimension 4 (output verification) to Sibling Verification Protocol: verify fixes against real output data to catch false positives in keyword filters (#148)
415
+ - **CAMPAIGN.md** — Victory condition now includes deploy entrypoint verification: confirm Docker CMD / PM2 ecosystem runs the built architecture, not a legacy file (#147)
416
+ - **BUILD_PROTOCOL.md** — Phase 12 Docker smoke test: mandatory check that container entrypoint runs new code before go-live (#147)
417
+ - **DEVOPS_ENGINEER.md** — First deployment checklist: process manager, env vars, log directory, health endpoint, entrypoint verification (#147)
418
+
419
+ ### Added
420
+ - **LESSONS.md** — 3 new lessons: read-before-export (verify source exports before re-exporting), read-before-test (read implementation before writing expectations), numeric context checks (cite actual % from /context)
421
+
422
+ ## [15.2.0] - 2026-03-23
423
+
424
+ ### Changed
425
+ - **tower-auth.ts** split into 3 modules: tower-auth (424 lines — auth core), tower-session (149 lines — sessions/cookies), tower-rate-limit (87 lines — rate limiting). All exports re-exported for backward compatibility.
426
+ - **aws-vps.ts** — SSH security group restricted to deployer's IP post-provisioning (detects IP via checkip.amazonaws.com, revokes 0.0.0.0/0 rule)
427
+ - **ProvisionEvent.status** type now includes `'warning'` for non-fatal alerts
428
+
429
+ ## [15.1.0] - 2026-03-23
430
+
431
+ ### Added
432
+ - **vitest** test framework with `--pool forks` isolation — 91 tests across 8 files (vault, body-parser, tower-auth, network, frontmatter, instance-sizing, safety-tiers, http-helpers)
433
+ - **Vault unlock rate limiting** — 5 attempts/min, lockout after 10 consecutive failures (separate from login rate limits)
434
+ - **Vault auto-lock** — 15-minute idle timeout clears session password
435
+ - **6 proxy modules** — financial-core, daemon-core, oauth-core, revenue-types, ad-platform-core, rate-limiter-core (breaks direct wizard/ → docs/patterns/ imports)
436
+ - **provisioner-registry.ts** — single source of truth for provisioners, credential scoping, GitHub-linked targets
437
+
438
+ ### Changed
439
+ - **Terminal HMAC** — per-boot random 32-byte key replaces vault password as HMAC keying material
440
+ - **sendJson** consolidated from 10 duplicate definitions to 1 shared module in http-helpers.ts (with noCache support)
441
+ - **Health poller** — batch writes (N individual → 1 registry update per poll cycle)
442
+ - **TOTP clock skew** — prunes usedCodes when drift exceeds ±3 steps (prevents lockout after clock jump)
443
+
444
+ ### Fixed
445
+ - **47 Infinity Gauntlet fixes** — provision lock deadlock, vault cache mutation, body-parser non-object bypass, terminal resize NaN crash, Docker healthcheck exec form, CI SSH key leak, RDS hardcoded 'admin', symlink security no-op, autonomy-controller crash safety, secret stripping keyword gaps, and 36 more across 21 files
446
+ - **Accessibility** — skip-nav + noscript on all 7 pages, aria-labelledby on deploy step 1
447
+
448
+ ### Security
449
+ - Secret stripping expanded with allowlist (SAFE_OUTPUT_KEYS) — comprehensive keyword coverage without false positives
450
+ - Error message token regex lowered from 40+ to 16+ characters
451
+
452
+ ---
453
+
454
+ ## [15.0.0] - 2026-03-22
455
+
456
+ ### Added
457
+ - **`/deploy` command** — Kusanagi's deploy agent with 6-step protocol: target detection (VPS/Vercel/Railway/Docker/Static/Cloudflare), pre-deploy checks (Levi), deploy execution, health check (L), rollback (Valkyrie), deploy-state.md logging
458
+ - **Campaign Step 7** — optional auto-deploy after Victory Gauntlet passes. Blitz mode auto-deploys. Deploy failure doesn't revoke Victory.
459
+ - **`/git --deploy` flag** — one-command commit + push + deploy. Coulson commits, Kusanagi deploys.
460
+ - **Deploy drift detector** — `GET /api/danger-room/drift` compares deployed commit against `git rev-parse HEAD`. Catches "pushed but not deployed" scenarios.
461
+ - **Deploy Automation** section in DEVOPS_ENGINEER.md — target detection, deploy state, campaign integration, rollback protocol
462
+
463
+ ### Changed
464
+ - **Deploy panel** reads from `deploy-state.md` (v15.0 format) in addition to `deploy-log.json`
465
+
466
+ ---
467
+
468
+ ## [14.0.0] - 2026-03-22
469
+
470
+ ### Added
471
+ - **Day-0 Cultivation onboarding** — 7-step guided install: treasury → revenue → ad platforms → budget → creatives → tracking → launch. No longer requires a deployed product.
472
+ - **`/grow --setup`** — standalone ad platform onboarding: guided credential collection for Google Ads, Meta, LinkedIn, Twitter, Reddit with per-platform best-fit guidance
473
+ - **Phase 4.5 Launch Preparation** — budget allocation (product-type-aware splits), creative foundation (6 variants via /imagine), tracking & attribution (pixel snippets + conversion events)
474
+ - **Launch activation flow** — summary presentation, user confirmation, platform submission, Danger Room Growth tab wiring
475
+ - **Pre-Revenue Setup** in TREASURY.md — budget tracking before first dollar, auto-detection of payment processors, absolute spend limits for pre-revenue projects
476
+
477
+ ### Changed
478
+ - **Cultivation install no longer requires deployment** — "product should be deployed" prerequisite removed. Day-0 setup works pre-launch, launch day, and post-launch.
479
+ - **Growth Strategist operating rule 1** updated — product deployment required for Phase 1+ (reconnaissance), not for installation
480
+
481
+ ---
482
+
483
+ ## [13.1.0] - 2026-03-22
484
+
485
+ ### Changed
486
+ - **Circular import broken** — `getServerPort`/`getServerHost` extracted to `wizard/lib/server-config.ts`, eliminating the `server.ts ↔ dashboard-ws.ts` cycle
487
+ - **CORS/CSP for LAN mode** — private IP origins accepted via `isPrivateOrigin()` in CORS; `ws://*:PORT` added to CSP `connect-src` for WebSocket
488
+ - **Context gauge always visible** — compact percentage indicator in header bar, color-coded, stays visible when scrolling past Tier 1
489
+ - **Private IP consolidation** — `health-poller.ts` now imports `isPrivateIp` from shared `network.ts` instead of inline checks
490
+
491
+ ---
492
+
493
+ ## [13.0.0] - 2026-03-22
494
+
495
+ ### Added
496
+ - **LAN mode (`--lan`)** — Private network access for ZeroTier, Tailscale, WireGuard. Binds `0.0.0.0` with optional password, no TOTP/Caddy. Private IP validation covers RFC 1918, CGNAT (Tailscale), IPv6 ULA (ZeroTier).
497
+ - **Status Line bridge** — `scripts/danger-room-feed.sh` connects Claude Code's Status Line API to the Danger Room. Per-session files with atomic writes, 60-second staleness threshold. Powers context gauge + cost display.
498
+ - **Agent activity ticker** — Methodology-driven JSONL logging (not hooks). Hybrid `fs.watch` + 3-second poll fallback. Live agent dispatch events broadcast via WebSocket.
499
+ - **Tests panel** — Structured `test-results.json` data contract with defined schema. New `/api/danger-room/tests` endpoint.
500
+ - **Git status panel** — Branch, uncommitted count, ahead/behind, last commit via `execFile` with 5-second timeout. New `/api/danger-room/git-status` endpoint.
501
+ - **Dashboard config** — `danger-room.config.json` for project-specific panel settings (health endpoint, PM2 process, enabled panels).
502
+ - **Shared `wizard/lib/network.ts`** — `isPrivateIp()` + `isPrivateOrigin()` with numeric octet parsing. Consolidates duplicate implementations.
503
+
504
+ ### Changed
505
+ - **3-tier information architecture** — Ops tab restructured: Live Feed (context gauge + agent ticker) → Campaign State (timeline + findings + pipeline) → System Status (version + deploy + tests). Visual hierarchy with tier labels and distinct styling.
506
+ - **Tiered polling** — Fast 5s (context), campaign 10s (timeline/findings), slow 60s (version/deploy). Replaces uniform 10-second poll. ~60% reduction in unnecessary network requests.
507
+ - **Dashboard consolidation** — 800+ lines of duplicated code extracted into 3 shared modules (`http-helpers.ts`, `dashboard-data.ts`, `dashboard-ws.ts`). danger-room.ts: 306→113 lines. war-room.ts: 248→67 lines.
508
+ - **War Room wired** — Routes now actually register (was dead code — never imported by server.ts).
509
+ - **Empty states** — Every panel shows actionable guidance when data is missing.
510
+
511
+ ### Fixed
512
+ - **Campaign regex** — `parseCampaignState()` rewritten for actual 5-column format. Handles bold markdown status (`**DONE**`). Normalizes vocabulary. Extracts `blockedBy` + `debrief` fields.
513
+ - **Build state artifacts** — `parseBuildState()` explicit trim removes leading `| ` capture artifacts.
514
+ - **Findings counter** — `parseFindings()` reads `build-state.md` "Known Issues" first (curated, open issues only). Falls back to regex scan with defensive logging.
515
+
516
+ ---
517
+
518
+ ## [12.6.4] - 2026-03-22
519
+
520
+ ### Added
521
+ - **Encryption Egress Audit** in security auditor — grep all usages of plaintext variable after encrypting, not just the storage path (DB, Redis, SSE, logs, API responses)
522
+ - **GROUP BY Compatibility Check** in security auditor — random-IV encryption breaks aggregation; add deterministic HMAC hash column
523
+ - **v14.0 roadmap** — The Day-0 Engine: Cultivation onboarding redesign with 7-step guided growth setup
524
+
525
+ ### Fixed
526
+ - Field reports #130, #131 triaged — 2 security methodology fixes applied, 1 feature request roadmapped
527
+
528
+ ---
529
+
530
+ ## [12.6.3] - 2026-03-22
531
+
532
+ ### Changed
533
+ - Campaign planning now **requires acceptance criteria** on every mission before the Prophecy Board is finalized — applies to `--plan` mode too, not just build
534
+ - Kira's Step 0 checks if `campaign-state.md` is **gitignored** and warns immediately — prevents silent data loss on `/clear`
535
+ - Kira's Step 0 includes a **pre-flight checklist**: VERSION.md, package manifest, campaign-state tracking, clean working tree
536
+
537
+ ### Added
538
+ - `/architect --adr-only` lightweight mode — write ADRs without full bridge crew deployment, for deferred architecture decisions
539
+
540
+ ### Fixed
541
+ - Field report #129 triaged — 4 fixes applied, 1 wontfix (--plan --draft solved by git diff)
542
+
543
+ ---
544
+
545
+ ## [12.6.2] - 2026-03-22
546
+
547
+ ### Added
548
+ - **v13.0 roadmap** — The Private Network: `--lan` mode for ZeroTier/Tailscale/WireGuard access, context gauge wiring via Status Line bridge, 3 Danger Room bug fixes, 3 unwired feature plans, 4 new dashboard panel proposals from real-world usage (field reports #127, #128)
549
+
550
+ ---
551
+
552
+ ## [12.6.1] - 2026-03-22
553
+
554
+ ### Changed
555
+ - Campaign Gauntlet checkpoints now extract **Learned Rules** — recurring root causes become pre-flight checks for subsequent missions, with escalation triggers (hardening sprints for >5 HIGH findings, auto-add missions for missing capabilities)
556
+ - Build Protocol Phase 0 validates data-dependent business cases against **historical data** before building infrastructure — no more blocking campaigns on live monitoring
557
+ - Campaign missions for data-dependent systems must re-run **regression test suites** when modifying strategy logic
558
+
559
+ ### Added
560
+ - Iterative PRD evolution workflow documented for `/architect --plan` — multi-commit PRD refinement as a recognized pattern
561
+ - PRD Evolution Log section in PRD template for tracking architectural reasoning across iterations
562
+
563
+ ### Fixed
564
+ - Field report #126 triaged — 3 root causes accepted, 5 file changes applied, issue closed
565
+
566
+ ---
567
+
568
+ ## [12.6.0] - 2026-03-22
569
+
570
+ ### Added
571
+ - **`/assess` command** — Pre-build codebase assessment: chains `/architect` → `/gauntlet --assess` → PRD gap analysis into a unified "State of the Codebase" report. For evaluating existing codebases before a rebuild or VoidForge onboarding.
572
+ - **`--assess` flag for `/gauntlet`** — Assessment-only mode: Rounds 1-2 (Discovery + First Strike), no fix batches. Produces report grouped by root cause. Designed for pre-build evaluation where full 10 rounds would be redundant.
573
+ - **Stub Detection** in QA_ENGINEER.md — Oracle scans for methods that return True/success without side effects (no network calls, no state writes). The most dangerous form of incomplete code. High severity; Critical for financial systems.
574
+ - **Migration Completeness Check** in BUILD_PROTOCOL.md Phase 1 — Before scaffolding, scan for duplicate implementations across directories. Abandoned migrations are flagged as blockers.
575
+ - **Auth-from-Day-One** in BUILD_PROTOCOL.md Phase 1 — HTTP endpoints require API key middleware returning 401 from birth. Full auth stays Phase 3, but the door is locked from day one.
576
+ - **Process Manager Discipline** in DEVOPS_ENGINEER.md — Never kill ports owned by PM2/systemd/Docker directly; always reload through the process manager.
577
+ - **Frontmatter Validation** in CAMPAIGN.md Step 1 — Before Dax analyzes the PRD, validate YAML frontmatter exists. If missing, Sisko runs a 5-question interview to add it.
578
+ - **VM execution test** in GAUNTLET.md build-output verification — Compiled JSX/HTML must be tested in the target runtime, not just built successfully.
579
+
580
+ ### Fixed
581
+ - Field reports #123, #124, #125 triaged — 8 methodology improvements applied, all 3 issues closed
582
+
583
+ ---
584
+
585
+ ## [12.4.2] - 2026-03-19
586
+
587
+ ### Changed
588
+ - Full-tier commands auto-pull `wizard/` from upstream when missing — scaffold/core users get "Pull it? [Y/n]" instead of a dead end
589
+ - CLAUDE.md slash command table has Tier column (All/Full) for all 23 commands
590
+ - Gauntlet Troi verifies CLAUDE.md claims (commands, agents, docs exist at stated paths)
591
+ - Gauntlet Kenobi checks pattern auth completeness (flags presence-only `!!header` checks)
592
+ - Campaign Victory Gauntlet has cross-campaign integration gate
593
+ - Release Manager has CLAUDE.md command table integrity check
594
+
595
+ ### Fixed
596
+ - Field reports #108, #109, #110 triaged — 12 methodology improvements applied
597
+
598
+ ---
599
+
600
+ ## [12.4.1] - 2026-03-18
601
+
602
+ ### Added
603
+ - **`/dangerroom` command** — starts wizard server and opens the Danger Room dashboard. Documents all 6 tabs, global elements, prerequisites. Was listed in CLAUDE.md but the command file never existed.
604
+ - **`WORKSHOP.md`** — 45-minute beginner workshop for building web apps with Claude Code + VoidForge scaffold
605
+ - **GitHub community health files** — LICENSE (MIT), CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, 3 issue templates, PR template, CODEOWNERS, FUNDING.yml
606
+
607
+ ### Fixed
608
+ - GAUNTLET.md: env var audit after smoke test (NEXT_PUBLIC blindness — field report #104)
609
+ - RELEASE_MANAGER.md: post-push deploy check (build-not-deployed gap — field report #104)
610
+ - BUILD_PROTOCOL.md: build-time env var verification in Phase 13 (field report #104)
611
+ - CAMPAIGN.md: deploy credential check in Step 0 (field report #103)
612
+ - DEVOPS_ENGINEER.md: rsync exclusion mandate + credential pre-flight (field report #103)
613
+ - TROUBLESHOOTING.md: destructive DB operation recovery checklist (field report #103)
614
+
615
+ ---
616
+
617
+ ## [12.4.0] - 2026-03-18
618
+
619
+ ### Added — The Autonomy (Full Autonomous Operation)
620
+ - **`wizard/lib/route-optimizer.ts`** — Paris's ROI-weighted campaign sequencing: scores proposals on ROI (40%), urgency (35%), risk-inverted (25%). `pickBestCampaign()` for single-proposal selection.
621
+ - **`wizard/lib/autonomy-controller.ts`** — Tier 2 supervised autonomy (24h delay queue, veto mechanism) + Tier 3 full autonomy (immediate execution). 6 circuit breakers: kill switch, strategic drift (>30%), consecutive Criticals (3+), spend increase streak (7 days), ROAS floor (<1.0x for 7 days), 30-day mandatory strategic sync. Deploy freeze windows. 10-campaign human checkpoint for Tier 3.
622
+ - All 3 branches synced to v12.4 shared methodology
623
+
624
+ ### Fixed
625
+ - DC-001: Added DEEP_CURRENT.md to CLAUDE.md docs reference table
626
+ - DC-003: Added /api/danger-room/current endpoint for Deep Current tab data
627
+ - DC-007: Improved SSRF protection (IPv6-mapped addresses, cloud metadata hostnames)
628
+
629
+ ## [12.2.0] - 2026-03-18
630
+
631
+ ### Added — The Bridge (Cross-Pipeline Correlation)
632
+ - **`wizard/lib/correlation-engine.ts`** — Chakotay's correlation engine: product change → metric outcome tracking. Before/after comparison with configurable lag windows (1/7/28 days). Confidence levels (high >30%, medium >15%, low >5%). Prediction recording, evaluation, and accuracy averaging.
633
+
634
+ ## [12.1.0] - 2026-03-18
635
+
636
+ ### Added — The Analyst (Gap Analysis + Campaign Proposals)
637
+ - **`wizard/lib/gap-analysis.ts`** — Seven's 5-dimension scoring: feature completeness (PRD vs codebase diff), quality (tests, gauntlet history, lessons), revenue potential (treasury, payments, pricing). Feeds situation model.
638
+ - **`wizard/lib/campaign-proposer.ts`** — Tuvok's campaign proposal generator: per-dimension templates (feature sprint, quality hardening, performance optimization, growth foundation, revenue infrastructure). Quantified predictions, risk assessments, autonomy tier recommendations.
639
+ - **Danger Room Deep Current tab** — 7th tab with 4 panels: situation model (5-dimension KPI cards), active proposal (Tuvok's recommendation with launch/dismiss), prediction history, autonomy status.
640
+
641
+ ---
642
+
643
+ ## [12.0.0] - 2026-03-18
644
+
645
+ ### Added — The Scanner (Deep Current: Autonomous Campaign Intelligence)
646
+ - **`/current` command** — Tuvok's Deep Current: scan → analyze → propose → gate → execute → learn. Cold start intake for greenfield projects. Status display with 5-dimension radar.
647
+ - **`docs/methods/DEEP_CURRENT.md`** — Tuvok's method doc: the Loop (SENSE→ANALYZE→PROPOSE→GATE→EXECUTE→LEARN), 3-tier autonomy, cold start sequence, situation model schema, security constraints, circuit breakers
648
+ - **`wizard/lib/site-scanner.ts`** — Torres's HTTP-based site scanner: performance (TTFB, compression, cache), SEO (meta tags, sitemap, JSON-LD), security (HTTPS, HSTS, CSP), growth (analytics detection, email capture, social meta). SSRF protection + redirect depth limit.
649
+ - **`wizard/lib/deep-current.ts`** — Situation model: 5-dimension scoring (feature, quality, performance, growth, revenue), project state classifier (GREENFIELD → OPERATING), cold start intake with per-state recommendations, persistent JSON state
650
+ - **5 Voyager agent roles** — Tuvok (strategic intelligence), Seven (optimization), Chakotay (cross-pipeline bridge), Paris (route planning), Torres (site scanning). Updated in naming registry.
651
+
652
+ ### Fixed
653
+ - SSRF protection in site scanner (private IP blocking)
654
+ - Redirect depth limit (max 5, was unbounded)
655
+ - IDEA+PRD → IDEA_PRD naming consistency
656
+
657
+ ---
658
+
659
+ ## [11.3.0] - 2026-03-18
660
+
661
+ ### Added — The Heartbeat (Portfolio, Anomaly Detection, Service Management)
662
+ - **`/portfolio` command** — cross-project financial dashboard with --report (tax records), --optimize (Kelsier's reallocation), project registration
663
+ - **Mercury + Brex bank adapters** — read-only OAuth 2.0 adapters for account balance and transaction polling
664
+ - **Anomaly detection engine** — 4 types (spend spikes, traffic drops, conversion changes, ROAS drops), 3 severity tiers (warning/alert/critical), configurable thresholds, self-contained messages
665
+ - **Encrypted daily backup** — AES-256-GCM with scrypt key derivation, 30-day retention, automatic pruning, export function for /treasury --export
666
+ - **Service install** — macOS LaunchAgent plists + Linux systemd user units for both heartbeat daemon and wizard server. KeepAlive, RunAtLoad, Background process type.
667
+ - **Desktop notifications** — macOS (osascript) + Linux (notify-send), agent-voiced messages (Wax, Breeze, Dockson), non-blocking with try/catch
668
+ - **Danger Room Heartbeat tab** — Daemon status (state/PID/uptime/last beat), token health per platform, scheduled jobs, anomaly alerts (aria-live="assertive")
669
+ - All 5 Danger Room tabs now complete: Ops → Growth → Campaigns → Treasury → Heartbeat
670
+
671
+ ---
672
+
673
+ ## [11.2.0] - 2026-03-18
674
+
675
+ ### Added — The Distribution (Ad Platform Adapters + Spend Execution)
676
+ - **6 ad platform adapters** — Meta Marketing, Google Ads, TikTok Marketing, LinkedIn Marketing, Twitter/X Ads, Reddit Ads. Each with Setup (interactive OAuth) + Adapter (daemon runtime). All use OutboundRateLimiter.
677
+ - **`docs/patterns/outbound-rate-limiter.ts`** — Token bucket with per-platform configs, safety margin reservation, daily quota tracking, executeWithRetry with exponential backoff
678
+ - **Campaign state machine** — 10 states with validated transitions, agent-allowed subset (active→paused only), event-sourced history with source/reason/ruleId
679
+ - **Spend execution pipeline** — WAL intent → budget lock → platform API → spend log. Idempotency keys per ADR-3.
680
+ - **Szeth's compliance framework** — GDPR cookie consent, CAN-SPAM unsubscribe/address, per-platform ToS checks. Critical findings block campaign launch.
681
+ - **Danger Room Ad Campaigns tab** — Campaign performance table with semantic HTML, A/B test groups panel, agent recommendations panel
682
+ - **Platform adapter registry** — Index with name and minimum budget per platform
683
+
684
+ ### Fixed
685
+ - ARC-001: Removed dead TokenBucketLimiter re-export from adapter types
686
+ - QA-002: Budget lock uses `>=` (not `>`) for hard stop enforcement
687
+
688
+ ---
689
+
690
+ ## [11.1.0] - 2026-03-18
691
+
692
+ ### Added — The Treasury (Dockson's Financial Operations)
693
+ - **`docs/methods/TREASURY.md`** — Dockson's financial operations protocol: revenue ingest, budget allocation, reconciliation, safety controls, immutable spend log
694
+ - **`docs/methods/HEARTBEAT.md`** — Daemon architecture: startup sequence, signal handling, sleep/wake recovery, socket API contract, vault session, service management, daemon states
695
+ - **`/treasury` command** — first-run setup flow, financial summary, budget management, freeze/unfreeze, reconciliation trigger, data export
696
+ - **`docs/patterns/daemon-process.ts`** — PID management with stale detection, Unix domain socket server with JSON-over-HTTP, session token auth with rotation, job scheduler with sleep/wake detection, signal handling with 10s deadline, structured JSON logger
697
+ - **`docs/patterns/revenue-source-adapter.ts`** — Read-only revenue interface with Stripe Events API + Paddle implementations, overlapping poll windows, externalId dedup, timing-safe webhook signature verification
698
+ - **`docs/patterns/oauth-token-lifecycle.ts`** — Per-platform TTL configs (Meta 60d, Google 1h, TikTok 24h, LinkedIn 60d, Reddit 1h), refresh at 80% TTL, 3-failure escalation to requires_reauth, session token 24h rotation with 30s grace period
699
+ - **`wizard/lib/heartbeat.ts`** — Heartbeat daemon: single-writer for all financial state (ADR-1), Unix domain socket API with auth tiers, 10 scheduled jobs, WAL reconciliation on startup (ADR-3), vault key in memory with SIGTERM zeroing
700
+ - **`wizard/lib/reconciliation.ts`** — Two-pass reconciliation engine: preliminary at midnight UTC, authoritative at 06:00 UTC, tiered discrepancy thresholds ($5 noise / 5% relative / $50 absolute), ADR-6 currency enforcement
701
+ - **Danger Room Treasury tab** — KPI cards (revenue/spend/net/ROAS), budget utilization progress bar with ARIA, platform connections status, reconciliation status, empty states with CTAs
702
+ - **5 methodology improvements from inbox triage** — GAUNTLET.md (3-dimension Sibling Verification Protocol + R1 runtime diagnostics), SECURITY_AUDITOR.md (Remediation Caller Tracing), SYSTEMS_ARCHITECT.md (Data Mutation Parity + Security Tradeoff Register)
703
+
704
+ ### Fixed
705
+ - VG-001: Added creative endpoint stub (501) to heartbeat daemon socket API
706
+ - VG-006: Stripe webhook signature now uses timing-safe comparison
707
+
708
+ ---
709
+
710
+ ## [11.0.0] - 2026-03-18
711
+
712
+ ### Added — The Consciousness (Cosmere Growth Universe)
713
+ - **8th Universe: Cosmere (Brandon Sanderson)** — 18 agents led by Kelsier. Growth, marketing, analytics, and financial operations.
714
+ - **`/grow` command** — 6-phase growth protocol: Reconnaissance → Foundation → Content → Distribution → Compliance → Measure. CLI-driven initial setup transitioning to autonomous daemon monitoring.
715
+ - **`/cultivation install` command** — installs the heartbeat daemon, financial vault, TOTP 2FA, and adds Growth tabs to the Danger Room.
716
+ - **`docs/methods/GROWTH_STRATEGIST.md`** — Kelsier's growth methodology with 3-tier autonomous execution model (deterministic daemon jobs, on-demand AI, opt-in scheduled AI).
717
+ - **`docs/patterns/ad-platform-adapter.ts`** — Split interface pattern: `AdPlatformSetup` (interactive OAuth), `AdPlatformAdapter` (daemon runtime), `ReadOnlyAdapter` (Tier 1 jobs). Reference Meta Marketing API implementation. Token bucket rate limiter.
718
+ - **`docs/patterns/financial-transaction.ts`** — Branded `Cents`/`Percentage`/`Ratio` types, hash-chained append-only log, atomic write with macOS `F_FULLFSYNC` awareness, number formatting per §9.15.4.
719
+ - **`wizard/lib/financial-vault.ts`** — Separate encrypted vault for ad platform and bank credentials. scrypt KDF (memory-hard). AES-256-GCM. Different password from infrastructure vault.
720
+ - **`wizard/lib/totp.ts`** — RFC 6238 TOTP for financial 2FA. macOS Keychain storage (ADR-4). Replay protection tracking all used codes within window. 5-minute session TTL.
721
+ - **`wizard/lib/safety-tiers.ts`** — Budget authorization with half-open interval tiers ($25/$100/$500). Aggregate $100/day cap. Campaign creation rate limits. Autonomous scope enforcement.
722
+ - **Danger Room tab navigation system** — ARIA-compliant tablist/tab/tabpanel with arrow key navigation, hash routing. Tabs shown conditionally when Cultivation is installed.
723
+ - **Danger Room Growth tab** — KPI cards (revenue/spend/net), ROAS by Platform, Traffic Sources, Conversion Funnel panels. Read-only placeholder data for v11.0.
724
+ - **Financial CSS color tokens** — 8 semantic tokens for financial data display (positive, negative, warning, neutral, healthy, error, inactive, frozen).
725
+ - **Global freeze button** — Emergency spend freeze in Danger Room header (desktop) and FAB (mobile). CSP-compliant event handlers.
726
+ - **WebSocket reconnection** — Exponential backoff (1s→30s cap), reconnection banner, full state refresh on reconnect.
727
+ - **PRD §9.19** — 16 subsections: Cultivation architecture clarification, process model, install commands, autonomous execution model, autonomous scope, code modification policy, authentication, CLI-to-autonomous handoff, WebSocket reconnection, adapter interface update, campaign state machine events, system state type, backup scope, rate limits, token rotation, API response sanitization.
728
+ - **PRD §9.20** — 14 subsections: Network binding fix, tab architecture, A/B test group data model, daemon authorization guard, autonomous rule thresholds, approval queue UX, agent voice in autonomous loop, freeze button spec, symlink guard, prompt injection mitigation, socket API contract, CampaignConfig schema, data propagation model, proxy token re-read.
729
+
730
+ ### Changed
731
+ - **Danger Room rename complete** — War Room → Danger Room across all remaining PRD references (lines 1607-1609, component contract)
732
+ - **PRD §9.1 Vision rewritten** — Cultivation is the engine (daemon + rules), not a separate web app
733
+ - **PRD §9.3 /grow rewritten** — aligned with §9.19 execution model
734
+ - **ROADMAP.md v11 deliverables expanded** — Danger Room tab system, §9.19/§9.20 references, per-version tab additions
735
+ - **10 methodology improvements from inbox triage** — BUILD_PROTOCOL (+4 wiring checks), SECURITY_AUDITOR (+fail-closed), TESTING (+constraint smoke test), BACKEND_ENGINEER (+2 gotchas), CAMPAIGN (+consumer verification), FIELD_MEDIC (+--submit clarification)
736
+
737
+ ---
738
+
739
+ ## [10.2.0] - 2026-03-17
740
+
741
+ ### Added
742
+ - **Natural Language Deploy** — `wizard/lib/natural-language-deploy.ts`. Prose description → YAML deploy frontmatter. Budget parsing, platform detection, resilience config inference. Integrated into `/prd` Act 5 as optional input.
743
+ - **Methodology A/B Testing** — `wizard/lib/experiment.ts`. Experiment CRUD + evaluation framework at `~/.voidforge/experiments.json`. True-positive rate + context efficiency comparison. Per-agent accuracy tracking. Danger Room Experiment Dashboard panel.
744
+ - **Prophecy Visualizer** — `wizard/ui/war-room-prophecy.js`. Interactive SVG dependency graph. Color-coded mission nodes (green/yellow/red/gray/purple). Clickable with keyboard support. Legend and detail panel. Danger Room integration.
745
+
746
+ ### Fixed
747
+ - SVG focus indicators for keyboard navigation (Gauntlet G-UX-001)
748
+ - SVG role changed to `group` for assistive technology compatibility (G-UX-002)
749
+ - XSS defense-in-depth: escape mission status/number in prophecy detail panel (G-SEC-001)
750
+ - Atomic write + restricted permissions (0o600) for experiments.json (G-QA-001)
751
+ - Experiment panel aria-labelledby linked to title (G-UX-003)
752
+
753
+ ---
754
+
755
+ ## [10.1.0] - 2026-03-17
756
+
757
+ ### Added
758
+ - **Danger Room data feeds** — `wizard/api/war-room.ts` with 6 REST endpoints parsing campaign-state.md, assemble-state.md, phase logs, deploy logs, VERSION.md. WebSocket handler at `/ws/war-room` with heartbeat, connection limits, and graceful shutdown.
759
+ - **Confidence scoring enforcement** — mandatory `[CONFIDENCE: XX]` in finding tables across `/gauntlet`, `/qa`, `/security`, `/ux`, `/review` commands. Low-confidence (<60) escalation to different-universe agent. Cross-referenced in QA_ENGINEER.md, SECURITY_AUDITOR.md, PRODUCT_DESIGN_FRONTEND.md.
760
+ - **Agent debates enforcement** — conflict detection in `/assemble` (Crossfire + Council) and `/review` (new Step 1.5). Structured 3-exchange debates logged as ADRs.
761
+ - **Living PRD enforcement** — Phase 0 PRD snapshot (`PRD-snapshot-phase0.md`), PRD alignment gates at Phases 4, 6, 8 in `/build`. Two-way sync: fix code or update PRD.
762
+
763
+ ### Fixed
764
+ - Danger Room a11y: ARIA landmarks, keyboard focus, responsive breakpoint, reduced motion, gauge progressbar role, agent ticker aria-live
765
+ - WebSocket: exponential backoff reconnect, onerror handler, heartbeat keepalive, stale connection cleanup
766
+ - Context gauge shows em-dash instead of misleading 0% when data unavailable
767
+
768
+ ---
769
+
770
+ ## [10.0.1] - 2026-03-17
771
+
772
+ ### Added
773
+ - **Agent Confidence Scoring** — findings report 0-100 confidence, low-confidence escalated.
774
+ - **Agent Debate Protocol** — structured 3-exchange debates, logged as ADRs.
775
+ - **Adversarial PRD Review** (`/prd --challenge`) — Boromir challenges the PRD before building.
776
+ - **The Living PRD** — PRD evolves at phase gates, Phase 0 snapshot for drift view.
777
+ - **Cross-Project Memory** — global lessons file across all projects.
778
+ - **Build Archaeology** — trace production bugs back through the build protocol.
779
+
780
+ ---
781
+
782
+ ## [10.0.0] - 2026-03-17
783
+
784
+ ### Added
785
+ - **Danger Room dashboard** — `war-room.html` + `war-room.js`. 5 core panels (Campaign Timeline, Phase Pipeline, Finding Scoreboard, Context Gauge, PRD Coverage), sidebar (Version, Deploy, Tests, Cost), Agent Activity Ticker. WebSocket real-time feed with auto-reconnect.
786
+ - **`/api/war-room/*` REST endpoints** in server.ts.
787
+ - **Danger Room button** in Lobby navigation.
788
+
789
+ ---
790
+
791
+ ## [9.3.0] - 2026-03-17
792
+
793
+ ### Added
794
+ - **Game build protocol** — 12-phase adaptation for `type: game`.
795
+ - **3 game patterns:** `game-loop.ts`, `game-state.ts`, `game-entity.ts`.
796
+ - **Game QA + UX checklists** — frame rate, input latency, game feel, accessibility.
797
+ - **4 game agents:** Spike-GameDev, Éowyn-GameFeel, Deathstroke-Exploit, L-Profiler.
798
+
799
+ ---
800
+
801
+ ## [9.2.0] - 2026-03-17
802
+
803
+ ### Added
804
+ - **Mobile methodology** — BUILD_PROTOCOL, QA_ENGINEER, SECURITY_AUDITOR, PRODUCT_DESIGN_FRONTEND all gain mobile-specific checklists.
805
+ - **2 mobile patterns:** `mobile-screen.tsx` (React Native, safe area, a11y) + `mobile-service.ts` (offline-first, sync queue).
806
+ - **3 conditional agents:** Uhura-Mobile, Samwise-Mobile, Rex-Mobile.
807
+ - **PRD template** updated with mobile frontmatter.
808
+
809
+ ### Blocked
810
+ - Mobile provisioner deferred (needs Xcode CLI + Play Console API).
811
+
812
+ ---
813
+
814
+ ## [9.1.0] - 2026-03-17
815
+
816
+ ### Added
817
+ - **Django + FastAPI deep dives** in all 8 pattern files — full code examples for DRF ViewSets, Pydantic models, Celery tasks, django-tenants, HTMX templates, FastAPI dependency injection, SQLAlchemy services, ARQ workers.
818
+ - **Python framework detection** in BUILD_PROTOCOL.md — Phase 0 detects `framework: django|fastapi`, adapts scaffold, migrations, testing, and security checks.
819
+
820
+ ---
821
+
822
+ ## [9.0.0] - 2026-03-17
823
+
824
+ ### Added
825
+ - **`docs/META_WORKFLOW.md`** — How to use VoidForge to develop VoidForge. Documents the feedback loop, anti-patterns discovered across 4 campaigns, when to use each campaign mode, and version history of campaigns-on-self.
826
+ - **Wong's Pattern Usage Log (Phase 12.5)** — After each build, logs which patterns were used, which framework adaptations applied, which custom modifications made. Feeds pattern evolution analysis in `/debrief`.
827
+ - **Pattern Evolution Check** in FIELD_MEDIC.md — Wong checks pattern-usage data for recurring variations across projects. 10+ occurrences → propose as new pattern.
828
+
829
+ ### Changed
830
+ - **`/imagine` API key persistence** — FORGE_ARTIST.md now instructs persisting the OpenAI API key to `.env.local` on first use, preventing key loss between sessions. (Field report #62)
831
+
832
+ ---
833
+
834
+ ## [8.3.0] - 2026-03-16
835
+
836
+ ### Added
837
+ - **`/campaign --autonomous`** — supervised autonomy with safety rails: git tag before each mission, critical-finding rollback, 5-mission human checkpoints, Victory Gauntlet requires human confirmation. Safer than `--blitz` for long campaigns (10+ missions).
838
+
839
+ ---
840
+
841
+ ## [8.2.0] - 2026-03-16
842
+
843
+ ### Added
844
+ - **Self-Improving Methodology (Wong Promotion Analysis)** — when 3+ lessons in LESSONS.md share the same category and target the same method doc, Wong auto-drafts a promotion: a specific checklist item or rule based on the lesson cluster. Presented for user approval, never auto-applied. Added to FIELD_MEDIC.md and `/debrief` command.
845
+ - **Custom Sub-Agents** — users can create project-specific sub-agents in `docs/CUSTOM_AGENTS.md`. Agents carry domain knowledge (e.g., `Jarvis-Tailwind` for Tailwind v4 patterns). Run alongside built-in agents. Naming collision check rule added to NAMING_REGISTRY.md. Template file created.
846
+
847
+ ---
848
+
849
+ ## [8.1.2] - 2026-03-16
850
+
851
+ ### Changed
852
+ - **`/qa` command** gains Green Lantern (test matrix), Flash (smoke tests), Batgirl (detail audit), Aquaman (deep dive), Huntress (flaky tests), Green Arrow (precision), Superman (standards).
853
+ - **`/security` command** gains Han + Cassian (Phase 0.5 first strike + recon), Bo-Katan (perimeter alongside Rex), Qui-Gon + Sabine + Bail Organa (Phase 2 extended), Anakin + Din Djarin (Phase 4 bypass + bounty).
854
+ - **`/ux` command** gains Aragorn (orchestrator), Pippin + Frodo (Step 3 edge cases + hardest flow), Faramir (Step 5 quality focus), Boromir + Glorfindel (Step 6 hubris + hard rendering), Haldir (Step 7 boundaries), Merry (Step 7.5 pair verification).
855
+ - **`/architect` command** gains Crusher + Archer (Step 0 diagnostics + greenfield), Tuvok (Step 1 security architecture), Kim + Janeway (Step 2 API design + novel architectures).
856
+ - **`/gauntlet` command** Round 3 now explicitly names DevOps team (Senku, Levi, Spike, L, Bulma, Holo, Valkyrie).
857
+ - **`/assemble` command** gains Hill (phase tracking) + Jarvis (status summaries).
858
+ - **`/campaign` command** gains Pike (Step 1 — bold ordering challenge to Dax).
859
+
860
+ ---
861
+
862
+ ## [8.1.1] - 2026-03-16
863
+
864
+ ### Added
865
+ - **Extended DC roster for `/qa`** — Flash (rapid testing), Batgirl (detail audit), Green Arrow (precision), Huntress (flaky tests), Aquaman (deep dive), Superman (standards), Green Lantern (scenario construction), Martian Manhunter (cross-environment).
866
+ - **Extended Star Wars roster for `/security`** — Qui-Gon (subtle vulns), Han (first strike), Anakin (dark-side exploitation), Bo-Katan (perimeter), Din Djarin (bug bounty), Bail Organa (governance), Cassian (threat modeling), Sabine (unconventional attacks).
867
+ - **Extended Tolkien roster for `/ux`** — Aragorn (UX leadership), Faramir (quality focus), Pippin (edge cases), Boromir (hubris check), Haldir (boundary guard), Glorfindel (hard rendering), Frodo (hardest task), Merry (pair review).
868
+ - **Extended Anime roster for `/devops`** — Vegeta (monitoring), Trunks (migrations), Mikasa (critical protection), Erwin (planning), Mustang (cleanup), Olivier (hardening), Hughes (observability), Calcifer (daemons), Duo (teardown).
869
+ - **Extended Star Trek roster for `/architect`** — Janeway (novel architectures), Tuvok (security architecture), Crusher (diagnostics), Archer (greenfield), Kim (API design), Pike (bold planning).
870
+ - **Extended Marvel roster for `/build`** — T'Challa (craft), Wanda (state), Shuri (innovation), Rocket (scrappy), Okoye (data integrity), Falcon (migrations), Bucky (legacy).
871
+
872
+ ---
873
+
874
+ ## [8.1.0] - 2026-03-16
875
+
876
+ ### Added
877
+ - **Troi (PRD Compliance)** activated in `/build` Phase 0 (confirms PRD extraction), Phase 4/8 gates (spot-checks built features against PRD), and `/campaign` per-mission checks.
878
+ - **Padmé (Functional Verification)** activated in `/build` Phase 4/6 gates (verifies primary user flow end-to-end) and `/campaign` per-mission for user-facing missions.
879
+ - **Celeborn (Design System Governance)** activated in `/ux` Step 2 and `/build` Phase 5 — audits spacing tokens, typography scale, color palette consistency, component naming.
880
+ - **Worf (Security Implications)** activated in `/architect` Step 1 — flags security implications of architectural decisions alongside Spock and Uhura.
881
+ - **Riker (Decision Review)** activated in `/architect` Step 5 — reviews Picard's ADRs for trade-off validity and second-order effects.
882
+ - **Torres (Performance Architecture)** activated in `/architect` Step 3 — identifies N+1 queries, missing indexes, caching gaps in design phase.
883
+ - **Cyborg (System Integration)** activated in `/qa` Step 1 — traces full data paths across module boundaries when 3+ modules connect.
884
+ - **Raven (Deep Analysis)** activated in `/qa` Step 1 — finds bugs hidden beneath layers of abstraction, data flowing through transforms.
885
+ - **Wonder Woman (Truth Detector)** activated in `/qa` Step 1 — finds code that says one thing and does another.
886
+ - **Valkyrie (Disaster Recovery)** activated in `/devops` — backup verification, restore testing, failover procedures.
887
+
888
+ ---
889
+
890
+ ## [8.0.1] - 2026-03-16
891
+
892
+ ### Fixed
893
+ - **Victory Gauntlet hardening** — 16 fixes across 2 Gauntlet runs: PTY stale session cleanup (3 compounding bugs), .env newline/shell injection, globSync Node 22+ compat replaced with recursive readdir, restart banner dead endpoint + CSP violation, symlink cycle guard, XSS in auto-command banner, dead code cleanup.
894
+ - **Node.js `engines` field** tightened from `>=20.0.0` to `>=20.11.0` — `import.meta.dirname` requires 20.11+.
895
+ - **Quality Reduction Anti-Pattern** — hard methodology rule: agents MUST NOT reduce Gauntlet, checkpoint, or debrief quality based on self-assessed "context pressure." Must run `/context` and report actual usage. Below 70% = continue full protocol.
896
+ - **9 methodology fixes** from field reports #46-#53: CORS requirements check, external API HTTPS enforcement, IP range validation warning, internal path leakage check, client-side partial failure testing, const/let audit, Node API compatibility check, UI→server route tracing, Victory Checklist with debrief-before-sign-off.
897
+ - **CLAUDE.md** — added PRD_GENERATOR to Docs Reference, corrected pattern count (7→8).
898
+ - **Architecture docs** version headers updated to 8.0.0.
899
+
900
+ ---
901
+
902
+ ## [8.0.0] - 2026-03-16
903
+
904
+ ### Added
905
+ - **Agent Memory — Active Lessons Read-Back.** Wong loads `/docs/LESSONS.md` during Phase 0 Orient. Review commands (`/qa`, `/security`, `/ux`, `/review`) read LESSONS.md in Context Setup and flag matches during analysis.
906
+ - **Conflict Prediction — Phase 0.5 Architecture Scan.** Picard scans PRD frontmatter for 8 structural contradictions before any code is written. Added Conflict Checklist to SYSTEMS_ARCHITECT.md and pre-analysis step to `/architect`.
907
+ - **`/prd` command** — Sisko's PRD generator. 5-act structured interview producing a complete PRD with valid YAML frontmatter.
908
+
909
+ ---
910
+
911
+ ## [7.7.0] - 2026-03-16
912
+
913
+ ### Added
914
+ - **Native module mtime detection** — server snapshots `.node` file mtimes at startup, checks on Lobby load. If changed (npm install while server running), shows "Restart Now" banner.
915
+ - **`/api/server/status` endpoint** — returns `needsRestart` flag for native module detection.
916
+ - **`docs/COMPATIBILITY.md`** — Node.js version testing doc with known ABI-breaking changes and engines field policy.
917
+ - **Restart banner** in Lobby — appears when native modules changed on disk.
918
+
919
+ ### Changed
920
+ - **ARCHITECTURE.md** rewritten from v2.7.0 to v7.7.0 — adds Avengers Tower, RBAC, Thumper, ws/node-pty, PTY manager, vault key naming, mtime detection.
921
+ - **FAILURE_MODES.md** rewritten — adds WebSocket, PTY, Tower, Thumper, and native module failure modes.
922
+ - **SCALING.md** rewritten — Tier 2 reflects shipped multi-user features, PTY sessions as bottleneck.
923
+ - **Context pressure rule** fixed — removed "3 consecutive missions" heuristic. Checks actual usage, only checkpoints at 70%.
924
+
925
+ ---
926
+
927
+ ## [7.6.0] - 2026-03-16
928
+
929
+ ### Added
930
+ - **`voidforge deploy --env-only`** — write vault credentials to `.env` without provisioning infrastructure. Reads all vault keys, maps both `env:`-prefixed and hyphenated keys to env vars, appends to `.env`. Supports `VOIDFORGE_VAULT_PASSWORD` env var for non-interactive use.
931
+ - **`scripts/vault-read.ts`** — standalone vault reader. Read a single key (`--key`) or list all keys (`--list`). Supports non-interactive use via `VOIDFORGE_VAULT_PASSWORD`.
932
+ - **Campaign vault auto-inject (Step 0.5)** — if vault has credentials not yet in `.env`, auto-run `deploy --env-only` before the first mission. Blitz mode auto-runs; normal mode asks for confirmation.
933
+ - **Node.js `engines` field** in package.json — `>=20.0.0 <25.0.0`. Prevents silent ABI breaks with unsupported Node versions.
934
+
935
+ ### Changed
936
+ - **Stale PTY session cleanup** — Tower auto-detects sessions that fail within 2 seconds of creation. Auto-removes the dead tab and retries once. Prevents dead sessions from consuming MAX_SESSIONS slots.
937
+ - **Fallback model ID** updated from `claude-sonnet-4-5-20241022` to `claude-sonnet-4-6`.
938
+
939
+ ---
940
+
941
+ ## [7.5.3] - 2026-03-16
942
+
943
+ ### Added
944
+ - **Vault key naming convention** in HOLOCRON — documents hyphenated keys (global/infra) vs `env:`-prefixed keys (project-specific), with resolver order and provisioner mapping.
945
+ - **Outbound URL Safety** checklist in security audit — verify transactional emails never send localhost/private IP URLs, production fallback requirement, dedicated `EMAIL_BASE_URL` recommendation. (Field report #44)
946
+ - **Query-param state trust** attack vector in QA — Deathstroke tests whether URL parameters controlling client state are validated server-side before rendering. (Field report #44)
947
+ - **Collapsible/Accordion ARIA pattern** in component reference — `aria-expanded` + `aria-controls` + `id` triple checklist with code example. (Field report #43)
948
+ - **v7.7 The Housekeeping** planned in ROADMAP — architecture doc refresh, server auto-restart (tech debt #11), Node.js compatibility doc.
949
+ - **v7.6 bolt-ons** planned in ROADMAP — stale PTY cleanup (#12), Node.js `engines` field, fallback model ID update.
950
+ - **v8.0 ship order** in ROADMAP — Agent Memory first, then Conflict Prediction, then Auto-PRD.
951
+
952
+ ### Fixed
953
+ - **Stale roadmap header** — updated from v7.1.0 to v7.5.2 with correct next version (v7.6).
954
+ - **Field reports #42-#44** triaged and closed — 4 fixes applied, 2 already-fixed, 2 deferred to v7.6, 2 wontfix.
955
+
956
+ ---
957
+
958
+ ## [7.5.2] - 2026-03-16
959
+
960
+ ### Added
961
+ - **Credentials flow documentation** in HOLOCRON — explains how vault credentials reach `.env` during build and deploy.
962
+ - **v7.6 The Vault Pipeline** planned in ROADMAP — `deploy --env-only`, standalone vault reader, campaign auto-inject.
963
+
964
+ ---
965
+
966
+ ## [7.5.1] - 2026-03-16
967
+
968
+ ### Added
969
+ - **Vault awareness in campaign** — Kira checks vault status in Step 0, Dax classifies credentials as "vault-available" instead of BLOCKED. (Field report #40)
970
+ - **Troi pre-scan before Victory** — verifies all PRD claims before declaring "all complete." (Field report #38)
971
+ - **Cross-file dependency check** in per-mission review — catch cross-module integration gaps. (Field report #38)
972
+ - **Deployment verification** in Assembler Phase 9 — check if project is already live before suggesting deploy steps. (Field report #37)
973
+ - **Deployment section** in build-state.md template. (Field report #37)
974
+
975
+ ### Changed
976
+ - **Security audit** gains 5 new checklist items: anonymity invariant, filesystem access, constant-time comparison, sanitizer baseline, auth framework rate limiting. (Field reports #36, #38)
977
+ - **API route pattern** gains Prisma select-on-mutations rule and fire-and-forget endpoint (sendBeacon/CSRF) guidance. (Field report #36)
978
+ - **Service pattern** gains Prisma select-on-mutation example. (Field report #36)
979
+ - **Campaign** gains data model retrofit check, pattern replication check, vault-aware Dax classification. (Field reports #38, #40)
980
+ - **WCAG contrast verification** added to Galadriel's UX checklist. (Field report #38)
981
+ - **Post-pipeline deploy offer** in Assembler after Phase 13. (Field report #37)
982
+
983
+ ---
984
+
985
+ ## [7.5.0] - 2026-03-16
986
+
987
+ ### Added
988
+ - **Thumper Command Center** — `/help` in Telegram shows an interactive inline keyboard grid of all 15 VoidForge commands. Tap a command → submenu shows all flag variants (e.g., `/campaign --blitz`, `/gauntlet --quick`, `/debrief --inbox`). Tap a variant to send immediately. ← Back returns to grid.
989
+ - **Bot personalization** in `/thumper setup` — auto-sets bot name (project-branded), Bilbo writes description from PRD, registers 15+1 commands in Telegram menu, generates DALL-E avatar (if OpenAI key in vault).
990
+ - **Command↔doc sync check** in `/git` Step 5.5 — flags when method docs change but paired command files don't. 13 pairs tracked.
991
+
992
+ ### Fixed
993
+ - **Thumper response relay** — water-rings.sh now reads `last_assistant_message` from Stop hook stdin metadata. Previously tried to read conversation JSON from stdin (which doesn't exist), always falling back to "no summary available."
994
+ - **scan.sh non-interactive** — all `read -r -p` prompts skipped when `--token` and `--chat-id` provided. Environment confirmation and "Start now?" prompts were still blocking.
995
+
996
+ ### Changed
997
+ - **`/thumper setup` is Claude-native** — conversational flow guides through BotFather, validates token via API, auto-detects chat ID, runs scan.sh non-interactive. No interactive stdin needed.
998
+ - **9 Gauntlet consistency fixes** — command files synced with method docs: Kusanagi in Round 1, Hawkeye smoke test, Lucius in Round 2 Batman, --ux-extra flag, VERSION.md/CHANGELOG.md in shared file lists, 3-mission context limit, minimum 1 review guarantee.
999
+
1000
+ ---
1001
+
1002
+ ## [7.4.1] - 2026-03-16
1003
+
1004
+ ### Added
1005
+ - **Thumper scripts now synced** by `/void` — `scripts/thumper/*` added to shared files, carved out from `scripts/*` exclusion. (Field report #34)
1006
+ - **Parallel agent convention lock** — schema ownership, naming conventions, required fields must be specified when launching parallel agents. (Field report #33)
1007
+ - **Integration wiring check** in build protocol — verify new services are connected to consumers, TODOs resolved, workers registered. (Field report #33)
1008
+ - **Cascade review checklist** — orphaned references, race conditions, PII scrubbing, reassignment fallbacks for DELETE/UPDATE operations. (Field report #31)
1009
+ - **Mandatory end-of-campaign debrief** — `/debrief --submit` required after Victory Gauntlet, non-negotiable. (Field report #31)
1010
+ - **Campaign state auto-sync** — cross-reference git log against campaign-state.md at session start. (Field report #32)
1011
+ - **3-mission context pressure limit** — checkpoint and consider fresh session after 3 consecutive build missions. (Field report #33)
1012
+
1013
+ ### Changed
1014
+ - **Proxy route SSRF** added to security checklist — validate target paths against regex allowlist. (Field report #33)
1015
+ - **No secrets in stored data** — verify no API keys/tokens embedded in database-stored URLs. (Field report #33)
1016
+ - **Crypto randomness** check — flag `Math.random()` in token/code/identifier generation. (Field report #32)
1017
+ - **Deeper PRD scan** in Dax's analysis — grep for feature completeness, not just file existence. (Field report #32)
1018
+ - **Database fixtures** guidance — always use shared conftest, never custom DDL. (Field report #31)
1019
+
1020
+ ---
1021
+
1022
+ ## [7.4.0] - 2026-03-16
1023
+
1024
+ ### Added
1025
+ - **Runtime smoke test** in Gauntlet Round 2 — start server, hit endpoints, test WebSocket lifecycle. Catches what static analysis misses. (Field report #30)
1026
+ - **First-run scenario checklist** in QA — fresh install, server restart, project import, dependency update transitions. (Field report #30)
1027
+ - **Restart resilience checklist** in DevOps — inventory in-memory state, define recovery paths. (Field report #30)
1028
+ - **Campaign-mode assemble pipeline** — reduced phases (arch + build + 1 review + security if needed) for multi-mission campaigns. Full pipeline deferred to Victory Gauntlet. (Field report #26)
1029
+ - **Lightweight inline debrief** option for blitz — 3-line summary to log file when full `/debrief --submit` is too heavy. (Field report #26)
1030
+ - **Minimum 1 review round guarantee** — even `--fast` gets 1 review, never 0. (Field report #28)
1031
+
1032
+ ### Changed
1033
+ - **Direct-ID entity access** is now High severity minimum in security audit — never defer. (Field report #28)
1034
+ - **Role enforcement** must cover ALL write routes, not just CRUD — batch, merge, import/export, admin utilities. (Field report #28)
1035
+ - **Admin self-referential case** added to UX checklist — disable destructive actions on own user row. (Field report #28)
1036
+ - **SQL fragment builders** must accept alias parameter from day 1 — breaks in JOINs without it. (Field report #28)
1037
+ - **Per-item processing** for unreliable inputs — individual items with timeouts, not batch. (Field report #27)
1038
+ - **Cache AI agent outputs** — reuse cached intermediate results to prevent cross-generation drift. (Field report #27)
1039
+ - **Server components for content pages** — "use client" on marketing pages kills SEO. (Field report #27)
1040
+ - **Background operations need visible progress** — loading state, progress indicator, completion notification. (Field report #27)
1041
+ - **Mode instructions must replace, not append** — each mode needs complete spec, not a footnote. (Field report #27)
1042
+ - **Platform networking** — bind `::` (dual-stack) not `127.0.0.1`. macOS resolves localhost to IPv6. (Field report #30)
1043
+ - **Tailwind v4 deployment guide** — pin versions, restrict source scanning, avoid `attr()` in CSS. (Field report #29)
1044
+ - **Don't interleave debugging with syncs** — sync first, verify, THEN debug separately. (Field report #29)
1045
+ - **Infrastructure dependency exception** — zero-dep policy applies to business logic, not protocol infrastructure (ws, node-pty). (Field report #30)
1046
+
1047
+ ---
1048
+
1049
+ ## [7.3.2] - 2026-03-16
1050
+
1051
+ ### Changed
1052
+ - **Blitz debrief is now a blocking gate** — `/debrief --submit` must complete before the campaign loop continues. Previously it was a suggestion that agents skipped in velocity mode. Now it blocks progression. (Field reports #24, #25)
1053
+ - **Blitz per-mission checklist** added to campaign command header — 5 mandatory items (assemble, git, debrief, state update, proceed) that must be verified before each loop-back.
1054
+ - **Blitz mode documented in CAMPAIGN.md method doc** — full section under "Two Modes" explaining what blitz changes, what it preserves, and that `--blitz ≠ --fast`. (Field report #25)
1055
+ - **Debrief issue tracking** in campaign state — mission table now includes debrief issue number column.
1056
+ - **Blitz privacy exception** in FIELD_MEDIC.md — user opted into autonomous mode, so auto-submit is permitted without review. (Field report #25)
1057
+ - **Blitz checkpoint enforcement** — explicit mission counter instruction in Step 4.5 with mandatory logging. (Field report #23)
1058
+ - **"No questions in blitz"** rule — all decisions autonomous, choose quality-preserving option when uncertain. (Field report #23)
1059
+ - **Tier enforcement extended to UI components** — QA now greps `.tsx`/`.jsx` for hardcoded tier comparisons. (Field report #22)
1060
+ - **Action inventory before hiding containers** — UX redesigns must list all primary AND secondary actions before collapsing/hiding a component. (Field report #22)
1061
+ - **Test schema vs. production schema** check — verify test fixtures create all tables from migration runner. (Field report #21)
1062
+ - **Timestamp format enforcement** — QA greps for non-canonical `strftime`/format calls. (Field report #21)
1063
+ - **Auth retrofit audit** — when adding auth to a router, audit ALL existing endpoints in that file. (Field report #21)
1064
+
1065
+ ---
1066
+
1067
+ ## [7.3.1] - 2026-03-16
1068
+
1069
+ ### Changed
1070
+ - **`/campaign --blitz` now auto-debriefs after every mission.** In blitz mode, `/debrief --submit` runs automatically after each mission completes, filing a GitHub field report with learnings while context is fresh. No user review needed — blitz trusts the output. Run `/debrief --inbox` on the upstream repo later to triage accumulated reports. This is the missing feedback loop for autonomous builds: every mission's failures, patterns, and methodology gaps are captured even when nobody is watching.
1071
+
1072
+ ---
1073
+
1074
+ ## [7.3.0] - 2026-03-16
1075
+
1076
+ ### Added
1077
+ - **`/campaign --blitz`** — Fully autonomous campaign mode. Skips mission confirmation prompts, implies `--fast`, auto-continues between missions. Victory Gauntlet still mandatory. Use when you want to click "Start Building" and walk away.
1078
+ - **Lobby build-state indicator** — Project cards show contextual buttons: "Start Building" (Phase 0), "Resume Build" (Phase 1-12), "Open Room" (built/deployed). Color-coded badge shows current state.
1079
+ - **Tower vault unlock form** — When the vault is locked (server restart, import), the Tower shows an inline password form instead of a cryptic error. Unlock → auto-retries terminal creation.
1080
+ - **Tower auto-send countdown** — After Claude Code launches, a 3-second countdown auto-types the command (e.g., `/campaign --blitz`). Cancel button available.
1081
+
1082
+ ### Fixed
1083
+ - **WebSocket terminal connection** — Replaced custom WebSocket implementation with the `ws` library (same as VS Code). The custom handshake was incompatible with Node.js v24's HTTP internals, causing `code 1006` connection failures in all browsers.
1084
+ - **IPv6 localhost binding** — Server now binds to `::` (dual-stack) in local mode. macOS resolves `localhost` to `::1` (IPv6 first); binding to `127.0.0.1` broke WebSocket connections.
1085
+ - **PTY Enter key** — Auto-send used `\n` (line feed) instead of `\r` (carriage return). PTY terminals require `\r` to simulate the Enter key.
1086
+ - **Build status "Live" false positive** — Projects with a `deployUrl` set during wizard setup (intended domain) showed as "Live" even at Phase 0. Now requires both `deployUrl` AND `lastDeployAt` to confirm actual deployment.
1087
+ - **Static file caching** — Added `Cache-Control: no-cache, must-revalidate` to static file responses. Prevents browsers from serving stale JS after server updates.
1088
+ - **CSP connect-src** — Added `https://cdn.jsdelivr.net` to allow xterm.js source map fetching.
1089
+
1090
+ ### Changed
1091
+ - **Claude Code in Tower** now launches with `--dangerously-skip-permissions` for autonomous operation.
1092
+ - **`ws` + `@types/ws`** added as dependencies (replaces 200+ lines of custom WebSocket code).
1093
+
1094
+ ---
1095
+
1096
+ ## [7.2.1] - 2026-03-15
1097
+
1098
+ ### Fixed
1099
+ - **Avengers Tower terminal crash on Node.js v24** — `posix_spawnp failed` error when opening terminal. Upgraded `node-pty` from 1.1.0 to 1.2.0-beta.12 which includes prebuilds compatible with Node v24's ABI.
1100
+
1101
+ ---
1102
+
1103
+ ## [7.2.0] - 2026-03-15
1104
+
1105
+ ### Added
1106
+ - **Third-party script loading pattern** — Three-state pattern (loading/ready/error) for external script dependencies (`docs/patterns/third-party-script.ts`)
1107
+ - **v8.0-v9.0+ roadmap** — The Hive Mind (Agent Memory, Conflict Prediction, `/prd`), The Evolution (Self-Improving Methodology, Agent Specialization), The Autonomy (`/campaign --autonomous`), The Horizon (Pattern Evolution, Cross-Project, Multi-Language)
1108
+ - **7 enchantment animations** — Forge-lit pulse on vault unlock, streaming cursor for PRD generation, success icon pop, directional step transitions, primary button gradient glow, subtitle delayed fade-in, status message slide-in
1109
+
1110
+ ### Changed
1111
+ - **Vault password minimum raised to 8 characters** — was 4, now consistent with security best practices (server + client)
1112
+ - **TOTP validation enforces exactly 6 digits** — rejects alphabetic and short/long codes per RFC 6238
1113
+ - **Provisioning concurrency lock** — check-and-set is now synchronous (same event loop tick), preventing TOCTOU race on concurrent requests
1114
+ - **Manifest writes serialized** — all mutation functions in provision-manifest.ts now use write queue, preventing race conditions
1115
+ - **PTY cols/rows clamped before spawnOptions** — consistent with resize clamping, prevents oversized terminal dimensions
1116
+ - **ANTHROPIC_API_KEY excluded from remote PTY** — operator's API key no longer leaks to deployer-role terminal sessions
1117
+ - **11 methodology fixes** from 5 field reports: execution order verification (Gauntlet), Node.js mutex pattern (Backend), symlink resolution (Security), CSS animation replay (Frontend), cross-file flow tracing (Assembler), VERSION.md content checks (Forge Keeper + void), .claude/settings.json in /void "Never touch" list
1118
+
1119
+ ### Security
1120
+ - **HSTS header** in remote mode (`Strict-Transport-Security: max-age=31536000; includeSubDomains`)
1121
+ - **Vault cache timing-safe comparison** — uses `timingSafeEqual` instead of `===` for password check
1122
+ - **UUID validation on manifest runId** — prevents path traversal via crafted cleanup requests
1123
+ - **Symlink resolution** in project import — `fs.realpath()` prevents symlink attacks pointing outside project directory
1124
+
1125
+ ### Fixed
1126
+ - **Skip navigation link** added for keyboard/screen reader users (WCAG 2.1 AA)
1127
+ - **ARIA tab linkage** — PRD tabs have ids, aria-controls, and aria-labelledby
1128
+ - **Section aria-labelledby** — all wizard step sections linked to their headings
1129
+ - **noscript fallback** — shows clear message when JavaScript is disabled
1130
+ - **--text-muted contrast** raised from #767676 to #8a8a8a (5.76:1 ratio, WCAG AA compliant)
1131
+ - **Heading "Describe Your Vision"** replaces "Product Requirements" — matches PRD three-act language
1132
+ - **Backward animation direction** — navigating from step 5 to 4b now plays slide-left (not slide-right)
1133
+ - **Forge-lit animation replay** — vault unlock pulse replays correctly on repeated attempts via reflow trick
1134
+
1135
+ ---
1136
+
1137
+ ## [7.1.0] - 2026-03-15
1138
+
1139
+ ### Added
1140
+ - **Operations menu** — Act 3 presents expandable cards: Deploy Target, Cloud Credentials, Domain & Hostname, Resilience Pack. Pick what you need, skip the rest.
1141
+ - **Resilience Pack** — 10 opt-in toggles for operational hardening: multi-env, preview deploys, auto-rollback, migrations, backups, health check, graceful shutdown, error boundaries, rate limiting, dead letter queue.
1142
+ - **Live header** — Shows "Gandalf — [Project Name]" as you type.
1143
+
1144
+ ### Changed
1145
+ - **Three-act wizard flow** — "Secure Your Forge" (vault → API key) → "Describe Your Vision" (project → PRD) → "Equip Your Project" (operations menu). Vault and API key split into separate focused screens. Domain/hostname moved to operations menu.
1146
+ - **Act-based progress labels** — "Act 1 — Secure Your Forge" instead of "Step 3 of 7".
1147
+
1148
+ ### Removed
1149
+ - **Simple/Advanced toggle** — Eliminated. Every user gets the same flow; configure depth via the operations menu.
1150
+
1151
+ ---
1152
+
1153
+ ## [7.0.1] - 2026-03-15
1154
+
1155
+ ### Changed
1156
+ - **Gandalf wizard redesigned as Three-Act Flow** — identity (vault + key), vision (name + PRD), operations (menu of cards). Eliminates simple/advanced toggle. Éowyn's enchantment notes woven into each act.
1157
+ - **v4.3 reclassified as "The Resilience Pack"** — opt-in card in Gandalf's Act 3 operations menu with 10 toggles (5 deploy + 5 runtime resilience). Smart defaults based on deploy target and framework.
1158
+ - **v7.1 "The Redesign" added to ROADMAP** — implementation plan for the wizard UX overhaul.
1159
+
1160
+ ### Fixed
1161
+ - **SSRF bypass checklist** added to Kenobi's security audit — octal IPs, decimal IPs, IPv6, DNS rebinding, URL scheme bypass (field report #12).
1162
+ - **AI output sanitization checklist** added — nested structure handling, secure fallback paths, isolated-vm requirement, sandbox escape test (field report #11).
1163
+ - **"Grep for siblings" rule** added to Batman's QA Pass 2 and Gauntlet fix batches — fix ALL instances of a pattern, not just the one reported (field reports #11 + #12).
1164
+ - **Encoding variant check** added to Gauntlet fix batch protocol — verify security filters handle all name encodings (field report #12).
1165
+ - **Enum consumer sweep** added to Build Protocol Phase 5 — grep all consumers when adding new enum values (field report #11).
1166
+ - **Cross-surface consistency sweep** added to Build Protocol Phase 8 — search all surfaces when changing pricing/tiers/counts (field report #11).
1167
+ - **Kusanagi added to Gauntlet Round 1** — infrastructure issues discovered earlier, not deferred to Round 3 (field report #11).
1168
+ - **Whitelist-over-blocklist** documented as general security principle in Kenobi's method doc (field report #12).
1169
+
1170
+ ---
1171
+
1172
+ ## [7.0.0] - 2026-03-15
1173
+
1174
+ ### Added
1175
+ - **The Penthouse — Multi-User RBAC** — Three roles (admin, deployer, viewer) with invitation-only user creation. TOTP mandatory. ROUTE_ROLES middleware enforces role hierarchy on every API endpoint.
1176
+ - `wizard/lib/user-manager.ts` — User CRUD, invitation system (24h tokens, single-use, timing-safe comparison), `hasRole()` hierarchy, `hasProjectAccess()` per-project checks.
1177
+ - `wizard/api/users.ts` — User management endpoints: list, invite, complete-invite, remove, role change. All admin-gated with defense-in-depth.
1178
+ - **Per-Project Access Control** — Project ownership and access lists. Each project has an owner and a list of `{ username, role }` entries. Queries filtered by access — users only see projects they own or have been granted access to.
1179
+ - `grantAccess()`, `revokeAccess()`, `getProjectsForUser()`, `checkProjectAccess()` in project-registry.
1180
+ - Access management modal in Lobby UI with focus trap, Escape handler, DOM-safe event binding.
1181
+ - Role badges on project cards (Owner/Deployer/Viewer).
1182
+ - **Linked Services** — Bidirectional project linking for monorepo orchestration. BFS group resolution with cycle detection. Coordinated deploy checks across linked services.
1183
+ - `wizard/lib/deploy-coordinator.ts` — `checkDeployNeeded()`, `getDeployPlan()` with audit.
1184
+ - Link/unlink API endpoints with dual-ownership verification.
1185
+ - Link management modal in Lobby UI.
1186
+ - **Rollback Dashboard** — Deploy history panel in Avengers Tower with collapsible sidebar, keyboard navigation (Escape to close), `aria-expanded`/`aria-controls`.
1187
+ - `wizard/ui/rollback.js` — viewer-gated deploy history display.
1188
+ - **Cost Tracker** — Aggregate monthly costs across all accessible projects via existing `monthlyCost` field. NaN/negative guard on writes.
1189
+ - `wizard/lib/cost-tracker.ts` — `getAggregateCosts()`, `setProjectCost()`.
1190
+ - Lobby Penthouse footer fetches real cost data from API.
1191
+ - **Agent Memory** — Cross-project lesson storage for methodology learning. 1000-entry cap with oldest-eviction. Serialized writes, atomic file ops.
1192
+ - `wizard/lib/agent-memory.ts` — `addLesson()`, `getLessons()`, `getRelevantLessons()`.
1193
+ - `~/.voidforge/lessons.json` (0600 permissions).
1194
+ - 4 Architecture Decision Records: ADR-028 (RBAC), ADR-029 (per-project access), ADR-030 (linked services), ADR-031 (observatory features).
1195
+
1196
+ ### Changed
1197
+ - `tower-auth.ts` — Extended for multi-user: `UserRole` type, `SessionInfo` return from `validateSession()`, role in sessions, `createUser()` accepts role, `removeUser()`/`updateUserRole()`/`listUsers()`/`getUserRole()` added, legacy user migration (pre-v7.0 users get `role: 'admin'`), username character validation (`/^[a-zA-Z0-9._-]+$/`), X-Forwarded-For takes rightmost IP.
1198
+ - `server.ts` — ROUTE_ROLES middleware maps API paths to minimum roles. WebSocket upgrade uses `hasRole()` (not hardcoded string). CSRF error format standardized. User context propagated to handlers.
1199
+ - `project-registry.ts` — `owner`, `access`, `linkedProjects` fields. `removeProject()` cleans up linked references. `removeUserFromAllProjects()` clears ownership on user deletion. BFS `getLinkedGroup()`.
1200
+ - `pty-manager.ts` — `username` field in PtySession for audit trail.
1201
+ - `terminal.ts` — Per-project access checks, user context extraction, session list filtered by ownership, kill endpoint with ownership check.
1202
+ - `lobby.js` — Role-aware UI: conditional buttons per role, access/link modals with focus traps, cost display from API.
1203
+ - `lobby.html` — Access modal, link modal, role badge styling, linked badge styling.
1204
+ - `tower.html` — Rollback panel with a11y attributes.
1205
+
1206
+ ### Fixed
1207
+ - Tailwind v4 content scanning check added to Galadriel's UX method (field report #10).
1208
+ - Platform Build Gate added to Kusanagi's DevOps method (field report #10).
1209
+
1210
+ ### Security
1211
+ - ROUTE_ROLES enforces minimum role on all 45+ API endpoints (defense-in-depth with handler-level checks).
1212
+ - Per-project access returns 404 (not 403) to prevent information leakage.
1213
+ - Invite tokens: 256-bit, timing-safe comparison, 24h expiry, single-use with rollback on failure.
1214
+ - Terminal sessions filtered by user — deployers can only see/kill their own sessions.
1215
+ - Viewer blocked from terminals (WebSocket + REST), deploy metadata, and write operations.
1216
+ - User removal clears project ownership to prevent privilege escalation via username reuse.
1217
+ - Session cookie always sets Secure flag in remote mode (not header-dependent).
1218
+ - `ProjectAccessEntry.role` tightened to `'deployer' | 'viewer'` (admin grants blocked at API).
1219
+ - 52 security/quality findings resolved across 4 missions + 2 Gauntlet checkpoints.
1220
+
1221
+ ---
1222
+
1223
+ ## [6.5.1] - 2026-03-15
1224
+
1225
+ ### Changed
1226
+ - **The Arthurian Retcon** — All Arthurian legend references removed from the codebase. VoidForge's identity is rooted in its declared fictional universes (Tolkien, Marvel, DC, Star Wars, Star Trek, Dune, Anime). Arthurian legend was never one of them.
1227
+ - **Merlin → Gandalf** (Tolkien) — Setup wizard is now Gandalf. *"I'm looking for someone to share in an adventure."* The wizard who kicks off the journey.
1228
+ - **Gandalf → Radagast** (Tolkien) — UX edge-cases sub-agent renamed to free the name. Radagast notices things at the boundaries others overlook.
1229
+ - **Camelot → Avengers Tower** (Marvel) — Browser terminal / operations console. Stark's HQ. Every project gets a floor.
1230
+ - **Great Hall → The Lobby** (Marvel) — Multi-project dashboard. Where you see every floor at a glance.
1231
+ - **Round Table → The Penthouse** (Marvel) — v7.0 multi-user coordination. Where the team meets. Top floor.
1232
+ - 39 files modified, 5 files renamed, ~180 replacements across code + docs.
1233
+
1234
+ ---
1235
+
1236
+ ## [6.5.0] - 2026-03-15
1237
+
1238
+ ### Added
1239
+ - **Avengers Tower Remote** — self-hosted VoidForge with 5-layer security. Access your forge from any browser, anywhere.
1240
+ - `wizard/lib/tower-auth.ts` — Full authentication engine: PBKDF2 password hashing (210k iterations, NIST SP 800-63B), TOTP 2FA (RFC 6238 with replay protection), session management (in-memory only, 8-hour TTL, IP binding, single active session), rate limiting (5/min, 10-consecutive lockout for 30 min), serialized writes, periodic cleanup.
1241
+ - `wizard/api/auth.ts` — Login, logout, session check, initial setup endpoints. Runtime type validation, field length caps, Cache-Control: no-store on auth responses.
1242
+ - `wizard/ui/login.html` + `wizard/ui/login.js` — Login page with setup flow (first-time TOTP enrollment) and auth flow (username + password + TOTP). Keyboard accessible, autofill-friendly.
1243
+ - `wizard/lib/audit-log.ts` — Append-only JSON lines audit trail at `~/.voidforge/audit.log`. Logs: login attempts, sessions, vault events, terminal sessions, deploys, credential access. 10MB rotation. Never crashes the server.
1244
+ - `wizard/lib/provisioners/self-deploy.ts` — VoidForge self-deploy provisioner: installs Node.js, Caddy, PM2, creates forge-user, generates Caddy HTTPS config, starts VoidForge as a managed service.
1245
+ - ADR-027: Avengers Tower Remote 5-Layer Security Architecture.
1246
+
1247
+ ### Changed
1248
+ - `wizard/server.ts` — Auth middleware gates all routes in remote mode (exempt: login/setup/static). WebSocket upgrade validates Avengers Tower session. CSP includes `wss://` for remote WebSocket. CORS expanded for remote domain. Binds to `0.0.0.0` in remote mode.
1249
+ - `wizard/lib/pty-manager.ts` — Remote mode: 20 max sessions (vs. 5 local), audit log integration (terminal_start/terminal_end), forge-user sandboxing.
1250
+ - `wizard/ui/lobby.html` + `wizard/ui/lobby.js` — Auth-aware: shows username, logout button, redirects to login when unauthenticated.
1251
+ - `scripts/voidforge.ts` — `--remote` flag (remote mode), `--self` flag (self-deploy), `--host` flag (domain name).
1252
+
1253
+ ### Security
1254
+ - Two-password architecture: login password (bcrypt/PBKDF2) ≠ vault password (AES-256-GCM). Compromised session cannot read credentials.
1255
+ - TOTP replay protection: lastTotpStep tracked per user, codes rejected at or before last used step.
1256
+ - Rate limiting with memory cleanup: periodic eviction of expired sessions and stale rate-limit entries.
1257
+ - Setup endpoint rate-limited and serialized to prevent race-to-setup attacks.
1258
+ - X-Forwarded-For only trusted in remote mode (behind Caddy reverse proxy).
1259
+ - Auth store throws on corruption (prevents silent re-setup attack vector).
1260
+ - Shell injection prevention in self-deploy: input validation + shell escaping.
1261
+ - IP binding on sessions: mismatch invalidates session entirely.
1262
+
1263
+ ---
1264
+
1265
+ ## [6.0.0] - 2026-03-15
1266
+
1267
+ ### Added
1268
+ - **Avengers Tower Multi — The Lobby** — multi-project operations console. Dashboard shows all VoidForge projects with health status, deploy URL, framework badge, cost, and quick actions.
1269
+ - `wizard/lib/project-registry.ts` — CRUD for `~/.voidforge/projects.json`. Serialized writes (vault pattern), atomic file ops (temp + fsync + rename), backup before overwrite, field validation on read, MUTABLE_FIELDS allowlist on update.
1270
+ - `wizard/api/projects.ts` — REST API: list all, get by ID, import existing project, delete from registry. Runtime type validation on all inputs, path canonicalization via `resolve()`.
1271
+ - `wizard/ui/lobby.html` + `wizard/ui/lobby.js` — The Lobby dashboard with project cards, health indicators (color + text labels for WCAG 1.4.1), import modal with focus trap, keyboard-navigable cards, 30-second polling.
1272
+ - `wizard/lib/health-poller.ts` — Background health checks every 5 minutes. Parallel via `Promise.allSettled`, 5-second timeout per project, SSRF protection (private IP blocklist, redirect blocking, hex/octal/IPv6 coverage).
1273
+ - **Import Existing Project** — `POST /api/projects/import` scans a directory for CLAUDE.md, PRD frontmatter, .env, build-state, and auto-detects framework from package.json/requirements.txt/Gemfile.
1274
+ - **Back-to-Lobby navigation** in Avengers Tower — "← Lobby" button with session persistence confirmation.
1275
+ - ADR-026: Project Registry and The Lobby Architecture.
1276
+
1277
+ ### Changed
1278
+ - Server landing page changed from Gandalf (`/index.html`) to The Lobby (`/lobby.html`). Gandalf still accessible via direct URL and "New Project" buttons.
1279
+ - `wizard/server.ts` — health poller lifecycle (start on listen, stop before PTY cleanup), double-shutdown guard, CORS fix (non-matching origins get no allow-origin header).
1280
+ - `wizard/api/project.ts` — registers new projects in registry, runtime type validation on all body fields, .env template injection prevention (newline stripping).
1281
+ - `wizard/ui/tower.html` — ARIA landmarks (`<main>`, `role="alert"`), `:focus-visible` on buttons, `prefers-reduced-motion` support.
1282
+
1283
+ ### Security
1284
+ - SSRF prevention in health poller: URL scheme validation, private IP blocklist (IPv4, IPv6, hex, octal, decimal, 0.0.0.0, metadata endpoints), `redirect: 'manual'` to prevent redirect-based SSRF.
1285
+ - CORS hardened: non-matching origins no longer receive `Access-Control-Allow-Origin` header.
1286
+ - .env injection prevention: newlines stripped from all template-interpolated fields (name, description, domain, hostname, deploy target).
1287
+ - Runtime type validation on `/api/project/create` body fields (was unsafe `as` cast).
1288
+ - Registry file backup before every write (data loss prevention).
1289
+
1290
+ ### Fixed
1291
+ - **Field Report #9:** Rex (Kenobi's security team) now checks build output HTML for inline scripts before tightening CSP. Gauntlet adds build-output verification gate after every fix batch. Prevents framework-generated inline scripts (Next.js, Nuxt, SvelteKit) from being blocked by CSP changes.
1292
+
1293
+ ---
1294
+
1295
+ ## [5.5.0] - 2026-03-15
1296
+
1297
+ ### Added
1298
+ - **Avengers Tower Local** — browser terminal with real Claude Code. Never leave the browser.
1299
+ - `wizard/lib/pty-manager.ts` — PTY lifecycle management using `node-pty`. Spawns real shell processes, manages multiple sessions per project, 30-min idle timeout, max 5 concurrent sessions.
1300
+ - `wizard/api/terminal.ts` — WebSocket ↔ PTY bridge (raw RFC 6455 implementation). REST endpoints for session CRUD. Vault password required to establish connections.
1301
+ - `wizard/ui/tower.html` + `wizard/ui/tower.js` — browser terminal UI using xterm.js. Tabbed interface: multiple terminals per project (Claude Code, Shell, SSH). Auto-launches Claude Code on open. Resize handling, session reconnection on navigate-back.
1302
+ - "Open in Avengers Tower" button on Gandalf's done screen — transitions directly from project creation to browser terminal.
1303
+ - WebSocket upgrade handler in `wizard/server.ts` — routes `/ws/terminal` to PTY bridge.
1304
+ - Graceful shutdown: `killAllSessions()` on SIGINT/SIGTERM.
1305
+ - New dependency: `node-pty` (~2MB native module, same as VS Code terminal)
1306
+ - CSP updated to allow xterm.js CDN and WebSocket connections
1307
+
1308
+ ---
1309
+
1310
+ ## [5.0.0] - 2026-03-15
1311
+
1312
+ ### Added
1313
+ - **Lessons integration** — Wong extracts learnings after every `/assemble` run and appends to `LESSONS.md`. Lessons confirmed across 2+ projects are flagged for promotion to method docs. `/build` Phase 0 now loads relevant lessons from prior projects to inform the current build.
1314
+ - **Build analytics** — `wizard/lib/build-analytics.ts` tracks metrics across projects: phase findings, fix-to-finding ratios, framework-specific trends. Stored at `~/.voidforge/analytics.json`. `surfaceTrends()` generates human-readable insights.
1315
+ - **Smart scoping** — `/campaign` now orders missions complexity-first within dependency tiers. Hardest features (most integrations, edge cases, schema relationships) built first when energy is fresh; polish and admin later.
1316
+ - **Project templates** — 4 curated starters: SaaS (Next.js + Stripe + teams), REST API (Express + Postgres), Marketing Site (Next.js + Tailwind), Admin Dashboard (Next.js + shadcn/ui). `npx voidforge init --template saas` or select in Gandalf wizard. `npx voidforge templates` lists all available.
1317
+ - New file: `wizard/lib/templates.ts` — template definitions with frontmatter, suggested integrations, and PRD scaffolding
1318
+ - New API: `GET /api/prd/templates`, `GET /api/prd/templates/get?id=saas`
1319
+ - New CLI: `npx voidforge templates` command
1320
+
1321
+ ---
1322
+
1323
+ ## [4.6.0] - 2026-03-15
1324
+
1325
+ ### Added
1326
+ - **`/debrief --inbox`** — Bashir's inbox mode: fetches open `field-report` issues from GitHub, triages each one (accept/already-fixed/wontfix/needs-info), applies accepted fixes, comments on issues with triage results, closes resolved issues. Completes the feedback loop: downstream submits → upstream triages → `/void` propagates fixes.
1327
+ - **`/imagine` retry logic** — 3 attempts with exponential backoff (1s, 3s, 9s) for DALL-E server errors (500/502/503). ~15% of requests hit transient failures; now handled automatically.
1328
+ - **Global CSS conflict check** in `/ux` Step 1.5 — Galadriel checks for specificity conflicts between global stylesheets and component-level utilities (Tailwind, CSS modules). Common traps: `overflow: hidden` on parents, stacking context conflicts, `:focus-visible` bleed-through.
1329
+
1330
+ ### Changed
1331
+ - Count cross-referencing in `/qa` already existed (shipped in v4.4.0) — confirmed during field report triage, no changes needed.
1332
+
1333
+ ---
1334
+
1335
+ ## [4.5.0] - 2026-03-15
1336
+
1337
+ ### Added
1338
+ - **PRD-driven credential collection** — Gandalf Step 4.5: after pasting a PRD, the wizard parses the env var section and presents a dynamic form to collect project-specific API keys (WhatsApp, Mapbox, Google Places, etc.). All stored in the vault with AES-256-GCM encryption.
1339
+ - New API endpoint: `POST /api/prd/env-requirements` — parses PRD content for service-specific credentials
1340
+ - New API endpoint: `POST /api/credentials/env-batch` — stores multiple credentials in one call
1341
+ - New Gandalf step between PRD and Deploy Target with accordion-style credential groups
1342
+ - **Headless deploy mode** — `npx voidforge deploy --headless` runs the full provisioner pipeline from the terminal without opening a browser. Uses vault credentials and PRD frontmatter. Progress output to stdout with colored status icons. Used by `/build` Phase 12 so you never leave Claude Code.
1343
+ - New file: `wizard/lib/headless-deploy.ts` — terminal adapter for provisioner pipeline
1344
+ - Updated `scripts/voidforge.ts` with `--headless` and `--dir` flags
1345
+ - Updated `/build` Phase 12 to reference headless deploy
1346
+ - **PostgreSQL extension support** — VPS provisioner now detects `postgis` and `pg_trgm` from Prisma schema's `extensions` directive and generates install commands in `provision.sh`
1347
+ - Updated `wizard/lib/provisioners/scripts/provision-vps.ts` with extension block generator
1348
+ - Updated `wizard/api/deploy.ts` to parse Prisma schema for extensions
1349
+
1350
+ ### Changed
1351
+ - Gandalf navigation updated to handle Step 4b (project credentials) with proper back/forward flow
1352
+ - HOLOCRON updated with headless deploy documentation
1353
+ - `/build` Phase 12 now references `npx voidforge deploy --headless` as the primary deploy path
1354
+
1355
+ ---
1356
+
1357
+ ## [4.4.0] - 2026-03-15
1358
+
1359
+ ### Added
1360
+ - **`/imagine` command** — Celebrimbor's Forge: AI image generation from PRD visual descriptions. Scans PRD for illustrations, portraits, OG images, hero art. Derives style from brand section. Generates via OpenAI API with asset manifest for regeneration. Provider-abstracted.
1361
+ - New agent: **Celebrimbor** (Tolkien, Silmarillion) — "Hand of Silver," greatest elven smith
1362
+ - Sub-agents: **Nori** (asset scanner), **Ori** (prompt engineer), **Dori** (integration checker)
1363
+ - **`/debrief` command** — Bashir's Field Reports: post-session analysis that identifies methodology gaps and proposes fixes in VoidForge's own language. Can submit structured post-mortems as GitHub issues on the upstream repo.
1364
+ - New agent: **Bashir** (Star Trek DS9) — chief medical officer, diagnostician
1365
+ - Sub-agents: **Ezri** (timeline), **O'Brien** (root cause), **Nog** (solutions), **Jake** (report)
1366
+ - `wizard/lib/image-gen.ts` — Image generation provider abstraction with OpenAI support, asset manifest, cost estimation
1367
+ - `wizard/lib/asset-scanner.ts` — PRD parser for visual asset requirements with brand style extraction
1368
+ - `docs/methods/FORGE_ARTIST.md` — Celebrimbor's full method doc
1369
+ - `docs/methods/FIELD_MEDIC.md` — Bashir's full method doc
1370
+
1371
+ ### Changed
1372
+ - Lead agent count: 11 → 13 (Celebrimbor + Bashir)
1373
+ - Command count: 13 → 15 (`/imagine` + `/debrief`)
1374
+ - NAMING_REGISTRY.md: 7 new character entries (Celebrimbor, Nori, Ori, Dori, Ezri, Nog, Jake)
1375
+
1376
+ ---
1377
+
1378
+ ## [4.2.0] - 2026-03-14
1379
+
1380
+ ### Added
1381
+ - **Prisma type generation** (ADR-025) — runs `prisma generate` and creates `types/index.ts` barrel export. Conditional on Prisma schema existing.
1382
+ - **OpenAPI spec generation** (ADR-025) — generates starter `docs/api.yaml` with framework-aware defaults. Users fill in their endpoints.
1383
+ - **Database ERD generation** (ADR-025) — parses Prisma schema and generates `docs/schema.md` with Mermaid entity-relationship diagram.
1384
+ - **Database seeding** (ADR-025) — generates `prisma/seed.ts` with factory functions for all models. Run with `npx tsx prisma/seed.ts`.
1385
+ - **Integration templates** (ADR-025) — pre-built client wrappers selected via PRD frontmatter:
1386
+ - `payments: stripe` → `lib/stripe.ts` (checkout, portal, webhooks)
1387
+ - `email: resend` → `lib/resend.ts` (transactional email)
1388
+ - `storage: s3` → `lib/s3-upload.ts` (signed URL upload/download)
1389
+
1390
+ ### Security
1391
+ - All integration templates validate required env vars at startup (fail-fast, not silent fallback)
1392
+
1393
+ ---
1394
+
1395
+ ## [4.1.0] - 2026-03-14
1396
+
1397
+ ### Added
1398
+ - **Structured deploy logs** (ADR-021) — every successful provision is persisted to `~/.voidforge/deploys/` with timestamp, target, URL, resources, and sanitized outputs. New `/api/deploys` endpoint to query deploy history.
1399
+ - **AWS cost estimation** (ADR-022) — before provisioning AWS targets (VPS/S3), emits an estimated monthly cost based on instance type, RDS, and ElastiCache selections. Informational only, does not block.
1400
+ - **Post-deploy health monitoring** (ADR-023) — VPS: generates `infra/healthcheck.sh` cron script (curl every 5 minutes, log failures). Platforms: emits direct links to Vercel Analytics, Railway Metrics, or Cloudflare dashboard.
1401
+ - **Sentry error tracking** (ADR-024) — optional integration. When `sentry-dsn` exists in vault, generates framework-specific Sentry SDK initialization code (`sentry.ts`, `sentry.client.config.ts`, or `sentry_config.py`). Writes DSN to `.env`. Non-fatal — works without it.
1402
+
1403
+ ### Security
1404
+ - Deploy log outputs are sanitized (password/secret/token keys stripped) before persisting to disk — same logic as SSE output sanitizer.
1405
+ - Health check script sanitizes projectName and deployUrl to prevent shell injection in generated bash.
1406
+
1407
+ ---
1408
+
1409
+ ## [4.0.0] - 2026-03-14
1410
+
1411
+ ### Added
1412
+ - **Pre-deploy build step** (ADR-016) — framework-aware build runs BEFORE any deploy action. Detects build command and output directory per framework (Node, Django, Rails). Installs dependencies automatically. Skips if output already exists or no package.json found.
1413
+ - **GitHub Actions CI/CD generation** (ADR-017) — generates `ci.yml` (test + lint on PR) and `deploy.yml` (deploy on merge to main) during GitHub pre-step. Framework-aware test/lint/build commands. Deploy target-specific workflows (Vercel, Cloudflare, Railway, VPS, S3). Required secrets documented in generated files.
1414
+ - **Environment validation script** (ADR-018) — generates `validate-env.js` or `validate_env.py` that checks all required env vars at startup. Detects placeholder values. Works in both CommonJS and ESM projects.
1415
+ - **Credential scoping** (ADR-020) — each provisioner only receives the vault keys it needs, not the full vault. Extends the cleanup scoping pattern from v3.8.0 to the provisioning phase. Internal `_`-prefixed keys (GitHub metadata) pass through.
1416
+
1417
+ ### Changed
1418
+ - **Railway API migration** (ADR-019) — replaced deprecated `pluginCreate` GraphQL mutation with `templateDeploy` for database/Redis provisioning. Falls back to `serviceCreate` if templates unavailable. Fixed custom domain ordering (now created after service). Deploy polling queries by service ID to target the correct service.
1419
+ - `provision.ts` — framework value normalized to lowercase at boundary. Build failure message clarified. Fatal error now includes sanitized detail. Hostname validation includes format example. keepaliveTimer moved into finally block.
1420
+ - `github.ts` — accepts framework/deployTarget params for CI/CD generation. Second commit/push for workflow files after initial push.
1421
+ - S3 deploy uses framework-aware output directory via `getBuildOutputDir()` instead of hardcoded `dist`.
1422
+
1423
+ ### Architecture
1424
+ - 5 new ADRs: 016 (build step), 017 (CI/CD), 018 (env validation), 019 (Railway templates), 020 (credential scoping)
1425
+
1426
+ ---
1427
+
1428
+ ## [3.9.1] - 2026-03-14
1429
+
1430
+ ### Added
1431
+ - **ROADMAP.md** — 5-version strategic roadmap (v4.0 Reliability → v5.0 Intelligence)
1432
+ - **PRD-VOIDFORGE.md** — VoidForge's own product requirements document (root-level, not synced to user projects via /void)
1433
+ - **`/campaign --plan`** — planning mode: update PRD and ROADMAP with new ideas without building. Dax analyzes where it fits, Odo checks dependencies, presents changes for review.
1434
+
1435
+ ### Changed
1436
+ - `/campaign` PRD discovery: checks `/PRD-VOIDFORGE.md` at root first, falls back to `/docs/PRD.md`. User projects unaffected.
1437
+
1438
+ ---
1439
+
1440
+ ## [3.9.0] - 2026-03-14
1441
+
1442
+ ### Added
1443
+ - **/campaign command** — Sisko's Danger Room: read the PRD, pick the next mission, finish the fight, repeat until done. Autonomous campaign execution with mission scoping, dependency ordering, and The Prophecy Board for tracking progress across sessions.
1444
+ - **Sisko** (Benjamin Sisko, DS9) promoted to 11th lead agent. Star Trek now has two leads: Picard (architecture) and Sisko (campaign). Sub-agents: Kira (ops), Dax (strategy), Odo (prerequisites).
1445
+ - `docs/methods/CAMPAIGN.md` — full operating rules, 6-step sequence, session management, victory condition.
1446
+ - Flags: `--resume` (continue mid-campaign), `--fast` (skip Crossfire+Council in each mission), `--mission "Name"` (jump to specific PRD section).
1447
+
1448
+ ### Changed
1449
+ - Command count updated to 13, lead count to 11 across CLAUDE.md, HOLOCRON.md, README.md, and NAMING_REGISTRY.md.
1450
+
1451
+ ---
1452
+
1453
+ ## [3.8.0] - 2026-03-14
1454
+
1455
+ ### Added
1456
+ - **Haku's Last Mile** — every deploy target is now fully automated end-to-end. Run `npm run deploy` and get a live URL, not a manual checklist.
1457
+ - **GitHub integration** — new cloud provider in Gandalf. Collects PAT, creates repos, pushes code. Used by Vercel, Cloudflare Pages, and Railway for auto-deploy on push.
1458
+ - **SSH deploy module** — provisions EC2 servers remotely (provision.sh), deploys via release-directory strategy with atomic symlink swap, health checks, and automatic rollback on failure.
1459
+ - **S3 deploy via SDK** — uploads build directory to S3 with correct MIME types and cache-control headers. No AWS CLI dependency (ADR-014).
1460
+ - **Shared exec utility** — child process wrapper with timeout, abort signal, and streaming (ADR-013). Used by GitHub and SSH modules.
1461
+ - **Shared env-writer** — extracted .env append logic from 5 copy-pasted provisioner implementations.
1462
+ - **Deploy polling** — Vercel, Cloudflare Pages, and Railway provisioners poll deployment status after git push, reporting progress until the app is live.
1463
+ - **DEPLOY_URL** and **GITHUB_REPO_URL** displayed as clickable links on the Haku Done screen.
1464
+ - 5 Architecture Decision Records: ADR-011 (GitHub pre-step), ADR-012 (no GitHub cleanup), ADR-013 (exec utility), ADR-014 (S3 via SDK), ADR-015 (platform auto-deploy).
1465
+
1466
+ ### Changed
1467
+ - **Vercel provisioner** — links GitHub repo, sets env vars via API, polls deploy. Re-runs (409) now fetch the existing project ID so all steps execute.
1468
+ - **Cloudflare provisioner** — includes GitHub source at project creation (required by Cloudflare API). Re-runs set CF_PROJECT_URL. Next.js destination dir corrected to `out`.
1469
+ - **Railway provisioner** — creates service with GitHub source, sets env vars using Railway's `${{Plugin.VAR}}` syntax. Deprecated `pluginCreate` gets clear fallback guidance.
1470
+ - **AWS VPS provisioner** — uses shared slugify and env-writer. Error messages now include resource IDs and console URLs instead of generic "Check AWS Console."
1471
+ - **GitHub org repos** — uses `/orgs/{owner}/repos` endpoint when owner is explicitly set, with fallback to `/user/repos`.
1472
+
1473
+ ### Security
1474
+ - **Token never touches disk** — git push uses `http.extraheader` via environment variables instead of embedding PAT in the URL. No reflog persistence (ADR-011).
1475
+ - **Triple token sanitization** — error messages scrubbed with 3 regexes covering URL-embedded tokens, Base64 Authorization headers, and GIT_CONFIG env vars.
1476
+ - **projectDir validation** — rejects paths with `..` segments or non-absolute paths to prevent directory traversal.
1477
+ - **Credential scoping** — in-memory cleanup credentials store only target-specific keys, not the full vault.
1478
+ - **Auth gate on /incomplete** — orphaned run enumeration now requires vault unlock.
1479
+ - **.gitignore defense-in-depth** — verifies `.env` and `.ssh/` are protected before `git add -A`.
1480
+ - **Secret stripping loop** — SSE output deletes any key containing "password", "secret", or "token" (case-insensitive).
1481
+
1482
+ ### Fixed
1483
+ - Vercel 409 (project exists) now fetches project ID — re-runs no longer silently skip linking, env vars, and deploy.
1484
+ - Cloudflare 409 now sets `CF_PROJECT_URL` — re-runs show the deploy URL on the Done screen.
1485
+ - Removed duplicate `slugify` from aws-vps.ts (diverged from shared implementation).
1486
+ - Removed unused `httpsPut` import from vercel.ts.
1487
+ - `.env` value parser strips surrounding quotes before uploading to Vercel.
1488
+ - `npm ci --omit=dev` replaces `--ignore-scripts` in SSH deploy (fixes native deps like bcrypt, sharp).
1489
+ - Null safety on all `safeJsonParse` casts in Cloudflare provisioner (8/8 now include `| null`).
1490
+
1491
+ ---
1492
+
1493
+ ## [3.7.0] - 2026-03-14
1494
+
1495
+ ### Added
1496
+ - **/assemble command** — Fury's Initiative: 13-phase full pipeline (architect → build → 3x review → UX → 2x security → devops → QA → test → crossfire → council). Calls every agent from every universe. Convergence loop, session checkpointing, --resume/--fast/--skip-build flags.
1497
+ - **Fury** promoted to 10th lead agent (Marvel → The Initiative). Hill added to Marvel pool.
1498
+ - **/thumper command** — Chani's Worm Rider: drive Claude Code via Telegram from anywhere. Gom Jabbar passphrase authentication with PBKDF2 hashing, message deletion, 60-minute idle timeout, 3-attempt lockout. Five bash scripts, zero dependencies.
1499
+ - **Dune universe** — Chani as lead (Worm Rider) with 20 named characters. Sub-agents: Stilgar (security), Thufir Hawat (parsing), Duncan Idaho (relay), Reverend Mother Mohiam (authentication).
1500
+ - **Transport auto-detection** — TMUX_SENDKEYS (cross-platform), PTY_INJECT (headless Linux), OSASCRIPT (macOS Terminal.app/iTerm2). Explicit guidance for VS Code, Warp, Alacritty, Kitty users. Windows Git Bash gets "use WSL" message.
1501
+ - **Water Rings stop hook** — automatic task completion notifications to Telegram.
1502
+ - **LESSONS.md** — first entries from Kongo.io Sprint 4 post-mortem.
1503
+
1504
+ ### Changed
1505
+ - **/review** — mandatory integration tracing (follow URLs/keys to consumers) and error path verification (verify UI displays specific server errors).
1506
+ - **/ux** — mandatory error state testing with intentionally invalid/conflicting input.
1507
+ - **/qa** — Step 2.5 smoke tests: hit the running server after build, verify cross-module paths at runtime.
1508
+ - **/test** — Step 3.5 cross-module integration tests: at least one test per feature crossing module boundaries.
1509
+ - **/security** — Maul executes actual HTTP exploitation attempts. Ahsoka traces the full auth middleware chain.
1510
+ - **/build** — Phase 4/5/6 gates define "works manually" explicitly: error paths, cross-module integration, generated URLs.
1511
+ - **/devops** — post-deploy smoke tests verify application behavior (not just infrastructure health).
1512
+ - CLAUDE.md, HOLOCRON.md, README.md — 12 commands, 10 agents, 7 universes, 170+ characters.
1513
+
1514
+ ### Security
1515
+ - Gom Jabbar: PBKDF2 hashing (100k iterations), Telegram message deletion with fail-secure invalidation, idle timeout, lockout.
1516
+ - Control character sanitization strips terminal-dangerous bytes from all injected messages.
1517
+ - Root guard prevents /thumper from running as root.
1518
+ - Empty hash bypass prevention refuses auth when hashing tools unavailable.
1519
+ - Config injection prevention via `printf '%q'` and umask 077.
1520
+
1521
+ ### Fixed
1522
+ - THUMPER.md rewritten — 10+ factual errors corrected (wrong timeouts, hash algo, flow description, nonexistent CLI flags).
1523
+ - Script copy clarified — hostile lockout softened, ambiguous passphrase prompts made explicit, empty notifications made useful.
1524
+
1525
+ ---
1526
+
1527
+ ## [3.5.3] - 2026-03-14
1528
+
1529
+ ### Changed
1530
+ - **Renamed `/voice` to `/thumper`** — resolved conflict with Claude Code's built-in `/voice` skill. A thumper is the Fremen device that summons the sandworm — plant it, the worm comes, you ride it.
1531
+ - **Renamed "Remote Bridge" to "Worm Rider"** — proper Dune universe domain name for Chani's role. Worm riding is the quintessential Fremen skill.
1532
+ - All files renamed: `scripts/voice/` → `scripts/thumper/`, `voice.sh` → `thumper.sh`, `VOICE.md` → `THUMPER.md`, `.voidforge/voice/` → `.voidforge/thumper/`.
1533
+ - `/security` — Maul now executes actual HTTP exploitation attempts, not just conceptual red-teaming. Ahsoka traces the full auth middleware chain.
1534
+ - `/build` — Phase 4/5/6 gates now define "works manually" explicitly: must test error paths and cross-module integration at runtime.
1535
+ - `/devops` — Post-deploy smoke tests verify application behavior, not just infrastructure health.
1536
+ - Kongo.io lessons applied across `/review`, `/ux`, `/qa`, `/test` — integration tracing, error path verification, smoke tests, cross-module tests.
1537
+
1538
+ ---
1539
+
1540
+ ## [3.5.0] - 2026-03-14
1541
+
1542
+ ### Added
1543
+ - **/voice command** — Chani's remote bridge: drive Claude Code sessions via Telegram from anywhere. Environment-aware setup auto-detects tmux, headless Linux, and macOS terminals.
1544
+ - **Gom Jabbar authentication** — passphrase-based session gate with PBKDF2 hashing, Telegram message deletion, 60-minute idle timeout, and 3-attempt lockout. Passphrase is erased from chat history; session invalidated if deletion fails.
1545
+ - **Dune universe** — 9th agent lead (Chani) with 20 named characters from Arrakis. Sub-agents: Stilgar (security), Thufir (parsing), Idaho (relay), Mohiam (authentication).
1546
+ - **Water Rings stop hook** — automatic task completion notifications to Telegram when Claude Code finishes responding.
1547
+ - **Transport vectors** — three injection methods: TMUX_SENDKEYS (cross-platform), PTY_INJECT (headless Linux), OSASCRIPT (macOS Terminal.app/iTerm2). Auto-detection with manual override.
1548
+
1549
+ ### Security
1550
+ - Control character sanitization strips terminal-dangerous bytes (Ctrl+C, ESC, ANSI sequences) from all incoming messages before injection.
1551
+ - Root guard prevents /voice from running as root (unspoofable `id -u` check).
1552
+ - Config injection prevention via `printf '%q'` escaping and umask 077 subshells.
1553
+ - Empty hash bypass prevention — refuses authentication when hashing tools are unavailable.
1554
+ - Credentials stored in chmod 600 sietch vault, directory chmod 700, gitignored via `.voidforge/`.
1555
+
1556
+ ### Changed
1557
+ - CLAUDE.md updated with /voice command, Chani in Team table, VOICE.md in Docs Reference.
1558
+ - HOLOCRON.md updated to 11 commands, 9 agents, 7 universes, 170+ characters. Full /voice Arsenal entry with Gom Jabbar explanation.
1559
+ - README.md updated with /voice in commands table, Chani in agent leads, voice/ in structure tree.
1560
+ - NAMING_REGISTRY.md expanded with full Dune universe section (Chani lead + 20 pool characters).
1561
+ - Environment detection improved: VS Code, Warp, Alacritty, Kitty on macOS now get explicit guidance instead of silent OSASCRIPT failure. Windows Git Bash/MSYS2 gets explicit "use WSL" message.
1562
+
1563
+ ---
1564
+
1565
+ ## [3.4.0] - 2026-03-13
1566
+
1567
+ ### Added
1568
+ - **/test command** — Batman's test-writing mode: coverage gap analysis, test architecture review, write missing unit/integration/component tests. Different from /qa (which finds bugs).
1569
+ - **/review command** — Picard's code review: pattern compliance (Spock), code quality (Seven), maintainability (Data). Parallel analysis with re-verification pass.
1570
+ - **Deathstroke** (DC) — adversarial tester added to Batman's QA team. Penetration-style probing, bypasses validations, chains unexpected interactions.
1571
+ - **Constantine** (DC) — cursed code hunter added to Batman's QA team. Finds dead branches, impossible conditions, logic that only works by accident.
1572
+ - **Maul** (Star Wars) — red-team attacker added to Kenobi's Security team. Thinks like an attacker, chains vulnerabilities, re-probes after remediation.
1573
+ - **Double-pass review pattern** — all review phases (QA, UX, Security) now use find → fix → re-verify. Catches fix-induced regressions before they ship.
1574
+
1575
+ ### Changed
1576
+ - **Context thresholds for 1M** — checkpoint trigger raised from 15 files/30 tool calls to 50 files/100 tool calls. Pre-load active domain's methodology at session start instead of on-demand only.
1577
+ - **Picard's architecture review parallelized** — Spock + Uhura run in parallel (independent), then La Forge + Data run in parallel. ~30% faster wall-clock time.
1578
+ - **Stark's backend audit parallelized** — Rogers + Banner analysis in parallel, then Barton + Romanoff + Thor in parallel. Fury validates all findings.
1579
+ - **Security audit restructured** — aligned method doc and command to 4 clear phases: parallel scans → sequential audits → remediate → Maul re-verifies.
1580
+ - **Build protocol phases 9-11** — merged into a unified double-pass review cycle. All three agents (Batman, Galadriel, Kenobi) find issues in parallel, fixes are batched, then all three re-verify.
1581
+ - **Galadriel's UX pass** — added Samwise + Gandalf re-verification after fixes to catch a11y regressions.
1582
+ - **Session boundaries expanded** — small-to-medium projects can complete phases 0-8 in a single session with 1M context.
1583
+ - **SUB_AGENTS.md** — added Coulson and Bombadil to the full roster table, fixed phantom anime character references.
1584
+
1585
+ ---
1586
+
1587
+ ## [3.3.1] - 2026-03-13
1588
+
1589
+ ### Fixed
1590
+ - **PRD generation silently truncating** — output was hard-coded to 8192 max tokens, causing complex PRDs to cut off mid-stream with no warning. Now uses each model's full output capacity (Opus 32K, Sonnet 16K, Haiku 8K).
1591
+ - **No truncation feedback** — server now tracks `stop_reason` from the Claude API `message_delta` event and forwards a `truncated` signal to the client, which displays a visible warning instead of silently accepting incomplete output.
1592
+
1593
+ ---
1594
+
1595
+ ## [3.3.0] - 2026-03-13
1596
+
1597
+ ### Added
1598
+ - **Async resource polling** — Haku now waits for RDS (up to 15min) and ElastiCache (up to 5min) to become available, extracts real endpoints (`DB_HOST`, `REDIS_HOST`), and writes them to `.env`. No more "check the AWS Console." (ADR-009)
1599
+ - **Domain registration via Cloudflare Registrar** — buy a domain through Haku as a pre-DNS step. Registration creates the zone, then DNS records are created in it. Includes availability check, price display, and non-refundable purchase confirmation gate. (ADR-010)
1600
+ - **Cloudflare Account ID** field in Cloud Providers — required for domain registration, validated as 32-char hex on save
1601
+ - **Post-failure registration verification** — if the registration API times out, Haku re-checks availability to detect masked successes before reporting failure
1602
+
1603
+ ### Changed
1604
+ - **Partial success UI** — if infrastructure provisions but domain/DNS fails, Haku shows "partial success" with guidance instead of binary pass/fail
1605
+ - **Output display** — infra details on the Done page are now grouped logically (server → DB → cache → platform → domain → DNS) with human-readable date formatting for domain expiry
1606
+ - **AbortController integration** — polling loops cancel cleanly when the client disconnects instead of running for up to 15 minutes server-side
1607
+ - **HTTP client** — single retry on transient errors (ECONNRESET, ETIMEDOUT) with 2s delay; per-call timeout override (60s for registration)
1608
+ - **Polling jitter** — random interval variation prevents API throttling under concurrent use
1609
+ - **ADR-009** corrected to reflect actual AbortController implementation
1610
+ - **Cloudflare DNS** accepts `pending` zones from fresh domain registrations (previously required `active`)
1611
+
1612
+ ### Fixed
1613
+ - **Terminal failure detection** — RDS/ElastiCache polling breaks immediately on `failed`/`deleted`/`create-failed` states instead of waiting for timeout
1614
+ - **Cleanup handling** — resources in "creating" state get a manual-cleanup warning instead of a silent deletion failure
1615
+ - **Asymmetric token check** — all combinations of missing Cloudflare credentials now emit clear skip messages
1616
+ - **404 availability fallback** — notes that availability is unconfirmed when domain is simply absent from the account
1617
+ - **Registration row** hidden for Docker (local) deploys and invalid hostnames
1618
+ - **`state.deployCmd`** declared in initial state object
1619
+
1620
+ ### Security
1621
+ - **CSRF protection** — `X-VoidForge-Request` custom header required on all POST requests; triggers CORS preflight to block cross-origin form submissions
1622
+ - **DB_PASSWORD stripped from SSE** — password stays in `.env` only, never sent to the browser
1623
+ - **AWS error sanitization** — ARNs, account IDs, and internal identifiers no longer leak to the client
1624
+ - **`.env` file permissions** — `chmod 600` applied after generation, matching SSH key protection
1625
+ - **Provisioning concurrency lock** — returns 429 if a run is already in progress
1626
+ - **`encodeURIComponent(accountId)`** on all Cloudflare API URL interpolations — prevents path injection
1627
+ - **Domain + Account ID validation** at client, server, and registrar layers
1628
+ - **Random password suffix** replaces static `A1!` — uppercase + digit + special char now randomized
1629
+ - **Hostname allowlist** documented in HTTP client module
1630
+
1631
+ ---
1632
+
1633
+ ## [3.2.0] - 2026-03-13
1634
+
1635
+ ### Added
1636
+ - **`/void` slash command** — Bombadil's Forge Sync. Self-update mechanism that fetches the latest VoidForge methodology from the scaffold branch, compares every shared file, shows a human-readable update plan, and applies changes while preserving project-specific customizations (PRD, logs, code, CLAUDE.md project section). Works on all three tiers.
1637
+ - **Forge Keeper method doc** (`docs/methods/FORGE_KEEPER.md`) — Bombadil's protocol with 5-step update sequence, sub-agent roster (Goldberry, Treebeard, Radagast), shared file manifest, edge cases, and rollback guidance
1638
+ - **Bombadil** (Tolkien) as 8th lead agent — Tom Bombadil, the Forge Keeper. Ancient, joyful, sings while he works. Tends the forge itself while others forge applications.
1639
+ - **Goldberry** added to Tolkien character pool — River-daughter, upstream change detection
1640
+ - ADR-008 (scaffold branch as update source for /void)
1641
+
1642
+ ### Changed
1643
+ - **Command count** updated from 7 to 8 across CLAUDE.md, README, and Holocron
1644
+ - **`.claude/settings.json` excluded from Bombadil's sync scope** — user permissions and hooks are never overwritten (Picard's architecture review finding)
1645
+ - **Semver comparison** in `/void` uses integer parsing, not string comparison — prevents incorrect results for versions like 3.10.x vs 3.9.x (Picard's architecture review finding)
1646
+
1647
+ ---
1648
+
1649
+ ## [3.1.0] - 2026-03-13
1650
+
1651
+ ### Added
1652
+ - **PRD-driven EC2 instance type selection** — PRD frontmatter `instance_type` field recommends t3.micro/small/medium/large based on project scope (database, cache, workers, payments, framework). Haku wizard shows the recommendation with cost estimates and allows override. RDS and ElastiCache sizes match automatically. (ADR-005)
1653
+ - **Cloudflare DNS wiring** — new `hostname` field in Gandalf wizard and PRD frontmatter. After Haku provisions infrastructure, it auto-creates Cloudflare DNS records (A for VPS, CNAME for platforms) pointing your domain at the provisioned resource. Works with all deploy targets. Non-fatal — infrastructure still succeeds if DNS fails. (ADR-006)
1654
+ - **Platform custom domain registration** — Haku now registers your hostname directly with Vercel, Railway, and Cloudflare Pages via their APIs, so the platform expects traffic on your domain
1655
+ - **Caddyfile auto-HTTPS** — when hostname is set, generated Caddyfile uses the domain instead of `:80`, enabling automatic Let's Encrypt SSL via Caddy
1656
+ - **Instance sizing module** (`wizard/lib/instance-sizing.ts`) — scoring heuristic with `recommendInstanceType()`, RDS/ElastiCache size mapping, swap scaling
1657
+ - **DNS module** (`wizard/lib/dns/`) — Cloudflare zone lookup, record CRUD, post-provision orchestration, cleanup support
1658
+ - ADRs 005 (instance type selection), 006 (DNS as post-provision step), 007 (hostname vs domain naming)
1659
+
1660
+ ### Changed
1661
+ - **Provision script swap size** scales with instance type (2GB for micro/small, 1GB for medium, none for large)
1662
+ - **Cloudflare help text** updated to recommend Zone:DNS:Edit token permission for DNS wiring
1663
+ - **Architecture doc** updated with DNS in system diagram and new ADR references
1664
+
1665
+ ---
1666
+
1667
+ ## [3.0.0] - 2026-03-12
1668
+
1669
+ ### Added
1670
+ - **The VoidForge Holocron** (`HOLOCRON.md`) — comprehensive 9-chapter user guide covering setup, first project walkthrough, build protocol, agent system, slash commands, code patterns, build journal, troubleshooting, and evolution. Named after the Star Wars knowledge devices.
1671
+ - **Three-tier distribution** — VoidForge now ships on three branches: `main` (full wizard), `scaffold` (methodology only), `core` (ultra-light drop-in). Each has its own README, release, and install path.
1672
+ - **Branch sync rules** in CLAUDE.md — shared methodology files (agents, methods, patterns, commands) must propagate across all three branches.
1673
+
1674
+ ### Changed
1675
+ - **README restructured** — stripped down to pure system reference (architecture, components, tables). All walkthrough and guide content moved to the Holocron.
1676
+ - **Semver rules updated** — MAJOR now includes distribution model changes.
1677
+ - **VoidForge is now designed for external adoption** — three install paths, comprehensive guide, clean separation between system reference and user guide.
1678
+
1679
+ ---
1680
+
1681
+ ## [2.8.0] - 2026-03-12
1682
+
1683
+ ### Added
1684
+ - **Wizard split into Gandalf (setup) and Haku (deploy)** — `npx voidforge init` launches the setup wizard, `npx voidforge deploy` launches the deploy wizard. Provisioning moved from Gandalf to Haku for cleaner separation of concerns.
1685
+ - **Architecture docs** — `ARCHITECTURE.md` (system overview + diagram), `SCALING.md` (three-tier assessment), `TECH_DEBT.md` (prioritized catalog), `FAILURE_MODES.md` (component failure analysis with recovery procedures)
1686
+ - **Security checklist** — `SECURITY_CHECKLIST.md`, reusable pre-deploy verification list covering secrets, vault, server, AWS provisioning, generated infrastructure, input validation, and dependencies
1687
+
1688
+ ### Changed
1689
+ - **Gandalf UI simplified** — removed provisioning steps (now in Haku). Gandalf focuses on vault, credentials, project setup, PRD, and scaffold creation.
1690
+
1691
+ ### Fixed
1692
+ - **QA fixes** for Gandalf/Haku restructure
1693
+ - **UX polish** for Haku deploy wizard
1694
+
1695
+ ### Security
1696
+ - **DB/Redis security group ports** restricted from `0.0.0.0/0` (internet-open) to self-referencing security group (SG-only). Prevents database and Redis exposure to the internet.
1697
+ - **Security headers** added to local server: `X-Frame-Options: DENY`, `Content-Security-Policy`, `Referrer-Policy`, `Permissions-Policy`
1698
+ - **Error message sanitization** — API error responses no longer leak internal details (file paths, stack traces). Real errors logged server-side only.
1699
+
1700
+ ---
1701
+
1702
+ ## [2.7.0] - 2026-03-12
1703
+
1704
+ ### Added
1705
+ - **Real API provisioning** for all deploy targets — Vercel creates projects, Railway creates projects with database/Redis services, Cloudflare creates Pages projects with D1 databases, Static S3 creates buckets with website hosting. All verified with live infrastructure.
1706
+ - **Shared HTTP client** for provisioner API calls with safe JSON parsing and slug generation
1707
+ - **Crash recovery cleanup** — orphaned resources from process crashes can now be cleaned up after server restart via disk-persisted manifests
1708
+ - **SSE keepalive** on provisioning and PRD generation streams — prevents proxy/VPN/browser timeouts with 15-second heartbeats and event IDs
1709
+ - **VoidForge favicon** — purple void portal icon
1710
+
1711
+ ### Changed
1712
+ - **Generated deploy scripts** use release-directory strategy with atomic symlink swap, post-deploy health check, and automatic rollback on failure. Keeps last 5 releases.
1713
+ - **Generated provision scripts** include fail2ban, SSH hardening (no root/password), unattended security updates, 2GB swap, and log rotation
1714
+ - **Generated Caddyfile** includes HSTS, Content-Security-Policy, and Permissions-Policy headers
1715
+ - **Generated Dockerfiles** include HEALTHCHECK instructions. Build errors no longer silenced.
1716
+ - **Generated docker-compose** uses env var DB passwords (not hardcoded), internal-only ports for DB/Redis, and app health checks
1717
+ - **Generated PM2 config** includes crash-loop protection and graceful reload timeouts
1718
+ - **Done page** shows target-specific deploy commands, human-readable labels, clickable URLs, and free tier/cost info
1719
+ - **Railway** terminology updated from "plugins" to "services"
1720
+
1721
+ ### Fixed
1722
+ - Safe JSON parsing on all external API responses — no more crashes on HTML error pages
1723
+ - S3 cleanup paginates object listing — handles buckets with more than 1000 objects
1724
+ - Slugify strips leading/trailing hyphens and provides fallback for empty slugs
1725
+ - Cloudflare D1 database only created for SQLite projects, not Postgres
1726
+ - Railway token validation works with API tokens (not just user sessions)
1727
+ - Help button now expands provider accordion when collapsed
1728
+ - Vercel and Cloudflare 409 (project exists) paths track resources for cleanup
1729
+
1730
+ ### Security
1731
+ - Generated Caddyfile: HSTS, CSP, Permissions-Policy headers
1732
+ - Generated provision.sh: fail2ban, SSH hardening, firewall lock-down-first
1733
+ - Generated docker-compose: DB passwords from environment variables, database/Redis ports internal-only
1734
+ - All 4 ADRs now implemented: provision manifest, atomic vault writes, API response validation, SSE keepalive
1735
+
1736
+ ---
1737
+
1738
+ ## [2.6.0] - 2026-03-12
1739
+
1740
+ ### Added
1741
+ - **Auto-provisioning system** — wizard steps 8 + 9. After project creation, provision infrastructure for your chosen deploy target with live SSE-streamed progress.
1742
+ - **Docker provisioner** — generates Dockerfile (multi-stage per framework), docker-compose.yml (with optional Postgres/MySQL/Redis services), and .dockerignore
1743
+ - **AWS VPS provisioner** — full EC2 + security group + SSH key pair provisioning, with optional RDS (Postgres/MySQL) and ElastiCache (Redis). Generates deploy scripts (provision.sh, deploy.sh, rollback.sh), Caddyfile, and PM2 ecosystem config.
1744
+ - **Config-only provisioners** — Vercel (vercel.json), Railway (railway.toml), Cloudflare (wrangler.toml), Static S3 (deploy-s3.sh)
1745
+ - **Provisioning API** — `POST /api/provision/start` (SSE-streamed), `POST /api/provision/cleanup`, `GET /api/provision/incomplete` for crash recovery
1746
+ - **Provision manifest** (ADR-001) — write-ahead resource tracking at `~/.voidforge/runs/` prevents orphaned AWS resources on crash
1747
+ - **Pre-provisioning confirmation gate** — users see what will be created (and AWS cost warning) before clicking "Start Provisioning"
1748
+ - **4 Architecture Decision Records** — provision manifest, atomic vault writes, API response validation, SSE keepalive
1749
+ - **QA regression checklist** — 24-item checklist covering all provisioning flows, a11y, and mobile
1750
+
1751
+ ### Changed
1752
+ - **Vault writes are now atomic** (ADR-002) — write-to-temp + fsync + rename prevents credential loss on crash
1753
+ - **Wizard expanded to 9 steps** — step 8 (provision with confirmation gate) and step 9 (done with infra details)
1754
+ - **User-controlled transitions** — replaced auto-advance with explicit "Continue" button for a11y
1755
+ - **Advanced setup card** — updated copy from "Infrastructure provisioning in future phases" to "Automatic infrastructure provisioning"
1756
+
1757
+ ### Fixed
1758
+ - **JS injection** in PM2 config via project names containing quotes — now uses `JSON.stringify`
1759
+ - **S3 deploy script** — added missing `--exclude '*'` before `--include` flags
1760
+ - **RDS/EC2 networking** — RDS instance now shares security group with EC2; DB/Redis ports added to SG
1761
+ - **RDS password** — generated with `crypto.randomBytes` instead of predictable slug-based derivation
1762
+ - **Skip provisioning** — now aborts in-flight fetch via AbortController
1763
+ - **Cleanup race condition** — resources tracked per run ID instead of global mutable state
1764
+ - **Security group cleanup** — retry loop with 10s intervals instead of insufficient 5s sleep
1765
+ - **Empty SSH key** — validates AWS returns key material before writing file
1766
+ - **Rollback script** — framework-aware restart commands (Django/Rails) instead of hardcoded npm/PM2
1767
+
1768
+ ### Security
1769
+ - **Atomic vault writes** prevent credential file corruption
1770
+ - **DB password masked** on wizard done page (shown as bullet characters)
1771
+ - **`.ssh/` added to .gitignore** — prevents accidental deploy key commits
1772
+
1773
+ ---
1774
+
1775
+ ## [2.5.0] - 2026-03-12
1776
+
1777
+ ### Added
1778
+ - **`/git` slash command** (`.claude/commands/git.md`) — Coulson's version & release management. 7-step flow: orient, analyze diffs, determine semver bump, write changelog, craft commit, verify consistency, optional push. 5 Marvel sub-agents (Vision, Friday, Wong, Rogers, Barton).
1779
+ - **Release Manager protocol** (`docs/methods/RELEASE_MANAGER.md`) — Coulson's method doc with semver rules, changelog writing guidelines, commit message format, and verification checklist. Works for VoidForge and generic projects.
1780
+ - **Coulson** (Marvel) as 7th lead agent — S.H.I.E.L.D.'s meticulous record-keeper for version management
1781
+ - **Friday** added to Marvel character pool in NAMING_REGISTRY.md — AI assistant for versioning and automation
1782
+
1783
+ ### Changed
1784
+ - **CLAUDE.md** — added `/git` to Slash Commands table, Coulson to The Team table, Release Manager to Docs Reference
1785
+ - **README.md** — added `/git` to commands table, Coulson to leads table, updated command count to 7, added git.md and RELEASE_MANAGER.md to repo structure
1786
+ - **NAMING_REGISTRY.md** — added Coulson as Marvel lead (release), Friday to Marvel pool, updated rules and reserved list
1787
+
1788
+ ---
1789
+
1790
+ ## [2.4.0] - 2026-03-12
1791
+
1792
+ ### Added
1793
+ - **Cloud provider management** — new credential validation and storage for AWS, Vercel, Railway, and Cloudflare. Live API validation (STS, GraphQL, token verify) with vault-encrypted storage.
1794
+ - **Deploy target selection** in wizard — choose deployment platform based on which providers have valid credentials. Docker always available.
1795
+ - **Deploy target in `.env`** — scaffolded projects include `DEPLOY_TARGET` when a platform is selected
1796
+
1797
+ ### Changed
1798
+ - **Wizard UI overhaul** — redesigned credential step with provider cards, inline help, validation feedback. Expanded wizard flow with cloud and deploy target integration.
1799
+ - **Vault concurrency** — all vault operations now serialized through a write queue to prevent race conditions on concurrent requests
1800
+ - **Async key derivation** — PBKDF2 moved from sync to async to avoid blocking the event loop during encryption/decryption
1801
+
1802
+ ### Fixed
1803
+ - **Command injection** in browser launcher — replaced `exec` with `execFile` to prevent shell interpretation of URLs
1804
+ - **Directory traversal** in static file server — replaced naive `..` stripping with `resolve()` + prefix check
1805
+ - **SSE crash on client disconnect** — PRD generation stream now safely no-ops when the client has disconnected
1806
+ - **CORS wildcard** — scoped `Access-Control-Allow-Origin` to the wizard's actual origin instead of `*`
1807
+ - **Error detail leaking** — API error responses no longer include internal error bodies or stack traces
1808
+ - **Password length cap** — vault unlock rejects passwords over 256 characters (DoS prevention)
1809
+
1810
+ ### Removed
1811
+ - **`claude` dependency** — removed unused package from dependencies
1812
+
1813
+ ---
1814
+
1815
+ ## [2.3.0] - 2026-03-12
1816
+
1817
+ ### Added
1818
+ - **Interactive setup wizard** (`wizard/`) — browser-based onboarding launched via `npm run wizard`. 5-step flow: credential vault, project setup, PRD creation, review, create.
1819
+ - **Encrypted credential vault** (`wizard/lib/vault.ts`) — AES-256-GCM with PBKDF2 key derivation, stored at `~/.voidforge/vault.enc`. Cross-platform (macOS, Linux, Windows). Users manage the password however they like.
1820
+ - **PRD generation with Claude** — streams a full PRD from a product idea using the best available model (auto-resolved via `/v1/models` API). Primary path in the wizard.
1821
+ - **Bring Your Own PRD** tab — copy the generator prompt to clipboard for use with any AI (ChatGPT, Gemini, etc.), paste the result back with frontmatter validation.
1822
+ - **Project scaffolding** — TypeScript port of `new-project.sh` logic with git init, CLAUDE.md substitution, .env generation.
1823
+ - **CLI entry point** (`scripts/voidforge.ts`) — `npx voidforge init` launches the wizard.
1824
+ - **Dynamic model resolution** (`wizard/lib/anthropic.ts`) — fetches available models from Anthropic API, picks newest Opus > Sonnet > Haiku. No hardcoded model IDs.
1825
+ - **Frontmatter parser** (`wizard/lib/frontmatter.ts`) — YAML frontmatter extraction and validation for PRD documents.
1826
+ - `tsconfig.json`, TypeScript and tsx dev dependencies.
1827
+
1828
+ ### Changed
1829
+ - **README.md** — wizard is now the primary Quick Start path. Manual setup is an alternative section. Repository structure updated to include `wizard/` and `scripts/voidforge.ts`.
1830
+ - **`new-project.sh`** — comment noting `wizard/` exclusion from project copies.
1831
+ - **`package.json`** — added `bin` field, `wizard` and `typecheck` scripts, `type: "module"`.
1832
+
1833
+ ---
1834
+
1835
+ ## [2.2.0] - 2026-03-12
1836
+
1837
+ ### Changed
1838
+ - **Project renamed to VoidForge** — "from nothing, everything." Replaced all references to `claude-scaffold` across README, scripts, package files, patterns, and version docs
1839
+
1840
+ ---
1841
+
1842
+ ## [2.1.1] - 2026-03-12
1843
+
1844
+ ### Fixed
1845
+ - **PostToolUse hook format** in `.claude/settings.json` — migrated from flat `command` field to nested `hooks` array structure per current Claude Code schema
1846
+
1847
+ ---
1848
+
1849
+ ## [2.1.0] - 2026-03-10
1850
+
1851
+ ### Added
1852
+ - **Build Journal system** (`docs/methods/BUILD_JOURNAL.md`) — persistent logging protocol for decisions, phase state, handoffs, errors. Every agent produces structured output in `/logs/`. Agents read journal files to recover state across sessions.
1853
+ - **Context Window Management** (`docs/methods/CONTEXT_MANAGEMENT.md`) — session scoping guide, load-on-demand protocol, file size discipline, context checkpointing, emergency recovery.
1854
+ - **Job queue pattern** (`docs/patterns/job-queue.ts`) — background jobs with idempotency keys, exponential backoff retry, dead letter queue, graceful shutdown. Includes BullMQ, Celery (Django), and Sidekiq (Rails) implementations.
1855
+ - **Multi-tenancy pattern** (`docs/patterns/multi-tenant.ts`) — workspace scoping middleware, tenant-scoped services, role-based access control. Includes Next.js, Django, and Rails implementations.
1856
+ - **Error handling pattern** (`docs/patterns/error-handling.ts`) — canonical error strategy: custom error types, global handler, response shape, operational vs programmer errors. Includes Express, Django, and Rails implementations.
1857
+ - **Regression checklist template** in QA_ENGINEER.md — concrete table format with example entries, growth rules (2-3 items per feature, by launch: 30-50 items)
1858
+ - **First-deploy pre-flight checklist** in `/devops` command — env vars, secrets, DB seeding, DNS, SSL, health check, rollback test, monitoring, security review
1859
+ - **Phase rollback strategy** in BUILD_PROTOCOL.md and TROUBLESHOOTING.md — identify, revert, verify, isolate, fix, re-apply, log
1860
+ - **Test execution timeline** in BUILD_PROTOCOL.md — authoritative table of which tests are written in which phase, all marked as breaking gates
1861
+ - **Frontmatter validation table** in BUILD_PROTOCOL.md — valid values for each PRD field, defaults when missing
1862
+ - **Parallel phase marking** in BUILD_PROTOCOL.md — each phase marked as parallelizable or strictly sequential
1863
+ - **Multi-agent conflict resolution** in SUB_AGENTS.md — escalation protocol: check PRD, present trade-offs to user, document as ADR. Common conflict patterns with resolutions.
1864
+ - **Framework-to-test-runner mapping** in TESTING.md — table covering Next.js, Express, Django, Rails, Go, Spring Boot
1865
+ - **Batman scope clarification** — explicitly cross-cutting investigator + validator
1866
+
1867
+ ### Changed
1868
+ - **CLAUDE.md** — added build journal and context management references, "small batches" defined (max ~200 lines), error-handling.ts as canonical source, deduped from README
1869
+ - **BUILD_PROTOCOL.md** — rewritten with specific verification gates (manual + automated criteria per phase), test execution timeline, rollback strategy, frontmatter validation, parallel phase marking, small batch definition (~200 lines), logging integrated at every phase
1870
+ - **All 6 slash commands** — rewritten from pointers to self-contained executable sequences with inline steps, context setup, parallel analysis phases, logging instructions, and handoff protocols
1871
+ - **SUB_AGENTS.md** — Agent tool section clarified (parallel analysis, not parallel coding), git coordination for multi-session, conflict resolution expanded with tiebreaker protocol
1872
+ - **QA_ENGINEER.md** — added Scope section clarifying cross-cutting role, regression checklist template with format and rules
1873
+ - **TESTING.md** — added framework-to-test-runner mapping table at top
1874
+ - **TROUBLESHOOTING.md** — added phase rollback protocol section
1875
+ - **All 4 original pattern files** — added framework adaptation notes (Express, Django, Rails, Vue, Svelte)
1876
+ - **patterns/README.md** — updated table with all 7 patterns, framework columns
1877
+ - **new-project.sh** — creates `/logs/` directory, copies all new files
1878
+ - **DevOps slash command** — adapts based on PRD `deploy` target (vps/vercel/railway/docker/static), includes first-deploy checklist
1879
+
1880
+ ---
1881
+
1882
+ ## [2.0.0] - 2026-03-10
1883
+
1884
+ ### Added
1885
+ - Slash commands (`.claude/commands/`) — `/build`, `/qa`, `/security`, `/ux`, `/devops`, `/architect`
1886
+ - Claude Code settings (`.claude/settings.json`) — permissions, deny list, quality gate hooks
1887
+ - Testing protocol (`docs/methods/TESTING.md`) — automated testing pyramid
1888
+ - Troubleshooting guide (`docs/methods/TROUBLESHOOTING.md`) — error recovery per phase
1889
+ - MCP integration guide (`docs/methods/MCP_INTEGRATION.md`)
1890
+ - Code patterns (`docs/patterns/`) — api-route, service, component, middleware
1891
+ - Feedback loop (`docs/LESSONS.md`)
1892
+ - PRD frontmatter, conditional build phases, project sizing profiles
1893
+ - Phase verification gates, single-session parallelism in SUB_AGENTS.md
1894
+ - Per-directory CLAUDE.md convention
1895
+ - Behavioral directives on all 6 agent method docs
1896
+
1897
+ ### Changed
1898
+ - CLAUDE.md restructured to dense operational instructions
1899
+ - QA_ENGINEER.md integrated automated testing
1900
+ - BUILD_PROTOCOL.md added conditional skip rules and verification gates
1901
+
1902
+ ---
1903
+
1904
+ ## [1.1.0] - 2026-03-10
1905
+
1906
+ ### Changed
1907
+ - Renamed DevOps lead from Motoko to Kusanagi across all files
1908
+
1909
+ ---
1910
+
1911
+ ## [1.0.0] - 2026-03-10
1912
+
1913
+ ### Added
1914
+ - Root context file (`CLAUDE.md`), 13-phase Build Protocol
1915
+ - 6 specialist agent protocols (Galadriel, Stark, Batman, Kenobi, Picard, Kusanagi)
1916
+ - 150+ named characters across 6 universes
1917
+ - Sub-Agent Orchestrator, PRD Generator, PRD template, QA state file
1918
+ - Project initialization script