@nforma.ai/nforma 0.2.1 → 0.29.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 (193) hide show
  1. package/README.md +2 -2
  2. package/agents/{qgsd-codebase-mapper.md → nf-codebase-mapper.md} +1 -1
  3. package/agents/{qgsd-debugger.md → nf-debugger.md} +3 -3
  4. package/agents/{qgsd-executor.md → nf-executor.md} +14 -14
  5. package/agents/{qgsd-integration-checker.md → nf-integration-checker.md} +1 -1
  6. package/agents/{qgsd-phase-researcher.md → nf-phase-researcher.md} +6 -6
  7. package/agents/{qgsd-plan-checker.md → nf-plan-checker.md} +9 -9
  8. package/agents/{qgsd-planner.md → nf-planner.md} +9 -9
  9. package/agents/{qgsd-project-researcher.md → nf-project-researcher.md} +2 -2
  10. package/agents/{qgsd-quorum-orchestrator.md → nf-quorum-orchestrator.md} +33 -33
  11. package/agents/{qgsd-quorum-slot-worker.md → nf-quorum-slot-worker.md} +3 -3
  12. package/agents/{qgsd-quorum-synthesizer.md → nf-quorum-synthesizer.md} +3 -3
  13. package/agents/{qgsd-quorum-test-worker.md → nf-quorum-test-worker.md} +1 -1
  14. package/agents/{qgsd-quorum-worker.md → nf-quorum-worker.md} +6 -6
  15. package/agents/{qgsd-research-synthesizer.md → nf-research-synthesizer.md} +5 -5
  16. package/agents/{qgsd-roadmapper.md → nf-roadmapper.md} +3 -3
  17. package/agents/{qgsd-verifier.md → nf-verifier.md} +8 -8
  18. package/bin/accept-debug-invariant.cjs +2 -2
  19. package/bin/account-manager.cjs +10 -10
  20. package/bin/aggregate-requirements.cjs +1 -1
  21. package/bin/analyze-assumptions.cjs +3 -3
  22. package/bin/analyze-state-space.cjs +14 -14
  23. package/bin/assumption-register.cjs +146 -0
  24. package/bin/attribute-trace-divergence.cjs +1 -1
  25. package/bin/auth-drivers/gh-cli.cjs +1 -1
  26. package/bin/auth-drivers/pool.cjs +1 -1
  27. package/bin/autoClosePtoF.cjs +3 -3
  28. package/bin/budget-tracker.cjs +77 -0
  29. package/bin/build-layer-manifest.cjs +153 -0
  30. package/bin/call-quorum-slot.cjs +3 -3
  31. package/bin/ccr-secure-config.cjs +5 -5
  32. package/bin/check-bundled-sdks.cjs +1 -1
  33. package/bin/check-mcp-health.cjs +1 -1
  34. package/bin/check-provider-health.cjs +6 -6
  35. package/bin/check-spec-sync.cjs +26 -26
  36. package/bin/check-trace-schema-drift.cjs +5 -5
  37. package/bin/conformance-schema.cjs +2 -2
  38. package/bin/cross-layer-dashboard.cjs +297 -0
  39. package/bin/design-impact.cjs +377 -0
  40. package/bin/detect-coverage-gaps.cjs +7 -7
  41. package/bin/failure-mode-catalog.cjs +227 -0
  42. package/bin/failure-taxonomy.cjs +177 -0
  43. package/bin/formal-scope-scan.cjs +179 -0
  44. package/bin/gate-a-grounding.cjs +334 -0
  45. package/bin/gate-b-abstraction.cjs +243 -0
  46. package/bin/gate-c-validation.cjs +166 -0
  47. package/bin/generate-formal-specs.cjs +17 -17
  48. package/bin/generate-petri-net.cjs +3 -3
  49. package/bin/generate-tla-cfg.cjs +5 -5
  50. package/bin/git-heatmap.cjs +571 -0
  51. package/bin/harness-diagnostic.cjs +326 -0
  52. package/bin/hazard-model.cjs +261 -0
  53. package/bin/install-formal-tools.cjs +1 -1
  54. package/bin/install.js +184 -139
  55. package/bin/instrumentation-map.cjs +178 -0
  56. package/bin/invariant-catalog.cjs +437 -0
  57. package/bin/issue-classifier.cjs +2 -2
  58. package/bin/load-baseline-requirements.cjs +4 -4
  59. package/bin/manage-agents-core.cjs +32 -32
  60. package/bin/migrate-to-slots.cjs +39 -39
  61. package/bin/mismatch-register.cjs +217 -0
  62. package/bin/nForma.cjs +176 -81
  63. package/bin/{qgsd-solve.cjs → nf-solve.cjs} +327 -14
  64. package/bin/observe-config.cjs +8 -0
  65. package/bin/observe-debt-writer.cjs +1 -1
  66. package/bin/observe-handler-deps.cjs +356 -0
  67. package/bin/observe-handler-grafana.cjs +2 -17
  68. package/bin/observe-handler-internal.cjs +5 -5
  69. package/bin/observe-handler-logstash.cjs +2 -17
  70. package/bin/observe-handler-prometheus.cjs +2 -17
  71. package/bin/observe-handler-upstream.cjs +251 -0
  72. package/bin/observe-handlers.cjs +12 -33
  73. package/bin/observe-render.cjs +68 -22
  74. package/bin/observe-utils.cjs +37 -0
  75. package/bin/observed-fsm.cjs +324 -0
  76. package/bin/planning-paths.cjs +6 -0
  77. package/bin/polyrepo.cjs +1 -1
  78. package/bin/probe-quorum-slots.cjs +1 -1
  79. package/bin/promote-gate-maturity.cjs +274 -0
  80. package/bin/promote-model.cjs +1 -1
  81. package/bin/propose-debug-invariants.cjs +1 -1
  82. package/bin/quorum-cache.cjs +144 -0
  83. package/bin/quorum-consensus-gate.cjs +1 -1
  84. package/bin/quorum-preflight.cjs +89 -0
  85. package/bin/quorum-slot-dispatch.cjs +6 -6
  86. package/bin/requirements-core.cjs +1 -1
  87. package/bin/review-mcp-logs.cjs +1 -1
  88. package/bin/risk-heatmap.cjs +151 -0
  89. package/bin/run-account-manager-tlc.cjs +4 -4
  90. package/bin/run-account-pool-alloy.cjs +2 -2
  91. package/bin/run-alloy.cjs +2 -2
  92. package/bin/run-audit-alloy.cjs +2 -2
  93. package/bin/run-breaker-tlc.cjs +3 -3
  94. package/bin/run-formal-check.cjs +9 -9
  95. package/bin/run-formal-verify.cjs +30 -9
  96. package/bin/run-installer-alloy.cjs +2 -2
  97. package/bin/run-oscillation-tlc.cjs +4 -4
  98. package/bin/run-phase-tlc.cjs +1 -1
  99. package/bin/run-protocol-tlc.cjs +4 -4
  100. package/bin/run-quorum-composition-alloy.cjs +2 -2
  101. package/bin/run-sensitivity-sweep.cjs +2 -2
  102. package/bin/run-stop-hook-tlc.cjs +3 -3
  103. package/bin/run-tlc.cjs +21 -21
  104. package/bin/run-transcript-alloy.cjs +2 -2
  105. package/bin/secrets.cjs +5 -5
  106. package/bin/security-sweep.cjs +238 -0
  107. package/bin/sensitivity-report.cjs +3 -3
  108. package/bin/set-secret.cjs +5 -5
  109. package/bin/setup-telemetry-cron.sh +3 -3
  110. package/bin/stall-detector.cjs +126 -0
  111. package/bin/state-candidates.cjs +206 -0
  112. package/bin/sync-baseline-requirements.cjs +1 -1
  113. package/bin/telemetry-collector.cjs +1 -1
  114. package/bin/test-changed.cjs +111 -0
  115. package/bin/test-recipe-gen.cjs +250 -0
  116. package/bin/trace-corpus-stats.cjs +211 -0
  117. package/bin/unified-mcp-server.mjs +3 -3
  118. package/bin/update-scoreboard.cjs +1 -1
  119. package/bin/validate-memory.cjs +2 -2
  120. package/bin/validate-traces.cjs +10 -10
  121. package/bin/verify-quorum-health.cjs +66 -5
  122. package/bin/xstate-to-tla.cjs +4 -4
  123. package/bin/xstate-trace-walker.cjs +3 -3
  124. package/commands/{qgsd → nf}/add-phase.md +3 -3
  125. package/commands/{qgsd → nf}/add-requirement.md +3 -3
  126. package/commands/{qgsd → nf}/add-todo.md +3 -3
  127. package/commands/{qgsd → nf}/audit-milestone.md +4 -4
  128. package/commands/{qgsd → nf}/check-todos.md +3 -3
  129. package/commands/{qgsd → nf}/cleanup.md +3 -3
  130. package/commands/{qgsd → nf}/close-formal-gaps.md +2 -2
  131. package/commands/{qgsd → nf}/complete-milestone.md +9 -9
  132. package/commands/{qgsd → nf}/debug.md +9 -9
  133. package/commands/{qgsd → nf}/discuss-phase.md +3 -3
  134. package/commands/{qgsd → nf}/execute-phase.md +15 -15
  135. package/commands/{qgsd → nf}/fix-tests.md +3 -3
  136. package/commands/{qgsd → nf}/formal-test-sync.md +1 -1
  137. package/commands/{qgsd → nf}/health.md +3 -3
  138. package/commands/{qgsd → nf}/help.md +3 -3
  139. package/commands/{qgsd → nf}/insert-phase.md +3 -3
  140. package/commands/nf/join-discord.md +18 -0
  141. package/commands/{qgsd → nf}/list-phase-assumptions.md +2 -2
  142. package/commands/{qgsd → nf}/map-codebase.md +7 -7
  143. package/commands/{qgsd → nf}/map-requirements.md +3 -3
  144. package/commands/{qgsd → nf}/mcp-restart.md +3 -3
  145. package/commands/{qgsd → nf}/mcp-set-model.md +8 -8
  146. package/commands/{qgsd → nf}/mcp-setup.md +63 -63
  147. package/commands/{qgsd → nf}/mcp-status.md +3 -3
  148. package/commands/{qgsd → nf}/mcp-update.md +7 -7
  149. package/commands/{qgsd → nf}/new-milestone.md +8 -8
  150. package/commands/{qgsd → nf}/new-project.md +8 -8
  151. package/commands/{qgsd → nf}/observe.md +49 -16
  152. package/commands/{qgsd → nf}/pause-work.md +3 -3
  153. package/commands/{qgsd → nf}/plan-milestone-gaps.md +5 -5
  154. package/commands/{qgsd → nf}/plan-phase.md +6 -6
  155. package/commands/{qgsd → nf}/polyrepo.md +2 -2
  156. package/commands/{qgsd → nf}/progress.md +3 -3
  157. package/commands/{qgsd → nf}/queue.md +2 -2
  158. package/commands/{qgsd → nf}/quick.md +8 -8
  159. package/commands/{qgsd → nf}/quorum-test.md +10 -10
  160. package/commands/{qgsd → nf}/quorum.md +36 -86
  161. package/commands/{qgsd → nf}/reapply-patches.md +2 -2
  162. package/commands/{qgsd → nf}/remove-phase.md +3 -3
  163. package/commands/{qgsd → nf}/research-phase.md +12 -12
  164. package/commands/{qgsd → nf}/resume-work.md +3 -3
  165. package/commands/nf/review-requirements.md +31 -0
  166. package/commands/{qgsd → nf}/set-profile.md +3 -3
  167. package/commands/{qgsd → nf}/settings.md +6 -6
  168. package/commands/{qgsd → nf}/solve.md +35 -35
  169. package/commands/{qgsd → nf}/sync-baselines.md +4 -4
  170. package/commands/{qgsd → nf}/triage.md +10 -10
  171. package/commands/{qgsd → nf}/update.md +3 -3
  172. package/commands/{qgsd → nf}/verify-work.md +5 -5
  173. package/hooks/dist/config-loader.js +188 -32
  174. package/hooks/dist/conformance-schema.cjs +2 -2
  175. package/hooks/dist/gsd-context-monitor.js +118 -13
  176. package/hooks/dist/{qgsd-check-update.js → nf-check-update.js} +5 -5
  177. package/hooks/dist/{qgsd-circuit-breaker.js → nf-circuit-breaker.js} +35 -24
  178. package/hooks/dist/{qgsd-precompact.js → nf-precompact.js} +13 -13
  179. package/hooks/dist/{qgsd-prompt.js → nf-prompt.js} +110 -33
  180. package/hooks/dist/nf-session-start.js +185 -0
  181. package/hooks/dist/{qgsd-slot-correlator.js → nf-slot-correlator.js} +13 -5
  182. package/hooks/dist/{qgsd-spec-regen.js → nf-spec-regen.js} +17 -8
  183. package/hooks/dist/{qgsd-statusline.js → nf-statusline.js} +12 -3
  184. package/hooks/dist/{qgsd-stop.js → nf-stop.js} +152 -18
  185. package/hooks/dist/{qgsd-token-collector.js → nf-token-collector.js} +12 -4
  186. package/hooks/dist/unified-mcp-server.mjs +2 -2
  187. package/package.json +6 -4
  188. package/scripts/build-hooks.js +13 -6
  189. package/scripts/secret-audit.sh +1 -1
  190. package/scripts/verify-hooks-sync.cjs +90 -0
  191. package/templates/{qgsd.json → nf.json} +4 -4
  192. package/commands/qgsd/join-discord.md +0 -18
  193. package/hooks/dist/qgsd-session-start.js +0 -122
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  <div align="center">
2
2
 
3
- # nForma — Quorum Gets Shit Done
3
+ # nForma — Consensus before code. Proof before production.
4
4
 
5
- **Every planning decision verified by a quorum of AI models before Claude executes a single line.**
5
+ **nForma orchestrates a quorum of diverse coding agents that debate a plan until they reach full consensus.<br>Then formal methods turn requirements into invariants and simulate the system ahead of time.<br>The result: fewer hallucinations, fewer blind spots, and systems designed to survive the future.**
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/@nforma.ai/nforma?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@nforma.ai/nforma)
8
8
  [![npm downloads](https://img.shields.io/npm/dm/@nforma.ai/nforma?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@nforma.ai/nforma)
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-codebase-mapper
2
+ name: nf-codebase-mapper
3
3
  description: Explores codebase and writes structured analysis documents. Spawned by map-codebase with a focus area (tech, arch, quality, concerns). Writes documents directly to reduce orchestrator context load.
4
4
  tools: Read, Bash, Grep, Glob, Write
5
5
  color: cyan
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-debugger
2
+ name: nf-debugger
3
3
  description: Investigates bugs using scientific method, manages debug sessions, handles checkpoints. Spawned by /qgsd:debug orchestrator.
4
4
  tools: Read, Write, Edit, Bash, Grep, Glob, WebSearch
5
5
  color: orange
@@ -985,7 +985,7 @@ mv .planning/debug/{slug}.md .planning/debug/resolved/
985
985
  **Check planning config using state load (commit_docs is available from the output):**
986
986
 
987
987
  ```bash
988
- INIT=$(node ~/.claude/qgsd/bin/gsd-tools.cjs state load)
988
+ INIT=$(node ~/.claude/nf/bin/gsd-tools.cjs state load)
989
989
  # commit_docs is in the JSON output
990
990
  ```
991
991
 
@@ -1002,7 +1002,7 @@ Root cause: {root_cause}"
1002
1002
 
1003
1003
  Then commit planning docs via CLI (respects `commit_docs` config automatically):
1004
1004
  ```bash
1005
- node ~/.claude/qgsd/bin/gsd-tools.cjs commit "docs: resolve debug {slug}" --files .planning/debug/resolved/{slug}.md
1005
+ node ~/.claude/nf/bin/gsd-tools.cjs commit "docs: resolve debug {slug}" --files .planning/debug/resolved/{slug}.md
1006
1006
  ```
1007
1007
 
1008
1008
  Report completion and offer next steps.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-executor
2
+ name: nf-executor
3
3
  description: Executes GSD plans with atomic commits, deviation handling, checkpoint protocols, and state management. Spawned by execute-phase orchestrator or execute-plan command.
4
4
  tools: Read, Write, Edit, Bash, Grep, Glob
5
5
  color: yellow
@@ -37,7 +37,7 @@ This ensures project-specific patterns, conventions, and best practices are appl
37
37
  Load execution context:
38
38
 
39
39
  ```bash
40
- INIT=$(node ~/.claude/qgsd/bin/gsd-tools.cjs init execute-phase "${PHASE}")
40
+ INIT=$(node ~/.claude/nf/bin/gsd-tools.cjs init execute-phase "${PHASE}")
41
41
  ```
42
42
 
43
43
  Extract from init JSON: `executor_model`, `commit_docs`, `phase_dir`, `plans`, `incomplete_plans`.
@@ -193,7 +193,7 @@ Track auto-fix attempts per task. After 3 auto-fix attempts on a single task:
193
193
  Check if auto mode is active at executor start:
194
194
 
195
195
  ```bash
196
- AUTO_CFG=$(node ~/.claude/qgsd/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
196
+ AUTO_CFG=$(node ~/.claude/nf/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
197
197
  ```
198
198
 
199
199
  Store the result for checkpoint handling below.
@@ -206,7 +206,7 @@ Store the result for checkpoint handling below.
206
206
  Before any `checkpoint:human-verify`, ensure verification environment is ready. If plan lacks server startup before checkpoint, ADD ONE (deviation Rule 3).
207
207
 
208
208
  For full automation-first patterns, server lifecycle, CLI handling:
209
- **See @~/.claude/qgsd/references/checkpoints.md**
209
+ **See @~/.claude/nf/references/checkpoints.md**
210
210
 
211
211
  **Quick reference:** Users NEVER run CLI commands. Users ONLY visit URLs, click UI, evaluate visuals, provide secrets. Claude does all automation.
212
212
 
@@ -329,7 +329,7 @@ After all tasks complete, create `{phase}-{plan}-SUMMARY.md` at `.planning/phase
329
329
 
330
330
  **ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
331
331
 
332
- **Use template:** @~/.claude/qgsd/templates/summary.md
332
+ **Use template:** @~/.claude/nf/templates/summary.md
333
333
 
334
334
  **Frontmatter:** phase, plan, subsystem, tags, dependency graph (requires/provides/affects), tech-stack (added/patterns), key-files (created/modified), decisions, metrics (duration, completed date).
335
335
 
@@ -382,34 +382,34 @@ After SUMMARY.md, update STATE.md using gsd-tools:
382
382
 
383
383
  ```bash
384
384
  # Advance plan counter (handles edge cases automatically)
385
- node ~/.claude/qgsd/bin/gsd-tools.cjs state advance-plan
385
+ node ~/.claude/nf/bin/gsd-tools.cjs state advance-plan
386
386
 
387
387
  # Recalculate progress bar from disk state
388
- node ~/.claude/qgsd/bin/gsd-tools.cjs state update-progress
388
+ node ~/.claude/nf/bin/gsd-tools.cjs state update-progress
389
389
 
390
390
  # Record execution metrics
391
- node ~/.claude/qgsd/bin/gsd-tools.cjs state record-metric \
391
+ node ~/.claude/nf/bin/gsd-tools.cjs state record-metric \
392
392
  --phase "${PHASE}" --plan "${PLAN}" --duration "${DURATION}" \
393
393
  --tasks "${TASK_COUNT}" --files "${FILE_COUNT}"
394
394
 
395
395
  # Add decisions (extract from SUMMARY.md key-decisions)
396
396
  for decision in "${DECISIONS[@]}"; do
397
- node ~/.claude/qgsd/bin/gsd-tools.cjs state add-decision \
397
+ node ~/.claude/nf/bin/gsd-tools.cjs state add-decision \
398
398
  --phase "${PHASE}" --summary "${decision}"
399
399
  done
400
400
 
401
401
  # Update session info
402
- node ~/.claude/qgsd/bin/gsd-tools.cjs state record-session \
402
+ node ~/.claude/nf/bin/gsd-tools.cjs state record-session \
403
403
  --stopped-at "Completed ${PHASE}-${PLAN}-PLAN.md"
404
404
  ```
405
405
 
406
406
  ```bash
407
407
  # Update ROADMAP.md progress for this phase (plan counts, status)
408
- node ~/.claude/qgsd/bin/gsd-tools.cjs roadmap update-plan-progress "${PHASE_NUMBER}"
408
+ node ~/.claude/nf/bin/gsd-tools.cjs roadmap update-plan-progress "${PHASE_NUMBER}"
409
409
 
410
410
  # Mark completed requirements from PLAN.md frontmatter
411
411
  # Extract the `requirements` array from the plan's frontmatter, then mark each complete
412
- node ~/.claude/qgsd/bin/gsd-tools.cjs requirements mark-complete ${REQ_IDS}
412
+ node ~/.claude/nf/bin/gsd-tools.cjs requirements mark-complete ${REQ_IDS}
413
413
  ```
414
414
 
415
415
  **Requirement IDs:** Extract from the PLAN.md frontmatter `requirements:` field (e.g., `requirements: [AUTH-01, AUTH-02]`). Pass all IDs to `requirements mark-complete`. If the plan has no requirements field, skip this step.
@@ -427,13 +427,13 @@ node ~/.claude/qgsd/bin/gsd-tools.cjs requirements mark-complete ${REQ_IDS}
427
427
 
428
428
  **For blockers found during execution:**
429
429
  ```bash
430
- node ~/.claude/qgsd/bin/gsd-tools.cjs state add-blocker "Blocker description"
430
+ node ~/.claude/nf/bin/gsd-tools.cjs state add-blocker "Blocker description"
431
431
  ```
432
432
  </state_updates>
433
433
 
434
434
  <final_commit>
435
435
  ```bash
436
- node ~/.claude/qgsd/bin/gsd-tools.cjs commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md .planning/REQUIREMENTS.md
436
+ node ~/.claude/nf/bin/gsd-tools.cjs commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md .planning/REQUIREMENTS.md
437
437
  ```
438
438
 
439
439
  Separate from per-task commits — captures execution results only.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-integration-checker
2
+ name: nf-integration-checker
3
3
  description: Verifies cross-phase integration and E2E flows. Checks that phases connect properly and user workflows complete end-to-end.
4
4
  tools: Read, Bash, Grep, Glob
5
5
  color: blue
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: qgsd-phase-researcher
3
- description: Researches how to implement a phase before planning. Produces RESEARCH.md consumed by qgsd-planner. Spawned by /qgsd:plan-phase orchestrator.
2
+ name: nf-phase-researcher
3
+ description: Researches how to implement a phase before planning. Produces RESEARCH.md consumed by nf-planner. Spawned by /qgsd:plan-phase orchestrator.
4
4
  tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*
5
5
  color: cyan
6
6
  ---
@@ -49,7 +49,7 @@ If CONTEXT.md exists, it constrains your research scope. Don't explore alternati
49
49
  </upstream_input>
50
50
 
51
51
  <downstream_consumer>
52
- Your RESEARCH.md is consumed by `qgsd-planner`:
52
+ Your RESEARCH.md is consumed by `nf-planner`:
53
53
 
54
54
  | Section | How Planner Uses It |
55
55
  |---------|---------------------|
@@ -120,7 +120,7 @@ When researching "best library for X": find what the ecosystem actually uses, do
120
120
  Check `brave_search` from init context. If `true`, use Brave Search for higher quality results:
121
121
 
122
122
  ```bash
123
- node ~/.claude/qgsd/bin/gsd-tools.cjs websearch "your query" --limit 10
123
+ node ~/.claude/nf/bin/gsd-tools.cjs websearch "your query" --limit 10
124
124
  ```
125
125
 
126
126
  **Options:**
@@ -330,7 +330,7 @@ Orchestrator provides: phase number/name, description/goal, requirements, constr
330
330
 
331
331
  Load phase context using init command:
332
332
  ```bash
333
- INIT=$(node ~/.claude/qgsd/bin/gsd-tools.cjs init phase-op "${PHASE}")
333
+ INIT=$(node ~/.claude/nf/bin/gsd-tools.cjs init phase-op "${PHASE}")
334
334
  ```
335
335
 
336
336
  Extract from init JSON: `phase_dir`, `padded_phase`, `phase_number`, `commit_docs`.
@@ -417,7 +417,7 @@ Write to: `$PHASE_DIR/$PADDED_PHASE-RESEARCH.md`
417
417
  ## Step 6: Commit Research (optional)
418
418
 
419
419
  ```bash
420
- node ~/.claude/qgsd/bin/gsd-tools.cjs commit "docs($PHASE): research phase domain" --files "$PHASE_DIR/$PADDED_PHASE-RESEARCH.md"
420
+ node ~/.claude/nf/bin/gsd-tools.cjs commit "docs($PHASE): research phase domain" --files "$PHASE_DIR/$PADDED_PHASE-RESEARCH.md"
421
421
  ```
422
422
 
423
423
  ## Step 7: Return Structured Result
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-plan-checker
2
+ name: nf-plan-checker
3
3
  description: Verifies plans will achieve phase goal before execution. Goal-backward analysis of plan quality. Spawned by /qgsd:plan-phase orchestrator.
4
4
  tools: Read, Bash, Glob, Grep
5
5
  color: green
@@ -72,8 +72,8 @@ Goal-backward verification works backwards from outcome:
72
72
  Then verify each level against the actual plan files.
73
73
 
74
74
  **The difference:**
75
- - `qgsd-verifier`: Verifies code DID achieve goal (after execution)
76
- - `qgsd-plan-checker`: Verifies plans WILL achieve goal (before execution)
75
+ - `nf-verifier`: Verifies code DID achieve goal (after execution)
76
+ - `nf-plan-checker`: Verifies plans WILL achieve goal (before execution)
77
77
 
78
78
  Same methodology (goal-backward), different timing, different subject matter.
79
79
  </core_principle>
@@ -320,7 +320,7 @@ issue:
320
320
 
321
321
  Load phase operation context:
322
322
  ```bash
323
- INIT=$(node ~/.claude/qgsd/bin/gsd-tools.cjs init phase-op "${PHASE_ARG}")
323
+ INIT=$(node ~/.claude/nf/bin/gsd-tools.cjs init phase-op "${PHASE_ARG}")
324
324
  ```
325
325
 
326
326
  Extract from init JSON: `phase_dir`, `phase_number`, `has_plans`, `plan_count`.
@@ -329,7 +329,7 @@ Orchestrator provides CONTEXT.md content in the verification prompt. If provided
329
329
 
330
330
  ```bash
331
331
  ls "$phase_dir"/*-PLAN.md 2>/dev/null
332
- node ~/.claude/qgsd/bin/gsd-tools.cjs roadmap get-phase "$phase_number"
332
+ node ~/.claude/nf/bin/gsd-tools.cjs roadmap get-phase "$phase_number"
333
333
  ls "$phase_dir"/*-BRIEF.md 2>/dev/null
334
334
  ```
335
335
 
@@ -342,7 +342,7 @@ Use gsd-tools to validate plan structure:
342
342
  ```bash
343
343
  for plan in "$PHASE_DIR"/*-PLAN.md; do
344
344
  echo "=== $plan ==="
345
- PLAN_STRUCTURE=$(node ~/.claude/qgsd/bin/gsd-tools.cjs verify plan-structure "$plan")
345
+ PLAN_STRUCTURE=$(node ~/.claude/nf/bin/gsd-tools.cjs verify plan-structure "$plan")
346
346
  echo "$PLAN_STRUCTURE"
347
347
  done
348
348
  ```
@@ -360,7 +360,7 @@ Map errors/warnings to verification dimensions:
360
360
  Extract must_haves from each plan using gsd-tools:
361
361
 
362
362
  ```bash
363
- MUST_HAVES=$(node ~/.claude/qgsd/bin/gsd-tools.cjs frontmatter get "$PLAN_PATH" --field must_haves)
363
+ MUST_HAVES=$(node ~/.claude/nf/bin/gsd-tools.cjs frontmatter get "$PLAN_PATH" --field must_haves)
364
364
  ```
365
365
 
366
366
  Returns JSON: `{ truths: [...], artifacts: [...], key_links: [...] }`
@@ -403,7 +403,7 @@ For each requirement: find covering task(s), verify action is specific, flag gap
403
403
  Use gsd-tools plan-structure verification (already run in Step 2):
404
404
 
405
405
  ```bash
406
- PLAN_STRUCTURE=$(node ~/.claude/qgsd/bin/gsd-tools.cjs verify plan-structure "$PLAN_PATH")
406
+ PLAN_STRUCTURE=$(node ~/.claude/nf/bin/gsd-tools.cjs verify plan-structure "$PLAN_PATH")
407
407
  ```
408
408
 
409
409
  The `tasks` array in the result shows each task's completeness:
@@ -603,7 +603,7 @@ Plans verified. Run `/qgsd:execute-phase {phase}` to proceed.
603
603
 
604
604
  <anti_patterns>
605
605
 
606
- **DO NOT** check code existence — that's qgsd-verifier's job. You verify plans, not codebase.
606
+ **DO NOT** check code existence — that's nf-verifier's job. You verify plans, not codebase.
607
607
 
608
608
  **DO NOT** run the application. Static plan analysis only.
609
609
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-planner
2
+ name: nf-planner
3
3
  description: Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification. Spawned by /qgsd:plan-phase orchestrator.
4
4
  tools: Read, Write, Bash, Glob, Grep, WebFetch, mcp__context7__*
5
5
  color: green
@@ -380,8 +380,8 @@ Output: [Artifacts created]
380
380
  </objective>
381
381
 
382
382
  <execution_context>
383
- @~/.claude/qgsd/workflows/execute-plan.md
384
- @~/.claude/qgsd/templates/summary.md
383
+ @~/.claude/nf/workflows/execute-plan.md
384
+ @~/.claude/nf/templates/summary.md
385
385
  </execution_context>
386
386
 
387
387
  <context>
@@ -817,7 +817,7 @@ Group by plan, dimension, severity.
817
817
  ### Step 6: Commit
818
818
 
819
819
  ```bash
820
- node ~/.claude/qgsd/bin/gsd-tools.cjs commit "fix($PHASE): revise plans based on checker feedback" --files .planning/phases/$PHASE-*/$PHASE-*-PLAN.md
820
+ node ~/.claude/nf/bin/gsd-tools.cjs commit "fix($PHASE): revise plans based on checker feedback" --files .planning/phases/$PHASE-*/$PHASE-*-PLAN.md
821
821
  ```
822
822
 
823
823
  ### Step 7: Return Revision Summary
@@ -856,7 +856,7 @@ node ~/.claude/qgsd/bin/gsd-tools.cjs commit "fix($PHASE): revise plans based on
856
856
  Load planning context:
857
857
 
858
858
  ```bash
859
- INIT=$(node ~/.claude/qgsd/bin/gsd-tools.cjs init plan-phase "${PHASE}")
859
+ INIT=$(node ~/.claude/nf/bin/gsd-tools.cjs init plan-phase "${PHASE}")
860
860
  ```
861
861
 
862
862
  Extract from init JSON: `planner_model`, `researcher_model`, `checker_model`, `commit_docs`, `research_enabled`, `phase_dir`, `phase_number`, `has_research`, `has_context`.
@@ -912,7 +912,7 @@ Apply discovery level protocol (see discovery_levels section).
912
912
 
913
913
  **Step 1 — Generate digest index:**
914
914
  ```bash
915
- node ~/.claude/qgsd/bin/gsd-tools.cjs history-digest
915
+ node ~/.claude/nf/bin/gsd-tools.cjs history-digest
916
916
  ```
917
917
 
918
918
  **Step 2 — Select relevant phases (typically 2-4):**
@@ -1030,7 +1030,7 @@ Include all frontmatter fields.
1030
1030
  Validate each created PLAN.md using gsd-tools:
1031
1031
 
1032
1032
  ```bash
1033
- VALID=$(node ~/.claude/qgsd/bin/gsd-tools.cjs frontmatter validate "$PLAN_PATH" --schema plan)
1033
+ VALID=$(node ~/.claude/nf/bin/gsd-tools.cjs frontmatter validate "$PLAN_PATH" --schema plan)
1034
1034
  ```
1035
1035
 
1036
1036
  Returns JSON: `{ valid, missing, present, schema }`
@@ -1043,7 +1043,7 @@ Required plan frontmatter fields:
1043
1043
  Also validate plan structure:
1044
1044
 
1045
1045
  ```bash
1046
- STRUCTURE=$(node ~/.claude/qgsd/bin/gsd-tools.cjs verify plan-structure "$PLAN_PATH")
1046
+ STRUCTURE=$(node ~/.claude/nf/bin/gsd-tools.cjs verify plan-structure "$PLAN_PATH")
1047
1047
  ```
1048
1048
 
1049
1049
  Returns JSON: `{ valid, errors, warnings, task_count, tasks }`
@@ -1080,7 +1080,7 @@ Plans:
1080
1080
 
1081
1081
  <step name="git_commit">
1082
1082
  ```bash
1083
- node ~/.claude/qgsd/bin/gsd-tools.cjs commit "docs($PHASE): create phase plan" --files .planning/phases/$PHASE-*/$PHASE-*-PLAN.md .planning/ROADMAP.md
1083
+ node ~/.claude/nf/bin/gsd-tools.cjs commit "docs($PHASE): create phase plan" --files .planning/phases/$PHASE-*/$PHASE-*-PLAN.md .planning/ROADMAP.md
1084
1084
  ```
1085
1085
  </step>
1086
1086
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-project-researcher
2
+ name: nf-project-researcher
3
3
  description: Researches domain ecosystem before roadmap creation. Produces files in .planning/research/ consumed during roadmap creation. Spawned by /qgsd:new-project or /qgsd:new-milestone orchestrators.
4
4
  tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*
5
5
  color: cyan
@@ -99,7 +99,7 @@ Always include current year. Use multiple query variations. Mark WebSearch-only
99
99
  Check `brave_search` from orchestrator context. If `true`, use Brave Search for higher quality results:
100
100
 
101
101
  ```bash
102
- node ~/.claude/qgsd/bin/gsd-tools.cjs websearch "your query" --limit 10
102
+ node ~/.claude/nf/bin/gsd-tools.cjs websearch "your query" --limit 10
103
103
  ```
104
104
 
105
105
  **Options:**
@@ -1,15 +1,15 @@
1
- <!-- DEPRECATED: This agent is superseded by direct inline dispatch in commands/qgsd/quorum.md as of quick-103. The orchestrator Task-spawn indirection is no longer needed — quorum.md now contains the full R3 protocol inline (with qgsd-quorum-slot-worker for per-slot dispatch). Retained for reference only. Do not spawn this agent. -->
1
+ <!-- DEPRECATED: This agent is superseded by direct inline dispatch in commands/nf/quorum.md as of quick-103. The orchestrator Task-spawn indirection is no longer needed — quorum.md now contains the full R3 protocol inline (with nf-quorum-slot-worker for per-slot dispatch). Retained for reference only. Do not spawn this agent. -->
2
2
  ---
3
- name: qgsd-quorum-orchestrator
3
+ name: nf-quorum-orchestrator
4
4
  description: >
5
5
  DEPRECATED — do not spawn. Superseded by direct inline dispatch in
6
- commands/qgsd/quorum.md as of quick-103. Retained for reference only.
6
+ commands/nf/quorum.md as of quick-103. Retained for reference only.
7
7
  tools: Read, Write, Bash, Task, Glob, Grep
8
8
  color: purple
9
9
  ---
10
10
 
11
11
  <role>
12
- You are the QGSD quorum orchestrator. When invoked, execute the full R3 quorum protocol
12
+ You are the nForma quorum orchestrator. When invoked, execute the full R3 quorum protocol
13
13
  for the question or bundle passed in `$ARGUMENTS`.
14
14
 
15
15
  **SEQUENTIAL CALLS ONLY — NO SIBLING TOOL CALLS.**
@@ -55,7 +55,7 @@ These two variables (`$ARTIFACT_PATH`, `$REPO_DIR`) are available to all subsequ
55
55
  Run before any model calls:
56
56
 
57
57
  ```bash
58
- node "$HOME/.claude/qgsd-bin/check-provider-health.cjs" --json
58
+ node "$HOME/.claude/nf-bin/check-provider-health.cjs" --json
59
59
  ```
60
60
 
61
61
  Parse the JSON output. Build:
@@ -66,12 +66,12 @@ Parse the JSON output. Build:
66
66
 
67
67
  Any server with `available: false` → mark UNAVAIL immediately — skip inference calls entirely.
68
68
 
69
- 3. **`$QUORUM_ACTIVE`**: read from `~/.claude/qgsd.json` (project config takes precedence):
69
+ 3. **`$QUORUM_ACTIVE`**: read from `~/.claude/nf.json` (project config takes precedence):
70
70
  ```bash
71
71
  node -e "
72
72
  const fs = require('fs'), os = require('os'), path = require('path');
73
- const globalCfg = path.join(os.homedir(), '.claude', 'qgsd.json');
74
- const projCfg = path.join(process.cwd(), '.claude', 'qgsd.json');
73
+ const globalCfg = path.join(os.homedir(), '.claude', 'nf.json');
74
+ const projCfg = path.join(process.cwd(), '.claude', 'nf.json');
75
75
  let cfg = {};
76
76
  for (const f of [globalCfg, projCfg]) {
77
77
  try { Object.assign(cfg, JSON.parse(fs.readFileSync(f, 'utf8'))); } catch(_){}
@@ -87,12 +87,12 @@ A server in `$QUORUM_ACTIVE` but absent from `$CLAUDE_MCP_SERVERS` = skip silent
87
87
  - For each server with `available: false`, log: `Pre-flight skip: <serverName> (<providerName> DOWN)`
88
88
  - Remove these from the working list for all subsequent steps.
89
89
 
90
- Read `preferSub` and `agent_config` from qgsd.json (project config takes precedence):
90
+ Read `preferSub` and `agent_config` from nf.json (project config takes precedence):
91
91
  ```bash
92
92
  node -e "
93
93
  const fs = require('fs'), os = require('os'), path = require('path');
94
- const globalCfg = path.join(os.homedir(), '.claude', 'qgsd.json');
95
- const projCfg = path.join(process.cwd(), '.claude', 'qgsd.json');
94
+ const globalCfg = path.join(os.homedir(), '.claude', 'nf.json');
95
+ const projCfg = path.join(process.cwd(), '.claude', 'nf.json');
96
96
  let cfg = {};
97
97
  for (const f of [globalCfg, projCfg]) {
98
98
  try { Object.assign(cfg, JSON.parse(fs.readFileSync(f, 'utf8'))); } catch(_) {}
@@ -109,12 +109,12 @@ Store result as `$PREFER_SUB_CONFIG`.
109
109
  - **Shuffle within groups:** Shuffle the sub group and the api group independently. Final order when preferSub=true: shuffle(sub), shuffle(api). When preferSub=false: shuffle all slots.
110
110
  - Log: `Active slots: <slot1>, <slot2>, ...`
111
111
 
112
- **min_quorum_size check:** Read from `~/.claude/qgsd.json` (project config takes precedence; default: 3 if absent):
112
+ **min_quorum_size check:** Read from `~/.claude/nf.json` (project config takes precedence; default: 3 if absent):
113
113
  ```bash
114
114
  node -e "
115
115
  const fs = require('fs'), os = require('os'), path = require('path');
116
- const globalCfg = path.join(os.homedir(), '.claude', 'qgsd.json');
117
- const projCfg = path.join(process.cwd(), '.claude', 'qgsd.json');
116
+ const globalCfg = path.join(os.homedir(), '.claude', 'nf.json');
117
+ const projCfg = path.join(process.cwd(), '.claude', 'nf.json');
118
118
  let cfg = {};
119
119
  for (const f of [globalCfg, projCfg]) {
120
120
  try { Object.assign(cfg, JSON.parse(fs.readFileSync(f, 'utf8'))); } catch(_){}
@@ -136,7 +136,7 @@ If `availableCount < min_quorum_size`:
136
136
  **Availability cache check:** After building the provider slot list but before the min_quorum_size check, read the scoreboard availability data:
137
137
 
138
138
  ```bash
139
- node "$HOME/.claude/qgsd-bin/update-scoreboard.cjs" get-availability \
139
+ node "$HOME/.claude/nf-bin/update-scoreboard.cjs" get-availability \
140
140
  --scoreboard .planning/quorum-scoreboard.json 2>/dev/null || echo '{}'
141
141
  ```
142
142
 
@@ -171,7 +171,7 @@ const fs = require('fs'), path = require('path'), os = require('os');
171
171
 
172
172
  // Find providers.json
173
173
  const searchPaths = [
174
- path.join(os.homedir(), '.claude', 'qgsd-bin', 'providers.json'),
174
+ path.join(os.homedir(), '.claude', 'nf-bin', 'providers.json'),
175
175
  ];
176
176
  try {
177
177
  const cj = JSON.parse(fs.readFileSync(path.join(os.homedir(), '.claude.json'), 'utf8'));
@@ -186,8 +186,8 @@ for (const p of searchPaths) {
186
186
  }
187
187
 
188
188
  // Read quorum_active
189
- const globalCfg = path.join(os.homedir(), '.claude', 'qgsd.json');
190
- const projCfg = path.join(process.cwd(), '.claude', 'qgsd.json');
189
+ const globalCfg = path.join(os.homedir(), '.claude', 'nf.json');
190
+ const projCfg = path.join(process.cwd(), '.claude', 'nf.json');
191
191
  let cfg = {};
192
192
  for (const f of [globalCfg, projCfg]) {
193
193
  try { Object.assign(cfg, JSON.parse(fs.readFileSync(f, 'utf8'))); } catch(_) {}
@@ -206,7 +206,7 @@ console.log(JSON.stringify(team));
206
206
  Detect Claude model ID: `CLAUDE_MODEL` env → `ANTHROPIC_MODEL` env → session model from context.
207
207
 
208
208
  ```bash
209
- node "$HOME/.claude/qgsd-bin/update-scoreboard.cjs" init-team \
209
+ node "$HOME/.claude/nf-bin/update-scoreboard.cjs" init-team \
210
210
  --claude-model "<claude_model_id>" \
211
211
  --team '<TEAM_JSON>'
212
212
  ```
@@ -220,12 +220,12 @@ node "$HOME/.claude/qgsd-bin/update-scoreboard.cjs" init-team \
220
220
  ### Parse question
221
221
 
222
222
  The question is `$ARGUMENTS`. If empty or too short, stop with:
223
- `"No question provided. Pass question as: Task(subagent_type=qgsd-quorum-orchestrator, prompt='<question>')"`
223
+ `"No question provided. Pass question as: Task(subagent_type=nf-quorum-orchestrator, prompt='<question>')"`
224
224
 
225
225
  Display:
226
226
  ```
227
227
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
228
- QGSD ► QUORUM: Mode A — Pure Question
228
+ nForma ► QUORUM: Mode A — Pure Question
229
229
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
230
230
 
231
231
  Question: [question]
@@ -256,7 +256,7 @@ $ALL_ROUND_RESULTS = [] (accumulates results across all rounds for scoreboard)
256
256
  Display before dispatching each round:
257
257
  ```
258
258
  ─────────────────────────────────────────────
259
- QGSD ► QUORUM Round $CURRENT_ROUND / up to $MAX_ROUNDS
259
+ nForma ► QUORUM Round $CURRENT_ROUND / up to $MAX_ROUNDS
260
260
  ─────────────────────────────────────────────
261
261
  ```
262
262
 
@@ -266,7 +266,7 @@ All workers for this round are dispatched as parallel sibling Task calls in one
266
266
 
267
267
  ```
268
268
  Task(
269
- subagent_type="qgsd-quorum-slot-worker",
269
+ subagent_type="nf-quorum-slot-worker",
270
270
  description="<slotName> quorum R<$CURRENT_ROUND>",
271
271
  prompt="""
272
272
  slot: <slotName>
@@ -290,7 +290,7 @@ Collect all worker result blocks → store as `$ROUND_RESULTS`. Append to `$ALL_
290
290
 
291
291
  For each result where `verdict: UNAVAIL`:
292
292
  ```bash
293
- node "$HOME/.claude/qgsd-bin/update-scoreboard.cjs" set-availability \
293
+ node "$HOME/.claude/nf-bin/update-scoreboard.cjs" set-availability \
294
294
  --slot <slot> \
295
295
  --message "<unavail_message text>" \
296
296
  --scoreboard .planning/quorum-scoreboard.json
@@ -348,7 +348,7 @@ If `$CONSENSUS_REACHED`:
348
348
 
349
349
  ```
350
350
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
351
- QGSD ► QUORUM CONSENSUS REACHED
351
+ nForma ► QUORUM CONSENSUS REACHED
352
352
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
353
353
 
354
354
  Question: [question]
@@ -391,7 +391,7 @@ fs.writeFileSync(
391
391
 
392
392
  Then apply all votes in one transaction per round:
393
393
  ```bash
394
- node "$HOME/.claude/qgsd-bin/update-scoreboard.cjs" merge-wave \
394
+ node "$HOME/.claude/nf-bin/update-scoreboard.cjs" merge-wave \
395
395
  --dir .planning/scoreboard-tmp \
396
396
  --task "<taskLabel>" \
397
397
  --round <round> \
@@ -413,7 +413,7 @@ If loop exhausted without `$CONSENSUS_REACHED`:
413
413
 
414
414
  ```
415
415
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
416
- QGSD ► QUORUM ESCALATING — NO CONSENSUS AFTER 10 ROUNDS
416
+ nForma ► QUORUM ESCALATING — NO CONSENSUS AFTER 10 ROUNDS
417
417
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
418
418
 
419
419
  Question: [question]
@@ -439,7 +439,7 @@ Update scoreboard using same merge-wave pattern as Consensus output above.
439
439
  Extract command(s) from `$ARGUMENTS`. Display:
440
440
  ```
441
441
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
442
- QGSD ► QUORUM: Mode B — Execution + Trace Review
442
+ nForma ► QUORUM: Mode B — Execution + Trace Review
443
443
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
444
444
 
445
445
  Question: [original question]
@@ -478,7 +478,7 @@ $ALL_ROUND_RESULTS = []
478
478
 
479
479
  ```
480
480
  ─────────────────────────────────────────────
481
- QGSD ► QUORUM Round $CURRENT_ROUND / up to $MAX_ROUNDS
481
+ nForma ► QUORUM Round $CURRENT_ROUND / up to $MAX_ROUNDS
482
482
  ─────────────────────────────────────────────
483
483
  ```
484
484
 
@@ -486,7 +486,7 @@ $ALL_ROUND_RESULTS = []
486
486
 
487
487
  ```
488
488
  Task(
489
- subagent_type="qgsd-quorum-slot-worker",
489
+ subagent_type="nf-quorum-slot-worker",
490
490
  description="<slotName> quorum R<$CURRENT_ROUND>",
491
491
  prompt="""
492
492
  slot: <slotName>
@@ -512,7 +512,7 @@ Collect all worker result blocks → store as `$ROUND_RESULTS`. Append to `$ALL_
512
512
 
513
513
  For each result where `verdict: UNAVAIL`:
514
514
  ```bash
515
- node "$HOME/.claude/qgsd-bin/update-scoreboard.cjs" set-availability \
515
+ node "$HOME/.claude/nf-bin/update-scoreboard.cjs" set-availability \
516
516
  --slot <slot> \
517
517
  --message "<unavail_message text>" \
518
518
  --scoreboard .planning/quorum-scoreboard.json
@@ -573,7 +573,7 @@ Parse final round results for verdicts. Display:
573
573
 
574
574
  ```
575
575
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
576
- QGSD ► QUORUM VERDICT
576
+ nForma ► QUORUM VERDICT
577
577
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
578
578
 
579
579
  ┌──────────────┬──────────────┬──────────────────────────────────────────┐
@@ -609,7 +609,7 @@ Write per-slot temp vote files to `.planning/scoreboard-tmp/` and apply via merg
609
609
 
610
610
  ```
611
611
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
612
- QGSD ► QUORUM ESCALATING — NO CONSENSUS AFTER 10 ROUNDS
612
+ nForma ► QUORUM ESCALATING — NO CONSENSUS AFTER 10 ROUNDS
613
613
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
614
614
 
615
615
  Question: [original question]
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-quorum-slot-worker
2
+ name: nf-quorum-slot-worker
3
3
  description: >
4
4
  Thin passthrough — extracts arguments, calls quorum-slot-dispatch.cjs, emits output verbatim.
5
5
  No prompt construction, no output parsing, no file reads. One Bash call per dispatch.
@@ -7,7 +7,7 @@ tools: Bash
7
7
  color: blue
8
8
  ---
9
9
 
10
- You are a QGSD quorum slot worker. Spawned as a parallel Task.
10
+ You are a nForma quorum slot worker. Spawned as a parallel Task.
11
11
  Your job: extract args from $ARGUMENTS, call quorum-slot-dispatch.cjs, emit its stdout verbatim.
12
12
  Do NOT modify, summarize, or reformat the script output. It IS the structured result block.
13
13
 
@@ -30,7 +30,7 @@ FLAGS=""; [ -n "$ARTIFACT_PATH" ] && FLAGS="$FLAGS --artifact-path $ARTIFACT_PAT
30
30
  [ -s "$TRACES_FILE" ] && FLAGS="$FLAGS --traces-file $TRACES_FILE"
31
31
  [ "$REQUEST_IMPROVEMENTS" = "true" ] && FLAGS="$FLAGS --request-improvements"
32
32
  BASH_TIMEOUT=$(( TIMEOUT_MS + 30000 > 120000 ? 120000 : TIMEOUT_MS + 30000 ))
33
- node "$HOME/.claude/qgsd-bin/quorum-slot-dispatch.cjs" \
33
+ node "$HOME/.claude/nf-bin/quorum-slot-dispatch.cjs" \
34
34
  --slot "$SLOT" --round "$ROUND" --timeout "$TIMEOUT_MS" --cwd "$REPO_DIR" \
35
35
  --mode "$MODE" --question "$QUESTION" $FLAGS
36
36
  rm -f "$PRIOR_FILE" "$TRACES_FILE"
@@ -1,13 +1,13 @@
1
- <!-- DEPRECATED: This agent is superseded by inline synthesis in qgsd-quorum-orchestrator.md as of quick-101. The orchestrator now synthesizes results itself without spawning a separate synthesizer Task. This file is kept for reference only. -->
1
+ <!-- DEPRECATED: This agent is superseded by inline synthesis in nf-quorum-orchestrator.md as of quick-101. The orchestrator now synthesizes results itself without spawning a separate synthesizer Task. This file is kept for reference only. -->
2
2
  ---
3
- name: qgsd-quorum-synthesizer
3
+ name: nf-quorum-synthesizer
4
4
  description: Quorum barrier synthesizer — spawned once per round after all worker Tasks complete. Reads all worker result blocks, checks consensus, and either emits a final verdict or builds the cross-pollination context bundle for the next round.
5
5
  tools: Read
6
6
  color: purple
7
7
  ---
8
8
 
9
9
  <role>
10
- You are the QGSD quorum barrier synthesizer. You are spawned once per round by the orchestrator, after all parallel worker Tasks have completed. You receive all worker result blocks in $ARGUMENTS and produce either a final consensus verdict or a deliberation context bundle for the next wave.
10
+ You are the nForma quorum barrier synthesizer. You are spawned once per round by the orchestrator, after all parallel worker Tasks have completed. You receive all worker result blocks in $ARGUMENTS and produce either a final consensus verdict or a deliberation context bundle for the next wave.
11
11
 
12
12
  You do NOT call any external tools. You do NOT write any files. You do NOT run Bash commands. You use `Read` only if you need to inspect a file referenced in the worker results (e.g. artifact_path).
13
13
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: qgsd-quorum-test-worker
2
+ name: nf-quorum-test-worker
3
3
  description: Evaluates a test execution bundle for genuineness and quality. Receives full stdout, stderr, test source, and exit metadata. Returns structured PASS/BLOCK/REVIEW-NEEDED verdict.
4
4
  tools: Read
5
5
  color: cyan