@miller-tech/uap 1.169.0 → 1.170.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.
@@ -75,6 +75,23 @@ export declare function loadUserPaths(projectRoot: string): ManifestValidation |
75
75
  export declare function mergeUserPaths(projectRoot: string, derived: UserPathsManifest): UserPathsManifest;
76
76
  /** Extract the first JSON object or array from model output (```json fences or bare). */
77
77
  export declare function parseManifestFromModel(text: string): UserPathsManifest | null;
78
+ /** One human-readable line per step; '' for steps not worth stating (pure waits). */
79
+ /**
80
+ * Clamp a value interpolated from the manifest into the prompt.
81
+ *
82
+ * The contract is injected into EVERY turn's prompt, and every field here comes
83
+ * from `.uap/user-paths.json` — a repo file whose user-curated entries are
84
+ * deliberately never overwritten. Unclamped, one long `fill.value` or
85
+ * `expect_text.contains` is re-sent on every turn for the life of the run, and a
86
+ * multi-line value can forge structure inside a section the model reads as
87
+ * instructions. Newlines collapse, length is bounded, and the truncation is
88
+ * visible rather than silent.
89
+ */
90
+ export declare function clampContractValue(value: unknown, max?: number): string;
91
+ /** Per-field cap for values interpolated into the acceptance contract. */
92
+ export declare const CONTRACT_FIELD_MAX = 200;
93
+ /** Cap for the whole rendered contract — it is re-sent every turn. */
94
+ export declare const CONTRACT_TOTAL_MAX = 8000;
78
95
  /**
79
96
  * Render the derived user-path manifest as an ACCEPTANCE CONTRACT for the
80
97
  * implementer — the concrete journeys + selectors the real-client validator
@@ -1 +1 @@
1
- {"version":3,"file":"user-paths.d.ts","sourceRoot":"","sources":["../../src/delivery/user-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-paths.d.ts","sourceRoot":"","sources":["../../src/delivery/user-paths.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAExD,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAE3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAC7F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,eAAe,QAAkC,CAAC;AAS/D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED;iDACiD;AACjD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAkCjE;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAQ5E;AAED;+EAC+E;AAC/E,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAmBjG;AAED,yFAAyF;AACzF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAqB7E;AA+BD,qFAAqF;AACrF;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAqB,GAAG,MAAM,CAGnF;AAED,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,OAAO,CAAC;AA0CvC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CA0H/F;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAsDhE;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAyBnB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,aAAa,EACvB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA6BnC;AAED;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAmB1E;AAGD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,CAOxF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAgBnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,CA6BrG"}
@@ -166,9 +166,30 @@ function selectorOf(v) {
166
166
  return undefined;
167
167
  }
168
168
  /** One human-readable line per step; '' for steps not worth stating (pure waits). */
169
+ /**
170
+ * Clamp a value interpolated from the manifest into the prompt.
171
+ *
172
+ * The contract is injected into EVERY turn's prompt, and every field here comes
173
+ * from `.uap/user-paths.json` — a repo file whose user-curated entries are
174
+ * deliberately never overwritten. Unclamped, one long `fill.value` or
175
+ * `expect_text.contains` is re-sent on every turn for the life of the run, and a
176
+ * multi-line value can forge structure inside a section the model reads as
177
+ * instructions. Newlines collapse, length is bounded, and the truncation is
178
+ * visible rather than silent.
179
+ */
180
+ export function clampContractValue(value, max = CONTRACT_FIELD_MAX) {
181
+ const s = String(value ?? '').replace(/[\r\n\t\u2028\u2029]+/g, ' ').trim();
182
+ return s.length > max ? `${s.slice(0, max)}…` : s;
183
+ }
184
+ /** Per-field cap for values interpolated into the acceptance contract. */
185
+ export const CONTRACT_FIELD_MAX = 200;
186
+ /** Cap for the whole rendered contract — it is re-sent every turn. */
187
+ export const CONTRACT_TOTAL_MAX = 8000;
188
+ /** Headroom reserved for the truncation notes so the cap is never exceeded. */
189
+ const NOTE_ALLOWANCE = 260;
169
190
  function describeContractStep(step, sink) {
170
191
  if (step.goto !== undefined)
171
- return `load ${step.goto || '/'}`;
192
+ return `load ${clampContractValue(step.goto) || '/'}`;
172
193
  if (step.click !== undefined) {
173
194
  const sel = selectorOf(step.click);
174
195
  collectContractSelector(sel, sink);
@@ -176,41 +197,41 @@ function describeContractStep(step, sink) {
176
197
  const coord = c && typeof c === 'object'
177
198
  ? ` at (${String(c.x ?? '?')},${String(c.y ?? '?')})`
178
199
  : '';
179
- return `click ${sel ?? String(step.click)}${coord}`;
200
+ return `click ${clampContractValue(sel ?? String(step.click))}${coord}`;
180
201
  }
181
202
  if (step.fill) {
182
203
  collectContractSelector(step.fill.selector, sink);
183
- return `type "${step.fill.value}" into ${step.fill.selector}`;
204
+ return `type "${clampContractValue(step.fill.value)}" into ${clampContractValue(step.fill.selector)}`;
184
205
  }
185
206
  if (step.press)
186
- return `press ${step.press}`;
207
+ return `press ${clampContractValue(step.press)}`;
187
208
  if (step.expect_visible !== undefined) {
188
209
  collectContractSelector(step.expect_visible, sink);
189
- return `${step.expect_visible} must be visible`;
210
+ return `${clampContractValue(step.expect_visible)} must be visible`;
190
211
  }
191
212
  if (step.expect_text) {
192
213
  collectContractSelector(step.expect_text.selector, sink);
193
214
  const c = step.expect_text.contains;
194
- return `${step.expect_text.selector} must ${c ? `contain "${c}"` : 'have text'}`;
215
+ return `${clampContractValue(step.expect_text.selector)} must ${c ? `contain "${clampContractValue(c)}"` : 'have text'}`;
195
216
  }
196
217
  if (step.expect_no_console_errors)
197
218
  return 'no console errors';
198
219
  if (step.request)
199
- return `${step.request.method} ${step.request.path}`;
220
+ return `${clampContractValue(step.request.method)} ${clampContractValue(step.request.path)}`;
200
221
  if (step.expect_status !== undefined)
201
- return `response status ${step.expect_status}`;
222
+ return `response status ${clampContractValue(step.expect_status)}`;
202
223
  if (step.expect_json_contains)
203
- return `response JSON contains ${JSON.stringify(step.expect_json_contains)}`;
224
+ return `response JSON contains ${clampContractValue(JSON.stringify(step.expect_json_contains))}`;
204
225
  if (step.expect_body_matches)
205
- return `response body matches /${step.expect_body_matches}/`;
226
+ return `response body matches /${clampContractValue(step.expect_body_matches)}/`;
206
227
  if (step.run)
207
- return `run ${step.run.argv.join(' ')}`;
228
+ return `run ${clampContractValue((step.run.argv ?? []).join(' '))}`;
208
229
  if (step.expect_exit !== undefined)
209
- return `exit code ${step.expect_exit}`;
230
+ return `exit code ${clampContractValue(step.expect_exit)}`;
210
231
  if (step.expect_stdout_matches)
211
- return `stdout matches /${step.expect_stdout_matches}/`;
232
+ return `stdout matches /${clampContractValue(step.expect_stdout_matches)}/`;
212
233
  if (step.expect_stderr_matches)
213
- return `stderr matches /${step.expect_stderr_matches}/`;
234
+ return `stderr matches /${clampContractValue(step.expect_stderr_matches)}/`;
214
235
  return '';
215
236
  }
216
237
  /**
@@ -239,8 +260,8 @@ export function renderAcceptanceContract(manifest) {
239
260
  continue;
240
261
  if (path.client === 'browser')
241
262
  hasBrowser = true;
242
- const rule = (path.rule ?? path.id ?? '').trim();
243
- journeyLines.push(`- Journey "${path.id}" (${path.client})${rule ? `: ${rule}` : ''}`);
263
+ const rule = clampContractValue(path.rule ?? path.id ?? '');
264
+ journeyLines.push(`- Journey "${clampContractValue(path.id)}" (${clampContractValue(path.client)})${rule ? `: ${rule}` : ''}`);
244
265
  for (const step of path.steps) {
245
266
  const desc = describeContractStep(step, selectors);
246
267
  if (desc)
@@ -249,17 +270,23 @@ export function renderAcceptanceContract(manifest) {
249
270
  }
250
271
  if (journeyLines.length === 0)
251
272
  return '';
252
- const out = [
273
+ const header = [
253
274
  'ACCEPTANCE CONTRACT — the delivered artifact is exercised by an automated real-client',
254
275
  'validator (headless browser / HTTP client / built CLI) on the journeys below. Build so',
255
276
  'EVERY step passes; a step the validator cannot perform fails delivery.',
256
277
  '',
257
- ...journeyLines,
258
278
  ];
279
+ const out = [];
259
280
  const required = [...selectors].filter((s) => !SHELL_CONTRACT_SELECTORS.has(s.toLowerCase()));
281
+ // The selector list scales with the manifest exactly like the journey list —
282
+ // one selector per step. Treating it as fixed overhead let it consume the whole
283
+ // budget and evict every journey line, leaving a contract that is all
284
+ // requirements and no journeys (and still over the cap).
285
+ const selectorLine = (list, omitted) => `REQUIRED DOM SELECTORS (each MUST exist in the rendered page and be visible/clickable as used above): ${list.join(', ')}.` +
286
+ (omitted > 0 ? ` (+${omitted} more — see ${USER_PATHS_FILE})` : '');
260
287
  if (hasBrowser && required.length > 0) {
261
288
  out.push('');
262
- out.push(`REQUIRED DOM SELECTORS (each MUST exist in the rendered page and be visible/clickable as used above): ${required.join(', ')}.`);
289
+ out.push(selectorLine(required, 0));
263
290
  out.push('If your UI draws controls or text on a <canvas>, ALSO expose these selectors as real DOM ' +
264
291
  'elements layered over the canvas (position:absolute/fixed; background:transparent so the canvas ' +
265
292
  'shows through and the visuals are not dimmed). An automated client cannot see or click ' +
@@ -275,7 +302,68 @@ export function renderAcceptanceContract(manifest) {
275
302
  'on-theme palette and keep any full-screen DOM overlay background transparent so the canvas shows through.');
276
303
  }
277
304
  }
278
- return out.join('\n');
305
+ // Whole-contract cap. Per-field clamping bounds any single VALUE; this bounds
306
+ // the whole thing, because the text is re-sent on EVERY turn and competes with
307
+ // the task itself for the context budget.
308
+ //
309
+ // TWO sections scale with the manifest — the journey list and the selector list
310
+ // — so both are truncated, and the fixed rails (header, canvas/state-transition
311
+ // guidance) are the only things treated as always-kept. Journeys are truncated
312
+ // by GROUP: dropping a "- Journey" header while keeping its indented bullets
313
+ // would silently re-parent those steps under the previous journey, which is a
314
+ // wrong contract rather than a shorter one.
315
+ const rails = out.filter((l) => !l.startsWith('REQUIRED DOM SELECTORS'));
316
+ const fixed = [...header, ...rails].join('\n').length + NOTE_ALLOWANCE;
317
+ const full = [...header, ...journeyLines, ...out].join('\n');
318
+ if (full.length <= CONTRACT_TOTAL_MAX)
319
+ return full;
320
+ // Split the remaining budget: journeys first (they are the contract), selectors
321
+ // second (they are derivable from the journeys the model can still see).
322
+ let budget = Math.max(0, CONTRACT_TOTAL_MAX - fixed);
323
+ const journeyBudget = Math.floor(budget * 0.7);
324
+ const groups = [];
325
+ for (const line of journeyLines) {
326
+ if (line.startsWith('- Journey') || groups.length === 0)
327
+ groups.push([line]);
328
+ else
329
+ groups[groups.length - 1].push(line);
330
+ }
331
+ const kept = [];
332
+ let droppedGroups = 0;
333
+ let spent = 0;
334
+ for (const g of groups) {
335
+ const cost = g.join('\n').length + 1;
336
+ if (spent + cost > journeyBudget) {
337
+ droppedGroups++;
338
+ continue;
339
+ }
340
+ spent += cost;
341
+ kept.push(...g);
342
+ }
343
+ budget -= spent;
344
+ // Charge the selector LINE's own boilerplate (the long prefix and the
345
+ // "+N more" suffix), not just the selectors — otherwise the line overshoots by
346
+ // its own framing and the advertised cap is missed by ~100 chars.
347
+ const selectorFraming = selectorLine([], required.length).length;
348
+ const keptSelectors = [];
349
+ let selectorBudget = Math.max(0, budget - selectorFraming);
350
+ for (const sel of required) {
351
+ if (sel.length + 2 > selectorBudget)
352
+ break;
353
+ selectorBudget -= sel.length + 2;
354
+ keptSelectors.push(sel);
355
+ }
356
+ const omittedSelectors = required.length - keptSelectors.length;
357
+ const note = droppedGroups > 0
358
+ ? [
359
+ ` … ${droppedGroups} further journey(s) omitted to bound the prompt. The validator still ` +
360
+ `runs ALL of them — read ${USER_PATHS_FILE} for the complete contract.`,
361
+ ]
362
+ : [];
363
+ const tail = out.map((l) => l.startsWith('REQUIRED DOM SELECTORS') && keptSelectors.length > 0
364
+ ? selectorLine(keptSelectors, omittedSelectors)
365
+ : l);
366
+ return [...header, ...kept, ...note, ...tail].join('\n');
279
367
  }
280
368
  const DERIVE_PROMPT = `You are deriving USER-VALIDATION paths for a delivered software artifact.
281
369
  A "user path" is a journey a real user takes through the artifact. Each path will be
@@ -1 +1 @@
1
- {"version":3,"file":"user-paths.js","sourceRoot":"","sources":["../../src/delivery/user-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-paths.js","sourceRoot":"","sources":["../../src/delivery/user-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAuD1C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE/D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa;IAC5E,0BAA0B,EAAE,SAAS,EAAE,eAAe,EAAE,sBAAsB;IAC9E,qBAAqB,EAAE,KAAK,EAAE,aAAa,EAAE,uBAAuB;IACpE,uBAAuB;CACxB,CAAC,CAAC;AAQH;iDACiD;AACjD,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAC;IACzG,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,CAA4B,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;QACpE,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC;aAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;;YAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;QACvF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACjF,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAC;YACzD,SAAS;QACX,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAK,IAAI,CAAC,KAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,kBAAkB,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC1G,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,wCAAwC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;YAC3H,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAiC,CAAC;QAChD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7F,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAwB,EAAE,CAAC;AAClH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvG,CAAC;AACH,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,OAA0B;IAC5E,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,MAAyB,CAAC;IAC9B,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,GAAG;YACP,GAAG,QAAQ,CAAC,QAAQ;YACpB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;YAClD,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACrF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAChD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;IAC1B,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,MAAM,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAS;QAC3B,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC3D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC3E,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,CAAC,EAAE;oBAAE,OAAO,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mFAAmF;AACnF,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAEzE,sFAAsF;AACtF,SAAS,qBAAqB,CAAC,CAAU;IACvC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAuB,EAAE,IAAiB;IACzE,IAAI,qBAAqB,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,GAAG,CAAE,GAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,CAAU;IAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAI,CAA4B,CAAC,QAAQ,CAAC;QACnD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qFAAqF;AACrF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,GAAG,GAAG,kBAAkB;IACzE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5E,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,sEAAsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,+EAA+E;AAC/E,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,SAAS,oBAAoB,CAAC,IAAkB,EAAE,IAAiB;IACjE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,QAAQ,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACnF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAgB,CAAC;QAChC,MAAM,KAAK,GACT,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YACxB,CAAC,CAAC,QAAQ,MAAM,CAAE,CAAqB,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAE,CAAqB,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG;YAC/F,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,SAAS,kBAAkB,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;IAC1E,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,SAAS,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxG,CAAC;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACjE,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACtC,uBAAuB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;IACtE,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QACpC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3H,CAAC;IACD,IAAI,IAAI,CAAC,wBAAwB;QAAE,OAAO,mBAAmB,CAAC;IAC9D,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/G,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACzG,IAAI,IAAI,CAAC,oBAAoB;QAAE,OAAO,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC;IAChI,IAAI,IAAI,CAAC,mBAAmB;QAAE,OAAO,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;IAC/G,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,aAAa,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/F,IAAI,IAAI,CAAC,qBAAqB;QAAE,OAAO,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;IAC5G,IAAI,IAAI,CAAC,qBAAqB;QAAE,OAAO,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;IAC5G,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAA8C;IACrF,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC7E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,UAAU,GAAG,IAAI,CAAC;QACjD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,YAAY,CAAC,IAAI,CACf,cAAc,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5G,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,IAAI;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG;QACb,uFAAuF;QACvF,wFAAwF;QACxF,wEAAwE;QACxE,EAAE;KACH,CAAC;IACF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9F,6EAA6E;IAC7E,gFAAgF;IAChF,sEAAsE;IACtE,yDAAyD;IACzD,MAAM,YAAY,GAAG,CAAC,IAAc,EAAE,OAAe,EAAU,EAAE,CAC/D,yGAAyG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC3H,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,eAAe,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtE,IAAI,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CACN,2FAA2F;YACzF,kGAAkG;YAClG,yFAAyF;YACzF,wFAAwF,CAC3F,CAAC;QACF,GAAG,CAAC,IAAI,CACN,+FAA+F;YAC7F,kGAAkG;YAClG,sGAAsG,CACzG,CAAC;QACF,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,CACN,mGAAmG;gBACjG,oGAAoG;gBACpG,qGAAqG;gBACrG,qGAAqG;gBACrG,2GAA2G,CAC9G,CAAC;QACJ,CAAC;IACH,CAAC;IACD,8EAA8E;IAC9E,+EAA+E;IAC/E,0CAA0C;IAC1C,EAAE;IACF,gFAAgF;IAChF,gFAAgF;IAChF,+EAA+E;IAC/E,6EAA6E;IAC7E,8EAA8E;IAC9E,4CAA4C;IAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC;IACvE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB;QAAE,OAAO,IAAI,CAAC;IAEnD,gFAAgF;IAChF,yEAAyE;IACzE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;YACxE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,GAAG,aAAa,EAAE,CAAC;YACjC,aAAa,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QACD,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC;IAEhB,sEAAsE;IACtE,+EAA+E;IAC/E,kEAAkE;IAClE,MAAM,eAAe,GAAG,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC;IAC3D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc;YAAE,MAAM;QAC3C,cAAc,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAEhE,MAAM,IAAI,GACR,aAAa,GAAG,CAAC;QACf,CAAC,CAAC;YACE,SAAS,aAAa,uEAAuE;gBAC3F,2BAA2B,eAAe,6BAA6B;SAC1E;QACH,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,CAAC,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAChE,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,gBAAgB,CAAC;QAC/C,CAAC,CAAC,CAAC,CACN,CAAC;IACF,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAID,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDrB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAA2B,EAC3B,WAAmB;IAEnB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9D,MAAM,cAAc,GAAG,CAAC,CAAe,EAAsB,EAAE;QAC7D,IAAI,OAAQ,CAAkC,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;YAC3E,OAAQ,CAAgC,CAAC,cAAc,CAAC;QAC1D,CAAC;QACD,MAAM,EAAE,GAAI,CAA6C,CAAC,WAAW,CAAC;QACtE,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC,QAAQ,CAAC;QACrD,MAAM,KAAK,GAAI,CAAyB,CAAC,KAAK,CAAC;QAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAQ,KAA+B,CAAC,QAAQ,CAAC;QACzF,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,CAAe,EAAW,EAAE;QACjD,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,CAAe,EAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACnG,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;YAAE,OAAO,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,wBAAwB,EAAE,IAAI,EAAkB,CAAC,CAAC;QACxF,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,QAAuB,EACvB,YAAqB;IAErB,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,GAAG,WAAW,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnG,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,yBAAyB,CAC9B,8BAA8B,CAC5B,sCAAsC,CAAC,4BAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAC3F,WAAW,CACZ,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;QACD,OAAO,CAAC,GAAG,CACT,qCAAqC,OAAO,oCAAoC;YAC9E,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,KAAK,EAAE;YACL;gBACE,EAAE,EAAE,eAAe;gBACnB,IAAI,EAAE,uHAAuH;gBAC7H,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,GAAG,EAAE;oBACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,EAAE,OAAO,EAAE,GAAG,EAAE;oBAChB,EAAE,wBAAwB,EAAE,IAAI,EAAE;iBACnC;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG,sFAAsF,CAAC;AAChH,MAAM,UAAU,yBAAyB,CAAC,QAA2B;IACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;QAC/C,OAAO,IAAyB,CAAC;IACnC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAA2B,EAC3B,WAAmB;IAEnB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,iBAAiB,GAAG,CAAC,CAAe,EAAW,EAAE;QACrD,MAAM,EAAE,GAAI,CAA6C,CAAC,WAAW,CAAC;QACtE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACxD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,CAAe,EAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACnG,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAAE,OAAO,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,wBAAwB,EAAE,IAAI,EAAkB,CAAC,CAAC;QACxF,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sCAAsC,CAAC,QAA2B;IAChF,MAAM,YAAY,GAAG,2BAA2B,CAAC,CAAC,mDAAmD;IACrG,MAAM,MAAM,GAAG,CAAC,CAAe,EAAgB,EAAE;QAC/C,MAAM,EAAE,GAAI,CAAgE,CAAC,WAAW,CAAC;QACzF,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7G,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,GAAG;gBAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAkB,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QACrC,4EAA4E;QAC5E,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,IACE,IAAI;gBACJ,OAAQ,CAAiC,CAAC,cAAc,KAAK,QAAQ;gBACpE,IAAoC,CAAC,cAAc,KAAM,CAAiC,CAAC,cAAc,EAC1G,CAAC;gBACD,SAAS;YACX,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC"}
@@ -19,6 +19,19 @@
19
19
  */
20
20
  export type GateTier = 'fast' | 'runtime' | 'integration' | 'deploy-dev' | 'final' | 'ci' | 'deploy-staging' | 'deploy-prod';
21
21
  /** Cheap → expensive promotion order. */
22
+ /**
23
+ * Tiers deferred while a non-promotion-blocking rung is red: the ones that stand
24
+ * up real infrastructure per run — docker compose up/down, an ephemeral postgres,
25
+ * migrations. See the cost ceiling in runTieredLadder.
26
+ *
27
+ * `runtime` and `final` are deliberately NOT here, even though `final` drives a
28
+ * headless browser. They carry the two signals unblocking promotion existed to
29
+ * deliver — does the artifact EXECUTE, and does it BEHAVE on the user journeys —
30
+ * and deferring them would re-starve exactly what `blocksPromotion` unstarved,
31
+ * just for a different reason. The complaint this ceiling answers was a compose
32
+ * cycle every turn, not a browser run.
33
+ */
34
+ export declare const COSTLY_TIERS: ReadonlySet<GateTier>;
22
35
  export declare const TIER_ORDER: GateTier[];
23
36
  export interface GateRung {
24
37
  /** Stable identifier, e.g. 'build', 'typecheck', 'test', 'lint' */
@@ -97,6 +110,12 @@ export interface RungResult {
97
110
  * testsActuallyRan.
98
111
  */
99
112
  zeroTests?: boolean;
113
+ /**
114
+ * Why a skipped rung was skipped. 'deferred-cost' means the cost ceiling held
115
+ * it back while a non-blocking rung is red — no gate FAILED, so reporting it as
116
+ * "earlier gate failed" would point the model at a problem that does not exist.
117
+ */
118
+ skipReason?: 'earlier-failure' | 'deferred-cost';
100
119
  }
101
120
  export interface LadderResult {
102
121
  /** True when every required rung passed */
@@ -1 +1 @@
1
- {"version":3,"file":"verifier-ladder.d.ts","sourceRoot":"","sources":["../../src/delivery/verifier-ladder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifier-ladder.d.ts","sourceRoot":"","sources":["../../src/delivery/verifier-ladder.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,22 @@ import { existsSync, readFileSync, readdirSync, lstatSync } from 'fs';
15
15
  import { join } from 'path';
16
16
  import { synthesizeExecutionRung } from './execution-gate.js';
17
17
  /** Cheap → expensive promotion order. */
18
+ /**
19
+ * Tiers deferred while a non-promotion-blocking rung is red: the ones that stand
20
+ * up real infrastructure per run — docker compose up/down, an ephemeral postgres,
21
+ * migrations. See the cost ceiling in runTieredLadder.
22
+ *
23
+ * `runtime` and `final` are deliberately NOT here, even though `final` drives a
24
+ * headless browser. They carry the two signals unblocking promotion existed to
25
+ * deliver — does the artifact EXECUTE, and does it BEHAVE on the user journeys —
26
+ * and deferring them would re-starve exactly what `blocksPromotion` unstarved,
27
+ * just for a different reason. The complaint this ceiling answers was a compose
28
+ * cycle every turn, not a browser run.
29
+ */
30
+ export const COSTLY_TIERS = new Set([
31
+ 'integration',
32
+ 'deploy-dev',
33
+ ]);
18
34
  export const TIER_ORDER = [
19
35
  'fast',
20
36
  'runtime',
@@ -695,11 +711,36 @@ export function formatFeedback(results, rungs) {
695
711
  const requiredIds = new Set(rungs.filter((r) => r.required).map((r) => r.id));
696
712
  const lines = ['Gate results:'];
697
713
  for (const r of results) {
698
- const status = r.skipped ? 'SKIPPED (earlier gate failed)' : r.passed ? 'PASS' : 'FAIL';
714
+ const status = r.skipped
715
+ ? r.skipReason === 'deferred-cost'
716
+ ? 'DEFERRED (cheap gates first — will run once they pass)'
717
+ : 'SKIPPED (earlier gate failed)'
718
+ : r.passed
719
+ ? 'PASS'
720
+ : 'FAIL';
699
721
  const optional = requiredIds.has(r.id) ? '' : ' (optional)';
700
722
  lines.push(`- ${r.name}${optional}: ${status}`);
701
723
  }
702
- const firstRequiredFailure = results.find((r) => !r.passed && !r.skipped && requiredIds.has(r.id));
724
+ // Which failure gets the one detail block matters. Results arrive in TIER_ORDER,
725
+ // so the fast-tier synthetic self-gate always won the slot — and once
726
+ // blocksPromotion let the runtime/final gates actually RUN behind a red
727
+ // self-gate, they ran and their output was still never shown. The model was
728
+ // told "fix this gate first" about a model-authored acceptance script that is
729
+ // SUPPOSED to stay red until the mission is done, while the real build/execution
730
+ // failure sat one line above with no tail.
731
+ //
732
+ // So prefer a failure that blocks promotion — a real, objective gate the model
733
+ // can actually act on this turn. Fall back to the synthetic one when that is all
734
+ // there is, since then it genuinely is the only thing to work toward.
735
+ const blockingIds = new Set(rungs.filter((r) => r.required && r.blocksPromotion !== false).map((r) => r.id));
736
+ const failedRequired = results.filter((r) => !r.passed && !r.skipped && requiredIds.has(r.id));
737
+ const firstRequiredFailure = failedRequired.find((r) => blockingIds.has(r.id) && r.outputTail) ??
738
+ // Never drop the only diagnostic we have: preferring a TAILLESS blocking rung
739
+ // over a non-blocking one that actually has output would print no failure
740
+ // detail at all — strictly worse than before this preference existed.
741
+ failedRequired.find((r) => r.outputTail) ??
742
+ failedRequired.find((r) => blockingIds.has(r.id)) ??
743
+ failedRequired[0];
703
744
  if (firstRequiredFailure && firstRequiredFailure.outputTail) {
704
745
  lines.push('');
705
746
  lines.push(`Fix this gate first — ${firstRequiredFailure.name} output:`);
@@ -707,6 +748,15 @@ export function formatFeedback(results, rungs) {
707
748
  lines.push(firstRequiredFailure.outputTail);
708
749
  lines.push('```');
709
750
  }
751
+ else if (firstRequiredFailure) {
752
+ // A REQUIRED gate failed but produced no output (a script that exits non-zero
753
+ // silently). Say exactly that — the branch below would otherwise tell the
754
+ // model this blocking gate is "OPTIONAL … do not prioritize it", which is the
755
+ // opposite of true and the inverse of the bait that branch exists to prevent.
756
+ lines.push('');
757
+ lines.push(`Fix this gate first — ${firstRequiredFailure.name} failed with no output ` +
758
+ `(exit ${firstRequiredFailure.exitCode}). Run it yourself to see why.`);
759
+ }
710
760
  else {
711
761
  // Optional-only failures must NOT carry the "fix this first" imperative or
712
762
  // the failure tail: on an otherwise-green baseline the tail baits the model
@@ -714,7 +764,9 @@ export function formatFeedback(results, rungs) {
714
764
  // goal (observed live 2026-07-10: 13/13 writes against an optional lint
715
765
  // rung whose eslint plugin crash the agent could never fix, zero writes
716
766
  // toward the epic goal).
717
- const firstOptionalFailure = results.find((r) => !r.passed && !r.skipped);
767
+ // Scoped to genuinely optional rungs `firstRequiredFailure` being unset is
768
+ // now the only way to reach here, so this can no longer mislabel a required one.
769
+ const firstOptionalFailure = results.find((r) => !r.passed && !r.skipped && !requiredIds.has(r.id));
718
770
  if (firstOptionalFailure) {
719
771
  lines.push('');
720
772
  lines.push(`Note: ${firstOptionalFailure.name} is failing but is OPTIONAL — it does not block ` +
@@ -850,7 +902,7 @@ export function mergeRedetectedRungs(current, detected, allow) {
850
902
  const added = detected.filter((r) => !have.has(r.id) && allowed(r));
851
903
  return added.length > 0 ? [...current, ...added] : current;
852
904
  }
853
- const skippedRung = (rung) => ({
905
+ const skippedRung = (rung, reason) => ({
854
906
  id: rung.id,
855
907
  name: rung.name,
856
908
  passed: false,
@@ -858,6 +910,7 @@ const skippedRung = (rung) => ({
858
910
  exitCode: null,
859
911
  durationMs: 0,
860
912
  outputTail: '',
913
+ ...(reason ? { skipReason: reason } : {}),
861
914
  });
862
915
  /**
863
916
  * Cheap-first tiered ladder. Runs the cheapest tier first and only promotes to
@@ -891,14 +944,18 @@ export async function runTieredLadder(rungs, projectRoot, options = {}) {
891
944
  // Rungs that were eligible to run (tier <= maxTier); only these gate delivery.
892
945
  const inScope = [];
893
946
  let promotionStopped = false;
947
+ /** A rung failed that is required but deliberately does not stop promotion. */
948
+ let nonBlockingFailed = false;
894
949
  for (const tier of TIER_ORDER) {
895
950
  const tierRungs = byTier.get(tier);
896
951
  if (!tierRungs || tierRungs.length === 0)
897
952
  continue;
898
953
  // 'final' is an epilogue tier: always in scope when its rung was
899
- // synthesized (config-gated upstream), regardless of the cost ceiling —
900
- // it must not drag integration/deploy-dev into scope, and promotion
901
- // still guarantees it only runs when every cheaper in-scope tier passed.
954
+ // synthesized (config-gated upstream), regardless of the maxTier ceiling —
955
+ // it must not drag integration/deploy-dev into scope. It runs when no
956
+ // PROMOTION-BLOCKING rung has failed; the cost ceiling can leave
957
+ // integration/deploy-dev deferred-not-passed while final still runs, which
958
+ // is intended (it carries the behavioural signal, they carry infrastructure).
902
959
  const eligible = tier === 'final' || TIER_ORDER.indexOf(tier) <= maxIdx;
903
960
  if (!eligible) {
904
961
  // Above maxTier — verified remotely, never run locally.
@@ -913,6 +970,26 @@ export async function runTieredLadder(rungs, projectRoot, options = {}) {
913
970
  results.push(skippedRung(rung));
914
971
  continue;
915
972
  }
973
+ // COST CEILING while a non-blocking rung is red.
974
+ //
975
+ // blocksPromotion exists so a red synthetic self-gate stops starving the real
976
+ // gates. But "don't starve" should not mean "pay for everything, every turn":
977
+ // the self-gate is raised precisely when the project's own gates are green and
978
+ // is REQUIRED to stay red until the mission is done, so without a ceiling every
979
+ // turn of a long run would bring a docker-compose stack up and down
980
+ // (integration/deploy-dev) and drive a headless browser + vision model (final).
981
+ //
982
+ // runtime is the tier that carries the feedback the unblocking was for — does
983
+ // the artifact actually execute — and it is cheap. So while a non-blocking rung
984
+ // is red, run up to runtime and defer the expensive tiers until the ladder is
985
+ // otherwise clean. Escape hatch for anyone who wants the full ladder anyway.
986
+ if (nonBlockingFailed &&
987
+ COSTLY_TIERS.has(tier) &&
988
+ process.env.UAP_LADDER_NO_COST_CEILING !== '1') {
989
+ for (const rung of tierRungs)
990
+ results.push(skippedRung(rung, 'deferred-cost'));
991
+ continue;
992
+ }
916
993
  const useRunner = tier === 'deploy-dev' && options.deployDevRunner ? options.deployDevRunner
917
994
  : tier === 'final' && options.userValidationRunner ? options.userValidationRunner
918
995
  : runner;
@@ -922,12 +999,19 @@ export async function runTieredLadder(rungs, projectRoot, options = {}) {
922
999
  // rung (blocksPromotion: false) still fails the ladder — it just does not
923
1000
  // hide the real gates in later tiers behind it.
924
1001
  if (!tierResult.passed) {
925
- const blockingFailed = tierResult.results.some((r) => {
1002
+ let blockingFailed = false;
1003
+ for (const r of tierResult.results) {
926
1004
  if (r.passed || r.skipped)
927
- return false;
1005
+ continue;
928
1006
  const rung = tierRungs.find((g) => g.id === r.id);
929
- return (rung?.blocksPromotion ?? true) && (rung?.required ?? true);
930
- });
1007
+ const required = rung?.required ?? true;
1008
+ if (!required)
1009
+ continue;
1010
+ if (rung?.blocksPromotion === false)
1011
+ nonBlockingFailed = true;
1012
+ else
1013
+ blockingFailed = true;
1014
+ }
931
1015
  if (blockingFailed)
932
1016
  promotionStopped = true;
933
1017
  }