@fro.bot/systematic 3.18.2 → 3.18.4

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/HARNESSES.md CHANGED
@@ -55,13 +55,17 @@ Behavioral enforcement rides a plugin output style (`force-for-plugin: true`), w
55
55
 
56
56
  Honest capability boundary: output-style enforcement is real and applies automatically on install, but it operates at the system-prompt level — the same layer as any other instruction the model receives — so it is strong guidance, not a hard gate the model cannot violate. Coverage also differs by surface: plugin-bundled hooks fire app-wide, including in Cowork, while a project-local `.claude/settings.json` hook fires in the Code tab but not in Cowork — state or enforcement reaching Cowork sessions has to come through the plugin, not a project-local hook. Integration coverage lives in `tests/integration/claude-code.test.ts` [CC-10].
57
57
 
58
- ## Review-return validator — packaged paths
58
+ ## Review synthesis pipeline validator — packaged paths
59
59
 
60
- The raw-return and aggregate validators ship as one self-contained Node bundle,
60
+ The raw-return validator and the four-phase synthesis pipeline (`screen`, `prepare`, `merge`,
61
+ `finalize`) ship as one self-contained Node bundle,
61
62
  `skills/ce-review/scripts/validate-review.mjs`, generated from
62
63
  `src/ce-review-validator.ts` by `scripts/generate-ce-review-validator.ts` and
63
- gated by `bun run ce-review-validator:drift`. Recorded execution evidence for
64
- this surface:
64
+ gated by `bun run ce-review-validator:drift`. The bundle dispatches six subcommands (`return`,
65
+ `artifact`, `screen`, `prepare`, `merge`, `finalize`) through one shared exit-code vocabulary (0
66
+ ok, 1 rejection/oversized/invalid UTF-8, 2 usage/TTY/read failure) and one exception boundary;
67
+ `merge` and `finalize` run through one shared strict-JSON stdin runner bounded by
68
+ `AGGREGATE_STDIN_BYTE_CAP`. Recorded execution evidence for this surface:
65
69
 
66
70
  - **npm / OpenCode / Pi package layout** — real Node execution from an extracted
67
71
  `npm pack --ignore-scripts` archive, resolving the script through its packaged
@@ -4,14 +4,55 @@ import { type ReadChunk } from './lib/review-return-validator.js';
4
4
  * validator shim (`skills/ce-review/scripts/validate-review.mjs`).
5
5
  *
6
6
  * This is a thin packaging compatibility shim, not a public extension point:
7
- * it dispatches exactly two subcommands and owns no validation logic itself.
7
+ * it dispatches exactly six subcommands and owns no validation logic
8
+ * beyond `screen`'s flag parsing and stdin plumbing.
8
9
  * - `return` -> the bounded raw persona-return validator (stdin).
9
10
  * - `artifact` -> the existing aggregate review-artifact validator.
11
+ * - `screen` -> executable reviewer-return admission (`screenReviewReturn`),
12
+ * reusing the same bounded stdin reader as `return`.
13
+ * - `prepare` -> executable candidate preparation (`prepareReviewCandidates`),
14
+ * reusing the same bounded stdin reader with the larger
15
+ * aggregate byte cap.
16
+ * - `merge` -> executable adjudication application
17
+ * (`applyReviewAdjudication`), reusing the same bounded
18
+ * stdin reader with the aggregate byte cap.
19
+ * - `finalize` -> executable finalize-envelope synthesis (`finalizeReview`),
20
+ * reusing the same bounded stdin reader with the aggregate
21
+ * byte cap.
10
22
  *
11
23
  * It exists because shipped skill layouts cannot all rely on the npm CLI or
12
24
  * `dist/`; every harness invokes the committed bundle through `SKILL_DIR`.
13
25
  */
14
- export declare const CE_REVIEW_VALIDATOR_USAGE = "Usage: node validate-review.mjs <return|artifact> [...]";
26
+ export declare const CE_REVIEW_VALIDATOR_USAGE = "Usage: node validate-review.mjs <return|artifact|screen|prepare|merge|finalize> [...]";
27
+ export declare const CE_REVIEW_SCREEN_USAGE = "Usage: node validate-review.mjs screen --reviewer <name> --harness <opencode|pi|claude-code>";
28
+ export declare const CE_REVIEW_SCREEN_STDIN_TTY_MESSAGE = "screen reads one raw reviewer return from stdin; interactive input is not supported";
29
+ export declare const CE_REVIEW_SCREEN_STDIN_READ_FAILED_MESSAGE = "screen could not read the reviewer return from stdin";
30
+ export declare const CE_REVIEW_SCREEN_STDIN_OVERSIZED_MESSAGE = "screen input exceeds the 1 MiB limit";
31
+ export declare const CE_REVIEW_SCREEN_STDIN_INVALID_UTF8_MESSAGE = "screen input is not valid UTF-8";
32
+ export declare const CE_REVIEW_SCREEN_STDIN_EMPTY_MESSAGE = "screen received empty stdin";
33
+ export declare const CE_REVIEW_SCREEN_REJECTED_MESSAGE = "screen rejected the reviewer return";
34
+ export declare const CE_REVIEW_SCREEN_INTERNAL_ERROR_MESSAGE = "ce-review-validator: internal error";
35
+ export declare const CE_REVIEW_PREPARE_USAGE = "Usage: node validate-review.mjs prepare";
36
+ export declare const CE_REVIEW_PREPARE_STDIN_TTY_MESSAGE = "prepare reads one aggregate JSON envelope from stdin; interactive input is not supported";
37
+ export declare const CE_REVIEW_PREPARE_STDIN_READ_FAILED_MESSAGE = "prepare could not read the aggregate envelope from stdin";
38
+ export declare const CE_REVIEW_PREPARE_STDIN_OVERSIZED_MESSAGE = "prepare input exceeds the aggregate byte cap";
39
+ export declare const CE_REVIEW_PREPARE_STDIN_INVALID_UTF8_MESSAGE = "prepare input is not valid UTF-8";
40
+ export declare const CE_REVIEW_PREPARE_STDIN_EMPTY_MESSAGE = "prepare received empty stdin";
41
+ export declare const CE_REVIEW_PREPARE_REJECTED_MESSAGE = "prepare rejected the aggregate envelope";
42
+ export declare const CE_REVIEW_MERGE_USAGE = "Usage: node validate-review.mjs merge";
43
+ export declare const CE_REVIEW_MERGE_STDIN_TTY_MESSAGE = "merge reads one aggregate JSON envelope from stdin; interactive input is not supported";
44
+ export declare const CE_REVIEW_MERGE_STDIN_READ_FAILED_MESSAGE = "merge could not read the aggregate envelope from stdin";
45
+ export declare const CE_REVIEW_MERGE_STDIN_OVERSIZED_MESSAGE = "merge input exceeds the aggregate byte cap";
46
+ export declare const CE_REVIEW_MERGE_STDIN_INVALID_UTF8_MESSAGE = "merge input is not valid UTF-8";
47
+ export declare const CE_REVIEW_MERGE_STDIN_EMPTY_MESSAGE = "merge received empty stdin";
48
+ export declare const CE_REVIEW_MERGE_REJECTED_MESSAGE = "merge rejected the aggregate envelope";
49
+ export declare const CE_REVIEW_FINALIZE_USAGE = "Usage: node validate-review.mjs finalize";
50
+ export declare const CE_REVIEW_FINALIZE_STDIN_TTY_MESSAGE = "finalize reads one aggregate JSON envelope from stdin; interactive input is not supported";
51
+ export declare const CE_REVIEW_FINALIZE_STDIN_READ_FAILED_MESSAGE = "finalize could not read the aggregate envelope from stdin";
52
+ export declare const CE_REVIEW_FINALIZE_STDIN_OVERSIZED_MESSAGE = "finalize input exceeds the aggregate byte cap";
53
+ export declare const CE_REVIEW_FINALIZE_STDIN_INVALID_UTF8_MESSAGE = "finalize input is not valid UTF-8";
54
+ export declare const CE_REVIEW_FINALIZE_STDIN_EMPTY_MESSAGE = "finalize received empty stdin";
55
+ export declare const CE_REVIEW_FINALIZE_REJECTED_MESSAGE = "finalize rejected the aggregate envelope";
15
56
  export interface CeReviewValidatorOptions {
16
57
  readonly argv: readonly string[];
17
58
  readonly cwd?: string;
package/dist/cli.js CHANGED
@@ -33,7 +33,7 @@ import {
33
33
  findCommandsInDir,
34
34
  findSkillsInDir,
35
35
  discoverSkills
36
- } from "./index-nrgffx9y.js";
36
+ } from "./index-be0zwq50.js";
37
37
  var __defProp = Object.defineProperty;
38
38
  var __returnValue = (v) => v;
39
39
  function __exportSetter(name, newValue) {
@@ -831,7 +831,7 @@ function buildCapabilitySnapshot(options) {
831
831
  options.outputSink?.(serialized);
832
832
  return snapshot;
833
833
  }
834
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/classic/iso.js
834
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/iso.js
835
835
  var exports_iso = {};
836
836
  __export(exports_iso, {
837
837
  ZodISODate: () => ZodISODate,
@@ -2204,7 +2204,6 @@ var REVIEW_ARTIFACT_CUSTOM_MESSAGES = [
2204
2204
  "provenance.agreement_credit must not contain duplicate reviewers",
2205
2205
  "provenance.agreement_credit must not overlap provenance.submitters",
2206
2206
  "provenance.agreement_credit requires an eligible returned persona with admitted evidence",
2207
- "satisfied risk coverage must cite a validated finding on the lost persona selection surface",
2208
2207
  "satisfied risk coverage must cite an admitted ledger row owned by another persona"
2209
2208
  ];
2210
2209
  var boundedText = (maxLength) => string().min(1).max(maxLength).regex(/\S/);
@@ -2243,7 +2242,13 @@ var RISK_CRITICAL_PERSONAS = [
2243
2242
  ];
2244
2243
  var RiskCriticalPersonaSchema = _enum(RISK_CRITICAL_PERSONAS);
2245
2244
  var FindingTitleSchema = boundedText(256);
2246
- var SeveritySchema = _enum(["P0", "P1", "P2", "P3", "unknown"]);
2245
+ var SeveritySchema = _enum([
2246
+ "P0",
2247
+ "P1",
2248
+ "P2",
2249
+ "P3",
2250
+ "unknown"
2251
+ ]);
2247
2252
  var FindingSeveritySchema = SeveritySchema.exclude(["unknown"]);
2248
2253
  var AutofixClassSchema = _enum([
2249
2254
  "safe_auto",
@@ -2592,17 +2597,6 @@ var ReviewArtifactSchema = object({
2592
2597
  return;
2593
2598
  }
2594
2599
  if (owner === coverage.persona) {
2595
- ctx.addIssue({
2596
- code: "custom",
2597
- path: ["risk_coverage", coverageIndex, "input_finding_id"],
2598
- message: REVIEW_ARTIFACT_CUSTOM_MESSAGES[19]
2599
- });
2600
- return;
2601
- }
2602
- const lostDispatch = artifact.dispatches.find((dispatch) => dispatch.persona === coverage.persona);
2603
- const surface = lostDispatch?.selection_surface ?? [];
2604
- const covered = artifact.findings.some((finding) => finding.input_finding_ids.includes(citedId) && finding.validated !== false && surface.includes(finding.file));
2605
- if (!covered) {
2606
2600
  ctx.addIssue({
2607
2601
  code: "custom",
2608
2602
  path: ["risk_coverage", coverageIndex, "input_finding_id"],
@@ -2713,11 +2707,11 @@ function readChunkWithRetry(fd, buffer, toRead, readChunk) {
2713
2707
  }
2714
2708
  }
2715
2709
  }
2716
- function readBoundedStdin(fd, readChunk) {
2710
+ function readBoundedStdin(fd, readChunk, maxBytes = MAX_REVIEW_RETURN_BYTES) {
2717
2711
  const chunks = [];
2718
2712
  let total = 0;
2719
2713
  while (true) {
2720
- const remaining = MAX_REVIEW_RETURN_BYTES + 1 - total;
2714
+ const remaining = maxBytes + 1 - total;
2721
2715
  if (remaining <= 0)
2722
2716
  return { status: "oversized" };
2723
2717
  const toRead = Math.min(READ_CHUNK_BYTES, remaining);
@@ -2729,7 +2723,7 @@ function readBoundedStdin(fd, readChunk) {
2729
2723
  break;
2730
2724
  total += read.bytesRead;
2731
2725
  chunks.push(buffer.subarray(0, read.bytesRead));
2732
- if (total > MAX_REVIEW_RETURN_BYTES)
2726
+ if (total > maxBytes)
2733
2727
  return { status: "oversized" };
2734
2728
  }
2735
2729
  return { buffer: Buffer.concat(chunks, total), status: "ok" };
@@ -1786,7 +1786,7 @@ var BUNDLED_SKILL_NAMES = [
1786
1786
  "writing-skills"
1787
1787
  ];
1788
1788
 
1789
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/util.js
1789
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/util.js
1790
1790
  function getEnumValues(entries) {
1791
1791
  const numericValues = Object.values(entries).filter((v) => typeof v === "number");
1792
1792
  const values = Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);
@@ -2332,7 +2332,7 @@ function constantCatch(value) {
2332
2332
  return fn;
2333
2333
  }
2334
2334
 
2335
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/core.js
2335
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/core.js
2336
2336
  var _a;
2337
2337
  var _zodDesc = { value: undefined, enumerable: false };
2338
2338
  var _E = "captureStackTrace" in Error ? Error : null;
@@ -2451,7 +2451,7 @@ function config(newConfig) {
2451
2451
  Object.assign(globalConfig, newConfig);
2452
2452
  return globalConfig;
2453
2453
  }
2454
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/errors.js
2454
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/errors.js
2455
2455
  function _getMessage() {
2456
2456
  const internals = this._zod;
2457
2457
  internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
@@ -2566,7 +2566,7 @@ function formatError(error, mapper = (issue) => issue.message) {
2566
2566
  return fieldErrors;
2567
2567
  }
2568
2568
 
2569
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/parse.js
2569
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/parse.js
2570
2570
  function finalizeParams(callee, params) {
2571
2571
  return { callee: params?.callee ?? callee, Err: params?.Err };
2572
2572
  }
@@ -2713,7 +2713,7 @@ var _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {
2713
2713
  var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
2714
2714
  return _safeParseAsync(_Err)(schema, value, _ctx);
2715
2715
  };
2716
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/regexes.js
2716
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/regexes.js
2717
2717
  var cuid = /^[cC][0-9a-z]{6,}$/;
2718
2718
  var cuid2 = /^[0-9a-z]+$/;
2719
2719
  var ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/;
@@ -2771,7 +2771,7 @@ var boolean2 = /^(?:true|false)$/i;
2771
2771
  var lowercase = /^[^A-Z]*$/;
2772
2772
  var uppercase = /^[^a-z]*$/;
2773
2773
 
2774
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/checks.js
2774
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/checks.js
2775
2775
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
2776
2776
  var _a;
2777
2777
  inst._zod ?? (inst._zod = {});
@@ -3087,7 +3087,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
3087
3087
  };
3088
3088
  });
3089
3089
 
3090
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/doc.js
3090
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/doc.js
3091
3091
  class Doc {
3092
3092
  constructor(args = [], closed = {}) {
3093
3093
  this.content = [];
@@ -3129,14 +3129,14 @@ ${content.join(`
3129
3129
  }
3130
3130
  }
3131
3131
 
3132
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/versions.js
3132
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/versions.js
3133
3133
  var version = {
3134
3134
  major: 4,
3135
3135
  minor: 6,
3136
- patch: 1
3136
+ patch: 2
3137
3137
  };
3138
3138
 
3139
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/schemas.js
3139
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/schemas.js
3140
3140
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3141
3141
  var _a;
3142
3142
  inst ?? (inst = {});
@@ -3733,7 +3733,7 @@ function handlePropertyResult(result, final, key, input, optin, optout) {
3733
3733
  return;
3734
3734
  }
3735
3735
  if (result.value === undefined) {
3736
- if (isPresent) {
3736
+ if (isPresent || optin === "defaulted" && !isOptionalOut) {
3737
3737
  final.value[key] = undefined;
3738
3738
  }
3739
3739
  } else {
@@ -3967,16 +3967,16 @@ var $ZodObjectJIT = /* @__PURE__ */ $constructor("$ZodObjectJIT", (inst, def) =>
3967
3967
  doc.write(`
3968
3968
  if (${id}.issues.length) {${prefixStr(id, k)}
3969
3969
  }
3970
-
3971
- if (${id}.value === undefined) {
3972
- if (${isPresent}) {
3973
- newResult[${k}] = undefined;
3974
- }
3970
+ `);
3971
+ if (optin === "defaulted") {
3972
+ doc.write(`newResult[${k}] = ${id}.value;`);
3975
3973
  } else {
3974
+ doc.write(`
3975
+ if (${id}.value !== undefined || ${isPresent}) {
3976
3976
  newResult[${k}] = ${id}.value;
3977
3977
  }
3978
-
3979
3978
  `);
3979
+ }
3980
3980
  }
3981
3981
  }
3982
3982
  doc.write(`payload.value = newResult;`);
@@ -4783,7 +4783,7 @@ var $ZodProperties = /* @__PURE__ */ $constructor("$ZodProperties", (inst, def)
4783
4783
  yield this;
4784
4784
  }
4785
4785
  });
4786
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/memoizer.js
4786
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/memoizer.js
4787
4787
  class $ZodCyclicError extends Error {
4788
4788
  constructor() {
4789
4789
  super(`Cannot parse a reference cycle that closes through a transform`);
@@ -5055,7 +5055,7 @@ function isBackEdge(ctx, value) {
5055
5055
  const backEdges = ctx[STATE]?.backEdges;
5056
5056
  return backEdges !== undefined && isRef(value) && backEdges.has(value);
5057
5057
  }
5058
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/locales/en.js
5058
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/locales/en.js
5059
5059
  var error = () => {
5060
5060
  const Sizable = {
5061
5061
  string: { unit: "characters", verb: "to have" },
@@ -5176,7 +5176,7 @@ function en_default() {
5176
5176
  localeError: error()
5177
5177
  };
5178
5178
  }
5179
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/registries.js
5179
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/registries.js
5180
5180
  var _a2;
5181
5181
  class $ZodRegistry {
5182
5182
  constructor() {
@@ -5223,7 +5223,7 @@ function registry() {
5223
5223
  }
5224
5224
  (_a2 = globalThis).__zod_globalRegistry ?? (_a2.__zod_globalRegistry = registry());
5225
5225
  var globalRegistry = globalThis.__zod_globalRegistry;
5226
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/api.js
5226
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/api.js
5227
5227
  function _string(Class, params) {
5228
5228
  return new Class({
5229
5229
  type: "string",
@@ -5673,7 +5673,7 @@ function _check(fn, params) {
5673
5673
  ch._zod.check = fn;
5674
5674
  return ch;
5675
5675
  }
5676
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/to-json-schema.js
5676
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/to-json-schema.js
5677
5677
  function assignProps(target, ...sources) {
5678
5678
  for (const source of sources) {
5679
5679
  for (const key of Reflect.ownKeys(source)) {
@@ -6196,7 +6196,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
6196
6196
  extractDefs(ctx, schema);
6197
6197
  return finalize(ctx, schema);
6198
6198
  };
6199
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/core/json-schema-processors.js
6199
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/json-schema-processors.js
6200
6200
  var narrowMin = (agg, key, value) => {
6201
6201
  if (agg[key] === undefined || value > agg[key])
6202
6202
  agg[key] = value;
@@ -6723,7 +6723,7 @@ var optionalProcessor = (schema, ctx, _json, params) => {
6723
6723
  const seen = ctx.seen.get(schema);
6724
6724
  seen.ref = def.innerType;
6725
6725
  };
6726
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/classic/errors.js
6726
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/errors.js
6727
6727
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
6728
6728
  function _lazyMethod(proto, key, make) {
6729
6729
  Object.defineProperty(proto, key, {
@@ -6768,7 +6768,7 @@ var ZodRealError = /* @__PURE__ */ $constructor("ZodError", initializer2, undefi
6768
6768
  Parent: Error
6769
6769
  });
6770
6770
 
6771
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/classic/parse.js
6771
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/parse.js
6772
6772
  var parse4 = /* @__PURE__ */ _parse(ZodRealError);
6773
6773
  var parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);
6774
6774
  var safeParse = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -6782,7 +6782,7 @@ var safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError);
6782
6782
  var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
6783
6783
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
6784
6784
 
6785
- // node_modules/.bun/zod@4.6.1/node_modules/zod/v4/classic/schemas.js
6785
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/schemas.js
6786
6786
  function _ensureDefaultLocale() {
6787
6787
  if (!globalConfig.localeError)
6788
6788
  config(en_default());
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ import {
19
19
  extractCommandFrontmatter,
20
20
  findSkillsInDir,
21
21
  discoverSkills
22
- } from "./index-nrgffx9y.js";
22
+ } from "./index-be0zwq50.js";
23
23
 
24
24
  // src/index.ts
25
25
  import { createHash as createHash4 } from "crypto";
@@ -1,5 +1,9 @@
1
1
  import { z } from 'zod';
2
- export declare const REVIEW_ARTIFACT_CUSTOM_MESSAGES: readonly ['severity count must match rejected finding count', 'filtered findings require a validation reason', 'risk-critical dispatches require a non-empty selection surface', 'satisfied risk coverage requires a citing input finding ID', 'unsatisfied risk coverage must not cite an input finding ID', 'passed validation must not include a reason; non-passed validation requires a reason', 'validation_unavailable dispatches must record zero input findings', 'a completed run must not contain validation_unavailable evidence', 'a validation_unavailable persona must not have an input finding', 'every synthesized input finding ID must resolve to an admitted ledger row', 'every provenance submitter must be represented by a cited admitted ledger row', 'satisfied risk coverage must cite an admitted ledger row', 'duplicate admitted input finding IDs are not allowed', 'every cited admitted reviewer must appear in provenance.submitters', 'provenance.submitters must not contain duplicate reviewers', 'provenance.agreement_credit must not contain duplicate reviewers', 'provenance.agreement_credit must not overlap provenance.submitters', 'provenance.agreement_credit requires an eligible returned persona with admitted evidence', 'satisfied risk coverage must cite a validated finding on the lost persona selection surface', 'satisfied risk coverage must cite an admitted ledger row owned by another persona'];
2
+ export declare const MAX_INPUT_ID_LENGTH = 128;
3
+ export declare const MAX_REASON_LENGTH = 2048;
4
+ export declare const MAX_FINDINGS = 32;
5
+ export declare const MAX_PERSONAS = 64;
6
+ export declare const REVIEW_ARTIFACT_CUSTOM_MESSAGES: readonly ['severity count must match rejected finding count', 'filtered findings require a validation reason', 'risk-critical dispatches require a non-empty selection surface', 'satisfied risk coverage requires a citing input finding ID', 'unsatisfied risk coverage must not cite an input finding ID', 'passed validation must not include a reason; non-passed validation requires a reason', 'validation_unavailable dispatches must record zero input findings', 'a completed run must not contain validation_unavailable evidence', 'a validation_unavailable persona must not have an input finding', 'every synthesized input finding ID must resolve to an admitted ledger row', 'every provenance submitter must be represented by a cited admitted ledger row', 'satisfied risk coverage must cite an admitted ledger row', 'duplicate admitted input finding IDs are not allowed', 'every cited admitted reviewer must appear in provenance.submitters', 'provenance.submitters must not contain duplicate reviewers', 'provenance.agreement_credit must not contain duplicate reviewers', 'provenance.agreement_credit must not overlap provenance.submitters', 'provenance.agreement_credit requires an eligible returned persona with admitted evidence', 'satisfied risk coverage must cite an admitted ledger row owned by another persona'];
3
7
  export declare const DispatchOutcomeSchema: z.ZodEnum<{
4
8
  empty: "empty";
5
9
  findings: "findings";
@@ -20,6 +24,14 @@ export declare const HarnessSchema: z.ZodEnum<{
20
24
  pi: "pi";
21
25
  }>;
22
26
  export declare const RepoRelativePathSchema: z.ZodString;
27
+ export declare const RISK_CRITICAL_PERSONAS: readonly ['security', 'data-migrations', 'api-contract', 'reliability', 'performance'];
28
+ export declare const SeveritySchema: z.ZodEnum<{
29
+ P0: "P0";
30
+ P1: "P1";
31
+ P2: "P2";
32
+ P3: "P3";
33
+ unknown: "unknown";
34
+ }>;
23
35
  export declare const InputFindingSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
24
36
  record_type: z.ZodLiteral<"admitted">;
25
37
  input_id: z.ZodString;
@@ -54,6 +66,11 @@ export declare const InputFindingSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
54
66
  }>;
55
67
  reason: z.ZodString;
56
68
  }, z.core.$strict>], "record_type">;
69
+ export declare const ProvenanceSchema: z.ZodObject<{
70
+ fingerprint: z.ZodString;
71
+ submitters: z.ZodArray<z.ZodString>;
72
+ agreement_credit: z.ZodArray<z.ZodString>;
73
+ }, z.core.$strict>;
57
74
  declare const SynthesizedFindingFieldsSchema: z.ZodObject<{
58
75
  title: z.ZodString;
59
76
  severity: z.ZodEnum<{