@specverse/engines 6.4.0 → 6.5.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"analyse-runner.d.ts","sourceRoot":"","sources":["../../src/ai/analyse-runner.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAGL,KAAK,WAAW,EAAE,KAAK,YAAY,EACpC,MAAM,gBAAgB,CAAC;AAiBxB,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,aAAa,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAqCD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuRnF"}
1
+ {"version":3,"file":"analyse-runner.d.ts","sourceRoot":"","sources":["../../src/ai/analyse-runner.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAGL,KAAK,WAAW,EAAE,KAAK,YAAY,EACpC,MAAM,gBAAgB,CAAC;AAiBxB,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,aAAa,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAqCD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8SnF"}
@@ -92,11 +92,14 @@ export async function runAnalyse(opts) {
92
92
  let factsContent = '';
93
93
  let factsSource = null;
94
94
  let methodFactsContent = '';
95
+ // Hold raw method fact sheets for the deterministic cross-check (#32 v2).
96
+ let methodFactSheetsRaw;
95
97
  if (opts.autoFacts && !opts.factsPath) {
96
98
  const { runPrepass, formatFactsAsMarkdown, formatMethodFactsAsMarkdown } = await import('./../analyse-prepass/index.js');
97
99
  const facts = await runPrepass(opts.sourceDir);
98
100
  factsContent = formatFactsAsMarkdown(facts);
99
101
  methodFactsContent = formatMethodFactsAsMarkdown(facts.methodFactSheets);
102
+ methodFactSheetsRaw = facts.methodFactSheets;
100
103
  factsSource = `auto (${facts.meta.backend}, adapters: ${facts.meta.adaptersRun.join(', ') || 'none'})`;
101
104
  writeFileSync(join(factsDir(opts.outputDir), 'facts.md'), factsContent);
102
105
  if (methodFactsContent) {
@@ -213,6 +216,24 @@ export async function runAnalyse(opts) {
213
216
  let verifyDurationMs = 0;
214
217
  if (opts.verify) {
215
218
  try {
219
+ // Deterministic behavior cross-check (#32 v2). Runs BEFORE the LLM
220
+ // call. Compares draft.publishes / draft.ensures against
221
+ // MethodFactSheet.emits / dbWrites. Each violation is a factual
222
+ // mismatch the LLM should treat as ground truth, not LLM judgment.
223
+ let crossCheckMd = '';
224
+ if (methodFactSheetsRaw && methodFactSheetsRaw.length > 0) {
225
+ try {
226
+ const { crossCheckBehaviors, formatBehaviorViolationsAsMarkdown } = await import('./behavior-cross-check/index.js');
227
+ const yaml = await import('js-yaml');
228
+ const parsedDraft = yaml.load(draftSpec);
229
+ const violations = crossCheckBehaviors(parsedDraft, methodFactSheetsRaw);
230
+ if (violations.length > 0) {
231
+ crossCheckMd = formatBehaviorViolationsAsMarkdown(violations);
232
+ writeFileSync(join(factsDir(opts.outputDir), 'behavior-cross-check.md'), crossCheckMd);
233
+ }
234
+ }
235
+ catch { /* spec didn't parse cleanly enough for cross-check; skip */ }
236
+ }
216
237
  const verifyResult = await runPrompt({
217
238
  operation: 'verify-analyse',
218
239
  values: {
@@ -222,6 +243,8 @@ export async function runAnalyse(opts) {
222
243
  '(no structural facts available — extract-facts pre-pass was not run)',
223
244
  methodFacts: methodFactsContent ||
224
245
  '(no method fact sheets available — backend did not extract per-method facts)',
246
+ behaviorCrossCheck: crossCheckMd ||
247
+ '(no deterministic violations — proceed with LLM-judgment checks)',
225
248
  },
226
249
  model,
227
250
  timeoutMs: opts.timeoutMs ?? 15 * 60_000,
@@ -1 +1 @@
1
- {"version":3,"file":"analyse-runner.js","sourceRoot":"","sources":["../../src/ai/analyse-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyse-runner.js","sourceRoot":"","sources":["../../src/ai/analyse-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAa,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAC5C,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,GAE9E,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAe,sBAAsB,EAAwB,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,MAAM,IAAI,CAAC;AAE7C;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,SAAiB,EAAE,YAAoB;IACpE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAClD,UAAU,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,EAAE,YAAY,CAAC,CAAC;AACzE,CAAC;AAyED,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;QACtD,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;IACpF,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC;QACH,QAAQ,CAAC,qCAAqC,EAAE;YAC9C,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;SAC/C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAqB,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,QAAQ,CAAC,mCAAmC,EAAE;YAC5C,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM;SACtD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAoD,CAAC;QAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEtB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE9B,0EAA0E;IAC1E,yEAAyE;IACzE,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,kBAAkB,GAAG,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,IAAI,mBAA4F,CAAC;IACjG,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QACzH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC5C,kBAAkB,GAAG,2BAA2B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACzE,mBAAmB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC7C,WAAW,GAAG,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,eAAe,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC;QACvG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;QACxE,IAAI,kBAAkB,EAAE,CAAC;YACvB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,CAAC;QAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpD,WAAW,GAAG,WAAW,IAAI,CAAC,SAAS,GAAG,CAAC;QAC3C,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,UAAU,GAAG,YAAY;QAC7B,CAAC,CAAC,iEAAiE;YACjE,oEAAoE;YACpE,yEAAyE;YACzE,uEAAuE;YACvE,2DAA2D;YAC3D,gCAAgC;YAChC,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI;YAC1B,gCAAgC;QAClC,CAAC,CAAC,EAAE,CAAC;IAEP,wEAAwE;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC;QACvC,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM;QACtC,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC;QAClC,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE;YACN,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,IAAI,EAAE,EAAE;YACR,WAAW,EAAE,aAAa;SAC3B;QACD,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM;QACxC,UAAU;QACV,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;YAChC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9E,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC,CAAC;IAEH,sEAAsE;IACtE,sEAAsE;IACtE,uEAAuE;IACvE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACzE,IAAI,aAAa;QAAE,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACxE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnF,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,cAAc;IACd,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,IAAI,kBAAkB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IACpD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC;QAC3B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACvF,IAAI,UAAU,GAAG,SAAS,CAAC;QAC3B,IAAI,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC3C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC;oBAClC,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE;wBACN,kBAAkB,EAAE,IAAI,CAAC,SAAS;wBAClC,IAAI,EAAE,EAAE;wBACR,WAAW,EAAE,aAAa;qBAC3B;oBACD,KAAK;oBACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM;oBACxC,UAAU,EACR,gCAAgC,OAAO,yDAAyD;wBAChG,OAAO,GAAG,UAAU,GAAG,WAAW;wBAClC,oCAAoC,GAAG,UAAU,GAAG,WAAW;wBAC/D,8EAA8E;oBAChF,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;wBAChC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,OAAO,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;wBAC/F,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,OAAO,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC7F,CAAC;iBACF,CAAC,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9F,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,OAAO,SAAS,CAAC,CAAC;gBACtF,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBACxC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,OAAO,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpG,MAAM,kBAAkB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;gBACtD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,OAAO,MAAM,CAAC,EACvE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,kBAAkB,CAAC,EAAE,EAAE,CAAC;oBAC1B,SAAS,GAAG,SAAS,CAAC;oBACtB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;oBACnD,IAAI,aAAa;wBAAE,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;oBACxE,kBAAkB,GAAG,kBAAkB,CAAC;oBACxC,YAAY,GAAG,IAAI,CAAC;oBACpB,MAAM;gBACR,CAAC;gBACD,yEAAyE;gBACzE,UAAU,GAAG,SAAS,CAAC;gBACvB,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC,CAAC,gDAAgD;gBAAC,MAAM;YAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,SAAS,GAAG,SAAS,CAAC;IAC1B,IAAI,UAAU,GAAyB,OAAO,CAAC;IAC/C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,mEAAmE;YACnE,yDAAyD;YACzD,gEAAgE;YAChE,mEAAmE;YACnE,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC;oBACH,MAAM,EAAE,mBAAmB,EAAE,kCAAkC,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;oBACpH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAQ,CAAC;oBAChD,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;oBACzE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1B,YAAY,GAAG,kCAAkC,CAAC,UAAU,CAAC,CAAC;wBAC9D,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC,EAAE,YAAY,CAAC,CAAC;oBACzF,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,4DAA4D,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,YAAY,GAAoB,MAAM,SAAS,CAAC;gBACpD,SAAS,EAAE,gBAAgB;gBAC3B,MAAM,EAAE;oBACN,kBAAkB,EAAE,IAAI,CAAC,SAAS;oBAClC,KAAK,EAAE,SAAS;oBAChB,eAAe,EAAE,YAAY;wBAC3B,sEAAsE;oBACxE,WAAW,EAAE,kBAAkB;wBAC7B,8EAA8E;oBAChF,kBAAkB,EAAE,YAAY;wBAC9B,kEAAkE;iBACrE;gBACD,KAAK;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM;gBACxC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;oBAChC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC7E,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC3E,CAAC;aACF,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACrG,SAAS,GAAG,YAAY,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YACnF,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC;YAC5C,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACtD,IAAI,gBAAgB;gBAAE,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAC9E,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;IACjD,CAAC;IAED,iEAAiE;IACjE,sEAAsE;IACtE,0EAA0E;IAC1E,0EAA0E;IAC1E,sEAAsE;IACtE,qEAAqE;IACrE,uEAAuE;IACvE,iEAAiE;IACjE,8BAA8B;IAC9B,6DAA6D;IAC7D,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;YACpF,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;YACpG,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAQ,CAAC;YAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,iCAAiC,QAAQ,CAAC,UAAU,cAAc,QAAQ,CAAC,yBAAyB,2BAA2B,CAAC,CAAC;YAC5I,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBACnD,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACzC,sFAAsF;gBACtF,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;gBACtE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBACxD,qDAAqD;gBACrD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;gBACvE,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,UAAU,wCAAwC,CAAC,CAAC;gBAChG,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,gBAAgB,CAAC,CAAC;oBAC1D,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACpC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7E,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CACb,4CAA4C,QAAQ,CAAC,UAAU,CAAC,MAAM,iBAAiB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7H,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,cAAc;gBAAE,MAAM,GAAG,CAAC;YACnC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EACvD,uCAAuC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IACjD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAChD,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAElD,uBAAuB;IACvB,IAAI,OAAO,GAA2C,IAAI,CAAC;IAC3D,IAAI,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC;QACrC,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IACD,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,MAAM;QACxD,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC;IAChD,MAAM,QAAQ,GAAgB;QAC5B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,MAAM;QACpD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;QAChD,SAAS;QACT,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,UAAU;QACV,QAAQ,EAAE,IAAI,CAAC,UAAU,IAAI,iBAAiB,EAAE;QAChD,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;QAChC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,YAAY;QACnC,QAAQ,EAAE,IAAI,CAAC,MAAM;YACnB,CAAC,CAAC,wDAAwD;YAC1D,CAAC,CAAC,wBAAwB;QAC5B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;QACrB,SAAS,EAAE,WAAW;QACtB,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3E,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;QAClF,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI;KAC9C,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAExC,qEAAqE;IACrE,iEAAiE;IACjE,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE;QAC1B,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE;QAC7D,QAAQ;QACR,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;IAEH,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa;QACb,aAAa;QACb,UAAU;QACV,aAAa;QACb,OAAO;QACP,eAAe;QACf,gBAAgB;QAChB,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,oBAAoB,EAAE,kBAAkB,CAAC,EAAE;KAC5C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Deterministic behavior ↔ method-facts cross-check (TODO #32 v2).
3
+ *
4
+ * Pure-function, no-LLM check that compares analysed `behaviors[].publishes`
5
+ * (and `actions[].publishes`, `operations[].publishes`) against
6
+ * `MethodFactSheet.emits` lists. If a spec behavior claims to publish event
7
+ * X but no source method actually emits X, that's a hallucination — flag it
8
+ * BEFORE the LLM verify call so retry feedback is grounded in source truth.
9
+ *
10
+ * Symmetric check for `dbWrites`: if the source mutates Order but no
11
+ * `ensures:` clause references the mutation, flag it.
12
+ *
13
+ * v1 was LLM-judgment-only via verify-analyse check 8. v2 promotes the
14
+ * objective parts (emit set membership, dbWrite presence) to deterministic
15
+ * gate that runs alongside the LLM call.
16
+ */
17
+ import type { MethodFactSheet } from '../../analyse-prepass/interface.js';
18
+ export interface BehaviorViolation {
19
+ /** Where in the spec the violation lives. */
20
+ modelOrService: string;
21
+ behaviorOrOperation: string;
22
+ /** Violation category. */
23
+ kind: 'emit-not-in-source' | 'source-emit-missing-from-spec' | 'dbwrite-missing-ensures';
24
+ /** Human-readable explanation suitable for retry-prompt feedback. */
25
+ message: string;
26
+ }
27
+ /**
28
+ * Run the cross-check. Walks every executable in every component (model
29
+ * behaviors, controller actions, service operations) and compares against
30
+ * the supplied method fact sheets indexed by qualifiedName.
31
+ *
32
+ * Symbol-matching heuristic:
33
+ * - Behavior `Model.foo` matches MethodFactSheet `ModelController.foo` OR
34
+ * `ModelService.foo` OR `Model.foo` (most specific wins).
35
+ * - Action `Controller.foo` matches MethodFactSheet `Controller.foo`.
36
+ * - Operation `Service.foo` matches MethodFactSheet `Service.foo`.
37
+ *
38
+ * When no matching fact sheet exists, the executable is skipped silently
39
+ * (the source method might have a different name, OR backend didn't extract
40
+ * its details).
41
+ */
42
+ export declare function crossCheckBehaviors(spec: any, sheets: MethodFactSheet[]): BehaviorViolation[];
43
+ /**
44
+ * Format violations as a markdown block for prompt injection. The
45
+ * verify-behavior prompt receives this alongside the per-behavior
46
+ * fact sheet so the LLM sees the deterministic signal up front.
47
+ */
48
+ export declare function formatBehaviorViolationsAsMarkdown(violations: BehaviorViolation[]): string;
49
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/behavior-cross-check/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,EACA,oBAAoB,GACpB,+BAA+B,GAC/B,yBAAyB,CAAC;IAC9B,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;CACjB;AA4BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CAoC7F;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAe1F"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Deterministic behavior ↔ method-facts cross-check (TODO #32 v2).
3
+ *
4
+ * Pure-function, no-LLM check that compares analysed `behaviors[].publishes`
5
+ * (and `actions[].publishes`, `operations[].publishes`) against
6
+ * `MethodFactSheet.emits` lists. If a spec behavior claims to publish event
7
+ * X but no source method actually emits X, that's a hallucination — flag it
8
+ * BEFORE the LLM verify call so retry feedback is grounded in source truth.
9
+ *
10
+ * Symmetric check for `dbWrites`: if the source mutates Order but no
11
+ * `ensures:` clause references the mutation, flag it.
12
+ *
13
+ * v1 was LLM-judgment-only via verify-analyse check 8. v2 promotes the
14
+ * objective parts (emit set membership, dbWrite presence) to deterministic
15
+ * gate that runs alongside the LLM call.
16
+ */
17
+ /**
18
+ * Run the cross-check. Walks every executable in every component (model
19
+ * behaviors, controller actions, service operations) and compares against
20
+ * the supplied method fact sheets indexed by qualifiedName.
21
+ *
22
+ * Symbol-matching heuristic:
23
+ * - Behavior `Model.foo` matches MethodFactSheet `ModelController.foo` OR
24
+ * `ModelService.foo` OR `Model.foo` (most specific wins).
25
+ * - Action `Controller.foo` matches MethodFactSheet `Controller.foo`.
26
+ * - Operation `Service.foo` matches MethodFactSheet `Service.foo`.
27
+ *
28
+ * When no matching fact sheet exists, the executable is skipped silently
29
+ * (the source method might have a different name, OR backend didn't extract
30
+ * its details).
31
+ */
32
+ export function crossCheckBehaviors(spec, sheets) {
33
+ if (!sheets || sheets.length === 0)
34
+ return [];
35
+ const violations = [];
36
+ // Index sheets by qualifiedName for O(1) lookup
37
+ const sheetByQName = new Map();
38
+ for (const s of sheets)
39
+ sheetByQName.set(s.qualifiedName, s);
40
+ // Walk every component's executables
41
+ const components = normalizeComponents(spec);
42
+ for (const comp of components) {
43
+ // Model behaviors
44
+ for (const [modelName, model] of Object.entries(comp.models || {})) {
45
+ for (const [behaviorName, exec] of Object.entries(model.behaviors || {})) {
46
+ const sheet = findSheetForBehavior(modelName, behaviorName, sheetByQName);
47
+ if (sheet)
48
+ checkExecutable(modelName, behaviorName, exec, sheet, violations);
49
+ }
50
+ }
51
+ // Controller actions
52
+ for (const [ctrlName, ctrl] of Object.entries(comp.controllers || {})) {
53
+ for (const [actionName, exec] of Object.entries(ctrl.actions || {})) {
54
+ const sheet = sheetByQName.get(`${ctrlName}.${actionName}`);
55
+ if (sheet)
56
+ checkExecutable(ctrlName, actionName, exec, sheet, violations);
57
+ }
58
+ }
59
+ // Service operations
60
+ for (const [svcName, svc] of Object.entries(comp.services || {})) {
61
+ for (const [opName, exec] of Object.entries(svc.operations || {})) {
62
+ const sheet = sheetByQName.get(`${svcName}.${opName}`);
63
+ if (sheet)
64
+ checkExecutable(svcName, opName, exec, sheet, violations);
65
+ }
66
+ }
67
+ }
68
+ return violations;
69
+ }
70
+ /**
71
+ * Format violations as a markdown block for prompt injection. The
72
+ * verify-behavior prompt receives this alongside the per-behavior
73
+ * fact sheet so the LLM sees the deterministic signal up front.
74
+ */
75
+ export function formatBehaviorViolationsAsMarkdown(violations) {
76
+ if (violations.length === 0)
77
+ return '';
78
+ const lines = [];
79
+ lines.push('# Deterministic behavior cross-check violations');
80
+ lines.push('');
81
+ lines.push('These were flagged BEFORE the LLM verify call by comparing the');
82
+ lines.push('spec\'s `publishes:` / `ensures:` declarations against the source');
83
+ lines.push('method\'s actual `Emits:` / `DbWrites:` lists. Each one is a');
84
+ lines.push('factual mismatch — fix the spec to match source.');
85
+ lines.push('');
86
+ for (const v of violations) {
87
+ lines.push(`- **[${v.kind}]** \`${v.modelOrService}.${v.behaviorOrOperation}\` — ${v.message}`);
88
+ }
89
+ lines.push('');
90
+ return lines.join('\n');
91
+ }
92
+ // ── helpers ──
93
+ function normalizeComponents(spec) {
94
+ if (Array.isArray(spec?.components))
95
+ return spec.components;
96
+ if (spec?.components && typeof spec.components === 'object') {
97
+ return Object.values(spec.components);
98
+ }
99
+ // flat shape (single-component spec)
100
+ return [spec];
101
+ }
102
+ /**
103
+ * For a behavior on `Model.foo`, find a fact sheet on `ModelController.foo`
104
+ * OR `ModelService.foo` OR `Model.foo`. Most specific match wins (controller
105
+ * > service > model).
106
+ */
107
+ function findSheetForBehavior(modelName, behaviorName, sheets) {
108
+ return (sheets.get(`${modelName}Controller.${behaviorName}`) ||
109
+ sheets.get(`${modelName}Service.${behaviorName}`) ||
110
+ sheets.get(`${modelName}.${behaviorName}`));
111
+ }
112
+ function checkExecutable(ownerName, execName, exec, sheet, violations) {
113
+ // Check 1: every spec.publishes[E] must appear in source.emits
114
+ const sourceEmits = new Set((sheet.emits || []).map((e) => e.toLowerCase()));
115
+ for (const event of exec.publishes || []) {
116
+ // Match case-insensitively to tolerate stylistic differences
117
+ if (!sourceEmits.has(event.toLowerCase())) {
118
+ // Look for a "fuzzy" match — same root word
119
+ const fuzzyMatch = [...sourceEmits].some((e) => e.includes(event.toLowerCase()) || event.toLowerCase().includes(e));
120
+ if (!fuzzyMatch) {
121
+ violations.push({
122
+ modelOrService: ownerName,
123
+ behaviorOrOperation: execName,
124
+ kind: 'emit-not-in-source',
125
+ message: `spec publishes [${event}] but source method does NOT emit it (source emits: [${[...sourceEmits].join(', ') || 'nothing'}])`,
126
+ });
127
+ }
128
+ }
129
+ }
130
+ // Check 2: source emits that the spec doesn't publish — soft signal
131
+ // (the spec might be intentionally narrowing).
132
+ for (const sourceEvent of sheet.emits || []) {
133
+ const specPublishes = new Set((exec.publishes || []).map((e) => e.toLowerCase()));
134
+ if (!specPublishes.has(sourceEvent.toLowerCase())) {
135
+ // Only flag when there's no fuzzy match
136
+ const fuzzyMatch = [...specPublishes].some((e) => e.includes(sourceEvent.toLowerCase()) || sourceEvent.toLowerCase().includes(e));
137
+ if (!fuzzyMatch) {
138
+ violations.push({
139
+ modelOrService: ownerName,
140
+ behaviorOrOperation: execName,
141
+ kind: 'source-emit-missing-from-spec',
142
+ message: `source emits [${sourceEvent}] but spec doesn't list it in publishes (spec publishes: [${[...specPublishes].join(', ') || 'nothing'}])`,
143
+ });
144
+ }
145
+ }
146
+ }
147
+ // Check 3: source dbWrites without an ensures clause referencing the entity
148
+ const ensuresStr = Array.isArray(exec.ensures) ? exec.ensures.join(' ').toLowerCase() : (exec.ensures || '').toLowerCase();
149
+ for (const w of sheet.dbWrites || []) {
150
+ if (!ensuresStr.includes(w.entity.toLowerCase())) {
151
+ violations.push({
152
+ modelOrService: ownerName,
153
+ behaviorOrOperation: execName,
154
+ kind: 'dbwrite-missing-ensures',
155
+ message: `source ${w.op}s ${w.entity} but no ensures-clause mentions ${w.entity} (ensures: ${exec.ensures ? JSON.stringify(exec.ensures) : 'none'})`,
156
+ });
157
+ }
158
+ }
159
+ }
160
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/behavior-cross-check/index.ts"],"names":[],"mappings":"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"}
@@ -43,11 +43,14 @@ export interface QuintGenResult {
43
43
  violations: QuintViolation[];
44
44
  }
45
45
  export interface QuintViolation {
46
- /** Which model + lifecycle the violation belongs to. */
46
+ /** Which model + lifecycle the violation belongs to. (lifecycleName is "" for cross-model checks.) */
47
47
  modelName: string;
48
48
  lifecycleName: string;
49
- /** One of: states-not-unique, transition-references-unknown-state, behavior-requires-unknown-state. */
50
- kind: 'states-not-unique' | 'transition-references-unknown-state' | 'behavior-requires-unknown-state' | 'no-states-declared';
49
+ /**
50
+ * Violation category. v1 covers lifecycle shape; v2 adds cross-model
51
+ * relationship validity + behavior-ensures state references.
52
+ */
53
+ kind: 'states-not-unique' | 'transition-references-unknown-state' | 'behavior-requires-unknown-state' | 'behavior-ensures-unknown-state' | 'relationship-target-unknown' | 'no-states-declared';
51
54
  /** Human-readable explanation suitable for retry-prompt feedback. */
52
55
  message: string;
53
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inference/quint-gen/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,yBAAyB,EAAE,MAAM,CAAC;IAClC,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,uGAAuG;IACvG,IAAI,EAAE,mBAAmB,GAAG,qCAAqC,GAAG,iCAAiC,GAAG,oBAAoB,CAAC;IAC7H,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;CACjB;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,CA2K/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inference/quint-gen/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,yBAAyB,EAAE,MAAM,CAAC;IAClC,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,EACA,mBAAmB,GACnB,qCAAqC,GACrC,iCAAiC,GACjC,gCAAgC,GAChC,6BAA6B,GAC7B,oBAAoB,CAAC;IACzB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;CACjB;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,CAqO/D"}
@@ -58,16 +58,48 @@ export function generateQuintFromSpec(spec) {
58
58
  return lc.length > 0;
59
59
  return Object.keys(lc).length > 0;
60
60
  });
61
- if (modelsWithLifecycles.length === 0) {
62
- return { content: '', modelCount: 0, behaviorPreconditionCount: 0, skipped: true, skipReason: 'no models with lifecycles', violations: [] };
61
+ // Cross-model index every declared model name across all components.
62
+ // v2 cross-model invariants check `relationship.target` against this set.
63
+ const declaredModelNames = new Set(allModels.map((m) => m.name));
64
+ // Cross-model relationship validity (v2). Check every model's
65
+ // relationships, not just those with lifecycles — referential integrity
66
+ // is a property of the spec as a whole.
67
+ const crossModelViolations = [];
68
+ for (const model of allModels) {
69
+ const rels = normalizeRelationships(model.relationships);
70
+ for (const rel of rels) {
71
+ if (!rel.target)
72
+ continue;
73
+ if (!declaredModelNames.has(rel.target)) {
74
+ crossModelViolations.push({
75
+ modelName: model.name,
76
+ lifecycleName: '',
77
+ kind: 'relationship-target-unknown',
78
+ message: `${model.name}.${rel.name || '(unnamed)'}: relationship targets "${rel.target}" but no model with that name is declared (${declaredModelNames.size} models declared)`,
79
+ });
80
+ }
81
+ }
82
+ }
83
+ if (modelsWithLifecycles.length === 0 && crossModelViolations.length === 0) {
84
+ return { content: '', modelCount: 0, behaviorPreconditionCount: 0, skipped: true, skipReason: 'no models with lifecycles and no relationship issues', violations: [] };
63
85
  }
64
86
  const lines = [];
65
87
  lines.push('// Auto-generated by @specverse/engines/inference/quint-gen');
66
- lines.push('// v1 — lifecycle reachability + transition validity + behavior-requires validity');
88
+ lines.push('// v2 — lifecycle reachability + transition validity +');
89
+ lines.push('// behavior-requires + behavior-ensures validity +');
90
+ lines.push('// cross-model relationship-target validity');
67
91
  lines.push('// See docs/plans/2026-04-30-DETERMINISTIC-VERIFICATION-GATES.md');
68
92
  lines.push('');
93
+ // Cross-model section in the Quint module — declares the universe of
94
+ // model names so future quint-run extensions can use it as a Set.
95
+ if (declaredModelNames.size > 0) {
96
+ lines.push('module Models {');
97
+ lines.push(` pure val modelNames: Set[str] = Set(${[...declaredModelNames].map((n) => `"${n}"`).join(', ')})`);
98
+ lines.push('}');
99
+ lines.push('');
100
+ }
69
101
  let behaviorPreconditionCount = 0;
70
- const violations = [];
102
+ const violations = [...crossModelViolations];
71
103
  for (const model of modelsWithLifecycles) {
72
104
  const lifecycles = normalizeLifecycles(model.lifecycles);
73
105
  for (const [lcName, lc] of Object.entries(lifecycles)) {
@@ -84,9 +116,14 @@ export function generateQuintFromSpec(spec) {
84
116
  // Value-level invariant checks — Quint's typecheck only validates types,
85
117
  // not predicate values, so these run in JS as the actual gate.
86
118
  const stateSet = new Set(states);
87
- // Duplicate detection — `states` is already deduplicated; check the
88
- // source `lc.states` array directly for repeated entries.
89
- if (Array.isArray(lc.states)) {
119
+ // Duplicate detection — only fires when states[] was authored
120
+ // explicitly (lc.type === 'structured', or no flow field). When the
121
+ // parser derived states from a `flow:` chain (lc.type === 'shorthand'),
122
+ // duplicates indicate intentional cyclic state machines (e.g.
123
+ // `flow: active -> disabled -> active` for a re-activation cycle) and
124
+ // must NOT be flagged.
125
+ const flowDerived = lc.type === 'shorthand' || (typeof lc.flow === 'string' && !Array.isArray(lc.transitions));
126
+ if (Array.isArray(lc.states) && !flowDerived) {
90
127
  const seen = new Set();
91
128
  const dupes = [];
92
129
  for (const s of lc.states) {
@@ -184,6 +221,24 @@ export function generateQuintFromSpec(spec) {
184
221
  message: `${model.name}.behaviors: requires-clause names state "${unknown}" not in ${lcName} (declared: [${states.join(', ')}])`,
185
222
  });
186
223
  }
224
+ // v2 — behavior-ensures cross-check. Same pattern as requires:
225
+ // postconditions naming a state must reference a declared state.
226
+ // Catches typos in `ensures: ["status is now confimed"]` etc.
227
+ const ensuresRefs = collectBehaviorStateReferencesByField(model.behaviors, states, 'ensures');
228
+ if (ensuresRefs.declared.length > 0) {
229
+ const refsExpr = ensuresRefs.declared.map((r) => `"${r}"`).join(', ');
230
+ lines.push(` pure val behaviorEnsuredStates: Set[str] = Set(${refsExpr})`);
231
+ lines.push(` pure val behaviorEnsuresValid: bool = behaviorEnsuredStates.forall(s => states.contains(s))`);
232
+ lines.push('');
233
+ }
234
+ for (const unknown of ensuresRefs.unknown) {
235
+ violations.push({
236
+ modelName: model.name,
237
+ lifecycleName: lcName,
238
+ kind: 'behavior-ensures-unknown-state',
239
+ message: `${model.name}.behaviors: ensures-clause names state "${unknown}" not in ${lcName} (declared: [${states.join(', ')}])`,
240
+ });
241
+ }
187
242
  lines.push('}');
188
243
  lines.push('');
189
244
  }
@@ -236,11 +291,21 @@ function collectTransitions(lc) {
236
291
  const out = [];
237
292
  if (lc.transitions && typeof lc.transitions === 'object') {
238
293
  for (const [name, arrow] of Object.entries(lc.transitions)) {
239
- if (typeof arrow !== 'string')
240
- continue;
241
- const [from, to] = arrow.split('->').map((s) => s.trim());
242
- if (from && to)
243
- out.push({ name, from, to });
294
+ // Two shapes accepted:
295
+ // author shorthand: transitions: { ship: "pending -> shipped" }
296
+ // parsed AST form: transitions: { ship: { from: "pending", to: "shipped" } }
297
+ if (typeof arrow === 'string') {
298
+ const [from, to] = arrow.split('->').map((s) => s.trim());
299
+ if (from && to)
300
+ out.push({ name, from, to });
301
+ }
302
+ else if (arrow && typeof arrow === 'object') {
303
+ const a = arrow;
304
+ const from = typeof a.from === 'string' ? a.from.trim() : '';
305
+ const to = typeof a.to === 'string' ? a.to.trim() : '';
306
+ if (from && to)
307
+ out.push({ name, from, to });
308
+ }
244
309
  }
245
310
  }
246
311
  if (typeof lc.flow === 'string') {
@@ -261,6 +326,18 @@ function inferInitial(states, transitions) {
261
326
  return states[0]; // fallback
262
327
  }
263
328
  function collectBehaviorStateReferences(behaviors, states) {
329
+ return collectBehaviorStateReferencesByField(behaviors, states, 'requires');
330
+ }
331
+ /**
332
+ * Walk every behavior's `requires` OR `ensures` field (v2) and return any
333
+ * state-like tokens found, classified into "declared" (exists in states[])
334
+ * vs "unknown" (looks like a state name but doesn't match — likely typo).
335
+ *
336
+ * Heuristic phrase patterns capture state names after common keyword
337
+ * positions ("is in X" / "transitions to X" / "is now X" — the latter
338
+ * particularly relevant for ensures-clauses).
339
+ */
340
+ function collectBehaviorStateReferencesByField(behaviors, states, field) {
264
341
  if (!behaviors)
265
342
  return { declared: [], unknown: [] };
266
343
  const map = Array.isArray(behaviors)
@@ -269,21 +346,20 @@ function collectBehaviorStateReferences(behaviors, states) {
269
346
  const stateSet = new Set(states);
270
347
  const declared = new Set();
271
348
  const unknown = new Set();
272
- // "is in <state>" / "transitions to <state>" / "after <state>" — common
273
- // requires-clause patterns. Capture the token after these phrases and
274
- // check it against the lifecycle's declared states.
275
349
  const phrasePatterns = [
276
- /\bis\s+(?:in|at)\s+(\w+)/gi,
350
+ /\bis\s+(?:in|at|now)\s+(\w+)/gi, // "is in X", "is now X" (ensures-style)
277
351
  /\btransitions?\s+(?:to|from)\s+(\w+)/gi,
278
352
  /\bafter\s+(\w+)/gi,
279
353
  /\bbefore\s+(\w+)/gi,
280
354
  /\b(?:in|when)\s+state\s+(\w+)/gi,
355
+ /\bbecomes?\s+(\w+)/gi, // "becomes X" (ensures-style)
356
+ /\bmoves?\s+to\s+(\w+)/gi, // "moves to X"
281
357
  ];
282
358
  for (const b of Object.values(map)) {
283
- const requires = b?.requires;
284
- if (!requires)
359
+ const clauses = b?.[field];
360
+ if (!clauses)
285
361
  continue;
286
- const list = Array.isArray(requires) ? requires : [requires];
362
+ const list = Array.isArray(clauses) ? clauses : [clauses];
287
363
  for (const clause of list) {
288
364
  if (typeof clause !== 'string')
289
365
  continue;
@@ -300,7 +376,6 @@ function collectBehaviorStateReferences(behaviors, states) {
300
376
  unknown.add(token);
301
377
  }
302
378
  }
303
- // Also: direct name mentions (legacy heuristic)
304
379
  for (const state of stateSet) {
305
380
  const re = new RegExp(`\\b${state.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}\\b`);
306
381
  if (re.test(clause))
@@ -310,6 +385,31 @@ function collectBehaviorStateReferences(behaviors, states) {
310
385
  }
311
386
  return { declared: [...declared], unknown: [...unknown] };
312
387
  }
388
+ /** Normalize relationships into a list of {name, type, target}. */
389
+ function normalizeRelationships(relsRaw) {
390
+ if (!relsRaw)
391
+ return [];
392
+ if (Array.isArray(relsRaw)) {
393
+ return relsRaw.map((r) => (typeof r === 'string' ? parseRelationshipShorthand('', r) : r)).filter(Boolean);
394
+ }
395
+ return Object.entries(relsRaw)
396
+ .map(([name, body]) => {
397
+ if (typeof body === 'string')
398
+ return parseRelationshipShorthand(name, body);
399
+ return { name, ...body };
400
+ })
401
+ .filter(Boolean);
402
+ }
403
+ /** Parse "hasMany Booking cascade" / "belongsTo Customer" shorthand into a RelationshipSpec. */
404
+ function parseRelationshipShorthand(name, shorthand) {
405
+ const parts = shorthand.trim().split(/\s+/);
406
+ if (parts.length < 2)
407
+ return null;
408
+ const [type, target] = parts;
409
+ if (!['hasMany', 'hasOne', 'belongsTo', 'manyToMany'].includes(type))
410
+ return null;
411
+ return { name, type: type, target };
412
+ }
313
413
  /** Heuristic: a candidate string "looks like" a state name when it matches
314
414
  * the case-style of the declared states (snake_case or single-word). */
315
415
  function looksLikeStateName(token, states) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/inference/quint-gen/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/inference/quint-gen/index.ts"],"names":[],"mappings":"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"}
@@ -115,6 +115,35 @@ import type { ParserEngine } from '@specverse/types';`,
115
115
  process.exit(1);
116
116
  }
117
117
 
118
+ // Lifecycle + cross-model soundness check (TODO #31). Runs as
119
+ // part of normal validate \u2014 every spec gets these deterministic
120
+ // gates regardless of flags. Catches lifecycle typos
121
+ // (transition references unknown state), behavior-requires /
122
+ // ensures referencing unknown states, and relationship targets
123
+ // pointing at undeclared models. Violations are validation
124
+ // errors and abort with exit 1, just like schema errors.
125
+ try {
126
+ const { generateQuintFromSpec } = await import('@specverse/engines/inference/quint-gen');
127
+ const quintGen = generateQuintFromSpec(result.ast);
128
+ if (quintGen.violations.length > 0) {
129
+ if (options.json) {
130
+ console.log(JSON.stringify({ valid: false, violations: quintGen.violations }, null, 2));
131
+ } else {
132
+ console.error('Validation failed');
133
+ for (const v of quintGen.violations) {
134
+ console.error(' [' + v.kind + '] ' + v.message);
135
+ }
136
+ }
137
+ process.exit(1);
138
+ }
139
+ } catch (qe: any) {
140
+ // Don't let quint-gen module-loading issues block normal
141
+ // validate (e.g. running against a much older engines version).
142
+ if (process.env.SPECVERSE_DEBUG) {
143
+ console.warn('quint-gen check skipped:', qe?.message ?? String(qe));
144
+ }
145
+ }
146
+
118
147
  if (options.json) {
119
148
  console.log(JSON.stringify({ valid: true, warnings: result.warnings }, null, 2));
120
149
  } else {
@@ -262,6 +291,28 @@ import type { ParserEngine, InferenceEngine, RealizeEngine } from '@specverse/ty
262
291
  process.exit(1);
263
292
  }
264
293
 
294
+ // Lifecycle + cross-model soundness check (TODO #31). Same gate
295
+ // that runs in spv validate \u2014 abort realize before code generation
296
+ // if the spec has lifecycle inconsistencies or dangling
297
+ // relationship targets. R8 spirit: don't generate code from
298
+ // unsound input.
299
+ try {
300
+ const { generateQuintFromSpec } = await import('@specverse/engines/inference/quint-gen');
301
+ const quintGen = generateQuintFromSpec(parseResult.ast!);
302
+ if (quintGen.violations.length > 0) {
303
+ console.error('Cannot realize \u2014 spec has soundness violations:');
304
+ for (const v of quintGen.violations) {
305
+ console.error(' [' + v.kind + '] ' + v.message);
306
+ }
307
+ console.error('Run \`spv validate ' + file + '\` to inspect; fix the spec before realize.');
308
+ process.exit(1);
309
+ }
310
+ } catch (qe: any) {
311
+ if (process.env.SPECVERSE_DEBUG) {
312
+ console.warn('quint-gen check skipped:', qe?.message ?? String(qe));
313
+ }
314
+ }
315
+
265
316
  // Infer \u2014 let the inference engine handle its own rules
266
317
  const inferEngine = registry.getEngineForCapability('infer') as InferenceEngine;
267
318
  if (!inferEngine) { console.error('No inference engine found.'); process.exit(1); }
@@ -170,6 +170,35 @@ import type { ParserEngine } from '@specverse/types';`,
170
170
  process.exit(1);
171
171
  }
172
172
 
173
+ // Lifecycle + cross-model soundness check (TODO #31). Runs as
174
+ // part of normal validate — every spec gets these deterministic
175
+ // gates regardless of flags. Catches lifecycle typos
176
+ // (transition references unknown state), behavior-requires /
177
+ // ensures referencing unknown states, and relationship targets
178
+ // pointing at undeclared models. Violations are validation
179
+ // errors and abort with exit 1, just like schema errors.
180
+ try {
181
+ const { generateQuintFromSpec } = await import('@specverse/engines/inference/quint-gen');
182
+ const quintGen = generateQuintFromSpec(result.ast);
183
+ if (quintGen.violations.length > 0) {
184
+ if (options.json) {
185
+ console.log(JSON.stringify({ valid: false, violations: quintGen.violations }, null, 2));
186
+ } else {
187
+ console.error('Validation failed');
188
+ for (const v of quintGen.violations) {
189
+ console.error(' [' + v.kind + '] ' + v.message);
190
+ }
191
+ }
192
+ process.exit(1);
193
+ }
194
+ } catch (qe: any) {
195
+ // Don't let quint-gen module-loading issues block normal
196
+ // validate (e.g. running against a much older engines version).
197
+ if (process.env.SPECVERSE_DEBUG) {
198
+ console.warn('quint-gen check skipped:', qe?.message ?? String(qe));
199
+ }
200
+ }
201
+
173
202
  if (options.json) {
174
203
  console.log(JSON.stringify({ valid: true, warnings: result.warnings }, null, 2));
175
204
  } else {
@@ -317,6 +346,28 @@ import type { ParserEngine, InferenceEngine, RealizeEngine } from '@specverse/ty
317
346
  process.exit(1);
318
347
  }
319
348
 
349
+ // Lifecycle + cross-model soundness check (TODO #31). Same gate
350
+ // that runs in spv validate — abort realize before code generation
351
+ // if the spec has lifecycle inconsistencies or dangling
352
+ // relationship targets. R8 spirit: don't generate code from
353
+ // unsound input.
354
+ try {
355
+ const { generateQuintFromSpec } = await import('@specverse/engines/inference/quint-gen');
356
+ const quintGen = generateQuintFromSpec(parseResult.ast!);
357
+ if (quintGen.violations.length > 0) {
358
+ console.error('Cannot realize — spec has soundness violations:');
359
+ for (const v of quintGen.violations) {
360
+ console.error(' [' + v.kind + '] ' + v.message);
361
+ }
362
+ console.error('Run \`spv validate ' + file + '\` to inspect; fix the spec before realize.');
363
+ process.exit(1);
364
+ }
365
+ } catch (qe: any) {
366
+ if (process.env.SPECVERSE_DEBUG) {
367
+ console.warn('quint-gen check skipped:', qe?.message ?? String(qe));
368
+ }
369
+ }
370
+
320
371
  // Infer — let the inference engine handle its own rules
321
372
  const inferEngine = registry.getEngineForCapability('infer') as InferenceEngine;
322
373
  if (!inferEngine) { console.error('No inference engine found.'); process.exit(1); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specverse/engines",
3
- "version": "6.4.0",
3
+ "version": "6.5.2",
4
4
  "description": "SpecVerse toolchain — parser, inference, realize, generators, AI, registry, bundles",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",