@neurcode-ai/contracts 0.1.2 → 0.2.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/dist/admission/framing.d.ts +38 -0
- package/dist/admission/framing.d.ts.map +1 -0
- package/dist/admission/framing.js +78 -0
- package/dist/admission/framing.js.map +1 -0
- package/dist/admission/index.d.ts +4 -0
- package/dist/admission/index.d.ts.map +1 -0
- package/dist/admission/index.js +37 -0
- package/dist/admission/index.js.map +1 -0
- package/dist/admission/privacy.d.ts +23 -0
- package/dist/admission/privacy.d.ts.map +1 -0
- package/dist/admission/privacy.js +99 -0
- package/dist/admission/privacy.js.map +1 -0
- package/dist/admission/schema.d.ts +277 -0
- package/dist/admission/schema.d.ts.map +1 -0
- package/dist/admission/schema.js +156 -0
- package/dist/admission/schema.js.map +1 -0
- package/dist/index.d.ts +93 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +185 -18
- package/dist/index.js.map +1 -1
- package/dist/intelligence.d.ts +522 -0
- package/dist/intelligence.d.ts.map +1 -0
- package/dist/intelligence.js +5 -0
- package/dist/intelligence.js.map +1 -0
- package/dist/proposed-change-validation.d.ts +20 -0
- package/dist/proposed-change-validation.d.ts.map +1 -0
- package/dist/proposed-change-validation.js +582 -0
- package/dist/proposed-change-validation.js.map +1 -0
- package/dist/remediation/capabilities.d.ts +36 -0
- package/dist/remediation/capabilities.d.ts.map +1 -0
- package/dist/remediation/capabilities.js +7 -0
- package/dist/remediation/capabilities.js.map +1 -0
- package/dist/remediation/index.d.ts +5 -0
- package/dist/remediation/index.d.ts.map +1 -0
- package/dist/remediation/index.js +3 -0
- package/dist/remediation/index.js.map +1 -0
- package/dist/remediation/request.d.ts +183 -0
- package/dist/remediation/request.d.ts.map +1 -0
- package/dist/remediation/request.js +15 -0
- package/dist/remediation/request.js.map +1 -0
- package/dist/remediation/response.d.ts +100 -0
- package/dist/remediation/response.d.ts.map +1 -0
- package/dist/remediation/response.js +11 -0
- package/dist/remediation/response.js.map +1 -0
- package/dist/remediation/validation.d.ts +87 -0
- package/dist/remediation/validation.d.ts.map +1 -0
- package/dist/remediation/validation.js +15 -0
- package/dist/remediation/validation.js.map +1 -0
- package/dist/repo-intelligence-v2.d.ts +562 -0
- package/dist/repo-intelligence-v2.d.ts.map +1 -0
- package/dist/repo-intelligence-v2.js +94 -0
- package/dist/repo-intelligence-v2.js.map +1 -0
- package/dist/status-vocabulary.d.ts +45 -0
- package/dist/status-vocabulary.d.ts.map +1 -0
- package/dist/status-vocabulary.js +101 -0
- package/dist/status-vocabulary.js.map +1 -0
- package/dist/verification/canonical-finding.d.ts +171 -0
- package/dist/verification/canonical-finding.d.ts.map +1 -0
- package/dist/verification/canonical-finding.js +3 -0
- package/dist/verification/canonical-finding.js.map +1 -0
- package/dist/verification/index.d.ts +6 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +11 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/pipeline.d.ts +134 -0
- package/dist/verification/pipeline.d.ts.map +1 -0
- package/dist/verification/pipeline.js +57 -0
- package/dist/verification/pipeline.js.map +1 -0
- package/dist/verification/taxonomy.d.ts +10 -0
- package/dist/verification/taxonomy.d.ts.map +1 -0
- package/dist/verification/taxonomy.js +16 -0
- package/dist/verification/taxonomy.js.map +1 -0
- package/package.json +7 -1
- package/src/index.ts +0 -566
- package/src/runtime-compatibility-manifest.test.ts +0 -43
- package/tsconfig.json +0 -19
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REPO_INTELLIGENCE_OPERATIONS_SCHEMA_VERSION = exports.REPO_INTELLIGENCE_EVIDENCE_SCHEMA_VERSION = exports.SEMANTIC_ADVISORY_SCHEMA_VERSION = exports.POLICY_EVALUATION_SCHEMA_VERSION = exports.COMPILED_STRUCTURAL_POLICY_SCHEMA_VERSION = exports.PROPOSED_CHANGE_ENVELOPE_SCHEMA_VERSION = exports.REPOSITORY_GRAPH_SCHEMA_VERSION = void 0;
|
|
4
|
+
exports.assertSourceFreeRepoIntelligence = assertSourceFreeRepoIntelligence;
|
|
5
|
+
exports.isRepoIntelligenceEvidence = isRepoIntelligenceEvidence;
|
|
6
|
+
exports.sourceFreePrivacyContract = sourceFreePrivacyContract;
|
|
7
|
+
exports.REPOSITORY_GRAPH_SCHEMA_VERSION = 'neurcode.repository-graph.v2';
|
|
8
|
+
exports.PROPOSED_CHANGE_ENVELOPE_SCHEMA_VERSION = 'neurcode.proposed-change.v2';
|
|
9
|
+
exports.COMPILED_STRUCTURAL_POLICY_SCHEMA_VERSION = 'neurcode.compiled-structural-policy.v2';
|
|
10
|
+
exports.POLICY_EVALUATION_SCHEMA_VERSION = 'neurcode.policy-evaluation.v2';
|
|
11
|
+
exports.SEMANTIC_ADVISORY_SCHEMA_VERSION = 'neurcode.semantic-advisory.v2';
|
|
12
|
+
exports.REPO_INTELLIGENCE_EVIDENCE_SCHEMA_VERSION = 'neurcode.repo-intelligence-evidence.v2';
|
|
13
|
+
exports.REPO_INTELLIGENCE_OPERATIONS_SCHEMA_VERSION = 'neurcode.repo-intelligence-operations.v1';
|
|
14
|
+
const SOURCE_LIKE_KEYS = new Set([
|
|
15
|
+
'content',
|
|
16
|
+
'source',
|
|
17
|
+
'sourcetext',
|
|
18
|
+
'sourcecode',
|
|
19
|
+
'diff',
|
|
20
|
+
'patch',
|
|
21
|
+
'before',
|
|
22
|
+
'after',
|
|
23
|
+
'rawprompt',
|
|
24
|
+
'rawchat',
|
|
25
|
+
'terminaloutput',
|
|
26
|
+
'secret',
|
|
27
|
+
]);
|
|
28
|
+
function normalizedKey(key) {
|
|
29
|
+
return key.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
30
|
+
}
|
|
31
|
+
function assertSourceFreeRepoIntelligence(value, path = 'payload') {
|
|
32
|
+
if (Array.isArray(value)) {
|
|
33
|
+
value.forEach((item, index) => assertSourceFreeRepoIntelligence(item, `${path}[${index}]`));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (!value || typeof value !== 'object')
|
|
37
|
+
return;
|
|
38
|
+
for (const [key, child] of Object.entries(value)) {
|
|
39
|
+
if (SOURCE_LIKE_KEYS.has(normalizedKey(key))) {
|
|
40
|
+
throw new Error(`source-like repository intelligence field is not allowed: ${path}.${key}`);
|
|
41
|
+
}
|
|
42
|
+
assertSourceFreeRepoIntelligence(child, `${path}.${key}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function isRepoIntelligenceEvidence(value) {
|
|
46
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
47
|
+
return false;
|
|
48
|
+
const record = value;
|
|
49
|
+
if (record.schemaVersion !== exports.REPO_INTELLIGENCE_EVIDENCE_SCHEMA_VERSION)
|
|
50
|
+
return false;
|
|
51
|
+
if (typeof record.evidenceId !== 'string' || typeof record.generatedAt !== 'string')
|
|
52
|
+
return false;
|
|
53
|
+
if (!['deterministic', 'backend_signed', 'advisory', 'not_evaluated'].includes(String(record.classification)))
|
|
54
|
+
return false;
|
|
55
|
+
if (!['allow', 'warn', 'block', 'not_evaluated'].includes(String(record.verdict)))
|
|
56
|
+
return false;
|
|
57
|
+
const enforcement = record.enforcement;
|
|
58
|
+
if (!enforcement || ![
|
|
59
|
+
'hard_prewrite', 'cooperative_prewrite', 'supervised_write',
|
|
60
|
+
'post_write', 'ci_only', 'not_supported',
|
|
61
|
+
].includes(String(enforcement.capability)))
|
|
62
|
+
return false;
|
|
63
|
+
const graph = record.graph;
|
|
64
|
+
const policy = record.policy;
|
|
65
|
+
const privacy = record.privacy;
|
|
66
|
+
if (!graph || !policy || !privacy)
|
|
67
|
+
return false;
|
|
68
|
+
if (!Array.isArray(policy.evaluatedRuleIds) || !Array.isArray(policy.notEvaluatedRuleIds) || !Array.isArray(policy.findings))
|
|
69
|
+
return false;
|
|
70
|
+
if (!Array.isArray(record.advisory))
|
|
71
|
+
return false;
|
|
72
|
+
if (privacy.sourceUploaded !== false || privacy.sourceStored !== false ||
|
|
73
|
+
privacy.diffUploaded !== false || privacy.promptUploaded !== false ||
|
|
74
|
+
privacy.chatUploaded !== false || privacy.rawContentRetained !== false)
|
|
75
|
+
return false;
|
|
76
|
+
try {
|
|
77
|
+
assertSourceFreeRepoIntelligence(value);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
function sourceFreePrivacyContract() {
|
|
85
|
+
return {
|
|
86
|
+
sourceUploaded: false,
|
|
87
|
+
sourceStored: false,
|
|
88
|
+
diffUploaded: false,
|
|
89
|
+
promptUploaded: false,
|
|
90
|
+
chatUploaded: false,
|
|
91
|
+
rawContentRetained: false,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=repo-intelligence-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-intelligence-v2.js","sourceRoot":"","sources":["../src/repo-intelligence-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const STATUS_VOCABULARY_VERSION = "neurcode.status.v1";
|
|
2
|
+
export declare const STATUS_TERMS: {
|
|
3
|
+
readonly verificationComplete: "Verification Complete";
|
|
4
|
+
readonly safePatchApplied: "Safe Patch Applied";
|
|
5
|
+
readonly patchRejected: "Patch Rejected";
|
|
6
|
+
readonly rollbackAvailable: "Rollback Available";
|
|
7
|
+
readonly rollbackApplied: "Rollback Applied";
|
|
8
|
+
readonly replayAvailable: "Replay Available";
|
|
9
|
+
readonly evidenceGenerated: "Evidence Generated";
|
|
10
|
+
readonly manualReviewRecommended: "Manual Review Recommended";
|
|
11
|
+
readonly filesystemChangedSincePreview: "Filesystem Changed Since Preview";
|
|
12
|
+
readonly transactionVerified: "Transaction Verified";
|
|
13
|
+
readonly retrySafe: "Retry Safe";
|
|
14
|
+
};
|
|
15
|
+
export type StatusTermKey = keyof typeof STATUS_TERMS;
|
|
16
|
+
export type SeverityLabel = 'critical' | 'blocking' | 'high' | 'advisory' | 'medium' | 'warning' | 'low' | 'info';
|
|
17
|
+
export declare const SEVERITY_LABELS: Record<SeverityLabel, string>;
|
|
18
|
+
export type VerificationSummaryState = 'clean' | 'issues' | 'partial' | 'failed';
|
|
19
|
+
export declare const VERIFICATION_SUMMARY_LABELS: Record<VerificationSummaryState, string>;
|
|
20
|
+
export type PatchState = 'applied' | 'partial' | 'rejected' | 'stale_preview' | 'filesystem_changed_since_preview' | 'rollback_applied' | 'rollback_stale' | 'rollback_rejected';
|
|
21
|
+
export type ConfidenceLabel = 'HIGH' | 'MEDIUM' | 'LOW';
|
|
22
|
+
export declare const CONFIDENCE_LABELS: Record<ConfidenceLabel, string>;
|
|
23
|
+
export declare function statusTerm(key: StatusTermKey): string;
|
|
24
|
+
export declare function severityLabel(severity: SeverityLabel): string;
|
|
25
|
+
export declare function toPatchStateLabel(state: PatchState): string;
|
|
26
|
+
export declare function toRetrySafeMessage(context: string): string;
|
|
27
|
+
export declare function toManualReviewMessage(context: string): string;
|
|
28
|
+
export declare function toVerificationCompleteTitle(confidenceSuffix?: string): string;
|
|
29
|
+
export declare function toVerificationSummaryLabel(state: VerificationSummaryState): string;
|
|
30
|
+
export declare const DAEMON_ERROR_CODES: {
|
|
31
|
+
readonly badRequest: "daemon.bad_request";
|
|
32
|
+
readonly unauthorized: "daemon.unauthorized";
|
|
33
|
+
readonly forbidden: "daemon.forbidden";
|
|
34
|
+
readonly notFound: "daemon.not_found";
|
|
35
|
+
readonly routeNotFound: "daemon.route_not_found";
|
|
36
|
+
readonly timeout: "daemon.timeout";
|
|
37
|
+
readonly conflict: "daemon.conflict";
|
|
38
|
+
readonly validationFailed: "daemon.validation_failed";
|
|
39
|
+
readonly rateLimited: "daemon.rate_limited";
|
|
40
|
+
readonly internalError: "daemon.internal_error";
|
|
41
|
+
readonly unknown: "daemon.error";
|
|
42
|
+
};
|
|
43
|
+
export type DaemonErrorCode = typeof DAEMON_ERROR_CODES[keyof typeof DAEMON_ERROR_CODES];
|
|
44
|
+
export declare const ONBOARDING_HINTS: readonly ["Run your first verification", "Review findings", "Preview deterministic patch", "Apply safe patch", "View evidence", "Replay execution history"];
|
|
45
|
+
//# sourceMappingURL=status-vocabulary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-vocabulary.d.ts","sourceRoot":"","sources":["../src/status-vocabulary.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAE9D,eAAO,MAAM,YAAY;;;;;;;;;;;;CAYf,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,YAAY,CAAC;AACtD,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,UAAU,GACV,MAAM,GACN,UAAU,GACV,QAAQ,GACR,SAAS,GACT,KAAK,GACL,MAAM,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CASzD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAKhF,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,UAAU,GACV,eAAe,GACf,kCAAkC,GAClC,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,CAAC;AAExB,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAI7D,CAAC;AAEF,wBAAgB,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAErD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAE7D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAU3D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,2BAA2B,CAAC,gBAAgB,SAAK,GAAG,MAAM,CAEzE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAElF;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAYrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,OAAO,kBAAkB,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAEzF,eAAO,MAAM,gBAAgB,6JAOnB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ONBOARDING_HINTS = exports.DAEMON_ERROR_CODES = exports.CONFIDENCE_LABELS = exports.VERIFICATION_SUMMARY_LABELS = exports.SEVERITY_LABELS = exports.STATUS_TERMS = exports.STATUS_VOCABULARY_VERSION = void 0;
|
|
4
|
+
exports.statusTerm = statusTerm;
|
|
5
|
+
exports.severityLabel = severityLabel;
|
|
6
|
+
exports.toPatchStateLabel = toPatchStateLabel;
|
|
7
|
+
exports.toRetrySafeMessage = toRetrySafeMessage;
|
|
8
|
+
exports.toManualReviewMessage = toManualReviewMessage;
|
|
9
|
+
exports.toVerificationCompleteTitle = toVerificationCompleteTitle;
|
|
10
|
+
exports.toVerificationSummaryLabel = toVerificationSummaryLabel;
|
|
11
|
+
exports.STATUS_VOCABULARY_VERSION = 'neurcode.status.v1';
|
|
12
|
+
exports.STATUS_TERMS = {
|
|
13
|
+
verificationComplete: 'Verification Complete',
|
|
14
|
+
safePatchApplied: 'Safe Patch Applied',
|
|
15
|
+
patchRejected: 'Patch Rejected',
|
|
16
|
+
rollbackAvailable: 'Rollback Available',
|
|
17
|
+
rollbackApplied: 'Rollback Applied',
|
|
18
|
+
replayAvailable: 'Replay Available',
|
|
19
|
+
evidenceGenerated: 'Evidence Generated',
|
|
20
|
+
manualReviewRecommended: 'Manual Review Recommended',
|
|
21
|
+
filesystemChangedSincePreview: 'Filesystem Changed Since Preview',
|
|
22
|
+
transactionVerified: 'Transaction Verified',
|
|
23
|
+
retrySafe: 'Retry Safe',
|
|
24
|
+
};
|
|
25
|
+
exports.SEVERITY_LABELS = {
|
|
26
|
+
critical: 'Critical',
|
|
27
|
+
blocking: 'Blocking',
|
|
28
|
+
high: 'High',
|
|
29
|
+
advisory: 'Advisory',
|
|
30
|
+
medium: 'Medium',
|
|
31
|
+
warning: 'Warning',
|
|
32
|
+
low: 'Low',
|
|
33
|
+
info: 'Info',
|
|
34
|
+
};
|
|
35
|
+
exports.VERIFICATION_SUMMARY_LABELS = {
|
|
36
|
+
clean: exports.STATUS_TERMS.verificationComplete,
|
|
37
|
+
issues: 'Verification Findings Detected',
|
|
38
|
+
partial: 'Verification Partially Complete',
|
|
39
|
+
failed: 'Verification Failed',
|
|
40
|
+
};
|
|
41
|
+
exports.CONFIDENCE_LABELS = {
|
|
42
|
+
HIGH: 'HIGH confidence',
|
|
43
|
+
MEDIUM: 'MEDIUM confidence',
|
|
44
|
+
LOW: 'LOW confidence',
|
|
45
|
+
};
|
|
46
|
+
function statusTerm(key) {
|
|
47
|
+
return exports.STATUS_TERMS[key];
|
|
48
|
+
}
|
|
49
|
+
function severityLabel(severity) {
|
|
50
|
+
return exports.SEVERITY_LABELS[severity];
|
|
51
|
+
}
|
|
52
|
+
function toPatchStateLabel(state) {
|
|
53
|
+
if (state === 'applied')
|
|
54
|
+
return exports.STATUS_TERMS.safePatchApplied;
|
|
55
|
+
if (state === 'partial')
|
|
56
|
+
return `${exports.STATUS_TERMS.safePatchApplied} · ${exports.STATUS_TERMS.manualReviewRecommended}`;
|
|
57
|
+
if (state === 'stale_preview' || state === 'filesystem_changed_since_preview') {
|
|
58
|
+
return exports.STATUS_TERMS.filesystemChangedSincePreview;
|
|
59
|
+
}
|
|
60
|
+
if (state === 'rollback_applied')
|
|
61
|
+
return exports.STATUS_TERMS.rollbackApplied;
|
|
62
|
+
if (state === 'rollback_stale')
|
|
63
|
+
return `${exports.STATUS_TERMS.patchRejected} · ${exports.STATUS_TERMS.filesystemChangedSincePreview}`;
|
|
64
|
+
if (state === 'rollback_rejected')
|
|
65
|
+
return exports.STATUS_TERMS.patchRejected;
|
|
66
|
+
return exports.STATUS_TERMS.patchRejected;
|
|
67
|
+
}
|
|
68
|
+
function toRetrySafeMessage(context) {
|
|
69
|
+
return `${context}. ${exports.STATUS_TERMS.retrySafe}.`;
|
|
70
|
+
}
|
|
71
|
+
function toManualReviewMessage(context) {
|
|
72
|
+
return `${exports.STATUS_TERMS.manualReviewRecommended}: ${context}`;
|
|
73
|
+
}
|
|
74
|
+
function toVerificationCompleteTitle(confidenceSuffix = '') {
|
|
75
|
+
return `${exports.STATUS_TERMS.verificationComplete}${confidenceSuffix}`;
|
|
76
|
+
}
|
|
77
|
+
function toVerificationSummaryLabel(state) {
|
|
78
|
+
return exports.VERIFICATION_SUMMARY_LABELS[state];
|
|
79
|
+
}
|
|
80
|
+
exports.DAEMON_ERROR_CODES = {
|
|
81
|
+
badRequest: 'daemon.bad_request',
|
|
82
|
+
unauthorized: 'daemon.unauthorized',
|
|
83
|
+
forbidden: 'daemon.forbidden',
|
|
84
|
+
notFound: 'daemon.not_found',
|
|
85
|
+
routeNotFound: 'daemon.route_not_found',
|
|
86
|
+
timeout: 'daemon.timeout',
|
|
87
|
+
conflict: 'daemon.conflict',
|
|
88
|
+
validationFailed: 'daemon.validation_failed',
|
|
89
|
+
rateLimited: 'daemon.rate_limited',
|
|
90
|
+
internalError: 'daemon.internal_error',
|
|
91
|
+
unknown: 'daemon.error',
|
|
92
|
+
};
|
|
93
|
+
exports.ONBOARDING_HINTS = [
|
|
94
|
+
'Run your first verification',
|
|
95
|
+
'Review findings',
|
|
96
|
+
'Preview deterministic patch',
|
|
97
|
+
'Apply safe patch',
|
|
98
|
+
'View evidence',
|
|
99
|
+
'Replay execution history',
|
|
100
|
+
];
|
|
101
|
+
//# sourceMappingURL=status-vocabulary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-vocabulary.js","sourceRoot":"","sources":["../src/status-vocabulary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { DeterminismClassification, GovernanceFindingCategory, GovernanceSourceSystem } from './taxonomy';
|
|
2
|
+
import { GOVERNANCE_FINDINGS_SCHEMA_VERSION } from './taxonomy';
|
|
3
|
+
import type { GovernancePipelineSummary } from './pipeline';
|
|
4
|
+
export type GovernanceSeverity = 'BLOCKING' | 'ADVISORY' | 'INFO';
|
|
5
|
+
export interface GovernanceEvidence {
|
|
6
|
+
/** Human-readable excerpt (code, diff line, policy excerpt). */
|
|
7
|
+
excerpt: string;
|
|
8
|
+
/** Stable machine hint: AST path, regex id, policy rule type, etc. */
|
|
9
|
+
structuralHint?: string;
|
|
10
|
+
line?: number;
|
|
11
|
+
column?: number;
|
|
12
|
+
filePath?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface GovernanceReplayMetadata {
|
|
15
|
+
evidenceArtifactRef?: string;
|
|
16
|
+
executionRecordRef?: string;
|
|
17
|
+
snapshotIds?: string[];
|
|
18
|
+
/** True when replay used only immutable artifacts with matching digests. */
|
|
19
|
+
reconstructedExactly?: boolean;
|
|
20
|
+
/** Present when bounded degradation occurred (truncation, missing artifact, etc.). */
|
|
21
|
+
boundedDegradation?: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface GovernanceProvenanceMetadata {
|
|
24
|
+
runId?: string;
|
|
25
|
+
planId?: string | null;
|
|
26
|
+
verificationSource?: string;
|
|
27
|
+
policyLockFingerprint?: string | null;
|
|
28
|
+
compiledPolicyFingerprint?: string | null;
|
|
29
|
+
generatedAt?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Canonical pipeline stage that emitted this finding. Additive lineage —
|
|
32
|
+
* never participates in the finding identity or the replay checksum, but
|
|
33
|
+
* threads governance computation provenance through to dashboards and audit.
|
|
34
|
+
*/
|
|
35
|
+
producedByStage?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface GovernanceSuppressionMetadata {
|
|
38
|
+
suppressed: boolean;
|
|
39
|
+
directive?: string;
|
|
40
|
+
exceptionId?: string;
|
|
41
|
+
reason?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface GovernanceGraphMetadata {
|
|
44
|
+
edgeVia?: string;
|
|
45
|
+
fromRepo?: string;
|
|
46
|
+
toRepo?: string;
|
|
47
|
+
confidence?: 'high' | 'medium' | 'low';
|
|
48
|
+
traversalDepth?: number;
|
|
49
|
+
/** Explicit incompleteness — never omit when graph was capped. */
|
|
50
|
+
truncated?: boolean;
|
|
51
|
+
truncationReason?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface GovernanceSemanticMetadata {
|
|
54
|
+
retrievalMethod?: 'deterministic-graph' | 'deterministic-tfidf' | 'heuristic-expansion';
|
|
55
|
+
matchedTerms?: string[];
|
|
56
|
+
tfidfScore?: number;
|
|
57
|
+
corpusCoverageRatio?: number;
|
|
58
|
+
indexTruncated?: boolean;
|
|
59
|
+
documentsIndexed?: number;
|
|
60
|
+
documentsCap?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface GovernanceStructuralMetadata {
|
|
63
|
+
ruleId: string;
|
|
64
|
+
ruleName?: string;
|
|
65
|
+
policyRef?: string;
|
|
66
|
+
language?: string;
|
|
67
|
+
astNodeType?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Canonical normalized finding — single source of truth across CLI, CI, replay, dashboards.
|
|
71
|
+
*/
|
|
72
|
+
export interface GovernanceFinding {
|
|
73
|
+
/** Deterministic id: sha256-128 of stable fields, or caller-supplied stable id. */
|
|
74
|
+
id: string;
|
|
75
|
+
category: GovernanceFindingCategory;
|
|
76
|
+
sourceSystem: GovernanceSourceSystem;
|
|
77
|
+
determinismClassification: DeterminismClassification;
|
|
78
|
+
severity: GovernanceSeverity;
|
|
79
|
+
/** 0–1; structural deterministic often 0.85–1.0; heuristics lower. */
|
|
80
|
+
confidence: number;
|
|
81
|
+
title: string;
|
|
82
|
+
evidence: GovernanceEvidence;
|
|
83
|
+
operationalImplication: string;
|
|
84
|
+
remediation: string;
|
|
85
|
+
replayMetadata?: GovernanceReplayMetadata;
|
|
86
|
+
provenanceMetadata?: GovernanceProvenanceMetadata;
|
|
87
|
+
suppressionMetadata?: GovernanceSuppressionMetadata;
|
|
88
|
+
graphMetadata?: GovernanceGraphMetadata;
|
|
89
|
+
semanticMetadata?: GovernanceSemanticMetadata;
|
|
90
|
+
structuralMetadata?: GovernanceStructuralMetadata;
|
|
91
|
+
/**
|
|
92
|
+
* When multiple raw signals were merged for reviewer compression.
|
|
93
|
+
* Primary finding keeps merged* fields; sources list contributing ids.
|
|
94
|
+
*/
|
|
95
|
+
mergedFrom?: string[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Replay reconstruction status.
|
|
99
|
+
*
|
|
100
|
+
* exact - checksums match, identical governance output
|
|
101
|
+
* bounded-degradation - minor mismatch (e.g. missing artifact) but not a hard failure
|
|
102
|
+
* drift-detected - HARD FAILURE: same commit + diff + rules produced different output.
|
|
103
|
+
* Checksum mismatch. Must be investigated before any governance trust.
|
|
104
|
+
*/
|
|
105
|
+
export type ReplayReconstructionStatus = 'exact' | 'bounded-degradation' | 'drift-detected';
|
|
106
|
+
/**
|
|
107
|
+
* Phase 2: Typed drift reason taxonomy for replay integrity analysis.
|
|
108
|
+
*
|
|
109
|
+
* Each reason maps to a specific class of replay failure:
|
|
110
|
+
* finding-order-drift - findings appear in different canonical order
|
|
111
|
+
* severity-drift - a finding changed severity between runs
|
|
112
|
+
* determinism-drift - a finding changed determinismClassification
|
|
113
|
+
* provenance-drift - provenance metadata differs between runs
|
|
114
|
+
* suppression-drift - suppression state changed between runs
|
|
115
|
+
* checksum-drift - top-level replayChecksum mismatch (composite signal)
|
|
116
|
+
* missing-finding - finding present in baseline but absent in replay
|
|
117
|
+
* extra-finding - finding present in replay but absent in baseline
|
|
118
|
+
*/
|
|
119
|
+
export type ReplayIntegrityDriftReason = 'finding-order-drift' | 'severity-drift' | 'determinism-drift' | 'provenance-drift' | 'suppression-drift' | 'checksum-drift' | 'missing-finding' | 'extra-finding';
|
|
120
|
+
export interface GovernanceReplayIntegrity {
|
|
121
|
+
status: ReplayReconstructionStatus;
|
|
122
|
+
missingArtifacts: string[];
|
|
123
|
+
provenanceMismatches: string[];
|
|
124
|
+
graphMismatches: string[];
|
|
125
|
+
semanticTruncationMismatches: string[];
|
|
126
|
+
notes: string[];
|
|
127
|
+
/** Phase 2: Typed drift reasons — empty if status === 'exact'. */
|
|
128
|
+
driftReasons?: ReplayIntegrityDriftReason[];
|
|
129
|
+
}
|
|
130
|
+
export interface GovernanceVerificationEnvelope {
|
|
131
|
+
schemaVersion: typeof GOVERNANCE_FINDINGS_SCHEMA_VERSION;
|
|
132
|
+
generatedAt: string;
|
|
133
|
+
findings: GovernanceFinding[];
|
|
134
|
+
/** Count of raw findings folded into merged clusters. */
|
|
135
|
+
compressedDuplicateCount: number;
|
|
136
|
+
/**
|
|
137
|
+
* Phase 6: Total count of cross-source-system duplicates absorbed into
|
|
138
|
+
* canonical finding identities. Equals compressedDuplicateCount but named
|
|
139
|
+
* explicitly for telemetry readability.
|
|
140
|
+
*/
|
|
141
|
+
deduplicatedFindingCount?: number;
|
|
142
|
+
/**
|
|
143
|
+
* Phase 2: Count of findings demoted from BLOCKING to ADVISORY because they
|
|
144
|
+
* exist on unmodified (historical) lines. Visible for CI reporting.
|
|
145
|
+
*/
|
|
146
|
+
legacyDebtFindingCount?: number;
|
|
147
|
+
/**
|
|
148
|
+
* Phase 3: Deterministic replay checksum.
|
|
149
|
+
* SHA-256 over the canonically sorted finding set (id + severity + determinism + file + line).
|
|
150
|
+
* Same commit + same diff + same rules MUST produce the same checksum.
|
|
151
|
+
* A mismatch between two runs with identical inputs indicates replay drift (trust failure).
|
|
152
|
+
*/
|
|
153
|
+
replayChecksum?: string;
|
|
154
|
+
replayIntegrity?: GovernanceReplayIntegrity;
|
|
155
|
+
/** Pilot / operational summary lines (high-signal, not verbose). */
|
|
156
|
+
reviewerSummary?: string[];
|
|
157
|
+
/**
|
|
158
|
+
* Canonical governance pipeline summary — stage execution ledger surface.
|
|
159
|
+
*
|
|
160
|
+
* Additive observability. Excluded by design from:
|
|
161
|
+
* - `replayChecksum` (computed only from finding-set fields)
|
|
162
|
+
* - finding identity (`GovernanceFinding.id`)
|
|
163
|
+
* - canonical sort order
|
|
164
|
+
*
|
|
165
|
+
* Present when verify ran with the staged pipeline runtime. Consumers
|
|
166
|
+
* (dashboards, audit replay, SLO gates) read this to explain HOW
|
|
167
|
+
* governance computation occurred. Absent on legacy / older-CLI envelopes.
|
|
168
|
+
*/
|
|
169
|
+
pipelineSummary?: GovernancePipelineSummary;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=canonical-finding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-finding.d.ts","sourceRoot":"","sources":["../../src/verification/canonical-finding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-finding.js","sourceRoot":"","sources":["../../src/verification/canonical-finding.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { DeterminismClassification, GovernanceFindingCategory, GovernanceSourceSystem, } from './taxonomy';
|
|
2
|
+
export { GOVERNANCE_FINDINGS_SCHEMA_VERSION, isDeterminismClassification, } from './taxonomy';
|
|
3
|
+
export type { GovernanceEvidence, GovernanceFinding, GovernanceGraphMetadata, GovernanceProvenanceMetadata, GovernanceReplayIntegrity, GovernanceReplayMetadata, GovernanceSemanticMetadata, GovernanceSeverity, GovernanceStructuralMetadata, GovernanceSuppressionMetadata, GovernanceVerificationEnvelope, ReplayIntegrityDriftReason, ReplayReconstructionStatus, } from './canonical-finding';
|
|
4
|
+
export type { GovernancePipelineSummary, GovernanceStageBoundary, GovernanceStageFailure, GovernanceStageFailureCategory, GovernanceStageId, GovernanceStageMetrics, GovernanceStageReplayMetadata, GovernanceStageResult, GovernanceStageStatus, GovernanceStageSummary, } from './pipeline';
|
|
5
|
+
export { GOVERNANCE_PIPELINE_SCHEMA_VERSION, GOVERNANCE_STAGE_ORDER, isGovernanceStageId, } from './pipeline';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kCAAkC,EAClC,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isGovernanceStageId = exports.GOVERNANCE_STAGE_ORDER = exports.GOVERNANCE_PIPELINE_SCHEMA_VERSION = exports.isDeterminismClassification = exports.GOVERNANCE_FINDINGS_SCHEMA_VERSION = void 0;
|
|
4
|
+
var taxonomy_1 = require("./taxonomy");
|
|
5
|
+
Object.defineProperty(exports, "GOVERNANCE_FINDINGS_SCHEMA_VERSION", { enumerable: true, get: function () { return taxonomy_1.GOVERNANCE_FINDINGS_SCHEMA_VERSION; } });
|
|
6
|
+
Object.defineProperty(exports, "isDeterminismClassification", { enumerable: true, get: function () { return taxonomy_1.isDeterminismClassification; } });
|
|
7
|
+
var pipeline_1 = require("./pipeline");
|
|
8
|
+
Object.defineProperty(exports, "GOVERNANCE_PIPELINE_SCHEMA_VERSION", { enumerable: true, get: function () { return pipeline_1.GOVERNANCE_PIPELINE_SCHEMA_VERSION; } });
|
|
9
|
+
Object.defineProperty(exports, "GOVERNANCE_STAGE_ORDER", { enumerable: true, get: function () { return pipeline_1.GOVERNANCE_STAGE_ORDER; } });
|
|
10
|
+
Object.defineProperty(exports, "isGovernanceStageId", { enumerable: true, get: function () { return pipeline_1.isGovernanceStageId; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":";;;AAKA,uCAGoB;AAFlB,8HAAA,kCAAkC,OAAA;AAClC,uHAAA,2BAA2B,OAAA;AA6B7B,uCAIoB;AAHlB,8HAAA,kCAAkC,OAAA;AAClC,kHAAA,sBAAsB,OAAA;AACtB,+GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical Governance Pipeline Contracts
|
|
3
|
+
* ----------------------------------------
|
|
4
|
+
* Shared, immutable types describing the staged decomposition of the verify runtime.
|
|
5
|
+
*
|
|
6
|
+
* These contracts are ADDITIVE. They do not replace, mutate, or re-encode the canonical
|
|
7
|
+
* governance envelope (`GovernanceVerificationEnvelope`), the finding identity scheme,
|
|
8
|
+
* or the replay checksum. Stage metadata flows alongside the envelope as an
|
|
9
|
+
* out-of-band observability + replay-reconstruction surface.
|
|
10
|
+
*
|
|
11
|
+
* Design invariants:
|
|
12
|
+
* - Stage IDs are a closed set. Adding a new stage requires bumping the schema version.
|
|
13
|
+
* - Stage metadata never carries excerpts, file content, or PII.
|
|
14
|
+
* - Stage fingerprints are computed from stable identifiers — never wall-clock timestamps.
|
|
15
|
+
* - A stage's `replay.outputFingerprint` is independent of `replayChecksum`; the two
|
|
16
|
+
* are consistent but serve different audiences (stage lineage vs. envelope identity).
|
|
17
|
+
*/
|
|
18
|
+
import type { DeterminismClassification } from './taxonomy';
|
|
19
|
+
/**
|
|
20
|
+
* Closed set of canonical governance pipeline stage identifiers.
|
|
21
|
+
*
|
|
22
|
+
* The order of declaration is the canonical execution order. Consumers MUST treat
|
|
23
|
+
* this list as the authoritative pipeline definition for replay reconstruction
|
|
24
|
+
* and explainability dashboards.
|
|
25
|
+
*/
|
|
26
|
+
export type GovernanceStageId = 'diff-normalization' | 'plan-sync' | 'policy-lock' | 'compiled-policy' | 'policy-exceptions' | 'structural-analysis' | 'runtime-guard' | 'intent-evaluation' | 'semantic-analysis' | 'policy-evaluation' | 'suppression-evaluation' | 'advisory-signals' | 'change-contract' | 'ai-debt-budget' | 'governance-synthesis' | 'provenance-generation' | 'replay-integrity' | 'remediation-export-preparation' | 'evidence-generation' | 'telemetry-harvest' | 'ci-shaping' | 'output-rendering';
|
|
27
|
+
/**
|
|
28
|
+
* Terminal state for a stage execution. `degraded` means the stage produced output
|
|
29
|
+
* but a non-fatal anomaly was observed (e.g. truncation, partial dependency).
|
|
30
|
+
*/
|
|
31
|
+
export type GovernanceStageStatus = 'succeeded' | 'skipped' | 'degraded' | 'failed';
|
|
32
|
+
/**
|
|
33
|
+
* Stage failure category. Maps to operator-visible runbooks and replay annotations.
|
|
34
|
+
*/
|
|
35
|
+
export type GovernanceStageFailureCategory = 'timeout' | 'exception' | 'invariant-violation' | 'degraded-dependency' | 'aborted-precondition';
|
|
36
|
+
export interface GovernanceStageMetrics {
|
|
37
|
+
/** Stage wall-clock duration in milliseconds. */
|
|
38
|
+
durationMs: number;
|
|
39
|
+
/** Size of the stage input as a stable item count (e.g. diff files, rules). Optional. */
|
|
40
|
+
inputItemCount?: number;
|
|
41
|
+
/** Size of the stage output as a stable item count (e.g. findings produced). Optional. */
|
|
42
|
+
outputItemCount?: number;
|
|
43
|
+
/** Delta of `process.memoryUsage().heapUsed` across the stage. Optional. */
|
|
44
|
+
memoryDeltaBytes?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface GovernanceStageReplayMetadata {
|
|
47
|
+
stageId: GovernanceStageId;
|
|
48
|
+
/** Determinism classification of the stage itself (matches the most-deterministic finding it can emit). */
|
|
49
|
+
determinism: DeterminismClassification;
|
|
50
|
+
/** SHA-256 fingerprint of stage input, computed from stable identifiers only. */
|
|
51
|
+
inputFingerprint?: string;
|
|
52
|
+
/** SHA-256 fingerprint of stage output, computed from stable identifiers only. */
|
|
53
|
+
outputFingerprint?: string;
|
|
54
|
+
/** Stage IDs whose successful completion was a precondition for this stage. */
|
|
55
|
+
dependsOn: GovernanceStageId[];
|
|
56
|
+
/** Stage start time as an ISO-8601 timestamp. NOT included in fingerprints. */
|
|
57
|
+
startedAt: string;
|
|
58
|
+
/** Stage finish time as an ISO-8601 timestamp. NOT included in fingerprints. */
|
|
59
|
+
finishedAt: string;
|
|
60
|
+
}
|
|
61
|
+
export interface GovernanceStageFailure {
|
|
62
|
+
category: GovernanceStageFailureCategory;
|
|
63
|
+
/** Stable, PII-free message. Never includes source excerpts. */
|
|
64
|
+
message: string;
|
|
65
|
+
/** True when the rest of the pipeline can proceed in a degraded mode. */
|
|
66
|
+
recoverable: boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Boundary policy declared by a stage. The pipeline runtime uses this to decide
|
|
70
|
+
* how to respond to failure (abort vs. degrade) and which stages must run first.
|
|
71
|
+
*/
|
|
72
|
+
export interface GovernanceStageBoundary {
|
|
73
|
+
/** When true, the stage failing is reported but does NOT abort downstream stages. */
|
|
74
|
+
isolateFailure: boolean;
|
|
75
|
+
/** When true, the stage is required for governance correctness. */
|
|
76
|
+
required: boolean;
|
|
77
|
+
/** Stage IDs whose successful completion is required before this stage may execute. */
|
|
78
|
+
dependencies: GovernanceStageId[];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Single-stage execution receipt. Persisted alongside the canonical envelope and
|
|
82
|
+
* consumed by replay reconstruction, observability dashboards, and SLO gates.
|
|
83
|
+
*
|
|
84
|
+
* `output` is the typed stage payload; consumers MUST treat it as immutable.
|
|
85
|
+
*/
|
|
86
|
+
export interface GovernanceStageResult<T = unknown> {
|
|
87
|
+
stageId: GovernanceStageId;
|
|
88
|
+
status: GovernanceStageStatus;
|
|
89
|
+
/** Stage output. `null` when status is 'failed' or 'skipped'. */
|
|
90
|
+
output: T | null;
|
|
91
|
+
metrics: GovernanceStageMetrics;
|
|
92
|
+
replay: GovernanceStageReplayMetadata;
|
|
93
|
+
failure?: GovernanceStageFailure;
|
|
94
|
+
/** Stage-emitted observability notes (PII-free, bounded). */
|
|
95
|
+
notes?: string[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Compact, replay-friendly summary of a stage. Embedded into telemetry and the
|
|
99
|
+
* pipeline-level summary surface.
|
|
100
|
+
*/
|
|
101
|
+
export interface GovernanceStageSummary {
|
|
102
|
+
stageId: GovernanceStageId;
|
|
103
|
+
status: GovernanceStageStatus;
|
|
104
|
+
determinism: DeterminismClassification;
|
|
105
|
+
durationMs: number;
|
|
106
|
+
inputFingerprint?: string;
|
|
107
|
+
outputFingerprint?: string;
|
|
108
|
+
dependsOn: GovernanceStageId[];
|
|
109
|
+
failureCategory?: GovernanceStageFailureCategory;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Pipeline-level summary. Pinned across replays. The `pipelineFingerprint` is
|
|
113
|
+
* a stable SHA-256 over the ordered (stageId, outputFingerprint, status) tuple
|
|
114
|
+
* and is independent of `GovernanceVerificationEnvelope.replayChecksum`.
|
|
115
|
+
*/
|
|
116
|
+
export interface GovernancePipelineSummary {
|
|
117
|
+
schemaVersion: typeof GOVERNANCE_PIPELINE_SCHEMA_VERSION;
|
|
118
|
+
pipelineFingerprint: string;
|
|
119
|
+
stages: GovernanceStageSummary[];
|
|
120
|
+
totalDurationMs: number;
|
|
121
|
+
degradedStages: GovernanceStageId[];
|
|
122
|
+
failedStages: GovernanceStageId[];
|
|
123
|
+
}
|
|
124
|
+
export declare const GOVERNANCE_PIPELINE_SCHEMA_VERSION: "2026-05-14.1";
|
|
125
|
+
/**
|
|
126
|
+
* Type guard: is the given string a known stage identifier?
|
|
127
|
+
*/
|
|
128
|
+
export declare function isGovernanceStageId(value: string): value is GovernanceStageId;
|
|
129
|
+
/**
|
|
130
|
+
* Canonical execution order. Mirror of the union above — exported as a runtime
|
|
131
|
+
* value for iteration, indexing, and stage-ordering invariants.
|
|
132
|
+
*/
|
|
133
|
+
export declare const GOVERNANCE_STAGE_ORDER: readonly GovernanceStageId[];
|
|
134
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/verification/pipeline.ts"],"names":[],"mappings":"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"}
|