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.
- package/README.md +103 -21
- package/dist/cli/commands/assess.js +36 -2
- package/dist/cli/commands/assess.js.map +1 -1
- package/dist/cli/commands/evidencePack.js +2 -0
- package/dist/cli/commands/evidencePack.js.map +1 -1
- package/dist/cli/commands/prove.js +172 -23
- package/dist/cli/commands/prove.js.map +1 -1
- package/dist/cli/commands/startConsole.d.ts +2 -2
- package/dist/cli/commands/startConsole.js +2 -260
- package/dist/cli/commands/startConsole.js.map +1 -1
- package/dist/cli/commands/startConsoleExecution.d.ts +5 -0
- package/dist/cli/commands/startConsoleExecution.js +108 -0
- package/dist/cli/commands/startConsoleExecution.js.map +1 -0
- package/dist/cli/commands/startConsoleMission.d.ts +6 -0
- package/dist/cli/commands/startConsoleMission.js +157 -0
- package/dist/cli/commands/startConsoleMission.js.map +1 -0
- package/dist/cli/commands/startMissionBundle.js +24 -27
- package/dist/cli/commands/startMissionBundle.js.map +1 -1
- package/dist/core/adoption.d.ts +8 -81
- package/dist/core/adoption.js +4 -549
- package/dist/core/adoption.js.map +1 -1
- package/dist/core/adoptionFirstRunDiagnostics.d.ts +20 -0
- package/dist/core/adoptionFirstRunDiagnostics.js +240 -0
- package/dist/core/adoptionFirstRunDiagnostics.js.map +1 -0
- package/dist/core/adoptionMcpConfig.d.ts +27 -0
- package/dist/core/adoptionMcpConfig.js +123 -0
- package/dist/core/adoptionMcpConfig.js.map +1 -0
- package/dist/core/adoptionMcpDoctor.d.ts +23 -0
- package/dist/core/adoptionMcpDoctor.js +87 -0
- package/dist/core/adoptionMcpDoctor.js.map +1 -0
- package/dist/core/adoptionWorkflowRecipes.d.ts +14 -0
- package/dist/core/adoptionWorkflowRecipes.js +110 -0
- package/dist/core/adoptionWorkflowRecipes.js.map +1 -0
- package/dist/core/baseframeAssessment.d.ts +9 -0
- package/dist/core/baseframeAssessment.js +471 -0
- package/dist/core/baseframeAssessment.js.map +1 -0
- package/dist/core/bugHunt.js +26 -255
- package/dist/core/bugHunt.js.map +1 -1
- package/dist/core/bugHuntPreflightFindings.d.ts +2 -1
- package/dist/core/bugHuntPreflightFindings.js +20 -0
- package/dist/core/bugHuntPreflightFindings.js.map +1 -1
- package/dist/core/bugHuntReportAssembly.d.ts +20 -0
- package/dist/core/bugHuntReportAssembly.js +179 -0
- package/dist/core/bugHuntReportAssembly.js.map +1 -0
- package/dist/core/bugHuntSourceFindings.d.ts +3 -0
- package/dist/core/bugHuntSourceFindings.js +61 -0
- package/dist/core/bugHuntSourceFindings.js.map +1 -0
- package/dist/core/dogfood.js +4 -393
- package/dist/core/dogfood.js.map +1 -1
- package/dist/core/dogfoodMarketValidation.d.ts +5 -0
- package/dist/core/dogfoodMarketValidation.js +265 -0
- package/dist/core/dogfoodMarketValidation.js.map +1 -0
- package/dist/core/dogfoodRepoEvaluation.d.ts +4 -0
- package/dist/core/dogfoodRepoEvaluation.js +137 -0
- package/dist/core/dogfoodRepoEvaluation.js.map +1 -0
- package/dist/core/evidenceComment.js +50 -13
- package/dist/core/evidenceComment.js.map +1 -1
- package/dist/core/feedback.js +2 -252
- package/dist/core/feedback.js.map +1 -1
- package/dist/core/feedbackIntakeClassifier.d.ts +2 -0
- package/dist/core/feedbackIntakeClassifier.js +255 -0
- package/dist/core/feedbackIntakeClassifier.js.map +1 -0
- package/dist/core/intentRouterKeywordToolGuards.js +1 -55
- package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
- package/dist/core/intentRouterKeywordWeights.js +13 -28
- package/dist/core/intentRouterKeywordWeights.js.map +1 -1
- package/dist/core/intentRouterProductGuardSignals.d.ts +3 -0
- package/dist/core/intentRouterProductGuardSignals.js +59 -0
- package/dist/core/intentRouterProductGuardSignals.js.map +1 -0
- package/dist/core/markdownSafety.d.ts +3 -0
- package/dist/core/markdownSafety.js +14 -0
- package/dist/core/markdownSafety.js.map +1 -0
- package/dist/core/preflight.d.ts +2 -0
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/preflightChangedFiles.d.ts +2 -0
- package/dist/core/preflightChangedFiles.js +1 -1
- package/dist/core/preflightChangedFiles.js.map +1 -1
- package/dist/core/preflightInputs.d.ts +2 -0
- package/dist/core/preflightInputs.js +5 -2
- package/dist/core/preflightInputs.js.map +1 -1
- package/dist/core/proofLedger.d.ts +5 -1
- package/dist/core/proofLedger.js +161 -12
- package/dist/core/proofLedger.js.map +1 -1
- package/dist/core/proofReplay.d.ts +9 -0
- package/dist/core/proofReplay.js +164 -0
- package/dist/core/proofReplay.js.map +1 -0
- package/dist/core/proofSufficiency.d.ts +19 -0
- package/dist/core/proofSufficiency.js +425 -0
- package/dist/core/proofSufficiency.js.map +1 -0
- package/dist/core/prove.d.ts +6 -0
- package/dist/core/prove.js +277 -87
- package/dist/core/prove.js.map +1 -1
- package/dist/core/qualityScorecard.js +8 -238
- package/dist/core/qualityScorecard.js.map +1 -1
- package/dist/core/qualityScorecardDimensions.d.ts +14 -0
- package/dist/core/qualityScorecardDimensions.js +99 -0
- package/dist/core/qualityScorecardDimensions.js.map +1 -0
- package/dist/core/qualityScorecardRisks.d.ts +8 -0
- package/dist/core/qualityScorecardRisks.js +107 -0
- package/dist/core/qualityScorecardRisks.js.map +1 -0
- package/dist/core/qualityScorecardSignals.d.ts +20 -0
- package/dist/core/qualityScorecardSignals.js +59 -0
- package/dist/core/qualityScorecardSignals.js.map +1 -0
- package/dist/core/releaseEvidence.d.ts +1 -0
- package/dist/core/releaseEvidence.js +15 -40
- package/dist/core/releaseEvidence.js.map +1 -1
- package/dist/core/releaseEvidenceBaseline.js +4 -1
- package/dist/core/releaseEvidenceBaseline.js.map +1 -1
- package/dist/core/releaseEvidenceProofReceipt.d.ts +6 -0
- package/dist/core/releaseEvidenceProofReceipt.js +140 -0
- package/dist/core/releaseEvidenceProofReceipt.js.map +1 -0
- package/dist/core/releaseEvidenceVerdict.d.ts +5 -2
- package/dist/core/releaseEvidenceVerdict.js +39 -1
- package/dist/core/releaseEvidenceVerdict.js.map +1 -1
- package/dist/core/repositoryScanner.d.ts +1 -0
- package/dist/core/repositoryScanner.js +5 -4
- package/dist/core/repositoryScanner.js.map +1 -1
- package/dist/core/sessionResources.d.ts +14 -2
- package/dist/core/sessionResources.js +3 -3
- package/dist/core/sessionResources.js.map +1 -1
- package/dist/core/startInputs.d.ts +1 -1
- package/dist/core/startIntentTargets.d.ts +1 -1
- package/dist/core/startIntentTargets.js +1 -16
- package/dist/core/startIntentTargets.js.map +1 -1
- package/dist/core/startMissionInputStatusPolicy.d.ts +7 -0
- package/dist/core/startMissionInputStatusPolicy.js +74 -0
- package/dist/core/startMissionInputStatusPolicy.js.map +1 -0
- package/dist/core/startMissionPolicy.d.ts +6 -15
- package/dist/core/startMissionPolicy.js +4 -305
- package/dist/core/startMissionPolicy.js.map +1 -1
- package/dist/core/startMissionProofPolicy.d.ts +6 -0
- package/dist/core/startMissionProofPolicy.js +84 -0
- package/dist/core/startMissionProofPolicy.js.map +1 -0
- package/dist/core/startMissionRiskPolicy.d.ts +4 -0
- package/dist/core/startMissionRiskPolicy.js +85 -0
- package/dist/core/startMissionRiskPolicy.js.map +1 -0
- package/dist/core/startMissionRoutingPolicy.d.ts +6 -0
- package/dist/core/startMissionRoutingPolicy.js +67 -0
- package/dist/core/startMissionRoutingPolicy.js.map +1 -0
- package/dist/core/startMode.d.ts +1 -2
- package/dist/core/startMode.js +4 -151
- package/dist/core/startMode.js.map +1 -1
- package/dist/core/startModeIntentPolicy.d.ts +12 -0
- package/dist/core/startModeIntentPolicy.js +41 -0
- package/dist/core/startModeIntentPolicy.js.map +1 -0
- package/dist/core/startModeRoutingPolicy.d.ts +4 -0
- package/dist/core/startModeRoutingPolicy.js +117 -0
- package/dist/core/startModeRoutingPolicy.js.map +1 -0
- package/dist/core/startSearchQueryTargets.d.ts +1 -0
- package/dist/core/startSearchQueryTargets.js +17 -0
- package/dist/core/startSearchQueryTargets.js.map +1 -0
- package/dist/core/workplan.d.ts +3 -2
- package/dist/core/workplan.js +11 -585
- package/dist/core/workplan.js.map +1 -1
- package/dist/core/workplanCoordinationTasks.d.ts +3 -0
- package/dist/core/workplanCoordinationTasks.js +82 -0
- package/dist/core/workplanCoordinationTasks.js.map +1 -0
- package/dist/core/workplanModeTasks.d.ts +2 -0
- package/dist/core/workplanModeTasks.js +192 -0
- package/dist/core/workplanModeTasks.js.map +1 -0
- package/dist/core/workplanPreflightTasks.d.ts +2 -0
- package/dist/core/workplanPreflightTasks.js +126 -0
- package/dist/core/workplanPreflightTasks.js.map +1 -0
- package/dist/core/workplanQualitySignals.d.ts +7 -0
- package/dist/core/workplanQualitySignals.js +63 -0
- package/dist/core/workplanQualitySignals.js.map +1 -0
- package/dist/core/workplanReport.d.ts +4 -0
- package/dist/core/workplanReport.js +79 -0
- package/dist/core/workplanReport.js.map +1 -0
- package/dist/core/workplanRiskOwnership.d.ts +5 -0
- package/dist/core/workplanRiskOwnership.js +97 -0
- package/dist/core/workplanRiskOwnership.js.map +1 -0
- package/dist/core/workplanSuggestedActions.d.ts +2 -0
- package/dist/core/workplanSuggestedActions.js +43 -0
- package/dist/core/workplanSuggestedActions.js.map +1 -0
- package/dist/mcp/tools/prove.js +23 -17
- package/dist/mcp/tools/prove.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/publicCore.d.ts +1 -0
- package/dist/publicCore.js +1 -0
- package/dist/publicCore.js.map +1 -1
- package/dist/tool-manifest.json +2 -2
- package/dist/types/baseframe.d.ts +75 -0
- package/dist/types/baseframe.js +2 -0
- package/dist/types/baseframe.js.map +1 -0
- package/dist/types/config.d.ts +15 -0
- package/dist/types/evidencePack.d.ts +21 -0
- package/dist/types/prove.d.ts +79 -0
- package/dist/types.d.ts +1 -0
- package/dist/utils/changedFiles.js +57 -16
- package/dist/utils/changedFiles.js.map +1 -1
- package/dist/utils/config.js +2 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/configProofRecipes.d.ts +2 -0
- package/dist/utils/configProofRecipes.js +91 -0
- package/dist/utils/configProofRecipes.js.map +1 -0
- package/docs/GUIDE.md +120 -19
- package/docs/integrations/baseframe-suite-v1.md +163 -0
- package/package.json +2 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { MIN_REPEAT_FEEDBACK_PRS, MIN_REPEAT_FEEDBACK_REPOS } from './feedback.js';
|
|
2
|
+
export const FEEDBACK_QUESTIONS = [
|
|
3
|
+
'Did the PR comment save 10-20 minutes?',
|
|
4
|
+
'What was missing or noisy?',
|
|
5
|
+
'Which owner or command should have been clearer?',
|
|
6
|
+
'Minutes saved: 0, 5, 10, 20+?',
|
|
7
|
+
'Did projscan prevent a risky edit or missed review step?',
|
|
8
|
+
];
|
|
9
|
+
export const FEEDBACK_CAPTURE_COMMAND = 'projscan feedback add --file .projscan-feedback.json --repo <repo> --pr <url> --reviewer <handle> --useful true --minutes-saved 10';
|
|
10
|
+
export const DOGFOOD_WITH_FEEDBACK_COMMAND = 'projscan dogfood --repo <repo-a> --repo <repo-b> --repo <repo-c> --feedback .projscan-feedback.json --format json';
|
|
11
|
+
const MIN_USEFUL_REVIEWER_RESPONSES = 3;
|
|
12
|
+
const MIN_AVERAGE_MINUTES_SAVED = 10;
|
|
13
|
+
export function buildMarketValidation(repos, targetRepoCount) {
|
|
14
|
+
const responseCount = repos.reduce((sum, repo) => sum + repo.validation.feedbackResponses, 0);
|
|
15
|
+
const usefulResponses = repos.reduce((sum, repo) => sum + repo.validation.usefulResponses, 0);
|
|
16
|
+
const totalMinutesSaved = repos.reduce((sum, repo) => sum + repo.validation.minutesSaved, 0);
|
|
17
|
+
const preventedBadEdits = repos.reduce((sum, repo) => sum + repo.validation.preventedBadEdits, 0);
|
|
18
|
+
const ownerRoutingClear = repos.reduce((sum, repo) => sum + repo.validation.ownerRoutingClear, 0);
|
|
19
|
+
const nextCommandClear = repos.reduce((sum, repo) => sum + repo.validation.nextCommandClear, 0);
|
|
20
|
+
const falsePositive = {
|
|
21
|
+
totalReports: repos.reduce((sum, repo) => sum + repo.validation.falsePositiveRules.length, 0),
|
|
22
|
+
noisyRules: countSignals(repos.flatMap((repo) => repo.validation.falsePositiveRules), 'rule'),
|
|
23
|
+
missingSignals: countSignals(repos.flatMap((repo) => repo.validation.missingSignals), 'signal'),
|
|
24
|
+
noisyFindings: countSignals(repos.flatMap((repo) => repo.validation.noisyFindings), 'finding'),
|
|
25
|
+
};
|
|
26
|
+
const repoCoverage = {
|
|
27
|
+
target: targetRepoCount,
|
|
28
|
+
evaluated: repos.length,
|
|
29
|
+
targetMet: repos.length >= targetRepoCount,
|
|
30
|
+
};
|
|
31
|
+
const firstPr = {
|
|
32
|
+
readyRepos: repos.filter((repo) => repo.prCommentReady).length,
|
|
33
|
+
repeatUseReadyRepos: repos.filter((repo) => repo.repeatUseReady).length,
|
|
34
|
+
requiredFeedbackQuestions: [...FEEDBACK_QUESTIONS],
|
|
35
|
+
};
|
|
36
|
+
const feedback = {
|
|
37
|
+
responses: responseCount,
|
|
38
|
+
usefulResponses,
|
|
39
|
+
usefulnessRate: responseCount > 0 ? round(usefulResponses / responseCount) : 0,
|
|
40
|
+
preventedBadEdits,
|
|
41
|
+
ownerRoutingClear,
|
|
42
|
+
nextCommandClear,
|
|
43
|
+
minutesSaved: {
|
|
44
|
+
total: totalMinutesSaved,
|
|
45
|
+
average: responseCount > 0 ? round(totalMinutesSaved / responseCount) : 0,
|
|
46
|
+
max: Math.max(0, ...repos.map((repo) => repo.validation.minutesSaved)),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
const repeatUse = summarizeRepeatUse(repos);
|
|
50
|
+
const value = {
|
|
51
|
+
averageMinutesSaved: feedback.minutesSaved.average,
|
|
52
|
+
requiredAverageMinutesSaved: MIN_AVERAGE_MINUTES_SAVED,
|
|
53
|
+
preventedBadEdits,
|
|
54
|
+
ready: feedback.minutesSaved.average >= MIN_AVERAGE_MINUTES_SAVED || preventedBadEdits > 0,
|
|
55
|
+
};
|
|
56
|
+
const feedbackCaptureCommand = firstFeedbackCaptureCommand(repos);
|
|
57
|
+
const status = marketStatus({
|
|
58
|
+
targetMet: repoCoverage.targetMet,
|
|
59
|
+
responses: responseCount,
|
|
60
|
+
usefulResponses,
|
|
61
|
+
falsePositiveReports: falsePositive.totalReports,
|
|
62
|
+
valueReady: value.ready,
|
|
63
|
+
repeatUseReady: repeatUse.ready,
|
|
64
|
+
});
|
|
65
|
+
const summary = summarizeMarketValidation(status, repoCoverage.evaluated, targetRepoCount, feedback, falsePositive.totalReports, value, repeatUse);
|
|
66
|
+
const proofGates = buildProofGates(repoCoverage, feedback, value, repeatUse, falsePositive.totalReports, feedbackCaptureCommand);
|
|
67
|
+
const nextProofStep = nextProofStepFromGates(status, proofGates);
|
|
68
|
+
return {
|
|
69
|
+
status,
|
|
70
|
+
summary,
|
|
71
|
+
proofGates,
|
|
72
|
+
nextProofStep,
|
|
73
|
+
repoCoverage,
|
|
74
|
+
feedback,
|
|
75
|
+
falsePositive,
|
|
76
|
+
firstPr,
|
|
77
|
+
value,
|
|
78
|
+
repeatUse,
|
|
79
|
+
websiteProof: buildWebsiteProof(repos, feedback, falsePositive.totalReports, status, repeatUse),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function marketStatus(input) {
|
|
83
|
+
if (!input.targetMet)
|
|
84
|
+
return 'needs_more_repos';
|
|
85
|
+
if (input.responses === 0)
|
|
86
|
+
return 'needs_feedback';
|
|
87
|
+
if (input.usefulResponses < MIN_USEFUL_REVIEWER_RESPONSES)
|
|
88
|
+
return 'needs_tuning';
|
|
89
|
+
if (input.falsePositiveReports > input.usefulResponses)
|
|
90
|
+
return 'needs_tuning';
|
|
91
|
+
if (!input.valueReady)
|
|
92
|
+
return 'needs_tuning';
|
|
93
|
+
if (!input.repeatUseReady)
|
|
94
|
+
return 'needs_tuning';
|
|
95
|
+
return 'proven';
|
|
96
|
+
}
|
|
97
|
+
function buildProofGates(repoCoverage, feedback, value, repeatUse, falsePositiveReports, feedbackCaptureCommand) {
|
|
98
|
+
const moreRepos = Math.max(0, repoCoverage.target - repoCoverage.evaluated);
|
|
99
|
+
const moreUsefulResponses = Math.max(0, MIN_USEFUL_REVIEWER_RESPONSES - feedback.usefulResponses);
|
|
100
|
+
const moreRepeatedRepos = Math.max(0, repeatUse.requiredRepeatedRepos - repeatUse.repeatedRepos);
|
|
101
|
+
return [
|
|
102
|
+
{
|
|
103
|
+
id: 'repo-coverage',
|
|
104
|
+
status: repoCoverage.targetMet ? 'pass' : 'fail',
|
|
105
|
+
summary: repoCoverage.targetMet
|
|
106
|
+
? `${repoCoverage.evaluated}/${repoCoverage.target} repo target met.`
|
|
107
|
+
: `Add ${moreRepos} more repo(s) before calling adoption proven.`,
|
|
108
|
+
command: 'projscan dogfood --repo <repo-a> --repo <repo-b> --repo <repo-c> --format json',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'reviewer-feedback',
|
|
112
|
+
status: feedback.responses > 0 ? 'pass' : 'fail',
|
|
113
|
+
summary: feedback.responses > 0
|
|
114
|
+
? `${feedback.responses} reviewer response(s) captured.`
|
|
115
|
+
: 'Capture structured reviewer feedback from the first real PR.',
|
|
116
|
+
command: feedbackCaptureCommand,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: 'useful-feedback',
|
|
120
|
+
status: feedback.usefulResponses >= MIN_USEFUL_REVIEWER_RESPONSES ? 'pass' : 'fail',
|
|
121
|
+
summary: feedback.usefulResponses >= MIN_USEFUL_REVIEWER_RESPONSES
|
|
122
|
+
? `${feedback.usefulResponses} useful reviewer response(s) captured.`
|
|
123
|
+
: `Collect at least ${moreUsefulResponses} more useful reviewer response(s).`,
|
|
124
|
+
command: feedbackCaptureCommand,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
id: 'repeat-use',
|
|
128
|
+
status: repeatUse.ready ? 'pass' : 'fail',
|
|
129
|
+
summary: repeatUse.ready
|
|
130
|
+
? `${repeatUse.repeatedRepos} repo(s) with repeat PR feedback and ${repeatUse.distinctPrs} distinct PR(s).`
|
|
131
|
+
: `Capture repeat PR feedback in at least ${moreRepeatedRepos} repo(s).`,
|
|
132
|
+
command: DOGFOOD_WITH_FEEDBACK_COMMAND,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
id: 'measured-value',
|
|
136
|
+
status: value.ready ? 'pass' : 'fail',
|
|
137
|
+
summary: value.ready
|
|
138
|
+
? `Measured value ready: ${value.averageMinutesSaved} average minutes saved or ${value.preventedBadEdits} risky edit(s) prevented.`
|
|
139
|
+
: 'Record 10+ average minutes saved or at least one prevented risky edit.',
|
|
140
|
+
command: feedbackCaptureCommand,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
id: 'false-positive-balance',
|
|
144
|
+
status: falsePositiveReports <= feedback.usefulResponses ? 'pass' : 'fail',
|
|
145
|
+
summary: falsePositiveReports <= feedback.usefulResponses
|
|
146
|
+
? `${falsePositiveReports} false-positive report(s) do not outnumber ${feedback.usefulResponses} useful response(s).`
|
|
147
|
+
: 'Tune false-positive reports until they no longer outnumber useful responses.',
|
|
148
|
+
command: 'projscan memory stable --format json',
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
}
|
|
152
|
+
function firstFeedbackCaptureCommand(repos) {
|
|
153
|
+
return repos.find((repo) => repo.feedbackCaptureCommand)?.feedbackCaptureCommand ?? FEEDBACK_CAPTURE_COMMAND;
|
|
154
|
+
}
|
|
155
|
+
function nextProofStepFromGates(status, proofGates) {
|
|
156
|
+
if (status === 'proven')
|
|
157
|
+
return 'Adoption proof is ready for public claims.';
|
|
158
|
+
return (proofGates.find((gate) => gate.status === 'fail')?.summary ??
|
|
159
|
+
'Review adoption proof gates before expanding rollout.');
|
|
160
|
+
}
|
|
161
|
+
function summarizeMarketValidation(status, evaluated, target, feedback, falsePositiveReports, value, repeatUse) {
|
|
162
|
+
const base = evaluated +
|
|
163
|
+
'/' +
|
|
164
|
+
target +
|
|
165
|
+
' repo target; ' +
|
|
166
|
+
feedback.responses +
|
|
167
|
+
' reviewer response(s); ' +
|
|
168
|
+
feedback.minutesSaved.total +
|
|
169
|
+
' minutes saved; avg ' +
|
|
170
|
+
value.averageMinutesSaved +
|
|
171
|
+
'/' +
|
|
172
|
+
value.requiredAverageMinutesSaved +
|
|
173
|
+
' min target; ' +
|
|
174
|
+
feedback.preventedBadEdits +
|
|
175
|
+
' risky edit(s) prevented; ' +
|
|
176
|
+
falsePositiveReports +
|
|
177
|
+
' false-positive report(s); ' +
|
|
178
|
+
repeatUse.repeatedRepos +
|
|
179
|
+
' repo(s) with repeat PR feedback';
|
|
180
|
+
if (status === 'proven')
|
|
181
|
+
return 'market validation proven: ' + base;
|
|
182
|
+
if (status === 'needs_more_repos')
|
|
183
|
+
return 'market validation needs more repos: ' + base;
|
|
184
|
+
if (status === 'needs_feedback')
|
|
185
|
+
return 'market validation needs reviewer feedback: ' + base;
|
|
186
|
+
return 'market validation needs tuning: ' + base;
|
|
187
|
+
}
|
|
188
|
+
function buildWebsiteProof(repos, feedback, falsePositiveReports, status, repeatUse) {
|
|
189
|
+
const repoCount = repos.length;
|
|
190
|
+
const headline = buildWebsiteProofHeadline(status, repoCount);
|
|
191
|
+
const metrics = [
|
|
192
|
+
repoCount + ' real repo(s) evaluated',
|
|
193
|
+
feedback.responses + ' reviewer response(s)',
|
|
194
|
+
feedback.minutesSaved.total + ' minutes saved',
|
|
195
|
+
feedback.preventedBadEdits + ' risky edits prevented',
|
|
196
|
+
repeatUse.repeatedRepos + ' repo(s) with repeat PR feedback',
|
|
197
|
+
falsePositiveReports + ' false-positive report(s) tracked',
|
|
198
|
+
];
|
|
199
|
+
const claimBullet = status === 'proven'
|
|
200
|
+
? 'Website claims can cite measured minutes saved and risky edits prevented instead of generic scanner claims.'
|
|
201
|
+
: 'Website claims should stay provisional until repo coverage, useful feedback, and false-positive tuning are ready.';
|
|
202
|
+
const bullets = [
|
|
203
|
+
'Generated PR comments were validated before posting.',
|
|
204
|
+
'Reviewer feedback is captured as structured dogfood evidence.',
|
|
205
|
+
'Repeat PR use is measured separately from first-PR usefulness.',
|
|
206
|
+
'False positives, missing signals, owner clarity, and next-command clarity are visible in one report.',
|
|
207
|
+
claimBullet,
|
|
208
|
+
];
|
|
209
|
+
const markdown = [
|
|
210
|
+
'## Market Validation Proof',
|
|
211
|
+
'',
|
|
212
|
+
'**Status:** ' + status,
|
|
213
|
+
'**Headline:** ' + headline,
|
|
214
|
+
'',
|
|
215
|
+
'### Metrics',
|
|
216
|
+
...metrics.map((metric) => '- ' + metric),
|
|
217
|
+
'',
|
|
218
|
+
'### What To Show On The Website',
|
|
219
|
+
...bullets.map((bullet) => '- ' + bullet),
|
|
220
|
+
].join('\\n');
|
|
221
|
+
return { headline, metrics, bullets, markdown };
|
|
222
|
+
}
|
|
223
|
+
function buildWebsiteProofHeadline(status, repoCount) {
|
|
224
|
+
if (status === 'proven')
|
|
225
|
+
return 'projscan proved useful across ' + repoCount + ' real repo(s)';
|
|
226
|
+
if (status === 'needs_more_repos')
|
|
227
|
+
return 'projscan needs more real-repo validation before public proof';
|
|
228
|
+
if (status === 'needs_feedback')
|
|
229
|
+
return 'projscan needs reviewer feedback before usefulness proof';
|
|
230
|
+
return 'projscan needs tuning before usefulness proof';
|
|
231
|
+
}
|
|
232
|
+
function summarizeRepeatUse(repos) {
|
|
233
|
+
const distinctPrs = countDistinct(repos.flatMap((repo) => repo.validation.prRefs));
|
|
234
|
+
const repeatedRepos = repos.filter((repo) => countDistinct(repo.validation.prRefs) >= 2).length;
|
|
235
|
+
return {
|
|
236
|
+
distinctPrs,
|
|
237
|
+
repeatedRepos,
|
|
238
|
+
requiredDistinctPrs: MIN_REPEAT_FEEDBACK_PRS,
|
|
239
|
+
requiredRepeatedRepos: MIN_REPEAT_FEEDBACK_REPOS,
|
|
240
|
+
ready: distinctPrs >= MIN_REPEAT_FEEDBACK_PRS && repeatedRepos >= MIN_REPEAT_FEEDBACK_REPOS,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
function countDistinct(values) {
|
|
244
|
+
return new Set(values.map(normalizeMatchValue).filter(Boolean)).size;
|
|
245
|
+
}
|
|
246
|
+
function countSignals(values, key) {
|
|
247
|
+
const counts = new Map();
|
|
248
|
+
for (const value of cleanSignals(values))
|
|
249
|
+
counts.set(value, (counts.get(value) ?? 0) + 1);
|
|
250
|
+
return [...counts.entries()]
|
|
251
|
+
.sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
|
|
252
|
+
.map(([value, count]) => ({ [key]: value, count }));
|
|
253
|
+
}
|
|
254
|
+
function cleanSignals(values) {
|
|
255
|
+
return values
|
|
256
|
+
.map((value) => value.trim())
|
|
257
|
+
.filter((value) => value.length > 0 && value.toLowerCase() !== 'none');
|
|
258
|
+
}
|
|
259
|
+
function normalizeMatchValue(value) {
|
|
260
|
+
return value.replace(/\\/g, '/').replace(/\/$/, '').trim().toLowerCase();
|
|
261
|
+
}
|
|
262
|
+
function round(value) {
|
|
263
|
+
return Math.round(value * 100) / 100;
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=dogfoodMarketValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dogfoodMarketValidation.js","sourceRoot":"","sources":["../../src/core/dogfoodMarketValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DogfoodFeedbackInput, DogfoodFeedbackResponse, DogfoodRepoResult } from '../types/dogfood.js';
|
|
2
|
+
export declare const FEEDBACK_INIT_COMMAND = "projscan feedback init --output .projscan-feedback.json";
|
|
3
|
+
export declare function normalizeDogfoodFeedback(input: DogfoodFeedbackInput | undefined): DogfoodFeedbackResponse[];
|
|
4
|
+
export declare function evaluateDogfoodRepo(repoPath: string, feedback: DogfoodFeedbackResponse[]): Promise<DogfoodRepoResult>;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { DOGFOOD_WITH_FEEDBACK_COMMAND, FEEDBACK_QUESTIONS, } from './dogfoodMarketValidation.js';
|
|
3
|
+
import { computeEvidencePack } from './releaseEvidence.js';
|
|
4
|
+
import { computeStartReport } from './start.js';
|
|
5
|
+
export const FEEDBACK_INIT_COMMAND = 'projscan feedback init --output .projscan-feedback.json';
|
|
6
|
+
export function normalizeDogfoodFeedback(input) {
|
|
7
|
+
return Array.isArray(input?.responses) ? input.responses : [];
|
|
8
|
+
}
|
|
9
|
+
export async function evaluateDogfoodRepo(repoPath, feedback) {
|
|
10
|
+
const [start, evidence] = await Promise.all([
|
|
11
|
+
computeStartReport(repoPath, { mode: 'before_merge', maxTasks: 4, maxRisks: 5 }),
|
|
12
|
+
computeEvidencePack(repoPath, { includePrComment: true, maxFindings: 3 }),
|
|
13
|
+
]);
|
|
14
|
+
const name = path.basename(repoPath) || repoPath;
|
|
15
|
+
const prComment = evidence.prComment ?? '';
|
|
16
|
+
const prCommentReady = evidence.prCommentValidation?.status === 'pass' && prComment.includes('### Developer Feedback');
|
|
17
|
+
const repeatUseReady = start.adoptionLoop?.cadence === 'every_pr' &&
|
|
18
|
+
(start.adoptionLoop.nextCommands.length ?? 0) >= 3;
|
|
19
|
+
const mcpReady = start.evidence.mcpReady;
|
|
20
|
+
const validation = summarizeRepoFeedback(feedbackForRepo(feedback, repoPath, name));
|
|
21
|
+
const feedbackCaptureCommand = feedbackCaptureCommandForRepo(name);
|
|
22
|
+
const gaps = buildGaps({
|
|
23
|
+
prCommentReady,
|
|
24
|
+
repeatUseReady,
|
|
25
|
+
mcpReady,
|
|
26
|
+
healthScore: start.evidence.healthScore,
|
|
27
|
+
validation,
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
path: repoPath,
|
|
31
|
+
name,
|
|
32
|
+
status: statusFromGaps(gaps, start.evidence.healthScore),
|
|
33
|
+
healthScore: start.evidence.healthScore,
|
|
34
|
+
mcpReady,
|
|
35
|
+
prCommentReady,
|
|
36
|
+
repeatUseReady,
|
|
37
|
+
verdict: evidence.verdict,
|
|
38
|
+
gaps,
|
|
39
|
+
feedbackQuestions: [...FEEDBACK_QUESTIONS],
|
|
40
|
+
validation,
|
|
41
|
+
feedbackCaptureCommand,
|
|
42
|
+
nextCommands: [
|
|
43
|
+
'projscan init team --team platform',
|
|
44
|
+
'projscan evidence-pack --pr-comment',
|
|
45
|
+
'projscan preflight --mode before_merge --format json',
|
|
46
|
+
FEEDBACK_INIT_COMMAND,
|
|
47
|
+
feedbackCaptureCommand,
|
|
48
|
+
DOGFOOD_WITH_FEEDBACK_COMMAND,
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function feedbackCaptureCommandForRepo(repoName) {
|
|
53
|
+
return ('projscan feedback add --file .projscan-feedback.json --repo ' +
|
|
54
|
+
shellQuote(repoName) +
|
|
55
|
+
' --pr <url> --reviewer <handle> --useful true --minutes-saved 10');
|
|
56
|
+
}
|
|
57
|
+
function shellQuote(value) {
|
|
58
|
+
if (/^[A-Za-z0-9_./:@%+=,-]+$/.test(value))
|
|
59
|
+
return value;
|
|
60
|
+
return "'" + value.replace(/'/g, "'\\''") + "'";
|
|
61
|
+
}
|
|
62
|
+
function feedbackForRepo(feedback, repoPath, repoName) {
|
|
63
|
+
const normalizedPath = normalizeMatchValue(repoPath);
|
|
64
|
+
const normalizedName = normalizeMatchValue(repoName);
|
|
65
|
+
return feedback.filter((response) => {
|
|
66
|
+
const repo = normalizeMatchValue(response.repo ?? '');
|
|
67
|
+
if (!repo)
|
|
68
|
+
return false;
|
|
69
|
+
return matchesRepoKey(repo, normalizedName, normalizedPath);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function matchesRepoKey(repo, repoName, repoPath) {
|
|
73
|
+
if (repo === repoName || repo === repoPath || repoPath.endsWith('/' + repo))
|
|
74
|
+
return true;
|
|
75
|
+
if (repoName.startsWith(repo + '-') || repoName.endsWith('-' + repo))
|
|
76
|
+
return true;
|
|
77
|
+
if (repoName.includes('-' + repo + '-'))
|
|
78
|
+
return true;
|
|
79
|
+
if (repoPath.includes('/' + repo + '-') || repoPath.includes('/' + repo + '/'))
|
|
80
|
+
return true;
|
|
81
|
+
return repoPath.includes('-' + repo + '-');
|
|
82
|
+
}
|
|
83
|
+
function summarizeRepoFeedback(feedback) {
|
|
84
|
+
return {
|
|
85
|
+
feedbackResponses: feedback.length,
|
|
86
|
+
usefulResponses: feedback.filter((response) => response.useful === true).length,
|
|
87
|
+
prRefs: cleanSignals(feedback.map((response) => response.pr ?? '')),
|
|
88
|
+
minutesSaved: sumNumbers(feedback.map((response) => response.minutesSaved)),
|
|
89
|
+
preventedBadEdits: feedback.filter((response) => response.preventedBadEdit === true).length,
|
|
90
|
+
ownerRoutingClear: feedback.filter((response) => response.ownerRoutingClear === true).length,
|
|
91
|
+
nextCommandClear: feedback.filter((response) => response.nextCommandClear === true).length,
|
|
92
|
+
falsePositiveRules: cleanSignals(feedback.flatMap((response) => response.falsePositiveRules ?? [])),
|
|
93
|
+
missingSignals: cleanSignals(feedback.flatMap((response) => response.missingSignals ?? [])),
|
|
94
|
+
noisyFindings: cleanSignals(feedback.flatMap((response) => response.noisyFindings ?? [])),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function buildGaps(input) {
|
|
98
|
+
const gaps = [];
|
|
99
|
+
if (input.healthScore < 80)
|
|
100
|
+
gaps.push('health score below adoption threshold');
|
|
101
|
+
if (!input.mcpReady)
|
|
102
|
+
gaps.push('MCP setup not ready');
|
|
103
|
+
if (!input.prCommentReady)
|
|
104
|
+
gaps.push('PR comment is missing required usefulness sections');
|
|
105
|
+
if (!input.repeatUseReady)
|
|
106
|
+
gaps.push('repeat-use adoption loop is missing');
|
|
107
|
+
if (input.validation.falsePositiveRules.length > 0) {
|
|
108
|
+
gaps.push('reviewer reported false-positive rule(s): ' + input.validation.falsePositiveRules.join(', '));
|
|
109
|
+
}
|
|
110
|
+
if (input.validation.missingSignals.length > 0) {
|
|
111
|
+
gaps.push('reviewer reported missing signal(s): ' + input.validation.missingSignals.join('; '));
|
|
112
|
+
}
|
|
113
|
+
return gaps;
|
|
114
|
+
}
|
|
115
|
+
function statusFromGaps(gaps, healthScore) {
|
|
116
|
+
if (healthScore < 70 || gaps.some((gap) => gap.includes('PR comment')))
|
|
117
|
+
return 'fail';
|
|
118
|
+
if (gaps.length > 0)
|
|
119
|
+
return 'warn';
|
|
120
|
+
return 'pass';
|
|
121
|
+
}
|
|
122
|
+
function cleanSignals(values) {
|
|
123
|
+
return values
|
|
124
|
+
.map((value) => value.trim())
|
|
125
|
+
.filter((value) => value.length > 0 && value.toLowerCase() !== 'none');
|
|
126
|
+
}
|
|
127
|
+
function sumNumbers(values) {
|
|
128
|
+
return values.reduce((sum, value) => {
|
|
129
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0)
|
|
130
|
+
return sum;
|
|
131
|
+
return sum + value;
|
|
132
|
+
}, 0);
|
|
133
|
+
}
|
|
134
|
+
function normalizeMatchValue(value) {
|
|
135
|
+
return value.replace(/\\/g, '/').replace(/\/$/, '').trim().toLowerCase();
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=dogfoodRepoEvaluation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dogfoodRepoEvaluation.js","sourceRoot":"","sources":["../../src/core/dogfoodRepoEvaluation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { markdownInlineCode } from './markdownSafety.js';
|
|
2
|
+
import { proofReceiptBlocksApproval, proofReceiptNeedsFocusedReview, } from './releaseEvidenceVerdict.js';
|
|
1
3
|
export function renderEvidencePackPrComment(report) {
|
|
2
4
|
const blockers = report.approval.blockingReasons.slice(0, 5);
|
|
3
5
|
const commands = dedupeStrings(report.artifacts.flatMap((artifact) => artifact.commands)).slice(0, 8);
|
|
@@ -54,12 +56,12 @@ export function renderEvidencePackPrComment(report) {
|
|
|
54
56
|
...(pr?.teamRoutes.length ? pr.teamRoutes.map(formatTeamRoute) : formatMissingOwnerHint(pr)),
|
|
55
57
|
'',
|
|
56
58
|
'### Verification',
|
|
57
|
-
...commands.map((command) => `-
|
|
59
|
+
...commands.map((command) => `- ${markdownInlineCode(command)}`),
|
|
58
60
|
'',
|
|
59
61
|
'### Next Commands',
|
|
60
62
|
...(pr?.nextCommands.length
|
|
61
|
-
? pr.nextCommands.map((command) => `-
|
|
62
|
-
: ['
|
|
63
|
+
? pr.nextCommands.map((command) => `- ${markdownInlineCode(command)}`)
|
|
64
|
+
: [`- ${markdownInlineCode('projscan preflight --mode before_merge --format json')}`]),
|
|
63
65
|
'',
|
|
64
66
|
'### Suggested Next Actions',
|
|
65
67
|
...(nextActions.length > 0 ? nextActions.map(formatSuggestedAction) : ['- None recorded.']),
|
|
@@ -175,17 +177,22 @@ function formatApprovalGuidance(report) {
|
|
|
175
177
|
function formatReviewerDecision(report) {
|
|
176
178
|
const trust = report.prSummary?.trust;
|
|
177
179
|
const decision = reviewerDecision(report);
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
report.
|
|
181
|
-
|
|
180
|
+
const proofNeedsReview = proofReceiptNeedsFocusedReview(report.proofReceipt);
|
|
181
|
+
const firstCommand = proofNeedsReview && report.proofReceipt?.command
|
|
182
|
+
? report.proofReceipt.command
|
|
183
|
+
: report.prSummary?.fixFirst?.commands[0] ??
|
|
184
|
+
report.prSummary?.nextCommands[0] ??
|
|
185
|
+
report.suggestedNextActions.find((action) => action.command)?.command ??
|
|
186
|
+
'projscan preflight --mode before_merge --format json';
|
|
182
187
|
const routedOwners = report.prSummary?.teamRoutes.map((route) => route.owner) ?? [];
|
|
183
188
|
const ownerState = routedOwners.length > 0 ? routedOwners.join(', ') : 'unassigned';
|
|
184
|
-
const reason =
|
|
185
|
-
? '
|
|
186
|
-
: trust?.verdict === '
|
|
187
|
-
? '
|
|
188
|
-
:
|
|
189
|
+
const reason = proofNeedsReview
|
|
190
|
+
? 'Proof Receipt is missing, stale, failed, or not strong enough for review.'
|
|
191
|
+
: trust?.verdict === 'actual_defect'
|
|
192
|
+
? 'Concrete blockers are present; fix the first item before approval.'
|
|
193
|
+
: trust?.verdict === 'manual_review'
|
|
194
|
+
? 'Manual review or release sign-off is required; no concrete blocker is recorded unless listed above.'
|
|
195
|
+
: 'No concrete defect or manual-review signal is recorded; preserve the baseline and run verification.';
|
|
189
196
|
return [
|
|
190
197
|
`- decision: ${decision}`,
|
|
191
198
|
`- reason: ${reason}`,
|
|
@@ -205,9 +212,22 @@ function formatProofReceipt(report) {
|
|
|
205
212
|
}
|
|
206
213
|
return [
|
|
207
214
|
`- proof status: ${receipt.proofStatus}`,
|
|
215
|
+
...optionalReceiptLine('proof evidence', proofEvidenceSourceSummary(receipt.proofEvidenceSources)),
|
|
216
|
+
...optionalReceiptLine('proof replay', receipt.proofReplayStatus),
|
|
217
|
+
...optionalReceiptLine('proof sufficiency', receipt.proofSufficiencyStatus),
|
|
208
218
|
`- reviewer decision: ${receipt.reviewerDecision}`,
|
|
209
219
|
...optionalReceiptLine('scope', receipt.scopeStatus),
|
|
210
220
|
...optionalReceiptLine('risk delta', receipt.riskDeltaDirection),
|
|
221
|
+
proofCommandsLine('changed after proof', receipt.changedAfterProof),
|
|
222
|
+
...(receipt.receiptFingerprint ? [`- receipt fingerprint: \`${receipt.receiptFingerprint}\``] : []),
|
|
223
|
+
proofCommandsLine('weak requirements', receipt.weakRequirements),
|
|
224
|
+
proofCommandsLine('missing requirements', receipt.missingRequirements),
|
|
225
|
+
proofCommandsLine('stale requirements', receipt.staleRequirements),
|
|
226
|
+
proofCommandsLine('failed requirements', receipt.failedRequirements),
|
|
227
|
+
proofCommandsLine('Team Proof Recipes', (receipt.teamProofRecipes ?? []).map((recipe) => `recipe: ${recipe}`)),
|
|
228
|
+
proofCommandsLine('required reviewers', receipt.requiredReviewers ?? []),
|
|
229
|
+
proofCommandsLine('recipe proof gaps', receipt.recipeGaps ?? []),
|
|
230
|
+
proofCommandsLine('recipe drift', receipt.recipeDrift ?? []),
|
|
211
231
|
proofCommandsLine('failed proof', receipt.failedCommands),
|
|
212
232
|
proofCommandsLine('stale proof', receipt.staleCommands),
|
|
213
233
|
proofCommandsLine('missing proof', receipt.missingCommands),
|
|
@@ -217,14 +237,31 @@ function formatProofReceipt(report) {
|
|
|
217
237
|
function optionalReceiptLine(label, value) {
|
|
218
238
|
return value ? [`- ${label}: ${value}`] : [];
|
|
219
239
|
}
|
|
240
|
+
function proofEvidenceSourceSummary(sources) {
|
|
241
|
+
if (!sources)
|
|
242
|
+
return undefined;
|
|
243
|
+
return [
|
|
244
|
+
`executed ${sources.executed}`,
|
|
245
|
+
`recorded ${sources.recorded}`,
|
|
246
|
+
`mission ${sources.mission}`,
|
|
247
|
+
`external ${sources.external}`,
|
|
248
|
+
`unknown ${sources.unknown}`,
|
|
249
|
+
].join(' / ');
|
|
250
|
+
}
|
|
220
251
|
function proofCommandsLine(label, commands) {
|
|
221
|
-
return commands.length > 0
|
|
252
|
+
return commands.length > 0
|
|
253
|
+
? `- ${label}: ${commands.map(markdownInlineCode).join('; ')}`
|
|
254
|
+
: `- ${label}: none`;
|
|
222
255
|
}
|
|
223
256
|
function formatDailyPrWorkflow(steps) {
|
|
224
257
|
return (steps ?? buildDailyPrWorkflow()).map((step) => `- ${step.label}: \`${step.command}\` - ${step.purpose}`);
|
|
225
258
|
}
|
|
226
259
|
function reviewerDecision(report) {
|
|
227
260
|
const trust = report.prSummary?.trust.verdict;
|
|
261
|
+
if (proofReceiptBlocksApproval(report.proofReceipt))
|
|
262
|
+
return 'fix first';
|
|
263
|
+
if (proofReceiptNeedsFocusedReview(report.proofReceipt))
|
|
264
|
+
return 'review';
|
|
228
265
|
if (trust === 'actual_defect' || report.verdict === 'blocked')
|
|
229
266
|
return trust === 'manual_review' ? 'review' : 'fix first';
|
|
230
267
|
if (trust === 'manual_review' || report.verdict === 'caution')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidenceComment.js","sourceRoot":"","sources":["../../src/core/evidenceComment.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evidenceComment.js","sourceRoot":"","sources":["../../src/core/evidenceComment.ts"],"names":[],"mappings":"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"}
|