projscan 4.14.0 → 4.16.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 (199) hide show
  1. package/README.md +103 -21
  2. package/dist/cli/commands/assess.js +36 -2
  3. package/dist/cli/commands/assess.js.map +1 -1
  4. package/dist/cli/commands/evidencePack.js +2 -0
  5. package/dist/cli/commands/evidencePack.js.map +1 -1
  6. package/dist/cli/commands/prove.js +172 -23
  7. package/dist/cli/commands/prove.js.map +1 -1
  8. package/dist/cli/commands/startConsole.d.ts +2 -2
  9. package/dist/cli/commands/startConsole.js +2 -260
  10. package/dist/cli/commands/startConsole.js.map +1 -1
  11. package/dist/cli/commands/startConsoleExecution.d.ts +5 -0
  12. package/dist/cli/commands/startConsoleExecution.js +108 -0
  13. package/dist/cli/commands/startConsoleExecution.js.map +1 -0
  14. package/dist/cli/commands/startConsoleMission.d.ts +6 -0
  15. package/dist/cli/commands/startConsoleMission.js +157 -0
  16. package/dist/cli/commands/startConsoleMission.js.map +1 -0
  17. package/dist/cli/commands/startMissionBundle.js +24 -27
  18. package/dist/cli/commands/startMissionBundle.js.map +1 -1
  19. package/dist/core/adoption.d.ts +8 -81
  20. package/dist/core/adoption.js +4 -549
  21. package/dist/core/adoption.js.map +1 -1
  22. package/dist/core/adoptionFirstRunDiagnostics.d.ts +20 -0
  23. package/dist/core/adoptionFirstRunDiagnostics.js +240 -0
  24. package/dist/core/adoptionFirstRunDiagnostics.js.map +1 -0
  25. package/dist/core/adoptionMcpConfig.d.ts +27 -0
  26. package/dist/core/adoptionMcpConfig.js +123 -0
  27. package/dist/core/adoptionMcpConfig.js.map +1 -0
  28. package/dist/core/adoptionMcpDoctor.d.ts +23 -0
  29. package/dist/core/adoptionMcpDoctor.js +87 -0
  30. package/dist/core/adoptionMcpDoctor.js.map +1 -0
  31. package/dist/core/adoptionWorkflowRecipes.d.ts +14 -0
  32. package/dist/core/adoptionWorkflowRecipes.js +110 -0
  33. package/dist/core/adoptionWorkflowRecipes.js.map +1 -0
  34. package/dist/core/baseframeAssessment.d.ts +9 -0
  35. package/dist/core/baseframeAssessment.js +471 -0
  36. package/dist/core/baseframeAssessment.js.map +1 -0
  37. package/dist/core/bugHunt.js +26 -255
  38. package/dist/core/bugHunt.js.map +1 -1
  39. package/dist/core/bugHuntPreflightFindings.d.ts +2 -1
  40. package/dist/core/bugHuntPreflightFindings.js +20 -0
  41. package/dist/core/bugHuntPreflightFindings.js.map +1 -1
  42. package/dist/core/bugHuntReportAssembly.d.ts +20 -0
  43. package/dist/core/bugHuntReportAssembly.js +179 -0
  44. package/dist/core/bugHuntReportAssembly.js.map +1 -0
  45. package/dist/core/bugHuntSourceFindings.d.ts +3 -0
  46. package/dist/core/bugHuntSourceFindings.js +61 -0
  47. package/dist/core/bugHuntSourceFindings.js.map +1 -0
  48. package/dist/core/dogfood.js +4 -393
  49. package/dist/core/dogfood.js.map +1 -1
  50. package/dist/core/dogfoodMarketValidation.d.ts +5 -0
  51. package/dist/core/dogfoodMarketValidation.js +265 -0
  52. package/dist/core/dogfoodMarketValidation.js.map +1 -0
  53. package/dist/core/dogfoodRepoEvaluation.d.ts +4 -0
  54. package/dist/core/dogfoodRepoEvaluation.js +137 -0
  55. package/dist/core/dogfoodRepoEvaluation.js.map +1 -0
  56. package/dist/core/evidenceComment.js +50 -13
  57. package/dist/core/evidenceComment.js.map +1 -1
  58. package/dist/core/feedback.js +2 -252
  59. package/dist/core/feedback.js.map +1 -1
  60. package/dist/core/feedbackIntakeClassifier.d.ts +2 -0
  61. package/dist/core/feedbackIntakeClassifier.js +255 -0
  62. package/dist/core/feedbackIntakeClassifier.js.map +1 -0
  63. package/dist/core/intentRouterKeywordToolGuards.js +1 -55
  64. package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
  65. package/dist/core/intentRouterKeywordWeights.js +13 -28
  66. package/dist/core/intentRouterKeywordWeights.js.map +1 -1
  67. package/dist/core/intentRouterProductGuardSignals.d.ts +3 -0
  68. package/dist/core/intentRouterProductGuardSignals.js +59 -0
  69. package/dist/core/intentRouterProductGuardSignals.js.map +1 -0
  70. package/dist/core/markdownSafety.d.ts +3 -0
  71. package/dist/core/markdownSafety.js +14 -0
  72. package/dist/core/markdownSafety.js.map +1 -0
  73. package/dist/core/preflight.d.ts +2 -0
  74. package/dist/core/preflight.js.map +1 -1
  75. package/dist/core/preflightChangedFiles.d.ts +2 -0
  76. package/dist/core/preflightChangedFiles.js +1 -1
  77. package/dist/core/preflightChangedFiles.js.map +1 -1
  78. package/dist/core/preflightInputs.d.ts +2 -0
  79. package/dist/core/preflightInputs.js +5 -2
  80. package/dist/core/preflightInputs.js.map +1 -1
  81. package/dist/core/proofLedger.d.ts +5 -1
  82. package/dist/core/proofLedger.js +161 -12
  83. package/dist/core/proofLedger.js.map +1 -1
  84. package/dist/core/proofReplay.d.ts +9 -0
  85. package/dist/core/proofReplay.js +164 -0
  86. package/dist/core/proofReplay.js.map +1 -0
  87. package/dist/core/proofSufficiency.d.ts +19 -0
  88. package/dist/core/proofSufficiency.js +425 -0
  89. package/dist/core/proofSufficiency.js.map +1 -0
  90. package/dist/core/prove.d.ts +6 -0
  91. package/dist/core/prove.js +277 -87
  92. package/dist/core/prove.js.map +1 -1
  93. package/dist/core/qualityScorecard.js +8 -238
  94. package/dist/core/qualityScorecard.js.map +1 -1
  95. package/dist/core/qualityScorecardDimensions.d.ts +14 -0
  96. package/dist/core/qualityScorecardDimensions.js +99 -0
  97. package/dist/core/qualityScorecardDimensions.js.map +1 -0
  98. package/dist/core/qualityScorecardRisks.d.ts +8 -0
  99. package/dist/core/qualityScorecardRisks.js +107 -0
  100. package/dist/core/qualityScorecardRisks.js.map +1 -0
  101. package/dist/core/qualityScorecardSignals.d.ts +20 -0
  102. package/dist/core/qualityScorecardSignals.js +59 -0
  103. package/dist/core/qualityScorecardSignals.js.map +1 -0
  104. package/dist/core/releaseEvidence.d.ts +1 -0
  105. package/dist/core/releaseEvidence.js +15 -40
  106. package/dist/core/releaseEvidence.js.map +1 -1
  107. package/dist/core/releaseEvidenceBaseline.js +4 -1
  108. package/dist/core/releaseEvidenceBaseline.js.map +1 -1
  109. package/dist/core/releaseEvidenceProofReceipt.d.ts +6 -0
  110. package/dist/core/releaseEvidenceProofReceipt.js +140 -0
  111. package/dist/core/releaseEvidenceProofReceipt.js.map +1 -0
  112. package/dist/core/releaseEvidenceVerdict.d.ts +5 -2
  113. package/dist/core/releaseEvidenceVerdict.js +39 -1
  114. package/dist/core/releaseEvidenceVerdict.js.map +1 -1
  115. package/dist/core/repositoryScanner.d.ts +1 -0
  116. package/dist/core/repositoryScanner.js +5 -4
  117. package/dist/core/repositoryScanner.js.map +1 -1
  118. package/dist/core/sessionResources.d.ts +14 -2
  119. package/dist/core/sessionResources.js +3 -3
  120. package/dist/core/sessionResources.js.map +1 -1
  121. package/dist/core/startInputs.d.ts +1 -1
  122. package/dist/core/startIntentTargets.d.ts +1 -1
  123. package/dist/core/startIntentTargets.js +1 -16
  124. package/dist/core/startIntentTargets.js.map +1 -1
  125. package/dist/core/startMissionInputStatusPolicy.d.ts +7 -0
  126. package/dist/core/startMissionInputStatusPolicy.js +74 -0
  127. package/dist/core/startMissionInputStatusPolicy.js.map +1 -0
  128. package/dist/core/startMissionPolicy.d.ts +6 -15
  129. package/dist/core/startMissionPolicy.js +4 -305
  130. package/dist/core/startMissionPolicy.js.map +1 -1
  131. package/dist/core/startMissionProofPolicy.d.ts +6 -0
  132. package/dist/core/startMissionProofPolicy.js +84 -0
  133. package/dist/core/startMissionProofPolicy.js.map +1 -0
  134. package/dist/core/startMissionRiskPolicy.d.ts +4 -0
  135. package/dist/core/startMissionRiskPolicy.js +85 -0
  136. package/dist/core/startMissionRiskPolicy.js.map +1 -0
  137. package/dist/core/startMissionRoutingPolicy.d.ts +6 -0
  138. package/dist/core/startMissionRoutingPolicy.js +67 -0
  139. package/dist/core/startMissionRoutingPolicy.js.map +1 -0
  140. package/dist/core/startMode.d.ts +1 -2
  141. package/dist/core/startMode.js +4 -151
  142. package/dist/core/startMode.js.map +1 -1
  143. package/dist/core/startModeIntentPolicy.d.ts +12 -0
  144. package/dist/core/startModeIntentPolicy.js +41 -0
  145. package/dist/core/startModeIntentPolicy.js.map +1 -0
  146. package/dist/core/startModeRoutingPolicy.d.ts +4 -0
  147. package/dist/core/startModeRoutingPolicy.js +117 -0
  148. package/dist/core/startModeRoutingPolicy.js.map +1 -0
  149. package/dist/core/startSearchQueryTargets.d.ts +1 -0
  150. package/dist/core/startSearchQueryTargets.js +17 -0
  151. package/dist/core/startSearchQueryTargets.js.map +1 -0
  152. package/dist/core/workplan.d.ts +3 -2
  153. package/dist/core/workplan.js +11 -585
  154. package/dist/core/workplan.js.map +1 -1
  155. package/dist/core/workplanCoordinationTasks.d.ts +3 -0
  156. package/dist/core/workplanCoordinationTasks.js +82 -0
  157. package/dist/core/workplanCoordinationTasks.js.map +1 -0
  158. package/dist/core/workplanModeTasks.d.ts +2 -0
  159. package/dist/core/workplanModeTasks.js +192 -0
  160. package/dist/core/workplanModeTasks.js.map +1 -0
  161. package/dist/core/workplanPreflightTasks.d.ts +2 -0
  162. package/dist/core/workplanPreflightTasks.js +126 -0
  163. package/dist/core/workplanPreflightTasks.js.map +1 -0
  164. package/dist/core/workplanQualitySignals.d.ts +7 -0
  165. package/dist/core/workplanQualitySignals.js +63 -0
  166. package/dist/core/workplanQualitySignals.js.map +1 -0
  167. package/dist/core/workplanReport.d.ts +4 -0
  168. package/dist/core/workplanReport.js +79 -0
  169. package/dist/core/workplanReport.js.map +1 -0
  170. package/dist/core/workplanRiskOwnership.d.ts +5 -0
  171. package/dist/core/workplanRiskOwnership.js +97 -0
  172. package/dist/core/workplanRiskOwnership.js.map +1 -0
  173. package/dist/core/workplanSuggestedActions.d.ts +2 -0
  174. package/dist/core/workplanSuggestedActions.js +43 -0
  175. package/dist/core/workplanSuggestedActions.js.map +1 -0
  176. package/dist/mcp/tools/prove.js +23 -17
  177. package/dist/mcp/tools/prove.js.map +1 -1
  178. package/dist/projscan-sbom.cdx.json +6 -6
  179. package/dist/publicCore.d.ts +1 -0
  180. package/dist/publicCore.js +1 -0
  181. package/dist/publicCore.js.map +1 -1
  182. package/dist/tool-manifest.json +2 -2
  183. package/dist/types/baseframe.d.ts +75 -0
  184. package/dist/types/baseframe.js +2 -0
  185. package/dist/types/baseframe.js.map +1 -0
  186. package/dist/types/config.d.ts +15 -0
  187. package/dist/types/evidencePack.d.ts +21 -0
  188. package/dist/types/prove.d.ts +79 -0
  189. package/dist/types.d.ts +1 -0
  190. package/dist/utils/changedFiles.js +57 -16
  191. package/dist/utils/changedFiles.js.map +1 -1
  192. package/dist/utils/config.js +2 -0
  193. package/dist/utils/config.js.map +1 -1
  194. package/dist/utils/configProofRecipes.d.ts +2 -0
  195. package/dist/utils/configProofRecipes.js +91 -0
  196. package/dist/utils/configProofRecipes.js.map +1 -0
  197. package/docs/GUIDE.md +120 -19
  198. package/docs/integrations/baseframe-suite-v1.md +163 -0
  199. package/package.json +2 -1
@@ -0,0 +1,425 @@
1
+ import path from 'node:path';
2
+ const CONFIG_BASENAMES = new Set([
3
+ 'package.json',
4
+ 'package-lock.json',
5
+ 'pnpm-lock.yaml',
6
+ 'yarn.lock',
7
+ 'tsconfig.json',
8
+ ]);
9
+ const CONFIG_SUFFIXES = ['.config.js', '.config.cjs', '.config.mjs', '.config.ts'];
10
+ export function buildProofRequirements(input) {
11
+ const rows = [];
12
+ const testCommands = input.proofCommands.filter(isTestProofCommand);
13
+ const supportCommands = input.proofCommands.filter((command) => !isTestProofCommand(command));
14
+ const filesBySurface = new Map();
15
+ for (const file of input.allowedFiles) {
16
+ const surface = riskSurfaceForFile(file);
17
+ if (surface === 'test')
18
+ continue;
19
+ filesBySurface.set(surface, [...(filesBySurface.get(surface) ?? []), file]);
20
+ }
21
+ if (input.likelyTests.length > 0) {
22
+ filesBySurface.set('test', unique([...(filesBySurface.get('test') ?? []), ...input.likelyTests]));
23
+ }
24
+ for (const surface of orderedSurfaces(filesBySurface)) {
25
+ const files = unique(filesBySurface.get(surface) ?? []);
26
+ if (files.length === 0)
27
+ continue;
28
+ const requiredCommands = requirementCommandsForSurface(surface, testCommands, supportCommands);
29
+ rows.push({
30
+ id: proofRequirementId(surface, files),
31
+ surface,
32
+ files,
33
+ requiredCommands,
34
+ requiredReview: requiredReviewForSurface(surface),
35
+ reason: proofRequirementReason(surface, files),
36
+ });
37
+ }
38
+ for (const surface of riskyContractSurfaces(input.riskyContracts)) {
39
+ if (rows.some((row) => row.surface === surface))
40
+ continue;
41
+ rows.push({
42
+ id: proofRequirementId(surface, []),
43
+ surface,
44
+ files: [],
45
+ requiredCommands: requirementCommandsForSurface(surface, testCommands, supportCommands),
46
+ requiredReview: requiredReviewForSurface(surface),
47
+ reason: `Risky contract evidence includes ${surface}.`,
48
+ });
49
+ }
50
+ return rows;
51
+ }
52
+ export function proofSufficiencyFor(input) {
53
+ if (!input.contract)
54
+ return missingContractProofSufficiency(input.scope);
55
+ const requirements = proofRequirementsForReceipt(input.contract);
56
+ if (requirements.length === 0) {
57
+ const status = input.scope.status === 'within-contract' ? 'adequate' : 'missing';
58
+ return {
59
+ status,
60
+ summary: status === 'adequate'
61
+ ? 'No explicit proof requirements were needed for this receipt.'
62
+ : 'No Proof Contract requirements were available for the changed files.',
63
+ requirements: [],
64
+ gaps: status === 'adequate'
65
+ ? []
66
+ : ['No Proof Contract requirements were available for the changed files.'],
67
+ weakRequirements: [],
68
+ missingRequirements: status === 'missing' ? ['missing-contract: changed files'] : [],
69
+ staleRequirements: [],
70
+ failedRequirements: [],
71
+ };
72
+ }
73
+ const results = requirements.map((requirement) => proofRequirementResult(requirement, input.scope, input.proofStatus));
74
+ const status = aggregateProofSufficiency(results);
75
+ const gaps = unique(results.flatMap((result) => result.gaps));
76
+ return {
77
+ status,
78
+ summary: proofSufficiencySummary(status, results),
79
+ requirements: results,
80
+ gaps,
81
+ weakRequirements: requirementIdsByStatus(results, 'weak'),
82
+ missingRequirements: requirementIdsByStatus(results, 'missing'),
83
+ staleRequirements: requirementIdsByStatus(results, 'stale'),
84
+ failedRequirements: requirementIdsByStatus(results, 'failed'),
85
+ };
86
+ }
87
+ export function proofRelevantChangedFiles(files) {
88
+ return files.filter((file) => !isGeneratedPath(file));
89
+ }
90
+ export function isDocumentationPath(file) {
91
+ return (file === 'README.md' ||
92
+ file.startsWith('docs/') ||
93
+ file.endsWith('.md') ||
94
+ file.endsWith('.mdx'));
95
+ }
96
+ export function isGeneratedPath(file) {
97
+ return (file.startsWith('.projscan/') ||
98
+ file.startsWith('.projscan-memory/') ||
99
+ file.startsWith('.agentloop/') ||
100
+ file.startsWith('.agentflight/') ||
101
+ file.startsWith('coverage/') ||
102
+ file.startsWith('dist/'));
103
+ }
104
+ export function isSecuritySensitivePath(file) {
105
+ return (file === '.env' ||
106
+ file.startsWith('.env.') ||
107
+ file.includes('/auth') ||
108
+ file.includes('/security') ||
109
+ file.includes('/secrets') ||
110
+ file.endsWith('.pem') ||
111
+ file.endsWith('.key'));
112
+ }
113
+ export function isConfigPath(file) {
114
+ const basename = path.posix.basename(file);
115
+ return (CONFIG_BASENAMES.has(basename) ||
116
+ CONFIG_SUFFIXES.some((suffix) => basename.endsWith(suffix)) ||
117
+ file.startsWith('.github/'));
118
+ }
119
+ export function isTestPath(file) {
120
+ return (file.startsWith('test/') ||
121
+ file.startsWith('tests/') ||
122
+ file.includes('/__tests__/') ||
123
+ /\.test\.[cm]?[jt]sx?$/.test(file) ||
124
+ /\.spec\.[cm]?[jt]sx?$/.test(file));
125
+ }
126
+ export function isProductionPath(file) {
127
+ return (file.startsWith('src/') ||
128
+ file.startsWith('app/') ||
129
+ file.startsWith('lib/') ||
130
+ file.startsWith('packages/') ||
131
+ file.startsWith('apps/'));
132
+ }
133
+ function proofRequirementsForReceipt(contract) {
134
+ if (contract.proofRequirements?.length)
135
+ return contract.proofRequirements;
136
+ return buildProofRequirements({
137
+ allowedFiles: contract.allowedFiles,
138
+ likelyTests: contract.likelyTests,
139
+ riskyContracts: contract.riskyContracts,
140
+ proofCommands: contract.proofCommands,
141
+ });
142
+ }
143
+ function missingContractProofSufficiency(scope) {
144
+ const files = proofRelevantChangedFiles(scope.changedFiles);
145
+ const requirement = {
146
+ id: 'missing-contract: changed files',
147
+ surface: 'unknown',
148
+ status: 'missing',
149
+ files,
150
+ requiredCommands: ['projscan prove --intent "<change>" --save-contract .projscan/proof-contract.json'],
151
+ matchedCommands: [],
152
+ requiredReview: 'review changed files without a saved Proof Contract',
153
+ reason: 'No Proof Contract was available to map changed files to required proof.',
154
+ gaps: ['missing-contract: changed files is missing proof.'],
155
+ };
156
+ return {
157
+ status: 'missing',
158
+ summary: 'missing: no Proof Contract requirements were available for the changed files',
159
+ requirements: files.length > 0 ? [requirement] : [],
160
+ gaps: ['No Proof Contract requirements were available for the changed files.'],
161
+ weakRequirements: [],
162
+ missingRequirements: files.length > 0 ? [requirement.id] : ['missing-contract: changed files'],
163
+ staleRequirements: [],
164
+ failedRequirements: [],
165
+ };
166
+ }
167
+ function proofRequirementResult(requirement, scope, proofStatus) {
168
+ const requiredCommandSet = new Set(requirement.requiredCommands);
169
+ const changedFileSet = new Set(scope.changedFiles);
170
+ const commandEvidence = proofStatus.commandEvidence.filter((entry) => requiredCommandSet.has(entry.command));
171
+ const matchedCommands = commandEvidence.map((entry) => entry.command);
172
+ const touchedFiles = requirement.files.filter((file) => changedFileSet.has(file));
173
+ const surfaceTouched = scope.classifications.some((classification) => riskSurfaceForFile(classification.file, classification.kind) === requirement.surface);
174
+ const freshPassed = commandEvidence.filter((entry) => entry.status === 'passed' && entry.fresh);
175
+ const freshFailed = commandEvidence.filter((entry) => entry.status === 'failed' && entry.fresh);
176
+ const stale = commandEvidence.filter((entry) => entry.status === 'stale');
177
+ const trustedFreshPassed = freshPassed.filter((entry) => isTrustedProofSource(entry.source));
178
+ const status = proofRequirementStatus({
179
+ requirement,
180
+ touchedFiles,
181
+ surfaceTouched,
182
+ freshPassedCount: freshPassed.length,
183
+ trustedFreshPassedCount: trustedFreshPassed.length,
184
+ freshFailedCount: freshFailed.length,
185
+ staleCount: stale.length,
186
+ matchedCount: matchedCommands.length,
187
+ expectedTestTouched: scope.expectedTests.length > 0,
188
+ });
189
+ return {
190
+ id: requirement.id,
191
+ surface: requirement.surface,
192
+ status,
193
+ files: requirement.files,
194
+ requiredCommands: requirement.requiredCommands,
195
+ matchedCommands,
196
+ requiredReview: requirement.requiredReview,
197
+ reason: requirement.reason,
198
+ gaps: proofRequirementGaps({
199
+ requirement,
200
+ status,
201
+ touchedFiles,
202
+ surfaceTouched,
203
+ matchedCommands,
204
+ expectedTestTouched: scope.expectedTests.length > 0,
205
+ }),
206
+ ...(requirement.source ? { source: requirement.source } : {}),
207
+ ...(requirement.recipeId ? { recipeId: requirement.recipeId } : {}),
208
+ ...(requirement.requiredReviewers ? { requiredReviewers: requirement.requiredReviewers } : {}),
209
+ };
210
+ }
211
+ function proofRequirementStatus(input) {
212
+ if (input.freshFailedCount > 0)
213
+ return 'failed';
214
+ if (input.requirement.source === 'recipe') {
215
+ if (input.matchedCount === 0)
216
+ return 'missing';
217
+ if (input.freshPassedCount === 0 && input.staleCount > 0)
218
+ return 'stale';
219
+ if (input.freshPassedCount === 0)
220
+ return 'missing';
221
+ return 'strong';
222
+ }
223
+ if (input.requirement.requiredCommands.length === 0) {
224
+ return input.requirement.surface === 'documentation' || input.requirement.surface === 'generated'
225
+ ? 'adequate'
226
+ : 'weak';
227
+ }
228
+ if (input.matchedCount === 0)
229
+ return 'missing';
230
+ if (input.freshPassedCount === 0 && input.staleCount > 0)
231
+ return 'stale';
232
+ if (input.freshPassedCount === 0)
233
+ return 'missing';
234
+ if (input.trustedFreshPassedCount === 0)
235
+ return 'weak';
236
+ if (input.requirement.surface === 'production') {
237
+ if (input.touchedFiles.length > 0 && input.expectedTestTouched)
238
+ return 'strong';
239
+ if (input.touchedFiles.length > 0)
240
+ return 'adequate';
241
+ return 'weak';
242
+ }
243
+ if (input.touchedFiles.length > 0 || input.surfaceTouched)
244
+ return 'strong';
245
+ return 'adequate';
246
+ }
247
+ function isTrustedProofSource(source) {
248
+ return source === 'prove-run' || source === 'mission' || source === 'external';
249
+ }
250
+ function proofRequirementGaps(input) {
251
+ if (input.status === 'strong' || input.status === 'adequate')
252
+ return [];
253
+ if (input.requirement.source === 'recipe') {
254
+ const label = `recipe ${input.requirement.recipeId ?? input.requirement.id}`;
255
+ if (input.status === 'failed')
256
+ return [`${label} has failed proof.`];
257
+ if (input.status === 'stale')
258
+ return [`${label} has stale proof after newer edits.`];
259
+ if (input.status === 'missing')
260
+ return [`${label} is missing proof.`];
261
+ return [`${label} has weak proof mapping.`];
262
+ }
263
+ const label = `${input.requirement.surface} requirement ${input.requirement.id}`;
264
+ if (input.status === 'failed')
265
+ return [`${label} has failed proof.`];
266
+ if (input.status === 'stale')
267
+ return [`${label} has stale proof after newer edits.`];
268
+ if (input.status === 'missing')
269
+ return [`${label} is missing proof.`];
270
+ const gaps = [`${label} has weak proof mapping.`];
271
+ if (input.requirement.surface === 'production' && !input.expectedTestTouched) {
272
+ gaps.push(`${label} has no changed expected test evidence.`);
273
+ }
274
+ if (input.touchedFiles.length === 0 && !input.surfaceTouched && input.matchedCommands.length > 0) {
275
+ gaps.push(`${label} has proof commands but no changed file on that surface.`);
276
+ }
277
+ return gaps;
278
+ }
279
+ function aggregateProofSufficiency(results) {
280
+ const severity = [
281
+ 'failed',
282
+ 'stale',
283
+ 'missing',
284
+ 'weak',
285
+ 'adequate',
286
+ 'strong',
287
+ ];
288
+ return severity.find((status) => results.some((result) => result.status === status)) ?? 'adequate';
289
+ }
290
+ function proofSufficiencySummary(status, results) {
291
+ const counts = new Map();
292
+ for (const result of results)
293
+ counts.set(result.status, (counts.get(result.status) ?? 0) + 1);
294
+ const parts = [...counts.entries()]
295
+ .map(([entryStatus, count]) => `${count} ${entryStatus}`)
296
+ .join(', ');
297
+ return `${status}: ${parts || 'no'} proof requirement(s) evaluated`;
298
+ }
299
+ function requirementIdsByStatus(results, status) {
300
+ return results.filter((result) => result.status === status).map((result) => result.id);
301
+ }
302
+ function orderedSurfaces(filesBySurface) {
303
+ const preferred = [
304
+ 'security',
305
+ 'dependency',
306
+ 'config',
307
+ 'public-api',
308
+ 'cli',
309
+ 'mcp',
310
+ 'production',
311
+ 'test',
312
+ 'documentation',
313
+ 'generated',
314
+ 'unknown',
315
+ ];
316
+ return preferred.filter((surface) => filesBySurface.has(surface));
317
+ }
318
+ function requirementCommandsForSurface(surface, testCommands, supportCommands) {
319
+ if (surface === 'documentation' || surface === 'generated')
320
+ return [];
321
+ if (surface === 'config' || surface === 'security' || surface === 'dependency') {
322
+ return unique([...testCommands, ...supportCommands]);
323
+ }
324
+ return unique([...testCommands, ...supportCommands.slice(0, 1)]);
325
+ }
326
+ function isTestProofCommand(command) {
327
+ return /^npm (?:run )?test\b/.test(command);
328
+ }
329
+ function proofRequirementId(surface, files) {
330
+ const filePart = files.length > 0 ? slug(files.slice(0, 3).join('-')) : 'contract';
331
+ return `${surface}:${filePart}`;
332
+ }
333
+ function requiredReviewForSurface(surface) {
334
+ switch (surface) {
335
+ case 'production':
336
+ return 'review changed production behavior and matching regression proof';
337
+ case 'test':
338
+ return 'review test intent and confirm it covers the changed behavior';
339
+ case 'security':
340
+ return 'require explicit security review and fresh proof';
341
+ case 'config':
342
+ return 'require config-owner review and preflight proof';
343
+ case 'dependency':
344
+ return 'require dependency or lockfile review and install/test proof';
345
+ case 'public-api':
346
+ return 'review public API compatibility and migration risk';
347
+ case 'cli':
348
+ return 'review CLI behavior and documented command output';
349
+ case 'mcp':
350
+ return 'review MCP tool contract compatibility';
351
+ case 'documentation':
352
+ return 'confirm docs describe the same proof slice';
353
+ case 'generated':
354
+ return 'confirm generated proof artifacts are local and ignored';
355
+ default:
356
+ return 'review the changed surface and require focused proof';
357
+ }
358
+ }
359
+ function proofRequirementReason(surface, files) {
360
+ const fileSummary = files.length > 0 ? files.join(', ') : 'contract-only evidence';
361
+ return `${surface} surface requires proof because it covers ${fileSummary}.`;
362
+ }
363
+ function riskyContractSurfaces(contracts) {
364
+ const surfaces = [];
365
+ for (const contract of contracts.map((value) => value.toLowerCase())) {
366
+ if (contract.includes('cli'))
367
+ surfaces.push('cli');
368
+ if (contract.includes('mcp'))
369
+ surfaces.push('mcp');
370
+ if (contract.includes('public api') || contract.includes('types'))
371
+ surfaces.push('public-api');
372
+ }
373
+ return unique(surfaces);
374
+ }
375
+ function riskSurfaceForFile(file, classificationKind) {
376
+ if (classificationKind === 'expected-test' || classificationKind === 'unexpected-test')
377
+ return 'test';
378
+ if (classificationKind === 'documentation')
379
+ return 'documentation';
380
+ if (classificationKind === 'security-sensitive')
381
+ return 'security';
382
+ if (classificationKind === 'generated')
383
+ return 'generated';
384
+ if (isGeneratedPath(file))
385
+ return 'generated';
386
+ if (isTestPath(file))
387
+ return 'test';
388
+ if (isDocumentationPath(file))
389
+ return 'documentation';
390
+ if (isSecuritySensitivePath(file))
391
+ return 'security';
392
+ if (isDependencyPath(file))
393
+ return 'dependency';
394
+ if (isConfigPath(file))
395
+ return 'config';
396
+ if (file.startsWith('src/cli/'))
397
+ return 'cli';
398
+ if (file.startsWith('src/mcp/'))
399
+ return 'mcp';
400
+ if (isPublicApiPath(file))
401
+ return 'public-api';
402
+ if (isProductionPath(file))
403
+ return 'production';
404
+ return 'unknown';
405
+ }
406
+ function isDependencyPath(file) {
407
+ const basename = path.posix.basename(file);
408
+ return (basename === 'package.json' ||
409
+ basename === 'package-lock.json' ||
410
+ basename === 'pnpm-lock.yaml' ||
411
+ basename === 'yarn.lock');
412
+ }
413
+ function isPublicApiPath(file) {
414
+ return (file === 'src/types.ts' ||
415
+ file.startsWith('src/types/') ||
416
+ file.startsWith('src/public') ||
417
+ file.includes('/types/'));
418
+ }
419
+ function unique(values) {
420
+ return [...new Set(values)];
421
+ }
422
+ function slug(value) {
423
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 80);
424
+ }
425
+ //# sourceMappingURL=proofSufficiency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofSufficiency.js","sourceRoot":"","sources":["../../src/core/proofSufficiency.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import type { ChangedFilesResult } from '../utils/changedFiles.js';
2
+ import type { ProofRecipeConfig } from '../types/config.js';
3
+ import type { ProofLedgerSource } from '../types/proofLedger.js';
1
4
  import type { ProveContract, ProveReport } from '../types/prove.js';
2
5
  export interface ComputeProveOptions {
3
6
  intent?: string;
@@ -16,5 +19,8 @@ export interface ComputeProveOptions {
16
19
  logPath?: string;
17
20
  runCommand?: string[];
18
21
  runTimeoutMs?: number;
22
+ proofRecipes?: ProofRecipeConfig[];
23
+ changedFiles?: ChangedFilesResult;
24
+ recordSource?: ProofLedgerSource;
19
25
  }
20
26
  export declare function computeProve(rootPath: string, options?: ComputeProveOptions): Promise<ProveReport>;