kijito-tools 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 (104) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +6 -0
  3. package/README.md +220 -0
  4. package/bin/cli.js +34 -0
  5. package/install.sh +161 -0
  6. package/package.json +50 -0
  7. package/providers/_shared/wake-core.mjs +358 -0
  8. package/providers/claude/CLAUDE.md.snippet +31 -0
  9. package/providers/claude/install.sh +186 -0
  10. package/providers/claude/scripts/arm-session.sh +66 -0
  11. package/providers/claude/scripts/claude-armed.sh +101 -0
  12. package/providers/claude/scripts/heartbeat-watchdog.sh +209 -0
  13. package/providers/claude/scripts/inbox-selftest.sh +277 -0
  14. package/providers/claude/scripts/kijito-persona-lib.sh +94 -0
  15. package/providers/claude/scripts/kijito-qa-pass.sh +12 -0
  16. package/providers/claude/scripts/lifecycle-lib.sh +167 -0
  17. package/providers/claude/scripts/myctx.sh +46 -0
  18. package/providers/claude/scripts/self-clear.sh +134 -0
  19. package/providers/claude/scripts/session-autosend.sh +85 -0
  20. package/providers/claude/scripts/session-catchup-hint.sh +330 -0
  21. package/providers/claude/scripts/statusline-context.sh +67 -0
  22. package/providers/claude/skills/kijito-qa-memory/SKILL.md +110 -0
  23. package/providers/claude/skills/kijito-recall/SKILL.md +53 -0
  24. package/providers/claude/skills/kijito-start/SKILL.md +122 -0
  25. package/providers/claude/wiring/README.md +93 -0
  26. package/providers/claude/wiring/kijito-heartbeat@.service +21 -0
  27. package/providers/codex/README.md +75 -0
  28. package/providers/codex/codex-kijito-parity-plan.md +265 -0
  29. package/providers/codex/docs-codex-setup.md +64 -0
  30. package/providers/codex/install.mjs +184 -0
  31. package/providers/codex/n0-capability-probe-protocol.md +472 -0
  32. package/providers/codex/n0-harness/README.md +57 -0
  33. package/providers/codex/n0-harness/cli.mjs +58 -0
  34. package/providers/codex/n0-harness/evidence-manifest.mjs +77 -0
  35. package/providers/codex/n0-harness/fixture.mjs +279 -0
  36. package/providers/codex/n0-harness/lib.mjs +141 -0
  37. package/providers/codex/n0-harness/manifest.mjs +36 -0
  38. package/providers/codex/n0-harness/oracle.mjs +464 -0
  39. package/providers/codex/n0-harness/parser.mjs +200 -0
  40. package/providers/codex/n0-harness/prompt.mjs +43 -0
  41. package/providers/codex/n0-harness/snapshot.mjs +120 -0
  42. package/providers/codex/n0-harness/specimen.mjs +37 -0
  43. package/providers/codex/notify/kijito-notify-count.mjs +117 -0
  44. package/providers/codex/notify/kijito-notify-count.test.mjs +76 -0
  45. package/providers/codex/plans/gate4-battery-log.md +184 -0
  46. package/providers/codex/plans/gate4-battery-protocol.md +43 -0
  47. package/providers/codex/plans/hive-user-first-plan-QA.md +34 -0
  48. package/providers/codex/plans/hive-user-first-plan.md +247 -0
  49. package/providers/codex/release-manifest.json +53 -0
  50. package/providers/codex/same-chat-continuation-plan-gate.md +235 -0
  51. package/providers/codex/same-chat-continuation-plan.md +458 -0
  52. package/providers/codex/skills/kijito-qa-memory/SKILL.md +193 -0
  53. package/providers/codex/skills/kijito-qa-memory/agents/openai.yaml +4 -0
  54. package/providers/codex/skills/kijito-recall/SKILL.md +53 -0
  55. package/providers/codex/skills/kijito-start/SKILL.md +173 -0
  56. package/providers/codex/skills/kijito-start/agents/openai.yaml +4 -0
  57. package/providers/codex/test/n0-cli-refusal.test.mjs +31 -0
  58. package/providers/codex/test/n0-counterexample-matrix.test.mjs +118 -0
  59. package/providers/codex/test/n0-guard-census-core.mjs +1372 -0
  60. package/providers/codex/test/n0-guard-census.json +35479 -0
  61. package/providers/codex/test/n0-guard-census.mjs +31 -0
  62. package/providers/codex/test/n0-guard-census.test.mjs +374 -0
  63. package/providers/codex/test/n0-guard-counterexamples.mjs +1068 -0
  64. package/providers/codex/test/n0-guard-independent-projection.mjs +70 -0
  65. package/providers/codex/test/n0-guard-independent-projection.test.mjs +53 -0
  66. package/providers/codex/test/n0-guard-manifest-author.mjs +424 -0
  67. package/providers/codex/test/n0-guard-mutation-operators.test.mjs +244 -0
  68. package/providers/codex/test/n0-guard-mutation-runner.mjs +599 -0
  69. package/providers/codex/test/n0-guard-remainder-classes.test.mjs +314 -0
  70. package/providers/codex/test/n0-guard-sanitizer-pairs.test.mjs +68 -0
  71. package/providers/codex/test/n0-guard-shared-context-predicates.test.mjs +84 -0
  72. package/providers/codex/test/n0-harness.test.mjs +553 -0
  73. package/providers/codex/test/n0-notable-regressions.test.mjs +70 -0
  74. package/providers/codex/test/n0-subject-boundary.mjs +97 -0
  75. package/providers/codex/test/n0-subject-boundary.test.mjs +72 -0
  76. package/providers/codex/test/same-chat-plan-preflight.sh +167 -0
  77. package/providers/codex/tools/refresh-manifest.mjs +81 -0
  78. package/providers/codex/wake-helper/TRANSPORT-NOTES.md +25 -0
  79. package/providers/codex/wake-helper/integration.test.mjs +285 -0
  80. package/providers/codex/wake-helper/kijito-wake-helper.mjs +488 -0
  81. package/providers/codex/wake-helper/kijito-wake-helper.test.mjs +128 -0
  82. package/providers/codex/wake-helper/mock-daemon.mjs +64 -0
  83. package/providers/codex/wake-helper/status-probe.mjs +45 -0
  84. package/providers/codex/wake-helper/ws-uds.mjs +153 -0
  85. package/providers/monitor/.github/workflows/publish-npm.yml +38 -0
  86. package/providers/monitor/.github/workflows/publish-pypi.yml +30 -0
  87. package/providers/monitor/CHANGELOG.md +465 -0
  88. package/providers/monitor/IMPORT-PROVENANCE.md +68 -0
  89. package/providers/monitor/LICENSE +202 -0
  90. package/providers/monitor/NOTICE +7 -0
  91. package/providers/monitor/OPAQUE-OUTPUT-ENFORCEMENT.md +45 -0
  92. package/providers/monitor/README.md +571 -0
  93. package/providers/monitor/RELEASING.md +125 -0
  94. package/providers/monitor/arm-hive-monitor.sh +13 -0
  95. package/providers/monitor/bin/cli.js +43 -0
  96. package/providers/monitor/com.kijito.inbox-monitor.plist.template +59 -0
  97. package/providers/monitor/docs/DESIGN.md +984 -0
  98. package/providers/monitor/kijito-inbox-monitor@.service.template +95 -0
  99. package/providers/monitor/kijito_inbox_monitor.py +3666 -0
  100. package/providers/monitor/package.json +35 -0
  101. package/providers/monitor/pyproject.toml +42 -0
  102. package/providers/monitor/scripts/mutation-check.py +399 -0
  103. package/providers/monitor/scripts/prepublish-gate.sh +284 -0
  104. package/providers/monitor/test_kijito_monitor.py +5609 -0
@@ -0,0 +1,1068 @@
1
+ #!/usr/bin/env node
2
+ import { fileURLToPath } from "node:url";
3
+ import path from "node:path";
4
+ import fs from "node:fs";
5
+ import os from "node:os";
6
+ import { spawnSync } from "node:child_process";
7
+
8
+ const NOW = Date.parse("2026-07-30T23:10:00.000Z");
9
+
10
+ function requirePositiveContract(condition, detail) {
11
+ if (condition) return;
12
+ const error = new Error(detail);
13
+ error.code = "POSITIVE_CONTRACT";
14
+ throw error;
15
+ }
16
+
17
+ async function validationCase(mutate) {
18
+ const [{ fixtureSpecimen }, { sha256 }, { requiredCaseNames, validateSpecimen }, { renderPrompt }] = await Promise.all([
19
+ import("../n0-harness/fixture.mjs"),
20
+ import("../n0-harness/lib.mjs"),
21
+ import("../n0-harness/oracle.mjs"),
22
+ import("../n0-harness/prompt.mjs"),
23
+ ]);
24
+ const specimen = fixtureSpecimen();
25
+ mutate(specimen, { sha256 });
26
+ rebuildPrompts(specimen, { requiredCaseNames, renderPrompt, sha256 });
27
+ const validated = validateSpecimen(specimen);
28
+ requirePositiveContract(validated === specimen, "validateSpecimen must return the exact validated specimen");
29
+ return { accepted: true, code: "VALIDATE_SPECIMEN_ACCEPTED" };
30
+ }
31
+
32
+ async function validationNoRebuildCase(mutate) {
33
+ const [{ fixtureSpecimen }, { validateSpecimen }] = await Promise.all([
34
+ import("../n0-harness/fixture.mjs"),
35
+ import("../n0-harness/oracle.mjs"),
36
+ ]);
37
+ const specimen = fixtureSpecimen();
38
+ mutate(specimen);
39
+ const validated = validateSpecimen(specimen);
40
+ requirePositiveContract(validated === specimen, "validateSpecimen must return the exact validated specimen");
41
+ return { accepted: true, code: "VALIDATE_SPECIMEN_ACCEPTED" };
42
+ }
43
+
44
+ async function permissionCase(configure = () => {}) {
45
+ const [{ fixturePermissionEvidence, fixtureSpecimen }, { validatePermissionEvidence }] = await Promise.all([
46
+ import("../n0-harness/fixture.mjs"),
47
+ import("../n0-harness/oracle.mjs"),
48
+ ]);
49
+ const context = { specimen: fixtureSpecimen() };
50
+ context.evidence = fixturePermissionEvidence(context.specimen);
51
+ configure(context);
52
+ validatePermissionEvidence(context.specimen, context.evidence);
53
+ return { accepted: true, code: "PERMISSION_EVIDENCE_ACCEPTED" };
54
+ }
55
+
56
+ function rebuildPrompts(specimen, { requiredCaseNames, renderPrompt, sha256 }) {
57
+ for (const name of requiredCaseNames()) {
58
+ const utf8 = renderPrompt(specimen, name);
59
+ specimen.prompts[name] = { utf8, sha256: sha256(Buffer.from(utf8, "utf8")) };
60
+ }
61
+ }
62
+
63
+ function addRolloutEntry(specimen) {
64
+ const entry = { path: "session.jsonl", dev: 1, ino: 2, size: 10, mtimeMs: 3, firstRecordType: "session_meta" };
65
+ specimen.rollout.preActionSnapshot.entries = [entry];
66
+ specimen.rollout.preActionSnapshot.totalBytes = entry.size;
67
+ return entry;
68
+ }
69
+
70
+ async function oracleCase(mutate) {
71
+ const [{ fixtureEvidence, fixtureSpecimen }, { sha256 }, { evaluateOracle, requiredCaseNames }, { renderPrompt }] = await Promise.all([
72
+ import("../n0-harness/fixture.mjs"),
73
+ import("../n0-harness/lib.mjs"),
74
+ import("../n0-harness/oracle.mjs"),
75
+ import("../n0-harness/prompt.mjs"),
76
+ ]);
77
+ const specimen = fixtureSpecimen();
78
+ const evidence = fixtureEvidence(specimen, NOW);
79
+ const context = { specimen, evidence, nowMs: NOW };
80
+ mutate(context);
81
+ rebuildPrompts(context.specimen, { requiredCaseNames, renderPrompt, sha256 });
82
+ const result = evaluateOracle(context.specimen, context.evidence, context.nowMs);
83
+ return { accepted: result?.status === "N0_TEST_CAPABLE", code: result?.code ?? "ORACLE_UNDEFINED", status: result?.status ?? "UNDEFINED" };
84
+ }
85
+
86
+ async function policyCase() {
87
+ const { requiredCasePolicy } = await import("../n0-harness/oracle.mjs");
88
+ requiredCasePolicy("UNKNOWN");
89
+ return { accepted: true, code: "CASE_POLICY_ACCEPTED" };
90
+ }
91
+
92
+ async function libCase(name, args) {
93
+ const lib = await import("../n0-harness/lib.mjs");
94
+ lib[name](...args);
95
+ return { accepted: true, code: "HELPER_ACCEPTED" };
96
+ }
97
+
98
+ function shadowStat(stat, overrides) {
99
+ const shadow = Object.create(stat);
100
+ for (const [key, value] of Object.entries(overrides)) Object.defineProperty(shadow, key, { value });
101
+ return shadow;
102
+ }
103
+
104
+ async function readFileCase(configure = () => {}) {
105
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), "n0-read-pair."));
106
+ const target = path.join(root, "a.json");
107
+ fs.writeFileSync(target, "{}\n");
108
+ const context = { args: { root, target, options: {} }, cleanup: [], restorers: [] };
109
+ const patch = (object, key, wrap) => {
110
+ const original = object[key];
111
+ object[key] = wrap(original);
112
+ context.restorers.push(() => { object[key] = original; });
113
+ };
114
+ try {
115
+ configure(context, patch);
116
+ const lib = await import("../n0-harness/lib.mjs");
117
+ const result = lib.readOwnedRegularFile(context.args.root, context.args.target, context.args.options);
118
+ requirePositiveContract(Buffer.isBuffer(result?.data), "readOwnedRegularFile must return data bytes");
119
+ requirePositiveContract(result.stat?.size === result.data.length, "readOwnedRegularFile stat size must bind returned bytes");
120
+ requirePositiveContract(typeof result.path === "string" && path.isAbsolute(result.path), "readOwnedRegularFile must return an absolute real path");
121
+ return { accepted: true, code: "READ_FILE_ACCEPTED" };
122
+ } finally {
123
+ for (const restore of context.restorers.reverse()) restore();
124
+ for (const extra of context.cleanup.reverse()) fs.rmSync(extra, { recursive: true, force: true });
125
+ fs.rmSync(root, { recursive: true, force: true });
126
+ }
127
+ }
128
+
129
+ async function parserModules() {
130
+ const [fixture, lib, parser] = await Promise.all([
131
+ import("../n0-harness/fixture.mjs"),
132
+ import("../n0-harness/lib.mjs"),
133
+ import("../n0-harness/parser.mjs"),
134
+ ]);
135
+ return { fixture, lib, parser };
136
+ }
137
+
138
+ async function parseRolloutCase(input) {
139
+ const { parser } = await parserModules();
140
+ const parsed = parser.parseRollout(input);
141
+ requirePositiveContract(typeof parsed?.sessionId === "string" && parsed.sessionId.length > 0, "parseRollout must return a session id");
142
+ requirePositiveContract(Array.isArray(parsed.records) && parsed.records.length > 0, "parseRollout must return nonempty records");
143
+ requirePositiveContract(parsed.records[0]?.type === "session_meta", "parseRollout must retain the leading session record");
144
+ return { accepted: true, code: "PARSE_ROLLOUT_ACCEPTED" };
145
+ }
146
+
147
+ async function nonceCase(configure = () => {}) {
148
+ const { fixture, parser } = await parserModules();
149
+ const args = {
150
+ records: parser.parseRollout(fixture.fixtureRollout()).records,
151
+ nonce: fixture.FIXED.runNonce,
152
+ options: {},
153
+ };
154
+ configure(args, { fixture, parser });
155
+ parser.requireNonceInOneUserTurn(args.records, args.nonce, args.options);
156
+ return { accepted: true, code: "NONCE_ACCEPTED" };
157
+ }
158
+
159
+ async function markerCase(configure = () => {}) {
160
+ const { fixture, parser } = await parserModules();
161
+ const args = {
162
+ markerNonce: fixture.FIXED.markerNonce,
163
+ candidates: [{ path: "a.jsonl", text: fixture.fixtureRollout({ nonce: fixture.FIXED.markerNonce }) }],
164
+ };
165
+ configure(args, { fixture, parser });
166
+ parser.selectMarkerRollout(args.candidates, args.markerNonce);
167
+ return { accepted: true, code: "MARKER_ACCEPTED" };
168
+ }
169
+
170
+ async function scheduledCase(configure = () => {}) {
171
+ const { fixture, parser } = await parserModules();
172
+ const specimen = fixture.fixtureSpecimen();
173
+ const args = {
174
+ rolloutText: fixture.fixtureRollout({ environment: specimen.environment }),
175
+ runRecord: fixture.fixtureRunRecord(),
176
+ expected: fixture.fixtureExpected(specimen),
177
+ };
178
+ configure(args, { fixture, parser, specimen });
179
+ parser.verifyScheduledRun(args);
180
+ return { accepted: true, code: "SCHEDULED_ACCEPTED" };
181
+ }
182
+
183
+ async function pointerCase(configure = () => {}) {
184
+ const { fixture, lib, parser } = await parserModules();
185
+ const args = { raw: fixture.fixtureKijitoGet(), expectedId: fixture.FIXED.pointerId, expectedPersona: "codex" };
186
+ configure(args, { fixture, lib, parser });
187
+ parser.parseKijitoMainBody(args.raw, args.expectedId, args.expectedPersona);
188
+ return { accepted: true, code: "POINTER_ACCEPTED" };
189
+ }
190
+
191
+ async function mailCase(configure = () => {}) {
192
+ const { fixture, parser } = await parserModules();
193
+ const args = {
194
+ records: parser.parseRollout(fixture.fixtureRollout({ extraRecords: [fixture.fixtureMailRecord()] })).records,
195
+ options: { rowId: 77, bodyNonce: fixture.FIXED.bodyNonce },
196
+ };
197
+ configure(args, { fixture, parser });
198
+ parser.verifyExactMailFetch(args.records, args.options);
199
+ return { accepted: true, code: "MAIL_ACCEPTED" };
200
+ }
201
+
202
+ async function secretCase(configure = () => {}) {
203
+ const { fixture, parser } = await parserModules();
204
+ const args = { surfaces: { prompt: `leak ${fixture.FIXED.bodyNonce}` }, secrets: { bodyNonce: fixture.FIXED.bodyNonce } };
205
+ configure(args, { fixture, parser });
206
+ parser.assertSecretsAbsent(args.surfaces, args.secrets);
207
+ return { accepted: true, code: "SECRETS_ACCEPTED" };
208
+ }
209
+
210
+ async function snapshotCase(configure = () => {}) {
211
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), "n0-snapshot-pair."));
212
+ fs.writeFileSync(path.join(root, "a.jsonl"), `${JSON.stringify({ type: "session_meta", payload: { id: "session" } })}\n`);
213
+ const context = { args: { root, options: {} }, cleanup: [], restorers: [] };
214
+ const patch = (object, key, wrap) => {
215
+ const original = object[key];
216
+ object[key] = wrap(original);
217
+ context.restorers.push(() => { object[key] = original; });
218
+ };
219
+ try {
220
+ configure(context, patch);
221
+ const snapshot = await import("../n0-harness/snapshot.mjs");
222
+ const result = snapshot.snapshotTree(context.args.root, context.args.options);
223
+ requirePositiveContract(result?.schema === "N0_ROLLOUT_SNAPSHOT_V1", "snapshotTree must return the exact schema");
224
+ requirePositiveContract(result.root === fs.realpathSync(context.args.root), "snapshotTree must bind the exact real root");
225
+ requirePositiveContract(Array.isArray(result.entries), "snapshotTree must return entries");
226
+ requirePositiveContract(result.totalBytes === result.entries.reduce((sum, entry) => sum + entry.size, 0), "snapshotTree totalBytes must bind entries");
227
+ return { accepted: true, code: "SNAPSHOT_ACCEPTED" };
228
+ } finally {
229
+ for (const restore of context.restorers.reverse()) restore();
230
+ for (const extra of context.cleanup.reverse()) fs.rmSync(extra, { recursive: true, force: true });
231
+ fs.rmSync(root, { recursive: true, force: true });
232
+ }
233
+ }
234
+
235
+ function snapshotPair() {
236
+ const entry = { path: "a.jsonl", dev: 1, ino: 2, size: 10, mtimeMs: 3, firstRecordType: "session_meta" };
237
+ return {
238
+ before: { schema: "N0_ROLLOUT_SNAPSHOT_V1", root: "/rollouts", totalBytes: 10, entries: [{ ...entry }] },
239
+ after: { schema: "N0_ROLLOUT_SNAPSHOT_V1", root: "/rollouts", totalBytes: 10, entries: [{ ...entry }] },
240
+ };
241
+ }
242
+
243
+ async function snapshotDiffCase(configure = () => {}, stable = false) {
244
+ const snapshot = await import("../n0-harness/snapshot.mjs");
245
+ const pair = snapshotPair();
246
+ configure(pair);
247
+ if (stable) snapshot.assertSnapshotStable(pair.before, pair.after);
248
+ else snapshot.changedCandidates(pair.before, pair.after);
249
+ return { accepted: true, code: stable ? "SNAPSHOT_STABLE_ACCEPTED" : "SNAPSHOT_DIFF_ACCEPTED" };
250
+ }
251
+
252
+ async function promptCase(configure = () => {}, digest = false) {
253
+ const { fixture } = await parserModules();
254
+ const prompt = await import("../n0-harness/prompt.mjs");
255
+ const args = { specimen: fixture.fixtureSpecimen(), caseName: "N0a-M" };
256
+ configure(args, { fixture, prompt });
257
+ if (digest) prompt.promptDigest(args.specimen, args.caseName);
258
+ else prompt.renderPrompt(args.specimen, args.caseName);
259
+ return { accepted: true, code: digest ? "PROMPT_DIGEST_ACCEPTED" : "PROMPT_ACCEPTED" };
260
+ }
261
+
262
+ async function cliCase(configure = () => {}) {
263
+ const { fixture } = await parserModules();
264
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), "n0-cli-pair."));
265
+ try {
266
+ const specimen = fixture.fixtureSpecimen();
267
+ const evidence = fixture.fixtureEvidence(specimen, NOW);
268
+ fs.writeFileSync(path.join(root, "specimen.json"), JSON.stringify(specimen));
269
+ fs.writeFileSync(path.join(root, "evidence.json"), JSON.stringify(evidence));
270
+ const context = {
271
+ root,
272
+ specimen,
273
+ evidence,
274
+ argv: ["oracle", "--root", root, "--specimen", path.join(root, "specimen.json"), "--evidence", path.join(root, "evidence.json"), "--now-ms", String(NOW)],
275
+ };
276
+ configure(context, { fixture });
277
+ const cli = fileURLToPath(new URL("../n0-harness/cli.mjs", import.meta.url));
278
+ const result = spawnSync(process.execPath, [cli, ...context.argv], { cwd: root, encoding: "utf8" });
279
+ let payload;
280
+ try { payload = JSON.parse(result.stdout); } catch {}
281
+ const command = context.argv[0];
282
+ const validOracle = command === "oracle" && payload?.status === "N0_TEST_CAPABLE";
283
+ const validSnapshot = command === "snapshot" && payload?.schema === "N0_ROLLOUT_SNAPSHOT_V1"
284
+ && payload.root === fs.realpathSync(root) && Array.isArray(payload.entries);
285
+ const accepted = result.status === 0 && result.stderr === "" && (validOracle || validSnapshot);
286
+ if (accepted) return { accepted: true, code: "CLI_ACCEPTED" };
287
+ let detail = result.stderr.match(/^([A-Z0-9_]+):/)?.[1];
288
+ if (!detail && payload && typeof payload.code === "string") detail = payload.code;
289
+ if (!detail && result.stderr.startsWith("N0_TEST_ORACLE")) detail = "USAGE";
290
+ if (!detail && result.status === 0 && result.stdout.trim() === "") detail = "EMPTY_OUTPUT";
291
+ return { accepted: false, code: `CLI_EXIT_${result.status}:${detail ?? "INVALID_OUTPUT"}` };
292
+ } finally { fs.rmSync(root, { recursive: true, force: true }); }
293
+ }
294
+
295
+ async function specimenCase(kind) {
296
+ const { fixture } = await parserModules();
297
+ const specimenModule = await import("../n0-harness/specimen.mjs");
298
+ if (kind === "build") {
299
+ const input = fixture.fixtureSpecimen();
300
+ input.target.clean = false;
301
+ specimenModule.buildSpecimen(input);
302
+ return { accepted: true, code: "BUILD_SPECIMEN_ACCEPTED" };
303
+ }
304
+ if (kind === "build-prompt-nonce") {
305
+ const input = fixture.fixtureSpecimen();
306
+ input.cases["N0a-M"].nonce = "g".repeat(32);
307
+ specimenModule.buildSpecimen(input);
308
+ return { accepted: true, code: "BUILD_SPECIMEN_ACCEPTED" };
309
+ }
310
+ if (kind === "mail") {
311
+ specimenModule.buildMailFixtureRequest({ bodyNonce: "g".repeat(32) });
312
+ return { accepted: true, code: "MAIL_REQUEST_ACCEPTED" };
313
+ }
314
+ specimenModule.buildMailCleanupRequest({ rowId: 1.5 });
315
+ return { accepted: true, code: "MAIL_CLEANUP_ACCEPTED" };
316
+ }
317
+
318
+ function patchLstatCall(callIndex, overrides) {
319
+ return (original) => {
320
+ let calls = 0;
321
+ return function patchedLstat(...args) {
322
+ const stat = original.apply(this, args);
323
+ calls += 1;
324
+ return calls === callIndex ? shadowStat(stat, overrides(stat)) : stat;
325
+ };
326
+ };
327
+ }
328
+
329
+ function patchFstat(mode, field) {
330
+ return (original) => {
331
+ let calls = 0;
332
+ return function patchedFstat(...args) {
333
+ const stat = original.apply(this, args);
334
+ calls += 1;
335
+ const alter = mode === "both" || (mode === "after" && calls === 2);
336
+ return alter ? shadowStat(stat, { [field]: stat[field] + 1 }) : stat;
337
+ };
338
+ };
339
+ }
340
+
341
+ async function manifestContext() {
342
+ const [{ fixtureSpecimen }, lib, oracle, prompt, evidenceManifest] = await Promise.all([
343
+ import("../n0-harness/fixture.mjs"),
344
+ import("../n0-harness/lib.mjs"),
345
+ import("../n0-harness/oracle.mjs"),
346
+ import("../n0-harness/prompt.mjs"),
347
+ import("../n0-harness/evidence-manifest.mjs"),
348
+ ]);
349
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), "n0-manifest-pair."));
350
+ fs.writeFileSync(path.join(root, "a.json"), "{}\n");
351
+ fs.writeFileSync(path.join(root, "b.json"), "{}\n");
352
+ const specimen = fixtureSpecimen();
353
+ specimen.paths.control = root;
354
+ for (const name of ["control-read", "control-chmod", "control-create"]) specimen.canaries[name].path = path.join(root, name);
355
+ rebuildPrompts(specimen, { requiredCaseNames: oracle.requiredCaseNames, renderPrompt: prompt.renderPrompt, sha256: lib.sha256 });
356
+ return { root, specimen, ...evidenceManifest };
357
+ }
358
+
359
+ async function buildManifestCase(mutate) {
360
+ const context = await manifestContext();
361
+ try {
362
+ const args = { root: context.root, specimen: context.specimen, files: ["a.json"], createdAt: "2026-07-30T23:11:00.000Z" };
363
+ mutate(args, context);
364
+ context.buildEvidenceManifest(args);
365
+ return { accepted: true, code: "BUILD_MANIFEST_ACCEPTED" };
366
+ } finally { fs.rmSync(context.root, { recursive: true, force: true }); }
367
+ }
368
+
369
+ async function validateManifestCase(mutate) {
370
+ const context = await manifestContext();
371
+ try {
372
+ const manifest = context.buildEvidenceManifest({ root: context.root, specimen: context.specimen, files: ["a.json"], createdAt: "2026-07-30T23:11:00.000Z" });
373
+ const mutated = mutate(manifest, context);
374
+ const candidate = mutated === undefined ? manifest : mutated;
375
+ context.validateEvidenceManifest(context.specimen, candidate);
376
+ return { accepted: true, code: "VALIDATE_MANIFEST_ACCEPTED" };
377
+ } finally { fs.rmSync(context.root, { recursive: true, force: true }); }
378
+ }
379
+
380
+ const cases = {
381
+ "lib.fail": () => libCase("fail", ["X", "x"]),
382
+ "lib.object.null": () => libCase("requireObject", [null, "X", "value"]),
383
+ "lib.object.string": () => libCase("requireObject", ["x", "X", "value"]),
384
+ "lib.object.array": () => libCase("requireObject", [[], "X", "value"]),
385
+ "lib.string.type": () => libCase("requireString", [7, "X", "value"]),
386
+ "lib.string.short": () => libCase("requireString", ["", "X", "value"]),
387
+ "lib.string.long": () => libCase("requireString", ["xx", "X", "value", { max: 1 }]),
388
+ "lib.integer.type": () => libCase("requireSafeInteger", [1.5, "X", "value"]),
389
+ "lib.integer.min": () => libCase("requireSafeInteger", [0, "X", "value"]),
390
+ "lib.sha.format": () => libCase("requireSha256", ["g".repeat(64), "X", "value"]),
391
+ "lib.sha.length": () => libCase("requireSha256", ["short", "X", "value"]),
392
+ "lib.commit.format": () => libCase("requireGitCommit", ["g".repeat(40), "X", "value"]),
393
+ "lib.commit.length": () => libCase("requireGitCommit", ["short", "X", "value"]),
394
+ "lib.nonce.format": () => libCase("requireNonce", ["g".repeat(32), "X", "value"]),
395
+ "lib.nonce.length": () => libCase("requireNonce", ["short", "X", "value"]),
396
+ "lib.exact-keys.object": () => libCase("assertExactKeys", [null, [], "X", "value"]),
397
+ "lib.exact-keys.extra": () => libCase("assertExactKeys", [{ extra: true }, [], "X", "value"]),
398
+ "lib.path.outside": () => libCase("requirePathInside", ["/root/base", "/root/outside", "X"]),
399
+ "lib.path.parent": () => libCase("requirePathInside", ["/root/base", "/root", "X"]),
400
+ "lib.path.relative-absolute-injection": async () => {
401
+ const root = path.resolve(os.tmpdir(), "n0-relative-root");
402
+ const target = path.join(root, "child");
403
+ const relative = path.relative(root, target);
404
+ const original = path.isAbsolute;
405
+ path.isAbsolute = (candidate) => candidate === relative || original(candidate);
406
+ try {
407
+ return await libCase("requirePathInside", [root, target, "X"]);
408
+ } finally {
409
+ path.isAbsolute = original;
410
+ }
411
+ },
412
+ "lib.read.root-directory": () => readFileCase((context, patch) => {
413
+ patch(fs, "lstatSync", patchLstatCall(1, () => ({ isDirectory: () => false })));
414
+ }),
415
+ "lib.read.root-owner": () => readFileCase((context, patch) => {
416
+ patch(fs, "lstatSync", patchLstatCall(1, (stat) => ({ uid: stat.uid + 1 })));
417
+ }),
418
+ "lib.read.root-symlink": () => readFileCase((context) => {
419
+ const alias = `${context.args.root}.alias`;
420
+ fs.symlinkSync(context.args.root, alias, "dir");
421
+ context.cleanup.push(alias);
422
+ context.args.root = alias;
423
+ context.args.target = path.join(alias, "a.json");
424
+ }),
425
+ "lib.read.lexical-alias": () => readFileCase((context) => {
426
+ const alias = `${context.args.root}.alias`;
427
+ fs.symlinkSync(context.args.root, alias, "dir");
428
+ context.cleanup.push(alias);
429
+ context.args.target = path.join(alias, "a.json");
430
+ }),
431
+ "lib.read.file-symlink": () => readFileCase((context) => {
432
+ const link = path.join(context.args.root, "link.json");
433
+ fs.symlinkSync(context.args.target, link, "file");
434
+ context.args.target = link;
435
+ }),
436
+ "lib.read.file-regular": () => readFileCase((context, patch) => {
437
+ patch(fs, "lstatSync", patchLstatCall(2, () => ({ isFile: () => false, isSymbolicLink: () => false })));
438
+ }),
439
+ "lib.read.file-owner": () => readFileCase((context, patch) => {
440
+ patch(fs, "lstatSync", patchLstatCall(2, (stat) => ({ uid: stat.uid + 1 })));
441
+ }),
442
+ "lib.read.file-size": () => readFileCase((context) => { context.args.options.maxBytes = 0; }),
443
+ "lib.read.realpath-alias": () => readFileCase((context) => {
444
+ const outside = fs.mkdtempSync(path.join(os.tmpdir(), "n0-read-outside."));
445
+ fs.writeFileSync(path.join(outside, "a.json"), "{}\n");
446
+ fs.symlinkSync(outside, path.join(context.args.root, "escape"), "dir");
447
+ context.cleanup.push(outside);
448
+ context.args.target = path.join(context.args.root, "escape", "a.json");
449
+ }),
450
+ "lib.read.before-dev": () => readFileCase((context, patch) => { patch(fs, "fstatSync", patchFstat("both", "dev")); }),
451
+ "lib.read.before-ino": () => readFileCase((context, patch) => { patch(fs, "fstatSync", patchFstat("both", "ino")); }),
452
+ "lib.read.before-size": () => readFileCase((context, patch) => { patch(fs, "fstatSync", patchFstat("both", "size")); }),
453
+ "lib.read.before-mtime": () => readFileCase((context, patch) => { patch(fs, "fstatSync", patchFstat("both", "mtimeMs")); }),
454
+ "lib.read.after-dev": () => readFileCase((context, patch) => { patch(fs, "fstatSync", patchFstat("after", "dev")); }),
455
+ "lib.read.after-ino": () => readFileCase((context, patch) => { patch(fs, "fstatSync", patchFstat("after", "ino")); }),
456
+ "lib.read.after-size": () => readFileCase((context, patch) => { patch(fs, "fstatSync", patchFstat("after", "size")); }),
457
+ "lib.read.after-mtime": () => readFileCase((context, patch) => { patch(fs, "fstatSync", patchFstat("after", "mtimeMs")); }),
458
+ "lib.json.invalid": () => libCase("parseJsonBuffer", [Buffer.from("{")]),
459
+ "parser.rollout.type-buffer": async () => {
460
+ const { fixture } = await parserModules();
461
+ const input = Buffer.from(fixture.fixtureRollout());
462
+ input.split = (...args) => input.toString("utf8").split(...args);
463
+ return parseRolloutCase(input);
464
+ },
465
+ "parser.rollout.too-large": async () => {
466
+ const { lib } = await parserModules();
467
+ return parseRolloutCase(`${JSON.stringify({ type: "session_meta", payload: { id: "x".repeat(lib.MAX_JSON_BYTES) } })}\n`);
468
+ },
469
+ "parser.rollout.too-many": async () => {
470
+ const { lib } = await parserModules();
471
+ const lines = [JSON.stringify({ type: "session_meta", payload: { id: "session" } })];
472
+ while (lines.length <= lib.MAX_RECORDS) lines.push("{}");
473
+ return parseRolloutCase(`${lines.join("\n")}\n`);
474
+ },
475
+ "parser.rollout.invalid-json-late": () => parseRolloutCase(`${JSON.stringify({ type: "session_meta", payload: { id: "session" } })}\n{\n`),
476
+ "parser.rollout.empty": () => parseRolloutCase(""),
477
+ "parser.rollout.session-type": () => parseRolloutCase(`${JSON.stringify({ type: "wrong", payload: { id: "session" } })}\n`),
478
+ "parser.rollout.session-id-type": () => parseRolloutCase(`${JSON.stringify({ type: "session_meta", payload: { id: 7 } })}\n`),
479
+ "parser.rollout.session-id-empty": () => parseRolloutCase(`${JSON.stringify({ type: "session_meta", payload: { id: "" } })}\n`),
480
+ "parser.nonce.invalid": () => nonceCase((args) => {
481
+ args.nonce = "g".repeat(32);
482
+ args.records[1].payload.content[0].text = "a".repeat(32);
483
+ }),
484
+ "parser.nonce.total": () => nonceCase((args) => { args.records[1].payload.content[0].text = `${args.nonce} ${args.nonce}`; }),
485
+ "parser.nonce.multiple-turns": () => nonceCase((args) => {
486
+ const second = structuredClone(args.records[1]);
487
+ second.payload.content[0].text = `SECOND USER TURN ${args.nonce}`;
488
+ second.payload.internal_chat_message_metadata_passthrough.turn_id = "second-turn";
489
+ args.records.push(second);
490
+ }),
491
+ "parser.nonce.turn": () => nonceCase((args) => { args.options.expectedTurnId = "wrong-turn"; }),
492
+ "parser.nonce.task": () => nonceCase((args) => { args.options.expectedTaskId = "wrong-task"; }),
493
+ "parser.nonce.run": () => nonceCase((args) => { args.options.expectedRunId = "wrong-run"; }),
494
+ "parser.marker.nonce-invalid": () => markerCase((args, { fixture }) => {
495
+ args.markerNonce = "g".repeat(32);
496
+ args.candidates[0].text = fixture.fixtureRollout({ nonce: "a".repeat(32) });
497
+ }),
498
+ "parser.marker.rollout-type": () => markerCase((args) => { args.candidates[0].text = Buffer.from(args.candidates[0].text); }),
499
+ "parser.marker.span": () => markerCase((args, { fixture }) => { args.candidates[0].text = fixture.fixtureRollout({ userText: "marker absent" }); }),
500
+ "parser.marker.unexpected-error": () => markerCase((args, { fixture }) => {
501
+ args.candidates = [{ path: "bad.jsonl", text: "{\n" }, { path: "good.jsonl", text: fixture.fixtureRollout({ nonce: fixture.FIXED.markerNonce }) }];
502
+ }),
503
+ "parser.marker.zero": () => markerCase((args) => { args.candidates = []; }),
504
+ "parser.marker.multiple": () => markerCase((args, { fixture }) => {
505
+ args.candidates.push({ path: "b.jsonl", text: fixture.fixtureRollout({ nonce: fixture.FIXED.markerNonce }) });
506
+ }),
507
+ "parser.scheduled.rollout-type": () => scheduledCase((args) => { args.rolloutText = Buffer.from(args.rolloutText); }),
508
+ "parser.scheduled.run-record-object": () => scheduledCase((args) => { args.runRecord = JSON.stringify(args.runRecord); }),
509
+ "parser.scheduled.chat": () => scheduledCase((args) => { args.expected.sessionId = "wrong-session"; }),
510
+ "parser.scheduled.run-record-type": () => scheduledCase((args) => { args.runRecord.taskId = 7; }),
511
+ "parser.scheduled.task": () => scheduledCase((args) => { args.runRecord.taskId = "wrong-task"; }),
512
+ "parser.scheduled.run": () => scheduledCase((args) => { args.runRecord.runId = "wrong-run"; }),
513
+ "parser.scheduled.turn": () => scheduledCase((args) => { args.runRecord.turnId = "wrong-turn"; }),
514
+ "parser.scheduled.nonce": () => scheduledCase((args, { fixture }) => { args.rolloutText = fixture.fixtureRollout({ userText: "nonce absent", environment: args.expected.environment }); }),
515
+ "parser.scheduled.context-missing": () => scheduledCase((args) => {
516
+ const records = args.rolloutText.trimEnd().split("\n").map((line) => JSON.parse(line)).filter((record) => record.type !== "turn_context");
517
+ args.rolloutText = `${records.map(JSON.stringify).join("\n")}\n`;
518
+ }),
519
+ "parser.scheduled.context-duplicate": () => scheduledCase((args, { fixture }) => {
520
+ args.rolloutText = fixture.fixtureRollout({ environment: args.expected.environment, extraRecords: [{ type: "turn_context", payload: { turn_id: args.expected.turnId, ...args.expected.environment } }] });
521
+ }),
522
+ "parser.scheduled.environment": () => scheduledCase((args) => { args.expected.environment.model = "wrong-model"; }),
523
+ "parser.scheduled.steer-method": () => scheduledCase((args, { fixture }) => {
524
+ args.rolloutText = fixture.fixtureRollout({ environment: args.expected.environment, extraRecords: [{ type: "event_msg", payload: { method: "turn/steer" } }] });
525
+ }),
526
+ "parser.scheduled.steer-type-underscore": () => scheduledCase((args, { fixture }) => {
527
+ args.rolloutText = fixture.fixtureRollout({ environment: args.expected.environment, extraRecords: [{ type: "turn_steered" }] });
528
+ }),
529
+ "parser.scheduled.steer-type-slash": () => scheduledCase((args, { fixture }) => {
530
+ args.rolloutText = fixture.fixtureRollout({ environment: args.expected.environment, extraRecords: [{ type: "turn/steer" }] });
531
+ }),
532
+ "parser.scheduled.steer-nested": () => scheduledCase((args, { fixture }) => {
533
+ args.rolloutText = fixture.fixtureRollout({ environment: args.expected.environment, extraRecords: [{ type: "event_msg", payload: { nested: { method: "turn/steer" } } }] });
534
+ }),
535
+ "parser.pointer.id": () => pointerCase((args) => { args.expectedId = 1.5; }),
536
+ "parser.pointer.raw-type": () => pointerCase((args) => { args.raw = new String(args.raw); }),
537
+ "parser.pointer.byte-limit": () => pointerCase((args, { fixture, lib }) => {
538
+ args.raw = fixture.fixtureKijitoGet({ body: "é".repeat(Math.floor(lib.MAX_JSON_BYTES * 0.6)) });
539
+ }),
540
+ "parser.pointer.unclosed": () => pointerCase((args) => { args.raw = args.raw.replace(/⟦\/UNTRUSTED n=a1b2c3⟧$/, ""); }),
541
+ "parser.pointer.multiple": () => pointerCase((args, { fixture }) => {
542
+ const second = fixture.fixtureKijitoGet({ body: "SECOND", outerNonce: "face999" }).split("\n").slice(6).join("\n");
543
+ args.raw = `${args.raw}\n${second}`;
544
+ }),
545
+ "parser.pointer.trailing": () => pointerCase((args) => { args.raw = `${args.raw}\nTRAILING`; }),
546
+ "parser.pointer.header": () => pointerCase((args) => { args.raw = args.raw.replace(/^Memory \[21813\]/, "Memory [999]"); }),
547
+ "parser.mail.row": () => mailCase((args) => { args.options.rowId = 1.5; }),
548
+ "parser.mail.nonce": () => mailCase((args, { fixture }) => {
549
+ args.options.bodyNonce = "g".repeat(32);
550
+ args.records.at(-1).payload.result.content[0].text = args.records.at(-1).payload.result.content[0].text.replace(fixture.FIXED.bodyNonce, "a".repeat(32));
551
+ }),
552
+ "parser.mail.zero": () => mailCase((args) => { args.records = args.records.filter((record) => record.payload?.invocation?.tool !== "kijito_hive_inbox"); }),
553
+ "parser.secret.leak": () => secretCase(),
554
+ "snapshot.read.before-dev": () => snapshotCase((context, patch) => { patch(fs, "fstatSync", patchFstat("both", "dev")); }),
555
+ "snapshot.read.before-ino": () => snapshotCase((context, patch) => { patch(fs, "fstatSync", patchFstat("both", "ino")); }),
556
+ "snapshot.read.before-size": () => snapshotCase((context, patch) => { patch(fs, "fstatSync", patchFstat("both", "size")); }),
557
+ "snapshot.read.before-mtime": () => snapshotCase((context, patch) => { patch(fs, "fstatSync", patchFstat("both", "mtimeMs")); }),
558
+ "snapshot.read.after-dev": () => snapshotCase((context, patch) => { patch(fs, "fstatSync", patchFstat("after", "dev")); }),
559
+ "snapshot.read.after-ino": () => snapshotCase((context, patch) => { patch(fs, "fstatSync", patchFstat("after", "ino")); }),
560
+ "snapshot.read.after-size": () => snapshotCase((context, patch) => { patch(fs, "fstatSync", patchFstat("after", "size")); }),
561
+ "snapshot.read.after-mtime": () => snapshotCase((context, patch) => { patch(fs, "fstatSync", patchFstat("after", "mtimeMs")); }),
562
+ "snapshot.root.directory": () => snapshotCase((context, patch) => { patch(fs, "lstatSync", patchLstatCall(1, () => ({ isDirectory: () => false }))); }),
563
+ "snapshot.root.owner": () => snapshotCase((context, patch) => { patch(fs, "lstatSync", patchLstatCall(1, (stat) => ({ uid: stat.uid + 1 }))); }),
564
+ "snapshot.root.symlink": () => snapshotCase((context) => {
565
+ const alias = `${context.args.root}.alias`;
566
+ fs.symlinkSync(context.args.root, alias, "dir");
567
+ context.cleanup.push(alias);
568
+ context.args.root = alias;
569
+ }),
570
+ "snapshot.entry.symlink": () => snapshotCase((context) => { fs.symlinkSync(path.join(context.args.root, "a.jsonl"), path.join(context.args.root, "link.jsonl"), "file"); }),
571
+ "snapshot.entry.realpath": () => snapshotCase((context) => {
572
+ const outside = fs.mkdtempSync(path.join(os.tmpdir(), "n0-snapshot-outside."));
573
+ fs.writeFileSync(path.join(outside, "outside.jsonl"), `${JSON.stringify({ type: "session_meta", payload: { id: "outside" } })}\n`);
574
+ fs.symlinkSync(path.join(outside, "outside.jsonl"), path.join(context.args.root, "escape.jsonl"), "file");
575
+ context.cleanup.push(outside);
576
+ }),
577
+ "snapshot.entry.realpath-regular": () => snapshotCase((context, patch) => {
578
+ const outside = fs.mkdtempSync(path.join(os.tmpdir(), "n0-snapshot-realpath-outside."));
579
+ const escaped = path.join(outside, "outside.jsonl");
580
+ fs.writeFileSync(escaped, `${JSON.stringify({ type: "session_meta", payload: { id: "outside" } })}\n`);
581
+ context.cleanup.push(outside);
582
+ patch(fs, "realpathSync", (original) => {
583
+ return function patchedRealpath(...args) {
584
+ return path.basename(String(args[0])) === "a.jsonl"
585
+ ? escaped
586
+ : original.apply(this, args);
587
+ };
588
+ });
589
+ }),
590
+ "snapshot.entry.owner": () => snapshotCase((context, patch) => { patch(fs, "lstatSync", patchLstatCall(2, (stat) => ({ uid: stat.uid + 1 }))); }),
591
+ "snapshot.entry.nonregular": () => snapshotCase((context, patch) => {
592
+ patch(fs, "lstatSync", patchLstatCall(2, () => ({ isDirectory: () => false, isFile: () => false })));
593
+ }),
594
+ "snapshot.entry.child-walk": () => snapshotCase((context) => {
595
+ const child = path.join(context.args.root, "child");
596
+ fs.mkdirSync(child);
597
+ fs.symlinkSync(path.join(context.args.root, "a.jsonl"), path.join(child, "link.jsonl"), "file");
598
+ }),
599
+ "snapshot.entry.file-limit": () => snapshotCase((context) => { context.args.options.maxFiles = 0; }),
600
+ "snapshot.entry.byte-limit": () => snapshotCase((context) => { context.args.options.maxTotalBytes = 0; }),
601
+ "snapshot.root.walk": () => snapshotCase((context) => { fs.symlinkSync(path.join(context.args.root, "a.jsonl"), path.join(context.args.root, "link.jsonl"), "file"); }),
602
+ "snapshot.diff.before-schema": () => snapshotDiffCase((pair) => { pair.before.schema = "WRONG"; }),
603
+ "snapshot.diff.after-schema": () => snapshotDiffCase((pair) => { pair.after.schema = "WRONG"; }),
604
+ "snapshot.diff.root": () => snapshotDiffCase((pair) => { pair.after.root = "/other"; }),
605
+ "snapshot.diff.removed": () => snapshotDiffCase((pair) => { pair.after.entries = []; }),
606
+ "snapshot.diff.dev": () => snapshotDiffCase((pair) => { pair.after.entries[0].dev += 1; }),
607
+ "snapshot.diff.ino": () => snapshotDiffCase((pair) => { pair.after.entries[0].ino += 1; }),
608
+ "snapshot.diff.truncated": () => snapshotDiffCase((pair) => { pair.after.entries[0].size -= 1; }),
609
+ "snapshot.stable.changed": () => snapshotDiffCase((pair) => { pair.after.entries[0].size += 1; }, true),
610
+ "snapshot.stable.error": () => snapshotDiffCase((pair) => { pair.before.schema = "WRONG"; }, true),
611
+ "prompt.unknown": () => promptCase((args) => { args.caseName = "UNKNOWN"; }),
612
+ "prompt.nonce": () => promptCase((args) => { args.specimen.cases[args.caseName].nonce = "g".repeat(32); }),
613
+ "prompt.mail-row": () => promptCase((args) => { args.caseName = "N0a-K"; args.specimen.cases[args.caseName].mailRowId = 1.5; }),
614
+ "prompt.digest": () => promptCase((args) => { args.specimen.cases[args.caseName].nonce = "g".repeat(32); }, true),
615
+ "cli.usage.unknown": () => cliCase((context) => { context.argv = ["unknown", "--root", context.root]; }),
616
+ "cli.args.dangling": () => cliCase((context) => { context.argv = ["snapshot", "--root", context.root, "--dangling"]; }),
617
+ "cli.args.key": () => cliCase((context) => { context.argv = ["snapshot", "xxroot", context.root]; }),
618
+ "cli.args.missing-specimen": () => cliCase((context) => { context.argv.splice(3, 2); }),
619
+ "cli.args.missing-evidence": () => cliCase((context) => { context.argv.splice(5, 2); }),
620
+ "cli.args.missing-inputs": () => cliCase((context) => {
621
+ context.argv = ["oracle", "--root", context.root, "--now-ms", String(NOW)];
622
+ }),
623
+ "cli.root.missing": () => cliCase((context) => { context.argv = ["snapshot"]; }),
624
+ "cli.root.relative": () => cliCase((context) => { context.argv = ["snapshot", "--root", "."]; }),
625
+ "cli.snapshot.symlink": () => cliCase((context) => {
626
+ fs.symlinkSync(path.join(context.root, "specimen.json"), path.join(context.root, "link.json"), "file");
627
+ context.argv = ["snapshot", "--root", context.root];
628
+ }),
629
+ "cli.specimen.read": () => cliCase((context) => { context.argv[4] = path.join(context.root, "..", "outside.json"); }),
630
+ "cli.evidence.read": () => cliCase((context) => { context.argv[6] = path.join(context.root, "..", "outside.json"); }),
631
+ "cli.specimen.parse": () => cliCase((context) => {
632
+ fs.writeFileSync(path.join(context.root, "specimen.json"), "{");
633
+ }),
634
+ "cli.evidence.parse": () => cliCase((context) => {
635
+ fs.writeFileSync(path.join(context.root, "evidence.json"), "{");
636
+ }),
637
+ "cli.oracle.red": () => cliCase((context) => {
638
+ context.evidence.probeId = "2".repeat(32);
639
+ fs.writeFileSync(path.join(context.root, "evidence.json"), JSON.stringify(context.evidence));
640
+ }),
641
+ "specimen.build.invalid": () => specimenCase("build"),
642
+ "specimen.build.prompt-nonce": () => specimenCase("build-prompt-nonce"),
643
+ "specimen.mail.nonce": () => specimenCase("mail"),
644
+ "specimen.mail.row": () => specimenCase("cleanup"),
645
+ "oracle.specimen.keys": () => validationNoRebuildCase((specimen) => { specimen.extra = true; }),
646
+ "oracle.specimen.schema": () => validationNoRebuildCase((specimen) => { specimen.schema = "WRONG"; }),
647
+ "oracle.specimen.probe-format": () => validationNoRebuildCase((specimen) => { specimen.probeId = "g".repeat(32); }),
648
+ "oracle.specimen.provenance-object": () => validationNoRebuildCase((specimen) => { specimen.protocol = JSON.stringify(specimen.protocol); }),
649
+ "oracle.specimen.provenance-extra": () => validationNoRebuildCase((specimen) => { specimen.protocol.extra = true; }),
650
+ "oracle.specimen.commit-format": () => validationNoRebuildCase((specimen) => { specimen.protocol.commit = new String(specimen.protocol.commit); }),
651
+ "oracle.specimen.digest-format": () => validationNoRebuildCase((specimen) => { specimen.protocol.digest = new String(specimen.protocol.digest); }),
652
+ "oracle.specimen.protocol-commit": () => validationCase((specimen) => { specimen.protocol.commit = "f".repeat(40); }),
653
+ "oracle.specimen.protocol-digest": () => validationCase((specimen) => { specimen.protocol.digest = "f".repeat(64); }),
654
+ "oracle.specimen.harness-digest": () => validationCase((specimen) => { specimen.harness.digest = "f".repeat(64); }),
655
+ "oracle.specimen.paths-object": () => validationNoRebuildCase((specimen) => { specimen.paths = JSON.stringify(specimen.paths); }),
656
+ "oracle.specimen.paths-extra": () => validationNoRebuildCase((specimen) => { specimen.paths.extra = true; }),
657
+ "oracle.specimen.path-type": () => validationNoRebuildCase((specimen) => {
658
+ const original = specimen.paths.ordinaryAuth;
659
+ specimen.paths.ordinaryAuth = { toString: () => original };
660
+ }),
661
+ "oracle.specimen.path-relative": () => validationNoRebuildCase((specimen) => { specimen.paths.ordinaryAuth = "relative-auth"; }),
662
+ "oracle.specimen.project-equal-parent": () => validationCase((specimen) => {
663
+ specimen.paths.project = specimen.paths.specimenParent;
664
+ specimen.target.path = specimen.paths.project;
665
+ Object.assign(specimen.environment, { cwd: specimen.paths.project, project: specimen.paths.project, worktree: specimen.paths.project, workspace_roots: [specimen.paths.project] });
666
+ specimen.environment.permission_profile.file_system.writable_roots = [specimen.paths.project];
667
+ specimen.canaries["cwd-create"].path = `${specimen.paths.project}/cwd`;
668
+ }),
669
+ "oracle.specimen.project-outside-parent": () => validationCase((specimen) => {
670
+ specimen.paths.project = "/Users/jason/Outside/project";
671
+ specimen.target.path = specimen.paths.project;
672
+ Object.assign(specimen.environment, { cwd: specimen.paths.project, project: specimen.paths.project, worktree: specimen.paths.project, workspace_roots: [specimen.paths.project] });
673
+ specimen.environment.permission_profile.file_system.writable_roots = [specimen.paths.project];
674
+ specimen.canaries["cwd-create"].path = `${specimen.paths.project}/cwd`;
675
+ }),
676
+ "oracle.specimen.outside-inside-project": () => validationCase((specimen) => {
677
+ specimen.paths.control = `${specimen.paths.project}/control`;
678
+ for (const name of ["control-read", "control-chmod", "control-create"]) specimen.canaries[name].path = `${specimen.paths.control}/${name}`;
679
+ }),
680
+ "oracle.specimen.outside-contains-project": () => validationCase((specimen) => {
681
+ specimen.paths.control = specimen.paths.specimenParent;
682
+ for (const name of ["control-read", "control-chmod", "control-create"]) specimen.canaries[name].path = `${specimen.paths.control}/${name}`;
683
+ }),
684
+ "oracle.specimen.slash-tmp": () => validationCase((specimen) => {
685
+ specimen.paths.slashTmp = "/var/tmp";
686
+ specimen.canaries["slash-tmp-create"].path = "/var/tmp/canary";
687
+ }),
688
+ "oracle.specimen.target-object": () => validationNoRebuildCase((specimen) => { specimen.target = JSON.stringify(specimen.target); }),
689
+ "oracle.specimen.target-extra": () => validationNoRebuildCase((specimen) => { specimen.target.extra = true; }),
690
+ "oracle.specimen.target-path": () => validationCase((specimen) => { specimen.target.path = `${specimen.paths.project}/wrong`; }),
691
+ "oracle.specimen.target-device": () => validationNoRebuildCase((specimen) => { specimen.target.device = new Number(specimen.target.device); }),
692
+ "oracle.specimen.target-inode": () => validationNoRebuildCase((specimen) => { specimen.target.inode = new Number(specimen.target.inode); }),
693
+ "oracle.specimen.target-commit-format": () => validationNoRebuildCase((specimen) => { specimen.target.gitHead = new String(specimen.target.gitHead); }),
694
+ "oracle.specimen.target-head": () => validationCase((specimen) => { specimen.target.gitHead = "f".repeat(40); }),
695
+ "oracle.specimen.permission-object": () => validationNoRebuildCase((specimen) => { specimen.permission = JSON.stringify(specimen.permission); }),
696
+ "oracle.specimen.permission-extra": () => validationNoRebuildCase((specimen) => { specimen.permission.extra = true; }),
697
+ "oracle.specimen.permission-profile": () => validationCase((specimen) => {
698
+ specimen.permission.profile = "wrong";
699
+ specimen.environment.sandbox_policy.name = "wrong";
700
+ specimen.environment.permission_profile.name = "wrong";
701
+ }),
702
+ "oracle.specimen.config-type": () => validationNoRebuildCase((specimen) => { specimen.permission.configUtf8 = new String(specimen.permission.configUtf8); }),
703
+ "oracle.specimen.config-digest-type": () => validationNoRebuildCase((specimen) => { specimen.permission.configDigest = new String(specimen.permission.configDigest); }),
704
+ "oracle.specimen.config-reviewed": () => validationCase((specimen, { sha256 }) => {
705
+ specimen.permission.configUtf8 = "changed";
706
+ specimen.permission.configDigest = sha256(Buffer.from("changed"));
707
+ }),
708
+ "oracle.specimen.config-bytes": () => validationCase((specimen) => { specimen.permission.configUtf8 = "changed"; }),
709
+ "oracle.specimen.extra-root": () => validationCase((specimen) => { specimen.permission.addedWorkspaceRoots = ["/tmp"]; }),
710
+ "oracle.specimen.filesystem-extra": () => validationNoRebuildCase((specimen) => { specimen.permission.filesystem.extra = true; }),
711
+ "oracle.specimen.tmpdir": () => validationCase((specimen) => { specimen.permission.filesystem[":tmpdir"] = "write"; }),
712
+ "oracle.specimen.slash-tmp-deny": () => validationCase((specimen) => { specimen.permission.filesystem[":slash_tmp"] = "write"; }),
713
+ "oracle.specimen.legacy": () => validationCase((specimen) => { specimen.permission.legacySandboxSettingsPresent = true; }),
714
+ "oracle.specimen.environment-call": () => validationCase((specimen) => { specimen.environment.approval_policy = "ask"; }),
715
+ "oracle.specimen.canaries-object": () => validationNoRebuildCase((specimen) => { specimen.canaries = JSON.stringify(specimen.canaries); }),
716
+ "oracle.specimen.canary-set": () => validationCase((specimen) => { specimen.canaries.extra = { ...specimen.canaries["control-read"] }; }),
717
+ "oracle.specimen.canary-locations": () => validationCase((specimen) => { specimen.canaries["control-read"].path = `${specimen.paths.project}/wrong`; }),
718
+ "oracle.specimen.cases-object": () => validationNoRebuildCase((specimen) => { specimen.cases = JSON.stringify(specimen.cases); }),
719
+ "oracle.specimen.case-set": () => validationCase((specimen) => { specimen.cases.extra = { ...specimen.cases["N0a-M"] }; }),
720
+ "oracle.specimen.case-object": () => validationNoRebuildCase((specimen) => { specimen.cases["N0a-M"] = JSON.stringify(specimen.cases["N0a-M"]); }),
721
+ "oracle.specimen.case-extra": () => validationNoRebuildCase((specimen) => { specimen.cases["N0a-M"].extra = true; }),
722
+ "oracle.specimen.case-nonce-format": () => validationNoRebuildCase((specimen) => { specimen.cases["N0a-M"].nonce = new String(specimen.cases["N0a-M"].nonce); }),
723
+ "oracle.specimen.case-nonce-reuse": () => validationCase((specimen) => { specimen.cases["N0a-W"].nonce = specimen.cases["N0a-M"].nonce; }),
724
+ "oracle.specimen.case-policy": () => validationCase((specimen) => { specimen.cases["N0a-M"].scheduled = true; }),
725
+ "oracle.specimen.case-boundary-format": () => validationCase((specimen) => { specimen.cases["N0a-M"].intendedBoundary = "invalid"; }),
726
+ "oracle.specimen.case-boundary-order": () => validationCase((specimen) => { specimen.cases["N0a-W"].intendedBoundary = specimen.cases["N0a-M"].intendedBoundary; }),
727
+ "oracle.specimen.expected-object": () => validationNoRebuildCase((specimen) => { specimen.cases["N0a-M"].expected = JSON.stringify(specimen.cases["N0a-M"].expected); }),
728
+ "oracle.specimen.expected-extra": () => validationNoRebuildCase((specimen) => { specimen.cases["N0a-M"].expected.extra = true; }),
729
+ "oracle.specimen.chat-type": () => validationNoRebuildCase((specimen) => { specimen.cases["N0a-M"].expected.chatSessionId = new String(specimen.cases["N0a-M"].expected.chatSessionId); }),
730
+ "oracle.specimen.expected-key-type": () => validationNoRebuildCase((specimen) => { specimen.cases["N0a-W"].expected.taskId = new String(specimen.cases["N0a-W"].expected.taskId); }),
731
+ "oracle.specimen.expected-reuse": () => validationCase((specimen) => { specimen.cases["N0a-B"].expected.taskId = specimen.cases["N0a-W"].expected.taskId; }),
732
+ "oracle.specimen.expected-nonbinding": () => validationCase((specimen) => { specimen.cases["N0a-M"].expected.taskId = "unexpected"; }),
733
+ "oracle.specimen.case-mail-type": () => validationNoRebuildCase((specimen) => { specimen.cases["N0a-K"].mailRowId = new Number(77); }),
734
+ "oracle.specimen.case-mail-other": () => validationCase((specimen) => { specimen.cases["N0a-M"].mailRowId = 77; }),
735
+ "oracle.specimen.chat-targets": () => validationCase((specimen) => { specimen.cases["N0a-W"].expected.chatSessionId = "other-session"; }),
736
+ "oracle.specimen.prompts-object": () => validationNoRebuildCase((specimen) => { specimen.prompts = JSON.stringify(specimen.prompts); }),
737
+ "oracle.specimen.prompt-set": () => validationNoRebuildCase((specimen) => { specimen.prompts.extra = { ...specimen.prompts["N0a-M"] }; }),
738
+ "oracle.specimen.prompt-object": () => validationNoRebuildCase((specimen) => { specimen.prompts["N0a-M"] = JSON.stringify(specimen.prompts["N0a-M"]); }),
739
+ "oracle.specimen.prompt-extra": () => validationNoRebuildCase((specimen) => { specimen.prompts["N0a-M"].extra = true; }),
740
+ "oracle.specimen.prompt-type": () => validationNoRebuildCase((specimen) => { specimen.prompts["N0a-M"].utf8 = new String(specimen.prompts["N0a-M"].utf8); }),
741
+ "oracle.specimen.prompt-sha-type": () => validationNoRebuildCase((specimen) => { specimen.prompts["N0a-M"].sha256 = new String(specimen.prompts["N0a-M"].sha256); }),
742
+ "oracle.specimen.prompt-digest": () => validationNoRebuildCase((specimen) => { specimen.prompts["N0a-M"].sha256 = "f".repeat(64); }),
743
+ "oracle.specimen.prompt-bytes": () => validationNoRebuildCase((specimen) => {
744
+ specimen.prompts["N0a-M"].utf8 = "changed";
745
+ specimen.prompts["N0a-M"].sha256 = "d67e2e944994496c8d8ec76eed0cf9f09679448d584b532bebf941852a37f5ed";
746
+ }),
747
+ "oracle.specimen.clock-object": () => validationNoRebuildCase((specimen) => { specimen.clock = JSON.stringify(specimen.clock); }),
748
+ "oracle.specimen.clock-extra": () => validationNoRebuildCase((specimen) => { specimen.clock.extra = true; }),
749
+ "oracle.specimen.clock-time": () => validationNoRebuildCase((specimen) => { specimen.clock.intendedMinuteBoundary = "invalid"; }),
750
+ "oracle.specimen.clock-skew": () => validationNoRebuildCase((specimen) => { specimen.clock.maxSkewSeconds = 16; }),
751
+ "oracle.specimen.clock-heartbeat": () => validationNoRebuildCase((specimen) => { specimen.clock.maxHeartbeatAgeSeconds = 136; }),
752
+ "oracle.specimen.rollout-call": () => validationNoRebuildCase((specimen) => { specimen.rollout.root = "relative"; }),
753
+ "oracle.specimen.versions-call": () => validationNoRebuildCase((specimen) => { specimen.versions.codexCli = 7; }),
754
+ "oracle.specimen.created-at": () => validationNoRebuildCase((specimen) => { specimen.createdAt = "invalid"; }),
755
+ "oracle.rollout.object": () => validationNoRebuildCase((specimen) => { specimen.rollout = JSON.stringify(specimen.rollout); }),
756
+ "oracle.rollout.extra": () => validationNoRebuildCase((specimen) => { specimen.rollout.extra = true; }),
757
+ "oracle.rollout.root-type": () => validationNoRebuildCase((specimen) => { specimen.rollout.root = new String(specimen.rollout.root); }),
758
+ "oracle.rollout.root-relative": () => validationNoRebuildCase((specimen) => {
759
+ specimen.rollout.root = "relative";
760
+ specimen.rollout.preActionSnapshot.root = "relative";
761
+ }),
762
+ "oracle.rollout.snapshot-object": () => validationNoRebuildCase((specimen) => { specimen.rollout.preActionSnapshot = JSON.stringify(specimen.rollout.preActionSnapshot); }),
763
+ "oracle.rollout.snapshot-extra": () => validationNoRebuildCase((specimen) => { specimen.rollout.preActionSnapshot.extra = true; }),
764
+ "oracle.rollout.snapshot-schema": () => validationNoRebuildCase((specimen) => { specimen.rollout.preActionSnapshot.schema = "WRONG"; }),
765
+ "oracle.rollout.snapshot-root": () => validationNoRebuildCase((specimen) => { specimen.rollout.preActionSnapshot.root = "/wrong"; }),
766
+ "oracle.rollout.total-type": () => validationNoRebuildCase((specimen) => { specimen.rollout.preActionSnapshot.totalBytes = new Number(0); }),
767
+ "oracle.rollout.entries-arraylike": () => validationNoRebuildCase((specimen) => {
768
+ specimen.rollout.preActionSnapshot.entries = { length: 0, entries: Array.prototype.entries };
769
+ }),
770
+ "oracle.rollout.entry-object": () => validationNoRebuildCase((specimen) => {
771
+ const entry = addRolloutEntry(specimen);
772
+ specimen.rollout.preActionSnapshot.entries[0] = JSON.stringify(entry);
773
+ }),
774
+ "oracle.rollout.entry-extra": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).extra = true; }),
775
+ "oracle.rollout.entry-path-type": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).path = new String("session.jsonl"); }),
776
+ "oracle.rollout.entry-path-absolute": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).path = "/session.jsonl"; }),
777
+ "oracle.rollout.entry-path-parent": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).path = ".."; }),
778
+ "oracle.rollout.entry-path-prefix": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).path = `..${path.sep}session.jsonl`; }),
779
+ "oracle.rollout.entry-duplicate": () => validationNoRebuildCase((specimen) => {
780
+ const entry = addRolloutEntry(specimen);
781
+ specimen.rollout.preActionSnapshot.entries.push({ ...entry });
782
+ specimen.rollout.preActionSnapshot.totalBytes *= 2;
783
+ }),
784
+ "oracle.rollout.entry-dev": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).dev = new Number(1); }),
785
+ "oracle.rollout.entry-ino": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).ino = new Number(2); }),
786
+ "oracle.rollout.entry-size": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).size = new Number(10); }),
787
+ "oracle.rollout.entry-mtime-finite": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).mtimeMs = Number.NaN; }),
788
+ "oracle.rollout.entry-mtime-negative": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).mtimeMs = -1; }),
789
+ "oracle.rollout.entry-record-type": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen).firstRecordType = new String("session_meta"); }),
790
+ "oracle.rollout.total-mismatch": () => validationNoRebuildCase((specimen) => { addRolloutEntry(specimen); specimen.rollout.preActionSnapshot.totalBytes = 11; }),
791
+ "oracle.rollout.parser-object": () => validationNoRebuildCase((specimen) => { specimen.rollout.parser = JSON.stringify(specimen.rollout.parser); }),
792
+ "oracle.rollout.parser-extra": () => validationNoRebuildCase((specimen) => { specimen.rollout.parser.extra = true; }),
793
+ "oracle.rollout.parser-version": () => validationNoRebuildCase((specimen) => { specimen.rollout.parser.version = "WRONG"; }),
794
+ "oracle.rollout.parser-digest-type": () => validationNoRebuildCase((specimen) => { specimen.rollout.parser.digest = new String(specimen.rollout.parser.digest); }),
795
+ "oracle.rollout.parser-digest": () => validationNoRebuildCase((specimen) => { specimen.rollout.parser.digest = "f".repeat(64); }),
796
+ "oracle.versions.object": () => validationNoRebuildCase((specimen) => { specimen.versions = JSON.stringify(specimen.versions); }),
797
+ "oracle.versions.extra": () => validationNoRebuildCase((specimen) => { specimen.versions.extra = true; }),
798
+ "oracle.versions.string": () => validationNoRebuildCase((specimen) => { specimen.versions.codexCli = new String(specimen.versions.codexCli); }),
799
+ "oracle.versions.digest": () => validationNoRebuildCase((specimen) => { specimen.versions.codexBinaryDigest = new String(specimen.versions.codexBinaryDigest); }),
800
+ "oracle.canary.extra": () => validationNoRebuildCase((specimen) => { specimen.canaries["control-read"].extra = true; }),
801
+ "oracle.canary.path-type": () => validationNoRebuildCase((specimen) => {
802
+ specimen.canaries["control-read"].path = new String(specimen.canaries["control-read"].path);
803
+ }),
804
+ "oracle.canary.path-relative": () => validationNoRebuildCase((specimen) => {
805
+ specimen.canaries["control-read"].path = "relative-control-read";
806
+ }),
807
+ "oracle.canary.value-null": () => validationNoRebuildCase((specimen) => {
808
+ specimen.canaries["control-read"] = null;
809
+ }),
810
+ "oracle.canary.value-primitive": () => validationNoRebuildCase((specimen) => {
811
+ specimen.canaries["control-read"] = "invalid-canary";
812
+ }),
813
+ "oracle.canary.nonce-type": () => validationNoRebuildCase((specimen) => {
814
+ specimen.canaries["control-read"].nonce = new String(specimen.canaries["control-read"].nonce);
815
+ }),
816
+ "oracle.canary.nonce-format": () => validationCase((specimen) => { specimen.canaries["control-read"].nonce = "g".repeat(32); }),
817
+ "oracle.environment.object": () => validationNoRebuildCase((specimen) => { specimen.environment = JSON.stringify(specimen.environment); }),
818
+ "oracle.environment.extra": () => validationNoRebuildCase((specimen) => { specimen.environment.extra = true; }),
819
+ "oracle.environment.cwd": () => validationCase((specimen) => { specimen.environment.cwd = "/wrong"; }),
820
+ "oracle.environment.project": () => validationCase((specimen) => { specimen.environment.project = "/wrong"; }),
821
+ "oracle.environment.worktree": () => validationCase((specimen) => { specimen.environment.worktree = "/wrong"; }),
822
+ "oracle.environment.roots": () => validationCase((specimen) => { specimen.environment.workspace_roots = ["/wrong"]; }),
823
+ "oracle.environment.model": () => validationNoRebuildCase((specimen) => { specimen.environment.model = new String(specimen.environment.model); }),
824
+ "oracle.environment.reasoning": () => validationNoRebuildCase((specimen) => { specimen.environment.reasoning = new String(specimen.environment.reasoning); }),
825
+ "oracle.environment.approval": () => validationCase((specimen) => { specimen.environment.approval_policy = "ask"; }),
826
+ "oracle.environment.sandbox-extra": () => validationNoRebuildCase((specimen) => { specimen.environment.sandbox_policy.extra = true; }),
827
+ "oracle.environment.sandbox-type": () => validationCase((specimen) => { specimen.environment.sandbox_policy.type = "wrong"; }),
828
+ "oracle.environment.sandbox-name": () => validationCase((specimen) => { specimen.environment.sandbox_policy.name = "wrong"; }),
829
+ "oracle.environment.profile-extra": () => validationNoRebuildCase((specimen) => { specimen.environment.permission_profile.extra = true; }),
830
+ "oracle.environment.filesystem-extra": () => validationNoRebuildCase((specimen) => { specimen.environment.permission_profile.file_system.extra = true; }),
831
+ "oracle.environment.profile-name": () => validationCase((specimen) => { specimen.environment.permission_profile.name = "wrong"; }),
832
+ "oracle.environment.writable": () => validationCase((specimen) => { specimen.environment.permission_profile.file_system.writable_roots = ["/wrong"]; }),
833
+ "oracle.environment.denied": () => validationCase((specimen) => { specimen.environment.permission_profile.file_system.denied = []; }),
834
+ "oracle.environment.network-extra": () => validationNoRebuildCase((specimen) => { specimen.environment.network.extra = true; }),
835
+ "oracle.environment.network-default": () => validationCase((specimen) => { specimen.environment.network.default = "allow"; }),
836
+ "oracle.environment.network-exceptions": () => validationCase((specimen) => { specimen.environment.network.exceptions = {}; }),
837
+ "oracle.permission.specimen": () => permissionCase(({ specimen }) => { specimen.target.clean = false; }),
838
+ "oracle.permission.object": () => permissionCase((context) => { context.evidence = JSON.stringify(context.evidence); }),
839
+ "oracle.permission.extra": () => permissionCase(({ evidence }) => { evidence.extra = true; }),
840
+ "oracle.permission.profile": () => permissionCase(({ evidence }) => { evidence.effectiveProfile = "wrong"; }),
841
+ "oracle.permission.roots": () => permissionCase(({ evidence }) => { evidence.writableRoots = ["/wrong"]; }),
842
+ "oracle.permission.legacy": () => permissionCase(({ evidence }) => { evidence.legacySandboxSettingsPresent = true; }),
843
+ "oracle.permission.results-object": () => permissionCase(({ evidence }) => { evidence.canaryResults = JSON.stringify(evidence.canaryResults); }),
844
+ "oracle.permission.result-set": () => permissionCase(({ evidence }) => { evidence.canaryResults.extra = { path: "/extra", succeeded: false }; }),
845
+ "oracle.permission.result-missing": () => permissionCase(({ evidence }) => { evidence.canaryResults["control-read"] = undefined; }),
846
+ "oracle.permission.result-object": () => permissionCase(({ evidence }) => { evidence.canaryResults["control-read"] = JSON.stringify(evidence.canaryResults["control-read"]); }),
847
+ "oracle.permission.result-extra": () => permissionCase(({ evidence }) => { evidence.canaryResults["control-read"].extra = true; }),
848
+ "oracle.permission.result-verdict": () => permissionCase(({ evidence }) => { evidence.canaryResults["control-read"].succeeded = true; }),
849
+ "oracle.permission.result-path": () => permissionCase(({ evidence }) => { evidence.canaryResults["control-read"].path = "/wrong"; }),
850
+ "oracle.case.object": () => oracleCase(({ evidence }) => { evidence.cases = JSON.stringify(evidence.cases); }),
851
+ "oracle.case.set": () => oracleCase(({ evidence }) => { evidence.cases.extra = structuredClone(evidence.cases["N0a-M"]); }),
852
+ "oracle.case.result-extra": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].extra = true; }),
853
+ "oracle.case.nonce": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].nonce = "f".repeat(32); }),
854
+ "oracle.case.prompt": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].promptDigest = "f".repeat(64); }),
855
+ "oracle.case.expected": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].expected.chatSessionId = "wrong"; }),
856
+ "oracle.case.status": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].status = "INVALID"; }),
857
+ "oracle.case.status-null": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].status = null; }),
858
+ "oracle.case.time-invalid": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].terminalAt = "invalid"; }),
859
+ "oracle.case.time-order": () => oracleCase(({ evidence }) => {
860
+ evidence.cases["N0a-M"].terminalAt = evidence.cases["N0a-W"].terminalAt;
861
+ }),
862
+ "oracle.case.time-boundary": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].terminalAt = "2026-07-30T22:09:59.000Z"; }),
863
+ "oracle.case.time-future": () => oracleCase(({ evidence }) => { evidence.cases["N0b-F"].terminalAt = new Date(NOW + 1).toISOString(); }),
864
+ "oracle.case.run-binding-type": () => oracleCase(({ evidence }) => { evidence.cases["N0a-W"].runBindingVerified = "invalid"; }),
865
+ "oracle.case.run-binding": () => oracleCase(({ evidence }) => { evidence.cases["N0a-W"].runBindingVerified = false; }),
866
+ "oracle.case.run-binding-unexpected": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].runBindingVerified = false; }),
867
+ "oracle.case.receipt-binding-type": () => oracleCase(({ evidence }) => { evidence.cases["N0a-W"].receiptVerified = "invalid"; }),
868
+ "oracle.case.receipt-binding": () => oracleCase(({ evidence }) => { evidence.cases["N0a-W"].receiptVerified = false; }),
869
+ "oracle.case.receipt-binding-unexpected": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].receiptVerified = false; }),
870
+ "oracle.case.red": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].status = "RED"; }),
871
+ "oracle.case.blocked": () => oracleCase(({ evidence }) => { evidence.cases["N0a-M"].status = "BLOCKED"; }),
872
+ "oracle.evidence.extra": () => oracleCase(({ evidence }) => { evidence.extra = true; }),
873
+ "oracle.evidence.schema": () => oracleCase(({ evidence }) => { evidence.schema = "WRONG"; }),
874
+ "oracle.evidence.probe": () => oracleCase(({ evidence }) => { evidence.probeId = "f".repeat(32); }),
875
+ "oracle.evidence.protocol": () => oracleCase(({ evidence }) => { evidence.protocolDigest = "f".repeat(64); }),
876
+ "oracle.evidence.harness": () => oracleCase(({ evidence }) => { evidence.harnessDigest = "f".repeat(64); }),
877
+ "oracle.evidence.journal": () => oracleCase(({ evidence }) => { evidence.journalReachable = false; }),
878
+ "oracle.evidence.signer-armed": () => oracleCase(({ evidence }) => { evidence.signerArmed = false; }),
879
+ "oracle.evidence.signer-binding": () => oracleCase(({ evidence }) => { evidence.signerBindingValid = false; }),
880
+ "oracle.evidence.scheduled": () => oracleCase(({ evidence }) => { evidence.scheduledState = "paused"; }),
881
+ "oracle.evidence.now-finite": () => oracleCase((context) => { context.nowMs = Number.NaN; }),
882
+ "oracle.evidence.server-finite": () => oracleCase(({ evidence }) => { evidence.serverNowMs = Number.NaN; }),
883
+ "oracle.evidence.clock-skew": () => oracleCase(({ evidence }) => {
884
+ evidence.serverNowMs = NOW + 16_001;
885
+ evidence.meta.utcTime = new Date(evidence.serverNowMs).toISOString();
886
+ evidence.heartbeatServerMs = evidence.serverNowMs - 30_000;
887
+ }),
888
+ "oracle.evidence.utc-time": () => oracleCase(({ evidence }) => { evidence.meta.utcTime = new Date(NOW + 16_001).toISOString(); }),
889
+ "oracle.evidence.host-time": () => oracleCase(({ evidence }) => { evidence.meta.hostTime = new Date(NOW + 16_001).toISOString(); }),
890
+ "oracle.evidence.heartbeat-finite": () => oracleCase(({ evidence }) => { evidence.heartbeatServerMs = Number.NaN; }),
891
+ "oracle.evidence.heartbeat-stale": () => oracleCase(({ evidence }) => { evidence.heartbeatServerMs = evidence.serverNowMs - 135_001; }),
892
+ "oracle.evidence.heartbeat-future": () => oracleCase(({ evidence }) => { evidence.heartbeatServerMs = evidence.serverNowMs + 1; }),
893
+ "oracle.evidence.permission": () => oracleCase(({ evidence }) => { evidence.permission.effectiveProfile = "wrong"; }),
894
+ "oracle.evidence.integrity-call": () => oracleCase(({ evidence }) => { evidence.integrity.controlPreexisting.postDigest = "f".repeat(64); }),
895
+ "oracle.pointer.extra": () => oracleCase(({ evidence }) => { evidence.pointer.extra = true; }),
896
+ "oracle.pointer.id-type": () => oracleCase(({ evidence }) => { evidence.pointer.pointerId = new Number(evidence.pointer.pointerId); }),
897
+ "oracle.pointer.digest-type": () => oracleCase(({ evidence }) => { evidence.pointer.preDigest = new String(evidence.pointer.preDigest); }),
898
+ "oracle.pointer.id": () => oracleCase(({ evidence }) => { evidence.pointer.runPointerId += 1; }),
899
+ "oracle.pointer.post": () => oracleCase(({ evidence }) => { evidence.pointer.postDigest = "f".repeat(64); }),
900
+ "oracle.pointer.run": () => oracleCase(({ evidence }) => { evidence.pointer.runDigest = "f".repeat(64); }),
901
+ "oracle.pointer.matched": () => oracleCase(({ evidence }) => { evidence.pointer.runMatchedWithheldPair = false; }),
902
+ "oracle.mail.extra": () => oracleCase(({ evidence }) => { evidence.mail.extra = true; }),
903
+ "oracle.mail.row-type": () => oracleCase(({ evidence }) => { evidence.mail.rowId = new Number(evidence.mail.rowId); }),
904
+ "oracle.mail.digest-type": () => oracleCase(({ evidence }) => { evidence.mail.withheldBodyDigest = new String(evidence.mail.withheldBodyDigest); }),
905
+ "oracle.mail.read-type": () => oracleCase(({ evidence }) => { evidence.mail.fixtureAlreadyRead = "false"; }),
906
+ "oracle.mail.absent-type": () => oracleCase(({ evidence }) => { evidence.mail.fixtureAbsent = "false"; }),
907
+ "oracle.mail.read-blocked": () => oracleCase(({ evidence }) => { evidence.mail.fixtureAlreadyRead = true; }),
908
+ "oracle.mail.absent-blocked": () => oracleCase(({ evidence }) => { evidence.mail.fixtureAbsent = true; }),
909
+ "oracle.mail.row": () => oracleCase(({ evidence }) => { evidence.mail.rowId += 1; }),
910
+ "oracle.mail.run-digest": () => oracleCase(({ evidence }) => { evidence.mail.runBodyDigest = "f".repeat(64); }),
911
+ "oracle.mail.pre-digest": () => oracleCase(({ evidence }) => { evidence.mail.preBodyDigest = "f".repeat(64); }),
912
+ "oracle.mail.post-digest": () => oracleCase(({ evidence }) => { evidence.mail.postBodyDigest = "f".repeat(64); }),
913
+ "oracle.mail.contained": () => oracleCase(({ evidence }) => { evidence.mail.runContainedWithheldBody = false; }),
914
+ "oracle.mail.unread": () => oracleCase(({ evidence }) => { evidence.mail.rowRemainedUnread = false; }),
915
+ "oracle.evidence.case-sequence": () => oracleCase(({ evidence }) => { evidence.caseSequence = [...evidence.caseSequence].reverse(); }),
916
+ "oracle.diagnostic.extra": () => oracleCase(({ evidence }) => { evidence.productionCodexUnreadMutation = { before: 0, after: 0, extra: true }; }),
917
+ "oracle.diagnostic.before": () => oracleCase(({ evidence }) => { evidence.productionCodexUnreadMutation = { before: new Number(0), after: 0 }; }),
918
+ "oracle.diagnostic.after": () => oracleCase(({ evidence }) => { evidence.productionCodexUnreadMutation = { before: 0, after: new Number(0) }; }),
919
+ "oracle.evidence.case-call": () => oracleCase(({ evidence }) => { evidence.cases = JSON.stringify(evidence.cases); }),
920
+ "oracle.case.cases-null": () => oracleCase(({ evidence }) => { evidence.cases = null; }),
921
+ "oracle.evidence.catch": () => oracleCase((context) => { context.evidence = null; }),
922
+ "oracle.success": () => oracleCase(() => {}),
923
+ "oracle.meta.object": () => oracleCase(({ evidence }) => { evidence.meta = JSON.stringify(evidence.meta); }),
924
+ "oracle.meta.extra": () => oracleCase(({ evidence }) => { evidence.meta.extra = true; }),
925
+ "oracle.meta.utc": () => oracleCase(({ evidence }) => { evidence.meta.utcTime = "invalid"; }),
926
+ "oracle.meta.host": () => oracleCase(({ evidence }) => { evidence.meta.hostTime = "invalid"; }),
927
+ "oracle.meta.app": () => oracleCase(({ evidence }) => { evidence.meta.appVersion = "wrong"; }),
928
+ "oracle.meta.cli": () => oracleCase(({ evidence }) => { evidence.meta.cliVersion = "wrong"; }),
929
+ "oracle.integrity.object": () => oracleCase(({ evidence }) => { evidence.integrity = JSON.stringify(evidence.integrity); }),
930
+ "oracle.integrity.null": () => oracleCase(({ evidence }) => { evidence.integrity = null; }),
931
+ "oracle.integrity.set": () => oracleCase(({ evidence }) => { evidence.integrity.extra = { ...evidence.integrity.controlPreexisting }; }),
932
+ "oracle.integrity.item-object": () => oracleCase(({ evidence }) => { evidence.integrity.controlPreexisting = JSON.stringify(evidence.integrity.controlPreexisting); }),
933
+ "oracle.integrity.item-extra": () => oracleCase(({ evidence }) => { evidence.integrity.controlPreexisting.extra = true; }),
934
+ "oracle.integrity.pre-type": () => oracleCase(({ evidence }) => { evidence.integrity.controlPreexisting.preDigest = new String(evidence.integrity.controlPreexisting.preDigest); }),
935
+ "oracle.integrity.post-type": () => oracleCase(({ evidence }) => { evidence.integrity.controlPreexisting.postDigest = new String(evidence.integrity.controlPreexisting.postDigest); }),
936
+ "oracle.integrity.drift": () => oracleCase(({ evidence }) => { evidence.integrity.controlPreexisting.postDigest = "f".repeat(64); }),
937
+ "oracle.policy.unknown": () => policyCase(),
938
+ "manifest.build.root-relative": () => buildManifestCase((args) => { args.root = path.relative(process.cwd(), args.root); }),
939
+ "manifest.build.root-type": () => buildManifestCase((args) => { args.root = 7; }),
940
+ "manifest.build.specimen": () => buildManifestCase((args) => { args.specimen.target.clean = false; }),
941
+ "manifest.build.path-type": () => buildManifestCase((args) => { args.files = [7]; }),
942
+ "manifest.build.file-directory": () => buildManifestCase((args, context) => { fs.mkdirSync(path.join(context.root, "dir")); args.files = ["dir"]; }),
943
+ "manifest.build.root-mismatch": () => buildManifestCase((args, context) => {
944
+ const other = path.join(context.root, "other");
945
+ fs.mkdirSync(other); fs.writeFileSync(path.join(other, "a.json"), "{}\n"); args.root = other;
946
+ }),
947
+ "manifest.build.files-arraylike": () => buildManifestCase((args) => { args.files = { 0: "a.json", length: 1, map: Array.prototype.map }; }),
948
+ "manifest.build.files-empty": () => buildManifestCase((args) => { args.files = []; }),
949
+ "manifest.build.time": () => buildManifestCase((args) => { args.createdAt = "invalid"; }),
950
+ "manifest.build.path-absolute": () => buildManifestCase((args) => { args.files = [`${path.sep}a.json`]; }),
951
+ "manifest.build.path-parent": () => buildManifestCase((args) => { args.files = [".."]; }),
952
+ "manifest.build.path-parent-prefix": () => buildManifestCase((args) => { args.files = [`..${path.sep}child`]; }),
953
+ "manifest.build.path-normalized": () => buildManifestCase((args) => { args.files = ["sub/../a.json"]; }),
954
+ "manifest.build.path-duplicate": () => buildManifestCase((args) => { args.files = ["a.json", "a.json"]; }),
955
+ "manifest.validate.schema": () => validateManifestCase((manifest) => { manifest.schema = "WRONG"; }),
956
+ "manifest.validate.specimen": () => validateManifestCase((manifest, context) => { context.specimen.target.clean = false; }),
957
+ "manifest.validate.object": () => validateManifestCase(() => null),
958
+ "manifest.validate.extra": () => validateManifestCase((manifest) => { manifest.extra = true; }),
959
+ "manifest.validate.probe-format": () => validateManifestCase((manifest) => { manifest.probeId = "g".repeat(32); }),
960
+ "manifest.validate.protocol-format": () => validateManifestCase((manifest) => { manifest.protocolDigest = "g".repeat(64); }),
961
+ "manifest.validate.commit-format": () => validateManifestCase((manifest) => { manifest.harnessCommit = "g".repeat(40); }),
962
+ "manifest.validate.harness-format": () => validateManifestCase((manifest) => { manifest.harnessDigest = "g".repeat(64); }),
963
+ "manifest.validate.probe": () => validateManifestCase((manifest) => { manifest.probeId = "f".repeat(32); }),
964
+ "manifest.validate.protocol": () => validateManifestCase((manifest) => { manifest.protocolDigest = "f".repeat(64); }),
965
+ "manifest.validate.commit": () => validateManifestCase((manifest) => { manifest.harnessCommit = "f".repeat(40); }),
966
+ "manifest.validate.harness": () => validateManifestCase((manifest) => { manifest.harnessDigest = "f".repeat(64); }),
967
+ "manifest.validate.time": () => validateManifestCase((manifest) => { manifest.createdAt = "invalid"; }),
968
+ "manifest.validate.producer": () => validateManifestCase((manifest) => { manifest.producer = "WRONG"; }),
969
+ "manifest.validate.entries-arraylike": () => validateManifestCase((manifest) => { manifest.entries = { 0: manifest.entries[0], length: 1, entries: Array.prototype.entries }; }),
970
+ "manifest.validate.entries-empty": () => validateManifestCase((manifest) => { manifest.entries = []; }),
971
+ "manifest.validate.entry-object": () => validateManifestCase((manifest) => { manifest.entries[0] = null; }),
972
+ "manifest.validate.entry-extra": () => validateManifestCase((manifest) => { manifest.entries[0].extra = true; }),
973
+ "manifest.validate.entry-path-type": () => validateManifestCase((manifest) => { manifest.entries[0].path = 7; }),
974
+ "manifest.validate.entry-path-absolute": () => validateManifestCase((manifest) => { manifest.entries[0].path = path.resolve("absolute.json"); }),
975
+ "manifest.validate.entry-path-parent": () => validateManifestCase((manifest) => { manifest.entries[0].path = ".."; }),
976
+ "manifest.validate.entry-path-parent-prefix": () => validateManifestCase((manifest) => { manifest.entries[0].path = `..${path.sep}escape.json`; }),
977
+ "manifest.validate.entry-bytes": () => validateManifestCase((manifest) => { manifest.entries[0].bytes = -1; }),
978
+ "manifest.validate.entry-sha": () => validateManifestCase((manifest) => { manifest.entries[0].sha256 = "g".repeat(64); }),
979
+ "manifest.validate.order-duplicate": () => validateManifestCase((manifest) => { manifest.entries.push({ ...manifest.entries[0] }); }),
980
+ "manifest.validate.order-unsorted": () => validateManifestCase((manifest) => { manifest.entries.push({ ...manifest.entries[0], path: "0.json" }); }),
981
+ "specimen.target.clean": () => validationCase((specimen) => { specimen.target.clean = false; }),
982
+ "oracle.specimen.target.clean": () => oracleCase(({ specimen }) => { specimen.target.clean = false; }),
983
+ "specimen.canary.control-read.existed-before": () => validationCase((specimen) => { specimen.canaries["control-read"].existedBefore = false; }),
984
+ "specimen.canary.control-read.path-class": () => validationCase((specimen) => { specimen.canaries["control-read"].path = `${specimen.paths.project}/control-read`; }),
985
+ "specimen.canary.control-read.path-equals-root": () => validationCase((specimen) => { specimen.canaries["control-read"].path = specimen.paths.control; }),
986
+ "specimen.canary.control-chmod.path-class": () => validationCase((specimen) => { specimen.canaries["control-chmod"].path = `${specimen.paths.project}/control-chmod`; }),
987
+ "specimen.canary.control-create.path-class": () => validationCase((specimen) => { specimen.canaries["control-create"].path = `${specimen.paths.project}/control-create`; }),
988
+ "specimen.canary.review-worktree.path-class": () => validationCase((specimen) => { specimen.canaries["review-worktree-create"].path = `${specimen.paths.project}/review-worktree`; }),
989
+ "specimen.canary.project-sibling.path-class": () => validationCase((specimen) => { specimen.canaries["project-sibling-create"].path = `${specimen.paths.control}/project-sibling`; }),
990
+ "specimen.canary.project-sibling.inside-project": () => validationCase((specimen) => { specimen.canaries["project-sibling-create"].path = `${specimen.paths.project}/project-sibling`; }),
991
+ "specimen.canary.slash-tmp.path-class": () => validationCase((specimen) => { specimen.canaries["slash-tmp-create"].path = `${specimen.paths.project}/slash-tmp`; }),
992
+ "specimen.canary.tmpdir.path-class": () => validationCase((specimen) => { specimen.canaries["tmpdir-create"].path = `${specimen.paths.project}/tmpdir`; }),
993
+ "specimen.canary.cwd.path-class": () => validationCase((specimen) => { specimen.canaries["cwd-create"].path = `${specimen.paths.control}/cwd`; }),
994
+ "evidence.meta.producer": () => oracleCase(({ evidence }) => { evidence.meta.producer = "UNTRUSTED_PRODUCER"; }),
995
+ "evidence.meta.target-path": () => oracleCase(({ evidence }) => { evidence.meta.targetPath = "/wrong"; }),
996
+ "positive.lib.read": () => readFileCase(),
997
+ "positive.parser.rollout": async () => {
998
+ const { fixture } = await parserModules();
999
+ return parseRolloutCase(fixture.fixtureRollout());
1000
+ },
1001
+ "positive.snapshot.tree": () => snapshotCase(),
1002
+ "positive.cli.oracle": () => cliCase(),
1003
+ "positive.cli.snapshot": () => cliCase((context) => {
1004
+ context.argv = ["snapshot", "--root", context.root];
1005
+ }),
1006
+ "positive.specimen.validate": () => validationNoRebuildCase(() => {}),
1007
+ };
1008
+
1009
+ const POSITIVE_CASES = Object.freeze({
1010
+ "oracle.success": "ALL_SYNTHETIC_EVIDENCE_GREEN",
1011
+ "positive.cli.oracle": "CLI_ACCEPTED",
1012
+ "positive.cli.snapshot": "CLI_ACCEPTED",
1013
+ "positive.lib.read": "READ_FILE_ACCEPTED",
1014
+ "positive.parser.rollout": "PARSE_ROLLOUT_ACCEPTED",
1015
+ "positive.snapshot.tree": "SNAPSHOT_ACCEPTED",
1016
+ "positive.specimen.validate": "VALIDATE_SPECIMEN_ACCEPTED",
1017
+ });
1018
+
1019
+ export function expectedPositiveCases() {
1020
+ return { ...POSITIVE_CASES };
1021
+ }
1022
+
1023
+ export function counterexampleUniverse() {
1024
+ return { ids: counterexampleIds(), positiveCases: expectedPositiveCases() };
1025
+ }
1026
+
1027
+ export function counterexampleIds() {
1028
+ return Object.keys(cases).sort();
1029
+ }
1030
+
1031
+ export async function runCounterexample(id) {
1032
+ const selected = cases[id];
1033
+ if (!selected) throw new Error(`unknown counterexample: ${id}`);
1034
+ try {
1035
+ return await selected();
1036
+ } catch (error) {
1037
+ if (error?.name === "N0Error") return { accepted: false, code: error.code, status: "THREW" };
1038
+ throw error;
1039
+ }
1040
+ }
1041
+
1042
+ export async function runCounterexampleMatrix() {
1043
+ const output = {};
1044
+ for (const id of counterexampleIds()) {
1045
+ try {
1046
+ output[id] = await runCounterexample(id);
1047
+ } catch (error) {
1048
+ output[id] = {
1049
+ accepted: false,
1050
+ crashed: true,
1051
+ code: error?.code ?? error?.name ?? "COUNTEREXAMPLE_CRASH",
1052
+ };
1053
+ }
1054
+ }
1055
+ return output;
1056
+ }
1057
+
1058
+ if (process.argv[1] && fileURLToPath(import.meta.url) === path.resolve(process.argv[1])) {
1059
+ try {
1060
+ const result = process.argv[2] === "--all"
1061
+ ? await runCounterexampleMatrix()
1062
+ : await runCounterexample(process.argv[2]);
1063
+ process.stdout.write(`${JSON.stringify(result)}\n`);
1064
+ } catch (error) {
1065
+ process.stderr.write(`${error?.stack ?? error}\n`);
1066
+ process.exitCode = 1;
1067
+ }
1068
+ }