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 @@
|
|
|
1
|
+
{"version":3,"file":"qualityScorecardDimensions.js","sourceRoot":"","sources":["../../src/core/qualityScorecardDimensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Issue } from '../types/common.js';
|
|
2
|
+
import type { FileHotspot } from '../types/hotspots.js';
|
|
3
|
+
import type { PreflightSuggestedAction } from '../types/preflight.js';
|
|
4
|
+
import type { QualityScorecardRisk } from '../types/qualityScorecard.js';
|
|
5
|
+
import type { SessionConflict } from '../types/session.js';
|
|
6
|
+
export declare function qualityScorecardRisks(issues: Issue[], hotspots: FileHotspot[], conflicts: SessionConflict[]): QualityScorecardRisk[];
|
|
7
|
+
export declare function baselineQualityScorecardRisk(): QualityScorecardRisk;
|
|
8
|
+
export declare function suggestQualityScorecardActions(risks: QualityScorecardRisk[]): PreflightSuggestedAction[];
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { isMaintainabilityPenaltyHotspot } from './qualityScorecardDimensions.js';
|
|
2
|
+
import { quoteShellArg } from './startShellArgs.js';
|
|
3
|
+
export function qualityScorecardRisks(issues, hotspots, conflicts) {
|
|
4
|
+
return rankRisks([
|
|
5
|
+
...issues.map(issueToRisk),
|
|
6
|
+
...hotspots.map(hotspotToRisk),
|
|
7
|
+
...conflicts.map(conflictToRisk),
|
|
8
|
+
]);
|
|
9
|
+
}
|
|
10
|
+
export function baselineQualityScorecardRisk() {
|
|
11
|
+
return {
|
|
12
|
+
id: 'qs-baseline',
|
|
13
|
+
priority: 'p2',
|
|
14
|
+
title: 'Preserve the clean quality baseline',
|
|
15
|
+
files: [],
|
|
16
|
+
source: 'issue',
|
|
17
|
+
command: 'projscan quality-scorecard --format json',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function suggestQualityScorecardActions(risks) {
|
|
21
|
+
return risks.slice(0, 8).map((risk) => ({
|
|
22
|
+
label: risk.title,
|
|
23
|
+
command: risk.command,
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
function issueToRisk(issue) {
|
|
27
|
+
return {
|
|
28
|
+
id: `qs-issue-${issue.id}`,
|
|
29
|
+
priority: severityPriority(issue.severity),
|
|
30
|
+
title: issue.title,
|
|
31
|
+
files: issueFiles(issue),
|
|
32
|
+
source: 'issue',
|
|
33
|
+
command: 'projscan doctor --format json',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function hotspotToRisk(hotspot) {
|
|
37
|
+
return {
|
|
38
|
+
id: `qs-hotspot-${slug(hotspot.relativePath)}`,
|
|
39
|
+
priority: hotspotRiskPriority(hotspot),
|
|
40
|
+
title: `Hotspot ${hotspot.relativePath}`,
|
|
41
|
+
files: [hotspot.relativePath],
|
|
42
|
+
source: 'hotspot',
|
|
43
|
+
command: `projscan file ${quoteShellArg(hotspot.relativePath)} --format json`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function hotspotRiskPriority(hotspot) {
|
|
47
|
+
if (!isMaintainabilityPenaltyHotspot(hotspot))
|
|
48
|
+
return 'p2';
|
|
49
|
+
return 'p1';
|
|
50
|
+
}
|
|
51
|
+
function conflictToRisk(conflict, index) {
|
|
52
|
+
return {
|
|
53
|
+
id: `qs-conflict-${index + 1}`,
|
|
54
|
+
priority: conflict.severity === 'error' ? 'p0' : 'p1',
|
|
55
|
+
title: conflict.message,
|
|
56
|
+
files: conflict.files,
|
|
57
|
+
source: 'coordination',
|
|
58
|
+
command: 'projscan session touched --format json',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function rankRisks(risks) {
|
|
62
|
+
const seen = new Set();
|
|
63
|
+
return risks
|
|
64
|
+
.map((risk, index) => ({ risk, index }))
|
|
65
|
+
.filter((entry) => {
|
|
66
|
+
const { risk } = entry;
|
|
67
|
+
if (seen.has(risk.id))
|
|
68
|
+
return false;
|
|
69
|
+
seen.add(risk.id);
|
|
70
|
+
return true;
|
|
71
|
+
})
|
|
72
|
+
.sort((a, b) => priorityRank(a.risk.priority) - priorityRank(b.risk.priority) ||
|
|
73
|
+
sourceRank(a.risk.source) - sourceRank(b.risk.source) ||
|
|
74
|
+
a.index - b.index)
|
|
75
|
+
.map((entry) => entry.risk);
|
|
76
|
+
}
|
|
77
|
+
function issueFiles(issue) {
|
|
78
|
+
return [...new Set((issue.locations ?? []).map((location) => location.file).filter(Boolean))];
|
|
79
|
+
}
|
|
80
|
+
function severityPriority(severity) {
|
|
81
|
+
if (severity === 'error')
|
|
82
|
+
return 'p0';
|
|
83
|
+
if (severity === 'warning')
|
|
84
|
+
return 'p1';
|
|
85
|
+
return 'p2';
|
|
86
|
+
}
|
|
87
|
+
function priorityRank(priority) {
|
|
88
|
+
if (priority === 'p0')
|
|
89
|
+
return 0;
|
|
90
|
+
if (priority === 'p1')
|
|
91
|
+
return 1;
|
|
92
|
+
return 2;
|
|
93
|
+
}
|
|
94
|
+
function sourceRank(source) {
|
|
95
|
+
if (source === 'issue')
|
|
96
|
+
return 0;
|
|
97
|
+
if (source === 'hotspot')
|
|
98
|
+
return 1;
|
|
99
|
+
return 2;
|
|
100
|
+
}
|
|
101
|
+
function slug(value) {
|
|
102
|
+
return (value
|
|
103
|
+
.replace(/[^a-zA-Z0-9]+/g, '-')
|
|
104
|
+
.replace(/^-+|-+$/g, '')
|
|
105
|
+
.toLowerCase() || 'root');
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=qualityScorecardRisks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qualityScorecardRisks.js","sourceRoot":"","sources":["../../src/core/qualityScorecardRisks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ProjectSignals } from './sessionResources.js';
|
|
2
|
+
import { calculateScore } from '../utils/scoreCalculator.js';
|
|
3
|
+
import type { Issue } from '../types/common.js';
|
|
4
|
+
import type { FileHotspot } from '../types/hotspots.js';
|
|
5
|
+
import type { SessionConflict } from '../types/session.js';
|
|
6
|
+
export interface QualityScorecardHotspotSignals {
|
|
7
|
+
available: boolean;
|
|
8
|
+
hotspots: FileHotspot[];
|
|
9
|
+
projectSignals?: ProjectSignals;
|
|
10
|
+
}
|
|
11
|
+
export interface QualityScorecardSignals {
|
|
12
|
+
issues: Issue[];
|
|
13
|
+
health: ReturnType<typeof calculateScore>;
|
|
14
|
+
hotspots: QualityScorecardHotspotSignals;
|
|
15
|
+
riskNow: {
|
|
16
|
+
touchedFiles: string[];
|
|
17
|
+
conflicts: SessionConflict[];
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare function collectQualityScorecardSignals(rootPath: string, maxRisks: number): Promise<QualityScorecardSignals>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { buildCodeGraph } from './codeGraph.js';
|
|
2
|
+
import { analyzeHotspots } from './hotspotAnalyzer.js';
|
|
3
|
+
import { collectIssues } from './issueEngine.js';
|
|
4
|
+
import { scanRepository } from './repositoryScanner.js';
|
|
5
|
+
import { buildRiskNow } from './sessionResources.js';
|
|
6
|
+
import { applyConfigToIssues, loadConfig } from '../utils/config.js';
|
|
7
|
+
import { calculateScore } from '../utils/scoreCalculator.js';
|
|
8
|
+
const RISK_NOW_HOTSPOT_LIMIT = 50;
|
|
9
|
+
export async function collectQualityScorecardSignals(rootPath, maxRisks) {
|
|
10
|
+
const configResult = await loadConfig(rootPath).catch(() => ({ config: { ignore: [] } }));
|
|
11
|
+
const scan = await scanRepository(rootPath, {
|
|
12
|
+
ignore: configResult.config.ignore,
|
|
13
|
+
countIgnoredFiles: false,
|
|
14
|
+
});
|
|
15
|
+
const issues = applyConfigToIssues(await collectIssues(rootPath, scan.files), configResult.config);
|
|
16
|
+
const health = calculateScore(issues);
|
|
17
|
+
const hotspots = await safeHotspots(rootPath, scan.files, issues, maxRisks);
|
|
18
|
+
const riskNow = await safeRiskNow(rootPath, hotspots.projectSignals);
|
|
19
|
+
return { issues, health, hotspots, riskNow };
|
|
20
|
+
}
|
|
21
|
+
async function safeRiskNow(rootPath, projectSignals) {
|
|
22
|
+
try {
|
|
23
|
+
return await buildRiskNow(rootPath, projectSignals ? { projectSignals } : {});
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return { touchedFiles: [], conflicts: [] };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function safeHotspots(rootPath, files, issues, limit) {
|
|
30
|
+
try {
|
|
31
|
+
const graph = await buildCodeGraph(rootPath, files).catch(() => undefined);
|
|
32
|
+
const report = await analyzeHotspots(rootPath, files, issues, {
|
|
33
|
+
limit: Math.max(limit, RISK_NOW_HOTSPOT_LIMIT),
|
|
34
|
+
...(graph ? { graph } : {}),
|
|
35
|
+
});
|
|
36
|
+
const projectSignals = {
|
|
37
|
+
issues,
|
|
38
|
+
hotspots: report.available
|
|
39
|
+
? report.hotspots.map((hotspot) => ({
|
|
40
|
+
file: hotspot.relativePath,
|
|
41
|
+
riskScore: hotspot.riskScore,
|
|
42
|
+
}))
|
|
43
|
+
: null,
|
|
44
|
+
staleSignals: report.available
|
|
45
|
+
? []
|
|
46
|
+
: [`hotspots unavailable: ${report.reason ?? 'unknown reason'}`],
|
|
47
|
+
...(graph ? { graph } : {}),
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
available: report.available,
|
|
51
|
+
hotspots: report.hotspots.slice(0, limit),
|
|
52
|
+
projectSignals,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return { available: false, hotspots: [] };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=qualityScorecardSignals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qualityScorecardSignals.js","sourceRoot":"","sources":["../../src/core/qualityScorecardSignals.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,6 @@ export interface ComputeEvidencePackOptions {
|
|
|
8
8
|
includePrComment?: boolean;
|
|
9
9
|
maxFindings?: number;
|
|
10
10
|
preflightMaxChangedFiles?: number;
|
|
11
|
+
baseRef?: string;
|
|
11
12
|
}
|
|
12
13
|
export declare function computeEvidencePack(rootPath: string, options?: ComputeEvidencePackOptions): Promise<EvidencePackReport>;
|
|
@@ -2,22 +2,26 @@ import { computeBugHunt } from './bugHunt.js';
|
|
|
2
2
|
import { buildDailyPrWorkflow, renderEvidencePackPrComment, validateEvidencePackPrComment, } from './evidenceComment.js';
|
|
3
3
|
export { buildDailyPrWorkflow, renderEvidencePackPrComment, validateEvidencePackPrComment };
|
|
4
4
|
import { computePreflight } from './preflight.js';
|
|
5
|
-
import { computeProve } from './prove.js';
|
|
6
5
|
import { buildEvidencePackArtifacts } from './releaseEvidenceArtifacts.js';
|
|
7
6
|
import { safeBaselineTrend } from './releaseEvidenceBaseline.js';
|
|
8
7
|
import { buildEvidencePackPrSummary } from './releaseEvidencePrSummary.js';
|
|
8
|
+
import { safeProofReceipt } from './releaseEvidenceProofReceipt.js';
|
|
9
9
|
export { calibratePreflightTrust } from './releaseEvidencePrSummary.js';
|
|
10
|
-
import { approvalRecommendation, blockingEvidence, calibrateEvidencePackVerdict, evidencePackVerdict, summarizeEvidencePack, } from './releaseEvidenceVerdict.js';
|
|
10
|
+
import { approvalRecommendation, blockingEvidence, calibrateEvidencePackVerdict, calibrateEvidencePackVerdictForProof, evidencePackVerdict, summarizeEvidencePack, } from './releaseEvidenceVerdict.js';
|
|
11
11
|
import { computeReleaseTrain } from './releaseTrain.js';
|
|
12
12
|
import { computeWorkplan } from './workplan.js';
|
|
13
13
|
import { loadOwnership } from './ownership.js';
|
|
14
|
+
import { getChangedFiles } from '../utils/changedFiles.js';
|
|
14
15
|
export async function computeEvidencePack(rootPath, options = {}) {
|
|
16
|
+
const changedFiles = await safeChangedFilesResult(rootPath, options.baseRef);
|
|
15
17
|
const [train, bugHunt, workplan, preflight] = await Promise.all([
|
|
16
18
|
computeReleaseTrain(rootPath, { lines: options.lines }),
|
|
17
19
|
computeBugHunt(rootPath, { maxFindings: options.maxFindings }),
|
|
18
20
|
computeWorkplan(rootPath, { mode: 'release', maxTasks: 6 }),
|
|
19
21
|
computePreflight(rootPath, {
|
|
20
22
|
mode: 'before_merge',
|
|
23
|
+
baseRef: options.baseRef,
|
|
24
|
+
changedFiles,
|
|
21
25
|
maxChangedFiles: options.preflightMaxChangedFiles,
|
|
22
26
|
}),
|
|
23
27
|
]);
|
|
@@ -46,10 +50,10 @@ export async function computeEvidencePack(rootPath, options = {}) {
|
|
|
46
50
|
baselineTrend,
|
|
47
51
|
ownership,
|
|
48
52
|
});
|
|
49
|
-
const verdict = calibrateEvidencePackVerdict(rawVerdict, prSummary);
|
|
50
53
|
const proofReceipt = options.includePrComment
|
|
51
|
-
? await safeProofReceipt(rootPath)
|
|
54
|
+
? await safeProofReceipt(rootPath, { baseRef: options.baseRef, changedFiles })
|
|
52
55
|
: undefined;
|
|
56
|
+
const verdict = calibrateEvidencePackVerdictForProof(calibrateEvidencePackVerdict(rawVerdict, prSummary), proofReceipt);
|
|
53
57
|
const report = {
|
|
54
58
|
schemaVersion: 1,
|
|
55
59
|
currentVersion: train.currentVersion,
|
|
@@ -62,7 +66,7 @@ export async function computeEvidencePack(rootPath, options = {}) {
|
|
|
62
66
|
},
|
|
63
67
|
approval: {
|
|
64
68
|
required: true,
|
|
65
|
-
recommendation: approvalRecommendation(verdict),
|
|
69
|
+
recommendation: approvalRecommendation(verdict, proofReceipt),
|
|
66
70
|
blockingReasons,
|
|
67
71
|
},
|
|
68
72
|
artifacts,
|
|
@@ -84,46 +88,17 @@ export async function computeEvidencePack(rootPath, options = {}) {
|
|
|
84
88
|
prCommentValidation: validateEvidencePackPrComment(prComment, report),
|
|
85
89
|
};
|
|
86
90
|
}
|
|
87
|
-
async function
|
|
88
|
-
const command = 'projscan prove --changed --format markdown';
|
|
91
|
+
async function safeChangedFilesResult(rootPath, baseRef) {
|
|
89
92
|
try {
|
|
90
|
-
|
|
91
|
-
const receipt = report.receipt;
|
|
92
|
-
if (!receipt || receipt.scope.status === 'missing-contract') {
|
|
93
|
-
return {
|
|
94
|
-
available: false,
|
|
95
|
-
command,
|
|
96
|
-
summary: 'No Proof Contract was available for this evidence pack.',
|
|
97
|
-
proofStatus: 'missing',
|
|
98
|
-
reviewerDecision: 'needs-focused-review',
|
|
99
|
-
missingCommands: [],
|
|
100
|
-
failedCommands: [],
|
|
101
|
-
staleCommands: [],
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
available: true,
|
|
106
|
-
command,
|
|
107
|
-
summary: receipt.summary,
|
|
108
|
-
proofStatus: receipt.proofStatus.status,
|
|
109
|
-
reviewerDecision: receipt.reviewerDecision,
|
|
110
|
-
scopeStatus: receipt.scope.status,
|
|
111
|
-
riskDeltaDirection: receipt.riskDeltaDirection,
|
|
112
|
-
missingCommands: receipt.proofStatus.missingCommands,
|
|
113
|
-
failedCommands: receipt.proofStatus.failedCommands,
|
|
114
|
-
staleCommands: receipt.proofStatus.staleCommands,
|
|
115
|
-
};
|
|
93
|
+
return await getChangedFiles(rootPath, baseRef);
|
|
116
94
|
}
|
|
117
95
|
catch (error) {
|
|
118
96
|
return {
|
|
119
97
|
available: false,
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
missingCommands: [],
|
|
125
|
-
failedCommands: [],
|
|
126
|
-
staleCommands: [],
|
|
98
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
99
|
+
baseRef: null,
|
|
100
|
+
files: [],
|
|
101
|
+
uncommittedFiles: [],
|
|
127
102
|
};
|
|
128
103
|
}
|
|
129
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseEvidence.js","sourceRoot":"","sources":["../../src/core/releaseEvidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"releaseEvidence.js","sourceRoot":"","sources":["../../src/core/releaseEvidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,10 @@ export async function safeBaselineTrend(rootPath) {
|
|
|
15
15
|
}
|
|
16
16
|
try {
|
|
17
17
|
const configResult = await loadConfig(rootPath).catch(() => ({ config: { ignore: [] } }));
|
|
18
|
-
const scan = await scanRepository(rootPath, {
|
|
18
|
+
const scan = await scanRepository(rootPath, {
|
|
19
|
+
ignore: configResult.config.ignore,
|
|
20
|
+
countIgnoredFiles: false,
|
|
21
|
+
});
|
|
19
22
|
const issues = applyConfigToIssues(await collectIssues(rootPath, scan.files), configResult.config);
|
|
20
23
|
const hotspots = await analyzeHotspots(rootPath, scan.files, issues, { limit: 20 });
|
|
21
24
|
const baseline = await loadBaseline(baselinePath, rootPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseEvidenceBaseline.js","sourceRoot":"","sources":["../../src/core/releaseEvidenceBaseline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"releaseEvidenceBaseline.js","sourceRoot":"","sources":["../../src/core/releaseEvidenceBaseline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE;YAC1C,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM;YAClC,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,mBAAmB,CAChC,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,EACzC,YAAY,CAAC,MAAM,CACpB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC5D,OAAO,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ChangedFilesResult } from '../utils/changedFiles.js';
|
|
2
|
+
import type { EvidencePackProofReceiptSummary } from '../types.js';
|
|
3
|
+
export declare function safeProofReceipt(rootPath: string, options: {
|
|
4
|
+
baseRef?: string;
|
|
5
|
+
changedFiles: ChangedFilesResult;
|
|
6
|
+
}): Promise<EvidencePackProofReceiptSummary>;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { computeProve } from './prove.js';
|
|
2
|
+
export async function safeProofReceipt(rootPath, options) {
|
|
3
|
+
const command = 'projscan prove --changed --format markdown';
|
|
4
|
+
try {
|
|
5
|
+
const report = await computeProve(rootPath, {
|
|
6
|
+
changed: true,
|
|
7
|
+
baseRef: options.baseRef,
|
|
8
|
+
changedFiles: options.changedFiles,
|
|
9
|
+
});
|
|
10
|
+
const receipt = report.receipt;
|
|
11
|
+
if (!receipt || receipt.scope.status === 'missing-contract') {
|
|
12
|
+
return {
|
|
13
|
+
available: false,
|
|
14
|
+
command,
|
|
15
|
+
summary: 'No Proof Contract was available for this evidence pack.',
|
|
16
|
+
proofStatus: 'missing',
|
|
17
|
+
reviewerDecision: 'needs-focused-review',
|
|
18
|
+
proofSufficiencyStatus: 'missing',
|
|
19
|
+
proofReplayStatus: 'needs-proof',
|
|
20
|
+
changedAfterProof: [],
|
|
21
|
+
weakRequirements: [],
|
|
22
|
+
missingRequirements: [],
|
|
23
|
+
staleRequirements: [],
|
|
24
|
+
failedRequirements: [],
|
|
25
|
+
missingCommands: [],
|
|
26
|
+
failedCommands: [],
|
|
27
|
+
staleCommands: [],
|
|
28
|
+
teamProofRecipes: [],
|
|
29
|
+
requiredReviewers: [],
|
|
30
|
+
recipeGaps: [],
|
|
31
|
+
recipeDrift: [],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const proofSufficiency = receipt.proofSufficiency;
|
|
35
|
+
const proofReplay = receipt.proofReplay;
|
|
36
|
+
if (!proofSufficiency || !proofReplay) {
|
|
37
|
+
return {
|
|
38
|
+
available: false,
|
|
39
|
+
command,
|
|
40
|
+
summary: 'Proof Receipt was missing replay or sufficiency evidence.',
|
|
41
|
+
proofStatus: receipt.proofStatus.status,
|
|
42
|
+
reviewerDecision: receipt.reviewerDecision,
|
|
43
|
+
proofSufficiencyStatus: 'missing',
|
|
44
|
+
proofReplayStatus: 'needs-proof',
|
|
45
|
+
changedAfterProof: [],
|
|
46
|
+
weakRequirements: [],
|
|
47
|
+
missingRequirements: [],
|
|
48
|
+
staleRequirements: [],
|
|
49
|
+
failedRequirements: [],
|
|
50
|
+
missingCommands: receipt.proofStatus.missingCommands,
|
|
51
|
+
failedCommands: receipt.proofStatus.failedCommands,
|
|
52
|
+
staleCommands: receipt.proofStatus.staleCommands,
|
|
53
|
+
teamProofRecipes: [],
|
|
54
|
+
requiredReviewers: [],
|
|
55
|
+
recipeGaps: [],
|
|
56
|
+
recipeDrift: [],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
available: true,
|
|
61
|
+
command,
|
|
62
|
+
summary: receipt.summary,
|
|
63
|
+
proofStatus: receipt.proofStatus.status,
|
|
64
|
+
reviewerDecision: receipt.reviewerDecision,
|
|
65
|
+
scopeStatus: receipt.scope.status,
|
|
66
|
+
riskDeltaDirection: receipt.riskDeltaDirection,
|
|
67
|
+
proofSufficiencyStatus: proofSufficiency.status,
|
|
68
|
+
proofReplayStatus: proofReplay.status,
|
|
69
|
+
changedAfterProof: proofReplay.changedAfterProof,
|
|
70
|
+
receiptFingerprint: proofReplay.receiptFingerprint,
|
|
71
|
+
weakRequirements: proofSufficiency.weakRequirements,
|
|
72
|
+
missingRequirements: proofSufficiency.missingRequirements,
|
|
73
|
+
staleRequirements: proofSufficiency.staleRequirements,
|
|
74
|
+
failedRequirements: proofSufficiency.failedRequirements,
|
|
75
|
+
missingCommands: receipt.proofStatus.missingCommands,
|
|
76
|
+
failedCommands: receipt.proofStatus.failedCommands,
|
|
77
|
+
staleCommands: receipt.proofStatus.staleCommands,
|
|
78
|
+
proofEvidenceSources: proofEvidenceSourcesFor(receipt.proofStatus.commandEvidence),
|
|
79
|
+
teamProofRecipes: receipt.teamProofRecipes?.map((recipe) => recipe.id) ?? [],
|
|
80
|
+
requiredReviewers: receipt.requiredReviewers ?? [],
|
|
81
|
+
recipeGaps: receipt.recipeGaps ?? [],
|
|
82
|
+
recipeDrift: receipt.recipeDrift ?? [],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return {
|
|
87
|
+
available: false,
|
|
88
|
+
command,
|
|
89
|
+
summary: `Proof Receipt unavailable: ${error instanceof Error ? error.message : 'unknown error'}`,
|
|
90
|
+
proofStatus: 'missing',
|
|
91
|
+
reviewerDecision: 'needs-focused-review',
|
|
92
|
+
proofSufficiencyStatus: 'missing',
|
|
93
|
+
proofReplayStatus: 'needs-proof',
|
|
94
|
+
changedAfterProof: [],
|
|
95
|
+
weakRequirements: [],
|
|
96
|
+
missingRequirements: [],
|
|
97
|
+
staleRequirements: [],
|
|
98
|
+
failedRequirements: [],
|
|
99
|
+
missingCommands: [],
|
|
100
|
+
failedCommands: [],
|
|
101
|
+
staleCommands: [],
|
|
102
|
+
teamProofRecipes: [],
|
|
103
|
+
requiredReviewers: [],
|
|
104
|
+
recipeGaps: [],
|
|
105
|
+
recipeDrift: [],
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function proofEvidenceSourcesFor(commandEvidence) {
|
|
110
|
+
const summary = {
|
|
111
|
+
total: 0,
|
|
112
|
+
executed: 0,
|
|
113
|
+
recorded: 0,
|
|
114
|
+
mission: 0,
|
|
115
|
+
external: 0,
|
|
116
|
+
unknown: 0,
|
|
117
|
+
};
|
|
118
|
+
for (const evidence of commandEvidence) {
|
|
119
|
+
if (!evidence.source)
|
|
120
|
+
continue;
|
|
121
|
+
summary.total += 1;
|
|
122
|
+
if (evidence.source === 'prove-run') {
|
|
123
|
+
summary.executed += 1;
|
|
124
|
+
}
|
|
125
|
+
else if (evidence.source === 'prove-record') {
|
|
126
|
+
summary.recorded += 1;
|
|
127
|
+
}
|
|
128
|
+
else if (evidence.source === 'mission') {
|
|
129
|
+
summary.mission += 1;
|
|
130
|
+
}
|
|
131
|
+
else if (evidence.source === 'external') {
|
|
132
|
+
summary.external += 1;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
summary.unknown += 1;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return summary;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=releaseEvidenceProofReceipt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"releaseEvidenceProofReceipt.js","sourceRoot":"","sources":["../../src/core/releaseEvidenceProofReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,OAA+D;IAE/D,MAAM,OAAO,GAAG,4CAA4C,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE;YAC1C,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAC5D,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,OAAO;gBACP,OAAO,EAAE,yDAAyD;gBAClE,WAAW,EAAE,SAAS;gBACtB,gBAAgB,EAAE,sBAAsB;gBACxC,sBAAsB,EAAE,SAAS;gBACjC,iBAAiB,EAAE,aAAa;gBAChC,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;gBACpB,mBAAmB,EAAE,EAAE;gBACvB,iBAAiB,EAAE,EAAE;gBACrB,kBAAkB,EAAE,EAAE;gBACtB,eAAe,EAAE,EAAE;gBACnB,cAAc,EAAE,EAAE;gBAClB,aAAa,EAAE,EAAE;gBACjB,gBAAgB,EAAE,EAAE;gBACpB,iBAAiB,EAAE,EAAE;gBACrB,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;aAChB,CAAC;QACJ,CAAC;QACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,OAAO;gBACP,OAAO,EAAE,2DAA2D;gBACpE,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;gBACvC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,sBAAsB,EAAE,SAAS;gBACjC,iBAAiB,EAAE,aAAa;gBAChC,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;gBACpB,mBAAmB,EAAE,EAAE;gBACvB,iBAAiB,EAAE,EAAE;gBACrB,kBAAkB,EAAE,EAAE;gBACtB,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,eAAe;gBACpD,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,cAAc;gBAClD,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;gBAChD,gBAAgB,EAAE,EAAE;gBACpB,iBAAiB,EAAE,EAAE;gBACrB,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;aAChB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;YACvC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;YACjC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,sBAAsB,EAAE,gBAAgB,CAAC,MAAM;YAC/C,iBAAiB,EAAE,WAAW,CAAC,MAAM;YACrC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;YAChD,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;YAClD,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;YACnD,mBAAmB,EAAE,gBAAgB,CAAC,mBAAmB;YACzD,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;YACrD,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB;YACvD,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,eAAe;YACpD,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,cAAc;YAClD,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;YAChD,oBAAoB,EAAE,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC;YAClF,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;YAC5E,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,EAAE;YAClD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;SACvC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,OAAO;YACP,OAAO,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;YACjG,WAAW,EAAE,SAAS;YACtB,gBAAgB,EAAE,sBAAsB;YACxC,sBAAsB,EAAE,SAAS;YACjC,iBAAiB,EAAE,aAAa;YAChC,iBAAiB,EAAE,EAAE;YACrB,gBAAgB,EAAE,EAAE;YACpB,mBAAmB,EAAE,EAAE;YACvB,iBAAiB,EAAE,EAAE;YACrB,kBAAkB,EAAE,EAAE;YACtB,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,EAAE;YACpB,iBAAiB,EAAE,EAAE;YACrB,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,eAA2C;IAE3C,MAAM,OAAO,GAAqC;QAChD,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;KACX,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,SAAS;QAC/B,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QACnB,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAC9C,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1C,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { BugHuntReport, EvidencePackArtifact, EvidencePackPrSummary, EvidencePackVerdict, PreflightReport, WorkplanReport } from '../types.js';
|
|
1
|
+
import type { BugHuntReport, EvidencePackArtifact, EvidencePackPrSummary, EvidencePackProofReceiptSummary, EvidencePackVerdict, PreflightReport, WorkplanReport } from '../types.js';
|
|
2
2
|
export declare function blockingEvidence(preflight: PreflightReport, bugHunt: BugHuntReport, workplan: WorkplanReport): string[];
|
|
3
3
|
export declare function evidencePackVerdict(artifacts: EvidencePackArtifact[]): EvidencePackVerdict;
|
|
4
4
|
export declare function calibrateEvidencePackVerdict(verdict: EvidencePackVerdict, prSummary: EvidencePackPrSummary): EvidencePackVerdict;
|
|
5
|
+
export declare function calibrateEvidencePackVerdictForProof(verdict: EvidencePackVerdict, proofReceipt: EvidencePackProofReceiptSummary | undefined): EvidencePackVerdict;
|
|
5
6
|
export declare function summarizeEvidencePack(verdict: EvidencePackVerdict, currentVersion: string | null | undefined, blockingReasons: string[]): string;
|
|
6
|
-
export declare function approvalRecommendation(verdict: EvidencePackVerdict): string;
|
|
7
|
+
export declare function approvalRecommendation(verdict: EvidencePackVerdict, proofReceipt?: EvidencePackProofReceiptSummary): string;
|
|
8
|
+
export declare function proofReceiptBlocksApproval(proofReceipt: EvidencePackProofReceiptSummary | undefined): boolean;
|
|
9
|
+
export declare function proofReceiptNeedsFocusedReview(proofReceipt: EvidencePackProofReceiptSummary | undefined): boolean;
|
|
@@ -31,6 +31,13 @@ export function calibrateEvidencePackVerdict(verdict, prSummary) {
|
|
|
31
31
|
}
|
|
32
32
|
return verdict;
|
|
33
33
|
}
|
|
34
|
+
export function calibrateEvidencePackVerdictForProof(verdict, proofReceipt) {
|
|
35
|
+
if (proofReceiptBlocksApproval(proofReceipt))
|
|
36
|
+
return 'blocked';
|
|
37
|
+
if (proofReceiptNeedsFocusedReview(proofReceipt) && verdict === 'ready')
|
|
38
|
+
return 'caution';
|
|
39
|
+
return verdict;
|
|
40
|
+
}
|
|
34
41
|
export function summarizeEvidencePack(verdict, currentVersion, blockingReasons) {
|
|
35
42
|
const version = currentVersion ?? 'current version';
|
|
36
43
|
if (verdict === 'blocked') {
|
|
@@ -41,13 +48,44 @@ export function summarizeEvidencePack(verdict, currentVersion, blockingReasons)
|
|
|
41
48
|
}
|
|
42
49
|
return `ready: ${version} evidence is assembled for approval`;
|
|
43
50
|
}
|
|
44
|
-
export function approvalRecommendation(verdict) {
|
|
51
|
+
export function approvalRecommendation(verdict, proofReceipt) {
|
|
52
|
+
if (proofReceiptBlocksApproval(proofReceipt))
|
|
53
|
+
return `Do not approve until the Proof Receipt is fixed. Run ${proofReceipt?.command ?? 'projscan prove --changed --format markdown'}.`;
|
|
54
|
+
if (proofReceiptNeedsFocusedReview(proofReceipt))
|
|
55
|
+
return `Review the Proof Receipt before approval. Run ${proofReceipt?.command ?? 'projscan prove --changed --format markdown'}.`;
|
|
45
56
|
if (verdict === 'blocked')
|
|
46
57
|
return 'Do not approve launch until p0 evidence is cleared or accepted.';
|
|
47
58
|
if (verdict === 'caution')
|
|
48
59
|
return 'Review cautions, then approve only after the regression plan passes.';
|
|
49
60
|
return 'Approval can proceed after the recorded regression commands pass.';
|
|
50
61
|
}
|
|
62
|
+
export function proofReceiptBlocksApproval(proofReceipt) {
|
|
63
|
+
if (!proofReceipt)
|
|
64
|
+
return false;
|
|
65
|
+
return (proofReceipt.reviewerDecision === 'stop' ||
|
|
66
|
+
proofReceipt.proofStatus === 'failed' ||
|
|
67
|
+
proofReceipt.proofSufficiencyStatus === 'failed' ||
|
|
68
|
+
proofReceipt.failedCommands.length > 0 ||
|
|
69
|
+
proofReceipt.failedRequirements.length > 0);
|
|
70
|
+
}
|
|
71
|
+
export function proofReceiptNeedsFocusedReview(proofReceipt) {
|
|
72
|
+
if (!proofReceipt)
|
|
73
|
+
return false;
|
|
74
|
+
if (proofReceiptBlocksApproval(proofReceipt))
|
|
75
|
+
return true;
|
|
76
|
+
return (!proofReceipt.available ||
|
|
77
|
+
proofReceipt.proofStatus !== 'passed' ||
|
|
78
|
+
proofReceipt.proofReplayStatus !== 'verified' ||
|
|
79
|
+
['missing', 'stale', 'weak'].includes(proofReceipt.proofSufficiencyStatus ?? '') ||
|
|
80
|
+
proofReceipt.changedAfterProof.length > 0 ||
|
|
81
|
+
proofReceipt.missingCommands.length > 0 ||
|
|
82
|
+
proofReceipt.staleCommands.length > 0 ||
|
|
83
|
+
proofReceipt.missingRequirements.length > 0 ||
|
|
84
|
+
proofReceipt.staleRequirements.length > 0 ||
|
|
85
|
+
proofReceipt.weakRequirements.length > 0 ||
|
|
86
|
+
(proofReceipt.recipeGaps?.length ?? 0) > 0 ||
|
|
87
|
+
(proofReceipt.recipeDrift?.length ?? 0) > 0);
|
|
88
|
+
}
|
|
51
89
|
function dedupeStrings(values) {
|
|
52
90
|
return [...new Set(values.filter(Boolean))];
|
|
53
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseEvidenceVerdict.js","sourceRoot":"","sources":["../../src/core/releaseEvidenceVerdict.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"releaseEvidenceVerdict.js","sourceRoot":"","sources":["../../src/core/releaseEvidenceVerdict.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { ScanResult } from '../types.js';
|
|
|
2
2
|
export interface ScanOptions {
|
|
3
3
|
ignore?: string[];
|
|
4
4
|
includeIgnored?: boolean;
|
|
5
|
+
countIgnoredFiles?: boolean;
|
|
5
6
|
useConfig?: boolean;
|
|
6
7
|
}
|
|
7
8
|
export declare function scanRepository(rootPath: string, options?: ScanOptions): Promise<ScanResult>;
|