wicked-crew-api-types 0.133.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 +108 -3
  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. */
@@ -1605,6 +1611,34 @@ export interface GateInfo {
1605
1611
  * work this gate asks about. `null` when the unit carries none (no gate evaluated it yet, or an
1606
1612
  * older engine); ABSENT on an older daemon. */
1607
1613
  assurance?: AssuranceReceipt | null;
1614
+ /**
1615
+ * (api-types 0.134.0) On a gate whose unit no judge could rule on (`denial.source:
1616
+ * 'judge_unavailable'`): whether its JUDGE CAN BE RE-RUN NOW — `{approve: true, action:
1617
+ * 'rejudge'}` ({@link GateDecision.action}) — and which seats the engine's judge selection would
1618
+ * draw from. ABSENT on every other gate, on an older daemon, and on an engine without the
1619
+ * readiness read (then `rejudge` is not offered).
1620
+ */
1621
+ rejudge?: RejudgeOffer;
1622
+ }
1623
+
1624
+ /**
1625
+ * (api-types 0.134.0) Whether a `judge_unavailable` gate's judge can be re-run now. `available` —
1626
+ * the engine's judge selection names at least one seat (`eligible`, rotation order, fallback judges
1627
+ * last): `rejudge` re-arms the judge on the same work (the step does not run again; deny-dominates
1628
+ * still folds the result). Otherwise `missing` says which of the run's seats cannot judge this work,
1629
+ * and why — what to fix before re-running it.
1630
+ */
1631
+ export interface RejudgeOffer {
1632
+ available: boolean;
1633
+ eligible: string[];
1634
+ missing: RejudgeMissingSeat[];
1635
+ }
1636
+
1637
+ /** One run seat that cannot judge the gated work now, and why, in the engine's words (`built this
1638
+ * work`, `benched for this run: quota_exhausted …`, `not usable now: signed out`). */
1639
+ export interface RejudgeMissingSeat {
1640
+ seat: string;
1641
+ reason: string;
1608
1642
  }
1609
1643
 
1610
1644
  /**
@@ -1669,6 +1703,28 @@ export interface GateDecision {
1669
1703
  | 'accept_partial'
1670
1704
  | 'accept_suggestion'
1671
1705
  | 'amend_intent'
1706
+ /** (api-types 0.134.0) RE-RUN THE JUDGE of a `judge_unavailable` gate, with `approve: true` and
1707
+ * nothing else: the engine re-arms the judge on the same work with the run's roster as it
1708
+ * stands now (never the work's authors or the pinned validator's author), records
1709
+ * {@link JudgeRerunRequestedEvent} and re-dispatches the unit WITHOUT running its seat; the
1710
+ * ordinary fold judges the result, so a REJECT, a failed floor or another seatless judge denies
1711
+ * again. Refused (409, gate left open) at any other gate and when no judge seat is eligible —
1712
+ * {@link GateInfo.rejudge} says beforehand. Unlike a plain approve there, it is never the
1713
+ * operator's own judgment. */
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'
1672
1728
  /** (core#820) A `consent` gate's choice from its dry-run plan (`awaitingHuman.choices`), with
1673
1729
  * `approve: true`: `consent:worker` (the default), `consent:operator`, …; `reject` declines. */
1674
1730
  | `consent:${string}`;
@@ -2230,7 +2286,8 @@ export interface DataUsedEvent {
2230
2286
  * names the error. Before core-ts 0.7.46 the error was dropped and the gate could approve.
2231
2287
  * - `judge_unavailable` — the gate's judge did not run (every eligible judge seat failed, or, since
2232
2288
  * core-ts 0.7.46 / EX-02, the run requires a judge and none distinct from the creator existed).
2233
- * A HOLD: sign a judge seat in, then approve to re-run.
2289
+ * A HOLD: approve = the operator's own judgment (labelled "judged by operator"); once a judge seat
2290
+ * can rule, `rejudge` re-runs the judge (api-types 0.134.0, {@link GateInfo.rejudge}).
2234
2291
  * Open-ended (`string & {}`) so a newer engine's source parses in an older studio.
2235
2292
  */
2236
2293
  export type UnitDenialSource =
@@ -2279,7 +2336,8 @@ export type AssuranceInstrument =
2279
2336
  | 'judge'
2280
2337
  | 'evaluator_pass'
2281
2338
  | 'distinct_evaluator'
2282
- /** (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`). */
2283
2341
  | 'operator_judge'
2284
2342
  | (string & {});
2285
2343
 
@@ -2292,9 +2350,34 @@ export interface OperatorJudgment {
2292
2350
  by: string;
2293
2351
  /** Unix millis. */
2294
2352
  at: number;
2353
+ /** The operator's note; on a floor override, the written rationale (never empty). */
2295
2354
  note: string | null;
2296
- /** 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. */
2297
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;
2298
2381
  }
2299
2382
 
2300
2383
  /**
@@ -2337,8 +2420,14 @@ export interface RunAssurance {
2337
2420
  * exactly when `required` holds `qe_acceptance`. ABSENT on an older engine (then a required
2338
2421
  * `qe_acceptance` is enforced). */
2339
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[];
2340
2426
  }
2341
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
+
2342
2431
  /** (api-types 0.106.0) `QeAcceptanceDecision.status`. */
2343
2432
  export type QeAcceptanceStatus = 'required' | 'waived' | 'skipped' | (string & {});
2344
2433
 
@@ -3180,6 +3269,22 @@ export type QeAcceptanceDecidedEvent = {
3180
3269
  qe: QeAcceptanceDecision;
3181
3270
  };
3182
3271
 
3272
+ /** (api-types 0.134.0) The operator re-armed the judge of a `judge_unavailable` gate
3273
+ * ({@link GateDecision.action} `rejudge`): attempt `attempt` re-reads attempt `fromAttempt`'s
3274
+ * captured output with a judge drawn from `seats` (eligible when it was armed); the step's seat does
3275
+ * not run. Emitted before `resumed`; that attempt's `gateEvaluated` says what the judge ruled.
3276
+ * `type` alias on purpose. */
3277
+ export type JudgeRerunRequestedEvent = {
3278
+ type: 'judgeRerunRequested';
3279
+ session: string;
3280
+ ord: number;
3281
+ attempt: number;
3282
+ fromAttempt: number;
3283
+ seats: string[];
3284
+ previousReason: string;
3285
+ by: string;
3286
+ };
3287
+
3183
3288
  /** The gate-evidence events (wicked-core F-036/F-039, extended by wicked-core#431 — api-types 0.33.0
3184
3289
  * added {@link WorktreeRestoredEvent}, {@link DeliverLiftEvaluatedEvent} and
3185
3290
  * {@link EvaluatorToolCallDeniedEvent}) as a discriminated union for consumers that narrow on `type`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wicked-crew-api-types",
3
- "version": "0.133.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",