@miller-tech/uap 1.170.1 → 1.172.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +26 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/browser/web-browser.d.ts +17 -0
- package/dist/browser/web-browser.d.ts.map +1 -1
- package/dist/browser/web-browser.js +36 -0
- package/dist/browser/web-browser.js.map +1 -1
- package/dist/cli/interaction.d.ts +29 -0
- package/dist/cli/interaction.d.ts.map +1 -0
- package/dist/cli/interaction.js +217 -0
- package/dist/cli/interaction.js.map +1 -0
- package/dist/cli/verify.d.ts +6 -0
- package/dist/cli/verify.d.ts.map +1 -1
- package/dist/cli/verify.js +112 -7
- package/dist/cli/verify.js.map +1 -1
- package/dist/delivery/fidelity.d.ts +16 -0
- package/dist/delivery/fidelity.d.ts.map +1 -1
- package/dist/delivery/fidelity.js +7 -0
- package/dist/delivery/fidelity.js.map +1 -1
- package/dist/delivery/interaction/driver.d.ts +60 -0
- package/dist/delivery/interaction/driver.d.ts.map +1 -0
- package/dist/delivery/interaction/driver.js +18 -0
- package/dist/delivery/interaction/driver.js.map +1 -0
- package/dist/delivery/interaction/manifest.d.ts +84 -0
- package/dist/delivery/interaction/manifest.d.ts.map +1 -0
- package/dist/delivery/interaction/manifest.js +241 -0
- package/dist/delivery/interaction/manifest.js.map +1 -0
- package/dist/delivery/interaction/mine.d.ts +54 -0
- package/dist/delivery/interaction/mine.d.ts.map +1 -0
- package/dist/delivery/interaction/mine.js +218 -0
- package/dist/delivery/interaction/mine.js.map +1 -0
- package/dist/delivery/interaction/runner.d.ts +51 -0
- package/dist/delivery/interaction/runner.d.ts.map +1 -0
- package/dist/delivery/interaction/runner.js +277 -0
- package/dist/delivery/interaction/runner.js.map +1 -0
- package/dist/delivery/interaction/types.d.ts +223 -0
- package/dist/delivery/interaction/types.d.ts.map +1 -0
- package/dist/delivery/interaction/types.js +19 -0
- package/dist/delivery/interaction/types.js.map +1 -0
- package/dist/delivery/interaction/verdict.d.ts +26 -0
- package/dist/delivery/interaction/verdict.d.ts.map +1 -0
- package/dist/delivery/interaction/verdict.js +139 -0
- package/dist/delivery/interaction/verdict.js.map +1 -0
- package/dist/delivery/interaction/watchdog.d.ts +82 -0
- package/dist/delivery/interaction/watchdog.d.ts.map +1 -0
- package/dist/delivery/interaction/watchdog.js +210 -0
- package/dist/delivery/interaction/watchdog.js.map +1 -0
- package/dist/delivery/interaction/web-driver.d.ts +102 -0
- package/dist/delivery/interaction/web-driver.d.ts.map +1 -0
- package/dist/delivery/interaction/web-driver.js +306 -0
- package/dist/delivery/interaction/web-driver.js.map +1 -0
- package/dist/delivery/interaction-gate.d.ts +45 -0
- package/dist/delivery/interaction-gate.d.ts.map +1 -0
- package/dist/delivery/interaction-gate.js +248 -0
- package/dist/delivery/interaction-gate.js.map +1 -0
- package/dist/delivery/mission-acceptance.d.ts +2 -0
- package/dist/delivery/mission-acceptance.d.ts.map +1 -1
- package/dist/delivery/mission-acceptance.js +23 -0
- package/dist/delivery/mission-acceptance.js.map +1 -1
- package/dist/delivery/vision-judge.d.ts +21 -0
- package/dist/delivery/vision-judge.d.ts.map +1 -1
- package/dist/delivery/vision-judge.js +96 -0
- package/dist/delivery/vision-judge.js.map +1 -1
- package/dist/types/config.d.ts +20 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -1
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `uap interaction` — mine probes from the requirements, then play the artifact
|
|
3
|
+
* through them.
|
|
4
|
+
*
|
|
5
|
+
* `mine` derive a manifest from the requirements + source and write it to
|
|
6
|
+
* .uap/interaction/manifest.json
|
|
7
|
+
* `run` execute the manifest against the built artifact and report
|
|
8
|
+
* `status` show what is covered and whether the manifest still matches the
|
|
9
|
+
* requirements it was mined from
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
13
|
+
import { extname, join, relative } from 'node:path';
|
|
14
|
+
import { detectArtifactType, findWebEntry } from '../delivery/execution-gate.js';
|
|
15
|
+
import { runInteractionGate, interactionSummary } from '../delivery/interaction-gate.js';
|
|
16
|
+
import { coverageOf, loadManifest, manifestIsStale, manifestPath, saveManifest, } from '../delivery/interaction/manifest.js';
|
|
17
|
+
import { mineManifest } from '../delivery/interaction/mine.js';
|
|
18
|
+
import { resolveAcceptanceSpecAuto } from './verify.js';
|
|
19
|
+
const SOURCE_EXTS = new Set(['.js', '.mjs', '.ts', '.jsx', '.tsx', '.html']);
|
|
20
|
+
const SKIP_DIRS = new Set(['node_modules', '.git', 'dist', 'build', '.uap', 'coverage']);
|
|
21
|
+
/**
|
|
22
|
+
* A digest of the artifact's source so the miner writes probes against REAL
|
|
23
|
+
* identifiers. Without it the model invents plausible-looking observables that
|
|
24
|
+
* do not exist, and every probe then fails as a phantom defect.
|
|
25
|
+
*/
|
|
26
|
+
export function collectSourceDigest(root, budget = 24_000) {
|
|
27
|
+
const parts = [];
|
|
28
|
+
let used = 0;
|
|
29
|
+
const walk = (dir, depth) => {
|
|
30
|
+
if (depth > 4 || used >= budget)
|
|
31
|
+
return;
|
|
32
|
+
let entries;
|
|
33
|
+
try {
|
|
34
|
+
entries = readdirSync(dir);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
for (const name of entries) {
|
|
40
|
+
if (used >= budget)
|
|
41
|
+
return;
|
|
42
|
+
if (SKIP_DIRS.has(name) || name.startsWith('.'))
|
|
43
|
+
continue;
|
|
44
|
+
const full = join(dir, name);
|
|
45
|
+
let st;
|
|
46
|
+
try {
|
|
47
|
+
st = statSync(full);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (st.isDirectory()) {
|
|
53
|
+
walk(full, depth + 1);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (!SOURCE_EXTS.has(extname(name)))
|
|
57
|
+
continue;
|
|
58
|
+
try {
|
|
59
|
+
const text = readFileSync(full, 'utf-8');
|
|
60
|
+
const slice = text.slice(0, Math.max(0, Math.min(6_000, budget - used)));
|
|
61
|
+
parts.push(`\n--- ${relative(root, full)} ---\n${slice}`);
|
|
62
|
+
used += slice.length;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
/* unreadable file → skipped */
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
walk(root, 0);
|
|
70
|
+
return parts.join('\n');
|
|
71
|
+
}
|
|
72
|
+
async function buildExecutor(modelPreset, endpoint) {
|
|
73
|
+
try {
|
|
74
|
+
const { OpenAICompatClient } = await import('../models/openai-compat-client.js');
|
|
75
|
+
const { ModelPresets } = await import('../models/types.js');
|
|
76
|
+
const presetId = modelPreset ?? process.env.UAP_DELIVER_MODEL ?? 'qwen35-a3b';
|
|
77
|
+
const model = ModelPresets[presetId];
|
|
78
|
+
if (!model)
|
|
79
|
+
return null;
|
|
80
|
+
const resolved = endpoint ? { ...model, endpoint } : model;
|
|
81
|
+
const client = new OpenAICompatClient();
|
|
82
|
+
return async (prompt) => (await client.complete(resolved, prompt, { temperature: 0.1 })).content;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// No model is not an error: mining falls back to the deterministic baseline.
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function parseModes(raw) {
|
|
90
|
+
if (!raw)
|
|
91
|
+
return ['core'];
|
|
92
|
+
const valid = ['core', 'soak', 'accelerated'];
|
|
93
|
+
const picked = raw
|
|
94
|
+
.split(',')
|
|
95
|
+
.map((s) => s.trim())
|
|
96
|
+
.filter((s) => valid.includes(s));
|
|
97
|
+
return picked.length > 0 ? picked : ['core'];
|
|
98
|
+
}
|
|
99
|
+
export async function interactionCommand(action, options = {}) {
|
|
100
|
+
const dir = options.dir ?? process.cwd();
|
|
101
|
+
const verb = action ?? 'status';
|
|
102
|
+
if (verb === 'mine') {
|
|
103
|
+
const specText = options.spec
|
|
104
|
+
? (() => {
|
|
105
|
+
try {
|
|
106
|
+
return readFileSync(options.spec, 'utf-8');
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return '';
|
|
110
|
+
}
|
|
111
|
+
})()
|
|
112
|
+
: (resolveAcceptanceSpecAuto(dir) ?? '');
|
|
113
|
+
if (!specText.trim()) {
|
|
114
|
+
process.stderr.write('uap interaction mine: no requirements found. Pass --spec <file>, or add ' +
|
|
115
|
+
'.uap/acceptance.md / REQUIREMENTS.md so probes can be derived from something.\n');
|
|
116
|
+
process.exit(2);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
// `detectArtifactType` returns 'web' | 'node' | 'cli' | 'lib' — a straight
|
|
120
|
+
// cast to ArtifactKind would write `kind: 'lib'`, which never validates, so
|
|
121
|
+
// the manifest would fail to load forever and the gate would report "no
|
|
122
|
+
// manifest" (i.e. pass) on every run afterwards.
|
|
123
|
+
const detected = detectArtifactType(dir);
|
|
124
|
+
const web = findWebEntry(dir);
|
|
125
|
+
const kind = web ? 'web' : detected === 'cli' ? 'cli' : null;
|
|
126
|
+
if (!kind) {
|
|
127
|
+
process.stderr.write(`uap interaction mine: no interactive artifact found in ${dir} ` +
|
|
128
|
+
`(detected: ${detected ?? 'nothing'}). The interaction gate needs a web entry point.\n`);
|
|
129
|
+
process.exit(2);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const executor = await buildExecutor(options.model, options.endpoint);
|
|
133
|
+
let manifest;
|
|
134
|
+
try {
|
|
135
|
+
manifest = await mineManifest({
|
|
136
|
+
projectRoot: dir,
|
|
137
|
+
kind,
|
|
138
|
+
// Never hardcode index.html: findWebEntry supports any .html, and
|
|
139
|
+
// keying off index.html alone makes the driver request a path the
|
|
140
|
+
// server 404s, which then reads as an artifact defect.
|
|
141
|
+
entry: web?.entry ?? 'index.html',
|
|
142
|
+
specText,
|
|
143
|
+
sourceDigest: collectSourceDigest(web?.dir ?? dir),
|
|
144
|
+
...(executor ? { executor } : {}),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
process.stderr.write(`uap interaction mine: ${String(e)}\n`);
|
|
149
|
+
process.exit(1);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const path = saveManifest(dir, manifest);
|
|
153
|
+
const ledger = coverageOf(manifest);
|
|
154
|
+
if (options.json) {
|
|
155
|
+
process.stdout.write(`${JSON.stringify({ path, manifest, coverage: ledger }, null, 2)}\n`);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
process.stdout.write(`${chalk.green('✓')} mined ${manifest.probes.length} probe(s) for ${manifest.requirements.length} requirement(s) → ${path}\n`);
|
|
159
|
+
if (!executor) {
|
|
160
|
+
process.stdout.write(chalk.yellow(' no model available — wrote the deterministic baseline only. ' +
|
|
161
|
+
'Artifact-specific probes need a model preset (-m).\n'));
|
|
162
|
+
}
|
|
163
|
+
if (ledger.uncovered.length > 0) {
|
|
164
|
+
process.stdout.write(chalk.yellow(` ${ledger.uncovered.length} requirement(s) have no probe — they are unverified.\n`));
|
|
165
|
+
}
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (verb === 'run') {
|
|
169
|
+
const verdict = await runInteractionGate(dir, {
|
|
170
|
+
modes: parseModes(options.modes),
|
|
171
|
+
...(options.strictCoverage ? { strictCoverage: true } : {}),
|
|
172
|
+
});
|
|
173
|
+
if (options.json) {
|
|
174
|
+
process.stdout.write(`${JSON.stringify(verdict, null, 2)}\n`);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
process.stdout.write(`${verdict.feedback}\n`);
|
|
178
|
+
}
|
|
179
|
+
// Exit non-zero on a real behavioural failure so CI and hooks can gate on
|
|
180
|
+
// it; a skip (no manifest, no browser) stays 0 and says so.
|
|
181
|
+
process.exit(verdict.passed || verdict.skipped ? 0 : 1);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// status
|
|
185
|
+
const manifest = loadManifest(dir);
|
|
186
|
+
if (!manifest) {
|
|
187
|
+
const path = manifestPath(dir);
|
|
188
|
+
const exists = existsSync(path);
|
|
189
|
+
process.stdout.write(exists
|
|
190
|
+
? `${chalk.red('✗')} ${path} exists but is invalid — re-run \`uap interaction mine\`.\n`
|
|
191
|
+
: `${chalk.dim('·')} no interaction manifest. Run \`uap interaction mine\` to derive probes from the requirements.\n`);
|
|
192
|
+
process.exit(exists ? 1 : 0);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const ledger = coverageOf(manifest);
|
|
196
|
+
const specText = resolveAcceptanceSpecAuto(dir);
|
|
197
|
+
const stale = specText ? manifestIsStale(manifest, specText) : false;
|
|
198
|
+
if (options.json) {
|
|
199
|
+
process.stdout.write(`${JSON.stringify({ manifest, coverage: ledger, stale }, null, 2)}\n`);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
process.stdout.write(`${chalk.bold('interaction manifest')} — ${manifest.probes.length} probe(s), ` +
|
|
203
|
+
`requirements covered ${ledger.covered}/${ledger.total}\n`);
|
|
204
|
+
for (const p of manifest.probes) {
|
|
205
|
+
process.stdout.write(` ${chalk.dim(p.mode.padEnd(11))} ${p.id} — ${p.description}\n`);
|
|
206
|
+
}
|
|
207
|
+
if (ledger.uncovered.length > 0) {
|
|
208
|
+
process.stdout.write(chalk.yellow(`\n unverified requirements:\n`));
|
|
209
|
+
for (const r of ledger.uncovered)
|
|
210
|
+
process.stdout.write(` ${r.id}: ${r.text}\n`);
|
|
211
|
+
}
|
|
212
|
+
if (stale) {
|
|
213
|
+
process.stdout.write(chalk.yellow('\n ⚠ the requirements changed since these probes were mined — re-run `uap interaction mine`.\n'));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
export { interactionSummary };
|
|
217
|
+
//# sourceMappingURL=interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/cli/interaction.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/verify.d.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { type GateRung, type LadderResult } from '../delivery/verifier-ladder.js';
|
|
12
12
|
import { type AcceptanceResult } from '../delivery/acceptance-judge.js';
|
|
13
13
|
import { type VisualVerdict } from '../delivery/visual-gate.js';
|
|
14
|
+
import type { InteractionVerdict } from '../delivery/interaction/types.js';
|
|
14
15
|
import { type ResolvedFidelity } from '../delivery/fidelity.js';
|
|
15
16
|
import type { LoopExecutor } from '../delivery/convergence-loop.js';
|
|
16
17
|
/**
|
|
@@ -54,6 +55,8 @@ export interface VerifyOptions {
|
|
|
54
55
|
* and the last report is missing/stale/failed for the CURRENT tree. A
|
|
55
56
|
* fresh-pass report (code unchanged since validation) skips the cost. */
|
|
56
57
|
userPathsAuto?: boolean;
|
|
58
|
+
/** Run the interaction gate (default: on when a manifest exists). */
|
|
59
|
+
interaction?: boolean;
|
|
57
60
|
}
|
|
58
61
|
export interface VerifyResult {
|
|
59
62
|
passed: boolean;
|
|
@@ -65,6 +68,9 @@ export interface VerifyResult {
|
|
|
65
68
|
rungs: GateRung[];
|
|
66
69
|
acceptance?: AcceptanceResult;
|
|
67
70
|
visual?: VisualVerdict;
|
|
71
|
+
interaction?: InteractionVerdict;
|
|
72
|
+
/** Which gates blocked, for machine consumers of the JSON output. */
|
|
73
|
+
blockedBy?: string[];
|
|
68
74
|
}
|
|
69
75
|
/** Core verify logic — pure-ish (no process.exit), so it is unit-testable. */
|
|
70
76
|
export declare function runVerify(opts?: VerifyOptions): Promise<VerifyResult>;
|
package/dist/cli/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAwC,KAAK,QAAQ,EAAiB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACvI,OAAO,EAA6C,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAwC,KAAK,QAAQ,EAAiB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACvI,OAAO,EAA6C,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEnG,OAAO,KAAK,EAAE,kBAAkB,EAAa,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AASjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAmCtD;AAED,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC;;6BAEyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;mFAC+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;6EAGyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,8EAA8E;AAC9E,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAyW/E;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkCpE;AAED,uEAAuE;AACvE,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChH,OAAO,CAAC,IAAI,CAAC,CAwDf"}
|
package/dist/cli/verify.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { detectRungs, runTieredLadder, tierOf } from '../delivery/verifier-ladder.js';
|
|
12
12
|
import { runAcceptanceGate, formatAcceptanceReport } from '../delivery/acceptance-judge.js';
|
|
13
13
|
import { runVisualGate, discoverEntryPages } from '../delivery/visual-gate.js';
|
|
14
|
+
import { runInteractionGate, interactionSummary } from '../delivery/interaction-gate.js';
|
|
14
15
|
import { resolveFidelity } from '../delivery/fidelity.js';
|
|
15
16
|
import { checkUserValidationFreshness, createUserValidationRunner, resolveUserValidationMode, synthesizeUserValidationRung, } from '../delivery/user-validation.js';
|
|
16
17
|
import { loadUapConfigRaw } from '../utils/config-loader.js';
|
|
@@ -172,8 +173,52 @@ export async function runVerify(opts = {}) {
|
|
|
172
173
|
// notes for a game that had NO render loop at all. It also wastes a headless
|
|
173
174
|
// browser pass plus a vision-model call on every failing turn.
|
|
174
175
|
const ladderGreen = ladder.passed;
|
|
175
|
-
|
|
176
|
-
|
|
176
|
+
// ── Interaction gate ──────────────────────────────────────────────────────
|
|
177
|
+
// Between "it runs" and "it looks right": does it DO what it promised, under
|
|
178
|
+
// real input? Runs only once the ladder is green (driving a build that does
|
|
179
|
+
// not compile proves nothing) and BEFORE the visual/vision pass, because a
|
|
180
|
+
// vision judge grades a frame and a frozen frame is indistinguishable from a
|
|
181
|
+
// working one — a broken build can collect a passing aesthetic score, and the
|
|
182
|
+
// fix loop then chases palette notes instead of the defect. Observed live
|
|
183
|
+
// (octopus_invaders_v3, 2026-07-25): visual gate `passed: true` on a build
|
|
184
|
+
// whose render loop died three seconds in.
|
|
185
|
+
let interaction;
|
|
186
|
+
// Excluded from --runtime-only for the same reason as the visual gate: that is
|
|
187
|
+
// the Stop hook's CHEAP path, run under a 120s kill, and driving a real
|
|
188
|
+
// browser through a probe suite is not cheap. Without this exclusion, merely
|
|
189
|
+
// having a manifest turns every session-end check into a browser run that the
|
|
190
|
+
// outer timeout kills mid-probe — skipping the teardown that reaps Chromium.
|
|
191
|
+
const interactionWanted = opts.interaction !== false && (!opts.runtimeOnly || fidelity.max);
|
|
192
|
+
if (ladderGreen && interactionWanted && hasEntryPages) {
|
|
193
|
+
// Max fidelity runs every mode — including the soak probes that prove the
|
|
194
|
+
// artifact survives sustained use, which is where "playable for many levels"
|
|
195
|
+
// is actually decided.
|
|
196
|
+
interaction = await runInteractionGate(dir, {
|
|
197
|
+
...(fidelity.max
|
|
198
|
+
? { modes: ['core', 'accelerated', 'soak'], strictCoverage: true }
|
|
199
|
+
: {}),
|
|
200
|
+
// Keep the whole gate inside the Stop hook's budget when max fidelity
|
|
201
|
+
// forces it onto the runtime-only path.
|
|
202
|
+
...(opts.runtimeOnly ? { budgetMs: 60_000, probeTimeoutMs: 20_000 } : {}),
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
// Standard: a missing manifest / unavailable driver fails OPEN (advisory).
|
|
206
|
+
// Max: an artifact whose promised behaviour was never exercised is NOT
|
|
207
|
+
// verified, so the skip fails CLOSED.
|
|
208
|
+
//
|
|
209
|
+
// Tested on `skipped` DIRECTLY rather than on `!passed`: skipped verdicts
|
|
210
|
+
// carry passed:true, so the obvious `!passed && (max || !skipped)` spelling
|
|
211
|
+
// makes the max-fidelity clause unreachable and the gate silently fails open
|
|
212
|
+
// at exactly the fidelity where it is meant to be strictest.
|
|
213
|
+
const interactionBlocks = Boolean(interaction && (interaction.skipped ? fidelity.max : !interaction.passed));
|
|
214
|
+
const interactionReport = interaction
|
|
215
|
+
? `\n${interaction.passed && !interaction.skipped ? interactionSummary(interaction) : interaction.feedback}`
|
|
216
|
+
: '';
|
|
217
|
+
// A build that does not behave gets no aesthetic review: grading the pixels of
|
|
218
|
+
// a game that cannot be played sends the next turn after the wrong defect.
|
|
219
|
+
const interactionGreen = !interaction || interaction.passed || interaction.skipped;
|
|
220
|
+
const visualSkippedForLadder = visualWanted && hasEntryPages && (!ladderGreen || !interactionGreen);
|
|
221
|
+
if (visualWanted && hasEntryPages && ladderGreen && interactionGreen) {
|
|
177
222
|
visual = await runVisualGate(dir);
|
|
178
223
|
}
|
|
179
224
|
// Standard: a no-browser SKIP fails open. Max: fail CLOSED — a project with
|
|
@@ -183,8 +228,14 @@ export async function runVerify(opts = {}) {
|
|
|
183
228
|
// Say plainly that rendering was NOT checked — silence here would read as
|
|
184
229
|
// "the visuals are fine" on exactly the runs where nothing was observed.
|
|
185
230
|
if (visualSkippedForLadder) {
|
|
186
|
-
|
|
187
|
-
|
|
231
|
+
// Name the ACTUAL cause. Telling an agent "the build/run gates must pass
|
|
232
|
+
// first" when the build compiled and ran fine, and it was the BEHAVIOUR that
|
|
233
|
+
// failed, points it at the wrong gate — the misdirected-feedback failure
|
|
234
|
+
// this whole subsystem exists to prevent.
|
|
235
|
+
visualReport += ladderGreen
|
|
236
|
+
? '\nvisual + aesthetic review SKIPPED — the artifact does not yet behave as promised. ' +
|
|
237
|
+
'Fix the interaction failures above; how it looks is only judged once it works.'
|
|
238
|
+
: '\nvisual + aesthetic review SKIPPED — the build/run gates must pass first. ' +
|
|
188
239
|
'Fix the failing gate above; rendering is only judged once the artifact compiles and runs.';
|
|
189
240
|
}
|
|
190
241
|
// Visual regression baselines. --approve-visual pins the current look; otherwise
|
|
@@ -228,10 +279,43 @@ export async function runVerify(opts = {}) {
|
|
|
228
279
|
if (visionJudgeConfigured()) {
|
|
229
280
|
const shots = visual.pages.flatMap((pg) => pg.screenshots.slice(-1));
|
|
230
281
|
const verdict = await judgeScreenshots(shots, opts.acceptanceSpec ?? 'A polished, working application UI.', readDesignContext(dir));
|
|
282
|
+
// Corroborate before reporting: asked for a `findings` list the judge
|
|
283
|
+
// fills it whether or not defects exist, and a single still frame
|
|
284
|
+
// invites claims about animation and hit-feedback it cannot show. Each
|
|
285
|
+
// finding goes back with the image and is dropped unless the model can
|
|
286
|
+
// point to what shows it.
|
|
287
|
+
if (verdict && verdict.findings.length > 0) {
|
|
288
|
+
try {
|
|
289
|
+
const { corroborateFindings } = await import('../delivery/vision-judge.js');
|
|
290
|
+
const { kept, dropped } = await corroborateFindings(verdict.findings, shots);
|
|
291
|
+
verdict.findings = kept;
|
|
292
|
+
if (dropped.length > 0) {
|
|
293
|
+
visualReport += `\n(${dropped.length} vision finding(s) discarded — the model could not point to anything in the frame that shows them.)`;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
/* corroboration is best-effort; fall back to the raw findings */
|
|
298
|
+
}
|
|
299
|
+
}
|
|
231
300
|
const summary = visionSummary(verdict);
|
|
232
301
|
if (summary)
|
|
233
302
|
visualReport += `\n${summary}`;
|
|
234
|
-
|
|
303
|
+
// A low score that did NOT block must say so — silence here reads as
|
|
304
|
+
// "the look was approved" on exactly the runs where it was not.
|
|
305
|
+
if (fidelity.max &&
|
|
306
|
+
fidelity.visionBlocking !== 'block' &&
|
|
307
|
+
verdict &&
|
|
308
|
+
verdict.score < fidelity.visionMinScore) {
|
|
309
|
+
visualReport +=
|
|
310
|
+
`\n⚠ aesthetic score ${verdict.score}/10 is below the ${fidelity.visionMinScore} threshold, ` +
|
|
311
|
+
`reported but NOT blocking (fidelity.visionBlocking = advisory). This judge has been measured ` +
|
|
312
|
+
`producing confident findings that are false against the frame it graded, so it reviews rather ` +
|
|
313
|
+
`than gates. Set fidelity.visionBlocking = "block" to make it gate again.`;
|
|
314
|
+
}
|
|
315
|
+
if (fidelity.max &&
|
|
316
|
+
fidelity.visionBlocking === 'block' &&
|
|
317
|
+
verdict &&
|
|
318
|
+
verdict.score < fidelity.visionMinScore) {
|
|
235
319
|
visionBlocks = true;
|
|
236
320
|
visualReport += `\n✗ max fidelity: aesthetic score ${verdict.score}/10 is below the ${fidelity.visionMinScore} threshold.`;
|
|
237
321
|
// Canvas apps score low most often because the render loop is gated on an
|
|
@@ -278,13 +362,18 @@ export async function runVerify(opts = {}) {
|
|
|
278
362
|
// (a broken-but-loading UI). Printing "VERIFIED ✓" then problems + exit 1 is
|
|
279
363
|
// exactly how an agent mis-reads a failure as success and claims done.
|
|
280
364
|
const blockedBy = [
|
|
365
|
+
interactionBlocks && 'promised behaviour under real input',
|
|
281
366
|
visualBlocks && 'visual/behavioral render',
|
|
282
367
|
visionBlocks && 'aesthetic score',
|
|
283
368
|
baselineBlocks && 'visual regression',
|
|
284
369
|
acceptanceBlocks && 'acceptance criteria',
|
|
285
370
|
].filter(Boolean);
|
|
286
371
|
const overallPassed = ladder.passed && blockedBy.length === 0;
|
|
287
|
-
const report = formatReport(ladder, overallPassed, blockedBy) +
|
|
372
|
+
const report = formatReport(ladder, overallPassed, blockedBy) +
|
|
373
|
+
untestedReport +
|
|
374
|
+
interactionReport +
|
|
375
|
+
visualReport +
|
|
376
|
+
acceptanceReport;
|
|
288
377
|
// Exit-code contract for the Stop hook: 0 = verified, 1 = a REAL gate failure
|
|
289
378
|
// (the code is broken), 3 = INFRA failure (gate timed out / could not spawn /
|
|
290
379
|
// killed by signal). The hook hard-blocks only on 1; 3 fails OPEN so a flaky
|
|
@@ -302,8 +391,17 @@ export async function runVerify(opts = {}) {
|
|
|
302
391
|
// regression drift) gate the same way.
|
|
303
392
|
if ((visualBlocks || visionBlocks || baselineBlocks) && exitCode === 0)
|
|
304
393
|
exitCode = 1;
|
|
394
|
+
// A behavioural failure is a REAL failure — the artifact ran and did not do
|
|
395
|
+
// what it promised — so it gates like broken code rather than failing open.
|
|
396
|
+
if (interactionBlocks && exitCode === 0)
|
|
397
|
+
exitCode = 1;
|
|
305
398
|
return {
|
|
306
|
-
passed: ladder.passed &&
|
|
399
|
+
passed: ladder.passed &&
|
|
400
|
+
!acceptanceBlocks &&
|
|
401
|
+
!interactionBlocks &&
|
|
402
|
+
!visualBlocks &&
|
|
403
|
+
!visionBlocks &&
|
|
404
|
+
!baselineBlocks,
|
|
307
405
|
exitCode,
|
|
308
406
|
empty: false,
|
|
309
407
|
report,
|
|
@@ -311,6 +409,8 @@ export async function runVerify(opts = {}) {
|
|
|
311
409
|
rungs,
|
|
312
410
|
acceptance,
|
|
313
411
|
visual,
|
|
412
|
+
interaction,
|
|
413
|
+
blockedBy,
|
|
314
414
|
};
|
|
315
415
|
}
|
|
316
416
|
function formatReport(ladder, overallPassed, blockedBy = []) {
|
|
@@ -449,6 +549,11 @@ export async function verifyCommand(options) {
|
|
|
449
549
|
score: result.ladder?.score ?? null,
|
|
450
550
|
results: result.ladder?.results ?? [],
|
|
451
551
|
acceptance: result.acceptance ?? null,
|
|
552
|
+
// Without these a CI consumer sees `passed: false` and has nothing
|
|
553
|
+
// machine-readable saying which gate blocked or why.
|
|
554
|
+
interaction: result.interaction ?? null,
|
|
555
|
+
visual: result.visual ?? null,
|
|
556
|
+
blockedBy: result.blockedBy ?? [],
|
|
452
557
|
}, null, 2) + '\n');
|
|
453
558
|
}
|
|
454
559
|
else {
|
package/dist/cli/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,22 @@ export interface ResolvedFidelity {
|
|
|
9
9
|
visionModel?: string;
|
|
10
10
|
/** Minimum aesthetic score (0–10) to pass under max. */
|
|
11
11
|
visionMinScore: number;
|
|
12
|
+
/**
|
|
13
|
+
* Whether a low aesthetic score can BLOCK, or is reported for a human.
|
|
14
|
+
*
|
|
15
|
+
* Default 'advisory'. Measured on a working build (octopus_invaders_v3,
|
|
16
|
+
* 2026-07-26): the judge scored a correct render 4/10 and all three of its
|
|
17
|
+
* findings were false against the very frame it graded — a background "with
|
|
18
|
+
* no stars or nebulae" (both plainly visible), a health bar "overflowing its
|
|
19
|
+
* container" (it read 100/100, and the fill is barW * healthPct, which cannot
|
|
20
|
+
* exceed barW), and misaligned HUD text (both strings drawn at y=40 in one
|
|
21
|
+
* font). Asked CHECKABLE questions about the same frame the same model
|
|
22
|
+
* answered correctly, so perception is fine and the list-shaped judging task
|
|
23
|
+
* is what fabricates. Corroboration removes most of it but not all, which
|
|
24
|
+
* makes the judge a useful reviewer and an unsound gate: acting on it edits
|
|
25
|
+
* correct code. Set 'block' to opt back in.
|
|
26
|
+
*/
|
|
27
|
+
visionBlocking: 'advisory' | 'block';
|
|
12
28
|
/** Keep/enforce visual regression baselines. */
|
|
13
29
|
visualBaselines: boolean;
|
|
14
30
|
/** Where the mode came from (for transparent reporting). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fidelity.d.ts","sourceRoot":"","sources":["../../src/delivery/fidelity.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,gCAAgC;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CACtC;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"fidelity.d.ts","sourceRoot":"","sources":["../../src/delivery/fidelity.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,gCAAgC;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;OAcG;IACH,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IACrC,gDAAgD;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CACtC;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,gBAAgB,CAgC7E;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAElE"}
|
|
@@ -47,6 +47,13 @@ export function resolveFidelity(cwd = process.cwd()) {
|
|
|
47
47
|
visionEndpoint,
|
|
48
48
|
visionModel,
|
|
49
49
|
visionMinScore: typeof cfg?.visionMinScore === 'number' ? cfg.visionMinScore : 6,
|
|
50
|
+
visionBlocking: process.env.UAP_VISION_BLOCKING === 'block'
|
|
51
|
+
? 'block'
|
|
52
|
+
: process.env.UAP_VISION_BLOCKING === 'advisory'
|
|
53
|
+
? 'advisory'
|
|
54
|
+
: cfg?.visionBlocking === 'block'
|
|
55
|
+
? 'block'
|
|
56
|
+
: 'advisory',
|
|
50
57
|
visualBaselines: cfg?.visualBaselines !== false,
|
|
51
58
|
source,
|
|
52
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fidelity.js","sourceRoot":"","sources":["../../src/delivery/fidelity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"fidelity.js","sourceRoot":"","sources":["../../src/delivery/fidelity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAoC1D,SAAS,aAAa,CAAC,CAAU;IAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACzD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAiB,OAAO,IAAI,OAAO,IAAI,UAAU,CAAC;IAC5D,MAAM,MAAM,GAA+B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,8CAA8C;IAC9C,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,EAAE,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,SAAS,CAAC;IAC5G,MAAM,WAAW,GACf,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,EAAE,WAAW,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7F,OAAO;QACL,IAAI;QACJ,GAAG,EAAE,IAAI,KAAK,KAAK;QACnB,cAAc;QACd,WAAW;QACX,cAAc,EAAE,OAAO,GAAG,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAChF,cAAc,EACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO;YACzC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,UAAU;gBAC9C,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAE,GAA+C,EAAE,cAAc,KAAK,OAAO;oBAC5E,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,UAAU;QACpB,eAAe,EAAE,GAAG,EAAE,eAAe,KAAK,KAAK;QAC/C,MAAM;KACP,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACvD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC"}
|