slash-do 1.9.0 → 2.1.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.
package/README.md CHANGED
@@ -24,7 +24,7 @@
24
24
  <p align="center">
25
25
  <img src="https://img.shields.io/npm/v/slash-do?style=flat-square&color=blue" alt="npm version" />
26
26
  <img src="https://img.shields.io/badge/environments-4-green?style=flat-square" alt="environments" />
27
- <img src="https://img.shields.io/badge/commands-12-orange?style=flat-square" alt="commands" />
27
+ <img src="https://img.shields.io/badge/commands-14-orange?style=flat-square" alt="commands" />
28
28
  <img src="https://img.shields.io/badge/license-MIT-lightgrey?style=flat-square" alt="license" />
29
29
  </p>
30
30
 
@@ -60,8 +60,9 @@ All commands live under the `do:` namespace:
60
60
  | `/do:rpr` | Resolve PR review feedback with parallel agents |
61
61
  | `/do:release` | Create a release PR with version bump and changelog |
62
62
  | `/do:review` | Deep code review against best practices |
63
- | `/do:better` | Full DevSecOps audit with 7-agent scan and remediation |
63
+ | `/do:better` | Full DevSecOps audit with 8-agent scan and remediation |
64
64
  | `/do:better-swift` | SwiftUI DevSecOps audit with multi-platform coverage |
65
+ | `/do:depfree` | Audit dependencies, remove unnecessary ones, write replacement code |
65
66
  | `/do:goals` | Generate GOALS.md from codebase analysis |
66
67
  | `/do:replan` | Review and clean up PLAN.md |
67
68
  | `/do:omd` | Audit and optimize markdown files |
@@ -1,13 +1,18 @@
1
1
  ---
2
2
  description: SwiftUI DevSecOps audit, remediation, test enhancement, per-category PRs, CI verification, and Copilot review loop with worktree isolation — optimized for multi-platform Swift/SwiftUI apps (iOS, macOS, watchOS, tvOS, visionOS)
3
- argument-hint: "[--scan-only] [--no-merge] [path filter or focus areas]"
3
+ argument-hint: "[--interactive] [--scan-only] [--no-merge] [path filter or focus areas]"
4
4
  ---
5
5
 
6
6
  # Better Swift — Unified DevSecOps Pipeline for SwiftUI Apps
7
7
 
8
8
  Run the full DevSecOps lifecycle optimized for Swift/SwiftUI multi-platform projects: audit the codebase with 7 deduplicated agents, consolidate findings, remediate in an isolated worktree, create **separate PRs per category** with SemVer bump, verify CI, run Copilot review loops, and merge.
9
9
 
10
+ **Default mode: fully autonomous.** Uses Balanced model profile, proceeds through all phases without prompting, auto-merges PRs with clean reviews.
11
+
12
+ **`--interactive` mode:** Pauses for model profile selection, review findings approval, guardrail decisions, and merge confirmation.
13
+
10
14
  Parse `$ARGUMENTS` for:
15
+ - **`--interactive`**: pause at each decision point for user approval
11
16
  - **`--scan-only`**: run Phase 0 + 1 + 2 only (audit and plan), skip remediation
12
17
  - **`--no-merge`**: run through PR creation (Phase 5), skip Copilot review and merge
13
18
  - **Path filter**: limit scanning scope to specific directories or files
@@ -15,7 +20,13 @@ Parse `$ARGUMENTS` for:
15
20
 
16
21
  ## Configuration
17
22
 
18
- Before starting the pipeline, present the user with configuration options using `AskUserQuestion`:
23
+ ### Default Mode (autonomous)
24
+
25
+ Use the **Balanced** model profile automatically (`AUDIT_MODEL=sonnet`, `REMEDIATION_MODEL=sonnet`).
26
+
27
+ ### Interactive Mode (`--interactive`)
28
+
29
+ Present the user with configuration options using `AskUserQuestion`:
19
30
 
20
31
  ```
21
32
  AskUserQuestion([
@@ -562,7 +573,8 @@ Before creating PRs, run a deep code review on all remediation changes to catch
562
573
  3. For each issue found:
563
574
  - Fix in a new commit: `fix: {description of review finding}`
564
575
  - Re-run `{BUILD_CMD}` and `{TEST_CMD}` on ALL platforms to verify
565
- 4. Present a summary of review findings and fixes to the user via `AskUserQuestion`:
576
+ 4. **Default mode**: Print a brief summary of findings and fixes, then proceed to PR creation automatically.
577
+ **Interactive mode (`--interactive`)**: Present a summary to the user via `AskUserQuestion`:
566
578
  ```
567
579
  AskUserQuestion([{
568
580
  question: "Code review complete. {N} issues found and fixed. {list}. All {PLATFORMS} platforms build and test successfully. Proceed to PR creation?",
@@ -574,7 +586,7 @@ Before creating PRs, run a deep code review on all remediation changes to catch
574
586
  ]
575
587
  }])
576
588
  ```
577
- 5. If "Show diff" selected, print the diff and re-ask. If "Abort", stop and print the worktree path.
589
+ 5. (Interactive only) If "Show diff" selected, print the diff and re-ask. If "Abort", stop and print the worktree path.
578
590
  6. If "Commit directly" selected:
579
591
  - All remediation and review fixes are already committed incrementally in the worktree branch `better-swift/{DATE}`. If any uncommitted changes remain, stage and commit them now:
580
592
  ```bash
@@ -850,7 +862,7 @@ After creating all PRs, verify CI passes on each one:
850
862
 
851
863
  ## Phase 6: Copilot Review Loop (GitHub only)
852
864
 
853
- Loop until Copilot returns zero new comments (no fixed iteration limit). Sub-agents enforce a 10-iteration guardrail: at iteration 10 the sub-agent stops and returns a "guardrail" status, prompting the parent agent to ask the user whether to continue or stop.
865
+ Loop until Copilot returns zero new comments (no fixed iteration limit). Sub-agents enforce a 10-iteration guardrail: at iteration 10 the sub-agent stops and returns a "guardrail" status. **Default mode**: auto-stop at the guardrail. **Interactive mode (`--interactive`)**: prompt the parent agent to ask the user whether to continue or stop.
854
866
 
855
867
  **Sub-agent delegation** (prevents context exhaustion): delegate each PR's review loop to a **separate general-purpose sub-agent** via the Agent tool. Launch sub-agents in parallel (one per PR). Each sub-agent runs the full loop (request → wait → check → fix → re-request) autonomously and returns only the final status.
856
868
 
@@ -870,13 +882,19 @@ Launch all PR sub-agents in parallel. Wait for all to complete.
870
882
 
871
883
  For each sub-agent result:
872
884
  - **clean**: mark PR as ready to merge
873
- - **timeout**: inform the user "Copilot review timed out on PR #{number}." and ask whether to continue waiting, re-request, or skip
874
- - **error**: inform the user and ask whether to retry or skip
875
- - **guardrail**: the sub-agent hit the 10-iteration limit; ask the user whether to continue with more iterations or stop
885
+ - **timeout**: **Default mode**: skip the timed-out PR and continue. **Interactive mode**: inform the user and ask whether to continue waiting, re-request, or skip
886
+ - **error**: **Default mode**: retry up to 3 times, then skip. **Interactive mode**: inform the user and ask whether to retry or skip
887
+ - **guardrail**: the sub-agent hit the 10-iteration limit. **Default mode**: auto-stop and mark as best-effort. **Interactive mode**: ask the user whether to continue with more iterations or stop
876
888
 
877
889
  ### 6.3: Merge Gate (MANDATORY)
878
890
 
879
- **Do NOT merge any PR until Copilot review has completed (approved or commented) on ALL PRs, or the user explicitly approves skipping.**
891
+ **Do NOT merge any PR until its own Copilot review has completed (approved or commented with zero unresolved issues).**
892
+
893
+ ### Default Mode (autonomous)
894
+
895
+ Print the review status summary, then auto-merge all PRs whose reviews completed cleanly. PRs that timed out, hit guardrails, or still have unresolved comments are left open for manual review. Print which PRs were merged and which were left open.
896
+
897
+ ### Interactive Mode (`--interactive`)
880
898
 
881
899
  Present the review status summary to the user via `AskUserQuestion`:
882
900
  ```
@@ -891,7 +909,7 @@ AskUserQuestion([{
891
909
  }])
892
910
  ```
893
911
 
894
- Only proceed with merging based on the user's selection. Never auto-merge without user confirmation.
912
+ Only proceed with merging based on the user's selection.
895
913
 
896
914
  ### 6.4: Merge
897
915
 
@@ -1,13 +1,18 @@
1
1
  ---
2
2
  description: Unified DevSecOps audit, remediation, test enhancement, per-category PRs, CI verification, and Copilot review loop with worktree isolation
3
- argument-hint: "[--scan-only] [--no-merge] [path filter or focus areas]"
3
+ argument-hint: "[--interactive] [--scan-only] [--no-merge] [path filter or focus areas]"
4
4
  ---
5
5
 
6
6
  # Better — Unified DevSecOps Pipeline
7
7
 
8
- Run the full DevSecOps lifecycle: audit the codebase with 7 deduplicated agents, consolidate findings, remediate in an isolated worktree, create **separate PRs per category** with SemVer bump, verify CI, run Copilot review loops, and merge.
8
+ Run the full DevSecOps lifecycle: audit the codebase with 8 deduplicated agents, consolidate findings, remediate in an isolated worktree, create **separate PRs per category** with SemVer bump, verify CI, run Copilot review loops, and merge.
9
+
10
+ **Default mode: fully autonomous.** Uses Balanced model profile, proceeds through all phases without prompting, auto-merges PRs with clean reviews.
11
+
12
+ **`--interactive` mode:** Pauses for model profile selection, review findings approval, guardrail decisions, and merge confirmation.
9
13
 
10
14
  Parse `$ARGUMENTS` for:
15
+ - **`--interactive`**: pause at each decision point for user approval
11
16
  - **`--scan-only`**: run Phase 0 + 1 + 2 only (audit and plan), skip remediation
12
17
  - **`--no-merge`**: run through PR creation (Phase 5), skip Copilot review and merge
13
18
  - **Path filter**: limit scanning scope to specific directories or files
@@ -15,7 +20,13 @@ Parse `$ARGUMENTS` for:
15
20
 
16
21
  ## Configuration
17
22
 
18
- Before starting the pipeline, present the user with configuration options using `AskUserQuestion`:
23
+ ### Default Mode (autonomous)
24
+
25
+ Use the **Balanced** model profile automatically (`AUDIT_MODEL=sonnet`, `REMEDIATION_MODEL=sonnet`).
26
+
27
+ ### Interactive Mode (`--interactive`)
28
+
29
+ Present the user with configuration options using `AskUserQuestion`:
19
30
 
20
31
  ```
21
32
  AskUserQuestion([
@@ -36,7 +47,7 @@ Record the selection as `MODEL_PROFILE` and derive agent models from this table:
36
47
 
37
48
  | Agent Role | Quality | Balanced | Budget |
38
49
  |------------|---------|----------|--------|
39
- | Audit agents (7 Explore agents, Phase 1) | opus | sonnet | haiku |
50
+ | Audit agents (8 Explore agents, Phase 1) | opus | sonnet | haiku |
40
51
  | Remediation agents (general-purpose, Phase 3) | opus | sonnet | sonnet |
41
52
 
42
53
  Derive two variables:
@@ -110,7 +121,7 @@ Record as `BUILD_CMD` and `TEST_CMD`.
110
121
 
111
122
  Project conventions are already in your context. Pass relevant conventions to each agent.
112
123
 
113
- Launch 7 Explore agents in two batches. Each agent must report findings in this format:
124
+ Launch 8 Explore agents in two batches. Each agent must report findings in this format:
114
125
  ```
115
126
  - **[CRITICAL/HIGH/MEDIUM/LOW]** `file:line` - Description. Suggested fix: ... Complexity: Simple/Medium/Complex
116
127
  ```
@@ -163,7 +174,7 @@ Skip step 4 if steps 1-3 reveal the code is correct.
163
174
  Resilience: external calls without timeouts, missing fallback for unavailable downstream services, retry without backoff ceiling/jitter, missing health check endpoints
164
175
  Observability: production paths without structured logging, error logs missing reproduction context (request ID, input params), async flows without correlation IDs
165
176
 
166
- ### Batch 2 (2 agents after Batch 1 completes):
177
+ ### Batch 2 (3 agents after Batch 1 completes):
167
178
 
168
179
  **Model**: Same `AUDIT_MODEL` as Batch 1.
169
180
 
@@ -177,14 +188,27 @@ Skip step 4 if steps 1-3 reveal the code is correct.
177
188
  - **Database migrations**: exclusive-lock ALTER TABLE on large tables, CREATE INDEX without CONCURRENTLY, missing down migrations or untested rollback paths
178
189
  - General: framework-specific security issues, language-specific gotchas, domain-specific compliance, environment variable hygiene (missing `.env.example`, required env vars not validated at startup, secrets in config files that should be in env)
179
190
 
180
- 7. **Test Quality & Coverage**
191
+ 7. **Dependency Freedom**
192
+ Audit all third-party dependencies for necessity. Every small library is an attack surface — supply chain compromises are real and common.
193
+ Focus:
194
+ - Extract the full dependency list from the project manifest (`package.json`, `Cargo.toml`, `pyproject.toml`, `go.mod`, `Gemfile`, etc.)
195
+ - Classify each dependency into tiers:
196
+ - **Acceptable**: large, widely-audited libraries (react, express, d3, three.js, next, vue, fastify, typescript, eslint, prisma, tailwindcss, tokio, serde, django, flask, pandas, etc.) — skip these
197
+ - **Suspect**: smaller libraries where we may only use 1-2 functions, wrappers over built-in APIs, single-purpose utilities
198
+ - **Removable**: libraries where the used functionality is <50 lines to implement, wraps a now-native API (e.g., `crypto.randomUUID()` replacing uuid, `structuredClone` replacing lodash.cloneDeep, `Array.prototype.flat` replacing array-flatten, `node:fs/promises` replacing fs-extra for most uses), unmaintained with known vulnerabilities, or micro-packages (is-odd, is-number, left-pad tier)
199
+ - For each suspect/removable dependency: search all source files for imports, list every function/class/type used, count call sites, assess replacement complexity (Trivial <20 lines, Moderate 20-100, Complex 100-300, Infeasible 300+)
200
+ - Check maintenance status: last publish date, open security issues, known CVEs
201
+ - Report format: `**[SEVERITY]** {package-name} — {Tier}. Uses: {functions}. Call sites: {N} in {M} files. Replacement: {complexity}. Reason: {why removable}`
202
+ - Severity mapping: unmaintained with CVEs → CRITICAL, unmaintained without CVEs → HIGH, replaceable single-function usage → MEDIUM, suspect but complex replacement → LOW
203
+
204
+ 8. **Test Quality & Coverage**
181
205
  Uses Batch 1 findings as context to prioritize.
182
206
  Focus areas:
183
207
 
184
208
  **Coverage gaps:**
185
209
  - Missing test files for critical modules, untested edge cases, tests that only cover happy paths
186
210
  - Areas with high complexity (identified by agents 1-5) but no tests
187
- - Remediation changes from agents 1-6 that lack corresponding test coverage
211
+ - Remediation changes from agents 1-7 that lack corresponding test coverage
188
212
 
189
213
  **Vacuous tests (tests that don't actually test anything):**
190
214
  - Tests that assert on mocked return values instead of real behavior (testing the mock, not the code)
@@ -246,6 +270,7 @@ For each file touched by multiple categories, document why it was assigned to on
246
270
  ### Architecture & SOLID
247
271
  ### Bugs, Performance & Error Handling
248
272
  ### Stack-Specific
273
+ ### Dependency Freedom
249
274
  ### Test Quality & Coverage
250
275
  ```
251
276
 
@@ -256,6 +281,7 @@ For each file touched by multiple categories, document why it was assigned to on
256
281
  - Architecture → Architecture & SOLID → `architecture`
257
282
  - Bugs & Perf → Bugs, Performance & Error Handling → `bugs-perf`
258
283
  - Stack-Specific → Stack-Specific → `stack-specific`
284
+ - Dep Freedom → Dependency Freedom → `deps`
259
285
  - Tests → Test Quality & Coverage → `tests`
260
286
 
261
287
  ```
@@ -267,6 +293,7 @@ For each file touched by multiple categories, document why it was assigned to on
267
293
  | Architecture | ... | ... | ... | ... | ... |
268
294
  | Bugs & Perf | ... | ... | ... | ... | ... |
269
295
  | Stack-Specific | ... | ... | ... | ... | ... |
296
+ | Dep Freedom | ... | ... | ... | ... | ... |
270
297
  | Tests | ... | ... | ... | ... | ... |
271
298
  | TOTAL | ... | ... | ... | ... | ... |
272
299
  ```
@@ -321,6 +348,7 @@ If no shared utilities were identified, skip this step.
321
348
  - Architecture & SOLID
322
349
  - Bugs, Performance & Error Handling
323
350
  - Stack-Specific
351
+ - Dependency Freedom
324
352
  3. Only create tasks for categories that have actionable findings
325
353
  4. Spawn up to 5 general-purpose agents as teammates. **Pass `REMEDIATION_MODEL` as the `model` parameter on each agent.** If `REMEDIATION_MODEL` is `opus`, omit the parameter to inherit from session.
326
354
 
@@ -328,9 +356,13 @@ If no shared utilities were identified, skip this step.
328
356
 
329
357
  !`cat ~/.claude/lib/remediation-agent-template.md`
330
358
 
359
+ ### Dependency Freedom agent — special instructions:
360
+ The Dependency Freedom remediation agent has a unique task: for each removable dependency, it must (1) write replacement code (utility function or inline native API call), (2) update ALL import/require statements across the codebase, (3) remove the package from the manifest, and (4) regenerate the lock file (`npm install` / `cargo update` / etc.). After all replacements, verify no source file still references the removed package. See `/do:depfree` Phase 3b for the full agent template.
361
+
331
362
  ### Conflict avoidance:
332
363
  - Review all findings before task assignment. If two categories touch the same file, assign both sets of findings to the same agent.
333
364
  - Security agent gets priority on validation logic; DRY agent gets priority on import consolidation.
365
+ - Dependency Freedom agent gets priority on files that are solely import/usage sites of a removed package.
334
366
 
335
367
  </plan_and_remediate>
336
368
 
@@ -370,7 +402,8 @@ Before creating PRs, run a deep code review on all remediation changes to catch
370
402
  3. For each issue found:
371
403
  - Fix in a new commit: `fix: {description of review finding}`
372
404
  - Re-run `{BUILD_CMD}` and `{TEST_CMD}` to verify
373
- 4. Present a summary of review findings and fixes to the user via `AskUserQuestion`:
405
+ 4. **Default mode**: Print a brief summary of findings and fixes, then proceed to PR creation automatically.
406
+ **Interactive mode (`--interactive`)**: Present a summary to the user via `AskUserQuestion`:
374
407
  ```
375
408
  AskUserQuestion([{
376
409
  question: "Code review complete. {N} issues found and fixed. {list}. Proceed to PR creation?",
@@ -382,7 +415,7 @@ Before creating PRs, run a deep code review on all remediation changes to catch
382
415
  ]
383
416
  }])
384
417
  ```
385
- 5. If "Show diff" selected, print the diff and re-ask. If "Abort", stop and print the worktree path.
418
+ 5. (Interactive only) If "Show diff" selected, print the diff and re-ask. If "Abort", stop and print the worktree path.
386
419
  6. If "Commit directly" selected:
387
420
  - All remediation and review fixes are already committed incrementally in the worktree branch `better/{DATE}`. If any uncommitted changes remain, stage and commit them now:
388
421
  ```bash
@@ -421,7 +454,7 @@ PHASE_4C_START_SHA="$(git rev-parse HEAD)"
421
454
 
422
455
  ### 4c.1: Test Audit Triage
423
456
 
424
- Review Agent 7 findings from Phase 1 and categorize them:
457
+ Review Agent 8 (Test Quality & Coverage) findings from Phase 1 and categorize them:
425
458
 
426
459
  1. **`[VACUOUS]` findings** — tests that exist but don't test real behavior. These are the highest priority because they create a false sense of safety.
427
460
  2. **`[WEAK]` findings** — tests that partially cover behavior but miss important cases. Strengthen with additional assertions and edge cases.
@@ -523,7 +556,7 @@ Initialize `CREATED_CATEGORY_SLUGS=""` (empty space-delimited string). After eac
523
556
  For each category that has findings:
524
557
  1. Switch to `{DEFAULT_BRANCH}`: `git checkout {DEFAULT_BRANCH}`
525
558
  2. Create a category branch: `git checkout -b better/{CATEGORY_SLUG}`
526
- - Use slugs: `security`, `code-quality`, `dry`, `architecture`, `bugs-perf`, `stack-specific`, `tests`
559
+ - Use slugs: `security`, `code-quality`, `dry`, `architecture`, `bugs-perf`, `stack-specific`, `deps`, `tests`
527
560
  3. For each file assigned to this category in `FILE_OWNER_MAP`:
528
561
  - **Modified files**: `git checkout better/{DATE} -- {file_path}`
529
562
  - **New files (Added)**: `git checkout better/{DATE} -- {file_path}`
@@ -638,7 +671,7 @@ After creating all PRs, verify CI passes on each one:
638
671
 
639
672
  ## Phase 6: Copilot Review Loop (GitHub only)
640
673
 
641
- Loop until Copilot returns zero new comments (no fixed iteration limit). Sub-agents enforce a 10-iteration guardrail: at iteration 10 the sub-agent stops and returns a "guardrail" status, prompting the parent agent to ask the user whether to continue or stop.
674
+ Loop until Copilot returns zero new comments (no fixed iteration limit). Sub-agents enforce a 10-iteration guardrail: at iteration 10 the sub-agent stops and returns a "guardrail" status. **Default mode**: auto-stop at the guardrail. **Interactive mode (`--interactive`)**: prompt the parent agent to ask the user whether to continue or stop.
642
675
 
643
676
  **Sub-agent delegation** (prevents context exhaustion): delegate each PR's review loop to a **separate general-purpose sub-agent** via the Agent tool. Launch sub-agents in parallel (one per PR). Each sub-agent runs the full loop (request → wait → check → fix → re-request) autonomously and returns only the final status.
644
677
 
@@ -656,13 +689,19 @@ Launch all PR sub-agents in parallel. Wait for all to complete.
656
689
 
657
690
  For each sub-agent result:
658
691
  - **clean**: mark PR as ready to merge
659
- - **timeout**: inform the user "Copilot review timed out on PR #{number}." and ask whether to continue waiting, re-request, or skip
660
- - **error**: inform the user and ask whether to retry or skip
661
- - **guardrail**: the sub-agent hit the 10-iteration limit; ask the user whether to continue with more iterations or stop
692
+ - **timeout**: **Default mode**: skip the timed-out PR and continue. **Interactive mode**: inform the user and ask whether to continue waiting, re-request, or skip
693
+ - **error**: **Default mode**: retry up to 3 times, then skip. **Interactive mode**: inform the user and ask whether to retry or skip
694
+ - **guardrail**: the sub-agent hit the 10-iteration limit. **Default mode**: auto-stop and mark as best-effort. **Interactive mode**: ask the user whether to continue with more iterations or stop
662
695
 
663
696
  ### 6.3: Merge Gate (MANDATORY)
664
697
 
665
- **Do NOT merge any PR until Copilot review has completed (approved or commented) on ALL PRs, or the user explicitly approves skipping.**
698
+ **Do NOT merge any PR until its own Copilot review has completed (approved or commented with zero unresolved issues).**
699
+
700
+ ### Default Mode (autonomous)
701
+
702
+ Print the review status summary, then auto-merge all PRs whose reviews completed cleanly. PRs that timed out, hit guardrails, or still have unresolved comments are left open for manual review. Print which PRs were merged and which were left open.
703
+
704
+ ### Interactive Mode (`--interactive`)
666
705
 
667
706
  Present the review status summary to the user via `AskUserQuestion`:
668
707
  ```
@@ -677,7 +716,7 @@ AskUserQuestion([{
677
716
  }])
678
717
  ```
679
718
 
680
- Only proceed with merging based on the user's selection. Never auto-merge without user confirmation.
719
+ Only proceed with merging based on the user's selection.
681
720
 
682
721
  ### 6.4: Merge
683
722
 
@@ -739,6 +778,7 @@ If merge fails (e.g., branch protection, merge conflicts from a prior PR):
739
778
  | Architecture | ... | ... | ... | #number | pass | approved |
740
779
  | Bugs & Perf | ... | ... | ... | #number | pass | approved |
741
780
  | Stack-Specific | ... | ... | ... | #number | pass | approved |
781
+ | Dep Freedom | ... | ... | ... | #number | pass | approved |
742
782
  | Tests | ... | ... | ... | #number | pass | approved |
743
783
  | TOTAL | ... | ... | ... | N PRs | | |
744
784
 
@@ -773,6 +813,7 @@ Test Enhancement Stats:
773
813
  - When extracting modules, always add backward-compatible re-exports in the original module to prevent cross-PR breakage
774
814
  - Version bump happens exactly once on the first category branch based on aggregate commit analysis
775
815
  - Only CRITICAL, HIGH, and MEDIUM findings are auto-remediated for code categories; LOW findings remain tracked in PLAN.md
816
+ - Dependency Freedom findings replace unnecessary third-party packages with owned code — see `/do:depfree` for standalone usage
776
817
  - Test Quality & Coverage findings are remediated in Phase 4c with a dedicated test enhancement agent that verifies tests fail when code is broken
777
818
  - GitLab projects skip the Copilot review loop entirely (Phase 6) and stop after MR creation
778
819
  - CI must pass on each PR before requesting Copilot review or merging