@izkac/forgekit 0.3.12 → 0.3.13

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 (116) hide show
  1. package/bin/forge.mjs +107 -107
  2. package/bin/forgekit.mjs +83 -83
  3. package/bin/review.mjs +81 -81
  4. package/package.json +1 -1
  5. package/scripts/prepack.mjs +78 -78
  6. package/scripts/run-tests.mjs +50 -50
  7. package/src/adr.mjs +236 -236
  8. package/src/adr.test.mjs +170 -170
  9. package/src/change.mjs +327 -234
  10. package/src/change.test.mjs +145 -83
  11. package/src/cleanup-sessions.mjs +84 -84
  12. package/src/config.mjs +103 -103
  13. package/src/defer.mjs +75 -75
  14. package/src/doctor.mjs +350 -341
  15. package/src/doctor.test.mjs +114 -114
  16. package/src/init.mjs +680 -621
  17. package/src/install.mjs +815 -815
  18. package/src/install.test.mjs +180 -180
  19. package/src/integrity-check.mjs +60 -60
  20. package/src/integrity.mjs +682 -682
  21. package/src/integrity.test.mjs +566 -566
  22. package/src/lib.mjs +143 -143
  23. package/src/models.defaults.json +41 -41
  24. package/src/new-session.mjs +99 -99
  25. package/src/openspec-overlays/README.md +19 -19
  26. package/src/openspec-overlays/openspec-apply-change-footer.md +14 -14
  27. package/src/openspec-overlays/opsx-apply-completion-step.md +1 -1
  28. package/src/openspec-overlays/opsx-apply-implement-step.md +11 -11
  29. package/src/paths.mjs +92 -92
  30. package/src/plan-engine.mjs +321 -278
  31. package/src/plan-engine.test.mjs +447 -283
  32. package/src/preferences.defaults.json +78 -78
  33. package/src/preferences.mjs +438 -438
  34. package/src/preferences.test.mjs +174 -174
  35. package/src/record-evidence.mjs +204 -204
  36. package/src/resolve-model.mjs +312 -312
  37. package/src/resolve-model.test.mjs +194 -194
  38. package/src/review/cli.test.mjs +117 -117
  39. package/src/review/export.mjs +172 -172
  40. package/src/review/export.test.mjs +197 -197
  41. package/src/review/fixtures/valid-review.json +42 -42
  42. package/src/review/lib.mjs +894 -894
  43. package/src/review/lib.test.mjs +266 -266
  44. package/src/review/schema.json +196 -196
  45. package/src/review/signals.test.mjs +62 -62
  46. package/src/score-cli.mjs +68 -68
  47. package/src/score.mjs +568 -568
  48. package/src/score.test.mjs +366 -366
  49. package/src/session-reminder.mjs +207 -207
  50. package/src/session-status.mjs +70 -70
  51. package/src/set-models.mjs +186 -186
  52. package/src/set-phase.mjs +205 -205
  53. package/src/set-prefs.mjs +294 -294
  54. package/src/specs-sync.mjs +234 -0
  55. package/src/specs-sync.test.mjs +114 -0
  56. package/src/spine.mjs +93 -93
  57. package/src/triage-prompt.mjs +175 -175
  58. package/src/triage-prompt.test.mjs +50 -50
  59. package/src/vendor-openspec-overlays.mjs +176 -176
  60. package/src/vendor-openspec-overlays.test.mjs +62 -62
  61. package/vendor/skills/archive-to-adr/SKILL.md +149 -149
  62. package/vendor/skills/forge/SKILL.md +136 -136
  63. package/vendor/skills/forge/docs/forge.md +650 -647
  64. package/vendor/skills/forge/phases/brainstorm.md +23 -23
  65. package/vendor/skills/forge/phases/finish.md +90 -87
  66. package/vendor/skills/forge/phases/implement.md +77 -77
  67. package/vendor/skills/forge/phases/plan-openspec.md +60 -60
  68. package/vendor/skills/forge/phases/plan-specs.md +163 -117
  69. package/vendor/skills/forge/phases/review.md +25 -25
  70. package/vendor/skills/forge/phases/verify.md +124 -124
  71. package/vendor/skills/forge/references/forge-layout.md +85 -85
  72. package/vendor/skills/forge/references/pace.md +115 -115
  73. package/vendor/skills/forge/references/plan-routing.md +52 -51
  74. package/vendor/skills/forge/references/runtime-integrity.md +232 -232
  75. package/vendor/skills/forge/references/substantial-work.md +37 -37
  76. package/vendor/skills/forge/references/test-evidence.md +30 -30
  77. package/vendor/skills/forge/references/test-strategy.md +68 -68
  78. package/vendor/skills/forge/skills/subagent-driven-development/SKILL.md +87 -87
  79. package/vendor/skills/forge/subagents/final-reviewer-prompt.md +56 -56
  80. package/vendor/skills/forge/subagents/implementer-prompt.md +38 -38
  81. package/vendor/skills/git-resolve-adr-conflict/SKILL.md +132 -132
  82. package/vendor/skills/thorough-code-review/SKILL.md +290 -290
  83. package/vendor/skills/thorough-code-review/examples.md +133 -133
  84. package/vendor/skills/thorough-code-review/reference/accepted-risks.md +26 -26
  85. package/vendor/skills/thorough-code-review/reference/lenses.md +96 -96
  86. package/vendor/skills/thorough-code-review/reference/phase1-scout.md +62 -62
  87. package/vendor/skills/thorough-code-review/reference/phase2-skeptic.md +105 -105
  88. package/vendor/skills/thorough-code-review/reference/report-schema.json +222 -222
  89. package/vendor/skills/thorough-code-review/reference/report-template.md +115 -115
  90. package/vendor/skills/thorough-code-review/reference/severity-rubric.md +49 -49
  91. package/vendor/skills/thorough-code-review/reference/signals-preflight.md +55 -55
  92. package/vendor/templates/adr/README.md +7 -7
  93. package/vendor/templates/adr/decisions.md +141 -141
  94. package/vendor/templates/adr/hooks/check-pending-adrs.mjs +74 -74
  95. package/vendor/templates/adr/hooks/check-pending-adrs.sh +3 -3
  96. package/vendor/templates/adr/hooks/openspec-archive-agent-message.mjs +52 -52
  97. package/vendor/templates/adr/hooks/openspec-archive-agent-message.sh +3 -3
  98. package/vendor/templates/project/claude/commands/forge-apply.md +75 -75
  99. package/vendor/templates/project/claude/commands/forge-brainstorm.md +7 -7
  100. package/vendor/templates/project/claude/commands/forge-build.md +17 -17
  101. package/vendor/templates/project/claude/commands/forge-plan.md +12 -12
  102. package/vendor/templates/project/claude/commands/forge-skip.md +14 -14
  103. package/vendor/templates/project/claude/commands/forge-status.md +16 -16
  104. package/vendor/templates/project/claude/commands/forge.md +16 -16
  105. package/vendor/templates/project/claude/hooks/forge-prompt-hook.mjs +73 -73
  106. package/vendor/templates/project/claude/hooks/forge-session-start.mjs +19 -19
  107. package/vendor/templates/project/claude/hooks/forge-triage-hook.mjs +77 -77
  108. package/vendor/templates/project/cursor/commands/forge-apply.md +75 -75
  109. package/vendor/templates/project/cursor/commands/forge-brainstorm.md +10 -10
  110. package/vendor/templates/project/cursor/commands/forge-build.md +17 -17
  111. package/vendor/templates/project/cursor/commands/forge-plan.md +15 -15
  112. package/vendor/templates/project/cursor/commands/forge-skip.md +14 -14
  113. package/vendor/templates/project/cursor/commands/forge-status.md +16 -16
  114. package/vendor/templates/project/cursor/commands/forge.md +16 -16
  115. package/vendor/templates/project/cursor/hooks/forge-session-start.mjs +30 -30
  116. package/vendor/templates/project/cursor/hooks/forge-session-start.sh +3 -3
@@ -1,115 +1,115 @@
1
- # Code review report template
2
-
3
- **Generated, not hand-authored.** The JSON sidecar is the single source of truth; the paired markdown is produced from it by `review render --file <json>`. This file documents the structure the renderer emits — edit the JSON (and the renderer in the review CLI `lib.mjs`), never the `.md` directly.
4
-
5
- Path: `.reviews/<timestamp>-<scope-slug>-review.md` (or `-reverify.md` for fix verification), per [report-schema.json](report-schema.json).
6
-
7
- ---
8
-
9
- ```markdown
10
- # Code review — {SCOPE_DESCRIPTION}
11
-
12
- **Review ID:** {REVIEW_ID}
13
- **Kind:** review | reverify
14
- **Created:** {ISO_TIMESTAMP}
15
- **Scope:** {SCOPE_TYPE} — {SCOPE_DETAIL}
16
- **Lenses:** {LENS_LIST}
17
- **Parent report:** {PARENT_REVIEW_ID or —}
18
-
19
- ## Executive summary
20
-
21
- {TWO_TO_FOUR_SENTENCES: what was reviewed, verdict counts, overall risk posture.}
22
-
23
- ### Verdict counts
24
-
25
- | Verdict | Count |
26
- | ------- | ----- |
27
- | Confirmed | |
28
- | Downgraded | |
29
- | False positive | |
30
- | Needs decision | |
31
- | Resolved | |
32
- | Still open | |
33
- | Partially fixed | |
34
- | Regressed | |
35
-
36
- ### Top actions
37
-
38
- 1. {Highest priority confirmed/critical item}
39
- 2. {Second}
40
- 3. {Third}
41
-
42
- ---
43
-
44
- ## Critical
45
-
46
- ### {F-001}: {Short title}
47
-
48
- - **Lens:** security
49
- - **Location:** `path:line`
50
- - **Severity:** critical {or `minor (was important)` when downgraded}
51
- - **Verdict:** confirmed
52
- - **Claim:** ...
53
- - **Reason:** ...
54
- - **Second skeptic:** {only for dangerous-quadrant findings} verdict — reason
55
-
56
- {Repeat per finding}
57
-
58
- ---
59
-
60
- ## Important
61
-
62
- {Same structure}
63
-
64
- ---
65
-
66
- ## Minor
67
-
68
- {Same structure}
69
-
70
- ---
71
-
72
- ## Needs decision
73
-
74
- {Architectural items with `needs_decision` verdict — link ADRs if applicable}
75
-
76
- ---
77
-
78
- ## Coverage ledger
79
-
80
- {From the recall pass — files reviewed/skipped and active lenses that produced
81
- no findings, each with a one-line reason. Omitted when no `coverage` object.}
82
-
83
- ---
84
-
85
- ## Appendix A — Rejected findings (false positives)
86
-
87
- ### {F-00X}: {Short title}
88
-
89
- - **Claim:** ...
90
- - **Why rejected:** ...
91
-
92
- ---
93
-
94
- ## Appendix B — Dedupe pre-flight
95
-
96
- {If smells lens ran; else omit section}
97
-
98
- | ID | Location | Claim |
99
- | -- | -------- | ----- |
100
- | dup-001 | ... | ... |
101
-
102
- ---
103
-
104
- ## Appendix C — Method
105
-
106
- - Phase 1: Scout pass ({N} tentative findings)
107
- - Phase 2: Adversarial skeptic verification (severity-routed, budgeted)
108
- - {If reverify: Re-verification against parent report {PARENT_ID}}
109
- ```
110
-
111
- ## JSON sidecar
112
-
113
- Author the `.json` (the source of truth), then `review render` to (re)generate this markdown and `review export` to validate before handing off in CI contexts.
114
-
115
- Main report body includes only `confirmed` and `downgraded` findings (initial review) or `still_open`, `partially_fixed`, `regressed` (reverify). Render places `false_positive` in Appendix A automatically.
1
+ # Code review report template
2
+
3
+ **Generated, not hand-authored.** The JSON sidecar is the single source of truth; the paired markdown is produced from it by `review render --file <json>`. This file documents the structure the renderer emits — edit the JSON (and the renderer in the review CLI `lib.mjs`), never the `.md` directly.
4
+
5
+ Path: `.reviews/<timestamp>-<scope-slug>-review.md` (or `-reverify.md` for fix verification), per [report-schema.json](report-schema.json).
6
+
7
+ ---
8
+
9
+ ```markdown
10
+ # Code review — {SCOPE_DESCRIPTION}
11
+
12
+ **Review ID:** {REVIEW_ID}
13
+ **Kind:** review | reverify
14
+ **Created:** {ISO_TIMESTAMP}
15
+ **Scope:** {SCOPE_TYPE} — {SCOPE_DETAIL}
16
+ **Lenses:** {LENS_LIST}
17
+ **Parent report:** {PARENT_REVIEW_ID or —}
18
+
19
+ ## Executive summary
20
+
21
+ {TWO_TO_FOUR_SENTENCES: what was reviewed, verdict counts, overall risk posture.}
22
+
23
+ ### Verdict counts
24
+
25
+ | Verdict | Count |
26
+ | ------- | ----- |
27
+ | Confirmed | |
28
+ | Downgraded | |
29
+ | False positive | |
30
+ | Needs decision | |
31
+ | Resolved | |
32
+ | Still open | |
33
+ | Partially fixed | |
34
+ | Regressed | |
35
+
36
+ ### Top actions
37
+
38
+ 1. {Highest priority confirmed/critical item}
39
+ 2. {Second}
40
+ 3. {Third}
41
+
42
+ ---
43
+
44
+ ## Critical
45
+
46
+ ### {F-001}: {Short title}
47
+
48
+ - **Lens:** security
49
+ - **Location:** `path:line`
50
+ - **Severity:** critical {or `minor (was important)` when downgraded}
51
+ - **Verdict:** confirmed
52
+ - **Claim:** ...
53
+ - **Reason:** ...
54
+ - **Second skeptic:** {only for dangerous-quadrant findings} verdict — reason
55
+
56
+ {Repeat per finding}
57
+
58
+ ---
59
+
60
+ ## Important
61
+
62
+ {Same structure}
63
+
64
+ ---
65
+
66
+ ## Minor
67
+
68
+ {Same structure}
69
+
70
+ ---
71
+
72
+ ## Needs decision
73
+
74
+ {Architectural items with `needs_decision` verdict — link ADRs if applicable}
75
+
76
+ ---
77
+
78
+ ## Coverage ledger
79
+
80
+ {From the recall pass — files reviewed/skipped and active lenses that produced
81
+ no findings, each with a one-line reason. Omitted when no `coverage` object.}
82
+
83
+ ---
84
+
85
+ ## Appendix A — Rejected findings (false positives)
86
+
87
+ ### {F-00X}: {Short title}
88
+
89
+ - **Claim:** ...
90
+ - **Why rejected:** ...
91
+
92
+ ---
93
+
94
+ ## Appendix B — Dedupe pre-flight
95
+
96
+ {If smells lens ran; else omit section}
97
+
98
+ | ID | Location | Claim |
99
+ | -- | -------- | ----- |
100
+ | dup-001 | ... | ... |
101
+
102
+ ---
103
+
104
+ ## Appendix C — Method
105
+
106
+ - Phase 1: Scout pass ({N} tentative findings)
107
+ - Phase 2: Adversarial skeptic verification (severity-routed, budgeted)
108
+ - {If reverify: Re-verification against parent report {PARENT_ID}}
109
+ ```
110
+
111
+ ## JSON sidecar
112
+
113
+ Author the `.json` (the source of truth), then `review render` to (re)generate this markdown and `review export` to validate before handing off in CI contexts.
114
+
115
+ Main report body includes only `confirmed` and `downgraded` findings (initial review) or `still_open`, `partially_fixed`, `regressed` (reverify). Render places `false_positive` in Appendix A automatically.
@@ -1,49 +1,49 @@
1
- # Severity rubric
2
-
3
- Calibrate severity before Phase 2. Skeptics may **downgrade** with evidence; upgrade only with new evidence.
4
-
5
- ## Critical
6
-
7
- Must fix before merge or production. Examples:
8
-
9
- - Exploitable auth bypass or IDOR on production path
10
- - SQL/command injection with attacker-controlled input reaching sink
11
- - Secret or credential committed or logged
12
- - Data loss, corruption, or double-charge on money paths
13
- - Broken idempotency causing duplicate financial side effects
14
-
15
- ## Important
16
-
17
- Should fix soon; real defect or serious debt with plausible trigger. Examples:
18
-
19
- - Logic bug on common edge case (empty input, race under concurrency)
20
- - Missing authorization on sensitive internal endpoint (if not ADR-accepted)
21
- - Error responses cached by idempotency middleware
22
- - Test gap on behaviour-critical path
23
- - Significant duplication that must stay in sync (rule of three)
24
-
25
- ## Minor
26
-
27
- Nice to have; low likelihood or defense-in-depth. Examples:
28
-
29
- - Naming inconsistency
30
- - Missing progress indicator
31
- - Unlikely edge case with graceful degradation
32
- - Style nits not affecting behaviour
33
- - Pre-existing file size (only flag growth **this change** introduced)
34
-
35
- ## Needs decision (not a severity)
36
-
37
- Architectural or policy trade-off — route to `NEEDS_DECISION` verdict, not Critical by default.
38
-
39
- Examples: accepted inter-service trust model per ADR, intentional public surface, documented technical debt.
40
-
41
- ## Project-specific downgrades
42
-
43
- Before marking Critical/Important on themes covered by the project's accepted-risk digest, read that digest (and ADRs):
44
-
45
- - Formally accepted trust boundaries (e.g. LAN-only HMAC)
46
- - Documented intentional broad access patterns
47
- - Actor/header trust models bound by an upstream session
48
-
49
- Re-flag only if a listed re-open trigger has fired. See [accepted-risks.md](accepted-risks.md) and [examples/accepted-risks-janus.md](../examples/accepted-risks-janus.md).
1
+ # Severity rubric
2
+
3
+ Calibrate severity before Phase 2. Skeptics may **downgrade** with evidence; upgrade only with new evidence.
4
+
5
+ ## Critical
6
+
7
+ Must fix before merge or production. Examples:
8
+
9
+ - Exploitable auth bypass or IDOR on production path
10
+ - SQL/command injection with attacker-controlled input reaching sink
11
+ - Secret or credential committed or logged
12
+ - Data loss, corruption, or double-charge on money paths
13
+ - Broken idempotency causing duplicate financial side effects
14
+
15
+ ## Important
16
+
17
+ Should fix soon; real defect or serious debt with plausible trigger. Examples:
18
+
19
+ - Logic bug on common edge case (empty input, race under concurrency)
20
+ - Missing authorization on sensitive internal endpoint (if not ADR-accepted)
21
+ - Error responses cached by idempotency middleware
22
+ - Test gap on behaviour-critical path
23
+ - Significant duplication that must stay in sync (rule of three)
24
+
25
+ ## Minor
26
+
27
+ Nice to have; low likelihood or defense-in-depth. Examples:
28
+
29
+ - Naming inconsistency
30
+ - Missing progress indicator
31
+ - Unlikely edge case with graceful degradation
32
+ - Style nits not affecting behaviour
33
+ - Pre-existing file size (only flag growth **this change** introduced)
34
+
35
+ ## Needs decision (not a severity)
36
+
37
+ Architectural or policy trade-off — route to `NEEDS_DECISION` verdict, not Critical by default.
38
+
39
+ Examples: accepted inter-service trust model per ADR, intentional public surface, documented technical debt.
40
+
41
+ ## Project-specific downgrades
42
+
43
+ Before marking Critical/Important on themes covered by the project's accepted-risk digest, read that digest (and ADRs):
44
+
45
+ - Formally accepted trust boundaries (e.g. LAN-only HMAC)
46
+ - Documented intentional broad access patterns
47
+ - Actor/header trust models bound by an upstream session
48
+
49
+ Re-flag only if a listed re-open trigger has fired. See [accepted-risks.md](accepted-risks.md) and [examples/accepted-risks-janus.md](../examples/accepted-risks-janus.md).
@@ -1,55 +1,55 @@
1
- # Signals pre-flight
2
-
3
- Ground the scout in real tool output **before** reading code by hand. Tool-confirmed problems are facts, not guesses — they raise recall on the smells / contracts / tests / errors lenses and cut hallucinated findings.
4
-
5
- ## Steps
6
-
7
- 1. **Plan the commands.** Run the planner for the review scope:
8
-
9
- ```bash
10
- review signals --type branch # detect changed files vs main
11
- review signals --type uncommitted # working tree + untracked
12
- review signals --paths services/persona,services/mercury
13
- review signals --json # machine-readable
14
- ```
15
-
16
- It maps the scope to the **workspaces that own it** and prints the exact per-workspace grounding commands (this monorepo has no root typecheck — each package owns its scripts).
17
-
18
- 2. **Run the grounding commands** it lists, e.g.:
19
-
20
- ```bash
21
- npm run typecheck --workspace=your-workspace
22
- npm run test --workspace=your-workspace
23
- npm run lint --workspace=your-workspace
24
- ```
25
-
26
- Add, when available and relevant to the scope:
27
-
28
- - `npx knip` (or the repo's dead-code script) — unused exports / dead code → **smells**
29
- - the service's OpenAPI **route-parity** test — mounted routes vs registry → **contracts**
30
-
31
- 3. **Convert real failures to grounded tentative findings.** A type error, failing test, lint error, or dead export becomes an `F-###` (or `dup-###`) tentative finding with `confidence: high` and the tool output as `evidence`. Do **not** invent findings the tools did not support.
32
-
33
- 4. **Record what ran** in the report JSON `signals` object so the grounding is auditable:
34
-
35
- ```json
36
- "signals": {
37
- "tools": [
38
- { "name": "typecheck your-workspace", "status": "pass" },
39
- { "name": "test your-workspace", "status": "fail", "summary": "1 failing: consent.test.ts" },
40
- { "name": "knip", "status": "skipped", "summary": "not in scope" }
41
- ]
42
- }
43
- ```
44
-
45
- ## Rules
46
-
47
- - Read-only. The pre-flight never edits code.
48
- - Scope-bound. Run tools for the **workspaces in scope**, not the whole repo, unless the scope is repo-wide.
49
- - A passing tool is signal too — it lets the coverage pass mark a lens genuinely exercised.
50
- - If a tool can't run (missing script, environment), record it `skipped` with a reason rather than omitting it.
51
-
52
- ## Notes
53
-
54
- - The **dedupe pre-flight** (smells lens) is the same pattern with the `dedupe` skill as the tool; keep emitting `dup-###` findings and the `dedupe_preflight` summary.
55
- - Grounded findings at `critical`/`important` still go through Phase 2 — a failing test might be an intentional WIP. Below `important`, skip the skeptic: the tool output is the proof; the orchestrator just checks for intentional-WIP signals (commit message, TODO, user context) and records the verdict directly.
1
+ # Signals pre-flight
2
+
3
+ Ground the scout in real tool output **before** reading code by hand. Tool-confirmed problems are facts, not guesses — they raise recall on the smells / contracts / tests / errors lenses and cut hallucinated findings.
4
+
5
+ ## Steps
6
+
7
+ 1. **Plan the commands.** Run the planner for the review scope:
8
+
9
+ ```bash
10
+ review signals --type branch # detect changed files vs main
11
+ review signals --type uncommitted # working tree + untracked
12
+ review signals --paths services/persona,services/mercury
13
+ review signals --json # machine-readable
14
+ ```
15
+
16
+ It maps the scope to the **workspaces that own it** and prints the exact per-workspace grounding commands (this monorepo has no root typecheck — each package owns its scripts).
17
+
18
+ 2. **Run the grounding commands** it lists, e.g.:
19
+
20
+ ```bash
21
+ npm run typecheck --workspace=your-workspace
22
+ npm run test --workspace=your-workspace
23
+ npm run lint --workspace=your-workspace
24
+ ```
25
+
26
+ Add, when available and relevant to the scope:
27
+
28
+ - `npx knip` (or the repo's dead-code script) — unused exports / dead code → **smells**
29
+ - the service's OpenAPI **route-parity** test — mounted routes vs registry → **contracts**
30
+
31
+ 3. **Convert real failures to grounded tentative findings.** A type error, failing test, lint error, or dead export becomes an `F-###` (or `dup-###`) tentative finding with `confidence: high` and the tool output as `evidence`. Do **not** invent findings the tools did not support.
32
+
33
+ 4. **Record what ran** in the report JSON `signals` object so the grounding is auditable:
34
+
35
+ ```json
36
+ "signals": {
37
+ "tools": [
38
+ { "name": "typecheck your-workspace", "status": "pass" },
39
+ { "name": "test your-workspace", "status": "fail", "summary": "1 failing: consent.test.ts" },
40
+ { "name": "knip", "status": "skipped", "summary": "not in scope" }
41
+ ]
42
+ }
43
+ ```
44
+
45
+ ## Rules
46
+
47
+ - Read-only. The pre-flight never edits code.
48
+ - Scope-bound. Run tools for the **workspaces in scope**, not the whole repo, unless the scope is repo-wide.
49
+ - A passing tool is signal too — it lets the coverage pass mark a lens genuinely exercised.
50
+ - If a tool can't run (missing script, environment), record it `skipped` with a reason rather than omitting it.
51
+
52
+ ## Notes
53
+
54
+ - The **dedupe pre-flight** (smells lens) is the same pattern with the `dedupe` skill as the tool; keep emitting `dup-###` findings and the `dedupe_preflight` summary.
55
+ - Grounded findings at `critical`/`important` still go through Phase 2 — a failing test might be an intentional WIP. Below `important`, skip the skeptic: the tool output is the proof; the orchestrator just checks for intentional-WIP signals (commit message, TODO, user context) and records the verdict directly.
@@ -1,7 +1,7 @@
1
- # Architecture Decision Records
2
-
3
- Canonical index of ADRs for this project. See [decisions.md]({{DECISIONS_REL}}) for the full convention (when to write, template, cross-links with OpenSpec).
4
-
5
- | # | Title | Status | Date |
6
- | ----- | ----- | ------ | ---- |
7
- | <!-- add rows as ADRs are written: | NNNN | Title | Status | YYYY-MM-DD | --> |
1
+ # Architecture Decision Records
2
+
3
+ Canonical index of ADRs for this project. See [decisions.md]({{DECISIONS_REL}}) for the full convention (when to write, template, cross-links with OpenSpec).
4
+
5
+ | # | Title | Status | Date |
6
+ | ----- | ----- | ------ | ---- |
7
+ | <!-- add rows as ADRs are written: | NNNN | Title | Status | YYYY-MM-DD | --> |