@miller-tech/uap 1.164.0 → 1.165.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 (48) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/browser/web-browser.d.ts +7 -0
  3. package/dist/browser/web-browser.d.ts.map +1 -1
  4. package/dist/browser/web-browser.js +15 -0
  5. package/dist/browser/web-browser.js.map +1 -1
  6. package/dist/cli/deliver.d.ts +27 -0
  7. package/dist/cli/deliver.d.ts.map +1 -1
  8. package/dist/cli/deliver.js +103 -12
  9. package/dist/cli/deliver.js.map +1 -1
  10. package/dist/cli/verify.d.ts +6 -0
  11. package/dist/cli/verify.d.ts.map +1 -1
  12. package/dist/cli/verify.js +64 -0
  13. package/dist/cli/verify.js.map +1 -1
  14. package/dist/delivery/agentic-executor.d.ts +15 -0
  15. package/dist/delivery/agentic-executor.d.ts.map +1 -1
  16. package/dist/delivery/agentic-executor.js +64 -3
  17. package/dist/delivery/agentic-executor.js.map +1 -1
  18. package/dist/delivery/convergence-loop.d.ts +39 -1
  19. package/dist/delivery/convergence-loop.d.ts.map +1 -1
  20. package/dist/delivery/convergence-loop.js +22 -4
  21. package/dist/delivery/convergence-loop.js.map +1 -1
  22. package/dist/delivery/execution-gate.d.ts +4 -0
  23. package/dist/delivery/execution-gate.d.ts.map +1 -1
  24. package/dist/delivery/execution-gate.js +194 -2
  25. package/dist/delivery/execution-gate.js.map +1 -1
  26. package/dist/delivery/mission-acceptance.d.ts.map +1 -1
  27. package/dist/delivery/mission-acceptance.js +69 -21
  28. package/dist/delivery/mission-acceptance.js.map +1 -1
  29. package/dist/delivery/user-paths.d.ts +42 -0
  30. package/dist/delivery/user-paths.d.ts.map +1 -1
  31. package/dist/delivery/user-paths.js +254 -6
  32. package/dist/delivery/user-paths.js.map +1 -1
  33. package/dist/delivery/user-validation.d.ts.map +1 -1
  34. package/dist/delivery/user-validation.js +21 -1
  35. package/dist/delivery/user-validation.js.map +1 -1
  36. package/dist/delivery/vision-judge.d.ts.map +1 -1
  37. package/dist/delivery/vision-judge.js +8 -1
  38. package/dist/delivery/vision-judge.js.map +1 -1
  39. package/dist/models/openai-compat-client.d.ts +26 -0
  40. package/dist/models/openai-compat-client.d.ts.map +1 -1
  41. package/dist/models/openai-compat-client.js +60 -8
  42. package/dist/models/openai-compat-client.js.map +1 -1
  43. package/docs/guides/DROIDS_AND_SKILLS.md +2 -1
  44. package/package.json +1 -1
  45. package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
  46. package/src/policies/enforcers/iac_plan_destruction_check.py +32 -4
  47. package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
  48. package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
@@ -42,6 +42,13 @@ export declare class WebBrowser {
42
42
  getText(selector: string): Promise<string>;
43
43
  screenshot(path: string): Promise<void>;
44
44
  evaluate<T>(script: string | ((arg: unknown) => unknown)): Promise<T>;
45
+ /**
46
+ * Register a script that runs in every page BEFORE its own scripts — used to
47
+ * instrument the page (e.g. count requestAnimationFrame calls) so the
48
+ * execution gate can tell a live render loop from a frozen one. Must be called
49
+ * before goto. No-op if the underlying engine lacks addInitScript.
50
+ */
51
+ addInitScript(script: string): Promise<void>;
45
52
  waitForLoadState(state?: 'load' | 'domcontentloaded' | 'networkidle'): Promise<void>;
46
53
  click(selector: string): Promise<void>;
47
54
  fill(selector: string, value: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"web-browser.d.ts","sourceRoot":"","sources":["../../src/browser/web-browser.ts"],"names":[],"mappings":"AAAA,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD,4FAA4F;AAC5F,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,MAAM,CAAmB;IAE3B,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBlE;;;;;OAKG;IACH;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;IAK7D,OAAO,CAAC,kBAAkB;IAgD1B,8FAA8F;IAC9F,SAAS,IAAI,SAAS,EAAE;IAIxB,4EAA4E;IAC5E,WAAW,IAAI,IAAI;YAIL,uBAAuB;IAS/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASlC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAUrE,gBAAgB,CACpB,KAAK,GAAE,MAAM,GAAG,kBAAkB,GAAG,aAAsB,GAC1D,OAAO,CAAC,IAAI,CAAC;IAKV,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAU7D;AAED,UAAU,WAAW;IACnB,WAAW,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,QAAO,UAA8B,CAAC"}
1
+ {"version":3,"file":"web-browser.d.ts","sourceRoot":"","sources":["../../src/browser/web-browser.ts"],"names":[],"mappings":"AAAA,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD,4FAA4F;AAC5F,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,MAAM,CAAmB;IAE3B,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBlE;;;;;OAKG;IACH;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;IAK7D,OAAO,CAAC,kBAAkB;IAgD1B,8FAA8F;IAC9F,SAAS,IAAI,SAAS,EAAE;IAIxB,4EAA4E;IAC5E,WAAW,IAAI,IAAI;YAIL,uBAAuB;IAS/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASlC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAU3E;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C,gBAAgB,CACpB,KAAK,GAAE,MAAM,GAAG,kBAAkB,GAAG,aAAsB,GAC1D,OAAO,CAAC,IAAI,CAAC;IAKV,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAU7D;AAED,UAAU,WAAW;IACnB,WAAW,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,QAAO,UAA8B,CAAC"}
@@ -146,6 +146,21 @@ export class WebBrowser {
146
146
  const func = typeof script === 'string' ? new Function('return (' + script + ')()') : script;
147
147
  return await page.evaluate(func);
148
148
  }
149
+ /**
150
+ * Register a script that runs in every page BEFORE its own scripts — used to
151
+ * instrument the page (e.g. count requestAnimationFrame calls) so the
152
+ * execution gate can tell a live render loop from a frozen one. Must be called
153
+ * before goto. No-op if the underlying engine lacks addInitScript.
154
+ */
155
+ async addInitScript(script) {
156
+ if (!this.page)
157
+ throw new Error('Browser not initialized');
158
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
+ const ctx = this.context ?? this.page;
160
+ if (typeof ctx.addInitScript === 'function') {
161
+ await ctx.addInitScript(script);
162
+ }
163
+ }
149
164
  async waitForLoadState(state = 'load') {
150
165
  if (!this.page)
151
166
  throw new Error('Browser not initialized');
@@ -1 +1 @@
1
- {"version":3,"file":"web-browser.js","sourceRoot":"","sources":["../../src/browser/web-browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-browser.js","sourceRoot":"","sources":["../../src/browser/web-browser.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,33 @@ export declare function shouldSkipAcceptanceJudge(opts: {
39
39
  complexity?: string;
40
40
  acceptancePrimary: boolean;
41
41
  }): boolean;
42
+ /**
43
+ * When the model fails to author a self-gate, is that fatal?
44
+ *
45
+ * Only if the run would then have NO convergence target at all. Getting this
46
+ * wrong in the permissive direction re-opens the false-green door the
47
+ * anti-vacuous floor exists to close: with no self-gate rung and no acceptance
48
+ * judge, a repo whose gates were already green is "delivered" having written
49
+ * nothing.
50
+ *
51
+ * Two traps this predicate exists to avoid, both of which `!options.acceptance`
52
+ * alone walks straight into:
53
+ *
54
+ * - `--acceptance` is on but the judge is SKIPPED for a simple task
55
+ * (shouldSkipAcceptanceJudge), so no gate object is ever built.
56
+ * - max fidelity is treated as a standing blocker. It is not: the vision review
57
+ * lives INSIDE the acceptance gate, so if that gate was never built there is
58
+ * nothing to block, and visionAcceptanceFeedback additionally fails open on
59
+ * five separate conditions (no vision model, no screenshots, non-final epic,
60
+ * any thrown error, fidelity not max).
61
+ *
62
+ * So the only thing that makes a missing self-gate survivable is a judge that
63
+ * will actually run — plus at least one real rung to converge against.
64
+ */
65
+ export declare function selfGateFailureIsFatal(opts: {
66
+ acceptanceEnabled: boolean;
67
+ judgeSkipped: boolean;
68
+ }): boolean;
42
69
  /**
43
70
  * Generator≠Evaluator: resolve which model should AUTHOR + JUDGE the acceptance
44
71
  * gate. Returns the evaluator preset id when it must differ from the generator
@@ -1 +1 @@
1
- {"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../src/cli/deliver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../src/cli/deliver.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,36 @@ export function shouldSkipAcceptanceJudge(opts) {
49
49
  opts.complexity === 'simple' &&
50
50
  !opts.acceptancePrimary);
51
51
  }
52
+ /**
53
+ * When the model fails to author a self-gate, is that fatal?
54
+ *
55
+ * Only if the run would then have NO convergence target at all. Getting this
56
+ * wrong in the permissive direction re-opens the false-green door the
57
+ * anti-vacuous floor exists to close: with no self-gate rung and no acceptance
58
+ * judge, a repo whose gates were already green is "delivered" having written
59
+ * nothing.
60
+ *
61
+ * Two traps this predicate exists to avoid, both of which `!options.acceptance`
62
+ * alone walks straight into:
63
+ *
64
+ * - `--acceptance` is on but the judge is SKIPPED for a simple task
65
+ * (shouldSkipAcceptanceJudge), so no gate object is ever built.
66
+ * - max fidelity is treated as a standing blocker. It is not: the vision review
67
+ * lives INSIDE the acceptance gate, so if that gate was never built there is
68
+ * nothing to block, and visionAcceptanceFeedback additionally fails open on
69
+ * five separate conditions (no vision model, no screenshots, non-final epic,
70
+ * any thrown error, fidelity not max).
71
+ *
72
+ * So the only thing that makes a missing self-gate survivable is a judge that
73
+ * will actually run — plus at least one real rung to converge against.
74
+ */
75
+ export function selfGateFailureIsFatal(opts) {
76
+ // A judge that will actually run is the only substitute. Surviving rungs do not
77
+ // rescue this: needsSelfGate is raised precisely when the objective gates are
78
+ // all GREEN (no convergence pressure) or absent entirely (the loop throws), so
79
+ // in both cases a missing self-gate with no judge leaves nothing to satisfy.
80
+ return !(opts.acceptanceEnabled && !opts.judgeSkipped);
81
+ }
52
82
  /**
53
83
  * Generator≠Evaluator: resolve which model should AUTHOR + JUDGE the acceptance
54
84
  * gate. Returns the evaluator preset id when it must differ from the generator
@@ -107,7 +137,7 @@ import { initLedger, markItem } from '../delivery/completion-ledger.js';
107
137
  import { loadUapConfigRaw } from '../utils/config-loader.js';
108
138
  import { resolveEscalateModelId } from '../delivery/repair-escalation.js';
109
139
  import { createUserValidationRunner, resolveUserValidationMode, synthesizeUserValidationRung, } from '../delivery/user-validation.js';
110
- import { deriveUserPaths, fallbackWebManifest, loadUserPaths, mergeUserPaths, USER_PATHS_FILE } from '../delivery/user-paths.js';
140
+ import { deriveUserPaths, fallbackWebManifest, loadUserPaths, mergeUserPaths, renderAcceptanceContract, USER_PATHS_FILE } from '../delivery/user-paths.js';
111
141
  import { detectArtifactType } from '../delivery/execution-gate.js';
112
142
  /** Raw .uap.json reader usable before the main cfgRawEarly declaration. */
113
143
  function cfgRawEarlyForUvFactory(projectRoot) {
@@ -1203,19 +1233,36 @@ async function runDeliver(instruction, options) {
1203
1233
  for (const note of sg.notes)
1204
1234
  console.log(chalk.dim(` ${note}`));
1205
1235
  if (!sg.rung) {
1206
- fail('Could not author an acceptance gate (model produced no runnable script).');
1207
- }
1208
- rungs.push(sg.rung);
1209
- if (sg.vacuous) {
1210
- // P0 hard-fail: a REQUIRED self-gate that passes on the unsolved repo
1211
- // re-opens the false-green door — "delivered" would be meaningless.
1212
- if (process.env.UAP_DELIVER_ALLOW_WEAK_SELF_GATE !== '1') {
1213
- fail('The self-gate is REQUIRED for this run (anti-vacuous floor) but stayed vacuous after retries — it passes on the unsolved repo. Add concrete, checkable ACCEPTANCE CRITERIA to the instruction, or set UAP_DELIVER_ALLOW_WEAK_SELF_GATE=1 to accept the risk.');
1236
+ // A failed self-gate is survivable only when a real acceptance judge will
1237
+ // run and become the convergence target. See selfGateFailureIsFatal — in
1238
+ // particular, max fidelity is NOT a substitute: the vision review lives
1239
+ // inside the acceptance gate, so when that gate is never built there is
1240
+ // nothing for it to block.
1241
+ if (selfGateFailureIsFatal({
1242
+ acceptanceEnabled: Boolean(options.acceptance),
1243
+ judgeSkipped: shouldSkipAcceptanceJudge({
1244
+ acceptanceEnabled: Boolean(options.acceptance),
1245
+ complexity: autoPlan?.complexity,
1246
+ acceptancePrimary,
1247
+ }),
1248
+ })) {
1249
+ fail('Could not author an acceptance gate (model produced no runnable script).');
1214
1250
  }
1215
- console.log(chalk.yellow(' ⚠ acceptance gate may be weak (could not force an initially-failing check); UAP_DELIVER_ALLOW_WEAK_SELF_GATE=1 running multi-turn anyway.'));
1251
+ console.log(chalk.yellow(' ⚠ self-gate authoring failed the acceptance judge is the convergence target for this run.'));
1216
1252
  }
1217
1253
  else {
1218
- console.log(chalk.green(' ✓ acceptance gate authored — fails on the unsolved repo, a real convergence target.'));
1254
+ rungs.push(sg.rung);
1255
+ if (sg.vacuous) {
1256
+ // P0 hard-fail: a REQUIRED self-gate that passes on the unsolved repo
1257
+ // re-opens the false-green door — "delivered" would be meaningless.
1258
+ if (process.env.UAP_DELIVER_ALLOW_WEAK_SELF_GATE !== '1') {
1259
+ fail('The self-gate is REQUIRED for this run (anti-vacuous floor) but stayed vacuous after retries — it passes on the unsolved repo. Add concrete, checkable ACCEPTANCE CRITERIA to the instruction, or set UAP_DELIVER_ALLOW_WEAK_SELF_GATE=1 to accept the risk.');
1260
+ }
1261
+ console.log(chalk.yellow(' ⚠ acceptance gate may be weak (could not force an initially-failing check); UAP_DELIVER_ALLOW_WEAK_SELF_GATE=1 — running multi-turn anyway.'));
1262
+ }
1263
+ else {
1264
+ console.log(chalk.green(' ✓ acceptance gate authored — fails on the unsolved repo, a real convergence target.'));
1265
+ }
1219
1266
  }
1220
1267
  }
1221
1268
  // Phase 5: escalation ladder. Cheap strategies first (widen exploration →
@@ -1730,6 +1777,27 @@ async function runDeliver(instruction, options) {
1730
1777
  console.log(chalk.dim(' user-validation: no manifest derived — gate will report NA until one exists'));
1731
1778
  }
1732
1779
  }
1780
+ // Surface the acceptance contract (the user-path journeys + required selectors)
1781
+ // to the executor on EVERY turn. The manifest is authored up front but was
1782
+ // otherwise invisible to the implementer, so a weak model built artifacts that
1783
+ // the real-client gate could not drive (e.g. a canvas-only UI with no DOM
1784
+ // handles) and then could not self-correct from the gate's selector-not-found
1785
+ // feedback. Injecting the contract closes the author→implement loop: the model
1786
+ // builds a complete, drivable artifact from turn 1. Fail-soft — an aid, never a
1787
+ // blocker.
1788
+ if (userValidationMode !== 'off') {
1789
+ try {
1790
+ const loaded = loadUserPaths(projectRoot);
1791
+ const contract = renderAcceptanceContract(loaded?.manifest ?? null);
1792
+ if (contract) {
1793
+ loopConfig.acceptanceContract = contract;
1794
+ console.log(chalk.dim(' user-validation: acceptance contract (journeys + required selectors) injected into the executor prompt'));
1795
+ }
1796
+ }
1797
+ catch {
1798
+ /* contract injection is a best-effort completeness aid */
1799
+ }
1800
+ }
1733
1801
  const runState = {
1734
1802
  runId,
1735
1803
  instruction,
@@ -1762,6 +1830,12 @@ async function runDeliver(instruction, options) {
1762
1830
  runState.checkpoint = cp;
1763
1831
  saveRunState(runState);
1764
1832
  };
1833
+ // Under max fidelity the vision aesthetic review is a BLOCKING release gate;
1834
+ // let the acceptance gate run (and feed vision findings) even when the ladder
1835
+ // is red on a synthetic anti-vacuous self-gate, so the model gets aesthetic
1836
+ // feedback instead of stalling. The gate re-checks operational + behavioral
1837
+ // itself before grading (mission-acceptance), preserving the required ordering.
1838
+ loopConfig.runAcceptanceDespiteLadder = deliverFidelity.max;
1765
1839
  // Cooperative cancel from the dashboard: the loop polls this each turn.
1766
1840
  loopConfig.shouldStop = () => isStopRequested(projectRoot, runId);
1767
1841
  clearStop(projectRoot, runId);
@@ -2189,7 +2263,18 @@ async function runDeliver(instruction, options) {
2189
2263
  // Regression scoring uses only the fast tier — a cheap, synchronous, always-
2190
2264
  // run signal. Integration/deploy-dev gates may not run at baseline (promotion
2191
2265
  // is cheap-first), so they are not a trustworthy regression comparison.
2192
- const fastRungs = rungs.filter((r) => tierOf(r) === 'fast');
2266
+ // keep-best scores the DETERMINISTIC objective gates — build/test/lint (fast) PLUS
2267
+ // the execution smoke (runtime) and user-path (final) gates — not just the fast tier.
2268
+ // On a project whose only meaningful gates are runtime/final (e.g. a vanilla-JS web
2269
+ // app with no build step) the fast subset is trivially 1.00 every turn, so
2270
+ // best-intermediate never advanced and a 100%-functional turn that later regressed
2271
+ // was DISCARDED (octopus, 2026-07-24: the lazy turn hit 100% of gates, the
2272
+ // vision-chasing turns then rewrote game.js and broke the HUD wiring, and the win was
2273
+ // lost — the harness kept the regressed end state). Exclude the LLM judge rungs
2274
+ // (bootstrap/acceptance): non-deterministic, they would make the rollback target flap.
2275
+ const KEEP_BEST_TIERS = new Set(['fast', 'runtime', 'integration', 'final']);
2276
+ const KEEP_BEST_EXCLUDE_IDS = new Set(['bootstrap', 'acceptance']);
2277
+ const fastRungs = rungs.filter((r) => KEEP_BEST_TIERS.has(tierOf(r)) && !KEEP_BEST_EXCLUDE_IDS.has(r.id));
2193
2278
  const keepBest = Boolean(options.keepBest) && fastRungs.length > 0 && !needsSelfGate;
2194
2279
  let regressSnapshot = null;
2195
2280
  let baselineGateScore = 0;
@@ -2235,6 +2320,12 @@ async function runDeliver(instruction, options) {
2235
2320
  redetectRungs: true,
2236
2321
  redetectFilter: loopConfig.redetectFilter,
2237
2322
  protectTests: options.protectTests,
2323
+ // The acceptance contract is a REQUIREMENT spec, not a convergence aid:
2324
+ // carry it into the bare turn so a one-shot build already exposes the
2325
+ // journeys/selectors the gate will drive (otherwise the lazy turn builds
2326
+ // blind, e.g. a canvas-only UI with no DOM handles, and only later turns
2327
+ // — which do get the contract — can recover it).
2328
+ acceptanceContract: loopConfig.acceptanceContract,
2238
2329
  onIteration: (record) => { updateDeliverHeartbeat(projectRoot); printProgress(record); },
2239
2330
  }, executor, seams);
2240
2331
  const lazyResult = await lazyLoop.deliver(instruction);