@neurcode/action 0.3.0-rc.6 → 0.3.0-rc.7
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 +3 -3
- package/dist/index.js +82 -7
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
- uses: actions/checkout@v5
|
|
50
50
|
with:
|
|
51
51
|
fetch-depth: 0
|
|
52
|
-
- uses: sujit-jaunjal/neurcode-actions@v0.3.0-rc.
|
|
52
|
+
- uses: sujit-jaunjal/neurcode-actions@v0.3.0-rc.7
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
That is enough for the standalone report. Runtime admission provenance activates only when a PR includes `.neurcode-admission/*.json`.
|
|
@@ -184,7 +184,7 @@ Self-attested provenance is a claim by the PR author, not cryptographic proof an
|
|
|
184
184
|
## Strict Self-Attested Mode
|
|
185
185
|
|
|
186
186
|
```yaml
|
|
187
|
-
- uses: sujit-jaunjal/neurcode-actions@v0.3.0-rc.
|
|
187
|
+
- uses: sujit-jaunjal/neurcode-actions@v0.3.0-rc.7
|
|
188
188
|
with:
|
|
189
189
|
policy: strict_self_attested
|
|
190
190
|
no_record_strict: 'false'
|
|
@@ -214,7 +214,7 @@ The harness runs controlled OSS-style PR scenarios, scores the report as ACTIONA
|
|
|
214
214
|
|
|
215
215
|
## Preserved Installation Path
|
|
216
216
|
|
|
217
|
-
The `sujit-jaunjal/neurcode-actions@v0.2.4` release remains available and untouched. `v0.3.0-rc.
|
|
217
|
+
The `sujit-jaunjal/neurcode-actions@v0.2.4` release remains available and untouched. `v0.3.0-rc.7` is the current rehearsal ref for Enterprise Reliability Closure V1.
|
|
218
218
|
|
|
219
219
|
## Adoption Bridge Docs
|
|
220
220
|
|
package/dist/index.js
CHANGED
|
@@ -40139,7 +40139,7 @@ exports.parseCliShipRunsJsonPayload = parseCliShipRunsJsonPayload;
|
|
|
40139
40139
|
exports.parseCliShipResumeJsonPayload = parseCliShipResumeJsonPayload;
|
|
40140
40140
|
exports.parseCliShipAttestationVerifyJsonPayload = parseCliShipAttestationVerifyJsonPayload;
|
|
40141
40141
|
exports.parseCliCompatJsonPayload = parseCliCompatJsonPayload;
|
|
40142
|
-
exports.CLI_JSON_CONTRACT_VERSION = '2026-06-
|
|
40142
|
+
exports.CLI_JSON_CONTRACT_VERSION = '2026-06-19';
|
|
40143
40143
|
/** Compare YYYY-MM-DD contract stamps; returns null when either side is unparsable. */
|
|
40144
40144
|
function compareCalendarContractVersion(left, right) {
|
|
40145
40145
|
const parse = (value) => {
|
|
@@ -40166,7 +40166,7 @@ __exportStar(__nccwpck_require__(5733), exports);
|
|
|
40166
40166
|
__exportStar(__nccwpck_require__(9349), exports);
|
|
40167
40167
|
exports.RUNTIME_COMPATIBILITY_CONTRACT_ID = 'neurcode-runtime-compatibility';
|
|
40168
40168
|
exports.RUNTIME_COMPATIBILITY_CONTRACT_VERSION = '2026-04-04';
|
|
40169
|
-
exports.RUNTIME_COMPATIBILITY_MANIFEST_VERSION = '2026-06-
|
|
40169
|
+
exports.RUNTIME_COMPATIBILITY_MANIFEST_VERSION = '2026-06-19.1';
|
|
40170
40170
|
exports.RUNTIME_COMPATIBILITY_MANIFEST_SCHEMA_VERSION = 1;
|
|
40171
40171
|
/**
|
|
40172
40172
|
* Runtime Admission contract (Phase A — Provenance Core). Additive: surfaces a
|
|
@@ -40201,9 +40201,9 @@ const RUNTIME_COMPATIBILITY_MANIFEST = {
|
|
|
40201
40201
|
id: 'current',
|
|
40202
40202
|
channel: 'current',
|
|
40203
40203
|
versions: {
|
|
40204
|
-
cli: '0.19.
|
|
40205
|
-
action: '0.3.0-rc.
|
|
40206
|
-
api: '0.3.
|
|
40204
|
+
cli: '0.19.1',
|
|
40205
|
+
action: '0.3.0-rc.7',
|
|
40206
|
+
api: '0.3.1',
|
|
40207
40207
|
},
|
|
40208
40208
|
notes: 'Current release train validated in monorepo CI.',
|
|
40209
40209
|
},
|
|
@@ -40731,6 +40731,7 @@ const ADAPTERS = [
|
|
|
40731
40731
|
'cursor-mcp',
|
|
40732
40732
|
'vscode-extension',
|
|
40733
40733
|
'github-action',
|
|
40734
|
+
'neurcode-cli',
|
|
40734
40735
|
];
|
|
40735
40736
|
const LANGUAGES = [
|
|
40736
40737
|
'typescript', 'javascript', 'python', 'go', 'java', 'ruby', 'rust',
|
|
@@ -40982,7 +40983,10 @@ function validateExport(value, path, targetPath) {
|
|
|
40982
40983
|
enumeration(item.parserDepth, `${path}.parserDepth`, PARSER_DEPTHS);
|
|
40983
40984
|
}
|
|
40984
40985
|
function validateRelationship(value, path) {
|
|
40985
|
-
const item = record(value, path, [
|
|
40986
|
+
const item = record(value, path, [
|
|
40987
|
+
'id', 'type', 'fromId', 'toId', 'confidence', 'deterministic', 'provenance',
|
|
40988
|
+
'computationRepeatable', 'semanticCertainty', 'evidenceTier', 'enforcementEligible',
|
|
40989
|
+
], ['id', 'type', 'fromId', 'toId', 'confidence', 'deterministic', 'provenance']);
|
|
40986
40990
|
id(item.id, `${path}.id`);
|
|
40987
40991
|
enumeration(item.type, `${path}.type`, [
|
|
40988
40992
|
'defines', 'references', 'imports', 'exports', 'calls', 'owns',
|
|
@@ -40993,6 +40997,19 @@ function validateRelationship(value, path) {
|
|
|
40993
40997
|
id(item.toId, `${path}.toId`);
|
|
40994
40998
|
enumeration(item.confidence, `${path}.confidence`, ['exact', 'high', 'medium', 'low']);
|
|
40995
40999
|
boolean(item.deterministic, `${path}.deterministic`);
|
|
41000
|
+
if (item.computationRepeatable !== undefined)
|
|
41001
|
+
boolean(item.computationRepeatable, `${path}.computationRepeatable`);
|
|
41002
|
+
if (item.semanticCertainty !== undefined) {
|
|
41003
|
+
enumeration(item.semanticCertainty, `${path}.semanticCertainty`, ['exact', 'high', 'medium', 'low', 'unknown']);
|
|
41004
|
+
}
|
|
41005
|
+
if (item.evidenceTier !== undefined) {
|
|
41006
|
+
enumeration(item.evidenceTier, `${path}.evidenceTier`, ['deterministic', 'advisory', 'degraded']);
|
|
41007
|
+
}
|
|
41008
|
+
if (item.enforcementEligible !== undefined)
|
|
41009
|
+
boolean(item.enforcementEligible, `${path}.enforcementEligible`);
|
|
41010
|
+
if (item.type === 'structurally_resembles' && item.enforcementEligible === true) {
|
|
41011
|
+
fail(`${path}.enforcementEligible`, 'structural resemblance is advisory and cannot be enforcement eligible');
|
|
41012
|
+
}
|
|
40996
41013
|
sourceFreeMetadata(item.provenance, `${path}.provenance`, 256);
|
|
40997
41014
|
}
|
|
40998
41015
|
function validateReference(value, path, targetPath) {
|
|
@@ -41093,7 +41110,9 @@ function deriveTrustedHostPosture(adapterId, timing) {
|
|
|
41093
41110
|
? timing === 'after_write'
|
|
41094
41111
|
: adapterId === 'claude-code-hooks' || adapterId === 'copilot-hooks'
|
|
41095
41112
|
? timing === 'before_write'
|
|
41096
|
-
:
|
|
41113
|
+
: adapterId === 'neurcode-cli'
|
|
41114
|
+
? timing === 'before_write' || timing === 'after_write'
|
|
41115
|
+
: timing !== 'ci';
|
|
41097
41116
|
if (!timingAllowed) {
|
|
41098
41117
|
throw new Error(`Invalid trusted host timing: ${adapterId} cannot claim ${timing}`);
|
|
41099
41118
|
}
|
|
@@ -41110,6 +41129,8 @@ function deriveTrustedHostPosture(adapterId, timing) {
|
|
|
41110
41129
|
capability = 'cooperative_prewrite';
|
|
41111
41130
|
else if (adapterId === 'vscode-extension')
|
|
41112
41131
|
capability = 'post_write';
|
|
41132
|
+
else if (adapterId === 'neurcode-cli')
|
|
41133
|
+
capability = 'not_supported';
|
|
41113
41134
|
else
|
|
41114
41135
|
capability = 'not_supported';
|
|
41115
41136
|
const decisionBinding = capability === 'hard_prewrite'
|
|
@@ -41374,6 +41395,47 @@ function isRepoIntelligenceEvidence(value) {
|
|
|
41374
41395
|
const privacy = record.privacy;
|
|
41375
41396
|
if (!graph || !policy || !privacy)
|
|
41376
41397
|
return false;
|
|
41398
|
+
if (graph.canonicalModel !== undefined && graph.canonicalModel !== 'repository_graph_v2')
|
|
41399
|
+
return false;
|
|
41400
|
+
if (graph.storageSchemaVersion !== undefined && graph.storageSchemaVersion !== null
|
|
41401
|
+
&& (typeof graph.storageSchemaVersion !== 'number'
|
|
41402
|
+
|| !Number.isInteger(graph.storageSchemaVersion) || graph.storageSchemaVersion < 0))
|
|
41403
|
+
return false;
|
|
41404
|
+
for (const key of ['lastSuccessfulIndexAt', 'lastAttemptedIndexAt']) {
|
|
41405
|
+
if (graph[key] !== undefined && graph[key] !== null && typeof graph[key] !== 'string')
|
|
41406
|
+
return false;
|
|
41407
|
+
}
|
|
41408
|
+
for (const key of ['deterministicEvidenceEligible', 'deterministicEnforcementEligible']) {
|
|
41409
|
+
if (graph[key] !== undefined && typeof graph[key] !== 'boolean')
|
|
41410
|
+
return false;
|
|
41411
|
+
}
|
|
41412
|
+
if (graph.enforcementIneligibilityReasons !== undefined && (!Array.isArray(graph.enforcementIneligibilityReasons)
|
|
41413
|
+
|| graph.enforcementIneligibilityReasons.length > 64
|
|
41414
|
+
|| !graph.enforcementIneligibilityReasons.every((item) => typeof item === 'string' && item.length > 0 && item.length <= 128)))
|
|
41415
|
+
return false;
|
|
41416
|
+
if (graph.recoveryCommand !== undefined
|
|
41417
|
+
&& !['neurcode brain repo-index', 'neurcode brain repo-recover'].includes(String(graph.recoveryCommand)))
|
|
41418
|
+
return false;
|
|
41419
|
+
if (graph.coverage !== undefined && graph.coverage !== null) {
|
|
41420
|
+
if (typeof graph.coverage !== 'object' || Array.isArray(graph.coverage))
|
|
41421
|
+
return false;
|
|
41422
|
+
const coverage = graph.coverage;
|
|
41423
|
+
for (const key of ['filesSeen', 'filesIndexed', 'filesAnalyzed', 'filesSkipped', 'filesUnsupported', 'filesDegraded', 'filesFailed']) {
|
|
41424
|
+
if (typeof coverage[key] !== 'number' || !Number.isInteger(coverage[key]) || Number(coverage[key]) < 0)
|
|
41425
|
+
return false;
|
|
41426
|
+
}
|
|
41427
|
+
}
|
|
41428
|
+
if (graph.runtimeCompatibility !== undefined) {
|
|
41429
|
+
if (!graph.runtimeCompatibility || typeof graph.runtimeCompatibility !== 'object' || Array.isArray(graph.runtimeCompatibility))
|
|
41430
|
+
return false;
|
|
41431
|
+
const compatibility = graph.runtimeCompatibility;
|
|
41432
|
+
if (compatibility.component !== 'cli')
|
|
41433
|
+
return false;
|
|
41434
|
+
for (const key of ['contractId', 'runtimeContractVersion', 'manifestVersion']) {
|
|
41435
|
+
if (typeof compatibility[key] !== 'string' || compatibility[key].length === 0)
|
|
41436
|
+
return false;
|
|
41437
|
+
}
|
|
41438
|
+
}
|
|
41377
41439
|
if (!Array.isArray(policy.evaluatedRuleIds) || !Array.isArray(policy.notEvaluatedRuleIds) || !Array.isArray(policy.findings))
|
|
41378
41440
|
return false;
|
|
41379
41441
|
if (!Array.isArray(record.advisory))
|
|
@@ -51166,6 +51228,8 @@ function evaluateAIChangeRecordArtifacts(artifacts, discoveryDiagnostics, dirAbs
|
|
|
51166
51228
|
const deterministicFindings = new Map();
|
|
51167
51229
|
const advisoryFindings = new Map();
|
|
51168
51230
|
let unsupportedPercentMax = null;
|
|
51231
|
+
let deterministicEnforcementEligible = true;
|
|
51232
|
+
const enforcementIneligibilityReasons = new Set();
|
|
51169
51233
|
let suppressedAdvisoryCount = 0;
|
|
51170
51234
|
for (const evidence of repoIntelligenceEvidence) {
|
|
51171
51235
|
classifications[evidence.classification] = (classifications[evidence.classification] ?? 0) + 1;
|
|
@@ -51176,6 +51240,13 @@ function evaluateAIChangeRecordArtifacts(artifacts, discoveryDiagnostics, dirAbs
|
|
|
51176
51240
|
if (typeof evidence.graph.unsupportedPercent === 'number') {
|
|
51177
51241
|
unsupportedPercentMax = Math.max(unsupportedPercentMax ?? 0, evidence.graph.unsupportedPercent);
|
|
51178
51242
|
}
|
|
51243
|
+
deterministicEnforcementEligible &&= evidence.graph.deterministicEnforcementEligible === true;
|
|
51244
|
+
if (evidence.graph.enforcementIneligibilityReasons) {
|
|
51245
|
+
evidence.graph.enforcementIneligibilityReasons.forEach((reason) => enforcementIneligibilityReasons.add(reason));
|
|
51246
|
+
}
|
|
51247
|
+
else if (evidence.graph.deterministicEnforcementEligible !== true) {
|
|
51248
|
+
enforcementIneligibilityReasons.add('legacy_operability_fields_missing');
|
|
51249
|
+
}
|
|
51179
51250
|
evidence.policy.evaluatedRuleIds.forEach((ruleId) => evaluatedRuleIds.add(ruleId));
|
|
51180
51251
|
evidence.policy.notEvaluatedRuleIds.forEach((ruleId) => notEvaluatedRuleIds.add(ruleId));
|
|
51181
51252
|
for (const finding of evidence.policy.findings) {
|
|
@@ -51211,6 +51282,8 @@ function evaluateAIChangeRecordArtifacts(artifacts, discoveryDiagnostics, dirAbs
|
|
|
51211
51282
|
timings: Array.from(timings).sort(),
|
|
51212
51283
|
freshnessStates: Array.from(freshnessStates).sort(),
|
|
51213
51284
|
unsupportedPercentMax,
|
|
51285
|
+
deterministicEnforcementEligible,
|
|
51286
|
+
enforcementIneligibilityReasons: Array.from(enforcementIneligibilityReasons).sort(),
|
|
51214
51287
|
evaluatedRuleIds: Array.from(evaluatedRuleIds).sort(),
|
|
51215
51288
|
notEvaluatedRuleIds: Array.from(notEvaluatedRuleIds).sort(),
|
|
51216
51289
|
deterministicFindings: Array.from(deterministicFindings.values()).sort((a, b) => a.ruleId.localeCompare(b.ruleId) || a.findingId.localeCompare(b.findingId)),
|
|
@@ -52394,6 +52467,8 @@ function renderStepSummary(opts) {
|
|
|
52394
52467
|
lines.push(`| Host capability / timing | ${inlineList(repoIntelligence.capabilities, 6, 80)} / ${inlineList(repoIntelligence.timings, 6, 80)} |`);
|
|
52395
52468
|
lines.push(`| Graph freshness | ${inlineList(repoIntelligence.freshnessStates, 6, 80)} |`);
|
|
52396
52469
|
lines.push(`| Maximum unsupported coverage | ${repoIntelligence.unsupportedPercentMax === null ? 'unknown' : `${repoIntelligence.unsupportedPercentMax.toFixed(2)}%`} |`);
|
|
52470
|
+
lines.push(`| Deterministic enforcement eligible | ${repoIntelligence.deterministicEnforcementEligible === true ? 'yes' : 'no'} |`);
|
|
52471
|
+
lines.push(`| Enforcement gaps | ${inlineList(repoIntelligence.enforcementIneligibilityReasons ?? ['legacy_operability_fields_missing'], 6, 120)} |`);
|
|
52397
52472
|
lines.push(`| Deterministic findings | ${repoIntelligence.deterministicFindings.length} |`);
|
|
52398
52473
|
lines.push(`| Advisory findings | ${repoIntelligence.advisoryFindings.length} active, ${repoIntelligence.suppressedAdvisoryCount} suppressed |`);
|
|
52399
52474
|
lines.push(`| Not-evaluated rules | ${inlineList(repoIntelligence.notEvaluatedRuleIds, 6, 120)} |`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurcode/action",
|
|
3
|
-
"version": "0.3.0-rc.
|
|
3
|
+
"version": "0.3.0-rc.7",
|
|
4
4
|
"description": "Neurcode Runtime Admission Advisory — GitHub Action. Deterministic PR effect inventory and optional self-attested runtime admission provenance. No account required.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@actions/core": "^1.10.1",
|
|
27
27
|
"@actions/github": "^6.0.0",
|
|
28
|
-
"@neurcode-ai/contracts": "^0.2.
|
|
28
|
+
"@neurcode-ai/contracts": "^0.2.1",
|
|
29
29
|
"@neurcode-ai/governance-runtime": "^0.3.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|