sibyl-system 1.5.1 → 1.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.
package/README.md CHANGED
@@ -223,6 +223,13 @@ Summary:
223
223
  unreachable to group/other regardless of umask — v1.4.0 private-dir law) —
224
224
  role homes, transcripts, pidfiles, CHECKSUMS.
225
225
  - Voter/worker turns run with `bash`, `edit`, and `write` disabled per prompt.
226
+ - Supply-chain seating (v1.6.0): actions SHA-pinned, CI installs with
227
+ `--ignore-scripts`, weekly scheduled `npm audit` witnessed server-side by the
228
+ pre-publish liveness gate (fresh green run bound to the released commit).
229
+ Honest status ledger of every vector, open or closed: [OPEN-VECTORS.md](OPEN-VECTORS.md).
230
+ - Engine sessions this product spawns are retained under bounded ages
231
+ (`npm run reap`, dry-run by default; audit conveners >= 90 days per owner
232
+ ruling, reconciliation face preserved in the sealed manifest).
226
233
 
227
234
  ## Architecture (`src/`)
228
235
 
@@ -282,7 +289,8 @@ PLAN→MINT→DISPATCH→AGGREGATE pipeline over ordinary child sessions.
282
289
 
283
290
  ```bash
284
291
  npm run typecheck # tsc --noEmit, strict + noUncheckedIndexedAccess + exactOptionalPropertyTypes
285
- npm test # full unit suite, fully offline (no network, no LLM; 480 at v1.5.0 — the run prints the exact count)
292
+ npm test # full unit suite, fully offline (no network, no LLM; 497 at v1.6.0 — the run prints the exact count)
293
+ npm run reap # session-retention reaper: dry-run manifest by default; -- --apply deletes via the engine API
286
294
  npm run coverage # offline suite + coverage floor ratchet (lines 55 / branches 80 / funcs 90 — floors only move up; CI door)
287
295
  npm run build # esbuild bundle → dist/index.js + dist/cli.js (ESM)
288
296
  node smoke/run-smoke.mjs # offline smoke of the shipped surface (see smoke/README.md)
package/dist/cli.js CHANGED
@@ -14288,8 +14288,8 @@ function registry() {
14288
14288
  var globalRegistry = globalThis.__zod_globalRegistry;
14289
14289
 
14290
14290
  // node_modules/zod/v4/core/compile.js
14291
- var INVALID = Symbol.for("zod.compile.invalid");
14292
- var FALLBACK_FLAG = Symbol.for("zod.compile.fallback");
14291
+ var INVALID = /* @__PURE__ */ Symbol.for("zod.compile.invalid");
14292
+ var FALLBACK_FLAG = /* @__PURE__ */ Symbol.for("zod.compile.fallback");
14293
14293
  var ZodCompileAsyncError = class extends Error {
14294
14294
  constructor(message = "z.compile does not support async refinements, transforms, or checks") {
14295
14295
  super(message);
@@ -18077,7 +18077,7 @@ var nonoptionalProcessor = (schema, ctx, _json, params) => {
18077
18077
  const seen = ctx.seen.get(schema);
18078
18078
  seen.ref = def.innerType;
18079
18079
  };
18080
- var UNREPRESENTABLE_DEFAULT = Symbol();
18080
+ var UNREPRESENTABLE_DEFAULT = /* @__PURE__ */ Symbol();
18081
18081
  function serializeDefaultValue(value, schema, ctx, json2, params) {
18082
18082
  let unrepresentable = false;
18083
18083
  const serialized = JSON.stringify(value, (_, val) => {
@@ -20841,7 +20841,7 @@ function fromJSONSchema(schema, params) {
20841
20841
  }
20842
20842
 
20843
20843
  // node_modules/zod/v4/core/visit.js
20844
- var RESOLVING = Symbol("z.visit/resolving");
20844
+ var RESOLVING = /* @__PURE__ */ Symbol("z.visit/resolving");
20845
20845
  function visit(schema, fnOrHandlers) {
20846
20846
  const fn = typeof fnOrHandlers === "function" ? fnOrHandlers : (node2, rewritten) => {
20847
20847
  const h = fnOrHandlers[node2._zod.def.type];
package/dist/index.js CHANGED
@@ -12952,8 +12952,8 @@ function registry() {
12952
12952
  var globalRegistry = globalThis.__zod_globalRegistry;
12953
12953
 
12954
12954
  // node_modules/zod/v4/core/compile.js
12955
- var INVALID = Symbol.for("zod.compile.invalid");
12956
- var FALLBACK_FLAG = Symbol.for("zod.compile.fallback");
12955
+ var INVALID = /* @__PURE__ */ Symbol.for("zod.compile.invalid");
12956
+ var FALLBACK_FLAG = /* @__PURE__ */ Symbol.for("zod.compile.fallback");
12957
12957
  var ZodCompileAsyncError = class extends Error {
12958
12958
  constructor(message = "z.compile does not support async refinements, transforms, or checks") {
12959
12959
  super(message);
@@ -16741,7 +16741,7 @@ var nonoptionalProcessor = (schema, ctx, _json, params) => {
16741
16741
  const seen = ctx.seen.get(schema);
16742
16742
  seen.ref = def.innerType;
16743
16743
  };
16744
- var UNREPRESENTABLE_DEFAULT = Symbol();
16744
+ var UNREPRESENTABLE_DEFAULT = /* @__PURE__ */ Symbol();
16745
16745
  function serializeDefaultValue(value, schema, ctx, json2, params) {
16746
16746
  let unrepresentable = false;
16747
16747
  const serialized = JSON.stringify(value, (_, val) => {
@@ -19505,7 +19505,7 @@ function fromJSONSchema(schema, params) {
19505
19505
  }
19506
19506
 
19507
19507
  // node_modules/zod/v4/core/visit.js
19508
- var RESOLVING = Symbol("z.visit/resolving");
19508
+ var RESOLVING = /* @__PURE__ */ Symbol("z.visit/resolving");
19509
19509
  function visit(schema, fnOrHandlers) {
19510
19510
  const fn = typeof fnOrHandlers === "function" ? fnOrHandlers : (node2, rewritten) => {
19511
19511
  const h = fnOrHandlers[node2._zod.def.type];
@@ -21505,7 +21505,7 @@ async function artifactHash(raw, dir) {
21505
21505
  }
21506
21506
  function buildAuditTool(deps) {
21507
21507
  return tool({
21508
- description: "SIBYL independent audit lane: convenes the three-councilor consult from a FRESH engine-provisioned root session (structurally non-kin to any drafting chain), so the ballot enters the effective path without the caller's identity touching it. Emits an audit receipt \u2014 auditor session id (retained, DB-reconcilable), artifact sha256 bound at start and end, verdict face. REFUSES (no receipt) if the fresh convener resolves to anything but INDEPENDENT, or the artifact drifts mid-ballot (VOID).",
21508
+ description: "SIBYL independent audit lane: convenes the three-councilor consult from a FRESH engine-provisioned root session (structurally non-kin to any drafting chain), so the ballot enters the effective path without the caller's identity touching it. Emits an audit receipt \u2014 auditor session id (retained >=90 days, then reconcilable via the sealed reap manifests), artifact sha256 bound at start and end, verdict face. REFUSES (no receipt) if the fresh convener resolves to anything but INDEPENDENT, or the artifact drifts mid-ballot (VOID).",
21509
21509
  args: {
21510
21510
  artifact: tool.schema.string().min(1).describe("Path to the artifact, or its inline content (multi-line)."),
21511
21511
  goal: tool.schema.string().min(1).describe("The question the audit must answer.")
@@ -21556,7 +21556,7 @@ async function auditExecute(deps, args, ctx) {
21556
21556
  return [
21557
21557
  `SIBYL AUDIT RECEIPT run=${runId}`,
21558
21558
  ` verdict=${v?.verdict ?? "unknown"} (${counts}) rules=${rules}`,
21559
- ` auditor-convener=${auditor} (fresh engine-provisioned root; session row RETAINED for DB reconciliation)`,
21559
+ ` auditor-convener=${auditor} (fresh engine-provisioned root; session row retained >=90 days, after which sealed reap manifests carry the reconciliation face)`,
21560
21560
  ` requested-by=${caller} \u2014 recorded as ledger data only; it neither convenes nor votes`,
21561
21561
  ` artifact-sha256=${shaStart} (re-hashed after the ballot, identical \u2014 the receipt binds to these bytes)`,
21562
21562
  "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sibyl-system",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Sibyl-System: democratic-centralism review chamber (one conclusion, one voice) + fail-closed council voting + dynamic swarm plugin for OpenCode",
@@ -33,7 +33,8 @@
33
33
  "build": "esbuild src/index.ts --bundle --format=esm --platform=node --outfile=dist/index.js && esbuild src/cli.ts --bundle --format=esm --platform=node --banner:js='#!/usr/bin/env node' --outfile=dist/cli.js",
34
34
  "test": "node --import ./tools/register-ts.mjs --test test/*.test.ts",
35
35
  "coverage": "node --import ./tools/register-ts.mjs --test --experimental-test-coverage \"--test-coverage-include=src/**\" --test-coverage-lines=55 --test-coverage-branches=80 --test-coverage-functions=90 test/*.test.ts",
36
- "prepack": "npm run build"
36
+ "prepack": "npm run build",
37
+ "reap": "node --no-warnings scripts/session-reap.mjs"
37
38
  },
38
39
  "dependencies": {
39
40
  "@opencode-ai/plugin": "1.19.4",
@@ -41,7 +42,7 @@
41
42
  },
42
43
  "devDependencies": {
43
44
  "@types/node": "^22",
44
- "esbuild": "^0.25.0",
45
+ "esbuild": "^0.28.2",
45
46
  "typescript": "^5"
46
47
  },
47
48
  "bin": {