@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.
Files changed (76) hide show
  1. package/dist/admission/framing.d.ts +38 -0
  2. package/dist/admission/framing.d.ts.map +1 -0
  3. package/dist/admission/framing.js +78 -0
  4. package/dist/admission/framing.js.map +1 -0
  5. package/dist/admission/index.d.ts +4 -0
  6. package/dist/admission/index.d.ts.map +1 -0
  7. package/dist/admission/index.js +37 -0
  8. package/dist/admission/index.js.map +1 -0
  9. package/dist/admission/privacy.d.ts +23 -0
  10. package/dist/admission/privacy.d.ts.map +1 -0
  11. package/dist/admission/privacy.js +99 -0
  12. package/dist/admission/privacy.js.map +1 -0
  13. package/dist/admission/schema.d.ts +277 -0
  14. package/dist/admission/schema.d.ts.map +1 -0
  15. package/dist/admission/schema.js +156 -0
  16. package/dist/admission/schema.js.map +1 -0
  17. package/dist/index.d.ts +93 -11
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +185 -18
  20. package/dist/index.js.map +1 -1
  21. package/dist/intelligence.d.ts +522 -0
  22. package/dist/intelligence.d.ts.map +1 -0
  23. package/dist/intelligence.js +5 -0
  24. package/dist/intelligence.js.map +1 -0
  25. package/dist/proposed-change-validation.d.ts +20 -0
  26. package/dist/proposed-change-validation.d.ts.map +1 -0
  27. package/dist/proposed-change-validation.js +582 -0
  28. package/dist/proposed-change-validation.js.map +1 -0
  29. package/dist/remediation/capabilities.d.ts +36 -0
  30. package/dist/remediation/capabilities.d.ts.map +1 -0
  31. package/dist/remediation/capabilities.js +7 -0
  32. package/dist/remediation/capabilities.js.map +1 -0
  33. package/dist/remediation/index.d.ts +5 -0
  34. package/dist/remediation/index.d.ts.map +1 -0
  35. package/dist/remediation/index.js +3 -0
  36. package/dist/remediation/index.js.map +1 -0
  37. package/dist/remediation/request.d.ts +183 -0
  38. package/dist/remediation/request.d.ts.map +1 -0
  39. package/dist/remediation/request.js +15 -0
  40. package/dist/remediation/request.js.map +1 -0
  41. package/dist/remediation/response.d.ts +100 -0
  42. package/dist/remediation/response.d.ts.map +1 -0
  43. package/dist/remediation/response.js +11 -0
  44. package/dist/remediation/response.js.map +1 -0
  45. package/dist/remediation/validation.d.ts +87 -0
  46. package/dist/remediation/validation.d.ts.map +1 -0
  47. package/dist/remediation/validation.js +15 -0
  48. package/dist/remediation/validation.js.map +1 -0
  49. package/dist/repo-intelligence-v2.d.ts +562 -0
  50. package/dist/repo-intelligence-v2.d.ts.map +1 -0
  51. package/dist/repo-intelligence-v2.js +94 -0
  52. package/dist/repo-intelligence-v2.js.map +1 -0
  53. package/dist/status-vocabulary.d.ts +45 -0
  54. package/dist/status-vocabulary.d.ts.map +1 -0
  55. package/dist/status-vocabulary.js +101 -0
  56. package/dist/status-vocabulary.js.map +1 -0
  57. package/dist/verification/canonical-finding.d.ts +171 -0
  58. package/dist/verification/canonical-finding.d.ts.map +1 -0
  59. package/dist/verification/canonical-finding.js +3 -0
  60. package/dist/verification/canonical-finding.js.map +1 -0
  61. package/dist/verification/index.d.ts +6 -0
  62. package/dist/verification/index.d.ts.map +1 -0
  63. package/dist/verification/index.js +11 -0
  64. package/dist/verification/index.js.map +1 -0
  65. package/dist/verification/pipeline.d.ts +134 -0
  66. package/dist/verification/pipeline.d.ts.map +1 -0
  67. package/dist/verification/pipeline.js +57 -0
  68. package/dist/verification/pipeline.js.map +1 -0
  69. package/dist/verification/taxonomy.d.ts +10 -0
  70. package/dist/verification/taxonomy.d.ts.map +1 -0
  71. package/dist/verification/taxonomy.js +16 -0
  72. package/dist/verification/taxonomy.js.map +1 -0
  73. package/package.json +7 -1
  74. package/src/index.ts +0 -566
  75. package/src/runtime-compatibility-manifest.test.ts +0 -43
  76. package/tsconfig.json +0 -19
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ /**
3
+ * Runtime Admission — Phase A schema (Provenance Core V1).
4
+ *
5
+ * Source-free, deterministic provenance types shared across CLI, the future
6
+ * OSS advisory Action, and future Enterprise enforcement. Phase A defines the
7
+ * normalized git tree-delta, the governed coverage manifest, the self-attested
8
+ * local artifact, and the consistency decision. No signing, no receipts, no
9
+ * backend, no Action here — those are later phases.
10
+ *
11
+ * Two distinct hashes by design (do not collapse them):
12
+ * - deltaHash: exact, base-specific tree-delta fingerprint (debugging /
13
+ * deterministic reproduction).
14
+ * - coverageSetHash: governed-effect set fingerprint used for squash/rebase-
15
+ * survivable, per-entry subset matching of a PR to sessions.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.GIT_MODE_ABSENT = exports.GIT_MODE_SUBMODULE = exports.GIT_MODE_SYMLINK = exports.GIT_MODE_EXEC = exports.GIT_MODE_BLOB = exports.SELF_ATTESTED_ADMISSION_DISCLAIMER = exports.ADMISSION_CONSISTENCY_DECISION_SCHEMA_VERSION = exports.SELF_ATTESTED_ADMISSION_RECORD_SCHEMA_VERSION = exports.ADMISSION_COVERAGE_MANIFEST_SCHEMA_VERSION = void 0;
19
+ exports.objectIdHexLength = objectIdHexLength;
20
+ exports.zeroObjectId = zeroObjectId;
21
+ exports.isZeroObjectId = isZeroObjectId;
22
+ exports.isValidObjectId = isValidObjectId;
23
+ exports.isKnownGitMode = isKnownGitMode;
24
+ exports.objectTypeForMode = objectTypeForMode;
25
+ exports.deltaEntryCanonicalFields = deltaEntryCanonicalFields;
26
+ exports.coverageEntryCanonicalFields = coverageEntryCanonicalFields;
27
+ exports.coverageEntryIdentityKey = coverageEntryIdentityKey;
28
+ exports.isGovernedClassification = isGovernedClassification;
29
+ exports.isStrictlyAdmissible = isStrictlyAdmissible;
30
+ exports.isAdmissibleClassification = isAdmissibleClassification;
31
+ exports.ADMISSION_COVERAGE_MANIFEST_SCHEMA_VERSION = 'neurcode.admission-coverage.v1';
32
+ exports.SELF_ATTESTED_ADMISSION_RECORD_SCHEMA_VERSION = 'neurcode.admission-record.v1';
33
+ exports.ADMISSION_CONSISTENCY_DECISION_SCHEMA_VERSION = 'neurcode.admission-consistency.v1';
34
+ /**
35
+ * Mandatory honesty label. A locally committed artifact is authored by the same
36
+ * untrusted principal who authored the diff, so it can be fabricated with
37
+ * matching object ids. It is a claim, never proof.
38
+ */
39
+ exports.SELF_ATTESTED_ADMISSION_DISCLAIMER = 'Self-attested by the local Neurcode runtime: a source-free claim that a governed ' +
40
+ 'session produced these effects. This is NOT cryptographic proof that governance ran. ' +
41
+ 'Enterprise enforcement requires a backend-anchored signed receipt.';
42
+ /** Canonical git file modes used by this contract. */
43
+ exports.GIT_MODE_BLOB = '100644';
44
+ exports.GIT_MODE_EXEC = '100755';
45
+ exports.GIT_MODE_SYMLINK = '120000';
46
+ exports.GIT_MODE_SUBMODULE = '160000';
47
+ exports.GIT_MODE_ABSENT = '000000';
48
+ const KNOWN_MODES = new Set([
49
+ exports.GIT_MODE_BLOB,
50
+ exports.GIT_MODE_EXEC,
51
+ exports.GIT_MODE_SYMLINK,
52
+ exports.GIT_MODE_SUBMODULE,
53
+ exports.GIT_MODE_ABSENT,
54
+ ]);
55
+ // ── Pure helpers (no crypto, no IO) ─────────────────────────────────────────
56
+ function objectIdHexLength(format) {
57
+ return format === 'sha256' ? 64 : 40;
58
+ }
59
+ function zeroObjectId(format) {
60
+ return '0'.repeat(objectIdHexLength(format));
61
+ }
62
+ function isZeroObjectId(objectId) {
63
+ return /^0+$/.test(objectId);
64
+ }
65
+ function isValidObjectId(objectId, format) {
66
+ const len = objectIdHexLength(format);
67
+ return new RegExp(`^[0-9a-f]{${len}}$`).test(objectId);
68
+ }
69
+ function isKnownGitMode(mode) {
70
+ return KNOWN_MODES.has(mode);
71
+ }
72
+ function objectTypeForMode(mode) {
73
+ switch (mode) {
74
+ case exports.GIT_MODE_SUBMODULE:
75
+ return 'submodule';
76
+ case exports.GIT_MODE_SYMLINK:
77
+ return 'symlink';
78
+ case exports.GIT_MODE_BLOB:
79
+ case exports.GIT_MODE_EXEC:
80
+ return 'blob';
81
+ case exports.GIT_MODE_ABSENT:
82
+ return 'absent';
83
+ default:
84
+ throw new Error(`admission: unsupported git mode "${mode}"`);
85
+ }
86
+ }
87
+ /**
88
+ * Canonical, ordered field list for a delta entry. The field ORDER is part of
89
+ * the hashing contract and must never be reordered.
90
+ */
91
+ function deltaEntryCanonicalFields(entry) {
92
+ return [
93
+ entry.path,
94
+ entry.changeType,
95
+ entry.objectType,
96
+ entry.oldMode,
97
+ entry.newMode,
98
+ entry.oldObjectId,
99
+ entry.newObjectId,
100
+ ];
101
+ }
102
+ /**
103
+ * Canonical, ordered identity field list for a coverage entry.
104
+ *
105
+ * Identity per the matching contract:
106
+ * present (added/modified/typechanged) → path + newMode + newObjectId
107
+ * deleted → path + oldMode + oldObjectId
108
+ *
109
+ * `mode`/`objectId` already hold the correct side. `changeType` collapses to a
110
+ * single present/deleted flag so a squash/rebase that reclassifies modified↔added
111
+ * (same resulting content) still matches. `objectType` is derived from `mode` and
112
+ * is excluded. `classification` and `sessions` are annotations and excluded.
113
+ */
114
+ function coverageEntryCanonicalFields(entry) {
115
+ const presence = entry.changeType === 'deleted' ? 'D' : 'P';
116
+ return [presence, entry.path, entry.mode, entry.objectId];
117
+ }
118
+ /** Stable in-memory identity key for set/union operations (not a security hash). */
119
+ function coverageEntryIdentityKey(entry) {
120
+ return JSON.stringify(coverageEntryCanonicalFields(entry));
121
+ }
122
+ /**
123
+ * Descriptive test: did this effect have ANY governance evidence (pre- or
124
+ * post-write, or generated)? Use this for descriptive surfaces (telemetry,
125
+ * "what did the runtime observe"). It is NOT the admission eligibility test.
126
+ */
127
+ function isGovernedClassification(classification) {
128
+ return (classification === 'governed_prewrite' ||
129
+ classification === 'observed_postwrite' ||
130
+ classification === 'governed_delete' ||
131
+ classification === 'generated');
132
+ }
133
+ /**
134
+ * Strict runtime admission eligibility. Only pre-write governance is admissible:
135
+ * `governed_prewrite` and `governed_delete`. `observed_postwrite` is visible but
136
+ * NOT admissible (the write was only seen after it happened). `generated` is
137
+ * admissible only when `allowGenerated` is explicitly set by policy.
138
+ */
139
+ function isStrictlyAdmissible(classification, options = {}) {
140
+ if (classification === 'governed_prewrite' || classification === 'governed_delete')
141
+ return true;
142
+ if (classification === 'generated')
143
+ return options.allowGenerated === true;
144
+ return false;
145
+ }
146
+ /**
147
+ * Eligibility predicate honoring the requested mode. Strict (default) uses
148
+ * `isStrictlyAdmissible`; descriptive uses `isGovernedClassification`.
149
+ */
150
+ function isAdmissibleClassification(classification, options = {}) {
151
+ if ((options.mode ?? 'strict') === 'descriptive') {
152
+ return isGovernedClassification(classification);
153
+ }
154
+ return isStrictlyAdmissible(classification, options);
155
+ }
156
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/admission/schema.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,24 @@
1
- export declare const CLI_JSON_CONTRACT_VERSION = "2026-04-04";
1
+ export declare const CLI_JSON_CONTRACT_VERSION = "2026-06-18";
2
+ /** Compare YYYY-MM-DD contract stamps; returns null when either side is unparsable. */
3
+ export declare function compareCalendarContractVersion(left: string, right: string): number | null;
4
+ export * from './intelligence';
5
+ export * from './repo-intelligence-v2';
6
+ export * from './proposed-change-validation';
7
+ export * from './status-vocabulary';
8
+ export * from './verification';
9
+ export * from './remediation';
10
+ export * from './admission';
2
11
  export declare const RUNTIME_COMPATIBILITY_CONTRACT_ID = "neurcode-runtime-compatibility";
3
12
  export declare const RUNTIME_COMPATIBILITY_CONTRACT_VERSION = "2026-04-04";
4
- export declare const RUNTIME_COMPATIBILITY_MANIFEST_VERSION = "2026-04-04.1";
13
+ export declare const RUNTIME_COMPATIBILITY_MANIFEST_VERSION = "2026-06-18.1";
5
14
  export declare const RUNTIME_COMPATIBILITY_MANIFEST_SCHEMA_VERSION = 1;
15
+ /**
16
+ * Runtime Admission contract (Phase A — Provenance Core). Additive: surfaces a
17
+ * version for the self-attested admission artifact + coverage manifest so the
18
+ * future Action and backend can negotiate compatibility. No enforcement yet.
19
+ */
20
+ export declare const ADMISSION_CONTRACT_ID = "neurcode-runtime-admission";
21
+ export declare const ADMISSION_CONTRACT_VERSION = "2026-06-02";
6
22
  export type RuntimeComponent = 'cli' | 'action' | 'api';
7
23
  export type RuntimeMinimumPeerVersions = Partial<Record<RuntimeComponent, string>>;
8
24
  export interface RuntimeCompatibilityTriplet {
@@ -17,6 +33,8 @@ export interface RuntimeCompatibilityManifest {
17
33
  contractId: string;
18
34
  runtimeContractVersion: string;
19
35
  cliJsonContractVersion: string;
36
+ /** Runtime Admission provenance contract version (additive; Phase A). */
37
+ admissionContractVersion: string;
20
38
  minimumPeerVersions: Record<RuntimeComponent, RuntimeMinimumPeerVersions>;
21
39
  validatedTriplets: RuntimeCompatibilityTriplet[];
22
40
  }
@@ -26,6 +44,8 @@ export interface RuntimeCompatibilityDescriptor {
26
44
  runtimeContractVersion: string;
27
45
  cliJsonContractVersion: string;
28
46
  manifestVersion?: string;
47
+ /** Runtime Admission provenance contract version (additive; optional for legacy peers). */
48
+ admissionContractVersion?: string;
29
49
  component: RuntimeComponent;
30
50
  componentVersion: string;
31
51
  minimumPeerVersions: RuntimeMinimumPeerVersions;
@@ -51,17 +71,76 @@ export interface CliApplyJsonPayload extends CliContractBase {
51
71
  writtenFiles: unknown[];
52
72
  message: string;
53
73
  }
54
- export interface CliVerifyJsonPayload extends CliContractBase {
55
- grade: string;
56
- score: number;
57
- verdict: string;
58
- violations: unknown[];
74
+ export type VerifyVerdict = 'PASS' | 'WARN' | 'FAIL';
75
+ export type VerifySeverity = 'critical' | 'high' | 'warning' | 'info';
76
+ export interface VerifyOutputSummary {
77
+ totalFilesChanged: number;
78
+ totalViolations: number;
79
+ totalWarnings: number;
80
+ totalScopeIssues: number;
81
+ }
82
+ export interface VerifyOutputViolation {
83
+ file: string;
84
+ message: string;
85
+ policy: string;
86
+ severity: VerifySeverity;
87
+ }
88
+ export interface VerifyOutputWarning {
89
+ file: string;
59
90
  message: string;
60
- scopeGuardPassed: boolean;
61
- verificationSource?: 'api' | 'local_fallback' | 'policy_only' | string;
62
- policyCompilation?: Record<string, unknown>;
63
- changeContract?: Record<string, unknown>;
91
+ policy: string;
92
+ }
93
+ export type VerifyScopeIssuePolicy = 'forbidden' | 'review-required' | 'out-of-scope' | 'generated-code' | 'unscoped';
94
+ export type VerifyScopeIssueBoundaryType = 'sensitive' | 'infra' | 'ci' | 'dependency-manifest' | 'service' | 'module' | 'generated-code' | 'unspecified';
95
+ export type VerifyImportEdgeKind = 'static' | 'relative' | 'dynamic' | 'require' | 'side-effect';
96
+ export type VerifyImportEdgeLanguage = 'python' | 'typescript' | 'javascript';
97
+ /**
98
+ * Discriminator metadata attached to a scope issue when the breach was
99
+ * detected through an import edge rather than a touched file path.
100
+ * Present iff the scope issue originated from `evaluateImportEdgeGovernance`.
101
+ */
102
+ export interface VerifyOutputImportEdge {
103
+ sourceFile: string;
104
+ sourceLine: number;
105
+ importTarget: string;
106
+ resolvedTargetPath: string;
107
+ resolvedBoundary: string;
108
+ edgeKind: VerifyImportEdgeKind;
109
+ language: VerifyImportEdgeLanguage;
110
+ deterministic: true;
111
+ replayStable: true;
112
+ }
113
+ export interface VerifyOutputScopeIssue {
114
+ file: string;
115
+ message: string;
116
+ /**
117
+ * Severity / governance classification of the scope issue.
118
+ * Optional for backward compatibility with pre-runtime-activation payloads.
119
+ */
120
+ policy?: VerifyScopeIssuePolicy;
121
+ /**
122
+ * Boundary category this file touched (when known). Optional so legacy
123
+ * payloads remain valid.
124
+ */
125
+ boundaryType?: VerifyScopeIssueBoundaryType;
126
+ /**
127
+ * Set on issues raised by the deterministic import-edge governance layer
128
+ * (an allowed source file importing from a forbidden boundary).
129
+ */
130
+ importEdge?: VerifyOutputImportEdge;
131
+ }
132
+ export interface VerifyOutput {
133
+ verdict: VerifyVerdict;
134
+ summary: VerifyOutputSummary;
135
+ violations: VerifyOutputViolation[];
136
+ warnings: VerifyOutputWarning[];
137
+ scopeIssues: VerifyOutputScopeIssue[];
138
+ driftScore?: number;
139
+ /** Canonical governance model (additive; absent in legacy payloads). */
140
+ governanceVerification?: import('./verification').GovernanceVerificationEnvelope;
141
+ governanceFindings?: import('./verification').GovernanceFinding[];
64
142
  }
143
+ export type CliVerifyJsonPayload = VerifyOutput;
65
144
  export interface CliPromptJsonPayload extends CliContractBase {
66
145
  success: boolean;
67
146
  planId: string | null;
@@ -79,6 +158,8 @@ export interface CliContractImportJsonPayload extends CliContractBase {
79
158
  projectId: string | null;
80
159
  parseMode: 'json' | 'text' | null;
81
160
  importedFiles: number;
161
+ sourcePath?: string | null;
162
+ autoDetect?: Record<string, unknown> | null;
82
163
  warnings: unknown[];
83
164
  changeContract?: Record<string, unknown> | null;
84
165
  message: string;
@@ -127,6 +208,7 @@ export declare function evaluateRuntimePeerCompatibility(versions: Record<Runtim
127
208
  export declare function parseCliPlanJsonPayload(value: unknown, label?: string): CliPlanJsonPayload;
128
209
  export declare function parseCliApplyJsonPayload(value: unknown, label?: string): CliApplyJsonPayload;
129
210
  export declare function parseCliVerifyJsonPayload(value: unknown, label?: string): CliVerifyJsonPayload;
211
+ export declare function parseVerifyOutput(value: unknown, label?: string): VerifyOutput;
130
212
  export declare function parseCliPromptJsonPayload(value: unknown, label?: string): CliPromptJsonPayload;
131
213
  export declare function parseCliContractImportJsonPayload(value: unknown, label?: string): CliContractImportJsonPayload;
132
214
  export declare function parseCliShipJsonPayload(value: unknown, label?: string): CliShipJsonPayload;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,21 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RUNTIME_COMPATIBILITY_MANIFEST_SCHEMA_VERSION = exports.RUNTIME_COMPATIBILITY_MANIFEST_VERSION = exports.RUNTIME_COMPATIBILITY_CONTRACT_VERSION = exports.RUNTIME_COMPATIBILITY_CONTRACT_ID = exports.CLI_JSON_CONTRACT_VERSION = void 0;
17
+ exports.ADMISSION_CONTRACT_VERSION = exports.ADMISSION_CONTRACT_ID = exports.RUNTIME_COMPATIBILITY_MANIFEST_SCHEMA_VERSION = exports.RUNTIME_COMPATIBILITY_MANIFEST_VERSION = exports.RUNTIME_COMPATIBILITY_CONTRACT_VERSION = exports.RUNTIME_COMPATIBILITY_CONTRACT_ID = exports.CLI_JSON_CONTRACT_VERSION = void 0;
18
+ exports.compareCalendarContractVersion = compareCalendarContractVersion;
4
19
  exports.getRuntimeCompatibilityManifest = getRuntimeCompatibilityManifest;
5
20
  exports.compareSemver = compareSemver;
6
21
  exports.isSemverAtLeast = isSemverAtLeast;
@@ -11,6 +26,7 @@ exports.evaluateRuntimePeerCompatibility = evaluateRuntimePeerCompatibility;
11
26
  exports.parseCliPlanJsonPayload = parseCliPlanJsonPayload;
12
27
  exports.parseCliApplyJsonPayload = parseCliApplyJsonPayload;
13
28
  exports.parseCliVerifyJsonPayload = parseCliVerifyJsonPayload;
29
+ exports.parseVerifyOutput = parseVerifyOutput;
14
30
  exports.parseCliPromptJsonPayload = parseCliPromptJsonPayload;
15
31
  exports.parseCliContractImportJsonPayload = parseCliContractImportJsonPayload;
16
32
  exports.parseCliShipJsonPayload = parseCliShipJsonPayload;
@@ -18,17 +34,49 @@ exports.parseCliShipRunsJsonPayload = parseCliShipRunsJsonPayload;
18
34
  exports.parseCliShipResumeJsonPayload = parseCliShipResumeJsonPayload;
19
35
  exports.parseCliShipAttestationVerifyJsonPayload = parseCliShipAttestationVerifyJsonPayload;
20
36
  exports.parseCliCompatJsonPayload = parseCliCompatJsonPayload;
21
- exports.CLI_JSON_CONTRACT_VERSION = '2026-04-04';
37
+ exports.CLI_JSON_CONTRACT_VERSION = '2026-06-18';
38
+ /** Compare YYYY-MM-DD contract stamps; returns null when either side is unparsable. */
39
+ function compareCalendarContractVersion(left, right) {
40
+ const parse = (value) => {
41
+ const match = /^(\d{4}-\d{2}-\d{2})/.exec(value.trim());
42
+ if (!match)
43
+ return null;
44
+ const ms = Date.parse(`${match[1]}T00:00:00.000Z`);
45
+ return Number.isNaN(ms) ? null : ms;
46
+ };
47
+ const leftMs = parse(left);
48
+ const rightMs = parse(right);
49
+ if (leftMs === null || rightMs === null)
50
+ return null;
51
+ if (leftMs === rightMs)
52
+ return 0;
53
+ return leftMs < rightMs ? -1 : 1;
54
+ }
55
+ __exportStar(require("./intelligence"), exports);
56
+ __exportStar(require("./repo-intelligence-v2"), exports);
57
+ __exportStar(require("./proposed-change-validation"), exports);
58
+ __exportStar(require("./status-vocabulary"), exports);
59
+ __exportStar(require("./verification"), exports);
60
+ __exportStar(require("./remediation"), exports);
61
+ __exportStar(require("./admission"), exports);
22
62
  exports.RUNTIME_COMPATIBILITY_CONTRACT_ID = 'neurcode-runtime-compatibility';
23
63
  exports.RUNTIME_COMPATIBILITY_CONTRACT_VERSION = '2026-04-04';
24
- exports.RUNTIME_COMPATIBILITY_MANIFEST_VERSION = '2026-04-04.1';
64
+ exports.RUNTIME_COMPATIBILITY_MANIFEST_VERSION = '2026-06-18.1';
25
65
  exports.RUNTIME_COMPATIBILITY_MANIFEST_SCHEMA_VERSION = 1;
66
+ /**
67
+ * Runtime Admission contract (Phase A — Provenance Core). Additive: surfaces a
68
+ * version for the self-attested admission artifact + coverage manifest so the
69
+ * future Action and backend can negotiate compatibility. No enforcement yet.
70
+ */
71
+ exports.ADMISSION_CONTRACT_ID = 'neurcode-runtime-admission';
72
+ exports.ADMISSION_CONTRACT_VERSION = '2026-06-02';
26
73
  const RUNTIME_COMPATIBILITY_MANIFEST = {
27
74
  schemaVersion: exports.RUNTIME_COMPATIBILITY_MANIFEST_SCHEMA_VERSION,
28
75
  manifestVersion: exports.RUNTIME_COMPATIBILITY_MANIFEST_VERSION,
29
76
  contractId: exports.RUNTIME_COMPATIBILITY_CONTRACT_ID,
30
77
  runtimeContractVersion: exports.RUNTIME_COMPATIBILITY_CONTRACT_VERSION,
31
78
  cliJsonContractVersion: exports.CLI_JSON_CONTRACT_VERSION,
79
+ admissionContractVersion: exports.ADMISSION_CONTRACT_VERSION,
32
80
  minimumPeerVersions: {
33
81
  cli: {
34
82
  action: '0.2.1',
@@ -48,9 +96,9 @@ const RUNTIME_COMPATIBILITY_MANIFEST = {
48
96
  id: 'current',
49
97
  channel: 'current',
50
98
  versions: {
51
- cli: '0.9.42',
52
- action: '0.2.2',
53
- api: '0.2.0',
99
+ cli: '0.19.0',
100
+ action: '0.3.0-rc.6',
101
+ api: '0.3.0',
54
102
  },
55
103
  notes: 'Current release train validated in monorepo CI.',
56
104
  },
@@ -70,6 +118,7 @@ const RUNTIME_MINIMUM_PEER_VERSIONS = RUNTIME_COMPATIBILITY_MANIFEST.minimumPeer
70
118
  function getRuntimeCompatibilityManifest() {
71
119
  return {
72
120
  ...RUNTIME_COMPATIBILITY_MANIFEST,
121
+ admissionContractVersion: RUNTIME_COMPATIBILITY_MANIFEST.admissionContractVersion,
73
122
  minimumPeerVersions: {
74
123
  cli: { ...RUNTIME_COMPATIBILITY_MANIFEST.minimumPeerVersions.cli },
75
124
  action: { ...RUNTIME_COMPATIBILITY_MANIFEST.minimumPeerVersions.action },
@@ -136,6 +185,10 @@ function asOptionalString(record, key, label) {
136
185
  }
137
186
  return value;
138
187
  }
188
+ function asIntegerNumber(record, key, label) {
189
+ const value = asNumber(record, key, label);
190
+ return Math.max(0, Math.floor(value));
191
+ }
139
192
  function asContractVersion(record) {
140
193
  const value = record.contractVersion;
141
194
  if (value === undefined)
@@ -175,6 +228,7 @@ function parseRuntimeCompatibilityDescriptor(value, label) {
175
228
  runtimeContractVersion: asString(record, 'runtimeContractVersion', `${label}.compatibility`),
176
229
  cliJsonContractVersion: asString(record, 'cliJsonContractVersion', `${label}.compatibility`),
177
230
  manifestVersion: asOptionalString(record, 'manifestVersion', `${label}.compatibility`),
231
+ admissionContractVersion: asOptionalString(record, 'admissionContractVersion', `${label}.compatibility`),
178
232
  component: asRuntimeComponent(record, 'component', `${label}.compatibility`),
179
233
  componentVersion: asString(record, 'componentVersion', `${label}.compatibility`),
180
234
  minimumPeerVersions: parseRuntimeMinimumPeerVersions(record.minimumPeerVersions, `${label}.compatibility`),
@@ -228,6 +282,7 @@ function buildRuntimeCompatibilityDescriptor(component, componentVersion) {
228
282
  runtimeContractVersion: exports.RUNTIME_COMPATIBILITY_CONTRACT_VERSION,
229
283
  cliJsonContractVersion: exports.CLI_JSON_CONTRACT_VERSION,
230
284
  manifestVersion: exports.RUNTIME_COMPATIBILITY_MANIFEST_VERSION,
285
+ admissionContractVersion: exports.ADMISSION_CONTRACT_VERSION,
231
286
  component,
232
287
  componentVersion,
233
288
  minimumPeerVersions: { ...RUNTIME_MINIMUM_PEER_VERSIONS[component] },
@@ -294,21 +349,133 @@ function parseCliApplyJsonPayload(value, label = 'apply') {
294
349
  };
295
350
  }
296
351
  function parseCliVerifyJsonPayload(value, label = 'verify') {
352
+ return parseVerifyOutput(value, label);
353
+ }
354
+ function parseVerifyOutput(value, label = 'verify') {
297
355
  const record = asRecord(value, label);
298
- const verificationSourceRaw = record.verificationSource;
299
- const verificationSource = verificationSourceRaw === undefined
356
+ const verdictRaw = asString(record, 'verdict', label).trim().toUpperCase();
357
+ if (verdictRaw !== 'PASS' && verdictRaw !== 'WARN' && verdictRaw !== 'FAIL') {
358
+ throw new Error(`${label}: expected verdict:"PASS"|"WARN"|"FAIL"`);
359
+ }
360
+ const summaryRecord = asRecord(record.summary, `${label}.summary`);
361
+ const summary = {
362
+ totalFilesChanged: asIntegerNumber(summaryRecord, 'totalFilesChanged', `${label}.summary`),
363
+ totalViolations: asIntegerNumber(summaryRecord, 'totalViolations', `${label}.summary`),
364
+ totalWarnings: asIntegerNumber(summaryRecord, 'totalWarnings', `${label}.summary`),
365
+ totalScopeIssues: asIntegerNumber(summaryRecord, 'totalScopeIssues', `${label}.summary`),
366
+ };
367
+ const violations = asArray(record, 'violations', label).map((entry, index) => {
368
+ const item = asRecord(entry, `${label}.violations[${index}]`);
369
+ const severity = asString(item, 'severity', `${label}.violations[${index}]`).trim().toLowerCase();
370
+ if (severity !== 'critical' && severity !== 'high' && severity !== 'warning' && severity !== 'info') {
371
+ throw new Error(`${label}.violations[${index}]: expected severity:"critical"|"high"|"warning"|"info"`);
372
+ }
373
+ return {
374
+ file: asString(item, 'file', `${label}.violations[${index}]`),
375
+ message: asString(item, 'message', `${label}.violations[${index}]`),
376
+ policy: asString(item, 'policy', `${label}.violations[${index}]`),
377
+ severity,
378
+ };
379
+ });
380
+ const warnings = asArray(record, 'warnings', label).map((entry, index) => {
381
+ const item = asRecord(entry, `${label}.warnings[${index}]`);
382
+ return {
383
+ file: asString(item, 'file', `${label}.warnings[${index}]`),
384
+ message: asString(item, 'message', `${label}.warnings[${index}]`),
385
+ policy: asString(item, 'policy', `${label}.warnings[${index}]`),
386
+ };
387
+ });
388
+ const scopeIssues = asArray(record, 'scopeIssues', label).map((entry, index) => {
389
+ const item = asRecord(entry, `${label}.scopeIssues[${index}]`);
390
+ const issue = {
391
+ file: asString(item, 'file', `${label}.scopeIssues[${index}]`),
392
+ message: asString(item, 'message', `${label}.scopeIssues[${index}]`),
393
+ };
394
+ const rawPolicy = item.policy;
395
+ if (typeof rawPolicy === 'string' && rawPolicy.length > 0) {
396
+ const allowedPolicies = ['forbidden', 'review-required', 'out-of-scope', 'generated-code', 'unscoped'];
397
+ if (allowedPolicies.includes(rawPolicy)) {
398
+ issue.policy = rawPolicy;
399
+ }
400
+ }
401
+ const rawBoundary = item.boundaryType;
402
+ if (typeof rawBoundary === 'string' && rawBoundary.length > 0) {
403
+ const allowedBoundaries = [
404
+ 'sensitive', 'infra', 'ci', 'dependency-manifest', 'service', 'module', 'generated-code', 'unspecified',
405
+ ];
406
+ if (allowedBoundaries.includes(rawBoundary)) {
407
+ issue.boundaryType = rawBoundary;
408
+ }
409
+ }
410
+ const rawImportEdge = item.importEdge;
411
+ if (rawImportEdge && typeof rawImportEdge === 'object' && !Array.isArray(rawImportEdge)) {
412
+ const edgeRecord = rawImportEdge;
413
+ const allowedEdgeKinds = ['static', 'relative', 'dynamic', 'require', 'side-effect'];
414
+ const allowedEdgeLanguages = ['python', 'typescript', 'javascript'];
415
+ const sourceFile = edgeRecord.sourceFile;
416
+ const importTarget = edgeRecord.importTarget;
417
+ const resolvedTargetPath = edgeRecord.resolvedTargetPath;
418
+ const resolvedBoundary = edgeRecord.resolvedBoundary;
419
+ const sourceLine = edgeRecord.sourceLine;
420
+ const edgeKind = edgeRecord.edgeKind;
421
+ const language = edgeRecord.language;
422
+ if (typeof sourceFile === 'string'
423
+ && typeof importTarget === 'string'
424
+ && typeof resolvedTargetPath === 'string'
425
+ && typeof resolvedBoundary === 'string'
426
+ && typeof sourceLine === 'number'
427
+ && Number.isFinite(sourceLine)
428
+ && typeof edgeKind === 'string'
429
+ && typeof language === 'string'
430
+ && allowedEdgeKinds.includes(edgeKind)
431
+ && allowedEdgeLanguages.includes(language)) {
432
+ issue.importEdge = {
433
+ sourceFile,
434
+ sourceLine,
435
+ importTarget,
436
+ resolvedTargetPath,
437
+ resolvedBoundary,
438
+ edgeKind: edgeKind,
439
+ language: language,
440
+ deterministic: true,
441
+ replayStable: true,
442
+ };
443
+ }
444
+ }
445
+ return issue;
446
+ });
447
+ const driftScoreRaw = record.driftScore;
448
+ const driftScore = driftScoreRaw === undefined
300
449
  ? undefined
301
- : asString(record, 'verificationSource', label);
450
+ : (typeof driftScoreRaw === 'number' && Number.isFinite(driftScoreRaw)
451
+ ? Math.round(Math.max(0, Math.min(100, driftScoreRaw)))
452
+ : (() => {
453
+ throw new Error(`${label}: expected driftScore:number when present`);
454
+ })());
455
+ const governanceFindingsRaw = record.governanceFindings;
456
+ if (governanceFindingsRaw !== undefined && !Array.isArray(governanceFindingsRaw)) {
457
+ throw new Error(`${label}: expected governanceFindings:array when present`);
458
+ }
459
+ const governanceVerificationRaw = record.governanceVerification;
460
+ if (governanceVerificationRaw !== undefined
461
+ && (typeof governanceVerificationRaw !== 'object' || governanceVerificationRaw === null || Array.isArray(governanceVerificationRaw))) {
462
+ throw new Error(`${label}: expected governanceVerification:object when present`);
463
+ }
302
464
  return {
303
- ...record,
304
- contractVersion: asContractVersion(record),
305
- grade: asString(record, 'grade', label),
306
- score: asNumber(record, 'score', label),
307
- verdict: asString(record, 'verdict', label),
308
- violations: asArray(record, 'violations', label),
309
- message: asString(record, 'message', label),
310
- scopeGuardPassed: asBoolean(record, 'scopeGuardPassed', label),
311
- verificationSource,
465
+ verdict: verdictRaw,
466
+ summary,
467
+ violations,
468
+ warnings,
469
+ scopeIssues,
470
+ ...(typeof driftScore === 'number' ? { driftScore } : {}),
471
+ ...(governanceFindingsRaw !== undefined
472
+ ? { governanceFindings: governanceFindingsRaw }
473
+ : {}),
474
+ ...(governanceVerificationRaw !== undefined
475
+ ? {
476
+ governanceVerification: governanceVerificationRaw,
477
+ }
478
+ : {}),
312
479
  };
313
480
  }
314
481
  function parseCliPromptJsonPayload(value, label = 'prompt') {