@neurcode-ai/cli 0.16.7 → 0.16.8
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/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +120 -0
- package/dist/commands/eval.js.map +1 -1
- package/dist/runtime-build.json +4 -4
- package/dist/utils/enterprise-eval-report.d.ts +232 -0
- package/dist/utils/enterprise-eval-report.d.ts.map +1 -0
- package/dist/utils/enterprise-eval-report.js +402 -0
- package/dist/utils/enterprise-eval-report.js.map +1 -0
- package/dist/utils/eval-demo.d.ts +97 -0
- package/dist/utils/eval-demo.d.ts.map +1 -0
- package/dist/utils/eval-demo.js +635 -0
- package/dist/utils/eval-demo.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Enterprise evaluator report + dashboard summary — pure builders.
|
|
4
|
+
*
|
|
5
|
+
* The `neurcode eval demo` runner (utils/eval-demo.ts) drives a complete, safe,
|
|
6
|
+
* local governance loop against a throwaway fixture and gathers a single
|
|
7
|
+
* source-free facts object: {@link EvalDemoFacts}. This module turns that facts
|
|
8
|
+
* object into the two shareable artifacts a first-time enterprise evaluator
|
|
9
|
+
* needs:
|
|
10
|
+
*
|
|
11
|
+
* 1. {@link buildEnterpriseEvalReport} / {@link renderEnterpriseEvalReportMarkdown}
|
|
12
|
+
* — a polished, source-free report an engineering manager can read. It is
|
|
13
|
+
* deliberately honest: deterministic path/symbol/graph/policy facts are
|
|
14
|
+
* separated from advisory inference, and the trust posture never claims
|
|
15
|
+
* public-key signing when only an HMAC backend receipt (or self-attested
|
|
16
|
+
* local record) exists.
|
|
17
|
+
*
|
|
18
|
+
* 2. {@link buildEvalDemoSummary} — a compact machine-readable JSON the hosted
|
|
19
|
+
* dashboard can import (paste / upload). It carries completion status,
|
|
20
|
+
* pass/fail checkpoints, the boundary/approval/neighbor facts, the trust
|
|
21
|
+
* posture, the recommended next command, and a design-partner-pilot verdict.
|
|
22
|
+
*
|
|
23
|
+
* Everything here is pure (no I/O) and source-free. The orchestration engine
|
|
24
|
+
* runs {@link assertEnterpriseEvalSourceFree} over the rendered artifacts before
|
|
25
|
+
* anything is written, and the harness/tests assert the same contract.
|
|
26
|
+
*
|
|
27
|
+
* Keep the truth tiers and step ids in lockstep with utils/guided-eval.ts and
|
|
28
|
+
* the dashboard mirrors (web/dashboard/src/lib/guidedEval.ts + evalDemoImport.ts).
|
|
29
|
+
*/
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.CORE_CHECKPOINT_IDS = exports.ENTERPRISE_EVAL_REPORT_SCHEMA_VERSION = exports.EVAL_DEMO_SUMMARY_SCHEMA_VERSION = void 0;
|
|
32
|
+
exports.deriveVerdict = deriveVerdict;
|
|
33
|
+
exports.buildEnterpriseEvalReport = buildEnterpriseEvalReport;
|
|
34
|
+
exports.renderEnterpriseEvalReportMarkdown = renderEnterpriseEvalReportMarkdown;
|
|
35
|
+
exports.buildEvalDemoSummary = buildEvalDemoSummary;
|
|
36
|
+
exports.assertEnterpriseEvalSourceFree = assertEnterpriseEvalSourceFree;
|
|
37
|
+
const guided_eval_1 = require("./guided-eval");
|
|
38
|
+
exports.EVAL_DEMO_SUMMARY_SCHEMA_VERSION = 'neurcode.eval-demo-summary.v1';
|
|
39
|
+
exports.ENTERPRISE_EVAL_REPORT_SCHEMA_VERSION = 'neurcode.enterprise-eval-report.v1';
|
|
40
|
+
/** The deterministic core loop that must hold for the demo to be meaningful. */
|
|
41
|
+
exports.CORE_CHECKPOINT_IDS = [
|
|
42
|
+
'safe_edit_allowed',
|
|
43
|
+
'boundary_block',
|
|
44
|
+
'exact_approval',
|
|
45
|
+
'approved_path_allowed',
|
|
46
|
+
'neighbor_contained',
|
|
47
|
+
'ai_change_record',
|
|
48
|
+
];
|
|
49
|
+
function deriveVerdict(checkpoints, facts) {
|
|
50
|
+
const byId = new Map(checkpoints.map((c) => [c.id, c]));
|
|
51
|
+
const corePassed = exports.CORE_CHECKPOINT_IDS.every((id) => byId.get(id)?.status === 'pass');
|
|
52
|
+
const criticalFailures = checkpoints.filter((c) => c.critical && c.status === 'fail');
|
|
53
|
+
const reasons = [];
|
|
54
|
+
if (!corePassed || criticalFailures.length > 0) {
|
|
55
|
+
const failed = [
|
|
56
|
+
...exports.CORE_CHECKPOINT_IDS.filter((id) => byId.get(id)?.status !== 'pass'),
|
|
57
|
+
...criticalFailures.map((c) => c.id).filter((id) => !exports.CORE_CHECKPOINT_IDS.includes(id)),
|
|
58
|
+
];
|
|
59
|
+
reasons.push(`Core governance loop did not fully hold: ${Array.from(new Set(failed)).join(', ')}.`);
|
|
60
|
+
return {
|
|
61
|
+
founderDemo: 'not_ready',
|
|
62
|
+
designPartnerPilot: 'not_ready',
|
|
63
|
+
seriousEnterprisePilot: 'not_ready',
|
|
64
|
+
reasons,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
reasons.push('Safe edit allowed, protected boundary blocked, exact-path approval contained, neighbor stayed blocked, and a source-free AI Change Record was exported.');
|
|
68
|
+
// Backend receipt custody is the gate between design-partner and serious enterprise.
|
|
69
|
+
let seriousEnterprisePilot;
|
|
70
|
+
if (facts.backendReceipt.verified) {
|
|
71
|
+
seriousEnterprisePilot = 'ready_with_caveats';
|
|
72
|
+
reasons.push('A signed backend receipt verified under the configured key (integrity + issuance, not source correctness).');
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
seriousEnterprisePilot = 'not_ready';
|
|
76
|
+
reasons.push('Evidence is self-attested / local in this run — a serious enterprise pilot needs the backend signing key configured so receipts verify in production custody.');
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
founderDemo: 'ready',
|
|
80
|
+
designPartnerPilot: 'ready_with_caveats',
|
|
81
|
+
seriousEnterprisePilot,
|
|
82
|
+
reasons,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const REPORT_EXCLUDES = [
|
|
86
|
+
'source code',
|
|
87
|
+
'diff hunks',
|
|
88
|
+
'patch bodies',
|
|
89
|
+
'raw prompts',
|
|
90
|
+
'secrets',
|
|
91
|
+
'private file contents',
|
|
92
|
+
];
|
|
93
|
+
function trustStatement(receipt) {
|
|
94
|
+
if (receipt.verified) {
|
|
95
|
+
return `Backend-signed receipt verified under the configured signing key (${receipt.provenance}). This proves the record was issued under that key and was not altered — it does NOT prove source correctness or vulnerability absence. The signature is an HMAC backend receipt, not public-key cryptographic signing.`;
|
|
96
|
+
}
|
|
97
|
+
if (receipt.configured) {
|
|
98
|
+
return `A signing key was configured but the receipt did not verify in this run (${receipt.provenance}). Treat the evidence as self-attested until a receipt verifies.`;
|
|
99
|
+
}
|
|
100
|
+
return `No backend signing key was configured, so the AI Change Record is a self-attested local record (${receipt.provenance}). It is useful, honest routing metadata — not cryptographic proof that governance ran. Configure the backend signing key to upgrade to verifiable receipts.`;
|
|
101
|
+
}
|
|
102
|
+
function buildEnterpriseEvalReport(facts, checkpoints) {
|
|
103
|
+
const passed = checkpoints.filter((c) => c.status === 'pass').length;
|
|
104
|
+
const criticalFailures = checkpoints.filter((c) => c.critical && c.status === 'fail').length;
|
|
105
|
+
const verdict = deriveVerdict(checkpoints, facts);
|
|
106
|
+
const deterministicFacts = [
|
|
107
|
+
`Safe in-scope edit was allowed without a block (${facts.safeEditAllowed ? 'observed' : 'NOT observed'}).`,
|
|
108
|
+
`Protected boundary ${facts.boundaryBlockPath ?? 'src/billing/charge.py'} was blocked before the write landed${facts.boundaryOwners.length ? ` (owner ${facts.boundaryOwners.join(', ')})` : ''}.`,
|
|
109
|
+
`Exact-path approval granted exactly one path: ${facts.exactApprovalPath ?? 'none'} (exact-only: ${facts.exactApprovalOnly ? 'yes' : 'no'}).`,
|
|
110
|
+
`Approved path was allowed after approval: ${facts.approvedPathAllowedAfter ? 'yes' : 'no'}.`,
|
|
111
|
+
`Neighbor ${facts.neighborPath ?? 'src/billing/refund.py'} stayed blocked after the approval: ${facts.neighborContained ? 'yes' : 'no'}.`,
|
|
112
|
+
`A source-free AI Change Record / admission record was exported${facts.aiChangeRecordRelativePath ? ` (${facts.aiChangeRecordRelativePath})` : ''}.`,
|
|
113
|
+
];
|
|
114
|
+
if (facts.admissionBlockedCount != null && facts.admissionApprovedCount != null) {
|
|
115
|
+
deterministicFacts.push(`Admission record counts: ${facts.admissionBlockedCount} blocked path(s), ${facts.admissionApprovedCount} exact approval(s).`);
|
|
116
|
+
}
|
|
117
|
+
const advisoryFacts = [];
|
|
118
|
+
if (facts.repoBrain.status === 'measured') {
|
|
119
|
+
advisoryFacts.push(`Repo brain indexed ${facts.repoBrain.filesIndexed ?? 'n/a'} files; owner boundaries: ${facts.repoBrain.ownerBoundaries.map((b) => `${b.pattern} → ${b.owners.join('/')}`).join('; ') || 'none'}.`);
|
|
120
|
+
if (facts.repoBrain.reuseAdvisories.length > 0) {
|
|
121
|
+
advisoryFacts.push(`Reuse / duplication advisories (fingerprint resemblance, can be false positive): ${facts.repoBrain.reuseAdvisories
|
|
122
|
+
.map((r) => `${r.symbolName ?? 'symbol'} [${r.severity}]`)
|
|
123
|
+
.join('; ')}.`);
|
|
124
|
+
}
|
|
125
|
+
if (facts.repoBrain.highFanOutSymbols.length > 0) {
|
|
126
|
+
advisoryFacts.push(`High fan-out surfaces worth reviewing first: ${facts.repoBrain.highFanOutSymbols
|
|
127
|
+
.map((h) => `${h.file} (${h.importFanIn} callers)`)
|
|
128
|
+
.join('; ')}.`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
advisoryFacts.push(`Repo brain was not indexed in this run — run \`${facts.repoBrain.recoveryCommand}\` to populate owner mapping, sensitive surfaces, and reuse advisories.`);
|
|
133
|
+
}
|
|
134
|
+
const whatThisProves = [
|
|
135
|
+
'The runtime allowed a safe, in-scope edit (no false positive) and denied a protected-boundary write before it landed.',
|
|
136
|
+
'An exact-path approval widened scope to exactly one file and no further.',
|
|
137
|
+
'A file adjacent to the approved path stayed blocked — approval did not silently widen.',
|
|
138
|
+
'A source-free AI Change Record was produced that carries paths, owners, verdicts, counts, and hashes only.',
|
|
139
|
+
'The governance loop runs locally and deterministically without GitHub Actions or cloud authentication.',
|
|
140
|
+
];
|
|
141
|
+
const whatThisDoesNotProve = [
|
|
142
|
+
'It does not prove the source code is correct, secure, or free of vulnerabilities.',
|
|
143
|
+
'It does not prove the AI "semantically understands" the repository — reuse/architecture signals are advisory and can be false positives.',
|
|
144
|
+
facts.backendReceipt.verified
|
|
145
|
+
? 'A verified receipt confirms issuance under the configured key (HMAC backend receipt) and integrity — not source correctness, and not public-key cryptographic signing.'
|
|
146
|
+
: 'No backend receipt was verified in this run, so evidence is self-attested/local — not cryptographic proof that governance ran.',
|
|
147
|
+
'It is a controlled fixture, not your real repository. Re-run on a real repo to see your owners, surfaces, and reuse signals.',
|
|
148
|
+
];
|
|
149
|
+
const nextStepForRealRepo = [
|
|
150
|
+
`Run \`neurcode eval start --agent ${facts.agent}\` in your real repository (read-only — it never edits your source).`,
|
|
151
|
+
'Run `neurcode brain index` to map your owners, sensitive surfaces, and high fan-out symbols.',
|
|
152
|
+
facts.agent === 'claude'
|
|
153
|
+
? 'Activate Claude Code hooks (`neurcode activate claude --dir .`) so the same boundary is a hard pre-write deny in a live session.'
|
|
154
|
+
: `Activate supervised guard mode (\`neurcode activate ${facts.agent} --dir .\`) and drive a bounded task through \`neurcode agent guard\`.`,
|
|
155
|
+
'Trigger one real boundary block + exact approval, then `neurcode eval export` to share a source-free report.',
|
|
156
|
+
'Configure the backend signing key to upgrade self-attested records into verifiable receipts.',
|
|
157
|
+
];
|
|
158
|
+
return {
|
|
159
|
+
schemaVersion: exports.ENTERPRISE_EVAL_REPORT_SCHEMA_VERSION,
|
|
160
|
+
generatedAt: facts.generatedAt,
|
|
161
|
+
agent: facts.agent,
|
|
162
|
+
enforcement: facts.enforcement,
|
|
163
|
+
enforcementLabel: facts.enforcementLabel,
|
|
164
|
+
enforcementMethod: facts.enforcementMethod,
|
|
165
|
+
mode: facts.mode,
|
|
166
|
+
durationMs: facts.durationMs,
|
|
167
|
+
repo: { rootHash: facts.repoRootHash, fixtureRelativeDir: facts.fixtureRelativeDir },
|
|
168
|
+
result: { complete: criticalFailures === 0, passed, total: checkpoints.length, criticalFailures },
|
|
169
|
+
checkpoints: checkpoints.map((c) => ({
|
|
170
|
+
...c,
|
|
171
|
+
truthTierLabel: guided_eval_1.GUIDED_EVAL_TRUTH_TIERS[c.truthTier].label,
|
|
172
|
+
})),
|
|
173
|
+
whatThisProves,
|
|
174
|
+
whatThisDoesNotProve,
|
|
175
|
+
deterministicFacts,
|
|
176
|
+
advisoryFacts,
|
|
177
|
+
boundaryTimeline: facts.boundaryTimeline,
|
|
178
|
+
exactApprovalContainment: {
|
|
179
|
+
approvedPath: facts.exactApprovalPath,
|
|
180
|
+
exactOnly: facts.exactApprovalOnly,
|
|
181
|
+
allowedAfterApproval: facts.approvedPathAllowedAfter,
|
|
182
|
+
owners: facts.boundaryOwners,
|
|
183
|
+
},
|
|
184
|
+
neighborContainment: {
|
|
185
|
+
neighborPath: facts.neighborPath,
|
|
186
|
+
stayedBlocked: facts.neighborContained,
|
|
187
|
+
},
|
|
188
|
+
repoBrain: facts.repoBrain,
|
|
189
|
+
evidenceTrustPosture: {
|
|
190
|
+
aiChangeRecord: {
|
|
191
|
+
sessionId: facts.aiChangeRecordSessionId,
|
|
192
|
+
relativePath: facts.aiChangeRecordRelativePath,
|
|
193
|
+
},
|
|
194
|
+
backendReceipt: facts.backendReceipt,
|
|
195
|
+
statement: trustStatement(facts.backendReceipt),
|
|
196
|
+
},
|
|
197
|
+
commandsRun: facts.commandsRun,
|
|
198
|
+
nextStepForRealRepo,
|
|
199
|
+
verdict,
|
|
200
|
+
truthTaxonomy: Object.fromEntries(Object.keys(guided_eval_1.GUIDED_EVAL_TRUTH_TIERS).map((k) => [
|
|
201
|
+
k,
|
|
202
|
+
guided_eval_1.GUIDED_EVAL_TRUTH_TIERS[k].label,
|
|
203
|
+
])),
|
|
204
|
+
privacy: { sourceFree: true, excludes: REPORT_EXCLUDES },
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
const CHECKPOINT_GLYPH = {
|
|
208
|
+
pass: '✓',
|
|
209
|
+
fail: '✗',
|
|
210
|
+
advisory: '~',
|
|
211
|
+
skipped: '–',
|
|
212
|
+
};
|
|
213
|
+
const PHASE_LABEL = {
|
|
214
|
+
safe_edit: 'Safe edit',
|
|
215
|
+
boundary_block: 'Protected boundary',
|
|
216
|
+
post_approval_allow: 'After exact approval',
|
|
217
|
+
neighbor_block: 'Neighbor file',
|
|
218
|
+
};
|
|
219
|
+
const READINESS_LABEL = {
|
|
220
|
+
ready: 'Ready',
|
|
221
|
+
ready_with_caveats: 'Ready with caveats',
|
|
222
|
+
not_ready: 'Not ready',
|
|
223
|
+
};
|
|
224
|
+
function renderEnterpriseEvalReportMarkdown(report) {
|
|
225
|
+
const lines = [];
|
|
226
|
+
lines.push('# Enterprise Self-Serve Evaluation — Report');
|
|
227
|
+
lines.push('');
|
|
228
|
+
lines.push(`Generated: ${report.generatedAt}`);
|
|
229
|
+
lines.push(`Agent: ${report.agent} · Enforcement: ${report.enforcementLabel}`);
|
|
230
|
+
lines.push(`Method: ${report.enforcementMethod}`);
|
|
231
|
+
lines.push(`Mode: ${report.mode} · Repo identity: ${report.repo.rootHash} (path hash — no source) · Fixture: ${report.repo.fixtureRelativeDir}`);
|
|
232
|
+
lines.push(`Result: ${report.result.passed}/${report.result.total} checkpoints passed${report.result.complete
|
|
233
|
+
? ' — core governance loop held'
|
|
234
|
+
: ` — ${report.result.criticalFailures} critical failure(s)`}`);
|
|
235
|
+
lines.push('');
|
|
236
|
+
lines.push('## What this proves');
|
|
237
|
+
lines.push('');
|
|
238
|
+
for (const item of report.whatThisProves)
|
|
239
|
+
lines.push(`- ${item}`);
|
|
240
|
+
lines.push('');
|
|
241
|
+
lines.push('## What this does NOT prove');
|
|
242
|
+
lines.push('');
|
|
243
|
+
for (const item of report.whatThisDoesNotProve)
|
|
244
|
+
lines.push(`- ${item}`);
|
|
245
|
+
lines.push('');
|
|
246
|
+
lines.push('## Checkpoints');
|
|
247
|
+
lines.push('');
|
|
248
|
+
lines.push('| | Checkpoint | Tier | Status | Observed |');
|
|
249
|
+
lines.push('|---|---|---|---|---|');
|
|
250
|
+
for (const c of report.checkpoints) {
|
|
251
|
+
lines.push(`| ${CHECKPOINT_GLYPH[c.status]} | ${c.title} | ${c.truthTierLabel} | ${c.status} | ${c.observed} |`);
|
|
252
|
+
}
|
|
253
|
+
lines.push('');
|
|
254
|
+
lines.push('## Deterministic facts');
|
|
255
|
+
lines.push('');
|
|
256
|
+
lines.push('_Compiled path / symbol / graph / policy facts. They prove the structural statement, not source correctness._');
|
|
257
|
+
lines.push('');
|
|
258
|
+
for (const item of report.deterministicFacts)
|
|
259
|
+
lines.push(`- ${item}`);
|
|
260
|
+
lines.push('');
|
|
261
|
+
lines.push('## Advisory facts');
|
|
262
|
+
lines.push('');
|
|
263
|
+
lines.push('_Semantic / reuse / architecture inference. Worth a human look; explicitly NOT a deterministic guarantee._');
|
|
264
|
+
lines.push('');
|
|
265
|
+
for (const item of report.advisoryFacts)
|
|
266
|
+
lines.push(`- ${item}`);
|
|
267
|
+
lines.push('');
|
|
268
|
+
lines.push('## Boundary decision timeline');
|
|
269
|
+
lines.push('');
|
|
270
|
+
lines.push('| # | Phase | Path | Tool | Decision | Owner |');
|
|
271
|
+
lines.push('|---|---|---|---|---|---|');
|
|
272
|
+
for (const e of report.boundaryTimeline) {
|
|
273
|
+
lines.push(`| ${e.order} | ${PHASE_LABEL[e.phase]} | ${e.path} | ${e.toolName} | ${e.decision} | ${e.owners.join(', ') || '—'} |`);
|
|
274
|
+
}
|
|
275
|
+
lines.push('');
|
|
276
|
+
lines.push('## Exact approval containment');
|
|
277
|
+
lines.push('');
|
|
278
|
+
lines.push(`- Approved path: ${report.exactApprovalContainment.approvedPath ?? 'none'}`);
|
|
279
|
+
lines.push(`- Exactly one path approved: ${report.exactApprovalContainment.exactOnly ? 'yes' : 'no'}`);
|
|
280
|
+
lines.push(`- Allowed after approval: ${report.exactApprovalContainment.allowedAfterApproval ? 'yes' : 'no'}`);
|
|
281
|
+
lines.push(`- Boundary owner: ${report.exactApprovalContainment.owners.join(', ') || 'not recorded'}`);
|
|
282
|
+
lines.push('');
|
|
283
|
+
lines.push('## Neighbor containment');
|
|
284
|
+
lines.push('');
|
|
285
|
+
lines.push(`- Neighbor path: ${report.neighborContainment.neighborPath ?? 'none'}`);
|
|
286
|
+
lines.push(`- Stayed blocked after approval: ${report.neighborContainment.stayedBlocked ? 'yes — approval did not widen scope' : 'no'}`);
|
|
287
|
+
lines.push('');
|
|
288
|
+
lines.push('## Repo brain / reuse intelligence summary');
|
|
289
|
+
lines.push('');
|
|
290
|
+
if (report.repoBrain.status === 'measured') {
|
|
291
|
+
lines.push(`- Files indexed: ${report.repoBrain.filesIndexed ?? 'n/a'}`);
|
|
292
|
+
lines.push(`- Sensitive surfaces: ${report.repoBrain.sensitiveSurfaces.join(', ') || 'none'}`);
|
|
293
|
+
lines.push(`- Owner boundaries: ${report.repoBrain.ownerBoundaries.map((b) => `${b.pattern} → ${b.owners.join('/')}`).join('; ') || 'none'}`);
|
|
294
|
+
lines.push(`- High fan-out symbols (advisory): ${report.repoBrain.highFanOutSymbols.map((h) => `${h.file} (${h.importFanIn} callers)`).join('; ') || 'none'}`);
|
|
295
|
+
lines.push(`- Reuse advisories (advisory): ${report.repoBrain.reuseAdvisories.map((r) => `${r.symbolName ?? 'symbol'} [${r.severity}]`).join('; ') || 'none'}`);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
lines.push(`- Not indexed in this run — run \`${report.repoBrain.recoveryCommand}\` on the target repo to populate.`);
|
|
299
|
+
}
|
|
300
|
+
lines.push('');
|
|
301
|
+
lines.push('## Evidence trust posture');
|
|
302
|
+
lines.push('');
|
|
303
|
+
lines.push(`- AI Change Record: ${report.evidenceTrustPosture.aiChangeRecord.relativePath ?? 'none'} (session ${report.evidenceTrustPosture.aiChangeRecord.sessionId ?? 'n/a'})`);
|
|
304
|
+
lines.push(`- Backend receipt: configured ${report.evidenceTrustPosture.backendReceipt.configured ? 'yes' : 'no'}, verified ${report.evidenceTrustPosture.backendReceipt.verified ? 'yes' : 'no'} (${report.evidenceTrustPosture.backendReceipt.provenance})`);
|
|
305
|
+
lines.push(`- ${report.evidenceTrustPosture.statement}`);
|
|
306
|
+
lines.push('');
|
|
307
|
+
lines.push('## Commands that were run');
|
|
308
|
+
lines.push('');
|
|
309
|
+
lines.push('```');
|
|
310
|
+
for (const cmd of report.commandsRun)
|
|
311
|
+
lines.push(cmd);
|
|
312
|
+
lines.push('```');
|
|
313
|
+
lines.push('');
|
|
314
|
+
lines.push('## Design-partner pilot readiness');
|
|
315
|
+
lines.push('');
|
|
316
|
+
lines.push(`- Founder demo: ${READINESS_LABEL[report.verdict.founderDemo]}`);
|
|
317
|
+
lines.push(`- Design-partner pilot: ${READINESS_LABEL[report.verdict.designPartnerPilot]}`);
|
|
318
|
+
lines.push(`- Serious enterprise pilot: ${READINESS_LABEL[report.verdict.seriousEnterprisePilot]}`);
|
|
319
|
+
for (const reason of report.verdict.reasons)
|
|
320
|
+
lines.push(` - ${reason}`);
|
|
321
|
+
lines.push('');
|
|
322
|
+
lines.push('## Next step for a real repo');
|
|
323
|
+
lines.push('');
|
|
324
|
+
for (const item of report.nextStepForRealRepo)
|
|
325
|
+
lines.push(`- ${item}`);
|
|
326
|
+
lines.push('');
|
|
327
|
+
lines.push(`_Source-free: paths, owners, symbol names, hashes, verdicts, and tiers only. Excludes: ${report.privacy.excludes.join(', ')}._`);
|
|
328
|
+
lines.push('');
|
|
329
|
+
return lines.join('\n');
|
|
330
|
+
}
|
|
331
|
+
function trustLabel(receipt) {
|
|
332
|
+
if (receipt.verified) {
|
|
333
|
+
return 'Backend-signed receipt verified (HMAC backend receipt, integrity + issuance — not source correctness)';
|
|
334
|
+
}
|
|
335
|
+
if (receipt.configured)
|
|
336
|
+
return 'Signing key configured but receipt unverified — treat as self-attested';
|
|
337
|
+
return 'Self-attested local record (no backend signing key configured)';
|
|
338
|
+
}
|
|
339
|
+
function buildEvalDemoSummary(facts, checkpoints) {
|
|
340
|
+
const passed = checkpoints.filter((c) => c.status === 'pass').length;
|
|
341
|
+
const criticalFailures = checkpoints.filter((c) => c.critical && c.status === 'fail').length;
|
|
342
|
+
const total = checkpoints.length;
|
|
343
|
+
const percent = total === 0 ? 0 : Math.round((passed / total) * 100);
|
|
344
|
+
const verdict = deriveVerdict(checkpoints, facts);
|
|
345
|
+
const recommendedNextCommand = criticalFailures > 0
|
|
346
|
+
? `neurcode eval doctor --agent ${facts.agent}`
|
|
347
|
+
: `neurcode eval start --agent ${facts.agent} # then run it on your real repo`;
|
|
348
|
+
return {
|
|
349
|
+
schemaVersion: exports.EVAL_DEMO_SUMMARY_SCHEMA_VERSION,
|
|
350
|
+
generatedAt: facts.generatedAt,
|
|
351
|
+
agent: facts.agent,
|
|
352
|
+
enforcement: facts.enforcement,
|
|
353
|
+
enforcementLabel: facts.enforcementLabel,
|
|
354
|
+
mode: facts.mode,
|
|
355
|
+
repo: { rootHash: facts.repoRootHash },
|
|
356
|
+
completion: { complete: criticalFailures === 0, passed, total, percent },
|
|
357
|
+
checkpoints: checkpoints.map((c) => ({
|
|
358
|
+
id: c.id,
|
|
359
|
+
title: c.title,
|
|
360
|
+
truthTier: c.truthTier,
|
|
361
|
+
status: c.status,
|
|
362
|
+
observed: c.observed,
|
|
363
|
+
})),
|
|
364
|
+
facts: {
|
|
365
|
+
boundaryBlock: {
|
|
366
|
+
path: facts.boundaryBlockPath,
|
|
367
|
+
owners: facts.boundaryOwners,
|
|
368
|
+
blockType: facts.boundaryBlockType,
|
|
369
|
+
},
|
|
370
|
+
exactApproval: {
|
|
371
|
+
path: facts.exactApprovalPath,
|
|
372
|
+
exactOnly: facts.exactApprovalOnly,
|
|
373
|
+
allowedAfter: facts.approvedPathAllowedAfter,
|
|
374
|
+
},
|
|
375
|
+
neighbor: { path: facts.neighborPath, contained: facts.neighborContained },
|
|
376
|
+
aiChangeRecord: {
|
|
377
|
+
sessionId: facts.aiChangeRecordSessionId,
|
|
378
|
+
relativePath: facts.aiChangeRecordRelativePath,
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
sourceFree: true,
|
|
382
|
+
trustPosture: {
|
|
383
|
+
backendReceiptConfigured: facts.backendReceipt.configured,
|
|
384
|
+
backendReceiptVerified: facts.backendReceipt.verified,
|
|
385
|
+
label: trustLabel(facts.backendReceipt),
|
|
386
|
+
provenance: facts.backendReceipt.provenance,
|
|
387
|
+
},
|
|
388
|
+
recommendedNextCommand,
|
|
389
|
+
verdict,
|
|
390
|
+
privacy: { sourceFree: true, excludes: REPORT_EXCLUDES },
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
// ── Source-free backstop ──────────────────────────────────────────────────────
|
|
394
|
+
/** Throw if a would-be enterprise artifact contains source/diff/secret shapes. */
|
|
395
|
+
function assertEnterpriseEvalSourceFree(value, label = 'enterprise-eval artifact') {
|
|
396
|
+
const text = typeof value === 'string' ? value : JSON.stringify(value);
|
|
397
|
+
const leaks = (0, guided_eval_1.findSourceLeaks)(text);
|
|
398
|
+
if (leaks.length > 0) {
|
|
399
|
+
throw new Error(`${label} failed source-free scan: ${leaks.join(', ')}`);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=enterprise-eval-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enterprise-eval-report.js","sourceRoot":"","sources":["../../src/utils/enterprise-eval-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `neurcode eval demo` — the one-command local enterprise demo runner.
|
|
3
|
+
*
|
|
4
|
+
* Drives a complete, safe, deterministic governance loop against a throwaway
|
|
5
|
+
* fixture repository and produces a source-free enterprise report + dashboard
|
|
6
|
+
* summary. A first-time engineering manager or senior engineer can run a single
|
|
7
|
+
* command, watch the runtime allow a safe edit, block a protected boundary,
|
|
8
|
+
* contain an exact-path approval, keep a neighbor blocked, and export a
|
|
9
|
+
* source-free AI Change Record — without founder handholding, GitHub Actions, or
|
|
10
|
+
* cloud authentication.
|
|
11
|
+
*
|
|
12
|
+
* The loop is driven by self-spawning the *real* built CLI against the fixture,
|
|
13
|
+
* so what an evaluator sees is the actual product enforcing — not a re-implemented
|
|
14
|
+
* mock. Every expected assertion is checked; any critical failure fails the run
|
|
15
|
+
* loudly and the report records exactly which checkpoint did not hold.
|
|
16
|
+
*
|
|
17
|
+
* Hard rules (shared with utils/guided-eval.ts):
|
|
18
|
+
* - Source-free: only paths, owners, symbol names, counts, verdicts, hashes,
|
|
19
|
+
* and tier labels are read or emitted. {@link assertEnterpriseEvalSourceFree}
|
|
20
|
+
* is the backstop before anything is written.
|
|
21
|
+
* - Honest trust posture: self-attested local record unless a backend signing
|
|
22
|
+
* key is configured and a receipt actually verifies. Never claims public-key
|
|
23
|
+
* cryptographic signing for an HMAC backend receipt.
|
|
24
|
+
* - The only writers are the fixture scaffold and the `.neurcode/eval/`
|
|
25
|
+
* report/summary artifacts (gitignored). User source is never touched.
|
|
26
|
+
*/
|
|
27
|
+
import { type GuidedEvalAgent, type GuidedEvalEnforcement } from './guided-eval';
|
|
28
|
+
import { type DemoCheckpoint, type EnterpriseEvalReport, type EvalDemoFacts, type EvalDemoSummary } from './enterprise-eval-report';
|
|
29
|
+
export declare const EVAL_DEMO_RUN_SCHEMA_VERSION: "neurcode.eval-demo-run.v1";
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the entry of the *running* CLI so the demo drives the real product.
|
|
32
|
+
* Works under a global install, `npx`, and local development. Prefers the
|
|
33
|
+
* compiled layout (dist/commands/eval-demo.js → ../index.js), then argv[1].
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveCliEntry(): string;
|
|
36
|
+
export type PreflightStatus = 'ok' | 'warn' | 'info';
|
|
37
|
+
export interface PreflightCheck {
|
|
38
|
+
id: string;
|
|
39
|
+
label: string;
|
|
40
|
+
status: PreflightStatus;
|
|
41
|
+
detail: string;
|
|
42
|
+
recovery?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface EvalDemoPreflight {
|
|
45
|
+
schemaVersion: 'neurcode.eval-preflight.v1';
|
|
46
|
+
generatedAt: string;
|
|
47
|
+
agent: GuidedEvalAgent;
|
|
48
|
+
ok: boolean;
|
|
49
|
+
checks: PreflightCheck[];
|
|
50
|
+
backendSigningConfigured: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Buyer-friendly preflight: Node/npm, CLI version + multiple-install recovery,
|
|
54
|
+
* repo + fixture state, GitHub Actions (explicitly not required), and whether
|
|
55
|
+
* evidence will be backend-signed or self-attested. Short and honest.
|
|
56
|
+
*/
|
|
57
|
+
export declare function buildEvalDemoPreflight(repoRoot: string, options?: {
|
|
58
|
+
agent?: GuidedEvalAgent;
|
|
59
|
+
generatedAt?: string;
|
|
60
|
+
}): EvalDemoPreflight;
|
|
61
|
+
export interface RunEvalDemoOptions {
|
|
62
|
+
repoRoot: string;
|
|
63
|
+
agent?: string;
|
|
64
|
+
/** Skip the actual loop and only return preflight (used by --preflight). */
|
|
65
|
+
preflightOnly?: boolean;
|
|
66
|
+
generatedAt?: string;
|
|
67
|
+
/** Test seam: override the CLI entry that gets self-spawned. */
|
|
68
|
+
cliEntry?: string;
|
|
69
|
+
/** Emit per-step progress lines. */
|
|
70
|
+
onStep?: (line: string) => void;
|
|
71
|
+
}
|
|
72
|
+
export interface EvalDemoArtifacts {
|
|
73
|
+
reportMarkdownPath: string;
|
|
74
|
+
reportJsonPath: string;
|
|
75
|
+
summaryJsonPath: string;
|
|
76
|
+
guidedReportMarkdownPath: string;
|
|
77
|
+
}
|
|
78
|
+
export interface EvalDemoRunResult {
|
|
79
|
+
schemaVersion: typeof EVAL_DEMO_RUN_SCHEMA_VERSION;
|
|
80
|
+
ok: boolean;
|
|
81
|
+
agent: GuidedEvalAgent;
|
|
82
|
+
enforcement: GuidedEvalEnforcement;
|
|
83
|
+
preflight: EvalDemoPreflight;
|
|
84
|
+
checkpoints: DemoCheckpoint[];
|
|
85
|
+
facts: EvalDemoFacts;
|
|
86
|
+
report: EnterpriseEvalReport;
|
|
87
|
+
summary: EvalDemoSummary;
|
|
88
|
+
artifacts: EvalDemoArtifacts;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Run the complete one-command enterprise demo. Returns a structured result; the
|
|
92
|
+
* command layer renders it and sets the exit code. Throws only on a programming
|
|
93
|
+
* error — expected governance failures are recorded as failed checkpoints with
|
|
94
|
+
* `ok: false`, so the report still explains exactly what did not hold.
|
|
95
|
+
*/
|
|
96
|
+
export declare function runEvalDemo(options: RunEvalDemoOptions): EvalDemoRunResult;
|
|
97
|
+
//# sourceMappingURL=eval-demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-demo.d.ts","sourceRoot":"","sources":["../../src/utils/eval-demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,EAUL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAE3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAEzB,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,4BAA4B,EAAG,2BAAoC,CAAC;AAUjF;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAaxC;AAkCD,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,4BAA4B,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,eAAe,CAAC;IACvB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAoCD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9D,iBAAiB,CAkHnB;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,4BAA4B,CAAC;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,eAAe,CAAC;IACvB,WAAW,EAAE,qBAAqB,CAAC;IACnC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAgCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAgZ1E"}
|