thevoidforge-methodology 23.1.1 → 23.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.claude/agents/ahsoka-access-control.md +1 -0
  2. package/.claude/agents/banner-database.md +1 -0
  3. package/.claude/agents/barton-smoke-test.md +1 -0
  4. package/.claude/agents/batman-qa.md +1 -0
  5. package/.claude/agents/bayta-evals.md +1 -0
  6. package/.claude/agents/bilbo-microcopy.md +1 -0
  7. package/.claude/agents/bombadil-forge-sync.md +1 -0
  8. package/.claude/agents/bulma-engineering.md +1 -0
  9. package/.claude/agents/constantine-cursed-code.md +1 -0
  10. package/.claude/agents/coulson-release.md +1 -0
  11. package/.claude/agents/data-tech-debt.md +1 -0
  12. package/.claude/agents/deathstroke-adversarial.md +1 -0
  13. package/.claude/agents/dockson-treasury.md +1 -0
  14. package/.claude/agents/eowyn-delight.md +1 -0
  15. package/.claude/agents/fury-initiative.md +2 -0
  16. package/.claude/agents/gaal-prompt-arch.md +1 -0
  17. package/.claude/agents/galadriel-frontend.md +1 -0
  18. package/.claude/agents/kelsier-growth.md +1 -0
  19. package/.claude/agents/kim-api-design.md +1 -0
  20. package/.claude/agents/kusanagi-devops.md +2 -0
  21. package/.claude/agents/la-forge-reliability.md +1 -0
  22. package/.claude/agents/leia-secrets.md +1 -0
  23. package/.claude/agents/levi-deploy.md +1 -0
  24. package/.claude/agents/nightwing-regression.md +1 -0
  25. package/.claude/agents/padme-data-protection.md +1 -0
  26. package/.claude/agents/picard-architecture.md +1 -0
  27. package/.claude/agents/romanoff-integrations.md +1 -0
  28. package/.claude/agents/salvor-model-selection.md +1 -0
  29. package/.claude/agents/samwise-accessibility.md +1 -0
  30. package/.claude/agents/scotty-infrastructure.md +1 -0
  31. package/.claude/agents/seldon-ai.md +1 -0
  32. package/.claude/agents/senku-provisioning.md +1 -0
  33. package/.claude/agents/sisko-campaign.md +2 -0
  34. package/.claude/agents/spike-routing.md +1 -0
  35. package/.claude/agents/spock-schema.md +1 -0
  36. package/.claude/agents/stark-backend.md +1 -0
  37. package/.claude/agents/steris-budget.md +1 -0
  38. package/.claude/agents/strange-service-arch.md +1 -0
  39. package/.claude/agents/thor-queues.md +1 -0
  40. package/.claude/agents/troi-prd-compliance.md +1 -0
  41. package/.claude/agents/tuvok-deep-current.md +1 -0
  42. package/.claude/agents/vin-analytics.md +1 -0
  43. package/.claude/agents/windu-input-validation.md +1 -0
  44. package/.claude/agents/worf-security-arch.md +1 -0
  45. package/.claude/commands/ai.md +16 -0
  46. package/.claude/commands/architect.md +16 -0
  47. package/.claude/commands/assemble.md +18 -0
  48. package/.claude/commands/assess.md +18 -0
  49. package/.claude/commands/build.md +16 -0
  50. package/.claude/commands/campaign.md +16 -0
  51. package/.claude/commands/deploy.md +16 -0
  52. package/.claude/commands/devops.md +18 -0
  53. package/.claude/commands/gauntlet.md +16 -0
  54. package/.claude/commands/qa.md +18 -0
  55. package/.claude/commands/review.md +18 -0
  56. package/.claude/commands/security.md +18 -0
  57. package/.claude/commands/test.md +18 -0
  58. package/.claude/commands/ux.md +18 -0
  59. package/CHANGELOG.md +89 -0
  60. package/CLAUDE.md +2 -1
  61. package/VERSION.md +6 -1
  62. package/docs/methods/BUILD_PROTOCOL.md +10 -0
  63. package/docs/methods/PRODUCT_DESIGN_FRONTEND.md +2 -0
  64. package/docs/methods/QA_ENGINEER.md +4 -0
  65. package/package.json +1 -1
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [security, access-control, rbac, auth]
10
11
  ---
11
12
 
12
13
  # Ahsoka — Access Control Auditor
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [backend, database, queries, optimization]
10
11
  ---
11
12
 
12
13
  # Banner — Database Specialist
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [qa, smoke-test, deployment-verification]
10
11
  ---
11
12
 
12
13
  # Barton — Smoke Test Scout
@@ -52,6 +52,7 @@ Structure all findings as:
52
52
  - **Dispatch-first QA:** For codebases with >10 files, dispatch Batman's team as sub-agents. Oracle + Red Hood in one agent, Alfred + Lucius in another. Main thread triages.
53
53
  - **Static analysis cannot replace hitting the running server:** Code review reads source files, but some bugs only manifest when the server processes an actual request. The asset proxy's `startsWith("uploads/")` check was invisible to static analysis because both modules individually looked correct. (Field report: Sprint 4.)
54
54
  - **Agents verify files in isolation -- must follow data across modules:** Review agents read files in the diff but never follow the data flow to the consumer. Avatar upload used `avatars/` prefix but asset proxy only allowed `uploads/`. Always trace producer to consumer.
55
+ - **Cross-array uniqueness audit:** When a codebase uses multiple data arrays for entity categories (e.g., leadAgents + subAgents), verify no entity appears in more than one array. Duplicates inflate totals and cause display bugs. Grep for entity identifiers across all arrays and flag overlaps. (Field report #298: Gandalf and Haku in both arrays inflated 263 → 265.)
55
56
  - **Mock tests hide interface mismatches:** Mocking a method that doesn't exist on the real class creates false confidence. Tests pass, production fails. Verify mock method signatures match real class.
56
57
  - **Read the function before testing it:** ~30% of test cases fail on first run when expectations are based on assumed behavior. Read signature, return type, and boundary conditions before writing the first `expect()`.
57
58
  - **Statistical code passes tests but is mathematically wrong** when tests validate buggy behavior. Tests that assert `expect(brokenResult).toBe(brokenResult)` pass perfectly. Statistical code needs review by an agent that understands the math, not just code quality.
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [ai, evaluation, testing, golden-datasets]
10
11
  ---
11
12
 
12
13
  # Bayta Darell — The Evaluator
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [ux, copy, content, writing]
10
11
  ---
11
12
 
12
13
  # Bilbo — Microcopy Auditor
@@ -46,6 +46,7 @@ Structure your sync report as:
46
46
  - Preserve user's local customizations: project identity (CLAUDE.md project section), PRD, logs, and application code are outside your domain.
47
47
  - After applying updates, verify no broken references: dead links in CLAUDE.md, missing command files, orphaned pattern references, agent definitions referencing removed method docs.
48
48
  - Present changes like a gift, not an obligation. The user chooses what to accept.
49
+ - **CLI freshness check is mandatory before sync:** Instruction-level self-update (void.md telling Claude to check CLI version) beats code-level self-update (auto-upgrade in voidforge.ts). Old CLIs compare against their own bundled methodology and report "up to date." The void.md freshness check works for ALL CLI versions because Claude reads the instruction fresh. Never remove or weaken this check. (Field report #297: 3-iteration fix for bootstrap problem.)
49
50
 
50
51
  ## Required Context
51
52
 
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [devops, backup, disaster-recovery]
10
11
  ---
11
12
 
12
13
  # Bulma — Recovery Engineer
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [qa, code-quality, antipatterns, bugs]
10
11
  ---
11
12
 
12
13
  # Constantine — Cursed Code Adversary
@@ -48,6 +48,7 @@ Structure all output as:
48
48
  - **Post-push deploy check:** Pushing code to GitHub is NOT deploying it. If the project runs on PM2/systemd/Docker, compare the server's running version against what was just pushed. A server running v3.8.1 while code is at v3.10.0 means 22 commits of changes are invisible to users. (Field report #104.)
49
49
  - **Dynamic counts eliminate hardcoded staleness:** Hardcoded numeric claims ("170+ agents", "13 phases") go stale immediately. Replace with computed values derived from the authoritative data source (array length, directory listing, config object keys).
50
50
  - **CLAUDE.md is a contract -- every claim must have a backing file:** The slash command table, agent table, and docs reference table are contracts with the user. Every entry must have a corresponding file. No audit step verified table entries against actual files for 30 versions.
51
+ - **Prepack creates a different compilation environment than dev:** After npm publish, verify on a clean install. prepack.sh copies files from repo root into the package directory — paths that work in dev (relative to repo root) may not resolve in the packaged artifact. Functions that exist in dev may become phantom exports if the source file isn't in the prepack manifest. (Field report #297: daemon-core.ts phantom exports blocked npm publish.)
51
52
 
52
53
  ## Required Context
53
54
 
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [architecture, tech-debt, refactoring]
10
11
  ---
11
12
 
12
13
  # Data — Tech Debt Analyst
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [qa, adversarial, boundary-testing, authorization]
10
11
  ---
11
12
 
12
13
  # Deathstroke — Penetration Testing Adversary
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [financial, treasury, billing, reconciliation]
12
13
  ---
13
14
 
14
15
  # Dockson — The Treasury
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [ux, delight, animation, microinteraction]
10
11
  ---
11
12
 
12
13
  # Eowyn — Delight Architect
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [orchestration, pipeline, assembly, multi-agent]
12
13
  ---
13
14
 
14
15
  # Fury — The Initiative
@@ -47,6 +48,7 @@ Structure all output as:
47
48
  - **Only suggest fresh session if `/context` shows >85%.** Do not preemptively checkpoint or reduce quality for context reasons. Full 11-phase `/assemble` ran through 15+ sub-agents at 15-25% context usage, vs 80%+ inline. (Field report #270.)
48
49
  - **Maul's re-probe of fixed areas is a mandatory Crossfire gate:** Review fixes can introduce new failure modes (e.g., 404-as-success for circuit breaker masks real failures). The Crossfire is not complete until Maul has re-probed every fix from the review phase.
49
50
  - **Cross-Surface Consistency Check:** When a feature is added to one surface (API, dashboard, CLI, marketing), verify all other surfaces displaying the same entities are updated. Grep for the entity name across all surfaces after each phase.
51
+ - **Distribution verification — check ALL 6 consumption paths:** After adding a new shared file category, verify it's included in: prepack.sh, copy-assets.sh, project-init.ts, updater.ts, FORGE_KEEPER.md, void.md. "Distribution" means packaging AND delivery AND sync. Missing one path means users silently miss the feature. (Field report #297: .claude/agents/ missed in 3 of 6 paths.)
50
52
 
51
53
  ## Required Context
52
54
 
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [ai, prompts, templates, context-engineering]
10
11
  ---
11
12
 
12
13
  # Gaal Dornick — Prompt Architect
@@ -52,6 +52,7 @@ Structure all findings as:
52
52
  - **Async Polling State Machine (4 states required):** idle -> syncing -> success -> failure. Never show "success" before async confirmation resolves. Never show the old value alongside an "updated" banner. The polling result replaces the displayed value atomically.
53
53
  - **Iframe stacking context defeats z-index:** Iframes with `allow-same-origin` create impenetrable stacking contexts. `z-index: 9999` has no effect across boundaries. Use `createPortal(element, document.body)` for overlays coexisting with iframes.
54
54
  - **CSS animation replay requires reflow:** To replay an animation, remove class -> `void element.offsetWidth` (force reflow) -> re-add class. Without the reflow, the browser batches remove+add as a no-op.
55
+ - **Slash command prompt convention:** In docs and tutorials, slash commands use `>` prefix (Claude Code prompt) or no prefix — never `$` (shell prompt). `$ /build` implies a shell command. `> /build` or just `/build` is correct. Tutorial prose states facts without version qualifiers ("VoidForge supports X" — not "Since v23.0, VoidForge supports X"). Version history belongs in CHANGELOG.md. (Field report #298.)
55
56
  - **CSS percentage heights in flex items:** Percentage heights on flex items resolve to the parent's explicit height, which in a flex layout is often undefined (produces 0px). Use px, vh, or `flex: 1` instead.
56
57
 
57
58
  ## Required Context
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [growth, marketing, ads, seo, campaigns]
12
13
  ---
13
14
 
14
15
  # Kelsier — The Growth Strategist
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [backend, api-design, rest, pagination]
10
11
  ---
11
12
 
12
13
  # Kim — API Designer
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [devops, deploy, monitoring, infrastructure]
12
13
  ---
13
14
 
14
15
  # Kusanagi — DevOps Engineer
@@ -52,6 +53,7 @@ Structure all findings as:
52
53
  - **Validate SSH_HOST, SSH_KEY before any deploy:** (1) SSH_HOST is set, (2) SSH key file exists, (3) SSH test connection succeeds (`ssh -o ConnectTimeout=5`). If any check fails, abort. Check `~/.voidforge/deploys/` and `~/.voidforge/projects.json` for historical data if `.env` is missing values.
53
54
  - **Process manager discipline:** If PM2/systemd/Docker owns the port, NEVER kill the port directly (`fuser -k`). Always reload through the process manager. Killing the port causes auto-restart of the old build, creating a race condition. (Field report #123: 30+ minutes of stale code serving.)
54
55
  - **Build artifact freshness:** Before deploying, verify compiled output is newer than source. `find src/ -name '*.ts' -newer dist/index.js` -- if source is newer, rebuild. A stale build artifact deploys old code that passes all source-level tests.
56
+ - **Run test suite before deploy, not just build:** `npm test` (or equivalent) is a mandatory pre-flight check alongside `npm run build`. Broken tests can ship silently if only the build is verified — 4 broken tests shipped across 3 commits before being caught by a review agent. (Field report #298.)
55
57
  - **CronCreate `durable` flag silently fails:** The cron appears created but doesn't survive session end. For persistent operations, use OS-level crons (launchd on macOS, systemd timers on Linux) calling the `claude` CLI directly.
56
58
 
57
59
  ## Required Context
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [architecture, reliability, failure-analysis]
10
11
  ---
11
12
 
12
13
  # La Forge — Reliability Engineer
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [security, secrets, credentials, vault]
10
11
  ---
11
12
 
12
13
  # Leia — Secrets Management Auditor
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [devops, deploy, ci-cd, release]
10
11
  ---
11
12
 
12
13
  # Levi — Deploy Precision Specialist
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [qa, regression, testing, verification]
10
11
  ---
11
12
 
12
13
  # Nightwing — Regression Specialist
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [security, data-protection, privacy, compliance]
10
11
  ---
11
12
 
12
13
  # Padme — Data Protection Auditor
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [architecture, review, adr, decisions]
12
13
  ---
13
14
 
14
15
  # Picard — Systems Architect
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [security, integrations, api-security]
10
11
  ---
11
12
 
12
13
  # Romanoff — Integration Specialist
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [ai, models, selection, cost-optimization]
10
11
  ---
11
12
 
12
13
  # Salvor Hardin — Model Selection
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [ux, accessibility, a11y, wcag]
10
11
  ---
11
12
 
12
13
  # Samwise — Accessibility Champion
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [architecture, infrastructure, scaling]
10
11
  ---
11
12
 
12
13
  # Scotty — Performance Engineer
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [ai, llm, prompts, orchestration, evals]
12
13
  ---
13
14
 
14
15
  # Seldon — The AI Intelligence Auditor
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [devops, provisioning, cloud, aws]
10
11
  ---
11
12
 
12
13
  # Senku — Provisioning Scientist
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [campaign, orchestration, planning, missions]
12
13
  ---
13
14
 
14
15
  # Sisko — Campaign Commander
@@ -50,6 +51,7 @@ Mission briefs follow: Objective, Scope (files/features), Acceptance Criteria, A
50
51
  - **State files drift across multi-campaign sessions:** State files not updated at Victory cause cascading staleness in dashboards and assessments. Update build-state.md at every Victory. Cross-reference `git log` against campaign-state.md at session start. (LESSONS: confirmed across multiple projects.)
51
52
  - **Phase completion is NOT a pause point:** In blitz mode, phase boundaries (Phase 1 -> Phase 2) are organizational labels, not gates or rest stops. The only pause triggers are: (1) context >85%, (2) BLOCKED item requiring user input. (Field report #139: agent stopped at phase boundaries twice despite explicit instructions.)
52
53
  - **Numeric context checks:** Do not say "context is heavy," "given context usage," or "recommend a fresh session" unless you have run `/context` and the number exceeds 85%.
54
+ - **Cross-reference learnings when generating artifacts:** When generating mission artifacts (code, configs, agent definitions), cross-reference `docs/LEARNINGS.md` and `docs/LESSONS.md` before writing. Artifacts generated from a single source (e.g., NAMING_REGISTRY.md only) will contain 3-12% of operational knowledge. The learnings files contain hard-won rules that prevent repeat failures. (Field report #297: 263 agents deployed without learnings injection — required a full remediation campaign.)
53
55
 
54
56
  ## Required Context
55
57
 
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [devops, networking, routing, dns]
10
11
  ---
11
12
 
12
13
  # Spike — Networking & Routing Specialist
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [architecture, schema, database, normalization]
10
11
  ---
11
12
 
12
13
  # Spock — Data Architect
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [backend, api, database, services]
12
13
  ---
13
14
 
14
15
  # Stark — Backend Engineer
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [financial, budget, portfolio, cost]
10
11
  ---
11
12
 
12
13
  # Steris — The Planner
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [architecture, microservices, service-boundaries]
10
11
  ---
11
12
 
12
13
  # Strange — Service Architecture Specialist
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [backend, queues, jobs, async]
10
11
  ---
11
12
 
12
13
  # Thor — Queue & Worker Specialist
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [ux, prd, compliance, verification]
10
11
  ---
11
12
 
12
13
  # Troi — PRD Compliance Analyst
@@ -9,6 +9,7 @@ tools:
9
9
  - Bash
10
10
  - Grep
11
11
  - Glob
12
+ tags: [security, auth, encryption, intelligence]
12
13
  ---
13
14
 
14
15
  # Tuvok — The Deep Current
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [analytics, metrics, conversion, data]
10
11
  ---
11
12
 
12
13
  # Vin — Mistborn Analytics
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [security, validation, injection, sanitization]
10
11
  ---
11
12
 
12
13
  # Windu — Input Validation Enforcer
@@ -7,6 +7,7 @@ tools:
7
7
  - Bash
8
8
  - Grep
9
9
  - Glob
10
+ tags: [security, architecture, design-review]
10
11
  ---
11
12
 
12
13
  # Worf — Security Architect
@@ -15,6 +15,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
15
15
 
16
16
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
17
17
 
18
+ ## Herald Pre-Scan (ADR-047)
19
+
20
+ Before agent deployment, run the Herald to select the optimal roster:
21
+
22
+ 1. Call `gatherHeraldContext('/ai', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
23
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
24
+ 3. Call `runHerald(context, registry)` to get the optimal roster
25
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
26
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
27
+
28
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
29
+
30
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
31
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
32
+
18
33
  ## Phase 0 — AI Surface Map (`subagent_type: seldon-ai`)
19
34
 
20
35
  Reconnaissance — find all AI integration points:
@@ -54,6 +69,7 @@ Fix all Critical and High findings. Use the standard finding format with confide
54
69
  **The Mule** `subagent_type: mule-adversarial-ai` + **Wanda Seldon** `subagent_type: wanda-seldon-validation` re-probe all remediated areas. Wanda validates structured outputs. The Mule attempts adversarial bypass of fixes.
55
70
 
56
71
  ## Arguments
72
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
57
73
  - No arguments → full 5-phase audit of all AI components
58
74
  - `--prompts` → Focus on prompt engineering only (Gaal Dornick deep dive)
59
75
  - `--tools` → Focus on tool-use schemas only (Hober Mallow solo)
@@ -10,6 +10,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
10
10
 
11
11
  **Promoted agent:** **Riker** `subagent_type: riker-review` runs on every ADR written — challenges trade-offs.
12
12
 
13
+ ## Herald Pre-Scan (ADR-047)
14
+
15
+ Before agent deployment, run the Herald to select the optimal roster:
16
+
17
+ 1. Call `gatherHeraldContext('/architect', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
18
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
19
+ 3. Call `runHerald(context, registry)` to get the optimal roster
20
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
21
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
22
+
23
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
24
+
25
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
26
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
27
+
13
28
  ## Context Setup
14
29
  1. Read `/logs/build-state.md` — understand current project state
15
30
  2. Read `/docs/methods/SYSTEMS_ARCHITECT.md`
@@ -89,6 +104,7 @@ For specific conflicts:
89
104
 
90
105
  ## Arguments
91
106
  - `--plan [description]` → Planning mode: analyze and recommend without executing. Present findings and proposed changes for review.
107
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
92
108
  - `--muster` → *(retired — accepted as no-op per ADR-043. Full roster is now the default. Use `--light` to reduce.)*
93
109
 
94
110
  ## Handoffs
@@ -13,6 +13,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
13
13
 
14
14
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
15
15
 
16
+ ## Herald Pre-Scan (ADR-047)
17
+
18
+ Before agent deployment, run the Herald to select the optimal roster:
19
+
20
+ 1. Call `gatherHeraldContext('/assemble', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
21
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
22
+ 3. Call `runHerald(context, registry)` to get the optimal roster
23
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
24
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
25
+
26
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
27
+
28
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
29
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
30
+
16
31
  ## Agent Deployment Manifest — The Full Initiative
17
32
 
18
33
  When `/assemble` invokes each sub-command, it deploys the FULL roster for that command — not just the lead. The leads below are coordinators; they bring their complete teams.
@@ -205,6 +220,9 @@ After the summary, Wong extracts learnings for future builds:
205
220
  - `--solo` — Lead agent only per phase, no sub-agents.
206
221
  - `--blitz` — **Retired (no-op).** Default is now autonomous.
207
222
 
223
+ ## Arguments
224
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
225
+
208
226
  ## Handoffs
209
227
  - If any phase is blocked by an issue outside its domain, log to `/logs/handoffs.md` and continue to the next phase
210
228
  - At completion, note any outstanding handoffs for the user
@@ -2,6 +2,21 @@
2
2
 
3
3
  Evaluate an existing codebase before a rebuild, migration, or VoidForge onboarding. Chains architecture review, assessment-mode Gauntlet, and PRD gap analysis into a unified "State of the Codebase" report.
4
4
 
5
+ ## Herald Pre-Scan (ADR-047)
6
+
7
+ Before agent deployment, run the Herald to select the optimal roster:
8
+
9
+ 1. Call `gatherHeraldContext('/assess', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
10
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
11
+ 3. Call `runHerald(context, registry)` to get the optimal roster
12
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
13
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
14
+
15
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
16
+
17
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
18
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
19
+
5
20
  ## Context Setup
6
21
  1. Read `/logs/build-state.md` if it exists — understand current project state
7
22
  2. Read `/docs/methods/SYSTEMS_ARCHITECT.md`
@@ -61,6 +76,9 @@ Produce a unified report in `/logs/assessment.md`:
61
76
  ### Step 5 — Debrief (optional)
62
77
  If findings are methodology-relevant (patterns that VoidForge should catch but doesn't), offer: "Want Bashir to file a field report?"
63
78
 
79
+ ## Arguments
80
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
81
+
64
82
  ## When to Use
65
83
  - Before onboarding an existing codebase to VoidForge
66
84
  - Before a major version rebuild (v2 → v3)
@@ -10,6 +10,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
10
10
  - **Troi** `subagent_type: troi-prd-compliance` runs after every build mission completion — catches PRD drift before it compounds.
11
11
  - **Riker** `subagent_type: riker-review` runs whenever an ADR is written during the build — prevents rubber-stamped decisions.
12
12
 
13
+ ## Herald Pre-Scan (ADR-047)
14
+
15
+ Before agent deployment, run the Herald to select the optimal roster:
16
+
17
+ 1. Call `gatherHeraldContext('/build', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
18
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
19
+ 3. Call `runHerald(context, registry)` to get the optimal roster
20
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
21
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
22
+
23
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
24
+
25
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
26
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
27
+
13
28
  ## Context Setup
14
29
  1. Read `/logs/build-state.md` — if it exists, resume from current phase
15
30
  2. If no build state exists, this is a fresh build — start from Phase 0
@@ -116,6 +131,7 @@ After build and before launch, log which patterns were used: pattern name, frame
116
131
  3. Update `/logs/build-state.md` to "LAUNCHED"
117
132
 
118
133
  ## Flags
134
+ - `--focus "topic"` — Bias Herald toward topic (natural-language, additive)
119
135
  - `--resume` — Resume from last completed phase in build-state.md.
120
136
  - `--blitz` — *(retired — accepted as no-op per ADR-043. Autonomous execution is now the default. Use `--interactive` to pause between phases.)*
121
137
  - `--muster` — *(retired — accepted as no-op per ADR-043. Full roster is now the default. Use `--light` to reduce.)*
@@ -53,6 +53,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
53
53
 
54
54
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
55
55
 
56
+ ## Herald Pre-Scan (ADR-047)
57
+
58
+ Before agent deployment, run the Herald to select the optimal roster:
59
+
60
+ 1. Call `gatherHeraldContext('/campaign', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
61
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
62
+ 3. Call `runHerald(context, registry)` to get the optimal roster
63
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
64
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
65
+
66
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
67
+
68
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
69
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
70
+
56
71
  ## Execution Mode (default)
57
72
 
58
73
  ## Step 0 — Kira's Operational Reconnaissance (`subagent_type: kira-pragmatic`)
@@ -204,6 +219,7 @@ Default is autonomous + full agent roster. Flags opt OUT of quality, not into it
204
219
  - `--light` → standard agents only, skip cross-domain spot-checks and muster roster
205
220
  - `--interactive` → pause for human confirmation between missions (old default behavior)
206
221
  - `--solo` → lead agent only, no sub-agents (quick checks)
222
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
207
223
  - `--autonomous` → supervised autonomy: same as default PLUS `git tag` before each mission, critical-finding rollback, 5-mission human checkpoints. Safer for 10+ mission campaigns. See CAMPAIGN.md "Autonomous Mode" for full guardrails.
208
224
  - `--continuous` → after Victory, auto-start the next roadmap version within the same major (v9.3→v9.4, stops before v10.0). Add `--major` to cross major boundaries and never stop cooking.
209
225
  - `--mission "Name"` → jump to a specific PRD section
@@ -4,6 +4,21 @@
4
4
 
5
5
  Read `/docs/methods/DEVOPS_ENGINEER.md` for operating rules (see "Deploy Automation" section).
6
6
 
7
+ ## Herald Pre-Scan (ADR-047)
8
+
9
+ Before agent deployment, run the Herald to select the optimal roster:
10
+
11
+ 1. Call `gatherHeraldContext('/deploy', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
12
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
13
+ 3. Call `runHerald(context, registry)` to get the optimal roster
14
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
15
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
16
+
17
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
18
+
19
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
20
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
21
+
7
22
  ## Context Setup
8
23
  1. Read PRD frontmatter for `deploy:` target (vps, vercel, railway, docker, static, cloudflare)
9
24
  2. Read `/logs/deploy-state.md` — if exists, check last deploy status
@@ -89,6 +104,7 @@ Update `/logs/deploy-state.md` with deploy results.
89
104
  - `--rollback` → rollback to previous deploy
90
105
  - `--status` → show current deploy state without deploying
91
106
  - `--dry-run` → show what would be deployed without executing
107
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
92
108
 
93
109
  ## Safety Rails
94
110
  - Never deploy with uncommitted changes
@@ -11,6 +11,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
11
11
 
12
12
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
13
13
 
14
+ ## Herald Pre-Scan (ADR-047)
15
+
16
+ Before agent deployment, run the Herald to select the optimal roster:
17
+
18
+ 1. Call `gatherHeraldContext('/devops', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
19
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
20
+ 3. Call `runHerald(context, registry)` to get the optimal roster
21
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
22
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
23
+
24
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
25
+
26
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
27
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
28
+
14
29
  ## Agent Deployment Manifest
15
30
 
16
31
  **Lead:** Kusanagi (`subagent_type: kusanagi-devops`)
@@ -142,6 +157,9 @@ If any smoke test fails, halt the deploy and run `/scripts/rollback.sh` before i
142
157
  6. Cron jobs documented
143
158
  7. Monitoring configured
144
159
 
160
+ ## Arguments
161
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
162
+
145
163
  ## Handoffs
146
164
  - Code bugs found during deploy → Batman, log to `/logs/handoffs.md`
147
165
  - Security config review → Kenobi, log to `/logs/handoffs.md`
@@ -15,6 +15,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
15
15
 
16
16
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
17
17
 
18
+ ## Herald Pre-Scan (ADR-047)
19
+
20
+ Before agent deployment, run the Herald to select the optimal roster:
21
+
22
+ 1. Call `gatherHeraldContext('/gauntlet', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
23
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
24
+ 3. Call `runHerald(context, registry)` to get the optimal roster
25
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
26
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
27
+
28
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
29
+
30
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
31
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
32
+
18
33
  ## Round 1 — Discovery (parallel)
19
34
 
20
35
  **Thanos:** "Before I test, I must understand."
@@ -127,6 +142,7 @@ Default is now maximum intensity (was `--infinity`). Flags opt out.
127
142
  - `--security-only` → 4 rounds of security only (Kenobi marathon)
128
143
  - `--ux-only` → 4 rounds of UX only (Galadriel marathon)
129
144
  - `--qa-only` → 4 rounds of QA only (Batman marathon)
145
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
130
146
  - `--resume` → resume from last completed round (reads gauntlet state from logs)
131
147
  - `--ux-extra` → Extra Éowyn enchantment emphasis across all rounds. Galadriel's team proposes micro-animations, copy improvements, and delight moments beyond standard usability/a11y.
132
148
  - `--assess` → **Pre-build assessment.** Rounds 1-2 only (Discovery + First Strike), no fix batches. Produces assessment report grouped by root cause.
@@ -10,6 +10,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
10
10
 
11
11
  **Promoted agent:** **Constantine** `subagent_type: constantine-cursed-code` runs on every `/qa` final pass — finds code that works by accident.
12
12
 
13
+ ## Herald Pre-Scan (ADR-047)
14
+
15
+ Before agent deployment, run the Herald to select the optimal roster:
16
+
17
+ 1. Call `gatherHeraldContext('/qa', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
18
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
19
+ 3. Call `runHerald(context, registry)` to get the optimal roster
20
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
21
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
22
+
23
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
24
+
25
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
26
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
27
+
13
28
  ## Context Setup
14
29
  1. Read `/logs/build-state.md` — understand current project state
15
30
  2. Read `/docs/methods/QA_ENGINEER.md`
@@ -106,6 +121,9 @@ Store in `/docs/qa-prompt.md` under "Regression Checklist" section.
106
121
  3. Updated `/docs/qa-prompt.md` with regression checklist
107
122
  4. Release note summary in phase log
108
123
 
124
+ ## Arguments
125
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
126
+
109
127
  ## Handoffs
110
128
  - Security findings → Kenobi (`/security`)
111
129
  - Architecture issues → Picard (`/architect`)
@@ -8,6 +8,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
8
8
 
9
9
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
10
10
 
11
+ ## Herald Pre-Scan (ADR-047)
12
+
13
+ Before agent deployment, run the Herald to select the optimal roster:
14
+
15
+ 1. Call `gatherHeraldContext('/review', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
16
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
17
+ 3. Call `runHerald(context, registry)` to get the optimal roster
18
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
19
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
20
+
21
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
22
+
23
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
24
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
25
+
11
26
  ## Context Setup
12
27
  1. Read `/logs/build-state.md` — understand current project state
13
28
  2. Read the relevant pattern files from `/docs/patterns/` for the code being reviewed
@@ -111,6 +126,9 @@ If new issues found, fix and re-verify.
111
126
  2. Code fixes for Must Fix and Should Fix items
112
127
  3. Remaining suggestions for user decision
113
128
 
129
+ ## Arguments
130
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
131
+
114
132
  ## Handoffs
115
133
  - Security findings → Kenobi (`/security`)
116
134
  - UX/a11y findings → Galadriel (`/ux`)
@@ -8,6 +8,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
8
8
 
9
9
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
10
10
 
11
+ ## Herald Pre-Scan (ADR-047)
12
+
13
+ Before agent deployment, run the Herald to select the optimal roster:
14
+
15
+ 1. Call `gatherHeraldContext('/security', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
16
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
17
+ 3. Call `runHerald(context, registry)` to get the optimal roster
18
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
19
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
20
+
21
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
22
+
23
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
24
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
25
+
11
26
  ## Context Setup
12
27
  1. Read `/logs/build-state.md` — understand current project state
13
28
  2. Read `/docs/methods/SECURITY_AUDITOR.md`
@@ -68,6 +83,9 @@ If any agent finds new issues, fix and re-verify until clean.
68
83
  3. Remediation code fixes
69
84
  4. INCIDENT_RESPONSE.md — if none exists, create template
70
85
 
86
+ ## Arguments
87
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
88
+
71
89
  ## Handoffs
72
90
  - Backend refactoring needed → Stark, log to `/logs/handoffs.md`
73
91
  - UI changes needed → Galadriel, log to `/logs/handoffs.md`
@@ -13,6 +13,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
13
13
 
14
14
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
15
15
 
16
+ ## Herald Pre-Scan (ADR-047)
17
+
18
+ Before agent deployment, run the Herald to select the optimal roster:
19
+
20
+ 1. Call `gatherHeraldContext('/test', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
21
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
22
+ 3. Call `runHerald(context, registry)` to get the optimal roster
23
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
24
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
25
+
26
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
27
+
28
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
29
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
30
+
16
31
  ## Step 0 — Orient
17
32
  **Oracle** `subagent_type: oracle-static-analysis` orients:
18
33
  1. Detect: test framework, test runner, test directory structure, existing coverage
@@ -95,6 +110,9 @@ These can use mocked databases but MUST cross module boundaries — the test sho
95
110
  3. Updated coverage map in phase log
96
111
  4. List of remaining gaps (backlog)
97
112
 
113
+ ## Arguments
114
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
115
+
98
116
  ## Handoffs
99
117
  - Security test gaps → Kenobi (`/security`)
100
118
  - UI test gaps → Galadriel (`/ux`)
@@ -8,6 +8,21 @@ Opus scans `git diff --stat` and matches changed files against the `description`
8
8
 
9
9
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
10
10
 
11
+ ## Herald Pre-Scan (ADR-047)
12
+
13
+ Before agent deployment, run the Herald to select the optimal roster:
14
+
15
+ 1. Call `gatherHeraldContext('/ux', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
16
+ 2. Call `loadAgentRegistry()` to get all 263 agent definitions
17
+ 3. Call `runHerald(context, registry)` to get the optimal roster
18
+ 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
19
+ 5. Deploy the merged roster per the command's normal parallel/sequential protocol
20
+
21
+ **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
22
+
23
+ **`--light`** skips the Herald entirely — uses only the command's hardcoded core roster.
24
+ **`--solo`** skips both Herald and all sub-agents — lead agent only.
25
+
11
26
  ## Context Setup
12
27
  1. Read `/logs/build-state.md` — understand current project state
13
28
  2. Read `/docs/methods/PRODUCT_DESIGN_FRONTEND.md`
@@ -112,6 +127,9 @@ Add UX-specific items to the regression checklist in `/docs/qa-prompt.md`:
112
127
  3. Code fixes
113
128
  4. "Next improvements" backlog in phase log
114
129
 
130
+ ## Arguments
131
+ - `--focus "topic"` → Bias Herald toward topic (natural-language, additive)
132
+
115
133
  ## Handoffs
116
134
  - Backend issues → Stark, log to `/logs/handoffs.md`
117
135
  - Security issues → Kenobi, log to `/logs/handoffs.md`
package/CHANGELOG.md CHANGED
@@ -6,6 +6,95 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
6
6
 
7
7
  ---
8
8
 
9
+ ## [23.5.0] - 2026-04-12
10
+
11
+ ### The Herald (ADR-047, Campaign 37)
12
+
13
+ ### Added
14
+ - **Herald dispatch engine** (`herald.ts`): Haiku pre-scan selects optimal agent roster from 263 agents based on codebase content, command type, and user intent. Runs before every major command in <2 seconds for ~$0.001.
15
+ - **Agent registry loader** (`agent-registry.ts`): Reads and caches all 263 agent definitions with YAML frontmatter parsing (name, description, model, tools, tags).
16
+ - **`--focus "topic"` flag**: Natural-language bias for Herald selection. Available on all 14 Herald-enabled commands. Added to CLAUDE.md Tier 1 flag taxonomy.
17
+ - **Tag enrichment**: 40 cross-domain agents tagged for faster Herald matching (security-adjacent, architecture, QA, financial, UX, DevOps, AI, backend, orchestration).
18
+ - **48 new tests**: Herald engine (26 tests covering roster parsing, graceful degradation, focus bias) + agent registry (22 tests covering YAML parsing, caching, summary formatting).
19
+
20
+ ### Changed
21
+ - All 14 major commands (`/review`, `/qa`, `/security`, `/ux`, `/architect`, `/build`, `/assemble`, `/gauntlet`, `/campaign`, `/test`, `/devops`, `/deploy`, `/ai`, `/assess`) now include Herald Pre-Scan step before agent deployment.
22
+ - Dynamic dispatch evolved: file-based matching (ADR-044) supplemented by codebase-aware intelligent selection (ADR-047).
23
+
24
+ ---
25
+
26
+ ## [23.4.1] - 2026-04-12
27
+
28
+ ### Security
29
+ - **XSS fix:** Blueprint validation banner now escapes `data.summary` and `data.frontmatterErrors` before innerHTML rendering (Gauntlet Round 1 finding SEC-1/SEC-2)
30
+
31
+ ### Fixed
32
+ - ROADMAP.md header updated to v23.4.0 (was stale at v23.3.1)
33
+ - Lobby error state gets `role="alert"` and `aria-live="polite"` for screen reader announcement
34
+
35
+ ---
36
+
37
+ ## [23.4.0] - 2026-04-12
38
+
39
+ ### The Remediation (ADR-046, Campaign 36)
40
+
41
+ ### Added
42
+ - **WCAG compliance:** Visible validation error messages with `aria-invalid` and `role="alert"` on Step 3 inputs
43
+ - **Tab keyboard navigation:** ArrowLeft/Right/Home/End on PRD tabs (WAI-ARIA Tabs pattern)
44
+ - **Deploy wizard footer:** Consistent Back/Next navigation matching setup wizard
45
+ - **Lobby error state:** Distinct "Could not connect to server" with Retry button (vs empty state)
46
+ - **Blueprint dismiss:** Close button on Blueprint Detected banner
47
+ - **Tower CDN retry:** Retry button when xterm.js fails to load
48
+ - **Login password help:** "Forgot password?" guidance text
49
+ - **Tower responsive:** Header actions wrap on mobile viewports
50
+
51
+ ### Changed
52
+ - Standalone Danger Room and War Room pages redirect to project dashboard (legacy API shims removed per ADR-046)
53
+ - CLAUDE.md pattern count: 35 → 37 reference implementations
54
+
55
+ ### Fixed
56
+ - **3 critical API fixes:** Legacy `/api/danger-room/*` and `/api/war-room/*` endpoints removed — always 404'd in remote/LAN mode, freeze button had no shim at all
57
+ - **Retired `--blitz` flag** removed from 4 UI locations (was a no-op since ADR-043)
58
+ - Import modal Escape key now handled inside focus trap (consistency with other modals)
59
+ - Lobby header and Tower header overflow on mobile viewports
60
+ - Step 7 heading visible during creating state (was hidden, leaving section unlabeled)
61
+ - Stale comments in prophecy.js files updated
62
+
63
+ ### Removed
64
+ - ~2,400 lines of legacy dashboard code (danger-room.js, war-room.js, legacy API shims)
65
+
66
+ ---
67
+
68
+ ## [23.3.1] - 2026-04-12
69
+
70
+ ### Fixed
71
+ - **Wizard UI "Files to be created" list was stale since v4.0** — listed 5 files that aren't created (settings.json, PRD.md, build-state.md, .env, .gitignore), missed 6 that are (agents/, NAMING_REGISTRY.md, VERSION.md, HOLOCRON.md, CHANGELOG.md, .voidforge), and showed wrong counts ("14 agent protocols" → 29, "7 patterns" → 37). (Field report #298 dynamic count finding.)
72
+
73
+ ---
74
+
75
+ ## [23.3.0] - 2026-04-10
76
+
77
+ ### The Coverage + The Splitting (Campaigns 34+35)
78
+
79
+ ### Added
80
+ - **599 new tests** across 60 test files — API routes (141), server core (35), provisioners (111), financial modules (107), high-risk lib/ (98), remaining modules (107). Total: 741 → 1,340 tests, 77% module coverage.
81
+ - **16 new split modules** from 9 oversized files — treasury-heartbeat (1,495→5), heartbeat (1,067→3), projects (769→3), provision (642→4), aws-vps (663→4), railway (454→3), 3 campaign adapters (→7 + campaign-common)
82
+ - **5 planned features wired in** — daemon-aggregator (Danger Room), project-vault (shutdown lock), autonomy-controller (hourly breaker check), treasury-backup (daily snapshots), platform-planner (invoice settlement + debit protection)
83
+ - **Phase 12.75 distribution verification gate** in BUILD_PROTOCOL.md — verify all 6 consumption paths after adding shared file categories
84
+ - **2 new lessons** — instruction-level self-update, consumption path verification
85
+
86
+ ### Changed
87
+ - 4 agent operational learnings enriched (sisko-campaign, fury-initiative, bombadil-forge-sync, coulson-release)
88
+ - Treasury heartbeat jobs count: 8 → 9 (treasury-backup added)
89
+
90
+ ### Removed
91
+ - 17 orphaned files (2,020 lines): 9 lib/ modules, 4 codegen/ modules, dead code shipping in dist/
92
+
93
+ ### Fixed
94
+ - Field report #297 triaged: 8 of 9 proposed methodology fixes applied, 1 wontfix (Transport B re-scan)
95
+
96
+ ---
97
+
9
98
  ## [23.1.0] - 2026-04-09
10
99
 
11
100
  ### The Injection (ADR-045, Campaign 33)
package/CLAUDE.md CHANGED
@@ -136,6 +136,7 @@ Flags are standardized across commands. Same flag name = same meaning everywhere
136
136
  | `--fast` | Reduced review passes (skip last 2 rounds/phases), still comprehensive | `/campaign`, `/assemble`, `/gauntlet` |
137
137
  | `--dry-run` | Show what would happen without doing it | `/deploy`, `/debrief`, `/treasury`, `/grow`, `/git` |
138
138
  | `--status` | Show current state | `/cultivation`, `/treasury`, `/deploy`, `/portfolio`, `/dangerroom`, `/thumper` |
139
+ | `--focus "topic"` | Bias Herald agent selection toward topic | All Herald-enabled commands |
139
140
 
140
141
  ### Tier 2 — Scope Flags
141
142
 
@@ -205,7 +206,7 @@ See `/docs/methods/MUSTER.md` for the full Muster Protocol.
205
206
  | **Learnings** | `/docs/LEARNINGS.md` | Project-scoped operational knowledge — read at session start if exists |
206
207
  | **The Muster** | `/docs/methods/MUSTER.md` | When using `--muster` flag on any command |
207
208
  | **Time Vault** | `/docs/methods/TIME_VAULT.md` | Seldon — when preserving session intelligence for transfer |
208
- | **Patterns** | `/docs/patterns/` | When writing code (35 reference implementations) |
209
+ | **Patterns** | `/docs/patterns/` | When writing code (37 reference implementations) |
209
210
  | **Lessons** | `/docs/LESSONS.md` | Cross-project learnings |
210
211
 
211
212
  ## The Team
package/VERSION.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Version
2
2
 
3
- **Current:** 23.1.0
3
+ **Current:** 23.5.0
4
4
 
5
5
  ## Versioning Scheme
6
6
 
@@ -14,6 +14,11 @@ This project uses [Semantic Versioning](https://semver.org/):
14
14
 
15
15
  | Version | Date | Summary |
16
16
  |---------|------|---------|
17
+ | 23.5.0 | 2026-04-12 | The Herald — intelligent agent dispatch: Haiku pre-scan, agent registry, 40 tags, --focus flag, 14 commands wired. ADR-047. Campaign 37. |
18
+ | 23.4.1 | 2026-04-12 | Gauntlet security fix — XSS escaping in blueprint banner, ROADMAP staleness, lobby a11y |
19
+ | 23.4.0 | 2026-04-12 | The Remediation — wizard UI audit: 3 critical API fixes, 4 WCAG a11y fixes, retired --blitz cleanup, content accuracy, 7 UX improvements. -2,400 lines legacy code. ADR-046. Campaign 36. |
20
+ | 23.3.1 | 2026-04-12 | Wizard UI fix — "Files to be created" list matched actual init output |
21
+ | 23.3.0 | 2026-04-10 | The Coverage + The Splitting — 599 new tests (741→1340, 77% coverage), 17 orphans purged, 9 oversized files split into 25 focused modules, field report #297 triaged. Campaigns 34+35. |
17
22
  | 23.1.0 | 2026-04-09 | The Injection — knowledge injection into 35 agent definitions, 6 knowledge flow breaks closed (ADR-045), debrief→agent promotion path, vault agent recommendations, scaffold migration, distribution pipeline fixes. Campaign 33. |
18
23
  | 23.0.0 | 2026-04-09 | The Materialization — 263 Claude Code subagent definitions with 3-tier model routing (Opus/Sonnet/Haiku), 4-category tool restrictions, description-driven dynamic dispatch. 18 commands migrated, 13 method docs updated. ADR-044. Campaign 32, 8 missions. |
19
24
  | 22.2.0 | 2026-04-09 | The Polish — first-run onboarding UX, portfolio per-project reads, legacy route deprecation (19 routes, sunset July 2026), growth tutorial prerequisites, 263-agent accuracy pass, dynamic agent dispatch (ADR-042), max-by-default flag inversion (ADR-043). Campaign 31, 7 missions. |
@@ -326,6 +326,16 @@ After build completes and before launch, Wong logs which patterns were used in t
326
326
  3. Store in project-level `docs/pattern-usage.json` (or append to existing)
327
327
  4. This data feeds Wong's promotion analysis in `/debrief` — recurring variations across 10+ projects become candidate patterns
328
328
 
329
+ **Phase 12.75 — Distribution Verification Gate.**
330
+ If this build introduces a new shared file category (e.g., `.claude/agents/`, a new patterns subdirectory, a new config format), verify ALL consumption paths include it before publishing:
331
+ 1. `prepack.sh` — included in npm package build
332
+ 2. `copy-assets.sh` — included in local build copy
333
+ 3. `project-init.ts` — copied during `npx voidforge init`
334
+ 4. `updater.ts` — synced during `npx voidforge update`
335
+ 5. `FORGE_KEEPER.md` — listed in Bombadil's shared file manifest
336
+ 6. `void.md` — listed in user-facing sync checklist
337
+ Missing even one path means some users silently miss the feature. This gate is mandatory after any structural addition to the methodology. (Field report #297: .claude/agents/ was added to packaging but missed in 3 of 6 delivery paths.)
338
+
329
339
  **Phase 13 — Launch Checklist.**
330
340
  All flows in production. SSL. Email. Payments. Analytics. Monitoring. Backups. Security headers. Legal. Performance. Mobile. Accessibility. Tests passing. **Build-time env var verification:** For every new `NEXT_PUBLIC_*` / `VITE_*` / `REACT_APP_*` reference introduced during this build, verify the variable exists in `.env` or the deploy environment. Missing build-time vars cause features to silently disappear without errors. (Field report #104) Log final status to `/logs/phase-13-launch.md`.
331
341
 
@@ -51,6 +51,8 @@ Adversarial UX/UI QA review. Identify usability issues, inconsistencies, broken
51
51
  7. Spin up all seven agents. Radagast checks everyone's work.
52
52
  8. Validation is manual + automated: run the app, click through, written regression checklist. Reference `/docs/patterns/component.tsx` for state handling patterns.
53
53
  9. **Confidence scoring:** All findings include a confidence score (0-100). High confidence (90+) skips re-verification in Step 7.5. Low confidence (<60) must be escalated to a second agent from a different universe before presenting — if the second agent disagrees, drop the finding. See GAUNTLET.md "Agent Confidence Scoring" for full ranges.
54
+ 10. **Slash command prompt convention:** In documentation and tutorials, slash commands use `>` prefix (Claude Code prompt), not `$` (shell prompt). `$ /build` is wrong — it implies a shell command. `> /build` or just `/build` is correct. (Field report #298.)
55
+ 11. **No version qualifiers in tutorial prose:** Tutorial text states facts without version references. "VoidForge supports 263 agents" — not "Since v23.0, VoidForge supports 263 agents." Readers don't care when a feature shipped; version tags make tutorials feel like changelogs. Version history belongs in CHANGELOG.md. (Field report #298.)
54
56
 
55
57
  ## Step 0 — Orient
56
58
 
@@ -130,6 +130,10 @@ When a function delegates to another function (e.g., `handleRequest` calls `proc
130
130
 
131
131
  **Robots.txt & Domain Reference Audit:** Verify robots.txt sitemap URL and hardcoded domain references match production hostname. Grep for hardcoded domains across all config files, sitemap generators, canonical tags, and OG meta tags. A staging domain in robots.txt blocks production indexing; a wrong sitemap URL means search engines never find your pages. (Triage fix from field report batch #149-#153.)
132
132
 
133
+ **Dynamic Count Check:** Grep for hardcoded numeric claims ("263 agents", "37 patterns", "33+ campaigns") across all pages and data files. Every count that can change between releases must be computed from the authoritative source (array length, directory listing, config object keys), not hardcoded in copy. Hardcoded counts go stale every release and erode user trust. (Field report #298.)
134
+
135
+ **Cross-Array Uniqueness Audit:** When a codebase uses multiple data arrays for entity categories (e.g., leadAgents + subAgents), verify no entity appears in more than one array. Duplicates inflate totals and cause display bugs. Grep for entity identifiers across all arrays and flag overlaps. (Field report #298: Gandalf and Haku in both leadAgents and subAgents inflated count 263 → 265.)
136
+
133
137
  **CTA Fact-Check Pass:** Fact-check every CTA claim ("start with X", "X first", "no dependencies required") against actual dependency chain. If the landing page says "run one command to start," verify that one command actually works without prerequisites. If it says "no account required," verify the feature works without auth. Marketing claims that contradict the actual user experience are credibility bugs. (Triage fix from field report batch #149-#153.)
134
138
 
135
139
  **Copy Accuracy Pass:** Grep for numeric claims in rendered content (e.g., "10 lead agents", "12 commands", "53 pages"). Cross-reference against actual data counts. Any mismatch is a bug — inaccurate numbers undermine credibility. This is automatable and should run on every QA pass.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thevoidforge-methodology",
3
- "version": "23.1.1",
3
+ "version": "23.5.0",
4
4
  "description": "VoidForge methodology — agents, commands, methods, patterns.",
5
5
  "license": "MIT",
6
6
  "files": [