projscan 4.14.0 → 4.15.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 (186) hide show
  1. package/README.md +71 -21
  2. package/dist/cli/commands/evidencePack.js +2 -0
  3. package/dist/cli/commands/evidencePack.js.map +1 -1
  4. package/dist/cli/commands/prove.js +172 -23
  5. package/dist/cli/commands/prove.js.map +1 -1
  6. package/dist/cli/commands/startConsole.d.ts +2 -2
  7. package/dist/cli/commands/startConsole.js +2 -260
  8. package/dist/cli/commands/startConsole.js.map +1 -1
  9. package/dist/cli/commands/startConsoleExecution.d.ts +5 -0
  10. package/dist/cli/commands/startConsoleExecution.js +108 -0
  11. package/dist/cli/commands/startConsoleExecution.js.map +1 -0
  12. package/dist/cli/commands/startConsoleMission.d.ts +6 -0
  13. package/dist/cli/commands/startConsoleMission.js +157 -0
  14. package/dist/cli/commands/startConsoleMission.js.map +1 -0
  15. package/dist/cli/commands/startMissionBundle.js +24 -27
  16. package/dist/cli/commands/startMissionBundle.js.map +1 -1
  17. package/dist/core/adoption.d.ts +8 -81
  18. package/dist/core/adoption.js +4 -549
  19. package/dist/core/adoption.js.map +1 -1
  20. package/dist/core/adoptionFirstRunDiagnostics.d.ts +20 -0
  21. package/dist/core/adoptionFirstRunDiagnostics.js +240 -0
  22. package/dist/core/adoptionFirstRunDiagnostics.js.map +1 -0
  23. package/dist/core/adoptionMcpConfig.d.ts +27 -0
  24. package/dist/core/adoptionMcpConfig.js +123 -0
  25. package/dist/core/adoptionMcpConfig.js.map +1 -0
  26. package/dist/core/adoptionMcpDoctor.d.ts +23 -0
  27. package/dist/core/adoptionMcpDoctor.js +87 -0
  28. package/dist/core/adoptionMcpDoctor.js.map +1 -0
  29. package/dist/core/adoptionWorkflowRecipes.d.ts +14 -0
  30. package/dist/core/adoptionWorkflowRecipes.js +110 -0
  31. package/dist/core/adoptionWorkflowRecipes.js.map +1 -0
  32. package/dist/core/bugHunt.js +26 -255
  33. package/dist/core/bugHunt.js.map +1 -1
  34. package/dist/core/bugHuntPreflightFindings.d.ts +2 -1
  35. package/dist/core/bugHuntPreflightFindings.js +20 -0
  36. package/dist/core/bugHuntPreflightFindings.js.map +1 -1
  37. package/dist/core/bugHuntReportAssembly.d.ts +20 -0
  38. package/dist/core/bugHuntReportAssembly.js +179 -0
  39. package/dist/core/bugHuntReportAssembly.js.map +1 -0
  40. package/dist/core/bugHuntSourceFindings.d.ts +3 -0
  41. package/dist/core/bugHuntSourceFindings.js +61 -0
  42. package/dist/core/bugHuntSourceFindings.js.map +1 -0
  43. package/dist/core/dogfood.js +4 -393
  44. package/dist/core/dogfood.js.map +1 -1
  45. package/dist/core/dogfoodMarketValidation.d.ts +5 -0
  46. package/dist/core/dogfoodMarketValidation.js +265 -0
  47. package/dist/core/dogfoodMarketValidation.js.map +1 -0
  48. package/dist/core/dogfoodRepoEvaluation.d.ts +4 -0
  49. package/dist/core/dogfoodRepoEvaluation.js +137 -0
  50. package/dist/core/dogfoodRepoEvaluation.js.map +1 -0
  51. package/dist/core/evidenceComment.js +50 -13
  52. package/dist/core/evidenceComment.js.map +1 -1
  53. package/dist/core/feedback.js +2 -252
  54. package/dist/core/feedback.js.map +1 -1
  55. package/dist/core/feedbackIntakeClassifier.d.ts +2 -0
  56. package/dist/core/feedbackIntakeClassifier.js +255 -0
  57. package/dist/core/feedbackIntakeClassifier.js.map +1 -0
  58. package/dist/core/intentRouterKeywordToolGuards.js +1 -55
  59. package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
  60. package/dist/core/intentRouterKeywordWeights.js +13 -28
  61. package/dist/core/intentRouterKeywordWeights.js.map +1 -1
  62. package/dist/core/intentRouterProductGuardSignals.d.ts +3 -0
  63. package/dist/core/intentRouterProductGuardSignals.js +59 -0
  64. package/dist/core/intentRouterProductGuardSignals.js.map +1 -0
  65. package/dist/core/markdownSafety.d.ts +3 -0
  66. package/dist/core/markdownSafety.js +14 -0
  67. package/dist/core/markdownSafety.js.map +1 -0
  68. package/dist/core/preflight.d.ts +2 -0
  69. package/dist/core/preflight.js.map +1 -1
  70. package/dist/core/preflightChangedFiles.d.ts +2 -0
  71. package/dist/core/preflightChangedFiles.js +1 -1
  72. package/dist/core/preflightChangedFiles.js.map +1 -1
  73. package/dist/core/preflightInputs.d.ts +2 -0
  74. package/dist/core/preflightInputs.js +5 -2
  75. package/dist/core/preflightInputs.js.map +1 -1
  76. package/dist/core/proofLedger.d.ts +5 -1
  77. package/dist/core/proofLedger.js +161 -12
  78. package/dist/core/proofLedger.js.map +1 -1
  79. package/dist/core/proofReplay.d.ts +9 -0
  80. package/dist/core/proofReplay.js +164 -0
  81. package/dist/core/proofReplay.js.map +1 -0
  82. package/dist/core/proofSufficiency.d.ts +19 -0
  83. package/dist/core/proofSufficiency.js +425 -0
  84. package/dist/core/proofSufficiency.js.map +1 -0
  85. package/dist/core/prove.d.ts +6 -0
  86. package/dist/core/prove.js +277 -87
  87. package/dist/core/prove.js.map +1 -1
  88. package/dist/core/qualityScorecard.js +8 -238
  89. package/dist/core/qualityScorecard.js.map +1 -1
  90. package/dist/core/qualityScorecardDimensions.d.ts +14 -0
  91. package/dist/core/qualityScorecardDimensions.js +99 -0
  92. package/dist/core/qualityScorecardDimensions.js.map +1 -0
  93. package/dist/core/qualityScorecardRisks.d.ts +8 -0
  94. package/dist/core/qualityScorecardRisks.js +107 -0
  95. package/dist/core/qualityScorecardRisks.js.map +1 -0
  96. package/dist/core/qualityScorecardSignals.d.ts +20 -0
  97. package/dist/core/qualityScorecardSignals.js +59 -0
  98. package/dist/core/qualityScorecardSignals.js.map +1 -0
  99. package/dist/core/releaseEvidence.d.ts +1 -0
  100. package/dist/core/releaseEvidence.js +15 -40
  101. package/dist/core/releaseEvidence.js.map +1 -1
  102. package/dist/core/releaseEvidenceBaseline.js +4 -1
  103. package/dist/core/releaseEvidenceBaseline.js.map +1 -1
  104. package/dist/core/releaseEvidenceProofReceipt.d.ts +6 -0
  105. package/dist/core/releaseEvidenceProofReceipt.js +140 -0
  106. package/dist/core/releaseEvidenceProofReceipt.js.map +1 -0
  107. package/dist/core/releaseEvidenceVerdict.d.ts +5 -2
  108. package/dist/core/releaseEvidenceVerdict.js +39 -1
  109. package/dist/core/releaseEvidenceVerdict.js.map +1 -1
  110. package/dist/core/repositoryScanner.d.ts +1 -0
  111. package/dist/core/repositoryScanner.js +5 -4
  112. package/dist/core/repositoryScanner.js.map +1 -1
  113. package/dist/core/sessionResources.d.ts +14 -2
  114. package/dist/core/sessionResources.js +3 -3
  115. package/dist/core/sessionResources.js.map +1 -1
  116. package/dist/core/startInputs.d.ts +1 -1
  117. package/dist/core/startIntentTargets.d.ts +1 -1
  118. package/dist/core/startIntentTargets.js +1 -16
  119. package/dist/core/startIntentTargets.js.map +1 -1
  120. package/dist/core/startMissionInputStatusPolicy.d.ts +7 -0
  121. package/dist/core/startMissionInputStatusPolicy.js +74 -0
  122. package/dist/core/startMissionInputStatusPolicy.js.map +1 -0
  123. package/dist/core/startMissionPolicy.d.ts +6 -15
  124. package/dist/core/startMissionPolicy.js +4 -305
  125. package/dist/core/startMissionPolicy.js.map +1 -1
  126. package/dist/core/startMissionProofPolicy.d.ts +6 -0
  127. package/dist/core/startMissionProofPolicy.js +84 -0
  128. package/dist/core/startMissionProofPolicy.js.map +1 -0
  129. package/dist/core/startMissionRiskPolicy.d.ts +4 -0
  130. package/dist/core/startMissionRiskPolicy.js +85 -0
  131. package/dist/core/startMissionRiskPolicy.js.map +1 -0
  132. package/dist/core/startMissionRoutingPolicy.d.ts +6 -0
  133. package/dist/core/startMissionRoutingPolicy.js +67 -0
  134. package/dist/core/startMissionRoutingPolicy.js.map +1 -0
  135. package/dist/core/startMode.d.ts +1 -2
  136. package/dist/core/startMode.js +4 -151
  137. package/dist/core/startMode.js.map +1 -1
  138. package/dist/core/startModeIntentPolicy.d.ts +12 -0
  139. package/dist/core/startModeIntentPolicy.js +41 -0
  140. package/dist/core/startModeIntentPolicy.js.map +1 -0
  141. package/dist/core/startModeRoutingPolicy.d.ts +4 -0
  142. package/dist/core/startModeRoutingPolicy.js +117 -0
  143. package/dist/core/startModeRoutingPolicy.js.map +1 -0
  144. package/dist/core/startSearchQueryTargets.d.ts +1 -0
  145. package/dist/core/startSearchQueryTargets.js +17 -0
  146. package/dist/core/startSearchQueryTargets.js.map +1 -0
  147. package/dist/core/workplan.d.ts +3 -2
  148. package/dist/core/workplan.js +11 -585
  149. package/dist/core/workplan.js.map +1 -1
  150. package/dist/core/workplanCoordinationTasks.d.ts +3 -0
  151. package/dist/core/workplanCoordinationTasks.js +82 -0
  152. package/dist/core/workplanCoordinationTasks.js.map +1 -0
  153. package/dist/core/workplanModeTasks.d.ts +2 -0
  154. package/dist/core/workplanModeTasks.js +192 -0
  155. package/dist/core/workplanModeTasks.js.map +1 -0
  156. package/dist/core/workplanPreflightTasks.d.ts +2 -0
  157. package/dist/core/workplanPreflightTasks.js +126 -0
  158. package/dist/core/workplanPreflightTasks.js.map +1 -0
  159. package/dist/core/workplanQualitySignals.d.ts +7 -0
  160. package/dist/core/workplanQualitySignals.js +63 -0
  161. package/dist/core/workplanQualitySignals.js.map +1 -0
  162. package/dist/core/workplanReport.d.ts +4 -0
  163. package/dist/core/workplanReport.js +79 -0
  164. package/dist/core/workplanReport.js.map +1 -0
  165. package/dist/core/workplanRiskOwnership.d.ts +5 -0
  166. package/dist/core/workplanRiskOwnership.js +97 -0
  167. package/dist/core/workplanRiskOwnership.js.map +1 -0
  168. package/dist/core/workplanSuggestedActions.d.ts +2 -0
  169. package/dist/core/workplanSuggestedActions.js +43 -0
  170. package/dist/core/workplanSuggestedActions.js.map +1 -0
  171. package/dist/mcp/tools/prove.js +23 -17
  172. package/dist/mcp/tools/prove.js.map +1 -1
  173. package/dist/projscan-sbom.cdx.json +6 -6
  174. package/dist/tool-manifest.json +2 -2
  175. package/dist/types/config.d.ts +15 -0
  176. package/dist/types/evidencePack.d.ts +21 -0
  177. package/dist/types/prove.d.ts +79 -0
  178. package/dist/utils/changedFiles.js +57 -16
  179. package/dist/utils/changedFiles.js.map +1 -1
  180. package/dist/utils/config.js +2 -0
  181. package/dist/utils/config.js.map +1 -1
  182. package/dist/utils/configProofRecipes.d.ts +2 -0
  183. package/dist/utils/configProofRecipes.js +91 -0
  184. package/dist/utils/configProofRecipes.js.map +1 -0
  185. package/docs/GUIDE.md +120 -19
  186. package/package.json +1 -1
@@ -2,7 +2,9 @@ import { analyzeHotspots } from './hotspotAnalyzer.js';
2
2
  import { collectIssues } from './issueEngine.js';
3
3
  import { fixFirstFromBugHuntFinding } from './fixFirst.js';
4
4
  import { hotspotToFinding } from './bugHuntHotspotFindings.js';
5
- import { filesFromPreflightEvidence, preflightReasonToFinding, } from './bugHuntPreflightFindings.js';
5
+ import { filesFromPreflightEvidence, isActionablePreflightReason, preflightReasonToFinding, } from './bugHuntPreflightFindings.js';
6
+ import { assembleBugHuntQueues, buildBugHuntVerificationMatrix, summarizeBugHunt, } from './bugHuntReportAssembly.js';
7
+ import { conflictToBugHuntFinding, issueToBugHuntFinding, } from './bugHuntSourceFindings.js';
6
8
  import { computePreflight } from './preflight.js';
7
9
  import { scanRepository } from './repositoryScanner.js';
8
10
  import { buildRiskNow } from './sessionResources.js';
@@ -13,7 +15,10 @@ const DEFAULT_MAX_FINDINGS = 10;
13
15
  export async function computeBugHunt(rootPath, options = {}) {
14
16
  const maxFindings = normalizeMax(options.maxFindings);
15
17
  const configResult = await loadConfig(rootPath).catch(() => ({ config: { ignore: [] } }));
16
- const scan = await scanRepository(rootPath, { ignore: configResult.config.ignore });
18
+ const scan = await scanRepository(rootPath, {
19
+ ignore: configResult.config.ignore,
20
+ countIgnoredFiles: false,
21
+ });
17
22
  const issues = applyConfigToIssues(await collectIssues(rootPath, scan.files), configResult.config);
18
23
  const health = calculateScore(issues);
19
24
  const preflight = await computePreflight(rootPath, { mode: 'before_commit' });
@@ -27,51 +32,35 @@ export async function computeBugHunt(rootPath, options = {}) {
27
32
  since: options.since,
28
33
  ...(graph ? { graph } : {}),
29
34
  });
30
- const findings = rankFindings([
31
- ...issues.map(issueToFinding),
32
- ...actionablePreflightReasons.map((reason, index) => preflightReasonToFinding(reason, index, preflightChangedFiles)),
33
- ...riskNow.conflicts.map(conflictToFinding),
34
- ...hotspotFindings(hotspots),
35
- ]);
36
- const concreteFixes = findings.filter(isConcreteFixFinding);
37
- const reviewFindings = findings.filter(isReviewOnlyFinding);
38
- const verdict = bugHuntVerdict(issues, concreteFixes, reviewFindings, actionablePreflightReasons);
39
- const fixQueue = bugHuntFixQueue(verdict, concreteFixes, maxFindings);
40
- const reviewQueue = bugHuntReviewQueue(reviewFindings, maxFindings);
41
- const topSuspects = bugHuntTopSuspects(findings, fixQueue, maxFindings);
42
- const fixFirst = fixFirstFromBugHuntFinding(fixQueue[0]);
35
+ const queues = assembleBugHuntQueues({
36
+ findings: [
37
+ ...issues.map(issueToBugHuntFinding),
38
+ ...actionablePreflightReasons.map((reason, index) => preflightReasonToFinding(reason, index, preflightChangedFiles)),
39
+ ...riskNow.conflicts.map(conflictToBugHuntFinding),
40
+ ...hotspotFindings(hotspots),
41
+ ],
42
+ issues,
43
+ actionablePreflightReasons,
44
+ maxFindings,
45
+ });
46
+ const fixFirst = fixFirstFromBugHuntFinding(queues.fixQueue[0]);
43
47
  return {
44
48
  schemaVersion: 1,
45
- verdict,
46
- summary: summarize(verdict, fixQueue, reviewQueue),
49
+ verdict: queues.verdict,
50
+ summary: summarizeBugHunt(queues.verdict, queues.fixQueue, queues.reviewQueue),
47
51
  health,
48
52
  evidence: bugHuntEvidence(health, hotspots.available ? hotspots.hotspots.length : 0, preflight.verdict, actionablePreflightReasons.length, ignoredPreflightReasonCount, riskNow),
49
- topSuspects,
50
- fixQueue,
51
- reviewQueue,
53
+ topSuspects: queues.topSuspects,
54
+ fixQueue: queues.fixQueue,
55
+ reviewQueue: queues.reviewQueue,
52
56
  ...(fixFirst ? { fixFirst } : {}),
53
- verificationMatrix: buildVerificationMatrix(verdict, fixQueue),
54
- ...(bugHuntIsTruncated(findings, topSuspects, verdict, concreteFixes, fixQueue, reviewFindings, reviewQueue)
55
- ? { truncated: true }
56
- : {}),
57
+ verificationMatrix: buildBugHuntVerificationMatrix(queues.verdict, queues.fixQueue),
58
+ ...(queues.truncated ? { truncated: true } : {}),
57
59
  };
58
60
  }
59
61
  function hotspotFindings(hotspots) {
60
62
  return hotspots.available ? hotspots.hotspots.map(hotspotToFinding) : [];
61
63
  }
62
- function bugHuntFixQueue(verdict, immediateFixes, maxFindings) {
63
- if (verdict === 'review')
64
- return [];
65
- if (immediateFixes.length > 0)
66
- return immediateFixes.slice(0, maxFindings);
67
- return verdict === 'clean' ? [cleanVerificationFinding()] : [];
68
- }
69
- function bugHuntTopSuspects(findings, fixQueue, maxFindings) {
70
- return findings.length > 0 ? findings.slice(0, maxFindings) : fixQueue;
71
- }
72
- function bugHuntReviewQueue(reviewFindings, maxFindings) {
73
- return reviewFindings.slice(0, maxFindings);
74
- }
75
64
  function bugHuntEvidence(health, hotspotCount, preflightVerdict, preflightActionableReasonCount, preflightIgnoredReasonCount, riskNow) {
76
65
  return {
77
66
  issueCounts: {
@@ -87,178 +76,6 @@ function bugHuntEvidence(health, hotspotCount, preflightVerdict, preflightAction
87
76
  conflicts: riskNow.conflicts.length,
88
77
  };
89
78
  }
90
- function bugHuntIsTruncated(findings, topSuspects, verdict, concreteFixes, fixQueue, reviewFindings, reviewQueue) {
91
- return (findings.length > topSuspects.length ||
92
- (verdict !== 'review' && concreteFixes.length > fixQueue.length) ||
93
- reviewFindings.length > reviewQueue.length);
94
- }
95
- function issueToFinding(issue) {
96
- const files = filesFromIssue(issue);
97
- return {
98
- id: `bh-issue-${issue.id}`,
99
- priority: severityPriority(issue.severity),
100
- source: 'doctor',
101
- title: issue.title,
102
- why: issue.description,
103
- files,
104
- evidence: [
105
- {
106
- source: 'doctor',
107
- severity: issue.severity,
108
- issueId: issue.id,
109
- message: issue.title,
110
- ...(files[0] ? { file: files[0] } : {}),
111
- },
112
- ],
113
- suggestedTools: issue.fixAvailable
114
- ? ['projscan_explain_issue', 'projscan_fix_suggest', 'projscan_apply_fix']
115
- : ['projscan_explain_issue', 'projscan_doctor'],
116
- verification: {
117
- commands: ['projscan doctor --format json', 'npm test'],
118
- expected: `Issue ${issue.id} no longer appears in projscan doctor and focused tests pass.`,
119
- },
120
- };
121
- }
122
- function conflictToFinding(conflict, index) {
123
- return {
124
- id: `bh-session-${index + 1}`,
125
- priority: conflict.severity === 'error' ? 'p0' : 'p1',
126
- source: 'session',
127
- title: 'Resolve active coordination conflict',
128
- why: conflict.message,
129
- files: conflict.files,
130
- evidence: [
131
- {
132
- source: 'coordination',
133
- severity: conflict.severity,
134
- message: conflict.message,
135
- ...(conflict.files[0] ? { file: conflict.files[0] } : {}),
136
- },
137
- ],
138
- suggestedTools: ['projscan_session', 'projscan_workplan'],
139
- verification: {
140
- commands: ['projscan session touched --format json', 'projscan bug-hunt --format json'],
141
- expected: 'Touched-file overlap is understood and no coordination blocker remains.',
142
- },
143
- };
144
- }
145
- function cleanVerificationFinding() {
146
- return {
147
- id: 'bh-verify-clean',
148
- priority: 'p2',
149
- source: 'verification',
150
- title: 'Verify the clean bug-hunt baseline',
151
- why: 'No immediate doctor, preflight, session, or hotspot findings were found. Preserve that state with repeatable verification.',
152
- files: [],
153
- evidence: [{ source: 'verification', message: 'bug hunt found no ranked suspects' }],
154
- suggestedTools: ['projscan_doctor', 'projscan_preflight', 'projscan_workplan'],
155
- verification: {
156
- commands: [
157
- 'projscan doctor --format json',
158
- 'projscan preflight --mode before_commit --format json',
159
- 'npm test',
160
- ],
161
- expected: 'The clean baseline remains reproducible before handoff.',
162
- },
163
- };
164
- }
165
- function rankFindings(findings) {
166
- const seen = new Set();
167
- return findings
168
- .map((finding, index) => ({ finding, index }))
169
- .filter((entry) => {
170
- const { finding } = entry;
171
- if (seen.has(finding.id))
172
- return false;
173
- seen.add(finding.id);
174
- return true;
175
- })
176
- .sort((a, b) => {
177
- const priority = priorityRank(a.finding.priority) - priorityRank(b.finding.priority);
178
- if (priority !== 0)
179
- return priority;
180
- return sourceRank(a.finding.source) - sourceRank(b.finding.source) || a.index - b.index;
181
- })
182
- .map((entry) => entry.finding);
183
- }
184
- function buildVerificationMatrix(verdict, fixQueue) {
185
- if (verdict === 'review' || (fixQueue.length > 0 && fixQueue.every(isReleaseSignoffFinding))) {
186
- return [
187
- {
188
- command: 'projscan preflight --mode before_commit --format json',
189
- reason: 'Confirms the manual sign-off gate and any remaining concrete blockers.',
190
- expected: 'Manual sign-off is documented, or the preflight verdict returns proceed after review.',
191
- },
192
- {
193
- command: 'projscan doctor --format json',
194
- reason: 'Confirms no concrete doctor issue is hidden behind the review gate.',
195
- expected: 'No unresolved error-level issues and expected warning count is explained.',
196
- },
197
- ];
198
- }
199
- return [
200
- {
201
- command: 'projscan doctor --format json',
202
- reason: 'Confirms the issue queue after fixes.',
203
- expected: 'No unresolved error-level issues and expected warning count is explained.',
204
- },
205
- {
206
- command: 'projscan preflight --mode before_commit --format json',
207
- reason: 'Checks whether an agent can safely hand off or commit.',
208
- expected: verdict === 'block'
209
- ? 'Verdict improves from block after p0 fixes.'
210
- : 'Verdict is proceed or documented caution.',
211
- },
212
- {
213
- command: 'npm test',
214
- reason: 'Keeps the bug hunt tied to repeatable regression coverage.',
215
- expected: 'Focused tests and the project test suite pass.',
216
- },
217
- ];
218
- }
219
- function isConcreteFixFinding(finding) {
220
- return isImmediateFixFinding(finding) && !isReviewOnlyFinding(finding);
221
- }
222
- function isImmediateFixFinding(finding) {
223
- if (finding.source === 'verification')
224
- return false;
225
- if (finding.source !== 'hotspot')
226
- return true;
227
- return finding.evidence.some((entry) => typeof entry.issueId === 'string' && entry.issueId.length > 0);
228
- }
229
- function bugHuntVerdict(issues, concreteFixes, reviewFindings, actionablePreflightReasons) {
230
- if (issues.some((issue) => issue.severity === 'error') ||
231
- actionablePreflightReasons.some((reason) => reason.severity === 'error')) {
232
- return 'block';
233
- }
234
- if (concreteFixes.length > 0)
235
- return 'fix';
236
- if (reviewFindings.length > 0)
237
- return 'review';
238
- if (actionablePreflightReasons.length > 0)
239
- return 'fix';
240
- return 'clean';
241
- }
242
- function isActionablePreflightReason(reason, evidence) {
243
- if (isBranchOnlyReleaseScaleReason(reason, evidence))
244
- return false;
245
- if (reason.source === 'review' && reason.message.startsWith('Review unavailable:'))
246
- return false;
247
- if ((reason.source === 'review' || reason.source === 'taint') &&
248
- !reason.file &&
249
- !reason.issueId) {
250
- return false;
251
- }
252
- if (reason.severity === 'error')
253
- return true;
254
- return reason.source !== 'git' && reason.source !== 'changed-files';
255
- }
256
- function isBranchOnlyReleaseScaleReason(reason, evidence) {
257
- const worktree = evidence.riskSources?.currentWorktree;
258
- return (reason.source === 'release' &&
259
- worktree?.uncommittedChangedFileCount === 0 &&
260
- (worktree.branchChangedFileCount ?? 0) > 0);
261
- }
262
79
  async function safeRiskNow(rootPath) {
263
80
  try {
264
81
  return await buildRiskNow(rootPath);
@@ -267,52 +84,6 @@ async function safeRiskNow(rootPath) {
267
84
  return { touchedFiles: [], conflicts: [] };
268
85
  }
269
86
  }
270
- function summarize(verdict, fixQueue, reviewQueue) {
271
- const queueLength = fixQueue.length;
272
- if (verdict === 'clean')
273
- return 'clean: bug hunt found no immediate fix targets; verify the baseline';
274
- if (verdict === 'block')
275
- return `block: bug hunt found ${queueLength} high-priority fix target(s)`;
276
- if (verdict === 'review' || (fixQueue.length > 0 && fixQueue.every(isReleaseSignoffFinding))) {
277
- const reviewCount = reviewQueue.length || queueLength;
278
- return `review: bug hunt found ${reviewCount} manual sign-off action(s)`;
279
- }
280
- return `fix: bug hunt found ${queueLength} prioritized fix target(s)`;
281
- }
282
- function isReviewOnlyFinding(finding) {
283
- return isReleaseSignoffFinding(finding);
284
- }
285
- function isReleaseSignoffFinding(finding) {
286
- return (finding.source === 'preflight' && finding.evidence.some((entry) => entry.source === 'release'));
287
- }
288
- function filesFromIssue(issue) {
289
- return [...new Set((issue.locations ?? []).map((location) => location.file).filter(Boolean))];
290
- }
291
- function severityPriority(severity) {
292
- if (severity === 'error')
293
- return 'p0';
294
- if (severity === 'warning')
295
- return 'p1';
296
- return 'p2';
297
- }
298
- function priorityRank(priority) {
299
- if (priority === 'p0')
300
- return 0;
301
- if (priority === 'p1')
302
- return 1;
303
- return 2;
304
- }
305
- function sourceRank(source) {
306
- if (source === 'doctor')
307
- return 0;
308
- if (source === 'preflight')
309
- return 1;
310
- if (source === 'session')
311
- return 2;
312
- if (source === 'hotspot')
313
- return 3;
314
- return 4;
315
- }
316
87
  function normalizeMax(value) {
317
88
  if (typeof value !== 'number' || !Number.isFinite(value))
318
89
  return DEFAULT_MAX_FINDINGS;
@@ -1 +1 @@
1
- {"version":3,"file":"bugHunt.js","sourceRoot":"","sources":["../../src/core/bugHunt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bugHunt.js","sourceRoot":"","sources":["../../src/core/bugHunt.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- import type { BugHuntFinding, PreflightReason } from '../types.js';
1
+ import type { BugHuntFinding, PreflightEvidence, PreflightReason } from '../types.js';
2
2
  export declare function preflightReasonToFinding(reason: PreflightReason, index: number, changedFiles?: string[]): BugHuntFinding;
3
3
  export declare function filesFromPreflightEvidence(files: string[]): string[];
4
+ export declare function isActionablePreflightReason(reason: PreflightReason, evidence: PreflightEvidence): boolean;
@@ -37,6 +37,26 @@ export function filesFromPreflightEvidence(files) {
37
37
  const runtimeFiles = contextFiles.filter(isAgentRuntimePath);
38
38
  return [...reviewableFiles, ...runtimeFiles];
39
39
  }
40
+ export function isActionablePreflightReason(reason, evidence) {
41
+ if (isBranchOnlyReleaseScaleReason(reason, evidence))
42
+ return false;
43
+ if (reason.source === 'review' && reason.message.startsWith('Review unavailable:'))
44
+ return false;
45
+ if ((reason.source === 'review' || reason.source === 'taint') &&
46
+ !reason.file &&
47
+ !reason.issueId) {
48
+ return false;
49
+ }
50
+ if (reason.severity === 'error')
51
+ return true;
52
+ return reason.source !== 'git' && reason.source !== 'changed-files';
53
+ }
54
+ function isBranchOnlyReleaseScaleReason(reason, evidence) {
55
+ const worktree = evidence.riskSources?.currentWorktree;
56
+ return (reason.source === 'release' &&
57
+ worktree?.uncommittedChangedFileCount === 0 &&
58
+ (worktree.branchChangedFileCount ?? 0) > 0);
59
+ }
40
60
  function preflightReasonTitle(reason) {
41
61
  if (reason.source === 'release') {
42
62
  return /handoff review|manual review sign-off/i.test(reason.message)
@@ -1 +1 @@
1
- {"version":3,"file":"bugHuntPreflightFindings.js","sourceRoot":"","sources":["../../src/core/bugHuntPreflightFindings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bugHuntPreflightFindings.js","sourceRoot":"","sources":["../../src/core/bugHuntPreflightFindings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { BugHuntFinding, BugHuntReport, BugHuntVerdict, Issue, PreflightReason } from '../types.js';
2
+ export interface BugHuntQueueAssemblyInput {
3
+ findings: BugHuntFinding[];
4
+ issues: Issue[];
5
+ actionablePreflightReasons: PreflightReason[];
6
+ maxFindings: number;
7
+ }
8
+ export interface BugHuntQueueAssembly {
9
+ rankedFindings: BugHuntFinding[];
10
+ concreteFixes: BugHuntFinding[];
11
+ reviewFindings: BugHuntFinding[];
12
+ verdict: BugHuntVerdict;
13
+ fixQueue: BugHuntFinding[];
14
+ reviewQueue: BugHuntFinding[];
15
+ topSuspects: BugHuntFinding[];
16
+ truncated: boolean;
17
+ }
18
+ export declare function assembleBugHuntQueues({ findings, issues, actionablePreflightReasons, maxFindings, }: BugHuntQueueAssemblyInput): BugHuntQueueAssembly;
19
+ export declare function summarizeBugHunt(verdict: BugHuntVerdict, fixQueue: BugHuntFinding[], reviewQueue: BugHuntFinding[]): string;
20
+ export declare function buildBugHuntVerificationMatrix(verdict: BugHuntVerdict, fixQueue: BugHuntFinding[]): BugHuntReport['verificationMatrix'];
@@ -0,0 +1,179 @@
1
+ export function assembleBugHuntQueues({ findings, issues, actionablePreflightReasons, maxFindings, }) {
2
+ const rankedFindings = rankFindings(findings);
3
+ const concreteFixes = rankedFindings.filter(isConcreteFixFinding);
4
+ const reviewFindings = rankedFindings.filter(isReviewOnlyFinding);
5
+ const verdict = bugHuntVerdict(issues, concreteFixes, reviewFindings, actionablePreflightReasons);
6
+ const fixQueue = bugHuntFixQueue(verdict, concreteFixes, maxFindings);
7
+ const reviewQueue = bugHuntReviewQueue(reviewFindings, maxFindings);
8
+ const topSuspects = bugHuntTopSuspects(rankedFindings, fixQueue, maxFindings);
9
+ return {
10
+ rankedFindings,
11
+ concreteFixes,
12
+ reviewFindings,
13
+ verdict,
14
+ fixQueue,
15
+ reviewQueue,
16
+ topSuspects,
17
+ truncated: bugHuntIsTruncated(rankedFindings, topSuspects, verdict, concreteFixes, fixQueue, reviewFindings, reviewQueue),
18
+ };
19
+ }
20
+ export function summarizeBugHunt(verdict, fixQueue, reviewQueue) {
21
+ const queueLength = fixQueue.length;
22
+ if (verdict === 'clean')
23
+ return 'clean: bug hunt found no immediate fix targets; verify the baseline';
24
+ if (verdict === 'block')
25
+ return `block: bug hunt found ${queueLength} high-priority fix target(s)`;
26
+ if (verdict === 'review' || (fixQueue.length > 0 && fixQueue.every(isReleaseSignoffFinding))) {
27
+ const reviewCount = reviewQueue.length || queueLength;
28
+ return `review: bug hunt found ${reviewCount} manual sign-off action(s)`;
29
+ }
30
+ return `fix: bug hunt found ${queueLength} prioritized fix target(s)`;
31
+ }
32
+ export function buildBugHuntVerificationMatrix(verdict, fixQueue) {
33
+ return needsManualSignoffVerification(verdict, fixQueue)
34
+ ? manualSignoffVerificationMatrix()
35
+ : fixVerificationMatrix(verdict);
36
+ }
37
+ function bugHuntFixQueue(verdict, immediateFixes, maxFindings) {
38
+ if (verdict === 'review')
39
+ return [];
40
+ if (immediateFixes.length > 0)
41
+ return immediateFixes.slice(0, maxFindings);
42
+ return verdict === 'clean' ? [cleanVerificationFinding()] : [];
43
+ }
44
+ function bugHuntTopSuspects(findings, fixQueue, maxFindings) {
45
+ return findings.length > 0 ? findings.slice(0, maxFindings) : fixQueue;
46
+ }
47
+ function bugHuntReviewQueue(reviewFindings, maxFindings) {
48
+ return reviewFindings.slice(0, maxFindings);
49
+ }
50
+ function bugHuntIsTruncated(findings, topSuspects, verdict, concreteFixes, fixQueue, reviewFindings, reviewQueue) {
51
+ return (findings.length > topSuspects.length ||
52
+ (verdict !== 'review' && concreteFixes.length > fixQueue.length) ||
53
+ reviewFindings.length > reviewQueue.length);
54
+ }
55
+ function cleanVerificationFinding() {
56
+ return {
57
+ id: 'bh-verify-clean',
58
+ priority: 'p2',
59
+ source: 'verification',
60
+ title: 'Verify the clean bug-hunt baseline',
61
+ why: 'No immediate doctor, preflight, session, or hotspot findings were found. Preserve that state with repeatable verification.',
62
+ files: [],
63
+ evidence: [{ source: 'verification', message: 'bug hunt found no ranked suspects' }],
64
+ suggestedTools: ['projscan_doctor', 'projscan_preflight', 'projscan_workplan'],
65
+ verification: {
66
+ commands: [
67
+ 'projscan doctor --format json',
68
+ 'projscan preflight --mode before_commit --format json',
69
+ 'npm test',
70
+ ],
71
+ expected: 'The clean baseline remains reproducible before handoff.',
72
+ },
73
+ };
74
+ }
75
+ function rankFindings(findings) {
76
+ const seen = new Set();
77
+ return findings
78
+ .map((finding, index) => ({ finding, index }))
79
+ .filter((entry) => {
80
+ const { finding } = entry;
81
+ if (seen.has(finding.id))
82
+ return false;
83
+ seen.add(finding.id);
84
+ return true;
85
+ })
86
+ .sort((a, b) => {
87
+ const priority = priorityRank(a.finding.priority) - priorityRank(b.finding.priority);
88
+ if (priority !== 0)
89
+ return priority;
90
+ return sourceRank(a.finding.source) - sourceRank(b.finding.source) || a.index - b.index;
91
+ })
92
+ .map((entry) => entry.finding);
93
+ }
94
+ function needsManualSignoffVerification(verdict, fixQueue) {
95
+ return verdict === 'review' || (fixQueue.length > 0 && fixQueue.every(isReleaseSignoffFinding));
96
+ }
97
+ function manualSignoffVerificationMatrix() {
98
+ return [
99
+ {
100
+ command: 'projscan preflight --mode before_commit --format json',
101
+ reason: 'Confirms the manual sign-off gate and any remaining concrete blockers.',
102
+ expected: 'Manual sign-off is documented, or the preflight verdict returns proceed after review.',
103
+ },
104
+ {
105
+ command: 'projscan doctor --format json',
106
+ reason: 'Confirms no concrete doctor issue is hidden behind the review gate.',
107
+ expected: 'No unresolved error-level issues and expected warning count is explained.',
108
+ },
109
+ ];
110
+ }
111
+ function fixVerificationMatrix(verdict) {
112
+ return [
113
+ {
114
+ command: 'projscan doctor --format json',
115
+ reason: 'Confirms the issue queue after fixes.',
116
+ expected: 'No unresolved error-level issues and expected warning count is explained.',
117
+ },
118
+ {
119
+ command: 'projscan preflight --mode before_commit --format json',
120
+ reason: 'Checks whether an agent can safely hand off or commit.',
121
+ expected: verdict === 'block'
122
+ ? 'Verdict improves from block after p0 fixes.'
123
+ : 'Verdict is proceed or documented caution.',
124
+ },
125
+ {
126
+ command: 'npm test',
127
+ reason: 'Keeps the bug hunt tied to repeatable regression coverage.',
128
+ expected: 'Focused tests and the project test suite pass.',
129
+ },
130
+ ];
131
+ }
132
+ function isConcreteFixFinding(finding) {
133
+ return isImmediateFixFinding(finding) && !isReviewOnlyFinding(finding);
134
+ }
135
+ function isImmediateFixFinding(finding) {
136
+ if (finding.source === 'verification')
137
+ return false;
138
+ if (finding.source !== 'hotspot')
139
+ return true;
140
+ return finding.evidence.some((entry) => typeof entry.issueId === 'string' && entry.issueId.length > 0);
141
+ }
142
+ function bugHuntVerdict(issues, concreteFixes, reviewFindings, actionablePreflightReasons) {
143
+ if (issues.some((issue) => issue.severity === 'error') ||
144
+ actionablePreflightReasons.some((reason) => reason.severity === 'error')) {
145
+ return 'block';
146
+ }
147
+ if (concreteFixes.length > 0)
148
+ return 'fix';
149
+ if (reviewFindings.length > 0)
150
+ return 'review';
151
+ if (actionablePreflightReasons.length > 0)
152
+ return 'fix';
153
+ return 'clean';
154
+ }
155
+ function isReviewOnlyFinding(finding) {
156
+ return isReleaseSignoffFinding(finding);
157
+ }
158
+ function isReleaseSignoffFinding(finding) {
159
+ return (finding.source === 'preflight' && finding.evidence.some((entry) => entry.source === 'release'));
160
+ }
161
+ function priorityRank(priority) {
162
+ if (priority === 'p0')
163
+ return 0;
164
+ if (priority === 'p1')
165
+ return 1;
166
+ return 2;
167
+ }
168
+ function sourceRank(source) {
169
+ if (source === 'doctor')
170
+ return 0;
171
+ if (source === 'preflight')
172
+ return 1;
173
+ if (source === 'session')
174
+ return 2;
175
+ if (source === 'hotspot')
176
+ return 3;
177
+ return 4;
178
+ }
179
+ //# sourceMappingURL=bugHuntReportAssembly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bugHuntReportAssembly.js","sourceRoot":"","sources":["../../src/core/bugHuntReportAssembly.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BugHuntFinding, Issue, SessionConflict } from '../types.js';
2
+ export declare function issueToBugHuntFinding(issue: Issue): BugHuntFinding;
3
+ export declare function conflictToBugHuntFinding(conflict: SessionConflict, index: number): BugHuntFinding;