@mikeargento/bitgraph-player 0.5.2 → 0.6.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 (49) hide show
  1. package/DOMAIN.md +119 -0
  2. package/README.md +25 -5
  3. package/dist/__tests__/domain.test.d.ts +2 -0
  4. package/dist/__tests__/domain.test.d.ts.map +1 -0
  5. package/dist/__tests__/domain.test.js +265 -0
  6. package/dist/__tests__/domain.test.js.map +1 -0
  7. package/dist/check.d.ts +45 -2
  8. package/dist/check.d.ts.map +1 -1
  9. package/dist/check.js +94 -7
  10. package/dist/check.js.map +1 -1
  11. package/dist/cli.js +194 -12
  12. package/dist/cli.js.map +1 -1
  13. package/dist/domain.d.ts +64 -0
  14. package/dist/domain.d.ts.map +1 -0
  15. package/dist/domain.js +212 -0
  16. package/dist/domain.js.map +1 -0
  17. package/dist/index.d.ts +5 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/pin.d.ts +55 -0
  22. package/dist/pin.d.ts.map +1 -0
  23. package/dist/pin.js +126 -0
  24. package/dist/pin.js.map +1 -0
  25. package/dist/play.d.ts +6 -1
  26. package/dist/play.d.ts.map +1 -1
  27. package/dist/play.js +6 -1
  28. package/dist/play.js.map +1 -1
  29. package/dist/sig.d.ts +2 -0
  30. package/dist/sig.d.ts.map +1 -1
  31. package/dist/sig.js +1 -1
  32. package/dist/sig.js.map +1 -1
  33. package/dist/types.d.ts +7 -0
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/types.js +7 -0
  36. package/dist/types.js.map +1 -1
  37. package/dist/verdict.d.ts +1 -1
  38. package/dist/verdict.js +1 -1
  39. package/package.json +2 -1
  40. package/src/__tests__/domain.test.ts +321 -0
  41. package/src/check.ts +149 -9
  42. package/src/cli.ts +199 -12
  43. package/src/domain.ts +245 -0
  44. package/src/index.ts +17 -1
  45. package/src/pin.ts +155 -0
  46. package/src/play.ts +6 -1
  47. package/src/sig.ts +1 -1
  48. package/src/types.ts +8 -0
  49. package/src/verdict.ts +1 -1
package/dist/check.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // Copyright (c) 2024-2026 Mike Argento. Licensed under the MIT License. See LICENSE.
2
- import { auditIngest, AUDIT_VERSION } from "@mikeargento/bitgraph-audit";
2
+ import { auditIngest, AUDIT_VERSION, streamMatchedArtifacts } from "@mikeargento/bitgraph-audit";
3
+ import { SIG_EVIDENCE_MAX_BYTES } from "./types.js";
3
4
  import { kleeneAll } from "./logic.js";
4
5
  import { PLAYER_VERSION } from "./verdict.js";
5
6
  // ---------------------------------------------------------------------------
@@ -58,8 +59,22 @@ const EXCERPT_NORMAL_CODES = new Set([
58
59
  * browser page call this, so they cannot drift.
59
60
  */
60
61
  export async function checkIngest(ingest, options) {
62
+ let opts = options;
63
+ // Domain checking's detached-signature path wants the same candidate set
64
+ // the evaluator uses (SPEC §9.4: matched artifacts, size-capped). Collect
65
+ // it here, where the ingest is in hand, unless the embedder supplied one.
66
+ if (opts?.from !== undefined && opts.sigEvidence === undefined) {
67
+ const collected = new Map();
68
+ for await (const matched of streamMatchedArtifacts(ingest)) {
69
+ if (matched.bytes.length > SIG_EVIDENCE_MAX_BYTES)
70
+ continue;
71
+ if (!collected.has(matched.sha256Hex))
72
+ collected.set(matched.sha256Hex, matched.bytes);
73
+ }
74
+ opts = { ...opts, sigEvidence: collected };
75
+ }
61
76
  const audit = await auditIngest(ingest, { startedAt: "" });
62
- return buildCheckReport(audit, options);
77
+ return buildCheckReport(audit, opts);
63
78
  }
64
79
  /** The pure report builder over an AuditResult. */
65
80
  export function buildCheckReport(audit, options) {
@@ -95,14 +110,14 @@ export function buildCheckReport(audit, options) {
95
110
  anchors.push(buildAnchor(proof, anchor, witnessOutcomesByAnchor.get(proof.proofHash) ?? []));
96
111
  }
97
112
  else {
98
- recordings.push(buildRecording(proof, attestationByHash.get(proof.proofHash), segmentByHash.get(proof.proofHash), artifactPathByProof.get(proof.proofHash), webCrypto));
113
+ recordings.push(buildRecording(proof, attestationByHash.get(proof.proofHash), segmentByHash.get(proof.proofHash), artifactPathByProof.get(proof.proofHash), webCrypto, options?.from, options?.sigEvidence));
99
114
  }
100
115
  }
101
116
  sortByPosition(recordings);
102
117
  sortByPosition(anchors);
103
118
  const contradictions = collectContradictions(audit);
104
119
  const notes = collectNotes(audit, recordings, anchors);
105
- const notChecked = collectNotChecked(anchors.length > 0);
120
+ const notChecked = collectNotChecked(anchors.length > 0, options?.from?.domain);
106
121
  const allLines = [
107
122
  ...recordings.map((r) => r.result),
108
123
  ...anchors.map((a) => a.result),
@@ -110,7 +125,10 @@ export function buildCheckReport(audit, options) {
110
125
  ];
111
126
  const result = allLines.length === 0 ? "UNDETERMINED" : kleeneAll(allLines);
112
127
  return {
113
- check: "bitgraph-check/1",
128
+ check: options?.from !== undefined ? "bitgraph-check/2" : "bitgraph-check/1",
129
+ ...(options?.from !== undefined
130
+ ? { from: { domain: options.from.domain, party: options.from.party } }
131
+ : {}),
114
132
  result,
115
133
  summary: summarize(result, recordings, anchors, contradictions),
116
134
  recordings,
@@ -146,7 +164,7 @@ function sortByPosition(items) {
146
164
  // ---------------------------------------------------------------------------
147
165
  // Recordings
148
166
  // ---------------------------------------------------------------------------
149
- function buildRecording(proof, attestation, segment, filePath, webCrypto) {
167
+ function buildRecording(proof, attestation, segment, filePath, webCrypto, from, sigEvidence) {
150
168
  const lines = [];
151
169
  const v = proof.verification;
152
170
  const digestB64 = proof.proof.artifact.digestB64;
@@ -194,6 +212,18 @@ function buildRecording(proof, attestation, segment, filePath, webCrypto) {
194
212
  lines.push(att.line);
195
213
  // enclave: the attested PCR0 is a published BitGraph measurement.
196
214
  lines.push(enclaveLine(att.attestedPcr0, att.line.result));
215
+ // domain: a key the pinned domain published stands behind this
216
+ // recording. TRUE or UNDETERMINED, never FALSE: domain evidence can
217
+ // exist outside any bundle, so its absence contradicts nothing
218
+ // (SPEC §9.3's open-world rule); tampering already reads FALSE on the
219
+ // lines above, and this line does not restate them.
220
+ if (from !== undefined) {
221
+ // Verified exactly when the signature line above reads TRUE: the
222
+ // integrity-tier "artifact-unavailable" status is a PASS (proof-only
223
+ // bundles verify; whether bytes are in hand is the file line's job).
224
+ const verified = v !== undefined && v.status !== "failed";
225
+ lines.push(domainLine(proof, verified, from, sigEvidence ?? EMPTY_EVIDENCE));
226
+ }
197
227
  const result = kleeneAll(lines.map((l) => l.result));
198
228
  return {
199
229
  proofHash: proof.proofHash,
@@ -266,6 +296,57 @@ function attestationLine(record, webCrypto) {
266
296
  attestedPcr0: record.attestedPcr0,
267
297
  };
268
298
  }
299
+ const EMPTY_EVIDENCE = new Map();
300
+ function domainLine(proof, verified, from, sigEvidence) {
301
+ if (!verified) {
302
+ return {
303
+ name: "domain",
304
+ result: "UNDETERMINED",
305
+ detail: `the recording is not verified here, so nothing binds it to ${from.domain}`,
306
+ };
307
+ }
308
+ const actorKeyId = proof.proof.agency?.actor?.keyId;
309
+ if (actorKeyId !== undefined) {
310
+ const name = from.actorKeyName(actorKeyId);
311
+ if (name !== undefined) {
312
+ return {
313
+ name: "domain",
314
+ result: "TRUE",
315
+ detail: `actor key "${name}" · published by ${from.domain} (${from.party})`,
316
+ };
317
+ }
318
+ }
319
+ const targetBytes = decodeDigestB64(proof.proof.artifact.digestB64);
320
+ if (targetBytes !== undefined && sigEvidence.size > 0) {
321
+ const name = from.signatureKeyName(targetBytes.toString("hex"), sigEvidence);
322
+ if (name !== undefined) {
323
+ return {
324
+ name: "domain",
325
+ result: "TRUE",
326
+ detail: `signature by "${name}" · published by ${from.domain} (${from.party})`,
327
+ };
328
+ }
329
+ }
330
+ if (actorKeyId !== undefined) {
331
+ return {
332
+ name: "domain",
333
+ result: "UNDETERMINED",
334
+ detail: `actor key ${actorKeyId.slice(0, 12)}… is not among the ${from.keyCount} key(s) ${from.domain} publishes`,
335
+ };
336
+ }
337
+ return {
338
+ name: "domain",
339
+ result: "UNDETERMINED",
340
+ detail: `no evidence binds this recording to ${from.domain}`,
341
+ };
342
+ }
343
+ /** Standard-base64 digest to bytes; undefined when it does not round-trip. */
344
+ function decodeDigestB64(digestB64) {
345
+ if (!/^[A-Za-z0-9+/]+=*$/.test(digestB64))
346
+ return undefined;
347
+ const bytes = Buffer.from(digestB64, "base64");
348
+ return bytes.toString("base64") === digestB64 ? bytes : undefined;
349
+ }
269
350
  function enclaveLine(attestedPcr0, attestationResult) {
270
351
  if (attestationResult !== "TRUE" || attestedPcr0 === undefined) {
271
352
  return {
@@ -532,11 +613,14 @@ function collectNotes(audit, recordings, anchors) {
532
613
  }
533
614
  return notes;
534
615
  }
535
- function collectNotChecked(hasAnchors) {
616
+ function collectNotChecked(hasAnchors, fromDomain) {
536
617
  const out = [];
537
618
  if (hasAnchors) {
538
619
  out.push("whether the anchored Ethereum blocks are canonical: their headers are recomputed here, but canonicality needs an Ethereum node or a block explorer");
539
620
  }
621
+ if (fromDomain !== undefined) {
622
+ out.push(`whether ${fromDomain}'s published key file has changed since it was pinned: a pin is read as stored; pin the domain again to refresh it`);
623
+ }
540
624
  out.push("whether the public ledger holds these exact recordings at these positions: this is an offline check; drop the file on bitgraph.ing to compare against the ledger");
541
625
  out.push("whether an epoch key was later quarantined: that is published outside any bundle");
542
626
  return out;
@@ -580,6 +664,9 @@ export function renderCheckText(report) {
580
664
  const out = [];
581
665
  const mark = (r) => (r === "TRUE" ? "TRUE " : r === "FALSE" ? "FALSE" : "UNDET");
582
666
  out.push(report.summary);
667
+ if (report.from !== undefined) {
668
+ out.push(`checked against ${report.from.domain} (${report.from.party}), from the stored pin`);
669
+ }
583
670
  out.push("");
584
671
  report.recordings.forEach((rec, i) => {
585
672
  out.push(`Recording ${i + 1}${rec.filePath !== undefined ? `: ${rec.filePath}` : ""} [${rec.result}]`);
package/dist/check.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -3,7 +3,8 @@
3
3
  /**
4
4
  * bitgraph-play <rule.json> <bundle> [--out <file>] [--summary]
5
5
  * bitgraph-play init <file>... [--out <rule.json>]
6
- * bitgraph-play check <bundle-or-file>... [--json] [--out <file>]
6
+ * bitgraph-play check <bundle-or-file>... [--json] [--out <file>] [--from <domain> [--pins <dir>]]
7
+ * bitgraph-play pin [<domain>] [--forget <domain>] [--pins <dir>] [--yes]
7
8
  *
8
9
  * Evaluate: runs a bitgraph-player/1 rule against a proof bundle
9
10
  * (directory, .tar, .tar.gz, or .tgz) and writes the verdict JSON to
@@ -21,6 +22,13 @@
21
22
  * what bounds it. Human text on stdout by default; --json for the
22
23
  * bitgraph-check/1 report. Offline. See check.ts for the vocabulary.
23
24
  *
25
+ * Pin: fetches https://<domain>/.well-known/bitgraph once (the ONLY
26
+ * network access anywhere in this package, and only when invoked), shows
27
+ * the party and every key's fingerprint, and stores the bytes verbatim
28
+ * after confirmation. `check --from <domain>` then adds one three-valued
29
+ * "domain" line per recording, offline, from the stored pin: TRUE or
30
+ * UNDETERMINED, never FALSE. Format and semantics: DOMAIN.md.
31
+ *
24
32
  * Exit codes: 0 TRUE, 1 FALSE, 2 UNDETERMINED, 3 error (init: 0 or 3).
25
33
  * Diagnostics go to stderr; stdout carries the verdict (or skeleton, or
26
34
  * check report) bytes only.
@@ -33,9 +41,12 @@ import { createHash } from "node:crypto";
33
41
  import { createReadStream, existsSync, writeFileSync } from "node:fs";
34
42
  import { readFile, stat } from "node:fs/promises";
35
43
  import { basename } from "node:path";
44
+ import { createInterface } from "node:readline/promises";
36
45
  import { pipeline } from "node:stream/promises";
37
46
  import { ingestBundle, ingestEntries } from "@mikeargento/bitgraph-audit";
38
47
  import { checkIngest, renderCheckText, serializeCheckReport } from "./check.js";
48
+ import { checkDomain, diffDomainFiles, domainKeyRefs, DomainFileError, isDomainName } from "./domain.js";
49
+ import { defaultPinsDir, fetchDomainFile, forgetPin, listPins, readPin, writePin } from "./pin.js";
39
50
  import { scaffoldRule } from "./init.js";
40
51
  import { play, PlayError } from "./play.js";
41
52
  import { RuleError } from "./rule.js";
@@ -43,8 +54,12 @@ function usage() {
43
54
  process.stderr.write("usage: bitgraph-play <rule.json> <bundle> [--out <file>] [--summary]\n" +
44
55
  " bitgraph-play init <file>... [--out <rule.json>]\n" +
45
56
  " bitgraph-play check <bundle-or-file>... [--json] [--out <file>]\n" +
46
- ' "--" ends option parsing; a rule file literally named "init" or\n' +
47
- ' "check" is evaluated with: bitgraph-play -- init <bundle>\n' +
57
+ " [--from <domain> [--pins <dir>]]\n" +
58
+ " bitgraph-play pin [<domain>] [--forget <domain>] [--pins <dir>] [--yes]\n" +
59
+ ' "--" ends option parsing; a rule file literally named "init",\n' +
60
+ ' "check" or "pin" is evaluated with: bitgraph-play -- init <bundle>\n' +
61
+ " pin is the only command that touches the network; check --from\n" +
62
+ " reads the stored pin and runs offline\n" +
48
63
  " exit codes: 0 TRUE, 1 FALSE, 2 UNDETERMINED, 3 error\n");
49
64
  return 3;
50
65
  }
@@ -69,7 +84,11 @@ async function sha256HexOfFile(path) {
69
84
  return hash.digest("hex");
70
85
  }
71
86
  function parseArgs(args) {
72
- const parsed = { positional: [], summary: false, json: false };
87
+ const parsed = { positional: [], summary: false, json: false, yes: false };
88
+ const valueFor = (i) => {
89
+ const next = args[i];
90
+ return next === undefined || next.startsWith("-") ? undefined : next;
91
+ };
73
92
  for (let i = 0; i < args.length; i++) {
74
93
  const arg = args[i];
75
94
  if (arg === "--") {
@@ -78,17 +97,38 @@ function parseArgs(args) {
78
97
  break;
79
98
  }
80
99
  else if (arg === "--out") {
81
- const next = args[++i];
82
- if (next === undefined || next.startsWith("-"))
100
+ const next = valueFor(++i);
101
+ if (next === undefined)
83
102
  return undefined;
84
103
  parsed.outFile = next;
85
104
  }
105
+ else if (arg === "--from") {
106
+ const next = valueFor(++i);
107
+ if (next === undefined)
108
+ return undefined;
109
+ parsed.from = next;
110
+ }
111
+ else if (arg === "--pins") {
112
+ const next = valueFor(++i);
113
+ if (next === undefined)
114
+ return undefined;
115
+ parsed.pinsDir = next;
116
+ }
117
+ else if (arg === "--forget") {
118
+ const next = valueFor(++i);
119
+ if (next === undefined)
120
+ return undefined;
121
+ parsed.forget = next;
122
+ }
86
123
  else if (arg === "--summary") {
87
124
  parsed.summary = true;
88
125
  }
89
126
  else if (arg === "--json") {
90
127
  parsed.json = true;
91
128
  }
129
+ else if (arg === "--yes") {
130
+ parsed.yes = true;
131
+ }
92
132
  else if (arg.startsWith("-")) {
93
133
  return undefined;
94
134
  }
@@ -105,11 +145,43 @@ function parseArgs(args) {
105
145
  * `bitgraph-play check proof.json photo.jpg` works without a folder.
106
146
  */
107
147
  async function runCheck(args) {
108
- if (args.summary)
148
+ if (args.summary || args.yes || args.forget !== undefined)
149
+ return usage();
150
+ if (args.pinsDir !== undefined && args.from === undefined)
109
151
  return usage();
110
152
  const targets = args.positional;
111
153
  if (targets.length === 0)
112
154
  return usage();
155
+ // Resolve the pin before touching the bundle: a missing pin should fail
156
+ // in milliseconds, with its remedy, not after a long ingest. check
157
+ // itself NEVER fetches; the pin was the one network step, already done.
158
+ let options;
159
+ if (args.from !== undefined) {
160
+ const domain = args.from.toLowerCase();
161
+ if (!isDomainName(domain)) {
162
+ process.stderr.write(`error: not a domain name: ${args.from}\n`);
163
+ return 3;
164
+ }
165
+ const pinsDir = args.pinsDir ?? defaultPinsDir();
166
+ let pin;
167
+ try {
168
+ pin = readPin(domain, pinsDir);
169
+ }
170
+ catch (err) {
171
+ process.stderr.write(`error: the stored pin for ${domain} is malformed`);
172
+ if (err instanceof DomainFileError && err.issues[0] !== undefined) {
173
+ process.stderr.write(`: ${err.issues[0]}`);
174
+ }
175
+ process.stderr.write(`\n pin it again: bitgraph-play pin ${domain}\n`);
176
+ return 3;
177
+ }
178
+ if (pin === undefined) {
179
+ process.stderr.write(`error: no pin for ${domain}\n` +
180
+ ` pin it once (the only step that needs the network): bitgraph-play pin ${domain}\n`);
181
+ return 3;
182
+ }
183
+ options = { from: checkDomain(pin.file) };
184
+ }
113
185
  let ingest;
114
186
  try {
115
187
  const single = targets.length === 1 ? await stat(targets[0]) : undefined;
@@ -135,7 +207,7 @@ async function runCheck(args) {
135
207
  process.stderr.write(`error: cannot read bundle: ${err.message}\n`);
136
208
  return 3;
137
209
  }
138
- const report = await checkIngest(ingest);
210
+ const report = await checkIngest(ingest, options);
139
211
  const bytes = args.json ? serializeCheckReport(report) : renderCheckText(report);
140
212
  if (args.outFile !== undefined) {
141
213
  writeFileSync(args.outFile, bytes);
@@ -150,7 +222,7 @@ function looksLikeArchive(path) {
150
222
  return lower.endsWith(".tar") || lower.endsWith(".tar.gz") || lower.endsWith(".tgz");
151
223
  }
152
224
  async function runInit(args) {
153
- if (args.summary || args.json)
225
+ if (args.summary || args.json || args.from !== undefined || args.pinsDir !== undefined || args.yes || args.forget !== undefined)
154
226
  return usage();
155
227
  const files = args.positional;
156
228
  if (files.length === 0)
@@ -202,7 +274,9 @@ async function runInit(args) {
202
274
  return 0;
203
275
  }
204
276
  async function runEvaluate(args) {
205
- if (args.json || args.positional.length !== 2)
277
+ if (args.json || args.from !== undefined || args.pinsDir !== undefined || args.yes || args.forget !== undefined)
278
+ return usage();
279
+ if (args.positional.length !== 2)
206
280
  return usage();
207
281
  const [rulePath, bundlePath] = args.positional;
208
282
  let result;
@@ -233,12 +307,118 @@ async function runEvaluate(args) {
233
307
  printSummary(result.audit);
234
308
  return result.exitCode;
235
309
  }
310
+ /**
311
+ * pin: the only command in this package that touches the network, and
312
+ * only when invoked. Conversational output goes to stderr (there are no
313
+ * report bytes); the pin listing, which IS the output, goes to stdout.
314
+ */
315
+ async function runPin(args) {
316
+ if (args.summary || args.json || args.outFile !== undefined || args.from !== undefined)
317
+ return usage();
318
+ const pinsDir = args.pinsDir ?? defaultPinsDir();
319
+ if (args.forget !== undefined) {
320
+ if (args.positional.length !== 0)
321
+ return usage();
322
+ const domain = args.forget.toLowerCase();
323
+ if (!isDomainName(domain)) {
324
+ process.stderr.write(`error: not a domain name: ${args.forget}\n`);
325
+ return 3;
326
+ }
327
+ if (forgetPin(domain, pinsDir)) {
328
+ process.stderr.write(`forgot ${domain}\n`);
329
+ return 0;
330
+ }
331
+ process.stderr.write(`error: no pin for ${domain}\n`);
332
+ return 3;
333
+ }
334
+ if (args.positional.length === 0) {
335
+ const pins = listPins(pinsDir);
336
+ if (pins.length === 0) {
337
+ process.stderr.write("no pins yet\n pin a domain (the only step that needs the network): bitgraph-play pin <domain>\n");
338
+ return 0;
339
+ }
340
+ for (const pin of pins) {
341
+ process.stdout.write(pin.malformed
342
+ ? `${pin.domain} (malformed pin; pin it again or --forget it)\n`
343
+ : `${pin.domain} ${pin.party} ${pin.keyCount} key(s) pinned ${pin.pinnedAt.toISOString().slice(0, 10)}\n`);
344
+ }
345
+ return 0;
346
+ }
347
+ if (args.positional.length !== 1)
348
+ return usage();
349
+ const domain = args.positional[0].toLowerCase();
350
+ let fetched;
351
+ try {
352
+ fetched = await fetchDomainFile(domain);
353
+ }
354
+ catch (err) {
355
+ if (err instanceof DomainFileError) {
356
+ process.stderr.write(`error: the file at https://${domain}/.well-known/bitgraph is not a valid bitgraph-domain/1 file:\n`);
357
+ for (const issue of err.issues)
358
+ process.stderr.write(` - ${issue}\n`);
359
+ }
360
+ else {
361
+ process.stderr.write(`error: ${err.message}\n`);
362
+ }
363
+ return 3;
364
+ }
365
+ const refs = domainKeyRefs(fetched.file);
366
+ const nameWidth = refs.reduce((w, r) => Math.max(w, r.name.length), 4);
367
+ process.stderr.write(`\n${domain} · ${fetched.file.party}\n`);
368
+ for (const ref of refs) {
369
+ process.stderr.write(` ${ref.name.padEnd(nameWidth)} ${ref.key.alg.padEnd(7)} ${ref.fingerprint}\n`);
370
+ }
371
+ let existing;
372
+ let existingMalformed = false;
373
+ try {
374
+ existing = readPin(domain, pinsDir);
375
+ }
376
+ catch {
377
+ existingMalformed = true;
378
+ }
379
+ if (existingMalformed) {
380
+ process.stderr.write(`\nthe stored pin for ${domain} is malformed and will be replaced\n`);
381
+ }
382
+ else if (existing !== undefined) {
383
+ const diff = diffDomainFiles(existing.file, fetched.file);
384
+ const changes = [];
385
+ if (diff.partyChanged !== undefined) {
386
+ changes.push(` party: "${diff.partyChanged.before}" is now "${diff.partyChanged.after}"`);
387
+ }
388
+ for (const ref of diff.added)
389
+ changes.push(` + ${ref.name} ${ref.key.alg} ${ref.fingerprint}`);
390
+ for (const ref of diff.removed)
391
+ changes.push(` - ${ref.name} ${ref.key.alg} ${ref.fingerprint}`);
392
+ for (const ch of diff.changed)
393
+ changes.push(` ~ ${ch.name} now ${ch.after.key.alg} ${ch.after.fingerprint}`);
394
+ const pinnedOn = existing.pinnedAt.toISOString().slice(0, 10);
395
+ process.stderr.write(changes.length === 0
396
+ ? `\nunchanged since the stored pin (${pinnedOn})\n`
397
+ : `\nchanges since the stored pin (${pinnedOn}):\n${changes.join("\n")}\n`);
398
+ }
399
+ if (!args.yes) {
400
+ if (!process.stdin.isTTY) {
401
+ process.stderr.write("\nerror: not a terminal; pass --yes to pin non-interactively\n");
402
+ return 3;
403
+ }
404
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
405
+ const answer = (await rl.question(`\npin ${refs.length} key(s) for ${domain}? [y/N] `)).trim().toLowerCase();
406
+ rl.close();
407
+ if (answer !== "y" && answer !== "yes") {
408
+ process.stderr.write("not pinned\n");
409
+ return 3;
410
+ }
411
+ }
412
+ const path = writePin(domain, fetched.bytes, pinsDir);
413
+ process.stderr.write(`pinned: ${path}\nchecks now run offline: bitgraph-play check <export> --from ${domain}\n`);
414
+ return 0;
415
+ }
236
416
  async function main() {
237
417
  const argv = process.argv.slice(2);
238
418
  // "--" as the first token forces evaluate mode: parseArgs treats
239
419
  // everything after it as positional, so a rule file literally named
240
- // "init" or "check" is reachable as `bitgraph-play -- init <bundle>`.
241
- const subcommand = argv[0] === "init" || argv[0] === "check" ? argv[0] : undefined;
420
+ // "init", "check" or "pin" is reachable as `bitgraph-play -- init <bundle>`.
421
+ const subcommand = argv[0] === "init" || argv[0] === "check" || argv[0] === "pin" ? argv[0] : undefined;
242
422
  if (subcommand !== undefined && existsSync(subcommand)) {
243
423
  // Both readings are plausible here; a silent pick would hand a
244
424
  // 0.1.1 caller a skeleton with exit 0 where the published contract
@@ -255,6 +435,8 @@ async function main() {
255
435
  return runInit(parsed);
256
436
  if (subcommand === "check")
257
437
  return runCheck(parsed);
438
+ if (subcommand === "pin")
439
+ return runPin(parsed);
258
440
  return runEvaluate(parsed);
259
441
  }
260
442
  main().then((code) => {