@neurcode-ai/cli 0.20.7 → 0.20.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.
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Pilot Evidence Pack — pure builders (Iteration 10).
3
+ *
4
+ * After a pilot, a founder needs to hand engineering managers, principal
5
+ * engineers, security reviewers, and procurement/IT a single, shareable packet
6
+ * that explains what the Neurcode runtime control plane actually did — without a
7
+ * live walkthrough and without leaking a single line of source.
8
+ *
9
+ * This module is the source-free, deterministic core. It takes already-parsed,
10
+ * source-free inputs (extracted by the thin `neurcode pilot export` command from
11
+ * `.neurcode/sessions/*.change-record.json`, `.neurcode/admission/*.json`, and
12
+ * `.neurcode/pilot-metrics.json`) and turns them into:
13
+ *
14
+ * 1. {@link buildPilotEvidencePack} — a machine-readable manifest
15
+ * (`neurcode.pilot-evidence-pack.v1`).
16
+ * 2. {@link renderPilotEvidencePackMarkdown} / {@link renderPilotEvidencePackHtml}
17
+ * — the human-readable executive packet.
18
+ *
19
+ * Hard rules (shared with utils/enterprise-eval-report.ts + utils/guided-eval.ts):
20
+ * - Source-free. Only paths, owners, symbol names, counts, verdicts, hashes,
21
+ * and tier labels are read or emitted. We NEVER copy source, diffs, patch
22
+ * bodies, raw prompts, secrets, or the admission record's natural-language
23
+ * `intentSummary` / `goal` prose — intent is represented by its hash and
24
+ * categories only. {@link assertPilotEvidencePackSourceFree} is the backstop.
25
+ * - Honest tiers. Deterministic path/approval/hash facts are separated from
26
+ * advisory inference; trust posture is reported truthfully (self-attested vs
27
+ * backend-signed) and never overclaims enforcement.
28
+ * - Deterministic. {@link computePilotEvidencePackHash} excludes wall-clock
29
+ * timestamps so the same input yields the same `contentHash`.
30
+ *
31
+ * Everything here is pure (no filesystem or network I/O).
32
+ */
33
+ export declare const PILOT_EVIDENCE_PACK_SCHEMA_VERSION: "neurcode.pilot-evidence-pack.v1";
34
+ /**
35
+ * Keys that would carry intent/prompt/task prose. The pilot evidence pack is
36
+ * stricter than the admission record: even though the admission record's
37
+ * `intentSummary` passes the project's source-free gate (it is intent, not
38
+ * source), an executive packet for a security reviewer must not echo task text.
39
+ * Mirror this set in scripts/source-free-leak-scan.mjs (SOURCE_LIKE_KEYS).
40
+ */
41
+ export declare const FORBIDDEN_PROSE_KEYS: ReadonlySet<string>;
42
+ /** Source-free projection of one `.neurcode/sessions/<id>.change-record.json`. */
43
+ export interface PilotSessionInput {
44
+ sessionId: string;
45
+ status: string | null;
46
+ scopeMode: string | null;
47
+ trustLevel: string | null;
48
+ verdict: string | null;
49
+ counts: {
50
+ ok: number;
51
+ warn: number;
52
+ block: number;
53
+ approval: number;
54
+ planEvents: number;
55
+ events: number;
56
+ };
57
+ /** Intent is represented by hash + categories only — never the prose summary. */
58
+ intentHash: string | null;
59
+ intentCategories: string[];
60
+ approvals: {
61
+ approvalRequired: boolean;
62
+ exactPathApprovalOnly: boolean;
63
+ approvedExactPathCount: number;
64
+ neighborSensitiveBlocked: boolean;
65
+ blockedBoundaryCount: number;
66
+ boundaryOwnerCount: number;
67
+ };
68
+ /** Deterministic blocked-boundary globs (repo-relative; coarse patterns). */
69
+ blockedBoundaries: string[];
70
+ plan: {
71
+ timelineCount: number;
72
+ pendingAmendmentCount: number;
73
+ };
74
+ reuseAdvisoryCount: number;
75
+ evidenceReceipt: string | null;
76
+ hashes: {
77
+ recordHash: string | null;
78
+ replayHash: string | null;
79
+ };
80
+ }
81
+ /** Source-free projection of one `.neurcode/admission/<id>.json`. */
82
+ export interface PilotAdmissionInput {
83
+ sessionId: string;
84
+ attestationKind: string | null;
85
+ trustLevel: string | null;
86
+ sessionStatus: string | null;
87
+ counts: {
88
+ changedPaths: number;
89
+ blockedPaths: number;
90
+ suggestedApprovalPaths: number;
91
+ approvedExactPaths: number;
92
+ deniedPaths: number;
93
+ approvalRequiredSurfaces: number;
94
+ owners: number;
95
+ preWriteChecks: number;
96
+ allowedChecks: number;
97
+ warningChecks: number;
98
+ };
99
+ /** Repo-relative globs / paths — coarse risk surfaces, never source. */
100
+ paths: {
101
+ blocked: string[];
102
+ denied: string[];
103
+ approvalRequiredSurfaces: string[];
104
+ approvedExact: string[];
105
+ changed: string[];
106
+ };
107
+ manifest: {
108
+ entryCount: number;
109
+ deltaHash: string | null;
110
+ coverageSetHash: string | null;
111
+ /** Per-path git object metadata: path + change type + blob object ids (hashes, not contents). */
112
+ delta: Array<{
113
+ path: string;
114
+ changeType: string;
115
+ oldObjectId: string | null;
116
+ newObjectId: string | null;
117
+ }>;
118
+ };
119
+ integrity: {
120
+ sourceFree: boolean;
121
+ replayHash: string | null;
122
+ evidenceIntegrityStatus: string | null;
123
+ receiptPresent: boolean;
124
+ };
125
+ }
126
+ /** Source-free projection of the local pilot-metrics rollup (optional). */
127
+ export interface PilotMetricsInput {
128
+ periodDays: number;
129
+ totalVerifyRuns: number;
130
+ totalBlockingCaught: number;
131
+ totalStructuralCaught: number;
132
+ averagePassRate: number;
133
+ suppressionRate: number;
134
+ aiDebtTrend: string;
135
+ }
136
+ /** Source-free projection of `neurcode brain readiness` (optional). */
137
+ export interface PilotBrainReadinessInput {
138
+ state: string | null;
139
+ filesIndexed: number | null;
140
+ filesScanned: number | null;
141
+ percent: number | null;
142
+ }
143
+ export interface BuildPilotEvidencePackInput {
144
+ generatedAt: string;
145
+ cliVersion: string | null;
146
+ repoRootHash: string | null;
147
+ repoName: string | null;
148
+ sessions: PilotSessionInput[];
149
+ admissions: PilotAdmissionInput[];
150
+ metrics: PilotMetricsInput | null;
151
+ brainReadiness?: PilotBrainReadinessInput | null;
152
+ }
153
+ export type PilotCompletenessStatus = 'complete' | 'partial' | 'empty';
154
+ export interface PilotEvidencePack {
155
+ schemaVersion: typeof PILOT_EVIDENCE_PACK_SCHEMA_VERSION;
156
+ /** Wall-clock generation time — EXCLUDED from {@link contentHash}. */
157
+ generatedAt: string;
158
+ /** sha256 of the stable serialization of this pack with `generatedAt` removed. */
159
+ contentHash: string;
160
+ cli: {
161
+ version: string | null;
162
+ };
163
+ repo: {
164
+ rootHash: string | null;
165
+ name: string | null;
166
+ };
167
+ completeness: {
168
+ status: PilotCompletenessStatus;
169
+ missingArtifacts: string[];
170
+ notes: string[];
171
+ };
172
+ summary: {
173
+ sessionCount: number;
174
+ admissionRecordCount: number;
175
+ verdictCounts: Record<string, number>;
176
+ governedEditChecks: number;
177
+ blockedPathTotal: number;
178
+ deniedPathTotal: number;
179
+ approvedExactPathTotal: number;
180
+ riskFamilyCount: number;
181
+ dependencyChangeCount: number;
182
+ trustPosture: {
183
+ selfAttested: number;
184
+ backendSigned: number;
185
+ other: number;
186
+ };
187
+ headline: string;
188
+ };
189
+ sessions: Array<{
190
+ sessionId: string;
191
+ status: string | null;
192
+ verdict: string | null;
193
+ scopeMode: string | null;
194
+ trustLevel: string | null;
195
+ intentHash: string | null;
196
+ intentCategories: string[];
197
+ counts: PilotSessionInput['counts'];
198
+ approvedExactPathCount: number;
199
+ neighborSensitiveBlocked: boolean;
200
+ planEvents: number;
201
+ pendingAmendments: number;
202
+ reuseAdvisoryCount: number;
203
+ }>;
204
+ blockedRiskFamilies: Array<{
205
+ family: string;
206
+ surfaceCount: number;
207
+ sampleSurfaces: string[];
208
+ }>;
209
+ approvals: {
210
+ sessionsRequiringApproval: number;
211
+ exactPathOnlySessions: number;
212
+ approvedExactPathTotal: number;
213
+ neighborDenyObservedSessions: number;
214
+ blockedPathTotal: number;
215
+ deniedPathTotal: number;
216
+ };
217
+ planDrift: {
218
+ planEventTotal: number;
219
+ pendingAmendmentTotal: number;
220
+ planTimelineTotal: number;
221
+ sessionsWithPlanActivity: number;
222
+ note: string;
223
+ };
224
+ dependencyChanges: {
225
+ governedChangeCount: number;
226
+ files: Array<{
227
+ path: string;
228
+ changeType: string;
229
+ objectHash: string | null;
230
+ }>;
231
+ note: string;
232
+ };
233
+ evidenceHashes: Array<{
234
+ sessionId: string;
235
+ recordHash: string | null;
236
+ replayHash: string | null;
237
+ deltaHash: string | null;
238
+ coverageSetHash: string | null;
239
+ }>;
240
+ brainReadiness: PilotBrainReadinessInput | null;
241
+ metrics: PilotMetricsInput | null;
242
+ whatStayedLocal: {
243
+ statement: string;
244
+ facts: string[];
245
+ };
246
+ limitations: string[];
247
+ truthTiers: {
248
+ deterministic: string[];
249
+ advisory: string[];
250
+ };
251
+ privacy: {
252
+ sourceFree: true;
253
+ excludes: string[];
254
+ };
255
+ }
256
+ /** Map a coarse glob / path to a stable risk-family bucket. Source-free. */
257
+ export declare function classifyRiskFamily(surface: string): string;
258
+ /** True when a repo-relative path is a recognized dependency manifest / lockfile. */
259
+ export declare function isDependencyManifest(path: string): boolean;
260
+ /**
261
+ * Build the source-free pilot evidence pack from already-parsed inputs. The
262
+ * returned object carries a stable {@link PilotEvidencePack.contentHash}; the
263
+ * caller should still run {@link assertPilotEvidencePackSourceFree} before
264
+ * writing or printing (defense in depth — the harness asserts the same).
265
+ */
266
+ export declare function buildPilotEvidencePack(input: BuildPilotEvidencePackInput): PilotEvidencePack;
267
+ /**
268
+ * Compute the stable content hash of a pack: sha256 over the sorted-key
269
+ * serialization with `generatedAt` (and the hash field itself) removed, so the
270
+ * same input always yields the same hash regardless of generation time.
271
+ */
272
+ export declare function computePilotEvidencePackHash(pack: PilotEvidencePack): string;
273
+ /**
274
+ * Throw if a would-be pilot evidence artifact carries source/diff/secret shapes
275
+ * (delegated to the shared enterprise-eval scan) or any prose-intent key.
276
+ */
277
+ export declare function assertPilotEvidencePackSourceFree(value: unknown, label?: string): void;
278
+ export declare function renderPilotEvidencePackMarkdown(pack: PilotEvidencePack): string;
279
+ export declare function renderPilotEvidencePackHtml(pack: PilotEvidencePack): string;
280
+ //# sourceMappingURL=pilot-evidence-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pilot-evidence-pack.d.ts","sourceRoot":"","sources":["../../src/utils/pilot-evidence-pack.ts"],"names":[],"mappings":"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"}