@specverse/engines 6.53.1 → 6.60.1
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/libs/instance-factories/controllers/templates/fastify/routes-generator.js +29 -10
- package/dist/libs/instance-factories/services/templates/prisma/ai-behaviors-generator.js +10 -9
- package/dist/libs/instance-factories/services/templates/prisma/controller-generator.js +1 -1
- package/dist/realize/index.d.ts.map +1 -1
- package/dist/realize/index.js +91 -10
- package/dist/realize/index.js.map +1 -1
- package/dist/realize/per-action-recovery.d.ts +74 -0
- package/dist/realize/per-action-recovery.d.ts.map +1 -0
- package/dist/realize/per-action-recovery.js +268 -0
- package/dist/realize/per-action-recovery.js.map +1 -0
- package/dist/realize/per-owner-emit.d.ts +6 -0
- package/dist/realize/per-owner-emit.d.ts.map +1 -1
- package/dist/realize/per-owner-emit.js +22 -6
- package/dist/realize/per-owner-emit.js.map +1 -1
- package/dist/realize/per-owner-runner.d.ts +23 -2
- package/dist/realize/per-owner-runner.d.ts.map +1 -1
- package/dist/realize/per-owner-runner.js +76 -18
- package/dist/realize/per-owner-runner.js.map +1 -1
- package/dist/realize/post-emit-verify/diagnostics.d.ts +107 -0
- package/dist/realize/post-emit-verify/diagnostics.d.ts.map +1 -0
- package/dist/realize/post-emit-verify/diagnostics.js +148 -0
- package/dist/realize/post-emit-verify/diagnostics.js.map +1 -0
- package/dist/realize/post-emit-verify/feedback-runner.d.ts +40 -1
- package/dist/realize/post-emit-verify/feedback-runner.d.ts.map +1 -1
- package/dist/realize/post-emit-verify/feedback-runner.js +61 -6
- package/dist/realize/post-emit-verify/feedback-runner.js.map +1 -1
- package/dist/realize/post-emit-verify/index.d.ts +4 -2
- package/dist/realize/post-emit-verify/index.d.ts.map +1 -1
- package/dist/realize/post-emit-verify/index.js +3 -1
- package/dist/realize/post-emit-verify/index.js.map +1 -1
- package/dist/realize/post-emit-verify/reemit.d.ts +22 -1
- package/dist/realize/post-emit-verify/reemit.d.ts.map +1 -1
- package/dist/realize/post-emit-verify/reemit.js +20 -18
- package/dist/realize/post-emit-verify/reemit.js.map +1 -1
- package/dist/realize/post-emit-verify/types.d.ts +49 -0
- package/dist/realize/post-emit-verify/types.d.ts.map +1 -1
- package/dist/realize/post-emit-verify/verifier-manifest.d.ts.map +1 -1
- package/dist/realize/post-emit-verify/verifier-manifest.js +2 -0
- package/dist/realize/post-emit-verify/verifier-manifest.js.map +1 -1
- package/dist/realize/post-emit-verify/verifiers/stub-completeness.d.ts +85 -0
- package/dist/realize/post-emit-verify/verifiers/stub-completeness.d.ts.map +1 -0
- package/dist/realize/post-emit-verify/verifiers/stub-completeness.js +298 -0
- package/dist/realize/post-emit-verify/verifiers/stub-completeness.js.map +1 -0
- package/dist/realize/realize-context-snapshot.d.ts +70 -0
- package/dist/realize/realize-context-snapshot.d.ts.map +1 -0
- package/dist/realize/realize-context-snapshot.js +96 -0
- package/dist/realize/realize-context-snapshot.js.map +1 -0
- package/dist/realize/structural-validator.d.ts +36 -2
- package/dist/realize/structural-validator.d.ts.map +1 -1
- package/dist/realize/structural-validator.js +50 -7
- package/dist/realize/structural-validator.js.map +1 -1
- package/libs/instance-factories/controllers/templates/fastify/routes-generator.ts +49 -15
- package/libs/instance-factories/services/templates/prisma/ai-behaviors-generator.ts +19 -3
- package/libs/instance-factories/services/templates/prisma/controller-generator.ts +6 -1
- package/package.json +1 -1
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-action recovery tier — Phase 5a of
|
|
3
|
+
* `2026-05-14-PER-ACTION-RECOVERY-TIER.md`.
|
|
4
|
+
*
|
|
5
|
+
* The realize per-owner runner has three tiers:
|
|
6
|
+
*
|
|
7
|
+
* Tier 1 — whole-owner emit (`per-owner-emit.ts`). One LLM call emits
|
|
8
|
+
* the entire `<Owner>.ai.ts`. Works for the easy majority.
|
|
9
|
+
* Tier 2 — THIS MODULE. When Tier 1 fails (structural-preservation
|
|
10
|
+
* reject, parse failure, LLM decline), instead of dropping
|
|
11
|
+
* straight to a γ-stub file, retry the owner ACTION-BY-ACTION
|
|
12
|
+
* — but with the FULL owner context in every call.
|
|
13
|
+
* Tier 3 — γ-stub placeholder file (`renderFallbackPlaceholderFile`
|
|
14
|
+
* in `per-owner-runner.ts`). Only reached if Tier 2 produced
|
|
15
|
+
* ZERO real bodies.
|
|
16
|
+
*
|
|
17
|
+
* "Wide context, narrow output" — the distinction from the abandoned
|
|
18
|
+
* Realize L3 per-action emit: L3 gave the LLM NARROW context (one
|
|
19
|
+
* action's steps, no class shell, no capabilities) and it starved
|
|
20
|
+
* (29/94 actions came back as throw-stubs). This keeps the FULL owner
|
|
21
|
+
* context — every action's [PRE-BAKED] scaffolding, the target runtime,
|
|
22
|
+
* manifest capabilities, V2 clients, cross-service operation surface —
|
|
23
|
+
* in every per-action call, and only narrows the OUTPUT to one function
|
|
24
|
+
* body. The reasoning load per call drops (the model holds one function
|
|
25
|
+
* in its head, not all of them) without re-introducing context
|
|
26
|
+
* starvation.
|
|
27
|
+
*
|
|
28
|
+
* Motivation (Phase 3 trial, 2026-05-14): the quant-fidelity gap between
|
|
29
|
+
* Ollama (Q4 GGUF) and MarrBox (FP8) — SAME model, Qwen3-Coder-30B-A3B
|
|
30
|
+
* — localized to the single hardest owner (`ReactiveStateEngine`, 7
|
|
31
|
+
* interrelated functions). The Mac Mini's 24GB RAM structurally pins it
|
|
32
|
+
* at ~Q4 (Q6/Q8 don't fit), so "run a better quant" is closed. This
|
|
33
|
+
* makes the TASK easier instead.
|
|
34
|
+
*
|
|
35
|
+
* Phase 5a scope: declaration-order emission, full owner SCAFFOLDING
|
|
36
|
+
* context per call. Phase 5b adds dependency-ordered emission +
|
|
37
|
+
* already-emitted siblings shown as concrete code. Phase 5c adds the
|
|
38
|
+
* action-count cap telemetry.
|
|
39
|
+
*/
|
|
40
|
+
import { generateText } from 'ai';
|
|
41
|
+
import { assembleSystemWithSkills } from '../ai/prompt-runner.js';
|
|
42
|
+
import { resolveProviderId } from '../ai/model-resolver.js';
|
|
43
|
+
import { buildPerActionScaffolding, } from './per-owner-emit.js';
|
|
44
|
+
import { validateLlmOutputPreservesConventions, DEFAULT_STRUCTURAL_DROP_THRESHOLD, } from './structural-validator.js';
|
|
45
|
+
import { extractTypescriptBlock } from './owner-emit-shared.js';
|
|
46
|
+
/** Reserved words that can't appear as `export async function <name>`.
|
|
47
|
+
* Mirrors `per-owner-runner.ts`'s TS_RESERVED_WORDS — kept local to
|
|
48
|
+
* avoid a cross-module dependency for a 5a-scoped concern; a future
|
|
49
|
+
* cleanup could hoist both to `owner-emit-shared.ts`. */
|
|
50
|
+
const TS_RESERVED_WORDS = new Set([
|
|
51
|
+
'delete', 'class', 'function', 'return', 'void', 'typeof',
|
|
52
|
+
'instanceof', 'new', 'this', 'throw', 'try', 'catch', 'finally',
|
|
53
|
+
'if', 'else', 'for', 'while', 'do', 'switch', 'case', 'break',
|
|
54
|
+
'continue', 'default', 'var', 'let', 'const', 'in', 'of',
|
|
55
|
+
'async', 'await', 'yield', 'export', 'import', 'from',
|
|
56
|
+
'true', 'false', 'null', 'undefined', 'static', 'public',
|
|
57
|
+
'private', 'protected', 'interface', 'type', 'enum', 'extends',
|
|
58
|
+
'implements', 'super',
|
|
59
|
+
]);
|
|
60
|
+
/**
|
|
61
|
+
* Render a γ-stub for a single action whose per-action recovery emit
|
|
62
|
+
* failed. The error string says "per-action recovery fell back" — the
|
|
63
|
+
* stub-completeness verifier's GAMMA_FALLBACK_RE matches this (STUB001,
|
|
64
|
+
* auto-reemit-eligible), distinct from an LLM's own "not implemented"
|
|
65
|
+
* throw (STUB002, surface-spec-gap). Reserved-word action names get the
|
|
66
|
+
* re-export-rename treatment so the file still parses.
|
|
67
|
+
*/
|
|
68
|
+
function renderActionGammaStub(actionName) {
|
|
69
|
+
const body = ` throw new Error("${actionName}: not implemented (per-action recovery fell back)");`;
|
|
70
|
+
if (TS_RESERVED_WORDS.has(actionName)) {
|
|
71
|
+
const safe = `${actionName}_`;
|
|
72
|
+
return (`/** Placeholder — per-action recovery failed for ${actionName}. */\n` +
|
|
73
|
+
`async function ${safe}(_input: any): Promise<any> {\n${body}\n}\n` +
|
|
74
|
+
`export { ${safe} as ${actionName} };`);
|
|
75
|
+
}
|
|
76
|
+
return (`/** Placeholder — per-action recovery failed for ${actionName}. */\n` +
|
|
77
|
+
`export async function ${actionName}(_input: any): Promise<any> {\n${body}\n}`);
|
|
78
|
+
}
|
|
79
|
+
/** Collect the pre-baked snippets for ONE action (its matched steps). */
|
|
80
|
+
function prebakedForAction(action) {
|
|
81
|
+
const out = [];
|
|
82
|
+
action.perStepMatches.forEach((match, idx) => {
|
|
83
|
+
if (match?.matched && match.call) {
|
|
84
|
+
out.push({
|
|
85
|
+
stepNum: idx + 1,
|
|
86
|
+
stepText: action.spec.steps[idx] ?? '',
|
|
87
|
+
snippet: match.call,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
/** esbuild parse-check a single per-action emission as a TS module.
|
|
94
|
+
* Returns null on success, an error string on failure. */
|
|
95
|
+
async function parseCheckModule(code) {
|
|
96
|
+
try {
|
|
97
|
+
const esbuild = await import('esbuild');
|
|
98
|
+
await esbuild.transform(code, { loader: 'ts', format: 'esm', target: 'es2022' });
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
return err?.errors?.[0]?.text || err?.message || 'unknown parse error';
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Build the per-action recovery user prompt. Full owner context +
|
|
106
|
+
* "emit ONLY this one action". */
|
|
107
|
+
function buildActionPrompt(request, target) {
|
|
108
|
+
const allScaffolding = buildPerActionScaffolding(request.actions);
|
|
109
|
+
const targetScaffolding = buildPerActionScaffolding([target]);
|
|
110
|
+
const parts = [];
|
|
111
|
+
parts.push(`You are recovering ONE function for the \`${request.ownerName}\` ` +
|
|
112
|
+
`${request.ownerKind}. The whole-owner emit for it could not be ` +
|
|
113
|
+
`produced coherently, so each action is being emitted on its own — ` +
|
|
114
|
+
`but with the FULL owner context below. Emit ONLY the one action ` +
|
|
115
|
+
`named in EMIT TARGET.`);
|
|
116
|
+
parts.push('');
|
|
117
|
+
parts.push(`## TARGET RUNTIME`);
|
|
118
|
+
parts.push(request.targetRuntime ?? 'Node.js (backend)');
|
|
119
|
+
parts.push('');
|
|
120
|
+
parts.push(`## AVAILABLE CAPABILITIES`);
|
|
121
|
+
parts.push(request.availableCapabilities ?? '(none — only `input: any` is available)');
|
|
122
|
+
parts.push('');
|
|
123
|
+
parts.push(`## AVAILABLE CLIENTS`);
|
|
124
|
+
parts.push(request.availableClients ?? '(none)');
|
|
125
|
+
parts.push('');
|
|
126
|
+
parts.push(`## AVAILABLE SPEC SURFACE (other services / controllers — call these, don't reimplement)`);
|
|
127
|
+
parts.push(request.availableSpecSurface ?? '(no other services / controllers in this spec)');
|
|
128
|
+
parts.push('');
|
|
129
|
+
parts.push(`## ALL ACTIONS ON THIS OWNER (context — do NOT emit these)`);
|
|
130
|
+
parts.push(allScaffolding);
|
|
131
|
+
parts.push('');
|
|
132
|
+
parts.push(`## EMIT TARGET: ${target.actionName}`);
|
|
133
|
+
parts.push(targetScaffolding);
|
|
134
|
+
parts.push('');
|
|
135
|
+
parts.push(`Emit ONLY \`export async function ${target.actionName}(...)\` inside one ` +
|
|
136
|
+
'```typescript code block.');
|
|
137
|
+
parts.push(`- Put any imports the function needs on single lines ABOVE it.`);
|
|
138
|
+
parts.push(`- Honour every [PRE-BAKED] snippet verbatim — do not paraphrase.`);
|
|
139
|
+
parts.push(`- Do NOT emit the other actions; they are shown for context only.`);
|
|
140
|
+
return parts.join('\n');
|
|
141
|
+
}
|
|
142
|
+
/** Pull single-line \`import ...\` statements out of an emission. The
|
|
143
|
+
* realize-emit skill convention emits single-line imports; multi-line
|
|
144
|
+
* imports (rare) are left in place and ride the post-emit tsc verifier. */
|
|
145
|
+
function extractImports(code) {
|
|
146
|
+
const imports = [];
|
|
147
|
+
const restLines = [];
|
|
148
|
+
for (const line of code.split('\n')) {
|
|
149
|
+
if (/^\s*import\s.+;?\s*$/.test(line) && line.includes('from')) {
|
|
150
|
+
imports.push(line.trim());
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
restLines.push(line);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return { imports, rest: restLines.join('\n').trim() };
|
|
157
|
+
}
|
|
158
|
+
/** Assemble the final `<Owner>.ai.ts` from per-action results: hoisted
|
|
159
|
+
* + deduped imports, then each function (real emission or γ-stub). */
|
|
160
|
+
function assembleOwnerFile(ownerName, perAction) {
|
|
161
|
+
const allImports = new Set();
|
|
162
|
+
const bodies = [];
|
|
163
|
+
for (const entry of perAction) {
|
|
164
|
+
if (entry.real) {
|
|
165
|
+
const { imports, rest } = extractImports(entry.code);
|
|
166
|
+
for (const imp of imports)
|
|
167
|
+
allImports.add(imp);
|
|
168
|
+
bodies.push(rest);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
bodies.push(entry.code);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const header = [
|
|
175
|
+
'/**',
|
|
176
|
+
` * ${ownerName} — Per-owner AI behaviors (per-action recovery)`,
|
|
177
|
+
' *',
|
|
178
|
+
' * The whole-owner emit failed; each action below was emitted on its',
|
|
179
|
+
' * own with full owner context (Tier 2). Actions that still could not',
|
|
180
|
+
' * be emitted carry a γ-stub — the post-emit feedback loop will retry',
|
|
181
|
+
' * those (they are STUB001, auto-reemit-eligible).',
|
|
182
|
+
' *',
|
|
183
|
+
` * Generated: ${new Date().toISOString().split('T')[0]}`,
|
|
184
|
+
' */',
|
|
185
|
+
].join('\n');
|
|
186
|
+
const importBlock = [...allImports].sort().join('\n');
|
|
187
|
+
return [header, '', importBlock, importBlock ? '' : null, bodies.join('\n\n'), '']
|
|
188
|
+
.filter((s) => s !== null)
|
|
189
|
+
.join('\n');
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Build a {@link PerActionRecoveryFn}. The returned function loops over
|
|
193
|
+
* the owner's actions, emits each with full owner context, validates
|
|
194
|
+
* (structural + parse), γ-stubs the ones that fail, and assembles the
|
|
195
|
+
* owner file. Returns null only when EVERY action γ-stubbed (caller
|
|
196
|
+
* then uses the Tier 3 placeholder, which is equivalent).
|
|
197
|
+
*/
|
|
198
|
+
export function createPerActionRecovery(opts = {}) {
|
|
199
|
+
const timeoutMs = opts.timeoutMs ?? 5 * 60_000;
|
|
200
|
+
const skills = opts.skills ?? ['realize-emit'];
|
|
201
|
+
const providerId = resolveProviderId();
|
|
202
|
+
const systemPrompt = assembleSystemWithSkills('', providerId, skills);
|
|
203
|
+
const envThreshold = process.env.SPECVERSE_REALIZE_STRUCTURAL_DROP_THRESHOLD;
|
|
204
|
+
const dropThreshold = opts.dropThreshold ??
|
|
205
|
+
(envThreshold !== undefined && !Number.isNaN(parseFloat(envThreshold))
|
|
206
|
+
? parseFloat(envThreshold)
|
|
207
|
+
: DEFAULT_STRUCTURAL_DROP_THRESHOLD);
|
|
208
|
+
const callLlm = opts.generateOverride ??
|
|
209
|
+
(async (system, user) => {
|
|
210
|
+
const result = await Promise.race([
|
|
211
|
+
generateText({
|
|
212
|
+
model: opts.model,
|
|
213
|
+
prompt: user,
|
|
214
|
+
...(system ? { system } : {}),
|
|
215
|
+
}),
|
|
216
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('per-action recovery timeout')), timeoutMs)),
|
|
217
|
+
]);
|
|
218
|
+
return result.text ?? '';
|
|
219
|
+
});
|
|
220
|
+
return async (request) => {
|
|
221
|
+
const perAction = [];
|
|
222
|
+
let realCount = 0;
|
|
223
|
+
for (const action of request.actions) {
|
|
224
|
+
const user = buildActionPrompt(request, action);
|
|
225
|
+
let emitted = null;
|
|
226
|
+
try {
|
|
227
|
+
const text = await callLlm(systemPrompt, user);
|
|
228
|
+
emitted = extractTypescriptBlock(text);
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
emitted = null;
|
|
232
|
+
}
|
|
233
|
+
if (!emitted || emitted.trim().length === 0) {
|
|
234
|
+
perAction.push({ actionName: action.actionName, code: renderActionGammaStub(action.actionName), real: false });
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
// Gate 1: parse check.
|
|
238
|
+
const parseError = await parseCheckModule(emitted);
|
|
239
|
+
if (parseError !== null) {
|
|
240
|
+
if (process.env.SPECVERSE_VERBOSE) {
|
|
241
|
+
console.error(` ✗ per-action recovery parse-failed for ${request.ownerName}.${action.actionName}: ${parseError.slice(0, 160)}`);
|
|
242
|
+
}
|
|
243
|
+
perAction.push({ actionName: action.actionName, code: renderActionGammaStub(action.actionName), real: false });
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
// Gate 2: structural preservation (this action's snippets only).
|
|
247
|
+
const structural = validateLlmOutputPreservesConventions(emitted, prebakedForAction(action), dropThreshold);
|
|
248
|
+
if (structural.ok === false) {
|
|
249
|
+
if (process.env.SPECVERSE_VERBOSE) {
|
|
250
|
+
console.error(` ✗ per-action recovery structural-failed for ${request.ownerName}.${action.actionName}`);
|
|
251
|
+
}
|
|
252
|
+
perAction.push({ actionName: action.actionName, code: renderActionGammaStub(action.actionName), real: false });
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
perAction.push({ actionName: action.actionName, code: emitted, real: true });
|
|
256
|
+
realCount++;
|
|
257
|
+
}
|
|
258
|
+
// Zero real bodies → no better than the Tier 3 placeholder. Return
|
|
259
|
+
// null so the caller uses its own (reserved-word-safe) placeholder.
|
|
260
|
+
if (realCount === 0)
|
|
261
|
+
return null;
|
|
262
|
+
if (process.env.SPECVERSE_VERBOSE) {
|
|
263
|
+
console.error(` ↻ per-action recovery for ${request.ownerName}: ${realCount}/${request.actions.length} action(s) recovered`);
|
|
264
|
+
}
|
|
265
|
+
return assembleOwnerFile(request.ownerName, perAction);
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=per-action-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"per-action-recovery.js","sourceRoot":"","sources":["../../src/realize/per-action-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,4 +110,10 @@ export declare function createRealizeOwnerLlmEmit(opts?: CreateRealizeOwnerLlmEm
|
|
|
110
110
|
* tier search: @specverse/assets package path, engine-bundled assets,
|
|
111
111
|
* worktree-sibling specverse-self/assets. */
|
|
112
112
|
export declare function loadRealizeOwnerPromptFromFallback(): PromptYaml | null;
|
|
113
|
+
/** Build the per-action scaffolding block. One section per action,
|
|
114
|
+
* listing its steps with [PRE-BAKED] / [WRITE] markers. Exported for
|
|
115
|
+
* reuse by the realize-context-snapshot module (Phase 3 of
|
|
116
|
+
* 2026-05-13-VERIFIER-DIAGNOSTIC-TREATMENT-SPLIT) — the reemit prompt
|
|
117
|
+
* embeds the same scaffolding the original per-owner prompt used. */
|
|
118
|
+
export declare function buildPerActionScaffolding(actions: CollectedOwnerAction[]): string;
|
|
113
119
|
//# sourceMappingURL=per-owner-emit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"per-owner-emit.d.ts","sourceRoot":"","sources":["../../src/realize/per-owner-emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAOH,OAAO,EAEL,SAAS,IAAI,WAAW,EAGxB,KAAK,UAAU,EAGhB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"per-owner-emit.d.ts","sourceRoot":"","sources":["../../src/realize/per-owner-emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAOH,OAAO,EAEL,SAAS,IAAI,WAAW,EAGxB,KAAK,UAAU,EAGhB,MAAM,wBAAwB,CAAC;AAMhC,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAUhC;;+BAE+B;AAC/B,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB;wEACoE;IACpE,cAAc,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,gEAAgE;AAChE,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9C,kEAAkE;IAClE,SAAS,EAAE,GAAG,CAAC;IACf,iEAAiE;IACjE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;sEAEkE;IAClE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;iDAI6C;IAC7C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;kEAI8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;oCAEoC;AACpC,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,mBAAmB,KACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5B,qDAAqD;AACrD,MAAM,WAAW,gCAAgC;IAC/C,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,OAAO,WAAW,CAAC;IACvC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,UAAU,CAAC;IACtC;2CACuC;IACvC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9D,qDAAqD;IACrD,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,GAAE,gCAAqC,GAC1C,cAAc,CA+JhB;AAwBD;;;8CAG8C;AAC9C,wBAAgB,kCAAkC,IAAI,UAAU,GAAG,IAAI,CA8DtE;AA0FD;;;;sEAIsE;AACtE,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,CA2BjF"}
|
|
@@ -34,7 +34,7 @@ import { fileURLToPath } from 'url';
|
|
|
34
34
|
import { createRequire } from 'module';
|
|
35
35
|
import yaml from 'js-yaml';
|
|
36
36
|
import { loadPrompt, runPrompt as runPromptFn, assembleSystem, assembleUser, } from '../ai/prompt-runner.js';
|
|
37
|
-
import { validateLlmOutputPreservesConventions, } from './structural-validator.js';
|
|
37
|
+
import { validateLlmOutputPreservesConventions, DEFAULT_STRUCTURAL_DROP_THRESHOLD, } from './structural-validator.js';
|
|
38
38
|
import { extractTypescriptBlock, } from './owner-emit-shared.js';
|
|
39
39
|
import { rulesApplicableTo, forbiddenApisForRuntime, renderConstraintsForPrompt, } from './realize-rules.js';
|
|
40
40
|
const require = createRequire(import.meta.url);
|
|
@@ -124,12 +124,25 @@ export function createRealizeOwnerLlmEmit(opts = {}) {
|
|
|
124
124
|
}
|
|
125
125
|
return null;
|
|
126
126
|
}
|
|
127
|
-
// 5. Structural validator — DR3. A rewritten pre-baked
|
|
128
|
-
// is a LOUD failure (
|
|
129
|
-
|
|
127
|
+
// 5. Structural validator — DR3. A MAJORITY of rewritten pre-baked
|
|
128
|
+
// snippets is a LOUD failure (→ γ-fallback). A minority is
|
|
129
|
+
// tolerated and surfaced as a warning: the owner's output is
|
|
130
|
+
// kept and rides the normal tsc + stub-completeness gates.
|
|
131
|
+
// Threshold tunable via SPECVERSE_REALIZE_STRUCTURAL_DROP_THRESHOLD
|
|
132
|
+
// (Phase 5 first target — see structural-validator.ts header).
|
|
133
|
+
const dropThresholdRaw = process.env.SPECVERSE_REALIZE_STRUCTURAL_DROP_THRESHOLD;
|
|
134
|
+
const dropThreshold = dropThresholdRaw !== undefined && !Number.isNaN(parseFloat(dropThresholdRaw))
|
|
135
|
+
? parseFloat(dropThresholdRaw)
|
|
136
|
+
: DEFAULT_STRUCTURAL_DROP_THRESHOLD;
|
|
137
|
+
const structural = validateLlmOutputPreservesConventions(fileContents, prebakedSnippets, dropThreshold);
|
|
130
138
|
if (structural.ok === false) {
|
|
131
139
|
throw new Error(`[realize-owner] structural-preservation failed for ${request.ownerName}:\n${structural.reason}`);
|
|
132
140
|
}
|
|
141
|
+
if (structural.warnings && structural.warnings.length > 0 && process.env.SPECVERSE_VERBOSE) {
|
|
142
|
+
const steps = structural.warnings.map((w) => w.stepNum).join(', ');
|
|
143
|
+
console.error(` ⚠ per-owner LLM emit [${request.ownerName}] tolerated ${structural.warnings.length} ` +
|
|
144
|
+
`dropped pre-baked snippet(s) under threshold (steps: ${steps})`);
|
|
145
|
+
}
|
|
133
146
|
// 5b. RULES manifest pipeline. Each rule in `realize-rules.ts`
|
|
134
147
|
// declares its own detect() + correction() + ordering. We
|
|
135
148
|
// iterate in pipeline order; first violating rule wins (one
|
|
@@ -331,8 +344,11 @@ function yamlDumpOwner(ownerSpec, ownerName) {
|
|
|
331
344
|
return yaml.dump({ [ownerName]: ownerSpec }, { lineWidth: 100, noRefs: true });
|
|
332
345
|
}
|
|
333
346
|
/** Build the per-action scaffolding block. One section per action,
|
|
334
|
-
* listing its steps with [PRE-BAKED] / [WRITE] markers.
|
|
335
|
-
|
|
347
|
+
* listing its steps with [PRE-BAKED] / [WRITE] markers. Exported for
|
|
348
|
+
* reuse by the realize-context-snapshot module (Phase 3 of
|
|
349
|
+
* 2026-05-13-VERIFIER-DIAGNOSTIC-TREATMENT-SPLIT) — the reemit prompt
|
|
350
|
+
* embeds the same scaffolding the original per-owner prompt used. */
|
|
351
|
+
export function buildPerActionScaffolding(actions) {
|
|
336
352
|
if (actions.length === 0)
|
|
337
353
|
return '(no actions on this owner)';
|
|
338
354
|
const sections = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"per-owner-emit.js","sourceRoot":"","sources":["../../src/realize/per-owner-emit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"per-owner-emit.js","sourceRoot":"","sources":["../../src/realize/per-owner-emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { buildAvailableClientsByOwner, type MatcherFn, type SharedConvention } from './owner-emit-shared.js';
|
|
23
23
|
import type { PerOwnerEmitFn } from './per-owner-emit.js';
|
|
24
|
+
import type { PerActionRecoveryFn } from './per-action-recovery.js';
|
|
24
25
|
/** Options for {@link runPerOwnerEmission}. */
|
|
25
26
|
export interface RunPerOwnerEmissionOptions {
|
|
26
27
|
/** Full inferred spec. */
|
|
@@ -34,6 +35,22 @@ export interface RunPerOwnerEmissionOptions {
|
|
|
34
35
|
/** Per-owner LLM emit hook. Required — the whole point of this
|
|
35
36
|
* runner is to drive it once per owner. */
|
|
36
37
|
perOwnerEmit: PerOwnerEmitFn;
|
|
38
|
+
/** Tier 2 recovery hook (Phase 5a of
|
|
39
|
+
* `2026-05-14-PER-ACTION-RECOVERY-TIER.md`). When `perOwnerEmit`
|
|
40
|
+
* fails for an owner, this is tried before the γ-stub placeholder:
|
|
41
|
+
* it re-emits the owner action-by-action with full owner context.
|
|
42
|
+
* Optional — when absent, a Tier-1 failure goes straight to Tier 3
|
|
43
|
+
* (the pre-5a behaviour). Disabled at runtime via
|
|
44
|
+
* `SPECVERSE_REALIZE_NO_RECOVERY_TIER=1`; skipped for owners with
|
|
45
|
+
* more actions than `SPECVERSE_REALIZE_RECOVERY_MAX_ACTIONS`
|
|
46
|
+
* (default 40 — a guard against truly pathological owners, not a
|
|
47
|
+
* routine gate. The 5a trial showed the original cap of 12 excluded
|
|
48
|
+
* `MongoDBAdapter` (15 actions) — exactly the kind of large owner
|
|
49
|
+
* that fails Tier 1 and most needs decomposition. A big owner that
|
|
50
|
+
* already failed whole-owner emit is MORE worth decomposing, not
|
|
51
|
+
* less; the context-resend cost is bounded because it's only the
|
|
52
|
+
* hard tail). */
|
|
53
|
+
perActionRecovery?: PerActionRecoveryFn;
|
|
37
54
|
/** Pre-built availableClients map (from buildAvailableClientsByOwner). */
|
|
38
55
|
availableClientsByOwner?: Map<string, string>;
|
|
39
56
|
/** Manifest capability mappings text (NEW vs per-action runner).
|
|
@@ -60,9 +77,13 @@ export interface RunPerOwnerEmissionResult {
|
|
|
60
77
|
ownerCount: number;
|
|
61
78
|
/** Number of actions across all owners. */
|
|
62
79
|
actionCount: number;
|
|
63
|
-
/** Owners whose
|
|
80
|
+
/** Owners whose emit produced a usable file (Tier 1 whole-owner
|
|
81
|
+
* emit OR Tier 2 per-action recovery — both count as LLM-emitted). */
|
|
64
82
|
ownersEmittedByLLM: number;
|
|
65
|
-
/** Owners
|
|
83
|
+
/** Owners that produced a usable file specifically via the Tier 2
|
|
84
|
+
* per-action recovery path (subset of `ownersEmittedByLLM`). */
|
|
85
|
+
ownersRecoveredByTier2: number;
|
|
86
|
+
/** Owners whose emit failed at every tier; runner fell back to a
|
|
66
87
|
* deterministic placeholder file. */
|
|
67
88
|
ownersFellBack: number;
|
|
68
89
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"per-owner-runner.d.ts","sourceRoot":"","sources":["../../src/realize/per-owner-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAEL,4BAA4B,EAI5B,KAAK,SAAS,EACd,KAAK,gBAAgB,EAGtB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"per-owner-runner.d.ts","sourceRoot":"","sources":["../../src/realize/per-owner-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAEL,4BAA4B,EAI5B,KAAK,SAAS,EACd,KAAK,gBAAgB,EAGtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,+CAA+C;AAC/C,MAAM,WAAW,0BAA0B;IACzC,0BAA0B;IAC1B,IAAI,EAAE,GAAG,CAAC;IACV,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,wCAAwC;IACxC,WAAW,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9C;gDAC4C;IAC5C,YAAY,EAAE,cAAc,CAAC;IAC7B;;;;;;;;;;;;;;sBAckB;IAClB,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;IACxC,0EAA0E;IAC1E,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C;;gFAE4E;IAC5E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mDAAmD;IACnD,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;gCAC4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,6CAA6C;AAC7C,MAAM,WAAW,yBAAyB;IACxC,4DAA4D;IAC5D,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0BAA0B;IAC1B,MAAM,EAAE;QACN,+BAA+B;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,2CAA2C;QAC3C,WAAW,EAAE,MAAM,CAAC;QACpB;+EACuE;QACvE,kBAAkB,EAAE,MAAM,CAAC;QAC3B;yEACiE;QACjE,sBAAsB,EAAE,MAAM,CAAC;QAC/B;8CACsC;QACtC,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB;8DAC0D;IAC1D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,yBAAyB,CAAC,CAkLpC;AAgLD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAYtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAuCtF;AA+DD,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
|
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
23
23
|
import { dirname, join } from 'path';
|
|
24
24
|
import { collectActions, buildAvailableClientsByOwner, } from './owner-emit-shared.js';
|
|
25
|
+
import { buildPerActionScaffolding } from './per-owner-emit.js';
|
|
26
|
+
import { writeContextSnapshot } from './realize-context-snapshot.js';
|
|
25
27
|
/**
|
|
26
28
|
* Run per-owner LLM emission across every controller / service the
|
|
27
29
|
* spec declares. For each owner:
|
|
@@ -40,8 +42,16 @@ export async function runPerOwnerEmission(opts) {
|
|
|
40
42
|
ownerCount: 0,
|
|
41
43
|
actionCount: 0,
|
|
42
44
|
ownersEmittedByLLM: 0,
|
|
45
|
+
ownersRecoveredByTier2: 0,
|
|
43
46
|
ownersFellBack: 0,
|
|
44
47
|
};
|
|
48
|
+
// Tier 2 (per-action recovery) runtime gates. Read once.
|
|
49
|
+
const recoveryTierEnabled = opts.perActionRecovery !== undefined &&
|
|
50
|
+
process.env.SPECVERSE_REALIZE_NO_RECOVERY_TIER !== '1';
|
|
51
|
+
const recoveryMaxActionsRaw = process.env.SPECVERSE_REALIZE_RECOVERY_MAX_ACTIONS;
|
|
52
|
+
const recoveryMaxActions = recoveryMaxActionsRaw !== undefined && !Number.isNaN(parseInt(recoveryMaxActionsRaw, 10))
|
|
53
|
+
? parseInt(recoveryMaxActionsRaw, 10)
|
|
54
|
+
: 40;
|
|
45
55
|
// Matcher must be supplied by the caller — the libs/ step-matching
|
|
46
56
|
// module sits OUTSIDE engines/src/'s tsconfig rootDir and can't be
|
|
47
57
|
// statically imported here. realize/index.ts already resolves the
|
|
@@ -81,25 +91,28 @@ export async function runPerOwnerEmission(opts) {
|
|
|
81
91
|
// yet got skipped. Each owner's success is independent — catch
|
|
82
92
|
// here, fall back to the deterministic placeholder file, log to
|
|
83
93
|
// stderr (gated by SPECVERSE_VERBOSE), and keep walking.
|
|
94
|
+
// Shared request object — Tier 1 (whole-owner) and Tier 2
|
|
95
|
+
// (per-action recovery) both take the SAME owner context. Per-owner
|
|
96
|
+
// emit ALWAYS targets the backend tree
|
|
97
|
+
// (`backend/src/behaviors/<Owner>.ai.ts`); stating the runtime
|
|
98
|
+
// upfront makes the constraint technology-explicit.
|
|
99
|
+
const emitRequest = {
|
|
100
|
+
ownerName,
|
|
101
|
+
ownerKind: actions[0]?.ownerKind ?? 'model',
|
|
102
|
+
ownerSpec,
|
|
103
|
+
actions: collectedOwnerActions,
|
|
104
|
+
availableClients: opts.availableClientsByOwner?.get(ownerName),
|
|
105
|
+
availableCapabilities: opts.availableCapabilities,
|
|
106
|
+
availableSpecSurface: buildAvailableSpecSurface(opts.spec, ownerName),
|
|
107
|
+
targetRuntime: 'Node.js (backend)',
|
|
108
|
+
processContext: opts.processContextByOwner?.get(ownerName),
|
|
109
|
+
};
|
|
110
|
+
// Tier 1 — whole-owner emit. Isolate failures so a single owner's
|
|
111
|
+
// throw (e.g. structural-validator rejection) doesn't kill emission
|
|
112
|
+
// for the other owners — catch here, fall through to Tier 2/3.
|
|
84
113
|
let fileContents = null;
|
|
85
114
|
try {
|
|
86
|
-
fileContents = await opts.perOwnerEmit(
|
|
87
|
-
ownerName,
|
|
88
|
-
ownerKind: actions[0]?.ownerKind ?? 'model',
|
|
89
|
-
ownerSpec,
|
|
90
|
-
actions: collectedOwnerActions,
|
|
91
|
-
availableClients: opts.availableClientsByOwner?.get(ownerName),
|
|
92
|
-
availableCapabilities: opts.availableCapabilities,
|
|
93
|
-
availableSpecSurface: buildAvailableSpecSurface(opts.spec, ownerName),
|
|
94
|
-
// Per-owner emit ALWAYS targets the backend tree
|
|
95
|
-
// (`backend/src/behaviors/<Owner>.ai.ts`). Stating the runtime
|
|
96
|
-
// upfront makes the constraint technology-explicit instead of
|
|
97
|
-
// burying "no browser APIs" inside import-rule prose. Future:
|
|
98
|
-
// derive from manifest.capabilityMappings → factory.technology
|
|
99
|
-
// when a non-Node target ever ships (e.g. edge runtime).
|
|
100
|
-
targetRuntime: 'Node.js (backend)',
|
|
101
|
-
processContext: opts.processContextByOwner?.get(ownerName),
|
|
102
|
-
});
|
|
115
|
+
fileContents = await opts.perOwnerEmit(emitRequest);
|
|
103
116
|
}
|
|
104
117
|
catch (e) {
|
|
105
118
|
if (process.env.SPECVERSE_VERBOSE) {
|
|
@@ -110,6 +123,29 @@ export async function runPerOwnerEmission(opts) {
|
|
|
110
123
|
}
|
|
111
124
|
fileContents = null;
|
|
112
125
|
}
|
|
126
|
+
// Tier 2 — per-action recovery. When whole-owner emit failed, retry
|
|
127
|
+
// the owner action-by-action with full owner context before
|
|
128
|
+
// dropping to a γ-stub. Gated by env + an action-count cap.
|
|
129
|
+
let recoveredByTier2 = false;
|
|
130
|
+
if (fileContents === null &&
|
|
131
|
+
recoveryTierEnabled &&
|
|
132
|
+
opts.perActionRecovery &&
|
|
133
|
+
actions.length <= recoveryMaxActions) {
|
|
134
|
+
try {
|
|
135
|
+
const recovered = await opts.perActionRecovery(emitRequest);
|
|
136
|
+
if (recovered !== null) {
|
|
137
|
+
fileContents = recovered;
|
|
138
|
+
recoveredByTier2 = true;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (e) {
|
|
142
|
+
if (process.env.SPECVERSE_VERBOSE) {
|
|
143
|
+
const head = String((e && e.message) || e).slice(0, 240).replace(/\s+/g, ' ');
|
|
144
|
+
console.error(` ✗ per-action recovery threw for ${ownerName}: ${head}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Tier 3 — deterministic γ-stub placeholder file.
|
|
113
149
|
const finalContents = fileContents ?? renderFallbackPlaceholderFile(ownerName, actions);
|
|
114
150
|
const llmEmitted = fileContents !== null;
|
|
115
151
|
owners.push({
|
|
@@ -124,13 +160,35 @@ export async function runPerOwnerEmission(opts) {
|
|
|
124
160
|
totals.ownersEmittedByLLM += 1;
|
|
125
161
|
else
|
|
126
162
|
totals.ownersFellBack += 1;
|
|
163
|
+
if (recoveredByTier2)
|
|
164
|
+
totals.ownersRecoveredByTier2 += 1;
|
|
127
165
|
if (!opts.dryRun) {
|
|
128
166
|
const filePath = writeOwnerAiFile(opts.outputDir, ownerName, finalContents);
|
|
129
167
|
filesWritten.push(filePath);
|
|
130
168
|
if (!opts.silent) {
|
|
131
|
-
const tag =
|
|
169
|
+
const tag = recoveredByTier2
|
|
170
|
+
? 'per-action recovery'
|
|
171
|
+
: llmEmitted
|
|
172
|
+
? 'LLM'
|
|
173
|
+
: 'placeholder';
|
|
132
174
|
console.log(` ✅ Per-owner AI behaviors: ${ownerName}.ai.ts (${actions.length} action${actions.length === 1 ? '' : 's'}, ${tag})`);
|
|
133
175
|
}
|
|
176
|
+
// Phase 3 of 2026-05-13-VERIFIER-DIAGNOSTIC-TREATMENT-SPLIT:
|
|
177
|
+
// snapshot the per-owner realize context so the post-emit
|
|
178
|
+
// feedback runner's reemit prompt has the same TARGET RUNTIME /
|
|
179
|
+
// [PRE-BAKED] / cross-service / capabilities the original
|
|
180
|
+
// per-owner emit had. Best-effort — failure here doesn't block
|
|
181
|
+
// realize.
|
|
182
|
+
writeContextSnapshot(opts.outputDir, {
|
|
183
|
+
ownerName,
|
|
184
|
+
targetRuntime: 'Node.js (backend)',
|
|
185
|
+
perActionScaffolding: buildPerActionScaffolding(collectedOwnerActions),
|
|
186
|
+
availableSpecSurface: buildAvailableSpecSurface(opts.spec, ownerName) ||
|
|
187
|
+
'(no other services / controllers in this spec)',
|
|
188
|
+
availableCapabilities: opts.availableCapabilities ??
|
|
189
|
+
'(none — only `input: any` is available)',
|
|
190
|
+
availableClients: opts.availableClientsByOwner?.get(ownerName) ?? '(none)',
|
|
191
|
+
});
|
|
134
192
|
}
|
|
135
193
|
}
|
|
136
194
|
return { owners, filesWritten, totals };
|