wicked-crew-api-types 0.134.0 → 0.135.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 (2) hide show
  1. package/index.d.ts +53 -2
  2. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -739,6 +739,12 @@ export interface WorkUnit {
739
739
  /** (api-types 0.102.0; wicked-core#850, core-ts ≥ 0.7.46) The receipt of this unit's LAST gate,
740
740
  * as `gateEvaluated.assurance` carried it. ABSENT until a gate ran, and on an older engine. */
741
741
  assurance?: AssuranceReceipt;
742
+ /** (api-types 0.135.0) Every layer other than the repo-checks floor that denied this unit's last
743
+ * gate, plus any earlier denial over the same tree that gate did not ask again — the record
744
+ * `operator_judgment` reads (it is refused while any stands). `[]`: known, nothing but the floor
745
+ * denied. ABSENT (or `null`): unknown — a unit from before the record, or an older engine. The
746
+ * engine's own serialization, so its fields are snake_case (`claim_id`, `rule_ids`, …). */
747
+ denials_behind?: Array<{ source: string; reason: string; [k: string]: unknown }> | null;
742
748
  /** Evaluator≠creator role. Present on def-driven units; absent on legacy/free-text. */
743
749
  role?: PhaseRole;
744
750
  /** Gate policy for this phase. Present on def-driven units; absent on legacy/free-text. */
@@ -1706,6 +1712,19 @@ export interface GateDecision {
1706
1712
  * {@link GateInfo.rejudge} says beforehand. Unlike a plain approve there, it is never the
1707
1713
  * operator's own judgment. */
1708
1714
  | 'rejudge'
1715
+ /** (api-types 0.135.0, operator ruling 2026-10-21) APPROVE AS YOUR OWN JUDGMENT at the
1716
+ * escalation gate of a FAILED REPO-CHECKS FLOOR (`gateEscalated.condition: 'floor_failed'`,
1717
+ * `denialSource: 'repo_checks' | 'repo_checks_timeout'`), with `approve: true` and the written
1718
+ * rationale in `amend` — required, non-empty (a 400 otherwise); no `amendScope` or `plan`. The
1719
+ * operator judges from the evidence that the failures are not the work's (load flakes,
1720
+ * pre-existing reds): the unit counts as it stands, its gate receipt records an
1721
+ * {@link OperatorJudgment} with `floorOverride` set (the floor result it overrode, labelled
1722
+ * "floor overridden by operator"), and the run ({@link RunAssurance.floorOverrides}) and the
1723
+ * delivery carry the label. It overrides the floor ONLY: the engine refuses it (409, gate left
1724
+ * open) when any other layer of the same gate also denied, on a team member's step, on a tool or
1725
+ * deliver step and at every other gate. QE acceptance is never waived by it — a run that
1726
+ * requires it still needs its PASS before delivery. Engine: wicked-core-ts after 0.15.6. */
1727
+ | 'operator_judgment'
1709
1728
  /** (core#820) A `consent` gate's choice from its dry-run plan (`awaitingHuman.choices`), with
1710
1729
  * `approve: true`: `consent:worker` (the default), `consent:operator`, …; `reject` declines. */
1711
1730
  | `consent:${string}`;
@@ -2317,7 +2336,8 @@ export type AssuranceInstrument =
2317
2336
  | 'judge'
2318
2337
  | 'evaluator_pass'
2319
2338
  | 'distinct_evaluator'
2320
- /** (api-types 0.110.0) The operator judged a gate whose judge could not rule. */
2339
+ /** (api-types 0.110.0) The operator judged a gate whose judge could not rule — or (api-types
2340
+ * 0.135.0) overrode a failed repo-checks floor (`operatorJudges[].floorOverride`). */
2321
2341
  | 'operator_judge'
2322
2342
  | (string & {});
2323
2343
 
@@ -2330,9 +2350,34 @@ export interface OperatorJudgment {
2330
2350
  by: string;
2331
2351
  /** Unix millis. */
2332
2352
  at: number;
2353
+ /** The operator's note; on a floor override, the written rationale (never empty). */
2333
2354
  note: string | null;
2334
- /** Why the judge could not rule (the gate's denial reason). */
2355
+ /** Why the judge could not rule (the gate's denial reason) — or, on a floor override, why the
2356
+ * floor denied. */
2335
2357
  reason: string | null;
2358
+ /** (api-types 0.135.0) Set when this judgment OVERRODE a failed repo-checks floor
2359
+ * ({@link GateDecision.action} `'operator_judgment'`); ABSENT on a judge-unavailable judgment
2360
+ * and on an older engine. */
2361
+ floorOverride?: FloorOverride;
2362
+ }
2363
+
2364
+ /**
2365
+ * (api-types 0.135.0, operator ruling 2026-10-21) The failed floor result an operator's judgment
2366
+ * overrode. It answers the repo-checks floor only: every other layer of the gate still denies, and
2367
+ * QE acceptance is untouched.
2368
+ */
2369
+ export interface FloorOverride {
2370
+ /** The floor layer that denied: `repo_checks` | `repo_checks_timeout`. */
2371
+ layer: string;
2372
+ /** The floor result overridden — `<run>:unit-<ord>:attempt-<n>:<layer>`, the unit's
2373
+ * `repoChecksEvaluated` frame for that attempt (or the carried result it stood on). */
2374
+ resultId: string;
2375
+ ord: number;
2376
+ attempt: number;
2377
+ /** The tree the overridden checks ran on, when the report names it. */
2378
+ tree: string | null;
2379
+ /** `floor overridden by operator` — the line to show as-is. */
2380
+ label: string;
2336
2381
  }
2337
2382
 
2338
2383
  /**
@@ -2375,8 +2420,14 @@ export interface RunAssurance {
2375
2420
  * exactly when `required` holds `qe_acceptance`. ABSENT on an older engine (then a required
2376
2421
  * `qe_acceptance` is enforced). */
2377
2422
  qe?: QeAcceptanceDecision;
2423
+ /** (api-types 0.135.0) Every failed floor the operator overrode on this run ("floor overridden
2424
+ * by operator"), each with who, when and the rationale; ABSENT when none or on an older engine. */
2425
+ floorOverrides?: OperatorJudgment[];
2378
2426
  }
2379
2427
 
2428
+ /** (api-types 0.135.0) The label an overridden floor carries on the run, the gate and the delivery. */
2429
+ export type FloorOverrideLabel = 'floor overridden by operator';
2430
+
2380
2431
  /** (api-types 0.106.0) `QeAcceptanceDecision.status`. */
2381
2432
  export type QeAcceptanceStatus = 'required' | 'waived' | 'skipped' | (string & {});
2382
2433
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wicked-crew-api-types",
3
- "version": "0.134.0",
3
+ "version": "0.135.0",
4
4
  "description": "The wire contract of the wicked-crew daemon's /api/v1 REST surface and /ws CoreEvent frames \u2014 types only, zero runtime",
5
5
  "type": "module",
6
6
  "types": "./index.d.ts",