@polderlabs/bizar-omp 0.6.7 → 0.7.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 (77) hide show
  1. package/README.md +8 -8
  2. package/dist/cli/doctor.d.ts +4 -4
  3. package/dist/cli/update-ink.d.ts +2 -1
  4. package/dist/cli/update-ink.d.ts.map +1 -1
  5. package/dist/core/acceptance.d.ts.map +1 -1
  6. package/dist/core/acceptance.js +17 -3
  7. package/dist/core/acceptance.js.map +1 -1
  8. package/dist/core/recovery.d.ts.map +1 -1
  9. package/dist/core/recovery.js +52 -3
  10. package/dist/core/recovery.js.map +1 -1
  11. package/dist/core/redaction.d.ts +22 -0
  12. package/dist/core/redaction.d.ts.map +1 -0
  13. package/dist/core/redaction.js +103 -0
  14. package/dist/core/redaction.js.map +1 -0
  15. package/dist/core/transitions.d.ts +3 -2
  16. package/dist/core/transitions.d.ts.map +1 -1
  17. package/dist/core/transitions.js +34 -8
  18. package/dist/core/transitions.js.map +1 -1
  19. package/dist/core/types.d.ts +33 -1
  20. package/dist/core/types.d.ts.map +1 -1
  21. package/dist/extension.d.ts +14 -3
  22. package/dist/extension.d.ts.map +1 -1
  23. package/dist/extension.js +92 -36
  24. package/dist/extension.js.map +1 -1
  25. package/dist/omp/compatibility.d.ts +5 -5
  26. package/dist/omp/compatibility.d.ts.map +1 -1
  27. package/dist/omp/compatibility.js +2 -2
  28. package/dist/omp/compatibility.js.map +1 -1
  29. package/dist/omp/dispatch-admission.d.ts +4 -1
  30. package/dist/omp/dispatch-admission.d.ts.map +1 -1
  31. package/dist/omp/dispatch-admission.js +2 -2
  32. package/dist/omp/dispatch-admission.js.map +1 -1
  33. package/dist/omp/result-reconciliation.js +1 -1
  34. package/dist/omp/result-reconciliation.js.map +1 -1
  35. package/dist/omp/rpc.d.ts +4 -1
  36. package/dist/omp/rpc.d.ts.map +1 -1
  37. package/dist/services/candidate-verify.d.ts +34 -0
  38. package/dist/services/candidate-verify.d.ts.map +1 -0
  39. package/dist/services/candidate-verify.js +141 -0
  40. package/dist/services/candidate-verify.js.map +1 -0
  41. package/dist/storage/journal.d.ts.map +1 -1
  42. package/dist/storage/journal.js +6 -21
  43. package/dist/storage/journal.js.map +1 -1
  44. package/dist/storage/lease.d.ts +16 -0
  45. package/dist/storage/lease.d.ts.map +1 -0
  46. package/dist/storage/lease.js +236 -0
  47. package/dist/storage/lease.js.map +1 -0
  48. package/dist/storage/repository-identity.d.ts.map +1 -1
  49. package/dist/storage/repository-identity.js +1 -0
  50. package/dist/storage/repository-identity.js.map +1 -1
  51. package/dist/storage/resources.d.ts.map +1 -1
  52. package/dist/storage/resources.js +49 -22
  53. package/dist/storage/resources.js.map +1 -1
  54. package/dist/tools/integrate.d.ts.map +1 -1
  55. package/dist/tools/integrate.js +66 -23
  56. package/dist/tools/integrate.js.map +1 -1
  57. package/dist/tools/verify.d.ts.map +1 -1
  58. package/dist/tools/verify.js +43 -32
  59. package/dist/tools/verify.js.map +1 -1
  60. package/dist/tools/workflow.d.ts +12 -2
  61. package/dist/tools/workflow.d.ts.map +1 -1
  62. package/dist/tools/workflow.js +54 -7
  63. package/dist/tools/workflow.js.map +1 -1
  64. package/docs/compatibility/baseline.json +9 -8
  65. package/docs/compatibility/supported-surfaces.json +2 -1
  66. package/docs/releases/0.6.8.md +11 -0
  67. package/docs/releases/native-stable.md +1 -1
  68. package/docs/releases/npm-publishing.md +1 -1
  69. package/docs/releases/support-matrix.md +1 -1
  70. package/package.json +2 -2
  71. package/schemas/evidence-record.schema.json +29 -3
  72. package/schemas/workflow-run.schema.json +10 -3
  73. package/skills/bizar-omp/SKILL.md +2 -1
  74. package/skills/omp-native-development/SKILL.md +1 -1
  75. package/skills/omp-native-development/references/accuracy-and-versioning.md +1 -1
  76. package/skills/omp-native-development/references/source-manifest.json +3 -3
  77. package/optional/openkan/index.ts +0 -3
package/README.md CHANGED
@@ -3,8 +3,8 @@
3
3
 
4
4
  <p>
5
5
  <a href="https://www.npmjs.com/package/@polderlabs/bizar-omp"><img src="https://img.shields.io/npm/v/%40polderlabs%2Fbizar-omp?style=flat-square&color=0f766e&label=npm" alt="npm version" /></a>
6
- <a href="https://github.com/PolderLabsVOF/BizarHarness-OMP/releases"><img src="https://img.shields.io/github/v/release/PolderLabsVOF/BizarHarness-OMP?style=flat-square&color=2563eb&label=release" alt="latest GitHub release" /></a>
7
- <img src="https://img.shields.io/badge/OMP-18.2.7-2563eb?style=flat-square" alt="OMP 18.2.7" />
6
+ <a href="https://github.com/PolderLabs/BizarHarness-OMP/releases"><img src="https://img.shields.io/github/v/release/PolderLabs/BizarHarness-OMP?style=flat-square&color=2563eb&label=release" alt="latest GitHub release" /></a>
7
+ <img src="https://img.shields.io/badge/OMP-18.2.8-2563eb?style=flat-square" alt="OMP 18.2.8" />
8
8
  <img src="https://img.shields.io/badge/Node.js-22%2B-18181b?style=flat-square&logo=nodedotjs&logoColor=5fa04e" alt="Node.js 22 or newer" />
9
9
  <img src="https://img.shields.io/badge/Bun-1.3.14%2B-18181b?style=flat-square&logo=bun&logoColor=fbf0df" alt="Bun 1.3.14 or newer" />
10
10
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-18181b?style=flat-square" alt="MIT license" /></a>
@@ -69,8 +69,8 @@ Bizar does not replace OMP's task system, add a parallel scheduler, or provide a
69
69
 
70
70
  - Node.js 22 or newer
71
71
  - Bun 1.3.14 or newer
72
- - OMP 18.2.7 on `PATH`
73
- - OMP 18.2.6, 18.2.5, and 18.2.4 remain regression-qualified
72
+ - OMP 18.2.8 on `PATH`
73
+ - OMP 18.2.7, 18.2.6, 18.2.5, 18.2.4 remain regression-qualified
74
74
  - tmux on Linux and macOS, or [psmux](https://github.com/psmux/psmux) on Windows for durable sessions
75
75
 
76
76
  Check the host before installing:
@@ -101,7 +101,7 @@ The installer:
101
101
  For a reproducible install, pin the version:
102
102
 
103
103
  ```sh
104
- npx --yes @polderlabs/bizar-omp@0.6.7 setup
104
+ npx --yes @polderlabs/bizar-omp@0.6.8 setup
105
105
  ```
106
106
 
107
107
  For a named OMP profile or a non-standard OMP binary:
@@ -386,7 +386,7 @@ The role names are selectors, not guarantees of speed, cost, provider, or model
386
386
 
387
387
  ### Qualification boundary
388
388
 
389
- The 0.6.7 release ships the `omb a` alias for the agents view, an interactive Ink progress panel for `omb update`, and a live Server-Sent Events chat stream with connection status in the dashboard, published on [npm](https://www.npmjs.com/package/@polderlabs/bizar-omp) and available as a [GitHub release](https://github.com/PolderLabsVOF/BizarHarness-OMP/releases/tag/v0.6.7).
389
+ The 0.6.7 release ships the `omb a` alias for the agents view, an interactive Ink progress panel for `omb update`, and a live Server-Sent Events chat stream with connection status in the dashboard, published on [npm](https://www.npmjs.com/package/@polderlabs/bizar-omp) and available as a [GitHub release](https://github.com/PolderLabs/BizarHarness-OMP/releases/tag/v0.6.7).
390
390
 
391
391
  The release does not claim OS sandboxing, provider model quality, universal native task or eval interception, automatic cleanup of an unqualified native isolation backend, or Claude Code/AO compatibility. See the [support matrix](docs/releases/support-matrix.md) for the current boundary.
392
392
 
@@ -394,10 +394,10 @@ The release does not claim OS sandboxing, provider model quality, universal nati
394
394
 
395
395
  | Component | Qualified baseline |
396
396
  | --- | --- |
397
- | OMP | 18.2.7, with 18.2.6, 18.2.5, and 18.2.4 regression-qualified |
397
+ | OMP | 18.2.8, with 18.2.6, 18.2.5, and 18.2.4 regression-qualified |
398
398
  | Node.js | 22.x and 24.x |
399
399
  | Bun | 1.3.14 compatibility job |
400
- | Package | `@polderlabs/bizar-omp@0.6.7` |
400
+ | Package | `@polderlabs/bizar-omp@0.6.8` |
401
401
 
402
402
  Upstream OMP changes require a new compatibility baseline and contract run. The package does not widen a version range to hide an unqualified runtime.
403
403
 
@@ -7,8 +7,8 @@ export declare function doctor(cwd?: string): {
7
7
  invalidLines: number;
8
8
  };
9
9
  omp: {
10
- readonly version: "18.2.7";
11
- readonly commit: "d716bcf60ab0a2e7ece1fdf382c0d143fef1f307";
10
+ readonly version: "18.2.8";
11
+ readonly commit: "5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c";
12
12
  };
13
13
  bun: string;
14
14
  multiplexer: {
@@ -18,8 +18,8 @@ export declare function doctor(cwd?: string): {
18
18
  };
19
19
  compatibility: {
20
20
  supportedBaseline: {
21
- readonly version: "18.2.7";
22
- readonly commit: "d716bcf60ab0a2e7ece1fdf382c0d143fef1f307";
21
+ readonly version: "18.2.8";
22
+ readonly commit: "5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c";
23
23
  };
24
24
  bun: string;
25
25
  probe: import("../omp/compatibility.js").RuntimeProbe;
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import { type UpdateReport, type UpdateServices } from "./omb-update.js";
2
3
  export type UpdateStageState = "pending" | "running" | "ok" | "failed";
3
4
  export declare const UPDATE_STAGE_KEYS: readonly ["checking", "installing", "refreshing"];
@@ -37,7 +38,7 @@ interface UpdateUiProps {
37
38
  * Repainted by the caller on every stage transition. Ctrl+C exits through Ink's
38
39
  * own handler and is re-bound here so the panel is never a keyboard trap.
39
40
  */
40
- export declare function UpdateUi({ progress, report }: UpdateUiProps): import("react/jsx-runtime").JSX.Element;
41
+ export declare function UpdateUi({ progress, report }: UpdateUiProps): React.JSX.Element;
41
42
  /**
42
43
  * Render the interactive update view and return its exit code. Ink repaints on
43
44
  * every stage transition; the final frame carries the outcome summary.
@@ -1 +1 @@
1
- {"version":3,"file":"update-ink.d.ts","sourceRoot":"","sources":["../../src/cli/update-ink.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA+C,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEvE,eAAO,MAAM,iBAAiB,YAAI,UAAU,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AACnF,MAAM,MAAM,cAAc,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAI9D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAK/D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAWhE;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AASD;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GACnD,OAAO,CAAC,eAAe,CAAC,CA4F1B;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAK/E;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,2CAqC3D;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;CAAO,GACzE,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
1
+ {"version":3,"file":"update-ink.d.ts","sourceRoot":"","sources":["../../src/cli/update-ink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAA+C,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEvE,eAAO,MAAM,iBAAiB,YAAI,UAAU,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AACnF,MAAM,MAAM,cAAc,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAI9D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAK/D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAWhE;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AASD;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GACnD,OAAO,CAAC,eAAe,CAAC,CA4F1B;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAK/E;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,qBAqC3D;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;CAAO,GACzE,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"acceptance.d.ts","sourceRoot":"","sources":["../../src/core/acceptance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAkB,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhH,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,qBAAqB,GAAG,wBAAwB,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AACtT,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAAE;AACpJ,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOxD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI9G;AAQD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,GAAG,kBAAkB,CAsCjH"}
1
+ {"version":3,"file":"acceptance.d.ts","sourceRoot":"","sources":["../../src/core/acceptance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAkB,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhH,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,qBAAqB,GAAG,wBAAwB,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AACtT,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAAE;AACpJ,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOxD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAgB9G;AAQD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,GAAG,kBAAkB,CAuCjH"}
@@ -1,5 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { ContractError } from "./errors.js";
3
+ import { SECRET_NAME } from "./redaction.js";
3
4
  export function canonicalSpecHash(value) {
4
5
  const normalize = (input) => {
5
6
  if (Array.isArray(input))
@@ -11,9 +12,21 @@ export function canonicalSpecHash(value) {
11
12
  return createHash("sha256").update(JSON.stringify(normalize(value))).digest("hex");
12
13
  }
13
14
  export function freezeCheckSpec(spec) {
15
+ // R005: reject secret-shaped literals UNLESS the value side is a redaction marker.
14
16
  const serialized = JSON.stringify(spec);
15
- if (/(?:authorization|api[-_]?key|access[-_]?key|token|secret|password)\s*[:=]/i.test(serialized))
17
+ if (/(?:authorization|api[-_]?key|access[-_]?key|token|secret|password)\s*[:=]\s*(?!\[REDACTED\])/i.test(serialized))
16
18
  throw new ContractError("CheckSpec contains a secret-shaped literal");
19
+ // R005 split-argv scan: SECRET_NAME flag followed by a value that does not look
20
+ // like a redaction marker is rejected. This catches `--token VALUE` style leaks
21
+ // that the JSON regex misses.
22
+ const REDACTED = /\[REDACTED\]/;
23
+ for (let i = 0; i < spec.argumentTemplate.length - 1; i++) {
24
+ const flag = spec.argumentTemplate[i];
25
+ const value = spec.argumentTemplate[i + 1];
26
+ if (typeof flag === "string" && SECRET_NAME.test(flag) && typeof value === "string" && !REDACTED.test(value)) {
27
+ throw new ContractError("CheckSpec contains a secret-shaped argument value", { flag });
28
+ }
29
+ }
17
30
  return Object.freeze({ ...spec, evaluatorHash: spec.evaluatorHash ?? canonicalSpecHash({ runner: spec.runner, executable: spec.executable, argumentTemplate: spec.argumentTemplate, cwdRule: spec.cwdRule, inputDigests: spec.inputDigests, environmentPolicy: spec.environmentPolicy, limits: spec.limits, expected: spec.expected, outputPolicy: spec.outputPolicy }) });
18
31
  }
19
32
  function candidateMatch(record, requirements) {
@@ -61,9 +74,10 @@ export function evaluateAcceptance(state, requirements) {
61
74
  coveredCriterionIds.add(criterion.id);
62
75
  }
63
76
  if (requirements.review?.required) {
64
- const review = state.evidence.filter(record => record.type === "review" && candidateMatch(record, requirements)).sort((a, b) => (a.attemptGeneration ?? 0) - (b.attemptGeneration ?? 0) || a.recordedAt.localeCompare(b.recordedAt)).at(-1);
77
+ const spec = requirements.review;
78
+ const review = state.evidence.filter(record => record.type === "review" && candidateMatch(record, requirements) && record.checkId === spec.id && (!record.reviewRevision || record.reviewRevision === spec.revision)).sort((a, b) => (a.attemptGeneration ?? 0) - (b.attemptGeneration ?? 0) || a.recordedAt.localeCompare(b.recordedAt)).at(-1);
65
79
  if (!review || review.result !== "passed" || review.stale)
66
- blockers.push({ code: "REQUIRED_REVIEW_MISSING", message: `Required review ${requirements.review.id} is missing or not passing` });
80
+ blockers.push({ code: "REQUIRED_REVIEW_MISSING", message: `Required review ${spec.id}@r${spec.revision} is missing, wrong identity/revision, or not passing` });
67
81
  else
68
82
  selectedEvidenceIds.push(review.id);
69
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../src/core/acceptance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../src/core/acceptance.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../src/core/recovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E,wBAAgB,aAAa,IAAI,aAAa,CAA8H;AAE5K,wBAAgB,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,CAsB7D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE9E;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,GAAG,aAAa,CAI/I"}
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../src/core/recovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyB7E,wBAAgB,aAAa,IAAI,aAAa,CAA+I;AAE7L,wBAAgB,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,CAqC7D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE9E;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,GAAG,aAAa,CAI/I"}
@@ -1,5 +1,31 @@
1
1
  import { ContractError, OwnershipError } from "./errors.js";
2
- export function emptySnapshot() { return { revision: 0, dispatches: [], observations: [], evidence: [], integrations: [], decisions: [], lastSequence: 0 }; }
2
+ import { objectiveHash } from "./policies.js";
3
+ const terminalDispatchStatuses = new Set(["settled", "failed", "cancelled", "unknown-outcome", "rejected"]);
4
+ function advanceDispatch(state, event) {
5
+ const current = state.dispatches.find(intent => intent.id === event.dispatch.id);
6
+ if (!current)
7
+ throw new ContractError("Dispatch state change references unknown dispatch", { dispatchId: event.dispatch.id });
8
+ if (event.observed.dispatchId !== event.dispatch.id)
9
+ throw new ContractError("Dispatch observation identity mismatch", { dispatchId: event.dispatch.id, observationDispatchId: event.observed.dispatchId });
10
+ // R011: only `status` and the documented settlement fields may mutate. Native
11
+ // lifecycle fields (nativeCallId, nativeChildId, candidateId, candidateTree) are
12
+ // populated by reconcileResult at settlement, so they are excluded from the
13
+ // immutable lock here. Everything else is structural identity and must reject.
14
+ for (const field of ["runId", "runRevision", "workItemId", "idempotencyKey", "requestedAgent", "scope", "acceptanceCriteria", "isolation", "apply", "merge", "routeClass", "routeIntent", "modelRole"]) {
15
+ if (JSON.stringify(event.dispatch[field]) !== JSON.stringify(current[field]))
16
+ throw new ContractError("Dispatch state change mutates immutable identity", { dispatchId: current.id, field });
17
+ }
18
+ const allowed = current.status === "admitted" ? new Set(["acknowledged", "settled", "failed", "cancelled", "unknown-outcome", "rejected"]) : current.status === "acknowledged" ? terminalDispatchStatuses : new Set();
19
+ if (!allowed.has(event.dispatch.status))
20
+ throw new ContractError("Dispatch state transition is not monotonic", { dispatchId: current.id, from: current.status, to: event.dispatch.status });
21
+ state.dispatches = [...state.dispatches.filter(intent => intent.id !== current.id), event.dispatch];
22
+ state.observations.push(event.observed);
23
+ if (state.run) {
24
+ const lifecycle = event.dispatch.status === "settled" ? "settled" : terminalDispatchStatuses.has(event.dispatch.status) ? "rejected" : "running";
25
+ state.run = { ...state.run, workItems: state.run.workItems.map(item => item.id === current.workItemId ? { ...item, lifecycle } : item), updatedAt: event.observed.observedAt };
26
+ }
27
+ }
28
+ export function emptySnapshot() { return { revision: 0, dispatches: [], observations: [], evidence: [], integrations: [], acceptances: [], decisions: [], lastSequence: 0 }; }
3
29
  export function replay(entries) {
4
30
  const state = emptySnapshot();
5
31
  for (const entry of entries) {
@@ -12,6 +38,7 @@ export function replay(entries) {
12
38
  state.observations = [];
13
39
  state.evidence = [];
14
40
  state.integrations = [];
41
+ state.acceptances = [];
15
42
  state.decisions = [];
16
43
  }
17
44
  else if (event.type === "run.transitioned" && state.run?.runId === event.runId) {
@@ -20,15 +47,37 @@ export function replay(entries) {
20
47
  else if (event.type === "work-item.upserted" && state.run?.runId === event.runId)
21
48
  state.run = { ...state.run, workItems: [...state.run.workItems.filter(i => i.id !== event.item.id), event.item], revision: state.run.revision + 1, updatedAt: entry.at };
22
49
  else if (event.type === "dispatch.recorded" && state.run?.runId === event.runId)
23
- state.dispatches.push(event.intent);
24
- else if (event.type === "worker.observed" && state.dispatches.some(intent => intent.id === event.observation.dispatchId))
50
+ state.dispatches = [...state.dispatches.filter(intent => intent.id !== event.intent.id), event.intent];
51
+ else if (event.type === "dispatch.state_changed" && state.run?.runId === event.runId)
52
+ advanceDispatch(state, event);
53
+ else if (event.type === "worker.observed" && state.run?.runId === event.runId) {
54
+ if (!state.dispatches.some(intent => intent.id === event.observation.dispatchId))
55
+ throw new ContractError("Worker observation references unknown dispatch", { dispatchId: event.observation.dispatchId });
25
56
  state.observations.push(event.observation);
57
+ }
58
+ else if (event.type === "worker.observed") { /* stale-run observation: silently ignored */ }
26
59
  else if (event.type === "evidence.recorded" && state.run?.runId === event.runId)
27
60
  state.evidence.push(event.evidence);
61
+ else if (event.type === "acceptance.recorded" && state.run?.runId === event.runId)
62
+ state.acceptances = [...state.acceptances.filter(receipt => receipt.workItemId !== event.receipt.workItemId || receipt.workRevision !== event.receipt.workRevision), event.receipt];
28
63
  else if (event.type === "integration.recorded" && state.run?.runId === event.runId)
29
64
  state.integrations = [...state.integrations.filter(attempt => attempt.id !== event.attempt.id), event.attempt];
30
65
  else if (event.type === "decision.recorded" && state.run?.runId === event.runId)
31
66
  state.decisions.push(event.decision);
67
+ else if (event.type === "objective.amended" && state.run?.runId === event.runId) {
68
+ const prior = state.run.objective;
69
+ const idsFor = (by) => by === "check-spec" ? prior.checkSpecs?.map(spec => spec.id) ?? prior.verificationPlan : prior.criteria?.map(criterion => criterion.id) ?? [];
70
+ const amendedIdsFor = (by, candidate) => by === "check-spec" ? candidate.checkSpecs?.map(spec => spec.id) ?? candidate.verificationPlan : candidate.criteria?.map(criterion => criterion.id) ?? [];
71
+ const priorIds = new Set(idsFor(event.by));
72
+ const amendedIds = new Set(amendedIdsFor(event.by, event.objective));
73
+ const actualAdded = [...amendedIds].filter(id => !priorIds.has(id)).sort();
74
+ const actualRemoved = [...priorIds].filter(id => !amendedIds.has(id)).sort();
75
+ if (event.added.length !== actualAdded.length || event.added.some((id, index) => id !== actualAdded[index]))
76
+ throw new ContractError("objective.amended added delta does not match the new objective", { claimed: event.added, actual: actualAdded });
77
+ if (event.removed.length !== actualRemoved.length || event.removed.some((id, index) => id !== actualRemoved[index]))
78
+ throw new ContractError("objective.amended removed delta does not match the prior objective", { claimed: event.removed, actual: actualRemoved });
79
+ state.run = { ...state.run, objective: event.objective, objectiveHash: objectiveHash(event.objective), revision: state.run.revision + 1, updatedAt: entry.at };
80
+ }
32
81
  else if (event.type === "run.cancelled" && state.run?.runId === event.runId)
33
82
  state.run = { ...state.run, phase: "cancelled", cancellation: { requested: true, reason: event.reason }, revision: state.run.revision + 1, updatedAt: entry.at };
34
83
  else if (event.type === "run.reconciled" && state.run?.runId === event.runId)
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/core/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/core/recovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { CheckSpec } from "./types.js";
2
+ export declare const SECRET_NAME: RegExp;
3
+ export declare const SAFE_ENVIRONMENT: Set<string>;
4
+ export interface RedactionResult {
5
+ redacted: string;
6
+ changed: boolean;
7
+ }
8
+ export declare function tryRedactStructured(value: string): RedactionResult;
9
+ export declare function redactText(value: string): string;
10
+ export declare function redact(value: string): {
11
+ redacted: string;
12
+ changed: boolean;
13
+ };
14
+ export declare function bounded(value: string | undefined, limit: number): string;
15
+ export declare function redactArgv(argv: readonly string[]): string[];
16
+ export declare function safeEnvironment(env: NodeJS.ProcessEnv): Record<string, string>;
17
+ export declare function persistedCommand(spec: CheckSpec): string[];
18
+ export declare function enforceOutputPolicy(spec: CheckSpec, stdout: string, stderr: string): {
19
+ stdout: string;
20
+ stderr: string;
21
+ };
22
+ //# sourceMappingURL=redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../src/core/redaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,WAAW,QAAmG,CAAC;AAC5H,eAAO,MAAM,gBAAgB,aAE3B,CAAC;AAEH,MAAM,WAAW,eAAe;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;CAAE;AAUxE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAsBlE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWhD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAK5E;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGxE;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAO5D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9E;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAG1D;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAQvH"}
@@ -0,0 +1,103 @@
1
+ import { createHash } from "node:crypto";
2
+ export const SECRET_NAME = /(?:authorization|api[-_]?key|access[-_]?key|token|secret|password|credential|private[-_]?key)/i;
3
+ export const SAFE_ENVIRONMENT = new Set([
4
+ "CI", "FORCE_COLOR", "HOME", "LANG", "LC_ALL", "LC_CTYPE", "NO_COLOR", "PATH", "SHELL", "TERM", "TMP", "TEMP", "TMPDIR", "TZ"
5
+ ]);
6
+ // Try structured JSON/YAML/header redaction first; fall back to text. R005 must catch:
7
+ // - JSON/YAML credentials,
8
+ // - Authorization / Bearer headers,
9
+ // - URL query credentials,
10
+ // - split argv ("--token VALUE"),
11
+ // - multiline private-key blocks,
12
+ // - exception messages,
13
+ // - output truncation boundaries.
14
+ export function tryRedactStructured(value) {
15
+ const trimmed = value.trim();
16
+ if (!trimmed.startsWith("{") && !trimmed.startsWith("["))
17
+ return { redacted: value, changed: false };
18
+ try {
19
+ const parsed = JSON.parse(trimmed);
20
+ let changed = false;
21
+ const walk = (key, v) => {
22
+ if (typeof v === "string") {
23
+ if (SECRET_NAME.test(key)) {
24
+ changed = true;
25
+ return "[REDACTED]";
26
+ }
27
+ // redact "Authorization: Bearer ..." patterns nested in JSON strings
28
+ const replaced = v
29
+ .replace(/Authorization\s*:\s*Bearer\s+[A-Za-z0-9._~+/-]+/gi, "Authorization: Bearer [REDACTED]")
30
+ .replace(/Authorization\s*:\s*[^\r\n,}\]]+/gi, "Authorization: [REDACTED]");
31
+ if (replaced !== v)
32
+ changed = true;
33
+ return replaced;
34
+ }
35
+ if (Array.isArray(v))
36
+ return v.map(item => walk(key, item));
37
+ if (v && typeof v === "object")
38
+ return Object.fromEntries(Object.entries(v).map(([k, val]) => [k, walk(k, val)]));
39
+ return v;
40
+ };
41
+ return { redacted: JSON.stringify(walk("", parsed), null, 2), changed };
42
+ }
43
+ catch {
44
+ return { redacted: value, changed: false };
45
+ }
46
+ }
47
+ export function redactText(value) {
48
+ return value
49
+ .replace(/"(api[_-]?key|access[_-]?key|token|secret|password|credential|private[_-]?key)"\s*:\s*"(?:[^"\\]|\\.)*"/gi, '"$1":"[REDACTED]"')
50
+ .replace(/'(api[_-]?key|access[_-]?key|token|secret|password|credential|private[_-]?key)'\s*:\s*'(?:[^'\\]|\\.)*'/gi, "'$1':'[REDACTED]'")
51
+ .replace(/"(authorization)"\s*:\s*"(?:[^"\\]|\\.)*"/gi, '"$1":"[REDACTED]"')
52
+ .replace(/([Aa]uthorization)\s*:\s*Bearer\s+[A-Za-z0-9._~+/-]+/g, "$1: Bearer [REDACTED]")
53
+ .replace(/([Aa]uthorization)\s*:\s*[^\r\n,}\]]+/g, "$1: [REDACTED]")
54
+ .replace(/(authorization|api[-_]?key|access[-_]?key|token|secret|password|credential|private[-_]?key)\s*[:=]\s*[^\s,;"'}]+/gi, "$1=[REDACTED]")
55
+ .replace(/([?&](?:token|secret|api[-_]?key|password|key)=)[^&\s]+/gi, "$1[REDACTED]")
56
+ .replace(/Bearer\s+[A-Za-z0-9._~+/-]+/gi, "Bearer [REDACTED]")
57
+ .replace(/-----BEGIN ([A-Z ]+ KEY)-----[\s\S]*?-----END \1-----/g, "-----BEGIN $1-----[REDACTED]-----END $1-----");
58
+ }
59
+ export function redact(value) {
60
+ const structured = tryRedactStructured(value);
61
+ if (structured.changed)
62
+ return structured;
63
+ const text = redactText(value);
64
+ return { redacted: text, changed: text !== value };
65
+ }
66
+ export function bounded(value, limit) {
67
+ const safe = redact(value ?? "").redacted;
68
+ return safe.length > limit ? `[TRUNCATED]\n${safe.slice(-limit)}` : safe;
69
+ }
70
+ // Split-argv credential detection: when an argv entry's left neighbor is a
71
+ // secret-shaped flag, redact the value side. R005 canary.
72
+ export function redactArgv(argv) {
73
+ return argv.map((entry, index) => {
74
+ const prev = argv[index - 1];
75
+ if (prev && SECRET_NAME.test(prev.replace(/^-+/, "")))
76
+ return "[REDACTED]";
77
+ if (index > 0 && SECRET_NAME.test(entry.split("=", 1)[0] ?? ""))
78
+ return redact(entry).redacted;
79
+ return redact(entry).redacted;
80
+ });
81
+ }
82
+ export function safeEnvironment(env) {
83
+ return Object.fromEntries(Object.entries(env).filter(([name]) => SAFE_ENVIRONMENT.has(name)).map(([name, value]) => [name, value ?? ""]));
84
+ }
85
+ // Persisted-command builder used by host and candidate verification. R005:
86
+ // never write raw argv before sanitization.
87
+ export function persistedCommand(spec) {
88
+ if (spec.executable && spec.executable.trim())
89
+ return redactArgv([spec.executable, ...spec.argumentTemplate]);
90
+ return redactArgv(spec.argumentTemplate);
91
+ }
92
+ // outputPolicy enforcement. R005: enforce structured-pass and artifact-reference modes.
93
+ export function enforceOutputPolicy(spec, stdout, stderr) {
94
+ if (spec.outputPolicy === "none")
95
+ return { stdout: "", stderr: "" };
96
+ if (spec.outputPolicy === "artifact-reference") {
97
+ const hash = createHash("sha256").update(stdout).update(stderr).digest("hex");
98
+ const ref = `[OUTPUT-ARTIFACT sha256:${hash}]`;
99
+ return { stdout: ref, stderr: "" };
100
+ }
101
+ return { stdout: bounded(stdout, spec.limits.outputBytes), stderr: bounded(stderr, spec.limits.outputBytes) };
102
+ }
103
+ //# sourceMappingURL=redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../src/core/redaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,CAAC,MAAM,WAAW,GAAG,gGAAgG,CAAC;AAC5H,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI;CAC9H,CAAC,CAAC;AAIH,uFAAuF;AACvF,2BAA2B;AAC3B,oCAAoC;AACpC,2BAA2B;AAC3B,kCAAkC;AAClC,kCAAkC;AAClC,wBAAwB;AACxB,kCAAkC;AAClC,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACrG,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,CAAU,EAAW,EAAE;YAChD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAC,OAAO,GAAG,IAAI,CAAC;oBAAC,OAAO,YAAY,CAAC;gBAAC,CAAC;gBACnE,qEAAqE;gBACrE,MAAM,QAAQ,GAAG,CAAC;qBACf,OAAO,CAAC,mDAAmD,EAAE,kCAAkC,CAAC;qBAChG,OAAO,CAAC,oCAAoC,EAAE,2BAA2B,CAAC,CAAC;gBAC9E,IAAI,QAAQ,KAAK,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC;gBACnC,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7I,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK;SACT,OAAO,CAAC,2GAA2G,EAAE,mBAAmB,CAAC;SACzI,OAAO,CAAC,2GAA2G,EAAE,mBAAmB,CAAC;SACzI,OAAO,CAAC,6CAA6C,EAAE,mBAAmB,CAAC;SAC3E,OAAO,CAAC,uDAAuD,EAAE,uBAAuB,CAAC;SACzF,OAAO,CAAC,wCAAwC,EAAE,gBAAgB,CAAC;SACnE,OAAO,CAAC,oHAAoH,EAAE,eAAe,CAAC;SAC9I,OAAO,CAAC,2DAA2D,EAAE,cAAc,CAAC;SACpF,OAAO,CAAC,+BAA+B,EAAE,mBAAmB,CAAC;SAC7D,OAAO,CAAC,wDAAwD,EAAE,8CAA8C,CAAC,CAAC;AACvH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,OAAO;QAAE,OAAO,UAAU,CAAC;IAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAyB,EAAE,KAAa;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;IAC1C,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED,2EAA2E;AAC3E,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAAE,OAAO,YAAY,CAAC;QAC3E,IAAI,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAC/F,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAsB;IACpD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAC/G,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,4CAA4C;AAC5C,MAAM,UAAU,gBAAgB,CAAC,IAAe;IAC9C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9G,OAAO,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,IAAe,EAAE,MAAc,EAAE,MAAc;IACjF,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACpE,IAAI,IAAI,CAAC,YAAY,KAAK,oBAAoB,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,2BAA2B,IAAI,GAAG,CAAC;QAC/C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;AAChH,CAAC"}
@@ -1,4 +1,5 @@
1
- import type { EvidenceRecord, JournalEvent, ObjectiveContract, RouteClass, WorkflowPhase, WorkflowRun, WorkItem } from "./types.js";
1
+ import type { CheckSpec, EvidenceRecord, JournalEvent, ObjectiveContract, RouteClass, WorkflowPhase, WorkflowRun, WorkItem } from "./types.js";
2
+ export declare function freezeObjective(objective: ObjectiveContract): ObjectiveContract;
2
3
  export declare function createRun(projectId: string, objective: ObjectiveContract, mode?: RouteClass, nativeSessionId?: string): WorkflowRun;
3
4
  export declare function addWorkItem(run: WorkflowRun, input: Omit<WorkItem, "id" | "revision" | "lifecycle" | "attempt">): WorkflowRun;
4
5
  export declare function transition(run: WorkflowRun, to: WorkflowPhase, reason: string): {
@@ -6,9 +7,9 @@ export declare function transition(run: WorkflowRun, to: WorkflowPhase, reason:
6
7
  event: JournalEvent;
7
8
  };
8
9
  export declare function acceptWorkItem(run: WorkflowRun, workItemId: string): WorkflowRun;
9
- export declare function canComplete(run: WorkflowRun, requiredChecks: string[], evidence: Pick<EvidenceRecord, "checkId" | "result" | "stale" | "targetDigest">[], ownedWork: WorkItem[], targetDigest: string): boolean;
10
10
  export declare function completeRun(run: WorkflowRun, requiredChecks: string[], evidence: EvidenceRecord[], targetDigest: string): {
11
11
  run: WorkflowRun;
12
12
  event: JournalEvent;
13
13
  };
14
+ export declare function canComplete(run: WorkflowRun, requiredChecks: Array<string | CheckSpec>, evidence: Pick<EvidenceRecord, "checkId" | "result" | "stale" | "targetDigest">[], ownedWork: WorkItem[], targetDigest: string): boolean;
14
15
  //# sourceMappingURL=transitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiBpI,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAGnI;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC,GAAG,WAAW,CAI7H;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAKzH;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAMhF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAG/M;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAKnK"}
1
+ {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAiB,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiB9J,wBAAgB,eAAe,CAAC,SAAS,EAAE,iBAAiB,GAAG,iBAAiB,CAW/E;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAGnI;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC,GAAG,WAAW,CAK7H;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAKzH;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAMhF;AACD,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAenK;AACD,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAGhO"}
@@ -1,7 +1,8 @@
1
+ import { validateDependencies } from "../services/readiness.js";
1
2
  import { createHash, randomUUID } from "node:crypto";
2
3
  import { InvalidTransitionError, ContractError } from "./errors.js";
3
4
  import { classifyRoute, objectiveHash } from "./policies.js";
4
- import { evaluateAcceptance } from "./acceptance.js";
5
+ import { evaluateAcceptance, freezeCheckSpec } from "./acceptance.js";
5
6
  const now = () => new Date().toISOString();
6
7
  const phaseTransitions = {
7
8
  created: ["orienting", "planning", "researching", "executing", "blocked", "cancelled"],
@@ -16,15 +17,28 @@ const phaseTransitions = {
16
17
  complete: [], blocked: ["orienting", "planning", "executing", "verifying", "cancelled"],
17
18
  failed: ["orienting", "planning", "executing", "cancelled"], cancelled: [],
18
19
  };
19
- export function createRun(projectId, objective, mode, nativeSessionId) {
20
+ export function freezeObjective(objective) {
20
21
  if (!objective.objective.trim() || objective.acceptanceCriteria.length === 0)
21
22
  throw new ContractError("Objective and acceptance criteria are required");
22
- return { schemaVersion: 1, runId: `run_${randomUUID()}`, projectId, nativeSessionId, objective, objectiveHash: objectiveHash(objective), revision: 0, mode: mode ?? classifyRoute({ text: objective.objective }).routeClass, phase: "created", workItems: [], cancellation: { requested: false }, createdAt: now(), updatedAt: now() };
23
+ const criteria = objective.criteria
24
+ ? objective.criteria.map((criterion, index) => ({ ...criterion, id: criterion.id || `criterion:${index + 1}`, revision: criterion.revision || 1, requiredEvidenceClasses: [...criterion.requiredEvidenceClasses] }))
25
+ : objective.acceptanceCriteria.map((description, index) => ({ id: `criterion:${index + 1}`, revision: 1, description, kind: "operator-judgment", requiredEvidenceClasses: [], applicable: true }));
26
+ return {
27
+ ...objective,
28
+ nonGoals: [...objective.nonGoals], constraints: [...objective.constraints], acceptanceCriteria: [...objective.acceptanceCriteria], verificationPlan: [...objective.verificationPlan], stopConditions: [...objective.stopConditions], userRestrictions: [...objective.userRestrictions],
29
+ criteria,
30
+ checkSpecs: objective.checkSpecs?.map(spec => freezeCheckSpec({ ...spec, argumentTemplate: [...spec.argumentTemplate], inputDigests: { ...spec.inputDigests }, limits: { ...spec.limits } })),
31
+ };
32
+ }
33
+ export function createRun(projectId, objective, mode, nativeSessionId) {
34
+ const frozen = freezeObjective(objective);
35
+ return { schemaVersion: 1, runId: `run_${randomUUID()}`, projectId, nativeSessionId, objective: frozen, objectiveHash: objectiveHash(frozen), revision: 0, mode: mode ?? classifyRoute({ text: frozen.objective }).routeClass, phase: "created", workItems: [], cancellation: { requested: false }, createdAt: now(), updatedAt: now() };
23
36
  }
24
37
  export function addWorkItem(run, input) {
25
38
  if (run.workItems.some(item => item.title === input.title))
26
39
  throw new ContractError(`Duplicate work item: ${input.title}`);
27
40
  const item = { ...input, id: `work_${createHash("sha256").update(`${run.runId}:${input.title}`).digest("hex").slice(0, 12)}`, revision: 0, lifecycle: "pending", attempt: 0 };
41
+ validateDependencies([...run.workItems, item]);
28
42
  return { ...run, revision: run.revision + 1, workItems: [...run.workItems, item], updatedAt: now() };
29
43
  }
30
44
  export function transition(run, to, reason) {
@@ -44,16 +58,28 @@ export function acceptWorkItem(run, workItemId) {
44
58
  const accepted = { ...item, lifecycle: "accepted", revision: item.revision + 1 };
45
59
  return { ...run, revision: run.revision + 1, workItems: run.workItems.map(candidate => candidate.id === item.id ? accepted : candidate), updatedAt: now() };
46
60
  }
47
- export function canComplete(run, requiredChecks, evidence, ownedWork, targetDigest) {
48
- const normalized = evidence.map((item, index) => ({ ...item, id: `legacy-evidence-${index}`, runId: run.runId, type: "test", inputDigests: {}, artifactHashes: [], provenance: { producer: "legacy", observedAt: "unknown" }, recordedAt: String(index) }));
49
- return evaluateAcceptance({ revision: run.revision, run, dispatches: [], observations: [], evidence: normalized, integrations: [], decisions: [], lastSequence: 0 }, { requiredChecks, targetDigest, ownedWork }).eligible && run.phase !== "failed";
50
- }
51
61
  export function completeRun(run, requiredChecks, evidence, targetDigest) {
52
- if (!canComplete(run, requiredChecks, evidence, run.workItems, targetDigest))
62
+ // A002: completion derives mandatory checks from the admitted objective
63
+ // contract. The caller-supplied requiredChecks are advisory only; the
64
+ // admitted contract cannot be bypassed. Weakening requires an explicit
65
+ // objective.amended event.
66
+ const admittedChecks = run.objective.checkSpecs?.length ? run.objective.checkSpecs : run.objective.verificationPlan;
67
+ if (admittedChecks.length === 0)
68
+ throw new ContractError("Completion requires a nonempty admitted verification plan");
69
+ // A002: reject when the caller attempts to weaken the admitted contract by
70
+ // supplying a strict subset that omits any admitted check.
71
+ const admittedIds = new Set(admittedChecks.map(check => typeof check === "string" ? check : check.id));
72
+ if (requiredChecks.some(check => !admittedIds.has(check)))
73
+ throw new ContractError("requiredChecks must be a subset of the admitted verification plan", { requiredChecks, admittedChecks: [...admittedIds] });
74
+ if (!canComplete(run, admittedChecks, evidence, run.workItems, targetDigest))
53
75
  throw new ContractError("Completion requires fresh checks for the current tree and no outstanding work");
54
76
  if (!["executing", "verifying", "reviewing"].includes(run.phase))
55
77
  throw new InvalidTransitionError(run.phase, "complete");
56
78
  const next = { ...run, phase: "complete", revision: run.revision + 1, updatedAt: now() };
57
79
  return { run: next, event: { type: "run.transitioned", runId: run.runId, from: run.phase, to: "complete", reason: "completion checks satisfied" } };
58
80
  }
81
+ export function canComplete(run, requiredChecks, evidence, ownedWork, targetDigest) {
82
+ const normalized = evidence.map((item, index) => ({ ...item, id: `legacy-evidence-${index}`, runId: run.runId, type: "test", inputDigests: {}, artifactHashes: [], provenance: { producer: "legacy", observedAt: "unknown" }, recordedAt: String(index) }));
83
+ return evaluateAcceptance({ revision: run.revision, run, dispatches: [], observations: [], evidence: normalized, integrations: [], acceptances: [], decisions: [], lastSequence: 0 }, { requiredChecks, targetDigest, ownedWork, criteria: run.objective.criteria, review: run.objective.reviewSpec }).eligible && run.phase !== "failed";
84
+ }
59
85
  //# sourceMappingURL=transitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"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"}