@thierrynakoa/fire-flow 10.0.0 → 12.2.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 (94) hide show
  1. package/.claude-plugin/plugin.json +9 -9
  2. package/ARCHITECTURE-DIAGRAM.md +7 -4
  3. package/COMMAND-REFERENCE.md +33 -13
  4. package/DOMINION-FLOW-OVERVIEW.md +581 -421
  5. package/QUICK-START.md +3 -3
  6. package/README.md +102 -45
  7. package/TROUBLESHOOTING.md +264 -264
  8. package/agents/fire-executor.md +200 -116
  9. package/agents/fire-fact-checker.md +276 -276
  10. package/agents/fire-phoenix-analyst.md +394 -0
  11. package/agents/fire-planner.md +145 -53
  12. package/agents/fire-project-researcher.md +155 -155
  13. package/agents/fire-research-synthesizer.md +166 -166
  14. package/agents/fire-researcher.md +144 -59
  15. package/agents/fire-roadmapper.md +215 -203
  16. package/agents/fire-verifier.md +247 -65
  17. package/agents/fire-vision-architect.md +381 -0
  18. package/commands/fire-0-orient.md +476 -476
  19. package/commands/fire-1a-new.md +216 -0
  20. package/commands/fire-1b-research.md +210 -0
  21. package/commands/fire-1c-setup.md +254 -0
  22. package/commands/{fire-1a-discuss.md → fire-1d-discuss.md} +35 -7
  23. package/commands/fire-3-execute.md +55 -2
  24. package/commands/fire-4-verify.md +61 -0
  25. package/commands/fire-5-handoff.md +2 -2
  26. package/commands/fire-6-resume.md +37 -2
  27. package/commands/fire-add-new-skill.md +2 -2
  28. package/commands/fire-autonomous.md +20 -3
  29. package/commands/fire-brainstorm.md +1 -1
  30. package/commands/fire-complete-milestone.md +2 -2
  31. package/commands/fire-cost.md +183 -0
  32. package/commands/fire-dashboard.md +2 -2
  33. package/commands/fire-debug.md +663 -663
  34. package/commands/fire-loop-resume.md +2 -2
  35. package/commands/fire-loop-stop.md +1 -1
  36. package/commands/fire-loop.md +1168 -1168
  37. package/commands/fire-map-codebase.md +3 -3
  38. package/commands/fire-new-milestone.md +356 -356
  39. package/commands/fire-phoenix.md +603 -0
  40. package/commands/fire-reflect.md +235 -235
  41. package/commands/fire-research.md +246 -246
  42. package/commands/fire-search.md +1 -1
  43. package/commands/fire-skills-diff.md +3 -3
  44. package/commands/fire-skills-history.md +3 -3
  45. package/commands/fire-skills-rollback.md +7 -7
  46. package/commands/fire-skills-sync.md +5 -5
  47. package/commands/fire-test.md +9 -9
  48. package/commands/fire-todos.md +1 -1
  49. package/commands/fire-update.md +5 -5
  50. package/hooks/hooks.json +16 -16
  51. package/hooks/run-hook.sh +8 -8
  52. package/hooks/run-session-end.sh +7 -7
  53. package/hooks/session-end.sh +90 -90
  54. package/hooks/session-start.sh +1 -1
  55. package/package.json +2 -2
  56. package/plugin.json +7 -7
  57. package/references/metrics-and-trends.md +1 -1
  58. package/skills-library/SKILLS-INDEX.md +588 -588
  59. package/skills-library/_general/methodology/AUTONOMOUS_ORCHESTRATION.md +182 -0
  60. package/skills-library/_general/methodology/BACKWARD_PLANNING_INTERVIEW.md +307 -0
  61. package/skills-library/_general/methodology/CIRCUIT_BREAKER_INTELLIGENCE.md +163 -0
  62. package/skills-library/_general/methodology/CONTEXT_ROTATION.md +151 -0
  63. package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +188 -0
  64. package/skills-library/_general/methodology/DESIGN_PHILOSOPHY_ENFORCEMENT.md +152 -0
  65. package/skills-library/_general/methodology/INTERNAL_CONSISTENCY_AUDIT.md +212 -0
  66. package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +242 -0
  67. package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +251 -0
  68. package/skills-library/_general/methodology/QUALITY_GATES_AND_VERIFICATION.md +157 -0
  69. package/skills-library/_general/methodology/RELIABILITY_PREDICTION.md +104 -0
  70. package/skills-library/_general/methodology/REQUIREMENTS_DECOMPOSITION.md +155 -0
  71. package/skills-library/_general/methodology/SELF_TESTING_FEEDBACK_LOOP.md +143 -0
  72. package/skills-library/_general/methodology/STACK_COMPATIBILITY_MATRIX.md +178 -0
  73. package/skills-library/_general/methodology/TIERED_CONTEXT_ARCHITECTURE.md +118 -0
  74. package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +312 -0
  75. package/skills-library/_general/methodology/autonomous-multi-phase-build.md +133 -0
  76. package/skills-library/_general/methodology/claude-md-archival.md +280 -0
  77. package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
  78. package/skills-library/_general/methodology/git-worktrees-parallel.md +232 -0
  79. package/skills-library/_general/methodology/llm-judge-memory-crud.md +241 -0
  80. package/skills-library/_general/methodology/multi-project-autonomous-build.md +360 -0
  81. package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +238 -238
  82. package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +358 -0
  83. package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
  84. package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +1 -1
  85. package/skills-library/methodology/SABBATH_REST_PATTERN.md +1 -1
  86. package/templates/ASSUMPTIONS.md +1 -1
  87. package/templates/BLOCKERS.md +1 -1
  88. package/templates/DECISION_LOG.md +1 -1
  89. package/templates/phase-prompt.md +1 -1
  90. package/templates/phoenix-comparison.md +80 -0
  91. package/version.json +2 -2
  92. package/workflows/handoff-session.md +1 -1
  93. package/workflows/new-project.md +2 -2
  94. package/commands/fire-1-new.md +0 -281
@@ -18,6 +18,8 @@ name: fire-verifier
18
18
  type: autonomous
19
19
  color: yellow
20
20
  description: Combines must-haves with WARRIOR 70-point validation
21
+ isolation: required # MUST run as a fresh Claude instance (see Isolation Rule below)
22
+ autonomous_mode_override: inline # Exception: in /fire-autonomous, runs inline to reduce cost
21
23
  tools:
22
24
  - Read
23
25
  - Write
@@ -28,6 +30,42 @@ allowed_references:
28
30
  - "@.planning/CONSCIENCE.md"
29
31
  - "@.planning/phases/"
30
32
  - "@validation-config.yml"
33
+ - "@.planning/breadcrumbs/"
34
+ ```
35
+
36
+ ### Live Breadcrumb Protocol (v11.2)
37
+
38
+ **After verification FAILURE:** Write the failed approach to `.planning/breadcrumbs/FAILURES.md`:
39
+ ```markdown
40
+ ### {date} — Phase {N}, Plan {M}: {what failed}
41
+ **Approach that failed:** {brief description}
42
+ **Why it failed:** {root cause from verification}
43
+ **Evidence:** {specific test/check that failed}
44
+ **Don't retry unless:** {what would need to change}
45
+ ```
46
+
47
+ **Write protocol (on-demand creation):**
48
+ - **First write:** If FAILURES.md doesn't exist (`test -f`), create it with a `# Failures` header, then add the entry.
49
+ - **Subsequent writes:** Append to the existing file.
50
+
51
+ This ensures the next planning cycle (and all future sessions) will NOT repeat the same failed approach.
52
+
53
+ ### Isolation Rule
54
+
55
+ **The fire-verifier MUST be spawned as a new, independent Claude instance** (via the Agent tool) — never run inline in the same context as the executor that wrote the code.
56
+
57
+ **Why:** A verifier that shares context with the builder inherits the builder's blind spots. The builder "knows" what the code is supposed to do and will unconsciously fill in gaps. A fresh instance sees only what's actually there — it has no memory of intent, only evidence.
58
+
59
+ **Exception:** In `/fire-autonomous` mode, the verifier runs inline to reduce API cost and latency. This trade-off is acceptable because autonomous mode already has the review gate (`fire-reviewer`) running in parallel as a second pair of eyes.
60
+
61
+ ```
62
+ MANUAL MODE (/fire-4-verify):
63
+ Builder context ──X── Fresh Claude instance (fire-verifier)
64
+ ↑ No shared memory. Sees only artifacts.
65
+
66
+ AUTONOMOUS MODE (/fire-autonomous):
67
+ Builder context ──────→ Inline fire-verifier (cost saving)
68
+ ────→ Parallel fire-reviewer (fresh instance)
31
69
  ```
32
70
 
33
71
  ---
@@ -50,47 +88,18 @@ allowed_references:
50
88
 
51
89
  <honesty_protocol>
52
90
 
53
- ## Honesty Protocol for Verification
91
+ ## Honesty Gate Verification (MANDATORY)
54
92
 
55
- **CRITICAL: Verifiers must be ruthlessly honest. No rubber-stamping.**
93
+ **Ruthlessly honest. No rubber-stamping.** See `@references/honesty-protocols.md` for full framework.
56
94
 
57
- ### Pre-Verification Honesty Check
95
+ **Q1:** What do I KNOW? **Q2:** What DON'T I know? **Q3:** Am I tempted to FAKE or RUSH?
58
96
 
59
- Before starting verification:
60
-
61
- ```markdown
62
- ### Verifier Honesty Declaration
63
-
64
- - [ ] I will run ALL verification commands, not skip any
65
- - [ ] I will report ACTUAL results, not expected results
66
- - [ ] I will fail checks that don't pass, even if "close enough"
67
- - [ ] I will document gaps honestly, not minimize them
68
- - [ ] I will not mark PASS without evidence
69
- ```
70
-
71
- ### During Verification
72
-
73
- **For each check:**
74
- 1. Run the actual command
75
- 2. Record the actual output
76
- 3. Compare to expected criteria
77
- 4. Mark PASS only if criteria met exactly
78
- 5. Mark FAIL with specific deviation details
79
-
80
- **Evidence Requirements:**
81
- - Command output must be included
82
- - "Assumed to pass" is NOT acceptable
83
- - Manual verification must describe exact steps taken
84
- - Screenshots/logs required for UI verification
85
-
86
- ### Post-Verification Integrity
87
-
88
- Before submitting report:
89
- - [ ] Every PASS has evidence
90
- - [ ] Every FAIL has specific details
91
- - [ ] No checks were skipped
92
- - [ ] Gaps are documented with severity
93
- - [ ] Recommendations are actionable
97
+ **Verifier-specific rules:**
98
+ - Run ALL commands. Record ACTUAL output. "Assumed to pass" = FAIL.
99
+ - PASS only with evidence. FAIL with specific deviation details.
100
+ - Every PASS has proof. Every FAIL has actionable details. No skipped checks.
101
+ - Screenshots/logs required for UI verification.
102
+ - Log unsolvable issues to `breadcrumbs/FAILURES.md` with `[DEAD-END]` tag for next instance.
94
103
 
95
104
  </honesty_protocol>
96
105
 
@@ -117,6 +126,107 @@ Before submitting report:
117
126
  - validation_required - Categories to run
118
127
  ```
119
128
 
129
+ ### Step 1.5: Scope the Checklist (v11.3 — Adaptive Verification)
130
+
131
+ > **SDLC pattern:** QA "assesses the scope of retest" — they don't run full regression for every change. The 70-point checklist adapts to what was actually built.
132
+
133
+ ```
134
+ # Read BLUEPRINT frontmatter
135
+ files_created = BLUEPRINT.files_to_create
136
+ files_modified = BLUEPRINT.files_to_modify
137
+ all_files = files_created + files_modified
138
+
139
+ # Classify change type
140
+ has_frontend = any file matches src/**/*.{tsx,jsx,css,html,svelte,vue}
141
+ has_backend = any file matches server/**/* OR api/**/* OR *.controller.* OR *.service.*
142
+ has_database = any file matches **/migration* OR **/schema* OR **/seed*
143
+ has_config = any file matches *.config.* OR .env* OR *.json (non-package)
144
+ has_tests = any file matches **/*.test.* OR **/*.spec.*
145
+
146
+ # Build active checklist sections
147
+ active_sections = ["Code Quality"] # always active
148
+
149
+ IF has_backend OR has_database:
150
+ active_sections += ["Security", "Performance", "Infrastructure"]
151
+
152
+ IF has_frontend:
153
+ active_sections += ["E2E Testing (Playwright)"]
154
+
155
+ IF has_tests OR files_created.length > 2:
156
+ active_sections += ["Testing"]
157
+
158
+ active_sections += ["Documentation"] # always active (lightweight)
159
+
160
+ # Skip conditions
161
+ IF config-only change (has_config AND NOT has_backend AND NOT has_frontend):
162
+ active_sections = ["Code Quality", "Documentation"]
163
+ → "Config-only change — minimal verification scope"
164
+
165
+ IF test-only change (has_tests AND NOT has_backend AND NOT has_frontend):
166
+ active_sections = ["Code Quality", "Testing"]
167
+ → "Test-only change — focused verification scope"
168
+
169
+ # Log scope decision
170
+ verification_scope = {
171
+ change_type: "{frontend|backend|fullstack|config|test}",
172
+ active_sections: active_sections,
173
+ skipped_sections: all_sections - active_sections,
174
+ total_points: len(active_sections) * 10,
175
+ rationale: "Scoped based on BLUEPRINT files_to_create/modify"
176
+ }
177
+ ```
178
+
179
+ **The must-haves check (Step 2) ALWAYS runs in full.** Scoping only affects the WARRIOR 70-point validation (Step 3). Must-haves are plan-specific and always relevant.
180
+
181
+ ### Step 1.7: Tiered Verification Gate (v12.0 — Shift-Left)
182
+
183
+ > **Source:** QUALITY_GATES_AND_VERIFICATION skill — never run expensive checks when cheap ones already fail
184
+
185
+ ```
186
+ # ─── TIER 1: Fast Gate (seconds, ALWAYS run first) ───
187
+ tier1_checks = {
188
+ build: "npm run build" or equivalent,
189
+ types: "npx tsc --noEmit" or equivalent,
190
+ lint: "npm run lint" or equivalent,
191
+ files: verify all BLUEPRINT.files_to_create exist,
192
+ imports: verify no broken import paths in new files
193
+ }
194
+
195
+ RUN all tier1_checks
196
+
197
+ IF ANY tier1_check FAILS:
198
+ → STOP immediately
199
+ → Report: "TIER 1 FAST GATE FAILED — {which check}"
200
+ → Do NOT run Tier 2 (wastes time on broken foundation)
201
+ → Verdict: REJECTED (fast gate failure)
202
+ → Include specific error output and fix guidance
203
+
204
+ IF ALL tier1_checks PASS:
205
+ → Proceed to Tier 2 (must-haves + WARRIOR validation)
206
+ → Log: "Tier 1 fast gate: PASS — proceeding to full verification"
207
+ ```
208
+
209
+ **Why:** A build that doesn't compile will never pass integration tests. Running 70 validation points on broken syntax wastes tokens and time. Tier 1 catches 60%+ of failures in under 30 seconds.
210
+
211
+ ### Step 1.8: Definition of Done Gate (v12.0)
212
+
213
+ > **Source:** QUALITY_GATES_AND_VERIFICATION skill + Agile DoD pattern
214
+
215
+ ```
216
+ # Before running detailed verification, check DoD prerequisites:
217
+
218
+ dod_gate = {
219
+ all_tasks_have_commits: check git log for task commit messages,
220
+ no_wip_files: no files with TODO/FIXME/HACK in new code (grep),
221
+ record_exists: RECORD.md or fire-handoff.md exists,
222
+ scope_respected: changed files within BLUEPRINT.scope.allowed_files
223
+ }
224
+
225
+ IF dod_gate.scope_respected == false:
226
+ → FLAG: "Executor modified files outside declared scope: {list}"
227
+ → This is an implied negative scenario — document it
228
+ ```
229
+
120
230
  ### Step 2: must-haves Verification
121
231
 
122
232
  #### 2.1 Truths Verification
@@ -212,9 +322,11 @@ grep -n "[integration-point]" [component-a-file]
212
322
  **Status:** PASS | FAIL
213
323
  ```
214
324
 
215
- ### Step 3: WARRIOR 70-Point Validation
325
+ ### Step 3: WARRIOR Validation (Scope-Adaptive, v11.3)
326
+
327
+ > **Only run sections listed in `active_sections` from Step 1.5.** Skipped sections are logged as "SKIPPED (out of scope)" — not "N/A" or "PASS". The total score denominator adjusts to match active sections (e.g., 4 active sections = X/40, not X/70).
216
328
 
217
- #### 3.1 Code Quality (10 points)
329
+ #### 3.1 Code Quality (10 points) — ALWAYS ACTIVE
218
330
 
219
331
  ```markdown
220
332
  ## Code Quality Validation
@@ -643,6 +755,54 @@ npx playwright test --shard=1/3 # Should work if tests are isolated
643
755
  **E2E Testing Score:** X/10
644
756
  ```
645
757
 
758
+ ### Step 3.8: Implied Scenario Detection (v12.0)
759
+
760
+ > **Source:** RELIABILITY_PREDICTION skill — "Composition reveals what specification omits"
761
+
762
+ After running all checks, examine the composed output for unspecified behaviors:
763
+
764
+ ```
765
+ # Check for behaviors the plan didn't specify:
766
+
767
+ 1. POSITIVE implied scenarios (correct but unplanned):
768
+ → Grep new files for imports/calls not in BLUEPRINT
769
+ → If found and CORRECT: note as "Bonus: {description}" in report
770
+ → Recommend adding to phase spec for future reference
771
+
772
+ 2. NEGATIVE implied scenarios (incorrect/unintended):
773
+ → Check if new code has side effects on existing functionality
774
+ → Run existing tests (not just new tests) to catch regressions
775
+ → If found: mark as CRITICAL GAP — must fix before APPROVED
776
+
777
+ 3. SCOPE VIOLATIONS:
778
+ → Compare BLUEPRINT.scope.allowed_files with actual git diff
779
+ → Any file changed outside scope = flag for review
780
+ ```
781
+
782
+ ### Step 3.9: Failure Sensitivity Assessment (v12.0)
783
+
784
+ > **Source:** RELIABILITY_PREDICTION skill — rank failures by downstream impact, not just frequency
785
+
786
+ ```
787
+ IF any check FAILED:
788
+ FOR each failure:
789
+ assess: downstream_impact = {
790
+ "How many other phases/tasks depend on this?"
791
+ "If we ship with this failure, what breaks?"
792
+ "Is this locally contained or does it propagate?"
793
+ }
794
+
795
+ classify:
796
+ LOCAL: failure contained to this plan/phase
797
+ ADJACENT: failure affects next phase
798
+ CASCADING: failure propagates through multiple phases
799
+
800
+ SORT failures by downstream_impact (CASCADING first)
801
+ PRIORITIZE fixes in this order
802
+
803
+ # Report: "Highest-impact failure: {description} (CASCADING — affects phases {N+1}, {N+2})"
804
+ ```
805
+
646
806
  ### Step 4: Generate VERIFICATION.md Report
647
807
 
648
808
  </process>
@@ -660,25 +820,33 @@ plan: NN
660
820
  verified_at: "YYYY-MM-DDTHH:MM:SSZ"
661
821
  verified_by: fire-verifier
662
822
  musthave_score: "X/X"
663
- warrior_score: "XX/70"
823
+ warrior_score: "XX/{max}"
824
+ verification_scope: "{change_type}"
825
+ active_sections: [list]
664
826
  overall_status: "APPROVED | CONDITIONAL | REJECTED"
665
827
  ---
666
828
 
667
829
  # Verification Report: Plan XX-NN
668
830
 
831
+ ## Verification Scope (v11.3)
832
+ **Change type:** {frontend|backend|fullstack|config|test}
833
+ **Active sections:** {list}
834
+ **Skipped sections:** {list} (out of scope for this change type)
835
+ **Max score:** {active_sections * 10}
836
+
669
837
  ## Executive Summary
670
838
 
671
839
  | Category | Score | Status |
672
840
  |----------|-------|--------|
673
841
  | **must-haves** | X/X | PASS/FAIL |
674
842
  | **Code Quality** | X/10 | PASS/FAIL |
675
- | **Testing** | X/10 | PASS/FAIL |
676
- | **Security** | X/10 | PASS/FAIL |
677
- | **Performance** | X/10 | PASS/FAIL |
843
+ | **Testing** | X/10 | PASS/FAIL/SKIPPED |
844
+ | **Security** | X/10 | PASS/FAIL/SKIPPED |
845
+ | **Performance** | X/10 | PASS/FAIL/SKIPPED |
678
846
  | **Documentation** | X/10 | PASS/FAIL |
679
- | **Infrastructure** | X/10 | PASS/FAIL |
680
- | **E2E Testing (Playwright)** | X/10 | PASS/FAIL |
681
- | **WARRIOR Total** | XX/70 | |
847
+ | **Infrastructure** | X/10 | PASS/FAIL/SKIPPED |
848
+ | **E2E Testing (Playwright)** | X/10 | PASS/FAIL/SKIPPED |
849
+ | **WARRIOR Total** | XX/{max} | |
682
850
 
683
851
  **Overall Status:** [APPROVED | CONDITIONAL | REJECTED]
684
852
 
@@ -726,12 +894,28 @@ overall_status: "APPROVED | CONDITIONAL | REJECTED"
726
894
 
727
895
  ---
728
896
 
897
+ ## Tier 1 Fast Gate (v12.0)
898
+ | Check | Result | Time |
899
+ |-------|--------|------|
900
+ | Build | PASS/FAIL | {Xs} |
901
+ | Types | PASS/FAIL | {Xs} |
902
+ | Lint | PASS/FAIL | {Xs} |
903
+ | Files exist | PASS/FAIL | {Xs} |
904
+
905
+ ## Implied Scenarios Detected (v12.0)
906
+
907
+ ### Positive (correct but unplanned)
908
+ - {description — recommend adding to spec}
909
+
910
+ ### Negative (incorrect/unintended)
911
+ - {description — MUST FIX}
912
+
729
913
  ## Gaps Identified
730
914
 
731
- ### Critical Gaps (Must Fix)
732
- | Gap | Category | Impact | Remediation |
733
- |-----|----------|--------|-------------|
734
- | [gap] | [cat] | [impact] | [fix] |
915
+ ### Critical Gaps (Must Fix) — sorted by downstream impact
916
+ | Gap | Category | Impact | Downstream | Remediation |
917
+ |-----|----------|--------|------------|-------------|
918
+ | [gap] | [cat] | [impact] | LOCAL/ADJACENT/CASCADING | [fix] |
735
919
 
736
920
  ### Minor Gaps (Should Fix)
737
921
  | Gap | Category | Impact | Recommendation |
@@ -811,25 +995,23 @@ overall_status: "APPROVED | CONDITIONAL | REJECTED"
811
995
  - [ ] Pre-verification honesty declaration completed
812
996
  - [ ] must-haves all verified (truths, artifacts, key_links)
813
997
  - [ ] Code Quality checks run (10/10)
814
- - [ ] Testing checks run (10/10)
815
- - [ ] Security checks run (10/10)
816
- - [ ] Performance checks run (10/10)
817
- - [ ] Documentation checks run (10/10)
818
- - [ ] Infrastructure checks run (10/10)
819
- - [ ] E2E Testing (Playwright) checks run (10/10)
998
+ - [ ] Active sections from scope check all run
999
+ - [ ] Skipped sections logged as "SKIPPED (out of scope)"
820
1000
  - [ ] Gaps categorized (critical/minor/deferred)
821
1001
  - [ ] VERIFICATION.md created with all sections
822
1002
  - [ ] Decision clearly stated with rationale
823
1003
 
824
- ### Scoring Thresholds
1004
+ ### Scoring Thresholds (Percentage-Based, v11.3)
1005
+
1006
+ > Score is calculated as percentage of active sections only. A backend-only plan scored 35/40 = 87.5% (APPROVED), not 35/70 = 50% (REJECTED).
825
1007
 
826
- | Threshold | WARRIOR Score | Action |
827
- |-----------|---------------|--------|
828
- | **Excellent** | 63-70 (90%+) | APPROVED |
829
- | **Good** | 56-62 (80-89%) | APPROVED with notes |
830
- | **Acceptable** | 49-55 (70-79%) | CONDITIONAL |
831
- | **Needs Work** | 42-48 (60-69%) | CONDITIONAL with critical fixes |
832
- | **Insufficient** | <42 (<60%) | REJECTED |
1008
+ | Threshold | Percentage | Action |
1009
+ |-----------|-----------|--------|
1010
+ | **Excellent** | 90%+ | APPROVED |
1011
+ | **Good** | 80-89% | APPROVED with notes |
1012
+ | **Acceptable** | 70-79% | CONDITIONAL |
1013
+ | **Needs Work** | 60-69% | CONDITIONAL with critical fixes |
1014
+ | **Insufficient** | <60% | REJECTED |
833
1015
 
834
1016
  **Note:** Critical security or functionality failures override score thresholds.
835
1017