You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: fda_sdlc enxuto — repair loop in-run, review só com suite verde, planner condicional e docs por milestone (#47)
O runner default do /goal era o único FDA testado sem loop de reparo e sem
tracker de progresso: cada suite vermelha virava recovery por resume do
orquestrador (re-retomando todas as sessões de agente na largura máxima), e o
review rodava mesmo com teste vermelho — a mesma classe de bug do audit do /qa
(caso de US$13/10,5M tokens). Medido em projeto real: 679M tokens em 31 runs de
fda_sdlc, com um run de 16 ciclos de build (112M/US$79).
- Repair loop in-run portado do fda_build_test (createRepairTracker, test_1..n,
fix_i com a regra repairExecuted; NO_PROGRESS/ATTEMPT_CAP no lugar de resume).
- review atrás de test.passed, com fase gratuita review_skip (nome distinto —
resume pós-fix roda o review real), espelhando o audit_skip do /qa.
- Planner condicional (sdlc.plan: auto|always|never): brief autocontido do
sequencer pula o planner; Kind: foundation/kit e Planning: full sempre planejam.
- Documentação por milestone (sdlc.document: per_milestone default): o /goal
drena docs com UM fda_document na virada de milestone; per_task mantém o
comportamento antigo.
- builderDeclaredFiles extraído para modules/utils.mjs (5 cópias viram 1, com
pattern por runner).
- Config template, goal.md, cookbooks (run_fda, harness_bridge) e DOCS.md §9
atualizados; testes novos em test/fia-sdlc-repair.test.js.
Claude-Session: https://claude.ai/code/session_01NPYaKxNaVRhPumKbawFNT3
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|`fda_quality`| none | request → *quality*| Lint + typecheck + build + test with no agent — works with nothing logged in. |
1148
1148
|`fda_plan_build_test`| planner, builder (+reviewer for the UI gate) | request → plan → build → *test* → up to `stop.attempt_cap` × (fix → *test*), default 3, cut short by `no_progress` → *spec_coverage* → checklist gate → UI gate → *holdout* → *commit*| The task workhorse (`/task` uses it via the sequencer). |
1149
-
|`fda_sdlc`| planner, builder, reviewer, documenter | request → plan → build → *test* (single run, no fix loop) → *spec_coverage* → checklist gate → UI gate → *holdout* → review → *commit_code* → document → *commit_docs*| Full cycle with an independent review — the review runs even when tests failed, and acceptance requires green tests AND an approved review. |
1149
+
|`fda_sdlc`| planner, builder, reviewer, documenter | request → plan (or free *plan_skip* when the brief is self-contained — `sdlc.plan: auto`) → build → *test_1* + fix loop (up to `stop.attempt_cap` rounds, same tracker as the siblings) → *spec_coverage* → checklist gate → UI gate → *holdout* → review (green suites only; a red suite records the free *review_skip* instead) → *commit_code* → document (only with `sdlc.document: per_task`; the default `per_milestone` records the free *document_skip* and `/goal` drains docs with one `fda_document` per milestone) → *commit_docs*| Full cycle with an independent review — acceptance requires green tests AND an approved review; a suite still red after the fix rounds ends the run as `attempt_cap` (or `no_progress` when stalled) without paying the reviewer. |
1150
1150
|`fda_bug`| planner, builder (+reviewer) | request → plan → red_test → *red_check* → build → *test* → fix loop (≤ `stop.attempt_cap`, default 3; `no_progress` ends it early) → gates → *commit*| Defect fixing with a **valid RED** gate: the reproduction test must fail on an assertion BEFORE the fix (passing = "bug not reproduced"; module/syntax/env failures = invalid RED). |
1151
1151
|`fda_quick`| builder | request → build → *quality_1* (lint+typecheck+focal test) → one fix round (by design, not from `stop:`; still red = `attempt_cap`) → *quality_2* → *quicklog* → *commit*| Small guarded changes (`/quick`). Appends the `## Q-NNN` audit entry, then stamps the commit sha into it as a separate one-line commit. |
1152
1152
|`fda_build_test`| builder (+reviewer for the UI gate) | request → build → *test* → up to `stop.attempt_cap` × (fix → *test*), default 3, cut short by `no_progress` → *spec_coverage* → checklist gate → UI gate → *holdout* → *commit*| Like `fda_plan_build_test` but **without the planner** — the brief goes directly to the builder. Saves ~1-2.5M tokens per run when the brief is already autocontained. |
0 commit comments