patchwork-os 1.2.0-beta.2.canary.790 → 1.2.0-beta.2.canary.792

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.
@@ -292,6 +292,15 @@ export function appendChained(file, row, opts = {}) {
292
292
  let prevHash = tail.prevHash;
293
293
  let iseq = tail.nextIseq;
294
294
  if (tail.unchained) {
295
+ // A legacy file whose last line has no newline would otherwise get
296
+ // the marker glued onto it — one unparseable line, and a prefix the
297
+ // verifier can never reconstruct. Terminate the line first; the
298
+ // commitment below covers the terminated bytes, and the legacy row's
299
+ // own content is byte-identical.
300
+ if (text.length > 0 && !text.endsWith("\n")) {
301
+ appendFileSync(file, "\n", { mode });
302
+ text += "\n";
303
+ }
295
304
  const marker = {
296
305
  kind: "chain-start",
297
306
  at: now(),
@@ -358,7 +367,8 @@ export function verifyLedgerChain(file) {
358
367
  };
359
368
  if (v.absent)
360
369
  return v;
361
- const text = readFileSync(file, "utf-8");
370
+ const bytes = readFileSync(file);
371
+ const text = bytes.toString("utf-8");
362
372
  const lines = splitLines(text);
363
373
  // Every iseq in the file, so "the expected one exists later" (reordered) can
364
374
  // be told apart from "it exists nowhere" (a gap).
@@ -424,10 +434,13 @@ export function verifyLedgerChain(file) {
424
434
  v.legacyPrefix = "none";
425
435
  }
426
436
  else {
427
- const prefix = text.slice(0, legacyBytes);
437
+ // BYTES, not a string slice: `legacyBytes` is a byte count and a
438
+ // string index is a UTF-16 code-unit count. They agree only on pure
439
+ // ASCII, and real ledgers carry em dashes and accents in `reason`.
440
+ const prefix = bytes.subarray(0, legacyBytes).toString("utf-8");
428
441
  v.legacyPrefix =
429
442
  hashLine(prefix) === p.legacyHash &&
430
- Buffer.byteLength(prefix, "utf8") === p.legacyBytes &&
443
+ legacyBytes === p.legacyBytes &&
431
444
  v.legacyRows === p.legacyRows
432
445
  ? "verified"
433
446
  : "mismatch";
@@ -1 +1 @@
1
- {"version":3,"file":"ledgerChain.js","sourceRoot":"","sources":["../src/ledgerChain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledgerChain.js","sourceRoot":"","sources":["../src/ledgerChain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,MAAM,EACN,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AA6F7C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,GAAI,GAA0B,CAAC,IAAI,CAAC;IAC3C,OAAO,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,UAAU,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAI5C,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,IAAY,EACZ,MAAoB,IAAI,CAAC,GAAG;IAE5B,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,cAAc,CACZ,iBAAiB,CAAC,IAAI,CAAC,CAAC,WAAW,EACnC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,EAC1C,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;aAC/B,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QACtC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAE,CAA6B;YAChC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;IAC3D,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;IAC1B,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,sEAAsE;IACtE,yEAAyE;IACzE,wEAAwE;IACxE,0EAA0E;IAC1E,iDAAiD;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,EAAE,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;YACjD,MAAM,SAAS,GACb,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAC5B,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAChC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtD,IAAI,CAAC;wBACH,UAAU,CAAC,IAAI,CAAC,CAAC;oBACnB,CAAC;oBAAC,MAAM,CAAC;wBACP,iBAAiB;oBACnB,CAAC;oBACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACtB,OAAO;gBACT,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAW,CAAC,CAAC,OAAO;YAChE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;gBAC3C,WAAW;YACb,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAUD,SAAS,QAAQ,CAAC,KAAe;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC9E,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;YAClB,MAAM;QACR,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM;QACR,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACpE,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAW,CAAC;QACrD,QAAQ,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CACb,IAAY,EACZ,KAAe,EACf,IAA0B,EAC1B,GAAW,EACX,IAAY;IAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC;IAE3D,yEAAyE;IACzE,mDAAmD;IACnD,IAAI,KAAK,GAA0B,IAAI,CAAC;IACxC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACvC,KAAK,GAAG,KAAkC,CAAC;QAC3C,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ;YAAE,MAAM;QAChD,MAAM,IAAI,IAAI,CAAC;QACf,QAAQ,GAAG,CAAC,CAAC;QACb,IAAI,EAAE,CAAC;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,kBAAkB;IAEtE,IAAI,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;IAC1C,IAAI,iBAAiB,GAAG,KAAK,EAAE,iBAAiB,IAAI,CAAC,CAAC;IACtD,IAAI,eAAe,GAAG,KAAK,EAAE,eAAe,IAAI,IAAI,CAAC;IACrD,IAAI,eAAe,GAAG,KAAK,EAAE,eAAe,IAAI,IAAI,CAAC;IACrD,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAC/B,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,WAAW,EAAE,CAAC;YACd,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACzC,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,uEAAuE;YACvE,iEAAiE;YACjE,IAAI,CAAC,cAAc;gBAAE,iBAAiB,EAAE,CAAC;QAC3C,CAAC;QACD,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,QAAQ,GAAG,CAAC,IAAI,eAAe,KAAK,IAAI;QAAE,eAAe,GAAG,IAAI,CAAC;IAErE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,SAAS,GACb,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,MAAM,MAAM,GAAmB;QAC7B,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,GAAG;QACP,WAAW;QACX,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,aAAa,EACX,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;KACtE,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IACnD,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,GAA4B,EAC5B,OAA6B,EAAE;IAE/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IAChC,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,OAAO,gBAAgB,CACrB,IAAI,EACJ,GAAG,EAAE;YACH,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAC;YAClE,CAAC;YACD,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,SAAS,GACb,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAC3B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClD,MAAM,SAAS,GACb,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9D,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC5B,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC/C,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,iEAAiE;gBACjE,mEAAmE;gBACnE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,CAAC;oBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,mEAAmE;gBACnE,oEAAoE;gBACpE,gEAAgE;gBAChE,qEAAqE;gBACrE,iCAAiC;gBACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5C,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrC,IAAI,IAAI,IAAI,CAAC;gBACf,CAAC;gBACD,MAAM,MAAM,GAAqB;oBAC/B,IAAI,EAAE,aAAa;oBACnB,EAAE,EAAE,GAAG,EAAE;oBACT,UAAU,EAAE,KAAK,CAAC,MAAM;oBACxB,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;oBAC5C,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;iBAC3B,CAAC;gBACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1C,cAAc,CAAC,IAAI,EAAE,GAAG,UAAU,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAChC,IAAI,GAAG,CAAC,CAAC;YACX,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,OAAO,GAA4B;gBACvC,GAAG,GAAG;gBACN,IAAI;gBACJ,IAAI,EAAE,QAAQ;gBACd,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjD,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrC,cAAc,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,WAAW,CACT,IAAI,CAAC,IAAI,EACT,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EACrD,IAAI,CACL,CAAC;YACF,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC,EACD,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,CAC1C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAChB,IAAI,EACH,GAA6B,CAAC,IAAI,IAAI,UAAU,EACjD,GAAG,CACJ,CAAC;QACF,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,SAAS,CACjB,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAC3D,CAAC;QACF,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9D,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,CAAC,GAAsB;QAC3B,IAAI;QACJ,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QACzB,EAAE,EAAE,IAAI;QACR,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,MAAM,EAAE,EAAE;QACV,iBAAiB,EAAE,CAAC;QACpB,kBAAkB,EAAE,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;QACnE,IAAI,EAAE,KAAK;KACZ,CAAC;IACF,IAAI,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAEvB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAE/B,6EAA6E;IAC7E,kDAAkD;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC;QAErB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YACD,MAAM,EAAE,GACN,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC7B,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC;gBACnC,CAAC,CAAC,CAAC,eAAe,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,CAAC;gBACrE,CAAC,CAAC,CAAC,eAAe,KAAK,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YACD,CAAC,CAAC,SAAS,EAAE,CAAC;YACd,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,WAAqB,CAAC;YAC9C,OAAO,GAAG,IAAI,CAAC;YACf,IAAK,CAAC,CAAC,iBAA4B,GAAG,CAAC;gBAAE,kBAAkB,GAAG,IAAI,CAAC;YACnE,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ;gBACvC,YAAY,GAAG,CAAC,CAAC,eAAe,CAAC;YACnC,IAAI,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC;gBACnC,YAAY,GAAG,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,MAAM,EAAE,GACN,CAAC,KAAK,IAAI;gBACV,CAAC,aAAa;gBACd,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC5B,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC7B,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC;YACnC,aAAa,GAAG,IAAI,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,kBAAkB,EAAE,CAAC;gBAC9B,CAAC,CAAC,YAAY,GAAG,sBAAsB,CAAC;YAC1C,CAAC;iBAAM,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,IAAK,CAAC,CAAC,UAAqB,KAAK,CAAC,EAAE,CAAC;gBAChE,CAAC,CAAC,YAAY,GAAG,MAAM,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,iEAAiE;gBACjE,oEAAoE;gBACpE,mEAAmE;gBACnE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAChE,CAAC,CAAC,YAAY;oBACZ,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU;wBACjC,WAAW,KAAK,CAAC,CAAC,WAAW;wBAC7B,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;wBAC3B,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,UAAU,CAAC;YACnB,CAAC;YACD,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,YAAY,KAAK,IAAI;gBAAE,YAAY,GAAG,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,sEAAsE;YACtE,CAAC,CAAC,UAAU,EAAE,CAAC;YACf,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,YAAY,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACnD,IAAI,IAAoB,CAAC;YACzB,IAAI,IAAI,GAAG,YAAY;gBACrB,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;;gBAChD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;YAAE,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,WAAW,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QAClB,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC;QACxB,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,QAAQ,GAAG,IAAI,CAAC;QAChB,QAAQ,GAAG,YAAY,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3D,CAAC;SAAM,IAAI,kBAAkB,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QAC3D,CAAC,CAAC,YAAY,GAAG,sBAAsB,CAAC;IAC1C,CAAC;IAED,8EAA8E;IAC9E,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzD,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC;YACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,KAAK,CAAC,MAAM;gBAClB,IAAI,EAAE,CAAC,CAAC,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACrD,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC;YACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,CAAC,CAAC,EAAE;QACF,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,YAAY,KAAK,UAAU;YAC7B,CAAC,CAAC,IAAI,KAAK,SAAS;YACpB,CAAC,CAAC,IAAI,KAAK,WAAW;YACtB,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;IACxB,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -33,10 +33,20 @@
33
33
  * mark every historical pull request as human-authored — the same
34
34
  * never-backfill rule `workerGateDecisionLog` states in its own header.
35
35
  *
36
- * Rows carry `rv: 1` so a later schema change is distinguishable from an old
36
+ * Rows carry `rv` so a later schema change is distinguishable from an old
37
37
  * row, for the same reason the gate ledger does.
38
38
  */
39
- export declare const PR_OBSERVATION_RV = 1;
39
+ /**
40
+ * Record level (ADR-0025's `rv` protocol; ADR-0027 for this ledger).
41
+ *
42
+ * 1: rows appended directly, with no integrity fields.
43
+ * 2: every row is written through `appendChained` and carries `iseq` and
44
+ * `prev`, stamped by the writer from the file's tail under the lock. At
45
+ * `rv >= 2` their absence is a WRITER DEFECT. Rows at `rv: 1` predate the
46
+ * chain; they are never re-stamped, and the `chain-start` marker commits to
47
+ * them as a block. Never default it on read.
48
+ */
49
+ export declare const PR_OBSERVATION_RV = 2;
40
50
  export type PrState = "OPEN" | "MERGED" | "CLOSED";
41
51
  /** One pull request as the API described it at one moment. */
42
52
  export interface PrObservation {
@@ -172,3 +182,17 @@ export declare function resolveRepoSlug(run: () => {
172
182
  * file to make it parse is how evidence quietly becomes fiction.
173
183
  */
174
184
  export declare function readObservations(file: string): PrObservation[];
185
+ /**
186
+ * Append one observation through the ADR-0027 chain primitive.
187
+ *
188
+ * Deliberately NOT never-throwing, unlike the mid-flight run-step ledger. A
189
+ * failed append is counted in the `.write_failed` sidecar by the primitive and
190
+ * sealed into the next row that lands; the error then propagates so
191
+ * `pr-outcomes collect` exits 1 loudly, the same way it already does on a
192
+ * failed GitHub query. A collector that reported success having recorded
193
+ * nothing would leave a gap indistinguishable from a quiet week.
194
+ *
195
+ * No rotation: this ledger is the history, and history that trims itself is
196
+ * not history.
197
+ */
198
+ export declare function appendObservation(file: string, obs: PrObservation): void;
@@ -33,12 +33,22 @@
33
33
  * mark every historical pull request as human-authored — the same
34
34
  * never-backfill rule `workerGateDecisionLog` states in its own header.
35
35
  *
36
- * Rows carry `rv: 1` so a later schema change is distinguishable from an old
36
+ * Rows carry `rv` so a later schema change is distinguishable from an old
37
37
  * row, for the same reason the gate ledger does.
38
38
  */
39
- /** Schema version. A reader must be able to tell an old row from a new one. */
40
39
  import * as nodeFs from "node:fs";
41
- export const PR_OBSERVATION_RV = 1;
40
+ import { appendChained, isChainMarker } from "../ledgerChain.js";
41
+ /**
42
+ * Record level (ADR-0025's `rv` protocol; ADR-0027 for this ledger).
43
+ *
44
+ * 1: rows appended directly, with no integrity fields.
45
+ * 2: every row is written through `appendChained` and carries `iseq` and
46
+ * `prev`, stamped by the writer from the file's tail under the lock. At
47
+ * `rv >= 2` their absence is a WRITER DEFECT. Rows at `rv: 1` predate the
48
+ * chain; they are never re-stamped, and the `chain-start` marker commits to
49
+ * them as a block. Never default it on read.
50
+ */
51
+ export const PR_OBSERVATION_RV = 2;
42
52
  function num(v) {
43
53
  return typeof v === "number" && Number.isFinite(v) ? v : null;
44
54
  }
@@ -238,7 +248,16 @@ export function readObservations(file) {
238
248
  if (line.trim() === "")
239
249
  continue;
240
250
  try {
241
- out.push(JSON.parse(line));
251
+ const parsed = JSON.parse(line);
252
+ // ADR-0027 marker rows share the file with the data and are metadata,
253
+ // never an observation. Skipped by KIND before anything counts them:
254
+ // this reader casts whatever it parsed, so a marker that reached
255
+ // `summarise` or `dedupeAgainst` would appear as a phantom pull request
256
+ // ("undefined#undefined") in rows, distinctPrs, rosterlessRows, byState
257
+ // and the weekly sweep — a fabricated row in an evidence file.
258
+ if (isChainMarker(parsed))
259
+ continue;
260
+ out.push(parsed);
242
261
  }
243
262
  catch {
244
263
  // skipped, never repaired
@@ -246,4 +265,22 @@ export function readObservations(file) {
246
265
  }
247
266
  return out;
248
267
  }
268
+ /**
269
+ * Append one observation through the ADR-0027 chain primitive.
270
+ *
271
+ * Deliberately NOT never-throwing, unlike the mid-flight run-step ledger. A
272
+ * failed append is counted in the `.write_failed` sidecar by the primitive and
273
+ * sealed into the next row that lands; the error then propagates so
274
+ * `pr-outcomes collect` exits 1 loudly, the same way it already does on a
275
+ * failed GitHub query. A collector that reported success having recorded
276
+ * nothing would leave a gap indistinguishable from a quiet week.
277
+ *
278
+ * No rotation: this ledger is the history, and history that trims itself is
279
+ * not history.
280
+ */
281
+ export function appendObservation(file, obs) {
282
+ appendChained(file,
283
+ // Stamped AFTER the caller's fields so a caller cannot claim a level.
284
+ { ...obs, rv: PR_OBSERVATION_RV }, { mode: 0o600 });
285
+ }
249
286
  //# sourceMappingURL=prOutcomeLedger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prOutcomeLedger.js","sourceRoot":"","sources":["../../src/maintenance/prOutcomeLedger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prOutcomeLedger.js","sourceRoot":"","sources":["../../src/maintenance/prOutcomeLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAuDnC,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AACD,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAY,EACZ,IAA0B;IAE1B,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzE,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO;QACL,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,KAAK;QAClB,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI;YAC7C,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;SAC/B,CAAC;QACF,uDAAuD;QACvD,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI;YACrC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;SAC7C,CAAC;QACF,SAAS;QACT,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;QACtC,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;QACtC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;QAClC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;QAClC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;QACxC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAS,WAAW,CAAC,CAAgB;IACnC,OAAO;QACL,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,QAAQ,IAAI,EAAE;QAChB,CAAC,CAAC,QAAQ,IAAI,EAAE;KACjB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAkC,EAClC,QAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3B,SAAS,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AAChD,CAAC;AAgBD,MAAM,UAAU,SAAS,CAAC,IAA8B;IACtD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS;YAAE,UAAU,EAAE,CAAC;aAC5C,CAAC;YACJ,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,CAAC,cAAc;gBAAE,cAAc,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,MAAM;QACjB,WAAW,EAAE,IAAI,CAAC,IAAI;QACtB,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;QAC9D,OAAO;QACP,GAAG,CAAC,SAAS,IAAI,EAAE,cAAc,EAAE,CAAC;QACpC,cAAc,EAAE,UAAU;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAgB;IAClD,MAAM,CAAC,GAAa,EAAE,CAAC;IACvB,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACjB,uEAAuE;QACvE,0EAA0E;QAC1E,6BAA6B;QAC7B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACpE,CAAC,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QACzE,CAAC,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,0BAA0B,CAAC,CAAC,WAAW,kBAAkB,CAAC,CAAC;IAC7E,sEAAsE;IACtE,kEAAkE;IAClE,CAAC,CAAC,IAAI,CACJ,KAAK,CAAC,CAAC,cAAc,OAAO,CAAC,CAAC,WAAW,mCAAmC,CAC7E,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC3E,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,4CAA4C,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,IAAI,CACJ,KAAK,CAAC,CAAC,cAAc,oDAAoD,CAC1E,CAAC;QACF,CAAC,CAAC,IAAI,CACJ,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAC5E,CAAC,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAC7E,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AA0BD,MAAM,UAAU,eAAe,CAC7B,GAAuE;IAEvE,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpE,OAAO;YACL,KAAK,EACH,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;gBACd,CAAC,CAAC,wCAAwC;SAC/C,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,uEAAuE;QACvE,2EAA2E;QAC3E,OAAO,EAAE,KAAK,EAAE,iDAAiD,IAAI,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,sEAAsE;YACtE,qEAAqE;YACrE,iEAAiE;YACjE,wEAAwE;YACxE,wEAAwE;YACxE,+DAA+D;YAC/D,IAAI,aAAa,CAAC,MAAM,CAAC;gBAAE,SAAS;YACpC,GAAG,CAAC,IAAI,CAAC,MAAuB,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,GAAkB;IAChE,aAAa,CACX,IAAI;IACJ,sEAAsE;IACtE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,iBAAiB,EAAwC,EACvE,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;AACJ,CAAC"}
@@ -21,7 +21,22 @@ export interface RunStepLedgerRow {
21
21
  recipeName: string;
22
22
  at: number;
23
23
  step: RunStepResult;
24
+ /** Writer-stamped record level. Absent on rows that predate the chain. */
25
+ rv?: number;
26
+ /** ADR-0027 integrity position and previous-line hash (rv >= 1). */
27
+ iseq?: number;
28
+ prev?: string;
24
29
  }
30
+ /**
31
+ * Record level (ADR-0025's `rv` protocol; ADR-0027 for this ledger).
32
+ *
33
+ * 1: every row is written through `appendChained` and carries `iseq` and
34
+ * `prev`, stamped by the writer from the file's tail under the lock. At
35
+ * `rv >= 1` their absence is a WRITER DEFECT. Rows with no `rv` predate the
36
+ * chain; they are never re-stamped, and the `chain-start` marker commits to
37
+ * them as a block. Never default it on read.
38
+ */
39
+ export declare const RUN_STEP_LEDGER_RV = 1;
25
40
  /**
26
41
  * Is this step worth persisting mid-flight?
27
42
  *
@@ -36,8 +51,19 @@ export interface RunStepLedgerRow {
36
51
  export declare function isEvidenceBearing(step: RunStepResult): boolean;
37
52
  export declare function stepLedgerPath(dir: string): string;
38
53
  /** Append one evidence row. Never throws — losing a mid-flight row must not
39
- * take down the run that produced it. */
40
- export declare function appendStepEvidence(dir: string, row: RunStepLedgerRow, logger?: Logger): void;
54
+ * take down the run that produced it.
55
+ *
56
+ * ADR-0027: one locked, chained append. The hand-rolled "drop half the file
57
+ * at 2 MB" trim is gone; rotation is the primitive's, writes an explicit
58
+ * `rotation` marker, and the chain re-anchors across it. A failed append is
59
+ * counted in the `.write_failed` sidecar and sealed into the next row, so a
60
+ * ledger that stopped writing is distinguishable from a quiet run.
61
+ *
62
+ * `opts.maxBytes` is a TEST SEAM (like the gate ledger's `maxPersistBytes`):
63
+ * a test that must observe rotation should not write two real megabytes. */
64
+ export declare function appendStepEvidence(dir: string, row: RunStepLedgerRow, logger?: Logger, opts?: {
65
+ maxBytes?: number;
66
+ }): void;
41
67
  /**
42
68
  * Read the ledger, grouped by taskId, newest-wins per step id. Returns an empty
43
69
  * map when the file is missing or unreadable — fail-soft, exactly as before
@@ -1,9 +1,27 @@
1
- import { appendFileSync, mkdirSync, readFileSync, renameSync, statSync, writeFileSync, } from "node:fs";
1
+ import { mkdirSync, readFileSync, statSync } from "node:fs";
2
2
  import path from "node:path";
3
+ import { appendChained, isChainMarker } from "./ledgerChain.js";
3
4
  import { AGENT_STEP_TOOL, classifyActionClass } from "./workers/actionClass.js";
5
+ /**
6
+ * Record level (ADR-0025's `rv` protocol; ADR-0027 for this ledger).
7
+ *
8
+ * 1: every row is written through `appendChained` and carries `iseq` and
9
+ * `prev`, stamped by the writer from the file's tail under the lock. At
10
+ * `rv >= 1` their absence is a WRITER DEFECT. Rows with no `rv` predate the
11
+ * chain; they are never re-stamped, and the `chain-start` marker commits to
12
+ * them as a block. Never default it on read.
13
+ */
14
+ export const RUN_STEP_LEDGER_RV = 1;
4
15
  /** Cap on `run_steps.jsonl`. Rows only matter until their run reaches a
5
16
  * terminal record, so this is a crash-window buffer, not history. */
6
17
  const MAX_LEDGER_BYTES = 2 * 1024 * 1024;
18
+ /**
19
+ * Low-water target after rotation. Half the cap keeps the old "newest half
20
+ * survives" bound while letting the primitive trim to a byte target rather
21
+ * than a line ratio; a target at the cap would rotate on every append once
22
+ * the file is full (the gate ledger measured 826 rotations in one fill).
23
+ */
24
+ const ROTATE_TARGET_BYTES = MAX_LEDGER_BYTES / 2;
7
25
  /**
8
26
  * Is this step worth persisting mid-flight?
9
27
  *
@@ -28,13 +46,33 @@ export function stepLedgerPath(dir) {
28
46
  return path.join(dir, "run_steps.jsonl");
29
47
  }
30
48
  /** Append one evidence row. Never throws — losing a mid-flight row must not
31
- * take down the run that produced it. */
32
- export function appendStepEvidence(dir, row, logger) {
49
+ * take down the run that produced it.
50
+ *
51
+ * ADR-0027: one locked, chained append. The hand-rolled "drop half the file
52
+ * at 2 MB" trim is gone; rotation is the primitive's, writes an explicit
53
+ * `rotation` marker, and the chain re-anchors across it. A failed append is
54
+ * counted in the `.write_failed` sidecar and sealed into the next row, so a
55
+ * ledger that stopped writing is distinguishable from a quiet run.
56
+ *
57
+ * `opts.maxBytes` is a TEST SEAM (like the gate ledger's `maxPersistBytes`):
58
+ * a test that must observe rotation should not write two real megabytes. */
59
+ export function appendStepEvidence(dir, row, logger, opts = {}) {
33
60
  const file = stepLedgerPath(dir);
61
+ const maxBytes = opts.maxBytes ?? MAX_LEDGER_BYTES;
34
62
  try {
35
63
  mkdirSync(dir, { recursive: true, mode: 0o700 });
36
- trimIfOversized(file);
37
- appendFileSync(file, `${JSON.stringify(row)}\n`, { mode: 0o600 });
64
+ appendChained(file,
65
+ // Stamped AFTER the caller's fields so a caller cannot claim a level.
66
+ { ...row, rv: RUN_STEP_LEDGER_RV }, {
67
+ mode: 0o600,
68
+ maxBytes,
69
+ rotateTarget: opts.maxBytes !== undefined
70
+ ? Math.floor(maxBytes / 2)
71
+ : ROTATE_TARGET_BYTES,
72
+ onRotate: ({ dropped, before }) => {
73
+ logger?.warn?.(`[runsteps] rotate dropped ${dropped} of ${before} row(s) (oldest first) to get under ${maxBytes} bytes`);
74
+ },
75
+ });
38
76
  }
39
77
  catch (err) {
40
78
  logger?.warn?.(`[runsteps] append failed: ${err instanceof Error ? err.message : String(err)}`);
@@ -61,6 +99,10 @@ export function loadStepEvidence(dir, logger) {
61
99
  continue;
62
100
  try {
63
101
  const parsed = JSON.parse(line);
102
+ // ADR-0027 marker rows are metadata, never step evidence — skipped by
103
+ // KIND, so a marker that happened to carry a taskId could not sneak in.
104
+ if (isChainMarker(parsed))
105
+ continue;
64
106
  if (!parsed?.taskId || !parsed.step?.id)
65
107
  continue;
66
108
  let steps = byTask.get(parsed.taskId);
@@ -80,23 +122,4 @@ export function loadStepEvidence(dir, logger) {
80
122
  out.set(taskId, Array.from(steps.values()));
81
123
  return out;
82
124
  }
83
- /** Keep the newest half when the buffer exceeds its cap. */
84
- function trimIfOversized(file) {
85
- let size;
86
- try {
87
- size = statSync(file).size;
88
- }
89
- catch {
90
- return;
91
- }
92
- if (size <= MAX_LEDGER_BYTES)
93
- return;
94
- const lines = readFileSync(file, "utf-8").split("\n").filter(Boolean);
95
- const keep = lines.slice(Math.floor(lines.length / 2));
96
- const tmp = `${file}.tmp`;
97
- writeFileSync(tmp, keep.length > 0 ? `${keep.join("\n")}\n` : "", {
98
- mode: 0o600,
99
- });
100
- renameSync(tmp, file);
101
- }
102
125
  //# sourceMappingURL=runStepLedger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runStepLedger.js","sourceRoot":"","sources":["../src/runStepLedger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runStepLedger.js","sourceRoot":"","sources":["../src/runStepLedger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchwork-os",
3
- "version": "1.2.0-beta.2.canary.790",
3
+ "version": "1.2.0-beta.2.canary.792",
4
4
  "description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",