@fairfox/polly 0.82.1 → 0.84.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/cli/polly.js +22 -1
  2. package/dist/cli/polly.js.map +3 -3
  3. package/dist/tools/bdd/src/args.d.ts +21 -0
  4. package/dist/tools/bdd/src/bus-driver.d.ts +36 -0
  5. package/dist/tools/bdd/src/check-verify.d.ts +15 -0
  6. package/dist/tools/bdd/src/cli.d.ts +2 -0
  7. package/dist/tools/bdd/src/cli.js +705 -0
  8. package/dist/tools/bdd/src/cli.js.map +19 -0
  9. package/dist/tools/bdd/src/config.d.ts +9 -0
  10. package/dist/tools/bdd/src/extract.d.ts +2 -0
  11. package/dist/tools/bdd/src/index.d.ts +19 -0
  12. package/dist/tools/bdd/src/index.js +544 -0
  13. package/dist/tools/bdd/src/index.js.map +17 -0
  14. package/dist/tools/bdd/src/parse.d.ts +3 -0
  15. package/dist/tools/bdd/src/report.d.ts +6 -0
  16. package/dist/tools/bdd/src/run.d.ts +8 -0
  17. package/dist/tools/bdd/src/scaffold.d.ts +7 -0
  18. package/dist/tools/bdd/src/steps.d.ts +55 -0
  19. package/dist/tools/bdd/src/types.d.ts +152 -0
  20. package/dist/tools/bdd/src/witness.d.ts +23 -0
  21. package/dist/tools/quality/src/cli.js +304 -15
  22. package/dist/tools/quality/src/cli.js.map +6 -4
  23. package/dist/tools/quality/src/index.d.ts +2 -0
  24. package/dist/tools/quality/src/index.js +309 -15
  25. package/dist/tools/quality/src/index.js.map +6 -4
  26. package/dist/tools/quality/src/no-fixed-waits.d.ts +52 -0
  27. package/dist/tools/quality/src/no-tautology-ensures.d.ts +67 -0
  28. package/dist/tools/quality/src/plugins/core.d.ts +1 -1
  29. package/dist/tools/test/src/tiers/cli.js +21 -1
  30. package/dist/tools/test/src/tiers/cli.js.map +3 -3
  31. package/dist/tools/verify/src/cli.js +569 -1
  32. package/dist/tools/verify/src/cli.js.map +8 -4
  33. package/package.json +7 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../tools/verify/src/analysis/expression-validator.ts", "../tools/verify/src/analysis/model-coverage.ts", "../tools/verify/src/analysis/coupled-fields.ts", "../tools/verify/src/analysis/non-interference.ts", "../tools/verify/src/analysis/precondition-locality.ts", "../tools/verify/src/codegen/invariants.ts", "../tools/verify/src/codegen/temporal.ts", "../tools/verify/src/codegen/tla.ts", "../tools/verify/src/runner/docker.ts", "../tools/verify/src/cli.ts", "../tools/verify/src/analysis/mesh-signal-warnings.ts", "../tools/verify/src/config/types.ts", "../tools/verify/src/analysis/state-space-estimator.ts", "../tools/verify/src/codegen/config.ts", "../tools/verify/src/config/parser.ts", "../tools/verify/src/config/capability-validation.ts", "../tools/analysis/src/extract/types.ts", "../tools/analysis/src/extract/handlers.ts", "../tools/analysis/src/extract/relationships.ts", "../tools/verify/src/runner/mesh-seed.ts"],
3
+ "sources": ["../tools/verify/src/analysis/expression-validator.ts", "../tools/verify/src/analysis/model-coverage.ts", "../tools/verify/src/analysis/coupled-fields.ts", "../tools/verify/src/analysis/non-interference.ts", "../tools/verify/src/analysis/precondition-locality.ts", "../tools/verify/src/codegen/invariants.ts", "../tools/verify/src/codegen/temporal.ts", "../tools/verify/src/codegen/tla.ts", "../tools/bdd/src/parse.ts", "../tools/bdd/src/steps.ts", "../tools/bdd/src/witness.ts", "../tools/verify/src/codegen/witness.ts", "../tools/verify/src/runner/docker.ts", "../tools/verify/src/cli.ts", "../tools/verify/src/analysis/mesh-signal-warnings.ts", "../tools/verify/src/config/types.ts", "../tools/verify/src/analysis/state-space-estimator.ts", "../tools/verify/src/codegen/config.ts", "../tools/verify/src/config/parser.ts", "../tools/verify/src/config/capability-validation.ts", "../tools/analysis/src/extract/types.ts", "../tools/analysis/src/extract/handlers.ts", "../tools/analysis/src/extract/relationships.ts", "../tools/verify/src/runner/mesh-seed.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Validates requires()/ensures() expressions before TLA+ codegen.\n * Catches patterns that produce broken TLA+ and gives actionable warnings.\n */\n\nimport type { MessageHandler } from \"../core/model\";\n\n// Types\n\nexport type ExpressionWarning = {\n kind:\n | \"unmodeled_field\"\n | \"unsupported_method\"\n | \"optional_chaining\"\n | \"null_comparison\"\n | \"weak_postcondition\";\n message: string;\n messageType: string;\n conditionType: \"requires\" | \"ensures\";\n expression: string;\n location: { file: string; line: number; column: number };\n suggestion: string;\n};\n\nexport type ValidationResult = {\n warnings: ExpressionWarning[];\n validCount: number;\n warnCount: number;\n};\n\n// Field reference extraction\n\n// Same patterns the TLA+ generator uses (tla.ts Phase 2b/2c)\nconst SIGNAL_VALUE_FIELD = /([a-zA-Z_]\\w*)\\.value\\.([a-zA-Z_][\\w.]*)/g;\nconst SIGNAL_VALUE_BARE = /([a-zA-Z_]\\w*)\\.value\\b(?!\\.)/g;\nconst STATE_DOT_FIELD = /state\\.([a-zA-Z_][\\w.]*)/g;\nconst PAYLOAD_REF = /payload\\.\\w+/;\n\n/**\n * Extract state field references from an expression, returning\n * config-compatible field names (dot-form and underscore-form).\n */\nexport function extractFieldRefs(expression: string): string[] {\n const refs: string[] = [];\n\n // Pattern 1: xxx.value.yyy.zzz → xxx.yyy.zzz (strip .value.)\n for (const m of expression.matchAll(SIGNAL_VALUE_FIELD)) {\n const prefix = m[1];\n const suffix = m[2];\n refs.push(`${prefix}.${suffix}`);\n }\n\n // Pattern 2: xxx.value (no suffix) → xxx\n for (const m of expression.matchAll(SIGNAL_VALUE_BARE)) {\n if (m[1]) refs.push(m[1]);\n }\n\n // Pattern 3: state.xxx.yyy → xxx.yyy\n for (const m of expression.matchAll(STATE_DOT_FIELD)) {\n if (m[1]) refs.push(m[1]);\n }\n\n // Deduplicate\n return [...new Set(refs)];\n}\n\n/**\n * Check if a field reference matches a key in the state config.\n * Tries both dot-form (user.loggedIn) and underscore-form (user_loggedIn).\n *\n * Exported (polly#160) so capability/coupled-field validation reuses the exact\n * same field-name resolution the expression validator and codegen use, rather\n * than re-deriving the dot/underscore tolerance.\n */\nexport function fieldInConfig(\n fieldRef: string,\n configKeys: Set<string>,\n stateConfig?: Record<string, unknown>\n): boolean {\n if (configKeys.has(fieldRef)) return true;\n // Try underscore form\n const underscored = fieldRef.replace(/\\./g, \"_\");\n if (configKeys.has(underscored)) return true;\n // Try dot form from underscore\n const dotted = fieldRef.replace(/_/g, \".\");\n if (configKeys.has(dotted)) return true;\n\n // Handle .length on array/collection fields: \"todos.length\" is valid if \"todos\" is array-like\n if (stateConfig && fieldRef.endsWith(\".length\")) {\n const parent = fieldRef.slice(0, -\".length\".length);\n const parentEntry = resolveConfigEntry(parent, stateConfig);\n if (parentEntry !== undefined && isArrayLike(parentEntry)) return true;\n }\n\n return false;\n}\n\n/**\n * Resolve the config entry for a field ref, trying both dot and underscore forms.\n */\nfunction resolveConfigEntry(\n fieldRef: string,\n stateConfig: Record<string, unknown>\n): unknown | undefined {\n if (fieldRef in stateConfig) return stateConfig[fieldRef];\n const underscored = fieldRef.replace(/\\./g, \"_\");\n if (underscored in stateConfig) return stateConfig[underscored];\n const dotted = fieldRef.replace(/_/g, \".\");\n if (dotted in stateConfig) return stateConfig[dotted];\n return undefined;\n}\n\n// Type resolution helpers\n\nfunction isArrayLike(configEntry: unknown): boolean {\n if (configEntry && typeof configEntry === \"object\") {\n const obj = configEntry as unknown as Record<string, unknown>;\n if (obj[\"type\"] === \"array\") return true;\n if (\"maxLength\" in obj) return true;\n if (\"maxSize\" in obj) return true;\n }\n return false;\n}\n\nfunction isNullable(configEntry: unknown): boolean {\n if (Array.isArray(configEntry)) {\n return configEntry.includes(null);\n }\n if (configEntry && typeof configEntry === \"object\") {\n const obj = configEntry as unknown as Record<string, unknown>;\n // { abstract: true } allows extra values including null-like\n if (obj[\"abstract\"] === true) return true;\n // { values: [...] } — check if null is in the values array\n if (Array.isArray(obj[\"values\"])) {\n return obj[\"values\"].includes(null);\n }\n }\n return false;\n}\n\n// 5 checks\n\nconst UNSUPPORTED_METHODS = /\\.(some|every|find|filter)\\s*\\(/;\nconst OPTIONAL_CHAIN = /\\?\\./;\nconst NULL_COMPARISON = /(===?\\s*null|!==?\\s*null|null\\s*===?|null\\s*!==?)/;\n\nfunction checkUnmodeledFields(\n expression: string,\n configKeys: Set<string>,\n stateConfig: Record<string, unknown>,\n messageType: string,\n conditionType: \"requires\" | \"ensures\",\n location: { file: string; line: number; column: number },\n meshSignalNames: ReadonlySet<string>\n): ExpressionWarning[] {\n const warnings: ExpressionWarning[] = [];\n const refs = extractFieldRefs(expression);\n\n for (const ref of refs) {\n // polly#117: a reference into a $meshState/$peerState signal is\n // not \"unmodeled\" — it lives in the mesh namespace (or is flagged\n // separately by the mesh/peer signal warning). Skip it here so the\n // two checks do not both fire on the same predicate.\n if (meshSignalNames.has(ref.split(\".\")[0] ?? ref)) continue;\n if (!fieldInConfig(ref, configKeys, stateConfig)) {\n warnings.push({\n kind: \"unmodeled_field\",\n message: `${conditionType}() in ${messageType} references unmodeled field '${ref}'`,\n messageType,\n conditionType,\n expression,\n location,\n suggestion: `Add '${ref}' to state config or remove from ${conditionType}()`,\n });\n }\n }\n\n return warnings;\n}\n\nfunction checkUnsupportedMethods(\n expression: string,\n configKeys: Set<string>,\n stateConfig: Record<string, unknown>,\n messageType: string,\n conditionType: \"requires\" | \"ensures\",\n location: { file: string; line: number; column: number }\n): ExpressionWarning[] {\n const match = expression.match(UNSUPPORTED_METHODS);\n if (!match) return [];\n\n // If the method is called on a field not in config, the unmodeled check covers it\n const refs = extractFieldRefs(expression);\n const allUnmodeled =\n refs.length > 0 && refs.every((r) => !fieldInConfig(r, configKeys, stateConfig));\n if (allUnmodeled) return [];\n\n return [\n {\n kind: \"unsupported_method\",\n message: `${conditionType}() in ${messageType} uses .${match[1]}() which cannot be translated to TLA+`,\n messageType,\n conditionType,\n expression,\n location,\n suggestion: `Rewrite without .${match[1]}() or model the check as a boolean state field`,\n },\n ];\n}\n\nfunction checkOptionalChaining(\n expression: string,\n messageType: string,\n conditionType: \"requires\" | \"ensures\",\n location: { file: string; line: number; column: number }\n): ExpressionWarning[] {\n if (!OPTIONAL_CHAIN.test(expression)) return [];\n\n return [\n {\n kind: \"optional_chaining\",\n message: `${conditionType}() in ${messageType} uses optional chaining (?.)`,\n messageType,\n conditionType,\n expression,\n location,\n suggestion:\n \"Optional chaining translation is fragile — consider explicit null checks or restructuring\",\n },\n ];\n}\n\nfunction checkNullComparisons(\n expression: string,\n stateConfig: Record<string, unknown>,\n configKeys: Set<string>,\n messageType: string,\n conditionType: \"requires\" | \"ensures\",\n location: { file: string; line: number; column: number }\n): ExpressionWarning[] {\n if (!NULL_COMPARISON.test(expression)) return [];\n\n const warnings: ExpressionWarning[] = [];\n const refs = extractFieldRefs(expression);\n\n for (const ref of refs) {\n if (!fieldInConfig(ref, configKeys, stateConfig)) continue;\n const entry = resolveConfigEntry(ref, stateConfig);\n if (entry !== undefined && !isNullable(entry)) {\n warnings.push({\n kind: \"null_comparison\",\n message: `${conditionType}() in ${messageType} compares '${ref}' to null but field is not nullable`,\n messageType,\n conditionType,\n expression,\n location,\n suggestion: `Add null to '${ref}' values in state config, or remove the null check`,\n });\n }\n }\n\n return warnings;\n}\n\n// Pattern: fieldRef !== <literal> (weak negation in ensures)\nconst WEAK_NEGATION =\n /([a-zA-Z_][\\w.]*(?:\\.value\\.[\\w.]+|\\.value\\b|))?\\s*!==?\\s*(\"[^\"]*\"|'[^']*'|\\d+|true|false|null)/;\n\nfunction checkWeakPostconditions(\n expression: string,\n handler: MessageHandler,\n messageType: string,\n conditionType: \"requires\" | \"ensures\",\n location: { file: string; line: number; column: number }\n): ExpressionWarning[] {\n if (conditionType !== \"ensures\") return [];\n\n const match = expression.match(WEAK_NEGATION);\n if (!match) return [];\n\n // Extract the field being compared\n const refs = extractFieldRefs(expression);\n if (refs.length === 0) return [];\n\n // Check if any of the referenced fields have a concrete assignment in this handler\n for (const ref of refs) {\n const underscoredRef = ref.replace(/\\./g, \"_\");\n const hasAssignment = handler.assignments.some(\n (a) => a.field === ref || a.field === underscoredRef || a.field.replace(/_/g, \".\") === ref\n );\n if (hasAssignment) {\n const assignment = handler.assignments.find(\n (a) => a.field === ref || a.field === underscoredRef || a.field.replace(/_/g, \".\") === ref\n );\n const assignedValue = assignment ? JSON.stringify(assignment.value) : \"<value>\";\n return [\n {\n kind: \"weak_postcondition\",\n message: `ensures() in ${messageType} uses !== for '${ref}' which has a concrete assignment`,\n messageType,\n conditionType,\n expression,\n location,\n suggestion: `Consider ensures(${ref} === ${assignedValue}) for a stronger postcondition`,\n },\n ];\n }\n }\n\n return [];\n}\n\n// Main validator\n\nexport function validateExpressions(\n handlers: MessageHandler[],\n stateConfig: Record<string, unknown>,\n meshSignalNames: ReadonlySet<string> = new Set()\n): ValidationResult {\n const warnings: ExpressionWarning[] = [];\n let validCount = 0;\n const configKeys = new Set(Object.keys(stateConfig));\n\n for (const handler of handlers) {\n const conditions: Array<{\n cond: { expression: string; location: { line: number; column: number } };\n type: \"requires\" | \"ensures\";\n }> = [\n ...handler.preconditions.map((c) => ({\n cond: c,\n type: \"requires\" as const,\n })),\n ...handler.postconditions.map((c) => ({\n cond: c,\n type: \"ensures\" as const,\n })),\n ];\n\n for (const { cond, type } of conditions) {\n // Skip payload-only expressions (not state refs)\n const refs = extractFieldRefs(cond.expression);\n const isPayloadOnly = refs.length === 0 && PAYLOAD_REF.test(cond.expression);\n\n const loc = {\n file: handler.location.file,\n line: cond.location.line,\n column: cond.location.column,\n };\n\n const condWarnings: ExpressionWarning[] = [];\n\n if (!isPayloadOnly) {\n condWarnings.push(\n ...checkUnmodeledFields(\n cond.expression,\n configKeys,\n stateConfig,\n handler.messageType,\n type,\n loc,\n meshSignalNames\n )\n );\n }\n\n condWarnings.push(\n ...checkUnsupportedMethods(\n cond.expression,\n configKeys,\n stateConfig,\n handler.messageType,\n type,\n loc\n )\n );\n\n condWarnings.push(...checkOptionalChaining(cond.expression, handler.messageType, type, loc));\n\n condWarnings.push(\n ...checkNullComparisons(\n cond.expression,\n stateConfig,\n configKeys,\n handler.messageType,\n type,\n loc\n )\n );\n\n condWarnings.push(\n ...checkWeakPostconditions(cond.expression, handler, handler.messageType, type, loc)\n );\n\n if (condWarnings.length === 0) {\n validCount++;\n } else {\n warnings.push(...condWarnings);\n }\n }\n }\n\n return { warnings, validCount, warnCount: warnings.length };\n}\n",
6
6
  "// polly#160 (Ask #1): model-coverage report — surface what the model does NOT\n// cover instead of dropping it silently.\n//\n// The motivating bug (a capability granted by a path the model never sees) is an\n// OMISSION: a statement never written, a transition never modelled. Mutation\n// testing is blind to it (no line to mutate) and a green TLC run says nothing\n// about a field no handler touches. This module reads the analyzed handler\n// surface against the declared state schema and reports three things:\n//\n// 1. write distribution — for each declared state field, which handlers\n// assign it (the \"written by some paths but not others\" signal: the\n// scattered-invariant smell shows up as an uneven writer set).\n// 2. unwritten fields — declared state fields NO modelled handler assigns.\n// The model carries a variable no transition can ever change: either dead\n// state inflating the state space, or — the dangerous case — a field whose\n// real mutating path was never modelled (e.g. a `register()` that escapes\n// the message-handler surface). This is the soundest static proxy for the\n// omission bug, so it is the `--strict` fail-closed trigger.\n// 3. unconstrained mutators — handlers that mutate declared state but pin no\n// `ensures()` postcondition. The checker explores the transition but\n// asserts nothing about its effect. Reported as a hint (ensures is\n// optional by design), never a strict failure.\n//\n// `analysis.handlers` contains only handlers whose message type is representable\n// in TLA+; the unrepresentable ones (polly#144) are filtered upstream and warned\n// unconditionally there, so they are not re-reported here.\n\nimport type { MessageHandler } from \"../types\";\n\n/** Per declared field: the message types of every handler that assigns it. */\nexport type FieldWriteCoverage = {\n /** The declared (config) field name, canonical dot-form. */\n field: string;\n /** Message types of handlers that write this field (sorted, de-duplicated). */\n writers: string[];\n};\n\n/** A handler that mutates declared state but states no postcondition. */\nexport type UnconstrainedMutator = {\n /** The handler's message type. */\n handler: string;\n /** Declared fields this handler assigns. */\n fields: string[];\n /** Source location of the handler. */\n location: { file: string; line: number };\n};\n\nexport type ModelCoverageReport = {\n /** Write distribution for every declared field, in declaration order. */\n fieldCoverage: FieldWriteCoverage[];\n /** Declared fields no modelled handler assigns. */\n unwrittenFields: string[];\n /** Handlers that mutate declared state with no `ensures()` postcondition. */\n unconstrainedMutators: UnconstrainedMutator[];\n /**\n * True when the model has a coverage gap worth failing `--strict` on. Gated\n * on `unwrittenFields` only: a declared-but-unwritten field is an unambiguous\n * \"the model cannot exercise this\" signal. Unconstrained mutators are a soft\n * hint and never set this.\n */\n hasStrictViolation: boolean;\n};\n\n/** Canonical dot-form so a config field name and a handler assignment field\n * compare equal regardless of underscore/dot form (assignments are dotted\n * \"user.loggedIn\"; config keys may be underscore \"user_loggedIn\"). Mirrors\n * the matcher in coupled-fields.ts. */\nfunction norm(field: string): string {\n return field.replace(/_/g, \".\");\n}\n\n/**\n * Compute model coverage of the declared state schema by the analyzed handler\n * surface. `stateFields` are the keys of the verification config's `state`\n * block; `handlers` is `analysis.handlers` (already filtered to representable\n * message types upstream).\n */\nexport function computeModelCoverage(\n stateFields: string[],\n handlers: MessageHandler[]\n): ModelCoverageReport {\n // declared field (normalised) -> set of writer message types\n const writersByField = new Map<string, Set<string>>();\n for (const field of stateFields) {\n writersByField.set(norm(field), new Set());\n }\n\n // declared field (normalised) -> original config name, preserving order\n const declaredOrder = stateFields.map((f) => ({ raw: f, key: norm(f) }));\n\n for (const handler of handlers) {\n for (const assignment of handler.assignments) {\n const key = norm(assignment.field);\n const writers = writersByField.get(key);\n if (writers) writers.add(handler.messageType);\n }\n }\n\n const fieldCoverage: FieldWriteCoverage[] = declaredOrder.map(({ raw, key }) => ({\n field: raw,\n writers: Array.from(writersByField.get(key) ?? []).sort(),\n }));\n\n const unwrittenFields = fieldCoverage.filter((f) => f.writers.length === 0).map((f) => f.field);\n\n const declaredKeys = new Set(declaredOrder.map((d) => d.key));\n const unconstrainedMutators: UnconstrainedMutator[] = [];\n for (const handler of handlers) {\n if (handler.postconditions.length > 0) continue;\n const fields = Array.from(\n new Set(handler.assignments.map((a) => norm(a.field)).filter((f) => declaredKeys.has(f)))\n ).sort();\n if (fields.length > 0) {\n unconstrainedMutators.push({\n handler: handler.messageType,\n fields,\n location: handler.location,\n });\n }\n }\n\n return {\n fieldCoverage,\n unwrittenFields,\n unconstrainedMutators,\n hasStrictViolation: unwrittenFields.length > 0,\n };\n}\n\n/**\n * The reasons a `--strict` run should fail closed: an unwritten declared field\n * (a modelled-but-unreachable mutation — the omission class) and/or unverified\n * `$meshState`/`$peerState` predicates (polly#117). Empty array means strict\n * passes. Pure so the CLI's exit decision is testable apart from `process.exit`.\n */\nexport function strictCoverageReasons(\n report: ModelCoverageReport,\n meshFindingCount: number\n): string[] {\n const reasons: string[] = [];\n if (report.hasStrictViolation) {\n reasons.push(\n `${report.unwrittenFields.length} declared state field(s) written by no modelled handler`\n );\n }\n if (meshFindingCount > 0) {\n reasons.push(`${meshFindingCount} unverified $meshState/$peerState predicate(s)`);\n }\n return reasons;\n}\n",
@@ -10,8 +10,12 @@
10
10
  "// Invariant extraction from JSDoc comments\n// Extract domain-specific invariants from code annotations\n\nimport { type JSDoc, type JSDocTag, Node, Project, type SourceFile } from \"ts-morph\";\nimport type { CodebaseAnalysis } from \"../types\";\n\n/**\n * Extracted invariant from JSDoc annotation\n */\nexport type Invariant = {\n /** Name for the invariant (auto-generated if not provided) */\n name: string;\n /** Description from JSDoc comment */\n description: string;\n /** JavaScript expression that should always be true */\n expression: string;\n /** Source location. Omitted for synthesised invariants (e.g. polly#160\n * capabilities) that have no originating source line. */\n location?: {\n file: string;\n line: number;\n };\n};\n\n/**\n * Result of invariant extraction\n */\nexport type InvariantExtractionResult = {\n invariants: Invariant[];\n warnings: string[];\n};\n\n/**\n * InvariantExtractor extracts application-specific invariants from:\n * - @invariant JSDoc tags\n * - @ensures JSDoc tags (treated as post-condition invariants)\n * - @requires JSDoc tags (treated as pre-condition invariants)\n *\n * These are translated to TLA+ invariants that TLC can check.\n */\nexport class InvariantExtractor {\n private warnings: string[] = [];\n\n /**\n * Extract invariants from TypeScript project\n */\n extractInvariants(projectPath: string): InvariantExtractionResult {\n const project = new Project({\n tsConfigFilePath: `${projectPath}/tsconfig.json`,\n skipAddingFilesFromTsConfig: false,\n });\n\n const invariants: Invariant[] = [];\n\n for (const sourceFile of project.getSourceFiles()) {\n // Skip node_modules and test files\n if (\n sourceFile.getFilePath().includes(\"node_modules\") ||\n sourceFile.getFilePath().includes(\".test.\") ||\n sourceFile.getFilePath().includes(\".spec.\")\n ) {\n continue;\n }\n\n invariants.push(...this.extractFromSourceFile(sourceFile));\n }\n\n return {\n invariants,\n warnings: this.warnings,\n };\n }\n\n /**\n * Extract invariants from codebase analysis result\n * (Alternative entry point when analysis is already done)\n */\n extractFromAnalysis(_analysis: CodebaseAnalysis): InvariantExtractionResult {\n // For now, return empty - could be enhanced to extract from handlers\n return {\n invariants: [],\n warnings: [],\n };\n }\n\n /**\n * Extract invariants from a single source file\n */\n private extractFromSourceFile(sourceFile: SourceFile): Invariant[] {\n const invariants: Invariant[] = [];\n\n // Traverse all nodes looking for JSDoc comments\n sourceFile.forEachDescendant((node) => {\n this.processNodeJSDocs(node, sourceFile, invariants);\n });\n\n return invariants;\n }\n\n /**\n * Process JSDoc comments for a node\n */\n private processNodeJSDocs(node: Node, sourceFile: SourceFile, invariants: Invariant[]): void {\n const jsDocs = this.getJsDocComments(node);\n\n for (const jsDoc of jsDocs) {\n this.processJSDocTags(jsDoc, sourceFile, node, invariants);\n }\n }\n\n /**\n * Process tags within a JSDoc comment\n */\n private processJSDocTags(\n jsDoc: JSDoc,\n sourceFile: SourceFile,\n node: Node,\n invariants: Invariant[]\n ): void {\n for (const tag of jsDoc.getTags()) {\n this.processJSDocTag(tag, sourceFile, node, invariants);\n }\n }\n\n /**\n * Process a single JSDoc tag\n */\n private processJSDocTag(\n tag: JSDocTag,\n sourceFile: SourceFile,\n node: Node,\n invariants: Invariant[]\n ): void {\n const tagName = tag.getTagName();\n const text = tag.getComment();\n\n if (typeof text !== \"string\" || !text.trim()) {\n return;\n }\n\n const trimmedText = text.trim();\n\n if (tagName === \"invariant\") {\n invariants.push(this.createInvariant(trimmedText, \"invariant\", sourceFile, node));\n } else if (tagName === \"ensures\") {\n invariants.push(this.createInvariant(trimmedText, \"post-condition\", sourceFile, node));\n } else if (tagName === \"requires\") {\n invariants.push(this.createInvariant(trimmedText, \"pre-condition\", sourceFile, node));\n }\n }\n\n /**\n * Get JSDoc comments for a node\n */\n private getJsDocComments(node: Node): JSDoc[] {\n if (Node.isJSDocable(node)) {\n return node.getJsDocs();\n }\n return [];\n }\n\n /**\n * Create invariant from JSDoc annotation\n */\n private createInvariant(\n expression: string,\n type: \"invariant\" | \"pre-condition\" | \"post-condition\",\n sourceFile: SourceFile,\n node: Node\n ): Invariant {\n // Extract description from preceding comment text\n const description = this.extractDescription(node, expression);\n\n // Generate name from expression\n const name = this.generateInvariantName(expression, type);\n\n return {\n name,\n description,\n expression,\n location: {\n file: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n },\n };\n }\n\n /**\n * Extract human-readable description from JSDoc\n */\n private extractDescription(node: Node, expression: string): string {\n if (Node.isJSDocable(node)) {\n const jsDocs = node.getJsDocs();\n for (const jsDoc of jsDocs) {\n const desc = jsDoc.getDescription();\n if (desc?.trim()) {\n return desc.trim();\n }\n }\n }\n\n // Fallback: use expression as description\n return `Invariant: ${expression}`;\n }\n\n /**\n * Generate invariant name from expression\n *\n * Examples:\n * - \"state.count >= 0\" -> \"CountNonNegative\"\n * - \"state.items.length <= 100\" -> \"ItemsMaxLength\"\n */\n private generateInvariantName(\n expression: string,\n type: \"invariant\" | \"pre-condition\" | \"post-condition\"\n ): string {\n // Extract field names from expression\n const fieldMatches = expression.match(/state\\.(\\w+)/g);\n if (!fieldMatches || fieldMatches.length === 0) {\n return this.generateGenericInvariantName(type);\n }\n\n // Use first field name as base\n const fieldName = fieldMatches[0]?.replace(\"state.\", \"\");\n\n // Build name from components\n const constraintSuffix = this.determineConstraintSuffix(expression);\n const capitalizedField = fieldName.charAt(0).toUpperCase() + fieldName.slice(1);\n const prefix = this.getInvariantPrefix(type);\n\n return `${prefix}${capitalizedField}${constraintSuffix}`;\n }\n\n /**\n * Generate generic invariant name when no state fields found\n */\n private generateGenericInvariantName(\n type: \"invariant\" | \"pre-condition\" | \"post-condition\"\n ): string {\n const prefix = this.getInvariantPrefix(type);\n return `${prefix}Invariant${Math.random().toString(36).substring(2, 7)}`;\n }\n\n /**\n * Determine constraint suffix based on operators in expression\n */\n private determineConstraintSuffix(expression: string): string {\n if (expression.includes(\"<=\")) return \"MaxValue\";\n if (expression.includes(\">=\")) return \"MinValue\";\n if (expression.includes(\"===\") || expression.includes(\"==\")) return \"Equals\";\n if (expression.includes(\"!==\") || expression.includes(\"!=\")) return \"NotEquals\";\n if (expression.includes(\"<\")) return \"LessThan\";\n if (expression.includes(\">\")) return \"GreaterThan\";\n return \"Check\";\n }\n\n /**\n * Get prefix based on invariant type\n */\n private getInvariantPrefix(type: \"invariant\" | \"pre-condition\" | \"post-condition\"): string {\n if (type === \"pre-condition\") return \"Pre\";\n if (type === \"post-condition\") return \"Post\";\n return \"\";\n }\n\n /**\n * Validate that expression is safe to translate to TLA+\n */\n validateExpression(expression: string): { valid: boolean; error?: string } {\n // Check for dangerous patterns\n if (expression.includes(\"eval(\")) {\n return { valid: false, error: \"eval() not allowed in invariants\" };\n }\n\n // Check for basic syntax issues\n const openParens = (expression.match(/\\(/g) || []).length;\n const closeParens = (expression.match(/\\)/g) || []).length;\n if (openParens !== closeParens) {\n return { valid: false, error: \"Unbalanced parentheses\" };\n }\n\n const openBrackets = (expression.match(/\\[/g) || []).length;\n const closeBrackets = (expression.match(/\\]/g) || []).length;\n if (openBrackets !== closeBrackets) {\n return { valid: false, error: \"Unbalanced brackets\" };\n }\n\n return { valid: true };\n }\n}\n\n/**\n * InvariantGenerator converts extracted invariants to TLA+ format\n */\nexport class InvariantGenerator {\n /**\n * Generate TLA+ invariant definitions from extracted invariants\n */\n generateTLAInvariants(\n invariants: Invariant[],\n tsExpressionToTLA: (expr: string) => string\n ): string[] {\n const tlaInvariants: string[] = [];\n\n for (const invariant of invariants) {\n tlaInvariants.push(this.generateSingleInvariant(invariant, tsExpressionToTLA));\n }\n\n return tlaInvariants;\n }\n\n /**\n * Generate single TLA+ invariant\n */\n private generateSingleInvariant(\n invariant: Invariant,\n tsExpressionToTLA: (expr: string) => string\n ): string {\n const lines: string[] = [];\n\n // Add description as comment\n if (invariant.description) {\n lines.push(`\\\\* ${invariant.description}`);\n }\n\n // Translate expression to TLA+\n const tlaExpr = tsExpressionToTLA(invariant.expression);\n\n // Wrap in universal quantifier over all contexts\n lines.push(`${invariant.name} ==`);\n lines.push(` \\\\A ctx \\\\in Contexts : ${tlaExpr}`);\n\n return lines.join(\"\\n\");\n }\n\n /**\n * Generate INVARIANT declarations for TLA+ config file\n */\n generateConfigInvariants(invariants: Invariant[]): string[] {\n return invariants.map((inv) => `INVARIANT ${inv.name}`);\n }\n}\n",
11
11
  "// Temporal property generation for message ordering and causality\n// Generate LTL (Linear Temporal Logic) properties for TLC liveness checking\n\nimport type { CodebaseAnalysis } from \"../types\";\n\n/**\n * Temporal property types\n */\nexport type TemporalPropertyType =\n | \"eventually\" // <>P (eventually P)\n | \"always\" // []P (always P)\n | \"step-always\" // [][P]_allVars (always: P holds on every (s,s') step or stuttering)\n | \"until\" // P U Q (P until Q)\n | \"implies-eventually\" // []( P => <>Q ) (always: if P then eventually Q)\n | \"implies-next\" // []( P => X Q ) (always: if P then next Q)\n | \"order\"; // Message ordering constraint\n\n/**\n * Temporal property specification\n */\nexport type TemporalProperty = {\n /** Property name */\n name: string;\n /** Human-readable description */\n description: string;\n /** Property type */\n type: TemporalPropertyType;\n /** Trigger condition (if applicable) */\n trigger?: string;\n /** Target condition or message */\n target: string;\n /** Source location (if extracted from code) */\n location?: {\n file: string;\n line: number;\n };\n};\n\n/**\n * Ordering rule between messages\n */\nexport type MessageOrderRule = {\n /** Message that must come first */\n first: string;\n /** Message that must come after */\n second: string;\n /** Description of the ordering requirement */\n description: string;\n};\n\n/**\n * TemporalPropertyGenerator creates LTL properties for:\n * - Message ordering (init first, login before auth actions, etc.)\n * - Causality (request => response)\n * - Liveness (eventual completion)\n * - Safety (bad states never reached)\n */\nexport class TemporalPropertyGenerator {\n /**\n * Generate temporal properties from codebase analysis\n */\n generateProperties(analysis: CodebaseAnalysis): TemporalProperty[] {\n const properties: TemporalProperty[] = [];\n\n // 1. Generate init-first property if init message exists\n if (analysis.messageTypes.includes(\"init\")) {\n properties.push(this.generateInitFirstProperty());\n }\n\n // 2. Detect request-response patterns\n properties.push(...this.detectRequestResponsePatterns(analysis));\n\n // 3. Detect state transitions that require ordering\n properties.push(...this.detectOrderingFromHandlers(analysis));\n\n // 4. Generate eventual completion properties\n properties.push(...this.generateCompletionProperties(analysis));\n\n return properties;\n }\n\n /**\n * Generate property: init message must be delivered first\n */\n private generateInitFirstProperty(): TemporalProperty {\n return {\n name: \"InitMessageFirst\",\n description: \"Init message must be delivered before any other message\",\n type: \"order\",\n target: \"init\",\n };\n }\n\n /**\n * Detect request-response message pairs\n */\n private detectRequestResponsePatterns(analysis: CodebaseAnalysis): TemporalProperty[] {\n const properties: TemporalProperty[] = [];\n\n // Common patterns: request/response, query/result, command/ack\n const patterns = [\n { request: \"request\", response: \"response\" },\n { request: \"query\", response: \"result\" },\n { request: \"command\", response: \"ack\" },\n { request: \"send\", response: \"receive\" },\n ];\n\n for (const pattern of patterns) {\n const hasRequest = analysis.messageTypes.some((m) =>\n m.toLowerCase().includes(pattern.request)\n );\n const hasResponse = analysis.messageTypes.some((m) =>\n m.toLowerCase().includes(pattern.response)\n );\n\n if (hasRequest && hasResponse) {\n properties.push({\n name: `${this.capitalize(pattern.request)}EventuallyGets${this.capitalize(pattern.response)}`,\n description: `Every ${pattern.request} eventually gets a ${pattern.response}`,\n type: \"implies-eventually\",\n trigger: `delivered[\"${pattern.request}\"]`,\n target: `delivered[\"${pattern.response}\"]`,\n });\n }\n }\n\n return properties;\n }\n\n /**\n * Detect ordering requirements from handler preconditions\n */\n private detectOrderingFromHandlers(analysis: CodebaseAnalysis): TemporalProperty[] {\n const properties: TemporalProperty[] = [];\n\n for (const handler of analysis.handlers) {\n // Check preconditions for state requirements\n for (const precondition of handler.preconditions) {\n // If handler requires authenticated state, it must come after login\n if (\n precondition.expression.includes(\"authenticated\") &&\n analysis.messageTypes.some((m) => m.toLowerCase().includes(\"login\"))\n ) {\n properties.push({\n name: `${handler.messageType}RequiresLogin`,\n description: `${handler.messageType} can only happen after login`,\n type: \"implies-eventually\",\n trigger: `msgType = \"${handler.messageType}\"`,\n target: 'delivered[\"login\"]',\n location: handler.location,\n });\n }\n }\n }\n\n return properties;\n }\n\n /**\n * Generate properties for eventual completion\n */\n private generateCompletionProperties(analysis: CodebaseAnalysis): TemporalProperty[] {\n const properties: TemporalProperty[] = [];\n\n // Look for \"start\" messages that should eventually complete\n const startMessages = analysis.messageTypes.filter((m) => m.toLowerCase().includes(\"start\"));\n const completeMessages = analysis.messageTypes.filter(\n (m) => m.toLowerCase().includes(\"complete\") || m.toLowerCase().includes(\"finish\")\n );\n\n if (startMessages.length > 0 && completeMessages.length > 0) {\n for (const start of startMessages) {\n properties.push({\n name: `${start}EventuallyCompletes`,\n description: `Every ${start} eventually leads to completion`,\n type: \"implies-eventually\",\n trigger: `delivered[\"${start}\"]`,\n target: `\\\\E msg \\\\in {\"${completeMessages.join('\", \"')}\"} : delivered[msg]`,\n });\n }\n }\n\n return properties;\n }\n\n /**\n * Create custom ordering rule\n */\n createOrderingRule(rule: MessageOrderRule): TemporalProperty {\n return {\n name: `${rule.first}Before${rule.second}`,\n description: rule.description,\n type: \"order\",\n trigger: `delivered[\"${rule.second}\"]`,\n target: `delivered[\"${rule.first}\"]`,\n };\n }\n\n /**\n * Capitalize first letter\n */\n private capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n}\n\n/**\n * TemporalTLAGenerator converts temporal properties to TLA+ format\n */\nexport class TemporalTLAGenerator {\n /**\n * Generate TLA+ temporal formulas from properties\n */\n generateTLAProperties(properties: TemporalProperty[]): string[] {\n return properties.map((prop) => this.generateSingleProperty(prop));\n }\n\n /**\n * Generate single TLA+ temporal property\n */\n private generateSingleProperty(prop: TemporalProperty): string {\n const lines: string[] = [];\n\n // Add description\n if (prop.description) {\n lines.push(`\\\\* ${prop.description}`);\n }\n\n // Generate property based on type\n switch (prop.type) {\n case \"eventually\":\n lines.push(`${prop.name} == <>(${prop.target})`);\n break;\n\n case \"always\":\n lines.push(`${prop.name} == [](${prop.target})`);\n break;\n\n case \"step-always\":\n // [][P]_allVars — safety-only step property. P references both\n // unprimed and primed variables to constrain (s,s') pairs. Used\n // by ensures()-as-property: the predicate fires when a message\n // transitions from \"pending\" to \"delivered\" and reads the\n // post-state via contextStates'.\n lines.push(`${prop.name} == [][${prop.target}]_allVars`);\n break;\n\n case \"until\":\n if (prop.trigger) {\n lines.push(`${prop.name} == (${prop.trigger}) U (${prop.target})`);\n }\n break;\n\n case \"implies-eventually\":\n if (prop.trigger) {\n lines.push(`${prop.name} == [](${prop.trigger} => <>(${prop.target}))`);\n }\n break;\n\n case \"implies-next\":\n if (prop.trigger) {\n lines.push(`${prop.name} == [](${prop.trigger} => X(${prop.target}))`);\n }\n break;\n\n case \"order\":\n // For ordering: \"first must happen before second\"\n // Expressed as: always (second => first already happened)\n if (prop.trigger) {\n lines.push(`${prop.name} == [](${prop.trigger} => ${prop.target})`);\n } else {\n // Init-first special case\n lines.push(\n `${prop.name} == [](delivered[\"${prop.target}\"] \\\\/ (\\\\A msg \\\\in MessageTypes \\\\\\\\ {\"${prop.target}\"} : ~delivered[msg]))`\n );\n }\n break;\n }\n\n return lines.join(\"\\n\");\n }\n\n /**\n * Generate PROPERTY declarations for TLA+ config file\n */\n generateConfigProperties(properties: TemporalProperty[]): string[] {\n return properties.map((prop) => `PROPERTY ${prop.name}`);\n }\n\n /**\n * Generate delivered tracking variables for temporal properties\n */\n generateDeliveredVariables(): string {\n return [\n \"\\\\* Track which messages have been delivered (for temporal properties)\",\n \"VARIABLE delivered\",\n \"\",\n \"\\\\* Initially no messages delivered\",\n \"InitDelivered == delivered = [msg \\\\in MessageTypes |-> FALSE]\",\n \"\",\n \"\\\\* Mark message as delivered when processed\",\n \"MarkDelivered(msgType) == delivered' = [delivered EXCEPT ![msgType] = TRUE]\",\n ].join(\"\\n\");\n }\n}\n\n/**\n * Create \"eventually\" property: <>P\n */\nexport function eventually(name: string, description: string, condition: string): TemporalProperty {\n return {\n name,\n description,\n type: \"eventually\",\n target: condition,\n };\n}\n\n/**\n * Create \"always\" property: []P\n */\nexport function always(name: string, description: string, condition: string): TemporalProperty {\n return {\n name,\n description,\n type: \"always\",\n target: condition,\n };\n}\n\n/**\n * Create \"implies eventually\" property: [](P => <>Q)\n */\nexport function impliesEventually(\n name: string,\n description: string,\n trigger: string,\n target: string\n): TemporalProperty {\n return {\n name,\n description,\n type: \"implies-eventually\",\n trigger,\n target,\n };\n}\n\n/**\n * Create ordering property: first before second\n */\nexport function ordering(first: string, second: string, description: string): TemporalProperty {\n return {\n name: `${first}Before${second}`,\n description,\n type: \"order\",\n trigger: `delivered[\"${second}\"]`,\n target: `delivered[\"${first}\"]`,\n };\n}\n\n/**\n * Create request-response property\n */\nexport function requestResponse(request: string, response: string): TemporalProperty {\n return {\n name: `${request}EventuallyGets${response}`,\n description: `Every ${request} eventually gets a ${response}`,\n type: \"implies-eventually\",\n trigger: `delivered[\"${request}\"]`,\n target: `delivered[\"${response}\"]`,\n };\n}\n",
12
12
  "// TLA+ specification generator\n\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport type { MessageHandler } from \"../core/model\";\nimport type { SANYRunner, ValidationResult as SANYValidationResult } from \"../runner/sany\";\nimport type {\n CapabilityConfig,\n CodebaseAnalysis,\n FieldAnalysis,\n FieldConfig,\n StateAssignment,\n SubsystemConfig,\n VerificationCondition,\n VerificationConfig,\n} from \"../types\";\nimport { type Invariant, InvariantExtractor, InvariantGenerator } from \"./invariants\";\nimport type { RoundTripResult, RoundTripValidator } from \"./round-trip\";\nimport { type TemporalProperty, TemporalPropertyGenerator, TemporalTLAGenerator } from \"./temporal\";\nimport type { TLAValidator, ValidationError } from \"./tla-validator\";\n\n/**\n * Validation report from all validators\n */\nexport type ValidationReport = {\n syntaxValidation: {\n passed: boolean;\n errors: ValidationError[];\n };\n sanyValidation: {\n passed: boolean;\n result: SANYValidationResult | null;\n };\n roundTripValidation: {\n passed: boolean;\n result: RoundTripResult | null;\n };\n};\n\n/**\n * Validation error thrown when generation produces invalid TLA+\n */\nexport class TLAValidationError extends Error {\n constructor(\n message: string,\n public readonly report: ValidationReport\n ) {\n super(message);\n this.name = \"TLAValidationError\";\n }\n}\n\nexport class TLAGenerator {\n private lines: string[] = [];\n private indent = 0;\n private extractedInvariants: Invariant[] = [];\n private temporalProperties: TemporalProperty[] = [];\n private symmetrySets: string[] = [];\n // Map from messageType to resolved unique action name (handles collisions)\n private resolvedActionNames: Map<string, string> = new Map();\n // Sanitized payload-field name → TLA+ domain string (e.g. '{\"a\",\"b\"}', '0..N', 'BOOLEAN').\n // Populated by deriveParamDomains() before PayloadType emission. Empty when a parameter\n // cannot be linked to a config.state field — collectPayloadFields falls back to inferFieldType.\n private paramDomains: Map<string, string> = new Map();\n // Tab symmetry state\n private tabSymmetryEnabled: boolean = false;\n private tabCount: number = 0;\n private moduleName: string = \"UserApp\";\n // polly#117: the verification config currently being generated. Stashed\n // by generate() so private helpers can ask `this.hasMeshConfig()` /\n // `this.unchangedUserStates()` without threading the config through\n // every method signature.\n private currentConfig?: VerificationConfig;\n // polly#117: signal-variable-name → mesh document id, for routing\n // signal references in predicates and assignments through the mesh\n // namespace when the config declares a matching docId. Populated by\n // generate() from analysis.meshOrPeerSignals.\n private meshSignalDocs: Map<string, string> = new Map();\n\n /**\n * Create TLA+ generator with optional validators and property generators\n *\n * If validators are provided, generate() will automatically validate\n * the generated spec and throw TLAValidationError if invalid.\n *\n * If enableInvariants or enableTemporalProperties is true, the generator\n * will extract and include these properties in the spec.\n */\n constructor(\n private options?: {\n validator?: TLAValidator;\n sanyRunner?: SANYRunner;\n roundTripValidator?: RoundTripValidator;\n enableInvariants?: boolean;\n enableTemporalProperties?: boolean;\n projectPath?: string; // Required if enableInvariants is true\n }\n ) {}\n\n /**\n * Check if a string is a valid TLA+ identifier\n * TLA+ identifiers must:\n * - Start with a letter (a-zA-Z)\n * - Contain only letters, digits, and underscores\n * - Not be empty\n */\n private isValidTLAIdentifier(s: string): boolean {\n if (!s || s.length === 0) {\n return false;\n }\n // TLA+ identifiers: start with letter, contain only alphanumeric + underscore\n return /^[a-zA-Z][a-zA-Z0-9_]*$/.test(s);\n }\n\n /**\n * Check whether a message type can be represented in the generated TLA+\n * (polly#144). A message type is only ever emitted as a quoted string literal\n * (legal TLA+ for any characters) and sanitized into a `Handle…` action name,\n * so the sole requirement is that it carries at least one letter to anchor\n * that action name. HTTP routes (\"POST /register/options\") and\n * colon-namespaced messages (\"chat:send\") all qualify; only empty,\n * whitespace, or all-symbol strings are genuinely unrepresentable.\n *\n * We also reject strings carrying TS type-expression punctuation\n * (`{}();<>=`) — those are extraction artifacts (e.g. a leaked object-type\n * text like \"{ ok: true; value: t }\"), not real message types.\n */\n private canRepresentAsTLAAction(s: string): boolean {\n return typeof s === \"string\" && /[a-zA-Z]/.test(s) && !/[{}();<>=]/.test(s);\n }\n\n /**\n * Generate TLA+ specification with optional validation\n *\n * If validators were provided in constructor, this method will:\n * 1. Pre-validate inputs\n * 2. Generate spec\n * 3. Fast syntax validation\n * 4. SANY validation (full grammar)\n * 5. Round-trip validation\n *\n * Throws TLAValidationError if validation fails.\n */\n async generate(\n config: VerificationConfig,\n analysis: CodebaseAnalysis,\n moduleName?: string\n ): Promise<{\n spec: string;\n cfg: string;\n validation?: ValidationReport;\n }> {\n if (moduleName) {\n this.moduleName = moduleName;\n }\n\n // polly#117: stash the config + mesh-signal map for downstream\n // helpers. Built once here from analysis.meshOrPeerSignals so we\n // can answer \"is this signal a $meshState document?\" anywhere in\n // the codegen.\n this.currentConfig = config;\n this.meshSignalDocs.clear();\n if (this.hasMeshConfig(config)) {\n const declaredDocs = new Set(Object.keys(config.mesh ?? {}));\n const sigs = (\n analysis as { meshOrPeerSignals?: Array<{ variableName: string; key: string }> }\n ).meshOrPeerSignals;\n if (sigs) {\n for (const s of sigs) {\n if (declaredDocs.has(s.key)) {\n this.meshSignalDocs.set(s.variableName, s.key);\n }\n }\n }\n }\n\n // Pre-validate inputs\n this.validateInputs(config, analysis);\n\n // Extract invariants and temporal properties if enabled\n this.extractInvariantsIfEnabled();\n this.generateTemporalPropertiesIfEnabled(analysis);\n\n // Generate spec and config\n this.lines = [];\n this.indent = 0;\n const spec = this.generateSpec(config, analysis);\n const cfg = this.generateConfig(config);\n\n // If no validators provided, return immediately (backward compatibility)\n if (!this.hasValidators()) {\n return { spec, cfg };\n }\n\n // Perform all validations\n const validation = await this.performAllValidations(spec, config, analysis);\n\n return { spec, cfg, validation };\n }\n\n /**\n * Check if any validators are configured\n */\n private hasValidators(): boolean {\n return !!(\n this.options?.validator ||\n this.options?.sanyRunner ||\n this.options?.roundTripValidator\n );\n }\n\n /**\n * Extract invariants from project if enabled\n */\n private extractInvariantsIfEnabled(): void {\n if (this.options?.enableInvariants && this.options.projectPath) {\n const extractor = new InvariantExtractor();\n const result = extractor.extractInvariants(this.options.projectPath);\n this.extractedInvariants = result.invariants;\n\n if (result.warnings.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\"[DEBUG] Invariant extraction warnings:\");\n for (const warning of result.warnings) {\n console.log(` - ${warning}`);\n }\n }\n }\n }\n\n /**\n * Generate temporal properties if enabled\n */\n private generateTemporalPropertiesIfEnabled(analysis: CodebaseAnalysis): void {\n if (this.options?.enableTemporalProperties) {\n const generator = new TemporalPropertyGenerator();\n this.temporalProperties = generator.generateProperties(analysis);\n }\n }\n\n /**\n * Perform all validations and return report\n */\n private async performAllValidations(\n spec: string,\n config: VerificationConfig,\n analysis: CodebaseAnalysis\n ): Promise<ValidationReport> {\n // Fast syntax validation\n const syntaxErrors = this.performSyntaxValidation(spec);\n\n // SANY validation (full grammar)\n const sanyResult = await this.performSANYValidation(spec);\n\n // Round-trip validation\n const roundTripResult = await this.performRoundTripValidation(config, analysis, spec);\n\n // Build validation report\n const validation: ValidationReport = {\n syntaxValidation: {\n passed: syntaxErrors.length === 0,\n errors: syntaxErrors,\n },\n sanyValidation: {\n passed: sanyResult ? sanyResult.valid : true,\n result: sanyResult,\n },\n roundTripValidation: {\n passed: roundTripResult ? roundTripResult.valid : true,\n result: roundTripResult,\n },\n };\n\n // If any validation failed, throw error\n if (\n !validation.syntaxValidation.passed ||\n !validation.sanyValidation.passed ||\n !validation.roundTripValidation.passed\n ) {\n throw new TLAValidationError(this.buildValidationErrorMessage(validation), validation);\n }\n\n return validation;\n }\n\n /**\n * Perform fast syntax validation\n */\n private performSyntaxValidation(spec: string): ValidationError[] {\n const syntaxErrors: ValidationError[] = [];\n if (this.options?.validator) {\n const moduleErrors = this.options.validator.validateModuleStructure(spec);\n syntaxErrors.push(...moduleErrors);\n }\n return syntaxErrors;\n }\n\n /**\n * Perform SANY validation\n */\n private async performSANYValidation(spec: string): Promise<SANYValidationResult | null> {\n if (!this.options?.sanyRunner) {\n return null;\n }\n\n // Write spec to temp file for SANY\n const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), \"polly-sany-\"));\n const specPath = path.join(tempDir, \"UserApp.tla\");\n fs.writeFileSync(specPath, spec);\n\n try {\n return await this.options.sanyRunner.validateSpec(specPath);\n } finally {\n // Cleanup temp file\n try {\n fs.rmSync(tempDir, { recursive: true });\n } catch {\n // Ignore cleanup errors\n }\n }\n }\n\n /**\n * Perform round-trip validation\n */\n private async performRoundTripValidation(\n config: VerificationConfig,\n analysis: CodebaseAnalysis,\n spec: string\n ): Promise<RoundTripResult | null> {\n if (!this.options?.roundTripValidator) {\n return null;\n }\n\n return await this.options.roundTripValidator.validate(config, analysis, spec);\n }\n\n /**\n * Pre-validate inputs before generation\n */\n private validateInputs(_config: VerificationConfig, analysis: CodebaseAnalysis): void {\n // polly#144: message types are emitted as quoted string literals and\n // sanitized into action names, so non-identifier types (HTTP routes,\n // colon-namespaced messages) are valid. Reject only the genuinely\n // unrepresentable ones — strings with no letter to form an action name.\n for (const messageType of analysis.messageTypes) {\n if (!this.canRepresentAsTLAAction(messageType)) {\n throw new Error(\n `Unrepresentable message type '${messageType}'. A message type must contain at least one letter so it can be sanitized into a TLA+ action name.`\n );\n }\n }\n\n // State field names are sanitized (dots → underscores) during generation,\n // so we don't validate them here as strict TLA+ identifiers\n }\n\n /**\n * Build user-friendly error message from validation report\n */\n private buildValidationErrorMessage(validation: ValidationReport): string {\n const messages: string[] = [\"TLA+ generation validation failed:\"];\n\n this.appendSyntaxErrors(validation, messages);\n this.appendSANYErrors(validation, messages);\n this.appendRoundTripErrors(validation, messages);\n\n return messages.join(\"\\n\");\n }\n\n /**\n * Append syntax validation errors to message array\n */\n private appendSyntaxErrors(validation: ValidationReport, messages: string[]): void {\n if (!validation.syntaxValidation.passed) {\n messages.push(`\\n Syntax errors (${validation.syntaxValidation.errors.length}):`);\n for (const error of validation.syntaxValidation.errors.slice(0, 5)) {\n const location = error.line ? ` at line ${error.line}` : \"\";\n messages.push(` - ${error.message}${location}`);\n }\n if (validation.syntaxValidation.errors.length > 5) {\n messages.push(` ... and ${validation.syntaxValidation.errors.length - 5} more`);\n }\n }\n }\n\n /**\n * Append SANY validation errors to message array\n */\n private appendSANYErrors(validation: ValidationReport, messages: string[]): void {\n if (!validation.sanyValidation.passed && validation.sanyValidation.result) {\n messages.push(\n `\\n SANY validation errors (${validation.sanyValidation.result.errors.length}):`\n );\n for (const error of validation.sanyValidation.result.errors.slice(0, 5)) {\n const location = error.line ? ` at line ${error.line}` : \"\";\n messages.push(` - ${error.message}${location}`);\n if (error.suggestion) {\n messages.push(` Suggestion: ${error.suggestion}`);\n }\n }\n if (validation.sanyValidation.result.errors.length > 5) {\n messages.push(` ... and ${validation.sanyValidation.result.errors.length - 5} more`);\n }\n }\n }\n\n /**\n * Append round-trip validation errors to message array\n */\n private appendRoundTripErrors(validation: ValidationReport, messages: string[]): void {\n if (!validation.roundTripValidation.passed && validation.roundTripValidation.result) {\n messages.push(\n `\\n Round-trip validation errors (${validation.roundTripValidation.result.errors.length}):`\n );\n for (const error of validation.roundTripValidation.result.errors.slice(0, 5)) {\n messages.push(` - ${error.message}`);\n }\n if (validation.roundTripValidation.result.errors.length > 5) {\n messages.push(\n ` ... and ${validation.roundTripValidation.result.errors.length - 5} more`\n );\n }\n }\n }\n\n private generateSpec(config: VerificationConfig, analysis: CodebaseAnalysis): string {\n this.lines = [];\n this.indent = 0;\n\n this.addHeader();\n this.addExtends();\n this.addConstants(config);\n this.addMessageTypes(config, analysis);\n this.addTabSymmetry(config);\n this.addStateType(config, analysis);\n this.addVariables(config);\n\n // Add delivered tracking if temporal properties enabled\n if (this.temporalProperties.length > 0) {\n this.addDeliveredTracking();\n }\n\n this.addInit(config, analysis);\n this.addActions(config, analysis);\n this.addRouteWithHandlers(config, analysis);\n this.addNext(config, analysis);\n this.addSpec();\n this.addInvariants(config, analysis);\n\n // Add temporal properties if enabled\n if (this.temporalProperties.length > 0) {\n this.addTemporalProperties();\n }\n\n // Module-end marker — must be the last line of the spec, AFTER any\n // temporal properties have been emitted.\n this.line(\"=============================================================================\");\n\n return this.lines.join(\"\\n\");\n }\n\n private generateConfig(config: VerificationConfig): string {\n const lines: string[] = [];\n\n this.addConfigHeader(lines);\n this.addBasicConstants(lines, config);\n this.addProjectSpecificConstants(lines, config.messages);\n this.addStateBoundsConstants(lines, config.state);\n this.addInvariantsSection(lines);\n this.addTemporalPropertiesSection(lines);\n this.addConstraintSection(lines);\n this.addSymmetrySection(lines, config);\n\n return lines.join(\"\\n\");\n }\n\n /**\n * Add config file header\n */\n private addConfigHeader(lines: string[]): void {\n lines.push(\"SPECIFICATION UserSpec\");\n lines.push(\"\");\n lines.push(\"\\\\* Constants\");\n lines.push(\"CONSTANTS\");\n }\n\n /**\n * Add basic constants (Contexts, MaxMessages)\n */\n private addBasicConstants(lines: string[], config: VerificationConfig): void {\n lines.push(\" Contexts = {background, content, popup}\");\n lines.push(` MaxMessages = ${config.messages.maxInFlight || 3}`);\n // NULL is a model value used for null/undefined\n lines.push(\" NULL = NULL\");\n\n // Tier 1 Optimization: Per-message bounds\n if (config.messages.perMessageBounds) {\n for (const [msgType, bound] of Object.entries(config.messages.perMessageBounds)) {\n const constName = `MaxMessages_${msgType}`;\n lines.push(` ${constName} = ${bound}`);\n }\n }\n }\n\n /**\n * Add project-specific constants (maxWorkers, maxRenderers, etc.)\n */\n private addProjectSpecificConstants(\n lines: string[],\n messages: VerificationConfig[\"messages\"]\n ): void {\n let hasProjectConstant = false;\n\n if (\"maxWorkers\" in messages && messages.maxWorkers !== undefined) {\n lines.push(` MaxWorkers = ${messages.maxWorkers}`);\n hasProjectConstant = true;\n }\n if (\"maxRenderers\" in messages && messages.maxRenderers !== undefined) {\n lines.push(` MaxRenderers = ${messages.maxRenderers}`);\n hasProjectConstant = true;\n }\n if (\"maxContexts\" in messages && messages.maxContexts !== undefined) {\n lines.push(` MaxContexts = ${messages.maxContexts}`);\n hasProjectConstant = true;\n }\n if (\"maxClients\" in messages && messages.maxClients !== undefined && !hasProjectConstant) {\n lines.push(` MaxClients = ${messages.maxClients}`);\n hasProjectConstant = true;\n }\n\n // Handle tab constants - either model values for symmetry or integer set\n if (this.tabSymmetryEnabled) {\n // Tab symmetry: use model value assignments\n for (let i = 0; i < this.tabCount; i++) {\n lines.push(` Tab${i} = Tab${i}`);\n }\n // Define Tabs as the set of model values\n const tabValues = Array.from({ length: this.tabCount }, (_, i) => `Tab${i}`).join(\", \");\n lines.push(` Tabs = {${tabValues}}`);\n } else if (\n \"maxTabs\" in messages &&\n messages.maxTabs !== undefined &&\n messages.maxTabs !== null\n ) {\n // Standard integer-based tabs with explicit maxTabs\n const tabValues = Array.from({ length: messages.maxTabs + 1 }, (_, i) => i).join(\", \");\n lines.push(` Tabs = {${tabValues}}`);\n } else if (hasProjectConstant) {\n lines.push(\" Tabs = {0}\");\n } else {\n lines.push(\" Tabs = {0, 1}\");\n }\n\n lines.push(\" TimeoutLimit = 3\");\n }\n\n /**\n * Add state bounds constants\n */\n private addStateBoundsConstants(lines: string[], state: VerificationConfig[\"state\"]): void {\n for (const [field, fieldConfig] of Object.entries(state)) {\n if (typeof fieldConfig !== \"object\" || fieldConfig === null) continue;\n\n const constName = this.fieldToConstName(field);\n\n if (\"maxLength\" in fieldConfig && fieldConfig.maxLength !== null) {\n lines.push(` ${constName}_MaxLength = ${fieldConfig.maxLength}`);\n }\n if (\"max\" in fieldConfig && fieldConfig.max !== null) {\n lines.push(` ${constName}_Max = ${fieldConfig.max}`);\n }\n if (\"maxSize\" in fieldConfig && fieldConfig.maxSize !== null) {\n lines.push(` ${constName}_MaxSize = ${fieldConfig.maxSize}`);\n }\n }\n }\n\n /**\n * Add invariants section to config\n */\n private addInvariantsSection(lines: string[]): void {\n lines.push(\"\");\n lines.push(\"\\\\* Invariants to check\");\n lines.push(\"INVARIANTS\");\n lines.push(\" TypeOK\");\n lines.push(\" NoRoutingLoops\");\n lines.push(\" UserStateTypeInvariant\");\n\n for (const inv of this.extractedInvariants) {\n lines.push(` ${inv.name}`);\n }\n }\n\n /**\n * Add temporal properties section to config\n */\n private addTemporalPropertiesSection(lines: string[]): void {\n if (this.temporalProperties.length === 0) return;\n\n lines.push(\"\");\n lines.push(\"\\\\* Temporal properties to check\");\n lines.push(\"PROPERTIES\");\n for (const prop of this.temporalProperties) {\n lines.push(` ${prop.name}`);\n }\n }\n\n /**\n * Add constraint section to config\n */\n private addConstraintSection(lines: string[]): void {\n lines.push(\"\");\n lines.push(\"\\\\* State constraint\");\n lines.push(\"CONSTRAINT\");\n lines.push(\" StateConstraint\");\n }\n\n /**\n * Add symmetry section to config for Tier 1 optimization\n *\n * IMPORTANT (Issue #16): TLA+ config files only support ONE SYMMETRY declaration.\n * this.symmetrySets should only contain one element after addSymmetrySets() processes\n * the configuration (either a single group or a combined set).\n */\n private addSymmetrySection(lines: string[], _config: VerificationConfig): void {\n if (!this.symmetrySets || this.symmetrySets.length === 0) {\n return;\n }\n\n // Defensive assertion: TLA+ only allows one SYMMETRY declaration\n if (this.symmetrySets.length > 1) {\n throw new Error(\n `Internal error: TLA+ config files only support ONE SYMMETRY declaration (Issue #16), ` +\n `but ${this.symmetrySets.length} sets were prepared. This should have been handled in addSymmetrySets().`\n );\n }\n\n lines.push(\"\");\n lines.push(\"\\\\* Symmetry sets for state space reduction\");\n for (const setName of this.symmetrySets) {\n lines.push(`SYMMETRY ${setName}`);\n }\n }\n\n private addHeader(): void {\n this.line(`------------------------- MODULE ${this.moduleName} -------------------------`);\n this.line(\"(*\");\n this.line(\" Auto-generated TLA+ specification for web extension\");\n this.line(\" \");\n this.line(\" Generated from:\");\n this.line(\" - TypeScript type definitions\");\n this.line(\" - Verification configuration\");\n this.line(\" \");\n this.line(\" This spec extends MessageRouter with:\");\n this.line(\" - Application-specific state types\");\n this.line(\" - Message type definitions\");\n this.line(\" - State transition actions\");\n this.line(\"*)\");\n this.line(\"\");\n }\n\n private addExtends(): void {\n this.line(\"EXTENDS MessageRouter\");\n this.line(\"\");\n }\n\n private addConstants(config: VerificationConfig): void {\n // MessageRouter already defines: Contexts, MaxMessages, Tabs, TimeoutLimit\n // We add application-specific constants and per-message bounds constants\n // NULL is always needed for null/undefined value representation\n\n const hasStateConstants = this.hasCustomConstants(config.state);\n const hasPerMessageBounds =\n config.messages.perMessageBounds && Object.keys(config.messages.perMessageBounds).length > 0;\n\n this.line(\"\\\\* Application-specific constants\");\n this.line(\"CONSTANTS\");\n this.indent++;\n\n // NULL is always needed - used for null/undefined values in state\n this.line(\"NULL\");\n\n // Add state-related constants (NULL was already added, so start with comma)\n if (hasStateConstants) {\n this.generateConstantDeclarations(config.state, false);\n }\n\n // Add per-message bounds constants (Tier 1 optimization)\n if (hasPerMessageBounds && config.messages.perMessageBounds) {\n for (const [msgType, _bound] of Object.entries(config.messages.perMessageBounds)) {\n const constName = `MaxMessages_${msgType}`;\n this.line(`,${constName}`);\n }\n }\n\n this.indent--;\n this.line(\"\");\n }\n\n /**\n * Check if config has any custom constants\n */\n private hasCustomConstants(state: VerificationConfig[\"state\"]): boolean {\n return Object.values(state).some((fieldConfig) => {\n if (typeof fieldConfig !== \"object\" || fieldConfig === null) return false;\n return (\n (\"maxLength\" in fieldConfig && fieldConfig.maxLength !== null) ||\n (\"max\" in fieldConfig && fieldConfig.max !== null) ||\n (\"maxSize\" in fieldConfig && fieldConfig.maxSize !== null)\n );\n });\n }\n\n /**\n * Generate constant declarations for all state fields\n * @param state - State configuration\n * @param firstConstant - Whether this is the first constant (no comma prefix)\n */\n private generateConstantDeclarations(\n state: VerificationConfig[\"state\"],\n firstConstant = true\n ): void {\n let first = firstConstant;\n\n for (const [field, fieldConfig] of Object.entries(state)) {\n if (typeof fieldConfig !== \"object\" || fieldConfig === null) continue;\n\n const constName = this.fieldToConstName(field);\n first = this.addFieldConstants(field, fieldConfig, constName, first);\n }\n }\n\n /**\n * Add constants for a single field\n */\n private addFieldConstants(\n field: string,\n fieldConfig: Record<string, unknown>,\n constName: string,\n first: boolean\n ): boolean {\n let isFirst = first;\n\n if (\"maxLength\" in fieldConfig && fieldConfig[\"maxLength\"] !== null) {\n this.line(`${isFirst ? \"\" : \",\"}${constName}_MaxLength \\\\* Max length for ${field}`);\n isFirst = false;\n }\n if (\"max\" in fieldConfig && fieldConfig[\"max\"] !== null) {\n this.line(`${isFirst ? \"\" : \",\"}${constName}_Max \\\\* Max value for ${field}`);\n isFirst = false;\n }\n if (\"maxSize\" in fieldConfig && fieldConfig[\"maxSize\"] !== null) {\n this.line(`${isFirst ? \"\" : \",\"}${constName}_MaxSize \\\\* Max size for ${field}`);\n isFirst = false;\n }\n\n return isFirst;\n }\n\n private addStateType(config: VerificationConfig, _analysis: CodebaseAnalysis): void {\n // Define Value type for generic sequences and maps\n this.defineValueTypes();\n\n // Generate State type definition\n this.line(\"\\\\* Application state type definition\");\n this.line(\"State == [\");\n this.indent++;\n\n const stateFields = this.collectStateFields(config, _analysis);\n this.writeStateFields(stateFields);\n\n this.indent--;\n this.line(\"]\");\n this.line(\"\");\n\n // polly#117: mesh document types and initial value\n this.addMeshTypes(config);\n }\n\n /**\n * polly#117: emit `MeshDocs` set, per-doc record types, and the\n * initial mesh-state record. Gated on `config.mesh`.\n *\n * MeshDocs == {\"todos\", \"presence\"}\n * MeshDoc_todos == [entries: 0..3]\n * MeshDoc_presence == [online: BOOLEAN]\n * InitialMesh == [\n * todos |-> [entries |-> 0],\n * presence |-> [online |-> FALSE]\n * ]\n */\n private addMeshTypes(config: VerificationConfig): void {\n const mesh = config.mesh;\n if (!mesh || Object.keys(mesh).length === 0) return;\n const docIds = Object.keys(mesh).sort();\n\n this.line(\"\\\\* polly#117: declared $meshState documents\");\n this.line(`MeshDocs == {${docIds.map((d) => `\"${d}\"`).join(\", \")}}`);\n this.line(\"\");\n\n for (const docId of docIds) {\n const fields = mesh[docId];\n if (!fields) continue;\n const fieldLines: string[] = [];\n for (const [fieldName, fieldConfig] of Object.entries(fields)) {\n const tlaType = this.fieldConfigToTLAType(\n `${docId}_${fieldName}`,\n fieldConfig as FieldConfig,\n config\n );\n fieldLines.push(`${this.sanitizeFieldName(fieldName)}: ${tlaType}`);\n }\n this.line(`\\\\* Document type for ${docId}`);\n // The docId is sanitised into a valid TLA+ identifier here —\n // docIds routinely contain `-`/`:` (e.g. \"mesh:devices\") which\n // are illegal in an identifier but fine as the string keys used\n // everywhere else (MeshDocs, meshState[ctx][docId]).\n this.line(`MeshDoc_${this.sanitizeIdentifier(docId)} == [${fieldLines.join(\", \")}]`);\n this.line(\"\");\n }\n\n // InitialMesh is a FUNCTION over MeshDocs, not a record: docIds are\n // string keys, and TLA+ record fields must be identifiers. Per-doc\n // shapes differ, so each is selected by a CASE arm.\n this.line(\"\\\\* Initial mesh-document values — a function keyed by docId\");\n this.line(\"InitialMesh ==\");\n this.indent++;\n this.line(\"[d \\\\in MeshDocs |->\");\n this.indent++;\n const caseArms: string[] = [];\n for (const docId of docIds) {\n const fields = mesh[docId];\n if (!fields) continue;\n const inner: string[] = [];\n for (const [fieldName, fieldConfig] of Object.entries(fields)) {\n const initVal = this.fieldConfigInitialValue(\n `${docId}_${fieldName}`,\n fieldConfig as FieldConfig,\n config\n );\n inner.push(`${this.sanitizeFieldName(fieldName)} |-> ${initVal}`);\n }\n caseArms.push(`d = \"${docId}\" -> [${inner.join(\", \")}]`);\n }\n caseArms.forEach((arm, i) => {\n const prefix = i === 0 ? \"CASE \" : \" [] \";\n const suffix = i === caseArms.length - 1 ? \"]\" : \"\";\n this.line(prefix + arm + suffix);\n });\n this.indent -= 2;\n this.line(\"\");\n }\n\n /**\n * Make an arbitrary key safe to embed inside a TLA+ identifier:\n * replace every character that is not a letter, digit, or\n * underscore. Used for docIds, which are free-form strings.\n */\n private sanitizeIdentifier(key: string): string {\n return key.replace(/[^A-Za-z0-9_]/g, \"_\");\n }\n\n /**\n * Pick a representative initial value from a FieldConfig — used to\n * seed each mesh document's record at Init time. Mirrors the choices\n * the existing `writeInitialStateFields` makes for local state.\n */\n private fieldConfigInitialValue(\n _path: string,\n fieldConfig: FieldConfig,\n _config: VerificationConfig\n ): string {\n return (\n this.typedFieldInitialValue(fieldConfig) ??\n this.legacyValuesInitialValue(fieldConfig) ??\n '\"v1\"'\n );\n }\n\n /** Initial value for the `type`-discriminated FieldConfig variants. */\n private typedFieldInitialValue(fieldConfig: FieldConfig): string | undefined {\n if (!(\"type\" in fieldConfig)) return undefined;\n switch (fieldConfig.type) {\n case \"boolean\":\n return \"FALSE\";\n case \"number\":\n return String(typeof fieldConfig.min === \"number\" ? fieldConfig.min : 0);\n case \"enum\": {\n const values = fieldConfig.values;\n if (Array.isArray(values) && values.length > 0) return `\"${String(values[0])}\"`;\n return undefined;\n }\n case \"string\":\n return typeof fieldConfig.initial === \"string\" ? `\"${fieldConfig.initial}\"` : '\"\"';\n case \"array\":\n return \"<<>>\";\n default:\n return undefined;\n }\n }\n\n /** Initial value for the legacy `{ values: [...] }` FieldConfig shape. */\n private legacyValuesInitialValue(fieldConfig: FieldConfig): string | undefined {\n if (!(\"values\" in fieldConfig) || !Array.isArray(fieldConfig.values)) return undefined;\n const [first] = fieldConfig.values;\n return first === undefined ? undefined : `\"${first}\"`;\n }\n\n private defineValueTypes(): void {\n this.line(\"\\\\* Generic value type for sequences and maps\");\n this.line(\"\\\\* Bounded to 2 values to reduce state space (2^n vs 3^n)\");\n this.line('Value == {\"v1\", \"v2\"}');\n this.line(\"\");\n\n this.line(\"\\\\* Generic key type for maps\");\n this.line(\"\\\\* Bounded to allow model checking\");\n this.line('Keys == {\"k1\", \"k2\"}');\n this.line(\"\");\n }\n\n private collectStateFields(config: VerificationConfig, _analysis: CodebaseAnalysis): string[] {\n const stateFields: string[] = [];\n\n // Add fields from config.state (with recursive flattening for nested objects)\n for (const [fieldPath, fieldConfig] of Object.entries(config.state)) {\n if (typeof fieldConfig !== \"object\" || fieldConfig === null) continue;\n\n // Recursively collect fields from nested configurations\n this.collectNestedFields(fieldPath, fieldConfig, config, stateFields);\n }\n\n // Add fields from analysis\n for (const fieldAnalysis of _analysis.fields) {\n if (!fieldAnalysis.path || typeof fieldAnalysis.path !== \"string\") continue;\n\n const fieldName = this.sanitizeFieldName(fieldAnalysis.path);\n if (stateFields.some((f) => f.startsWith(`${fieldName}:`))) continue;\n\n const tlaType = this.inferTLATypeFromAnalysis(fieldAnalysis);\n stateFields.push(`${fieldName}: ${tlaType}`);\n }\n\n return stateFields;\n }\n\n /**\n * Recursively collect fields from nested configurations, flattening nested objects\n */\n private collectNestedFields(\n prefix: string,\n fieldConfig: FieldConfig,\n config: VerificationConfig,\n stateFields: string[]\n ): void {\n // Check if this is a leaf field (has a type we can translate)\n const tlaType = this.fieldConfigToTLAType(prefix, fieldConfig, config);\n\n // If we got a non-default type or this config has type indicators, it's a leaf field\n if (tlaType !== \"Value\" || this.hasTypeIndicators(fieldConfig)) {\n const fieldName = this.sanitizeFieldName(prefix);\n stateFields.push(`${fieldName}: ${tlaType}`);\n return;\n }\n\n // Otherwise, it's a nested object - recurse into its properties\n for (const [key, value] of Object.entries(fieldConfig)) {\n if (typeof value !== \"object\" || value === null) continue;\n\n // Skip special keys that aren't nested state fields\n if (key === \"item\" || key === \"element\") {\n // These are array element configs, not nested state\n continue;\n }\n\n const nestedPath = `${prefix}_${key}`;\n this.collectNestedFields(nestedPath, value as unknown as FieldConfig, config, stateFields);\n }\n }\n\n /**\n * Check if a field config has type indicators (not just nested structure)\n */\n private hasTypeIndicators(fieldConfig: FieldConfig): boolean {\n return (\n \"type\" in fieldConfig ||\n \"values\" in fieldConfig ||\n \"maxLength\" in fieldConfig ||\n \"min\" in fieldConfig ||\n \"max\" in fieldConfig ||\n \"maxSize\" in fieldConfig ||\n \"abstract\" in fieldConfig\n );\n }\n\n private writeStateFields(fields: string[]): void {\n if (fields.length === 0) {\n this.line(\"dummy: BOOLEAN \\\\* Placeholder for empty state\");\n return;\n }\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i];\n const suffix = i < fields.length - 1 ? \",\" : \"\";\n this.line(`${field}${suffix}`);\n }\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Complex filtering logic needed for optimization\n private addMessageTypes(config: VerificationConfig, analysis: CodebaseAnalysis): void {\n if (analysis.messageTypes.length === 0) {\n // No message types found, skip\n return;\n }\n\n // Debug: Log the config.messages object\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\"[DEBUG] [TLAGenerator] Full config keys:\", Object.keys(config));\n console.log(\n \"[DEBUG] [TLAGenerator] config.messages:\",\n JSON.stringify(config.messages, null, 2)\n );\n console.log(\"[DEBUG] [TLAGenerator] config.messages.include:\", config.messages.include);\n console.log(\"[DEBUG] [TLAGenerator] config.messages.exclude:\", config.messages.exclude);\n console.log(\"[DEBUG] [TLAGenerator] analysis.messageTypes:\", analysis.messageTypes);\n }\n\n // polly#144: keep every representable message type. The type is emitted\n // below as a quoted string literal (TLA-safe for routes/colon names) and\n // sanitized into an action name elsewhere; only drop the unrepresentable\n // ones (no letter to anchor an action name).\n let validMessageTypes: string[] = [];\n const invalidMessageTypes: string[] = [];\n\n for (const msgType of analysis.messageTypes) {\n if (this.canRepresentAsTLAAction(msgType)) {\n validMessageTypes.push(msgType);\n } else {\n invalidMessageTypes.push(msgType);\n }\n }\n\n // Log warnings about unrepresentable message types\n if (invalidMessageTypes.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[WARN] [TLAGenerator] Dropped ${invalidMessageTypes.length} unrepresentable message type(s):`\n );\n for (const invalid of invalidMessageTypes) {\n console.log(`[WARN] - \"${invalid}\" (no letter to form a TLA+ action name)`);\n }\n }\n\n // Debug: Log message types before filtering\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] [TLAGenerator] Valid message types before filtering (${validMessageTypes.length}):`,\n validMessageTypes\n );\n }\n\n // Apply Tier 1 Optimization: Message filtering (Issue #12)\n const originalCount = validMessageTypes.length;\n const filteredOut: string[] = [];\n\n // Debug: Check if config.messages.include is accessible\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\"[DEBUG] [TLAGenerator] Checking filter conditions:\");\n console.log(\"[DEBUG] - config.messages.include exists:\", !!config.messages.include);\n console.log(\n \"[DEBUG] - config.messages.include.length:\",\n config.messages.include?.length ?? \"N/A\"\n );\n console.log(\n \"[DEBUG] - First condition result:\",\n !!(config.messages.include && config.messages.include.length > 0)\n );\n }\n\n if (config.messages.include && config.messages.include.length > 0) {\n // Include mode: only keep specified message types\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\"[DEBUG] [TLAGenerator] Entering include mode filtering\");\n }\n const included = new Set(config.messages.include);\n const beforeFilter = validMessageTypes;\n validMessageTypes = validMessageTypes.filter((msg) => included.has(msg));\n filteredOut.push(...beforeFilter.filter((msg) => !included.has(msg)));\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\"[DEBUG] [TLAGenerator] After include filtering:\");\n console.log(\"[DEBUG] - validMessageTypes:\", validMessageTypes);\n console.log(\"[DEBUG] - filteredOut:\", filteredOut);\n }\n } else if (config.messages.exclude && config.messages.exclude.length > 0) {\n // Exclude mode: filter out specified message types\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\"[DEBUG] [TLAGenerator] Entering exclude mode filtering\");\n }\n const excluded = new Set(config.messages.exclude);\n const beforeFilter = validMessageTypes;\n validMessageTypes = validMessageTypes.filter((msg) => !excluded.has(msg));\n filteredOut.push(...beforeFilter.filter((msg) => excluded.has(msg)));\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\"[DEBUG] [TLAGenerator] After exclude filtering:\");\n console.log(\"[DEBUG] - validMessageTypes:\", validMessageTypes);\n console.log(\"[DEBUG] - filteredOut:\", filteredOut);\n }\n } else if (process.env[\"POLLY_DEBUG\"]) {\n // Debug: Log when no filtering is applied\n console.log(\"[DEBUG] [TLAGenerator] No include/exclude filtering applied\");\n console.log(\"[DEBUG] - Reason: Neither include nor exclude conditions met\");\n }\n\n // Log message filtering optimization\n if (filteredOut.length > 0) {\n const filterMode = config.messages.include ? \"include\" : \"exclude\";\n console.log(\n `[INFO] [TLAGenerator] Message filtering (${filterMode}): ${originalCount} → ${validMessageTypes.length} message types`\n );\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[INFO] Filtered out: ${filteredOut.join(\", \")}`);\n }\n } else if (config.messages.include || config.messages.exclude) {\n // If we have filters but nothing was filtered out, that's suspicious\n console.log(\"[WARN] [TLAGenerator] Message filters configured but no types were filtered\");\n }\n\n if (validMessageTypes.length === 0) {\n // No valid message types, skip\n return;\n }\n\n this.line(\"\\\\* Message types from application\");\n const messageTypeSet = validMessageTypes.map((t) => `\"${t}\"`).join(\", \");\n this.line(`UserMessageTypes == {${messageTypeSet}}`);\n this.line(\"\");\n\n // Apply Tier 1 Optimization: Symmetry reduction\n if (config.messages.symmetry && config.messages.symmetry.length > 0) {\n this.addSymmetrySets(config.messages.symmetry, validMessageTypes);\n }\n }\n\n /**\n * Add symmetry set definitions for Tier 1 optimization\n *\n * IMPORTANT: TLA+ config files only support ONE SYMMETRY declaration (Issue #16).\n * However, we can achieve independent symmetry groups by using the union of permutations:\n * Symmetry == Permutations(Set1) \\cup Permutations(Set2)\n *\n * This is the standard approach used in real TLA+ specs (e.g., Paxos, SimpleAllocator).\n * It preserves independent group semantics while using a single SYMMETRY declaration.\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: branches reflect distinct symmetry-group cases\n private addSymmetrySets(symmetryGroups: string[][], validMessageTypes: string[]): void {\n const validTypes = new Set(validMessageTypes);\n\n this.line(\"\\\\* Symmetry sets for state space reduction (Tier 1 optimization)\");\n\n // Collect all valid symmetry groups\n const validSymmetryGroups: string[][] = [];\n\n for (let i = 0; i < symmetryGroups.length; i++) {\n const group = symmetryGroups[i];\n if (!group || group.length < 2) continue;\n\n // Filter to only valid message types in this group\n const validGroupTypes = group.filter((t) => validTypes.has(t));\n if (validGroupTypes.length < 2) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[WARN] [TLAGenerator] Symmetry group ${i + 1} has < 2 valid types, skipping`\n );\n }\n continue;\n }\n\n validSymmetryGroups.push(validGroupTypes);\n }\n\n // If no valid symmetry groups, return early\n if (validSymmetryGroups.length === 0) {\n return;\n }\n\n // Generate individual symmetry set definitions\n for (let i = 0; i < validSymmetryGroups.length; i++) {\n const group = validSymmetryGroups[i];\n if (!group) continue;\n const setName = `SymmetrySet${i + 1}`;\n const setValues = group.map((t) => `\"${t}\"`).join(\", \");\n this.line(`${setName} == {${setValues}}`);\n }\n\n this.line(\"\");\n\n // Use union of Permutations for independent symmetry groups\n // This is the standard approach used in Paxos, SimpleAllocator, etc.\n if (validSymmetryGroups.length > 1) {\n this.line(\"\\\\* Independent symmetry groups via union of permutations\");\n this.line(\"\\\\* Standard TLA+ pattern (see: Paxos, SimpleAllocator)\");\n const permutationsUnion = validSymmetryGroups\n .map((_, i) => `Permutations(SymmetrySet${i + 1})`)\n .join(\" \\\\cup \");\n this.line(`Symmetry == ${permutationsUnion}`);\n\n console.log(\n `[INFO] [TLAGenerator] Symmetry reduction: ${validSymmetryGroups.length} independent symmetry groups ` +\n `(${validSymmetryGroups.map((g) => g.length).join(\", \")} message types)`\n );\n } else {\n // Single symmetry group\n this.line(`Symmetry == Permutations(SymmetrySet1)`);\n const onlyGroup = validSymmetryGroups[0];\n console.log(\n `[INFO] [TLAGenerator] Symmetry reduction: 1 symmetry group with ${onlyGroup?.length ?? 0} message types`\n );\n }\n\n // Store \"Symmetry\" for config generation (single identifier)\n this.symmetrySets = [\"Symmetry\"];\n\n this.line(\"\");\n }\n\n /**\n * Add tab symmetry definitions for Tier 1 optimization\n *\n * When tabSymmetry is enabled, tabs are represented as model values instead of integers.\n * This enables TLC's symmetry optimization to reduce state space significantly.\n *\n * Generates:\n * CONSTANTS Tab0, Tab1, ... (in spec)\n * Tabs == {Tab0, Tab1, ...}\n * TabSymmetry == Permutations(Tabs)\n *\n * If combined with message symmetry, also generates:\n * AllSymmetry == Symmetry \\cup TabSymmetry\n */\n private addTabSymmetry(config: VerificationConfig): void {\n if (!config.messages.tabSymmetry) {\n return;\n }\n\n const maxTabs = config.messages.maxTabs ?? 1;\n this.tabCount = maxTabs + 1; // 0..maxTabs = maxTabs+1 values\n this.tabSymmetryEnabled = true;\n\n this.line(\"\\\\* Tab symmetry constants for state space reduction (Tier 1 optimization)\");\n this.line(\"CONSTANTS\");\n this.indent++;\n\n // Generate Tab0, Tab1, ..., TabN constants\n const tabConstants: string[] = [];\n for (let i = 0; i <= maxTabs; i++) {\n tabConstants.push(`Tab${i}`);\n }\n this.line(tabConstants.join(\", \"));\n this.indent--;\n this.line(\"\");\n\n // Tabs is a CONSTANT in MessageRouter.tla, assigned via config file as {Tab0, Tab1, ...}\n\n // Generate TabSymmetry permutations\n this.line(\"TabSymmetry == Permutations(Tabs)\");\n this.line(\"\");\n\n // Check if we need to combine with message symmetry\n const hasMessageSymmetry = this.symmetrySets.length > 0 && this.symmetrySets[0] === \"Symmetry\";\n\n if (hasMessageSymmetry) {\n // Combine both symmetries using union\n this.line(\"\\\\* Combined symmetry: message types and tabs\");\n this.line(\"AllSymmetry == Symmetry \\\\cup TabSymmetry\");\n this.line(\"\");\n // Update symmetrySets to use the combined set\n this.symmetrySets = [\"AllSymmetry\"];\n console.log(\n `[INFO] [TLAGenerator] Combined symmetry: message symmetry + ${this.tabCount} tabs as model values`\n );\n } else {\n // Tab symmetry only\n this.symmetrySets = [\"TabSymmetry\"];\n console.log(\n `[INFO] [TLAGenerator] Tab symmetry enabled: ${this.tabCount} tabs as model values`\n );\n }\n }\n\n private addVariables(config?: VerificationConfig): void {\n // MessageRouter already defines: ports, messages, pendingRequests, delivered, routingDepth, time\n // We add: contextStates for application state, payload for message payload\n\n const hasMesh = this.hasMeshConfig(config);\n\n this.line(\"\\\\* Application state per context\");\n this.line(\"VARIABLE contextStates\");\n this.line(\"\");\n if (hasMesh) {\n this.line(\"\\\\* polly#117: per-context mesh document replicas. Each context\");\n this.line(\"\\\\* carries an independent record per declared $meshState document.\");\n this.line(\"\\\\* The PropagateMeshOp action diffuses values between contexts to\");\n this.line(\"\\\\* model Automerge sync, and predicate references to mesh-tagged\");\n this.line(\"\\\\* signals route through this variable instead of contextStates.\");\n this.line(\"VARIABLE meshState\");\n this.line(\"\");\n }\n this.line(\"\\\\* Message payload (abstract model - non-deterministically chosen)\");\n this.line(\"\\\\* In verification, we model payload fields as potentially any valid value\");\n this.line(\"VARIABLE payload\");\n this.line(\"\");\n this.line(\"\\\\* All variables (extending MessageRouter vars)\");\n const allVarsList = hasMesh\n ? \"ports, messages, pendingRequests, delivered, routingDepth, time, contextStates, meshState, payload\"\n : \"ports, messages, pendingRequests, delivered, routingDepth, time, contextStates, payload\";\n this.line(`allVars == <<${allVarsList}>>`);\n this.line(\"\");\n }\n\n /** polly#117: true iff the config declares at least one mesh document. */\n private hasMeshConfig(config?: VerificationConfig): boolean {\n const c = config ?? this.currentConfig;\n return !!c?.mesh && Object.keys(c.mesh).length > 0;\n }\n\n /**\n * Build the user-state variable list. With `config.mesh` declared,\n * `meshState` is the second user-state variable alongside\n * `contextStates`; without it, just `contextStates`. Used by every\n * UNCHANGED clause emitted by handler and router actions so that\n * the spec's variable footprint matches the declared schema.\n */\n private userStateVars(config?: VerificationConfig): string[] {\n return this.hasMeshConfig(config) ? [\"contextStates\", \"meshState\"] : [\"contextStates\"];\n }\n\n /**\n * Format an `UNCHANGED` clause that preserves both user-state\n * variables (or just `contextStates` in the legacy case) plus any\n * additional MessageRouter variables that should remain unchanged.\n */\n private unchangedUserStates(config?: VerificationConfig, andOthers: string[] = []): string {\n const all = [...andOthers, ...this.userStateVars(config)];\n return all.length === 1 ? `UNCHANGED ${all[0]}` : `UNCHANGED <<${all.join(\", \")}>>`;\n }\n\n private addInit(config: VerificationConfig, _analysis: CodebaseAnalysis): void {\n // Resolve param→state-field domain links before PayloadType emits so payload\n // fields are typed by the modeled state field's declared domain (issue #72).\n this.deriveParamDomains(config, _analysis);\n\n // Generate InitialState first\n this.line(\"\\\\* Initial application state\");\n this.line(\"InitialState == [\");\n this.indent++;\n\n const fields = this.collectInitialStateFields(config, _analysis);\n this.writeInitialStateFields(fields);\n\n this.indent--;\n this.line(\"]\");\n this.line(\"\");\n\n // Payload type definition - includes handler parameter names for tracing\n const payloadFields = this.collectPayloadFields(_analysis);\n const payloadFieldDefs = payloadFields\n .map((f) => `${this.sanitizeFieldName(f.name)}: ${f.type}`)\n .join(\", \");\n this.line(`\\\\* Payload modeled with fields: ${payloadFields.map((f) => f.name).join(\", \")}`);\n this.line(`PayloadType == [${payloadFieldDefs}]`);\n this.line(\"\");\n\n // Init extends MessageRouter's Init\n this.line(\"\\\\* Initial state (extends MessageRouter)\");\n this.line(\"UserInit ==\");\n this.indent++;\n this.line(\"/\\\\ Init \\\\* MessageRouter's init\");\n this.line(\"/\\\\ contextStates = [c \\\\in Contexts |-> InitialState]\");\n if (this.hasMeshConfig(config)) {\n this.line(\"/\\\\ meshState = [c \\\\in Contexts |-> InitialMesh]\");\n }\n this.line(\"/\\\\ payload \\\\in PayloadType \\\\* Non-deterministic initial payload\");\n this.indent--;\n this.line(\"\");\n }\n\n private static readonly PAYLOAD_EXCLUDED = new Set([\n \"state\",\n \"msg\",\n \"message\",\n \"event\",\n \"ctx\",\n \"context\",\n ]);\n private static readonly BOOL_PARAM_PATTERN = /^(is|has|should|can|will|did)[A-Z]/;\n private static readonly NUMERIC_PAYLOAD_PATTERN =\n /payload\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*[><=!]+\\s*\\d/;\n private static readonly PAYLOAD_REF_PATTERN = /payload\\.([a-zA-Z_][a-zA-Z0-9_]*)/g;\n\n private static inferFieldType(name: string): \"Value\" | \"BOOLEAN\" {\n return TLAGenerator.BOOL_PARAM_PATTERN.test(name) ? \"BOOLEAN\" : \"Value\";\n }\n\n /**\n * Build a flat map (sanitized field name → FieldConfig) for O(1) lookup against\n * StateAssignment.field. Mirrors collectNestedInitialValues' join-with-\"_\" recursion\n * (tla.ts:1247-1271) so keys match what the extractor emits at\n * tools/analysis/src/extract/handlers.ts:1552 for nested writes like user.role → user_role.\n */\n private flattenStateConfig(config: VerificationConfig): Map<string, FieldConfig> {\n const out = new Map<string, FieldConfig>();\n const recurse = (prefix: string, fc: FieldConfig): void => {\n if (this.hasTypeIndicators(fc)) {\n out.set(this.sanitizeFieldName(prefix), fc);\n return;\n }\n for (const [key, value] of Object.entries(fc)) {\n if (typeof value !== \"object\" || value === null) continue;\n if (key === \"item\" || key === \"element\") continue;\n recurse(`${prefix}_${key}`, value as unknown as FieldConfig);\n }\n };\n for (const [fieldPath, fc] of Object.entries(config.state)) {\n if (typeof fc !== \"object\" || fc === null) continue;\n recurse(fieldPath, fc);\n }\n return out;\n }\n\n /**\n * Walk every handler assignment whose value is \"param:<name>\" and resolve <name>\n * to a TLA+ domain by looking up the assignment.field in the flattened state config.\n * Populates this.paramDomains so collectPayloadFields can type the payload field by\n * the modeled state field's declared domain (enum, bounded number, BOOLEAN).\n *\n * On miss (no matching state field, or field config maps to \"Value\"): leaves the\n * entry absent — collectPayloadFields falls back to the existing name-based heuristic.\n *\n * On conflict (same param name written into state fields with different TLA+ domains):\n * throws with a precise error naming both handlers and both fields. Silent fallback to\n * \"Value\" would re-introduce the bug this method exists to fix.\n */\n private deriveParamDomains(config: VerificationConfig, analysis: CodebaseAnalysis): void {\n this.paramDomains.clear();\n const fieldMap = this.flattenStateConfig(config);\n const provenance = new Map<string, { msg: string; field: string; domain: string }>();\n for (const handler of analysis.handlers) {\n for (const a of handler.assignments ?? []) {\n this.recordParamDomain(handler.messageType, a, fieldMap, provenance, config);\n }\n }\n }\n\n /** Process a single assignment for param:X markers and update paramDomains. */\n private recordParamDomain(\n messageType: string,\n a: StateAssignment,\n fieldMap: Map<string, FieldConfig>,\n provenance: Map<string, { msg: string; field: string; domain: string }>,\n config: VerificationConfig\n ): void {\n if (typeof a.value !== \"string\" || !a.value.startsWith(\"param:\")) return;\n const paramName = this.sanitizeFieldName(a.value.substring(6));\n const fieldKey = this.sanitizeFieldName(a.field);\n const fc = fieldMap.get(fieldKey);\n if (!fc) return;\n const tlaType = this.fieldConfigToTLAType(fieldKey, fc, config);\n if (tlaType === \"Value\") return;\n const prior = provenance.get(paramName);\n if (prior && prior.domain !== tlaType) {\n throw new Error(\n `PayloadType conflict: parameter \"${paramName}\" is written to multiple state fields with incompatible TLA+ domains.\\n` +\n ` - Handler \"${prior.msg}\" assigns it to field \"${prior.field}\" with domain ${prior.domain}\\n` +\n ` - Handler \"${messageType}\" assigns it to field \"${a.field}\" with domain ${tlaType}\\n` +\n `Either rename one parameter, split the handlers across subsystems, or set both fields to the same domain in your verification config.`\n );\n }\n this.paramDomains.set(paramName, tlaType);\n provenance.set(paramName, { msg: messageType, field: a.field, domain: tlaType });\n }\n\n private collectPayloadFields(analysis: CodebaseAnalysis): { name: string; type: string }[] {\n const fields = new Map<string, string>();\n for (const f of [\"id\", \"text\", \"userId\"]) fields.set(f, \"Value\");\n // Config-derived param domains are always emitted, regardless of whether the\n // bare param name appears in handler.parameters. Real-world extractors often\n // record the outer arg name (e.g. \"payload\") in parameters while the linked\n // param name (e.g. \"theme\") only appears inside `param:X` assignment markers.\n for (const [name, domain] of this.paramDomains) {\n fields.set(name, domain);\n }\n for (const handler of analysis.handlers) {\n this.addHandlerParams(handler.parameters, fields);\n this.addPayloadRefsFromHandler(handler, fields);\n }\n return Array.from(fields.entries()).map(([name, type]) => ({ name, type }));\n }\n\n private addHandlerParams(params: string[] | undefined, fields: Map<string, string>): void {\n if (!params) return;\n for (const param of params) {\n if (TLAGenerator.PAYLOAD_EXCLUDED.has(param)) continue;\n const sanitized = this.sanitizeFieldName(param);\n const configDomain = this.paramDomains.get(sanitized);\n if (configDomain) {\n // Config-derived domain wins, even if a name-based heuristic already set this entry.\n // It is strictly more precise (named enum vs catch-all Value/BOOLEAN).\n fields.set(param, configDomain);\n continue;\n }\n if (fields.has(param)) continue;\n fields.set(param, TLAGenerator.inferFieldType(param));\n }\n }\n\n /** Collect condition/assignment text strings from a handler */\n private collectHandlerTexts(handler: {\n preconditions?: VerificationCondition[];\n postconditions?: VerificationCondition[];\n assignments?: StateAssignment[];\n }): string[] {\n const texts: string[] = [];\n for (const c of [...(handler.preconditions ?? []), ...(handler.postconditions ?? [])]) {\n texts.push(typeof c === \"string\" ? c : (c.expression ?? \"\"));\n }\n for (const a of handler.assignments ?? []) {\n if (typeof a.value === \"string\") texts.push(a.value);\n }\n return texts;\n }\n\n /** Extract payload.xxx field references from handler conditions and assignments */\n private addPayloadRefsFromHandler(\n handler: {\n preconditions?: VerificationCondition[];\n postconditions?: VerificationCondition[];\n assignments?: StateAssignment[];\n },\n fields: Map<string, string>\n ): void {\n for (const text of this.collectHandlerTexts(handler)) {\n const numMatch = TLAGenerator.NUMERIC_PAYLOAD_PATTERN.exec(text);\n if (numMatch?.[1]) fields.set(numMatch[1], \"0..2\");\n for (const m of text.matchAll(TLAGenerator.PAYLOAD_REF_PATTERN)) {\n const name = m[1];\n if (name && !fields.has(name)) fields.set(name, TLAGenerator.inferFieldType(name));\n }\n }\n }\n\n private collectInitialStateFields(\n config: VerificationConfig,\n _analysis: CodebaseAnalysis\n ): string[] {\n const fields: string[] = [];\n\n // Add fields from config.state (with recursive flattening for nested objects)\n for (const [fieldPath, fieldConfig] of Object.entries(config.state)) {\n if (typeof fieldConfig !== \"object\" || fieldConfig === null) continue;\n\n // Recursively collect initial values from nested configurations\n this.collectNestedInitialValues(fieldPath, fieldConfig, fields);\n }\n\n // Add fields from analysis\n for (const fieldAnalysis of _analysis.fields) {\n if (!fieldAnalysis.path || typeof fieldAnalysis.path !== \"string\") continue;\n\n const fieldName = this.sanitizeFieldName(fieldAnalysis.path);\n if (fields.some((f) => f.startsWith(`${fieldName} |->`))) continue;\n\n const initialValue = this.getInitialValueFromAnalysis(fieldAnalysis);\n fields.push(`${fieldName} |-> ${initialValue}`);\n }\n\n return fields;\n }\n\n /**\n * Recursively collect initial values from nested configurations\n */\n private collectNestedInitialValues(\n prefix: string,\n fieldConfig: FieldConfig,\n fields: string[]\n ): void {\n // Check if this is a leaf field (has type indicators)\n if (this.hasTypeIndicators(fieldConfig)) {\n const fieldName = this.sanitizeFieldName(prefix);\n const initialValue = this.getInitialValue(fieldConfig);\n fields.push(`${fieldName} |-> ${initialValue}`);\n return;\n }\n\n // Otherwise, it's a nested object - recurse into its properties\n for (const [key, value] of Object.entries(fieldConfig)) {\n if (typeof value !== \"object\" || value === null) continue;\n\n // Skip special keys that aren't nested state fields\n if (key === \"item\" || key === \"element\") {\n continue;\n }\n\n const nestedPath = `${prefix}_${key}`;\n this.collectNestedInitialValues(nestedPath, value as unknown as FieldConfig, fields);\n }\n }\n\n private writeInitialStateFields(fields: string[]): void {\n if (fields.length === 0) {\n this.line(\"dummy |-> FALSE \\\\* Placeholder for empty state\");\n return;\n }\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i];\n const suffix = i < fields.length - 1 ? \",\" : \"\";\n this.line(`${field}${suffix}`);\n }\n }\n\n private addActions(config: VerificationConfig, analysis: CodebaseAnalysis): void {\n this.line(\"\\\\* =============================================================================\");\n this.line(\"\\\\* Application-specific actions\");\n this.line(\"\\\\* =============================================================================\");\n this.line(\"\");\n\n if (analysis.handlers.length === 0) {\n this.generateNoHandlersStub();\n return;\n }\n\n const { validHandlers, invalidHandlers } = this.filterHandlersByValidity(analysis.handlers);\n this.logInvalidHandlers(invalidHandlers);\n\n if (validHandlers.length === 0) {\n this.generateNoValidHandlersStub();\n return;\n }\n\n // Resolve action names before generation to handle naming collisions\n this.resolveActionNamesForHandlers(validHandlers);\n\n const handlersByType = this.groupHandlersByType(validHandlers);\n this.generateHandlerActions(handlersByType, config, analysis.stateConstraints ?? []);\n this.generateStateTransitionDispatcher(handlersByType);\n }\n\n /**\n * Generate stub for no handlers found\n */\n private generateNoHandlersStub(): void {\n this.line(\"\\\\* No message handlers found in codebase\");\n this.line(\"\\\\* State remains unchanged for all messages\");\n this.line(\"StateTransition(ctx, msgType) ==\");\n this.indent++;\n this.line(this.unchangedUserStates());\n this.indent--;\n this.line(\"\");\n }\n\n /**\n * Generate stub for no valid handlers\n */\n private generateNoValidHandlersStub(): void {\n this.line(\"\\\\* No valid message handlers found (all had invalid TLA+ identifiers)\");\n this.line(\"\\\\* State remains unchanged for all messages\");\n this.line(\"StateTransition(ctx, msgType) ==\");\n this.indent++;\n this.line(this.unchangedUserStates());\n this.indent--;\n this.line(\"\");\n }\n\n /**\n * Partition handlers by whether their message type is representable in TLA+\n * (polly#144). Representable handlers — including HTTP routes and\n * colon-namespaced messages — keep their full pre/post/assignment work;\n * only genuinely unrepresentable ones (no letter) are set aside.\n */\n private filterHandlersByValidity(handlers: MessageHandler[]): {\n validHandlers: MessageHandler[];\n invalidHandlers: MessageHandler[];\n } {\n const validHandlers: MessageHandler[] = [];\n const invalidHandlers: MessageHandler[] = [];\n\n for (const handler of handlers) {\n if (this.canRepresentAsTLAAction(handler.messageType)) {\n validHandlers.push(handler);\n } else {\n invalidHandlers.push(handler);\n }\n }\n\n return { validHandlers, invalidHandlers };\n }\n\n /**\n * Log warnings about unrepresentable handlers\n */\n private logInvalidHandlers(invalidHandlers: MessageHandler[]): void {\n if (invalidHandlers.length === 0 || !process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(\n `[WARN] [TLAGenerator] Dropped ${invalidHandlers.length} handler(s) with unrepresentable message types:`\n );\n for (const handler of invalidHandlers) {\n console.log(\n `[WARN] - \"${handler.messageType}\" at ${handler.location.file}:${handler.location.line}`\n );\n }\n }\n\n /**\n * Group handlers by message type\n */\n private groupHandlersByType(handlers: MessageHandler[]): Map<string, MessageHandler[]> {\n const handlersByType = new Map<string, MessageHandler[]>();\n\n for (const handler of handlers) {\n if (!handlersByType.has(handler.messageType)) {\n handlersByType.set(handler.messageType, []);\n }\n handlersByType.get(handler.messageType)?.push(handler);\n }\n\n return handlersByType;\n }\n\n /**\n * Generate handler actions for all message types\n */\n private generateHandlerActions(\n handlersByType: Map<string, MessageHandler[]>,\n config: VerificationConfig,\n stateConstraints: Array<{\n field: string;\n messageType: string;\n requires?: string;\n ensures?: string;\n message?: string;\n }>\n ): void {\n this.line(\"\\\\* State transitions extracted from message handlers\");\n this.line(\"\");\n\n for (const [messageType, handlers] of handlersByType.entries()) {\n // Find state constraints for this message type\n const constraintsForMessage = stateConstraints.filter((c) => c.messageType === messageType);\n this.generateHandlerAction(messageType, handlers, config, constraintsForMessage);\n }\n }\n\n /**\n * Generate main StateTransition dispatcher\n */\n private generateStateTransitionDispatcher(handlersByType: Map<string, MessageHandler[]>): void {\n this.line(\"\\\\* Main state transition action\");\n this.line(\"StateTransition(ctx, msgType) ==\");\n this.indent++;\n\n const messageTypes = Array.from(handlersByType.keys());\n for (let i = 0; i < messageTypes.length; i++) {\n const msgType = messageTypes[i];\n if (!msgType) continue;\n const actionName = this.getResolvedActionName(msgType);\n\n if (i === 0) {\n this.line(`IF msgType = \"${msgType}\" THEN ${actionName}(ctx)`);\n // If this is the only message type, add ELSE clause\n if (messageTypes.length === 1) {\n this.line(\"ELSE FALSE \\\\* Unknown message type - action disabled\");\n }\n } else if (i === messageTypes.length - 1) {\n this.line(`ELSE IF msgType = \"${msgType}\" THEN ${actionName}(ctx)`);\n this.line(\"ELSE FALSE \\\\* Unknown message type - action disabled\");\n } else {\n this.line(`ELSE IF msgType = \"${msgType}\" THEN ${actionName}(ctx)`);\n }\n }\n\n this.indent--;\n this.line(\"\");\n }\n\n private generateHandlerAction(\n messageType: string,\n handlers: MessageHandler[],\n config: VerificationConfig,\n stateConstraints: Array<{\n field: string;\n requires?: string;\n ensures?: string;\n message?: string;\n }>\n ): void {\n const actionName = this.getResolvedActionName(messageType);\n\n this.line(`\\\\* Handler for ${messageType}`);\n this.line(`${actionName}(ctx) ==`);\n this.indent++;\n\n // Collect conditions and assignments\n const allPreconditions = handlers.flatMap((h) => h.preconditions);\n const allAssignments = handlers.flatMap((h) => h.assignments);\n const allPostconditions = handlers.flatMap((h) => h.postconditions);\n\n // Wire in state-level constraints as preconditions\n for (const constraint of stateConstraints) {\n if (constraint.requires) {\n allPreconditions.push({\n expression: constraint.requires,\n message: constraint.message,\n location: { line: 0, column: 0 },\n });\n }\n }\n\n // Wire in state-level constraints as postconditions\n for (const constraint of stateConstraints) {\n if (constraint.ensures) {\n allPostconditions.push({\n expression: constraint.ensures,\n message: constraint.message,\n location: { line: 0, column: 0 },\n });\n }\n }\n\n // Emit preconditions\n this.emitPreconditions(allPreconditions);\n\n // Process and emit assignments\n const validAssignments = this.processAssignments(allAssignments, config.state);\n this.emitStateUpdates(validAssignments, allPreconditions);\n\n this.indent--;\n this.line(\"\");\n\n // Postconditions are NOT emitted as conjuncts in the action body.\n //\n // From 0.33.0 through 0.34.0 the codegen wrapped each ensures() in\n // TLC's Assert(P, \"msg\") and added it as a conjunct here. Issue #74\n // confirmed empirically that this still acted as a guard: when the\n // EXCEPT primes a value that fails the predicate, TLC's action\n // evaluator catches the resulting EvalException and treats the\n // binding as not-a-successor, so the buggy transition simply doesn't\n // fire and the model still verifies green.\n //\n // The fix lifts each postcondition into a per-handler step-temporal\n // property (`[][P]_allVars`) emitted into the PROPERTIES section.\n // The property's predicate fires only on (s, s') pairs that just\n // delivered a message of this msgType, and reads the post-state via\n // contextStates'[target]. Failures surface as ordinary TLC property\n // violations with a clean counterexample, instead of silently\n // disabling the action.\n this.recordPostconditionProperty(messageType, actionName, allPostconditions);\n }\n\n /**\n * Record per-handler postconditions as a step-temporal property.\n *\n * For a handler `HandleX(ctx)` with one or more `ensures(P_i, msg_i)`\n * postconditions, emit:\n *\n * EnsuresAfter_HandleX ==\n * [][\n * \\A m \\in 1..Len(messages) :\n * (messages[m].status = \"pending\"\n * /\\ messages'[m].status = \"delivered\"\n * /\\ messages[m].msgType = \"X\")\n * => LET target == messages'[m].deliveredTo IN\n * (target \\in Contexts /\\ ports[target] = \"connected\")\n * => /\\ <P_1 with [ctx] -> [target]>\n * /\\ <P_2 with [ctx] -> [target]>\n * ...\n * ]_allVars\n *\n * The LET binds `target` to the single context the action actually\n * routed to (recorded by RouteMessage / UserRouteMessage in the\n * message's `deliveredTo` field). Earlier revisions used\n * `\\A target \\in messages[m].targets`, which false-positived whenever\n * a multi-target send routed to one target and the property's\n * predicate read the post-state of an untouched sibling target\n * (issue #75).\n *\n * TLC handles `[][P]_allVars` as a safety property: no liveness\n * machinery, no fairness needed. A wrong-target write trips the\n * property and TLC reports a real counterexample.\n */\n private recordPostconditionProperty(\n messageType: string,\n actionName: string,\n postconditions: Array<{ expression: string; message?: string }>\n ): void {\n if (postconditions.length === 0) return;\n\n // Convert each predicate to TLA+ form (post-state, then rebind ctx -> target).\n // We rebind both `[ctx]` (contextStates indexing) and `{ctx}` (set-difference\n // exclusion inside a forAllPeers/somePeer quantifier) so a cross-peer\n // ensures reads as \"for every peer other than the delivery target\".\n const predicateClauses = postconditions\n .map((pc) => this.tsExpressionToTLA(pc.expression, true))\n .filter((p) => p && p.length > 0)\n .map((p) => p.replace(/\\[ctx\\]/g, \"[target]\").replace(/\\{ctx\\}/g, \"{target}\"));\n\n if (predicateClauses.length === 0) return;\n\n // Multi-line conjunction so the generated TLA+ stays readable.\n const conjunction =\n predicateClauses.length === 1\n ? predicateClauses[0]\n : predicateClauses.map((c) => ` /\\\\ ${c}`).join(\"\\n\");\n\n const propertyName = `EnsuresAfter_${actionName}`;\n const messages = postconditions\n .map((pc) => pc.message)\n .filter((m): m is string => Boolean(m))\n .join(\"; \");\n\n // Build the inner step predicate as a single string. We hand-format\n // the lines so the generated spec is readable in a counterexample.\n const target =\n `\\n \\\\A m \\\\in 1..Len(messages) :\\n` +\n ` (messages[m].status = \"pending\"\\n` +\n ` /\\\\ messages'[m].status = \"delivered\"\\n` +\n ` /\\\\ messages[m].msgType = \"${messageType}\")\\n` +\n ` => LET target == messages'[m].deliveredTo IN\\n` +\n ` (target \\\\in Contexts /\\\\ ports[target] = \"connected\")\\n` +\n ` =>\\n` +\n (predicateClauses.length === 1 ? ` ${predicateClauses[0]}` : conjunction);\n\n this.temporalProperties.push({\n name: propertyName,\n description:\n messages.length > 0\n ? `ensures(...) for ${messageType}: ${messages}`\n : `ensures(...) for ${messageType}`,\n type: \"step-always\",\n target,\n });\n }\n\n /**\n * Emit precondition checks\n */\n private emitPreconditions(preconditions: Array<{ expression: string; message?: string }>): void {\n for (const precondition of preconditions) {\n const tlaExpr = this.tsExpressionToTLA(precondition.expression);\n const comment = precondition.message ? ` \\\\* ${precondition.message}` : \"\";\n this.line(`/\\\\ ${tlaExpr}${comment}`);\n }\n }\n\n /**\n * Process assignments, filtering and mapping null values\n */\n private processAssignments(\n assignments: Array<{ field: string; value: string | boolean | number | null }>,\n state: VerificationConfig[\"state\"]\n ): Array<{ field: string; value: string | boolean | number | null }> {\n return assignments\n .filter((a) => this.isFieldModeled(a.field, state))\n .filter((a) => this.shouldIncludeAssignment(a, state))\n .map((a) => this.mapNullAssignment(a, state));\n }\n\n /**\n * True iff the assignment's target field has a matching entry in the\n * (flattened) state config. Drops assignments to fields that aren't part of\n * the modeled state — without this filter, an EXCEPT for an unmodeled field\n * (e.g. user.name when the config only declares user.loggedIn and\n * user.role) widens contextStates to carry payload values that no invariant\n * constrains, and the state space explodes for no checking benefit.\n */\n private isFieldModeled(field: string, state: VerificationConfig[\"state\"]): boolean {\n const sanitized = this.sanitizeFieldName(field);\n const fakeConfig: VerificationConfig = {\n state,\n messages: { maxInFlight: null },\n onBuild: \"warn\",\n onRelease: \"warn\",\n };\n if (this.flattenStateConfig(fakeConfig).has(sanitized)) return true;\n // polly#117: a field that maps to a declared mesh signal + a\n // declared inner field counts as modeled, since the assignment\n // will route through meshState rather than contextStates.\n return this.isMeshAssignmentModeled(field);\n }\n\n /**\n * polly#117: true iff `field` is `<sigName>` or `<sigName>_<innerField>`\n * for a mesh signal whose docId appears in config.mesh and whose\n * inner field is declared on the doc record.\n */\n private isMeshAssignmentModeled(field: string): boolean {\n const meshHit = this.classifyAssignmentAsMesh(field);\n if (!meshHit) return false;\n const mesh = this.currentConfig?.mesh;\n if (!mesh) return false;\n const docConfig = mesh[meshHit.docId];\n if (!docConfig) return false;\n if (meshHit.innerField === \"\") return true; // whole-document write\n return Object.hasOwn(docConfig, meshHit.innerField);\n }\n\n /**\n * Check if assignment should be included\n */\n private shouldIncludeAssignment(\n assignment: { field: string; value: string | boolean | number | null },\n state: VerificationConfig[\"state\"]\n ): boolean {\n if (assignment.value !== null) return true;\n\n const fieldConfig = state[assignment.field];\n if (!fieldConfig || typeof fieldConfig !== \"object\") return false;\n\n // Abstract or nullable fields: null maps to TLA+ NULL\n if (\"abstract\" in fieldConfig && fieldConfig.abstract) return true;\n if (\"nullable\" in fieldConfig && fieldConfig.nullable) return true;\n\n // Non-abstract fields with values: map null to last value (legacy behaviour)\n return !!(\"values\" in fieldConfig && fieldConfig.values);\n }\n\n /**\n * Map null assignment to a valid value if possible.\n * Abstract and nullable fields preserve null (becomes TLA+ NULL).\n * Non-abstract enum fields map null to the last declared value (legacy).\n */\n private mapNullAssignment(\n assignment: { field: string; value: string | boolean | number | null },\n state: VerificationConfig[\"state\"]\n ): { field: string; value: string | boolean | number | null } {\n if (assignment.value !== null) return assignment;\n\n const fieldConfig = state[assignment.field];\n if (!fieldConfig || typeof fieldConfig !== \"object\") return assignment;\n\n // Abstract or nullable fields: preserve null → TLA+ NULL\n if (\"abstract\" in fieldConfig && fieldConfig.abstract) return assignment;\n if (\"nullable\" in fieldConfig && fieldConfig.nullable) return assignment;\n\n // Non-abstract fields with values: map null to last value (legacy)\n if (\"values\" in fieldConfig && fieldConfig.values) {\n const nullValue = fieldConfig.values[fieldConfig.values.length - 1] ?? null;\n return { ...assignment, value: nullValue };\n }\n\n return assignment;\n }\n\n /**\n * Emit state updates or UNCHANGED\n * @returns true if UNCHANGED was used (postconditions should be skipped)\n *\n * Emits actual state transitions when valid assignments are extracted:\n * - user_loggedIn = true -> contextStates' = [contextStates EXCEPT ![ctx].user_loggedIn = TRUE]\n *\n * Falls back to UNCHANGED when no assignments are extracted (complex expressions,\n * array operations, spreads, etc.)\n */\n private emitStateUpdates(\n validAssignments: Array<{ field: string; value: string | boolean | number | null }>,\n preconditions: Array<{ expression: string; message?: string }>\n ): boolean {\n if (validAssignments.length === 0) {\n // No valid assignments - use UNCHANGED\n if (preconditions.length === 0) {\n this.line(\"\\\\* No state changes in handler\");\n }\n this.line(`/\\\\ ${this.unchangedUserStates()}`);\n return true; // Signal that UNCHANGED was used\n }\n\n // Partition into NDET-prefixed and deterministic assignments\n const ndetAssignments: Array<{ field: string; value: string }> = [];\n const detAssignments: Array<{\n field: string;\n value: string | boolean | number | null;\n }> = [];\n for (const a of validAssignments) {\n if (typeof a.value === \"string\" && a.value.startsWith(\"NDET:\")) {\n ndetAssignments.push({ field: a.field, value: a.value });\n } else {\n detAssignments.push(a);\n }\n }\n\n if (ndetAssignments.length === 0) {\n // All deterministic — partition into local (contextStates) and\n // mesh-routed (meshState) writes. polly#117: when an assignment's\n // field belongs to a $meshState signal declared in config.mesh,\n // emit an EXCEPT against meshState[ctx][docId] instead so the\n // write lands in the propagating namespace.\n const partition = this.partitionAssignments(detAssignments);\n this.emitDeterministicAssignmentPartitions(partition);\n return false;\n }\n\n // Has NDET assignments — delegate to non-deterministic emitter\n this.emitNDETStateUpdates(ndetAssignments, detAssignments);\n return false;\n }\n\n /**\n * polly#117: split assignments into local (contextStates) writes\n * and mesh-document (meshState[docId]) writes. An assignment is\n * mesh-routed when its field name equals or is prefixed by a signal\n * that the parser tagged as `$meshState` and that has a matching\n * declaration in `config.mesh`.\n */\n private partitionAssignments(\n assignments: Array<{ field: string; value: string | boolean | number | null }>\n ): {\n local: Array<{ field: string; value: string | boolean | number | null }>;\n mesh: Map<string, Array<{ inner: string; value: string | boolean | number | null }>>;\n } {\n const local: Array<{ field: string; value: string | boolean | number | null }> = [];\n const mesh = new Map<\n string,\n Array<{ inner: string; value: string | boolean | number | null }>\n >();\n for (const a of assignments) {\n const meshHit = this.classifyAssignmentAsMesh(a.field);\n if (meshHit) {\n const list = mesh.get(meshHit.docId) ?? [];\n list.push({ inner: meshHit.innerField, value: a.value });\n mesh.set(meshHit.docId, list);\n } else {\n local.push(a);\n }\n }\n return { local, mesh };\n }\n\n /**\n * Try to match `field` against a known $meshState signal name. If\n * the field is exactly the signal name, the whole document is being\n * replaced (rare — usually the inner field is `<sig>_<key>`). Returns\n * `null` when the field belongs to a local $sharedState signal.\n */\n private classifyAssignmentAsMesh(field: string): { docId: string; innerField: string } | null {\n for (const [signalName, docId] of this.meshSignalDocs.entries()) {\n if (field === signalName) {\n return { docId, innerField: \"\" };\n }\n const prefix = `${signalName}_`;\n if (field.startsWith(prefix)) {\n return { docId, innerField: field.substring(prefix.length) };\n }\n }\n return null;\n }\n\n /**\n * Emit the contextStates' and meshState' EXCEPT clauses for a\n * partitioned assignment set. Either or both may be empty: an\n * UNCHANGED is emitted for the side that has no writes so the\n * action's footprint matches `allVars`.\n */\n private emitDeterministicAssignmentPartitions(partition: {\n local: Array<{ field: string; value: string | boolean | number | null }>;\n mesh: Map<string, Array<{ inner: string; value: string | boolean | number | null }>>;\n }): void {\n const { local, mesh } = partition;\n\n if (local.length > 0) {\n const exceptClauses = local.map((a) => {\n const tlaValue = this.assignmentValueToTLA(a.value);\n return `![ctx].${this.sanitizeFieldName(a.field)} = ${tlaValue}`;\n });\n this.line(`/\\\\ contextStates' = [contextStates EXCEPT ${exceptClauses.join(\", \")}]`);\n } else if (mesh.size > 0) {\n this.line(\"/\\\\ UNCHANGED contextStates\");\n }\n\n if (mesh.size > 0) {\n const clauses: string[] = [];\n for (const [docId, writes] of mesh.entries()) {\n for (const w of writes) {\n const tlaValue = this.assignmentValueToTLA(w.value);\n if (w.inner === \"\") {\n clauses.push(`![ctx][\"${docId}\"] = ${tlaValue}`);\n } else {\n clauses.push(`![ctx][\"${docId}\"].${this.sanitizeFieldName(w.inner)} = ${tlaValue}`);\n }\n }\n }\n this.line(`/\\\\ meshState' = [meshState EXCEPT ${clauses.join(\", \")}]`);\n } else if (this.hasMeshConfig() && local.length > 0) {\n this.line(\"/\\\\ UNCHANGED meshState\");\n }\n }\n\n /**\n * Emit non-deterministic state updates with \\E quantifiers.\n *\n * NDET:FILTER on field `f` →\n * \\E newLen \\in 0..Len(contextStates[ctx].f) :\n * contextStates' = [contextStates EXCEPT ![ctx].f = SubSeq(@, 1, newLen)]\n *\n * NDET:MAP on field `f` →\n * \\E mapIdx \\in 1..Len(contextStates[ctx].f) :\n * \\E mapVal \\in Value :\n * contextStates' = [contextStates EXCEPT ![ctx].f = [@ EXCEPT ![mapIdx] = mapVal]]\n */\n private emitNDETStateUpdates(\n ndetAssignments: Array<{ field: string; value: string }>,\n detAssignments: Array<{\n field: string;\n value: string | boolean | number | null;\n }>\n ): void {\n // Build deterministic EXCEPT clauses (combined with any NDET EXCEPT)\n const detExceptClauses = detAssignments.map((a) => {\n const tlaValue = this.assignmentValueToTLA(a.value);\n return `![ctx].${this.sanitizeFieldName(a.field)} = ${tlaValue}`;\n });\n\n // Collect NDET EXCEPT clauses and their quantifier wrappers\n const ndetExceptClauses: string[] = [];\n const quantifierOpeners: string[] = [];\n\n for (const a of ndetAssignments) {\n const fieldName = this.sanitizeFieldName(a.field);\n const fieldRef = `contextStates[ctx].${fieldName}`;\n\n if (a.value === \"NDET:FILTER\") {\n quantifierOpeners.push(`/\\\\ \\\\E newLen_${fieldName} \\\\in 0..Len(${fieldRef}) :`);\n ndetExceptClauses.push(`![ctx].${fieldName} = SubSeq(@, 1, newLen_${fieldName})`);\n } else if (a.value === \"NDET:MAP\") {\n quantifierOpeners.push(`/\\\\ \\\\E mapIdx_${fieldName} \\\\in 1..Len(${fieldRef}) :`);\n quantifierOpeners.push(`\\\\E mapVal_${fieldName} \\\\in Value :`);\n ndetExceptClauses.push(\n `![ctx].${fieldName} = [@ EXCEPT ![mapIdx_${fieldName}] = mapVal_${fieldName}]`\n );\n }\n }\n\n // Emit quantifier lines with increasing indent\n for (const opener of quantifierOpeners) {\n this.line(opener);\n this.indent++;\n }\n\n // Emit combined EXCEPT clause\n const allExceptClauses = [...detExceptClauses, ...ndetExceptClauses];\n this.line(`/\\\\ contextStates' = [contextStates EXCEPT ${allExceptClauses.join(\", \")}]`);\n\n // Restore indent\n for (const _opener of quantifierOpeners) {\n this.indent--;\n }\n }\n\n /**\n * Translate TypeScript expression to TLA+ syntax\n * @param expr - TypeScript expression from requires() or ensures()\n * @param isPrimed - If true, use contextStates' (for postconditions)\n */\n /**\n * polly#117: detect a `forAllPeers(<binder> => <body>)` or\n * `somePeer(<binder> => <body>)` wrapper at the top level of a\n * predicate. Returns the binder name, body text, and quantifier\n * kind, or null if the expression is a plain predicate.\n *\n * The match is intentionally text-shape based: the analyzer captures\n * predicate text via `.getText()` at the requires/ensures call site,\n * so we work with strings throughout the codegen.\n */\n private tryExtractPeerScopedPredicate(\n expr: string\n ): { binder: string; innerBody: string; kind: \"forall\" | \"exists\" } | null {\n if (typeof expr !== \"string\") return null;\n const trimmed = expr.trim();\n // The arrow binder may be parenthesised — `(peer) =>` — which is\n // what the analyzer captures once the source has been formatted.\n // Accept both `peer =>` and `(peer) =>`.\n const match = trimmed.match(\n /^(forAllPeers|somePeer)\\s*\\(\\s*\\(?\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\)?\\s*=>\\s*([\\s\\S]+)\\)\\s*$/\n );\n if (!match) return null;\n const fn = match[1];\n const binder = match[2];\n const innerBody = match[3];\n if (!fn || !binder || innerBody === undefined) return null;\n // Heuristic: the regex `[\\s\\S]+\\)` is greedy and would swallow a\n // trailing argument inside the arrow body if the wrapper had\n // extra args; in practice forAllPeers/somePeer take exactly one\n // arrow-function argument, so this is safe.\n return {\n binder,\n innerBody: innerBody.trim(),\n kind: fn === \"forAllPeers\" ? \"forall\" : \"exists\",\n };\n }\n\n private tsExpressionToTLA(expr: string, isPrimed = false): string {\n // Early return for invalid expressions\n if (!expr || typeof expr !== \"string\") {\n return expr || \"\";\n }\n\n // polly#117: cross-peer quantifiers — `forAllPeers(peer => ...)` and\n // `somePeer(peer => ...)`. Detect the wrapper, substitute the\n // binder's signal references to `contextStates[<binder>]` form,\n // pass the rest through the normal flattening so that bare\n // signal references continue to resolve to the executing\n // context, then wrap with a TLA+ universal/existential\n // quantifier over `Contexts \\ {ctx}`.\n const scoped = this.tryExtractPeerScopedPredicate(expr);\n if (scoped) {\n const binder = scoped.binder;\n const peerPrefix = isPrimed ? `contextStates'[${binder}]` : `contextStates[${binder}]`;\n // Pre-substitute `<binder>.<sig>.value.<field>` references before\n // the general flattening sees the expression. polly#117: a mesh-\n // declared signal routes through `meshState[<binder>][<docId>]`\n // so cross-peer assertions actually exercise the propagation\n // namespace; everything else flattens through\n // `contextStates[<binder>]` exactly as the executing-context\n // path would.\n let body = scoped.innerBody;\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — `binder` is a TypeScript identifier extracted from typed AST analysis, never user input.\n const binderRe1 = new RegExp(\n `\\\\b${binder}\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\\\\.value\\\\.([a-zA-Z_][a-zA-Z0-9_.]*)`,\n \"g\"\n );\n body = body.replace(binderRe1, (_m, sig, path) => {\n const meshDoc = this.meshSignalDocs.get(sig);\n if (meshDoc !== undefined) {\n const meshPeerPrefix = isPrimed\n ? `meshState'[${binder}][\"${meshDoc}\"]`\n : `meshState[${binder}][\"${meshDoc}\"]`;\n const field = this.sanitizeFieldName(String(path).replace(/\\./g, \"_\"));\n return `${meshPeerPrefix}.${field}`;\n }\n const flat = this.sanitizeFieldName(`${sig}_${String(path).replace(/\\./g, \"_\")}`);\n return `${peerPrefix}.${flat}`;\n });\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — `binder` is a TypeScript identifier extracted from typed AST analysis, never user input.\n const binderRe2 = new RegExp(\n `\\\\b${binder}\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\\\\.value\\\\b(?!\\\\.)`,\n \"g\"\n );\n body = body.replace(binderRe2, (_m, sig) => {\n const meshDoc = this.meshSignalDocs.get(sig);\n if (meshDoc !== undefined) {\n return isPrimed\n ? `meshState'[${binder}][\"${meshDoc}\"]`\n : `meshState[${binder}][\"${meshDoc}\"]`;\n }\n return `${peerPrefix}.${sig}`;\n });\n // Recurse on the remaining body; bare signals continue to use\n // contextStates[ctx] / meshState[ctx][docId] as appropriate.\n const innerTLA = this.tsExpressionToTLA(body, isPrimed);\n const quantifier = scoped.kind === \"forall\" ? \"\\\\A\" : \"\\\\E\";\n return `${quantifier} ${binder} \\\\in Contexts \\\\ {ctx} : (${innerTLA})`;\n }\n\n let tla = expr;\n\n // Replace state references with contextStates[ctx] or contextStates'[ctx]\n const statePrefix = isPrimed ? \"contextStates'[ctx]\" : \"contextStates[ctx]\";\n\n // Phase 0: Handle complex expressions FIRST (before state replacements)\n // These must come first because they have special operators (?., ??, ?) that\n // would be mangled by later replacements\n tla = this.translateComplexExpressions(tla, statePrefix);\n\n // Ensure tla is still a valid string after complex expression translation\n if (!tla || typeof tla !== \"string\") {\n return expr;\n }\n\n // Phase 1: Handle array/collection operations and string methods before generic replacements\n tla = this.translateArrayOperations(tla, statePrefix);\n if (!tla || typeof tla !== \"string\") {\n return expr;\n }\n\n tla = this.translateStringMethods(tla);\n if (!tla || typeof tla !== \"string\") {\n return expr;\n }\n\n // Phase 2a: Replace single quotes with double quotes (TLA+ uses double quotes for strings)\n tla = tla.replace(/'([^']+)'/g, '\"$1\"');\n\n // Phase 2b: Replace signal state references with contextStates[ctx]\n // Pattern 1: stateName.value.field -> contextStates[ctx].stateName_field\n // e.g., user.value.loggedIn -> contextStates[ctx].user_loggedIn\n // The state field name combines signal name and field path.\n // polly#117: a signal declared via $meshState whose docId appears\n // in config.mesh is instead routed through the meshState variable\n // so the field lives in its own per-context per-doc namespace.\n tla = tla.replace(\n /([a-zA-Z_][a-zA-Z0-9_]*)\\.value\\.([a-zA-Z_][a-zA-Z0-9_.]*)/g,\n (_match, stateName, path) => {\n const meshDoc = this.meshSignalDocs.get(stateName);\n if (meshDoc !== undefined) {\n const meshPrefix = isPrimed\n ? `meshState'[ctx][\"${meshDoc}\"]`\n : `meshState[ctx][\"${meshDoc}\"]`;\n const field = this.sanitizeFieldName(String(path).replace(/\\./g, \"_\"));\n return `${meshPrefix}.${field}`;\n }\n const fullPath = `${stateName}_${path.replace(/\\./g, \"_\")}`;\n return `${statePrefix}.${this.sanitizeFieldName(fullPath)}`;\n }\n );\n\n // Pattern 2: stateName.value (without field) -> contextStates[ctx].stateName\n // e.g., todos.value -> contextStates[ctx].todos\n // This handles direct signal access where the signal name IS the state field.\n // polly#117: mesh-declared signals route through meshState[ctx][docId].\n tla = tla.replace(/([a-zA-Z_][a-zA-Z0-9_]*)\\.value\\b(?!\\.)/g, (_match, stateName) => {\n const meshDoc = this.meshSignalDocs.get(stateName);\n if (meshDoc !== undefined) {\n return isPrimed ? `meshState'[ctx][\"${meshDoc}\"]` : `meshState[ctx][\"${meshDoc}\"]`;\n }\n return `${statePrefix}.${stateName}`;\n });\n\n // Phase 2c: Replace state references with contextStates[ctx] or contextStates'[ctx]\n tla = tla.replace(/state\\.([a-zA-Z_][a-zA-Z0-9_.]*)/g, (_match, path) => {\n return `${statePrefix}.${this.sanitizeFieldName(path)}`;\n });\n\n // Replace payload.field with payload.field (no change needed, but sanitize)\n tla = tla.replace(/payload\\.([a-zA-Z_][a-zA-Z0-9_.]*)/g, (_match, path) => {\n return `payload.${this.sanitizeFieldName(path)}`;\n });\n\n // Phase 3: Replace comparison operators\n tla = tla.replace(/===/g, \"=\");\n tla = tla.replace(/!==/g, \"#\");\n tla = tla.replace(/!=/g, \"#\");\n tla = tla.replace(/==/g, \"=\");\n\n // Phase 4: Replace logical operators\n tla = tla.replace(/&&/g, \"/\\\\\");\n tla = tla.replace(/\\|\\|/g, \"\\\\/\");\n\n // Replace negation operator (careful with !== already handled)\n // Match ! that's not part of !== or !=\n tla = tla.replace(/!([^=])/g, \"~$1\");\n tla = tla.replace(/!$/g, \"~\"); // Handle ! at end of string\n\n // Phase 5: Replace boolean literals\n tla = tla.replace(/\\btrue\\b/g, \"TRUE\");\n tla = tla.replace(/\\bfalse\\b/g, \"FALSE\");\n\n // Replace null\n tla = tla.replace(/\\bnull\\b/g, \"NULL\");\n\n // Phase 6: Replace less than / greater than comparisons\n tla = tla.replace(/</g, \"<\");\n tla = tla.replace(/>/g, \">\");\n tla = tla.replace(/<=/g, \"<=\");\n tla = tla.replace(/>=/g, \">=\");\n\n // Phase 7: Convert bare identifiers (function parameters) to payload references\n // These are identifiers that aren't:\n // - Already prefixed (contextStates, payload, msg, Len, etc.)\n // - TLA+ keywords/literals (TRUE, FALSE, NULL, IF, THEN, ELSE, etc.)\n // - Quantified variables (after \\E, \\A, CHOOSE, \\in, :)\n tla = this.convertFunctionParamsToPayload(tla);\n\n return tla;\n }\n\n /**\n * Convert bare identifiers (likely function parameters) to payload.identifier\n * In the verified state pattern, function parameters are the message payload.\n *\n * Only converts identifiers that are clearly standalone variables, not:\n * - Inside string literals\n * - Property accesses (after .)\n * - Quantified variables\n * - TLA+ keywords\n */\n private convertFunctionParamsToPayload(tla: string): string {\n // TLA+ keywords and built-in operators to skip\n const tlaKeywords = new Set([\n \"TRUE\",\n \"FALSE\",\n \"NULL\",\n \"IF\",\n \"THEN\",\n \"ELSE\",\n \"LET\",\n \"IN\",\n \"CASE\",\n \"OTHER\",\n \"CHOOSE\",\n \"EXCEPT\",\n \"DOMAIN\",\n \"SUBSET\",\n \"UNION\",\n \"UNCHANGED\",\n \"Len\",\n \"Cardinality\",\n \"SubSeq\",\n \"Append\",\n \"Head\",\n \"Tail\",\n \"Seq\",\n \"ctx\",\n \"payload\",\n \"msg\",\n \"state\", // Don't convert 'state' - it's handled separately\n \"contextStates\",\n ]);\n\n // First, extract quantified variable names to skip them\n const quantifiedVars = new Set<string>();\n const quantifierPattern = /\\\\[EA]\\s+(\\w+)\\s+\\\\in|CHOOSE\\s+(\\w+)\\s+\\\\in/g;\n for (const qMatch of tla.matchAll(quantifierPattern)) {\n if (qMatch[1]) quantifiedVars.add(qMatch[1]);\n if (qMatch[2]) quantifiedVars.add(qMatch[2]);\n }\n\n // Track string literal positions to skip content inside quotes\n const stringRanges: Array<{ start: number; end: number }> = [];\n const stringPattern = /\"[^\"]*\"/g;\n for (const sMatch of tla.matchAll(stringPattern)) {\n stringRanges.push({ start: sMatch.index, end: sMatch.index + sMatch[0].length });\n }\n\n // Check if an offset is inside a string literal\n const isInsideString = (offset: number): boolean => {\n return stringRanges.some((range) => offset >= range.start && offset < range.end);\n };\n\n // Now find bare identifiers that should become payload.identifier\n // Only match identifiers that appear as standalone comparisons (e.g., = id, # id)\n // This is more conservative than matching all bare identifiers\n const result = tla.replace(\n /([=#<>]\\s*)([a-z][a-zA-Z0-9_]*)(\\s*[/#\\\\)<>,]|\\s*$)/g,\n (match, prefix, ident, suffix, offset) => {\n // Skip if inside a string literal\n if (isInsideString(offset + prefix.length)) return match;\n\n // Skip if it's a TLA+ keyword\n if (tlaKeywords.has(ident)) return match;\n\n // Skip if it's a quantified variable\n if (quantifiedVars.has(ident)) return match;\n\n // Skip if it looks like a TLA+ operator (all caps)\n if (ident === ident.toUpperCase() && ident.length > 1) return match;\n\n // Skip common false positives\n if ([\"in\", \"of\", \"or\", \"and\", \"not\"].includes(ident.toLowerCase())) return match;\n\n // This is likely a function parameter - convert to payload.identifier\n return `${prefix}payload.${ident}${suffix}`;\n }\n );\n\n return result;\n }\n\n /**\n * Translate JavaScript array/collection operations to TLA+ equivalents\n *\n * Examples:\n * - items.length -> Len(items)\n * - items.includes(x) -> x \\in items\n * - items[0] -> items[1] (1-based indexing)\n * - items.some(i => i.active) -> \\E item \\in items : item.active\n * - items.every(i => i.active) -> \\A item \\in items : item.active\n * - items.find(i => i.id === x) -> CHOOSE item \\in items : item.id = x\n * - hasLength(arr, { max: 99 }) -> Len(arr) <= 99\n * - inRange(value, min, max) -> value >= min /\\ value <= max\n * - oneOf(value, [...]) -> value \\in {...}\n */\n private translateArrayOperations(expr: string, _statePrefix: string): string {\n if (!expr || typeof expr !== \"string\") {\n return expr || \"\";\n }\n\n let result = expr;\n\n // Verification helper functions (hasLength, inRange, oneOf)\n // These must be translated FIRST before other array operations\n\n // hasLength(arr, { max: N }) -> Len(arr) <= N\n // hasLength(arr, { min: M }) -> Len(arr) >= M\n // hasLength(arr, { min: M, max: N }) -> Len(arr) >= M /\\ Len(arr) <= N\n result = result.replace(\n /hasLength\\(([^,]+),\\s*\\{\\s*(?:min:\\s*(\\d+))?\\s*,?\\s*(?:max:\\s*(\\d+))?\\s*\\}\\)/g,\n (_match, arrayRef, minVal, maxVal) => {\n const constraints: string[] = [];\n const arr = arrayRef.trim();\n if (minVal !== undefined) {\n constraints.push(`Len(${arr}) >= ${minVal}`);\n }\n if (maxVal !== undefined) {\n constraints.push(`Len(${arr}) <= ${maxVal}`);\n }\n if (constraints.length === 0) {\n return \"TRUE\"; // No constraints specified\n }\n return constraints.join(\" /\\\\ \");\n }\n );\n\n // inRange(value, min, max) -> value >= min /\\ value <= max\n result = result.replace(\n /inRange\\(([^,]+),\\s*(\\d+),\\s*(\\d+)\\)/g,\n (_match, valueRef, minVal, maxVal) => {\n const val = valueRef.trim();\n return `${val} >= ${minVal} /\\\\ ${val} <= ${maxVal}`;\n }\n );\n\n // oneOf(value, [v1, v2, v3]) -> value \\in {v1, v2, v3}\n result = result.replace(/oneOf\\(([^,]+),\\s*\\[([^\\]]+)\\]\\)/g, (_match, valueRef, valuesStr) => {\n const val = valueRef.trim();\n // Convert array values to set notation\n const values = valuesStr.split(\",\").map((v: string) => v.trim());\n return `${val} \\\\in {${values.join(\", \")}}`;\n });\n\n // Array.length -> Len(array)\n // Match: identifier.length or state.field.length\n result = result.replace(/(\\w+(?:\\.\\w+)*)\\.length\\b/g, (_match, arrayRef) => {\n // If it's a state reference, keep it for later replacement\n if (arrayRef.startsWith(\"state.\")) {\n return `Len(${arrayRef})`;\n }\n return `Len(${arrayRef})`;\n });\n\n // Array.includes(item) -> item \\in array\n result = result.replace(/(\\w+(?:\\.\\w+)*)\\.includes\\(([^)]+)\\)/g, (_match, arrayRef, item) => {\n return `${item.trim()} \\\\in ${arrayRef}`;\n });\n\n // Array[index] -> Array[index+1] (convert to 1-based indexing)\n // Handle nested indices: arr[0][1] -> arr[1][2]\n // Pattern matches either: identifier OR closing bracket, followed by [number]\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\[(\\d+)\\]|\\]\\[(\\d+)\\]/g,\n (_match, identPart, index1, index2) => {\n if (identPart) {\n // First bracket after identifier: items[0]\n const newIndex = Number.parseInt(index1, 10) + 1;\n return `${identPart}[${newIndex}]`;\n }\n // Subsequent bracket after ]: ][1]\n const newIndex = Number.parseInt(index2, 10) + 1;\n return `][${newIndex}]`;\n }\n );\n\n // Array.some(lambda) -> \\E item \\in array : condition\n // Match: array.some(item => condition) or array.some((item) => condition)\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.some\\(\\(?(\\w+)\\)?\\s*=>\\s*([^)]+)\\)/g,\n (_match, arrayRef, param, condition) => {\n // Transform lambda parameter in condition\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — `param` is a TypeScript identifier extracted from typed AST analysis, never user input.\n const tlaCondition = condition.replace(new RegExp(`\\\\b${param}\\\\.`, \"g\"), `${param}.`);\n return `\\\\E ${param} \\\\in ${arrayRef} : ${tlaCondition}`;\n }\n );\n\n // Array.every(lambda) -> \\A item \\in array : condition\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.every\\(\\(?(\\w+)\\)?\\s*=>\\s*([^)]+)\\)/g,\n (_match, arrayRef, param, condition) => {\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — `param` is a TypeScript identifier extracted from typed AST analysis, never user input.\n const tlaCondition = condition.replace(new RegExp(`\\\\b${param}\\\\.`, \"g\"), `${param}.`);\n return `\\\\A ${param} \\\\in ${arrayRef} : ${tlaCondition}`;\n }\n );\n\n // Array.find(lambda) -> CHOOSE item \\in array : condition\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.find\\(\\(?(\\w+)\\)?\\s*=>\\s*([^)]+)\\)/g,\n (_match, arrayRef, param, condition) => {\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — `param` is a TypeScript identifier extracted from typed AST analysis, never user input.\n const tlaCondition = condition.replace(new RegExp(`\\\\b${param}\\\\.`, \"g\"), `${param}.`);\n return `CHOOSE ${param} \\\\in ${arrayRef} : ${tlaCondition}`;\n }\n );\n\n // Array.filter(lambda).length -> Cardinality({item \\in array : condition})\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.filter\\(\\(?(\\w+)\\)?\\s*=>\\s*([^)]+)\\)\\.length/g,\n (_match, arrayRef, param, condition) => {\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — `param` is a TypeScript identifier extracted from typed AST analysis, never user input.\n const tlaCondition = condition.replace(new RegExp(`\\\\b${param}\\\\.`, \"g\"), `${param}.`);\n return `Cardinality({${param} \\\\in ${arrayRef} : ${tlaCondition}})`;\n }\n );\n\n // String.startsWith(prefix) -> SubSeq(str, 1, Len(prefix)) = prefix\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.startsWith\\(\"([^\"]+)\"\\)/g,\n (_match, strRef, prefix) => {\n return `SubSeq(${strRef}, 1, ${prefix.length}) = \"${prefix}\"`;\n }\n );\n\n // String.endsWith(suffix) -> SubSeq(str, Len(str)-Len(suffix)+1, Len(str)) = suffix\n result = result.replace(/(\\w+(?:\\.\\w+)*)\\.endsWith\\(\"([^\"]+)\"\\)/g, (_match, strRef, suffix) => {\n return `SubSeq(${strRef}, Len(${strRef})-${suffix.length}+1, Len(${strRef})) = \"${suffix}\"`;\n });\n\n // String.includes(substring) -> \\E i \\in 1..Len(str) : SubSeq(str, i, i+Len(sub)-1) = sub\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.includes\\(\"([^\"]+)\"\\)/g,\n (_match, strRef, substring) => {\n return `\\\\E i \\\\in 1..Len(${strRef}) : SubSeq(${strRef}, i, i+${substring.length}-1) = \"${substring}\"`;\n }\n );\n\n // String.slice(start, end?).length -> Len(SubSeq(...))\n // Handle chained .length first before translating slice\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.slice\\((-?\\d+)(?:,\\s*(-?\\d+))?\\)\\.length/g,\n (_match, strRef, start, end) => {\n const startNum = Number.parseInt(start, 10);\n if (end !== undefined) {\n const endNum = Number.parseInt(end, 10);\n if (startNum < 0 && endNum < 0) {\n return `Len(SubSeq(${strRef}, Len(${strRef}) - ${Math.abs(startNum)} + 1, Len(${strRef}) - ${Math.abs(endNum)}))`;\n }\n if (startNum < 0) {\n return `Len(SubSeq(${strRef}, Len(${strRef}) - ${Math.abs(startNum)} + 1, ${endNum}))`;\n }\n if (endNum < 0) {\n return `Len(SubSeq(${strRef}, ${startNum + 1}, Len(${strRef}) - ${Math.abs(endNum)}))`;\n }\n return `Len(SubSeq(${strRef}, ${startNum + 1}, ${endNum}))`;\n }\n if (startNum < 0) {\n return `Len(SubSeq(${strRef}, Len(${strRef}) - ${Math.abs(startNum)} + 1, Len(${strRef})))`;\n }\n return `Len(SubSeq(${strRef}, ${startNum + 1}, Len(${strRef})))`;\n }\n );\n\n // String.substring(start, end?).length -> Len(SubSeq(...))\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.substring\\((\\d+)(?:,\\s*(\\d+))?\\)\\.length/g,\n (_match, strRef, start, end) => {\n const startNum = Number.parseInt(start, 10);\n if (end !== undefined) {\n const endNum = Number.parseInt(end, 10);\n if (startNum > endNum) {\n return `Len(SubSeq(${strRef}, ${endNum + 1}, ${startNum}))`;\n }\n return `Len(SubSeq(${strRef}, ${startNum + 1}, ${endNum}))`;\n }\n return `Len(SubSeq(${strRef}, ${startNum + 1}, Len(${strRef})))`;\n }\n );\n\n // String.slice(start, end?) -> SubSeq(str, start+1, end?) (1-based indexing)\n // slice(start) → SubSeq(str, start+1, Len(str))\n result = result.replace(/(\\w+(?:\\.\\w+)*)\\.slice\\((-?\\d+)\\)(?!,)/g, (_match, strRef, start) => {\n const startNum = Number.parseInt(start, 10);\n if (startNum < 0) {\n // Negative index: slice(-2) → SubSeq(str, Len(str) - 2 + 1, Len(str))\n return `SubSeq(${strRef}, Len(${strRef}) - ${Math.abs(startNum)} + 1, Len(${strRef}))`;\n }\n // Positive index: slice(1) → SubSeq(str, 2, Len(str))\n return `SubSeq(${strRef}, ${startNum + 1}, Len(${strRef}))`;\n });\n\n // slice(start, end) → SubSeq(str, start+1, end)\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.slice\\((-?\\d+),\\s*(-?\\d+)\\)/g,\n (_match, strRef, start, end) => {\n const startNum = Number.parseInt(start, 10);\n const endNum = Number.parseInt(end, 10);\n\n if (startNum < 0 && endNum < 0) {\n return `SubSeq(${strRef}, Len(${strRef}) - ${Math.abs(startNum)} + 1, Len(${strRef}) - ${Math.abs(endNum)})`;\n }\n if (startNum < 0) {\n return `SubSeq(${strRef}, Len(${strRef}) - ${Math.abs(startNum)} + 1, ${endNum})`;\n }\n if (endNum < 0) {\n return `SubSeq(${strRef}, ${startNum + 1}, Len(${strRef}) - ${Math.abs(endNum)})`;\n }\n // Both positive: slice(0, 3) → SubSeq(str, 1, 3)\n return `SubSeq(${strRef}, ${startNum + 1}, ${endNum})`;\n }\n );\n\n // String.substring(start, end?) -> SubSeq(str, start+1, end?) (1-based indexing)\n // substring(start) → SubSeq(str, start+1, Len(str))\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.substring\\((\\d+)\\)(?!,)/g,\n (_match, strRef, start) => {\n const startNum = Number.parseInt(start, 10);\n return `SubSeq(${strRef}, ${startNum + 1}, Len(${strRef}))`;\n }\n );\n\n // substring(start, end) → SubSeq(str, start+1, end)\n // substring auto-swaps if start > end\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\.substring\\((\\d+),\\s*(\\d+)\\)/g,\n (_match, strRef, start, end) => {\n const startNum = Number.parseInt(start, 10);\n const endNum = Number.parseInt(end, 10);\n\n // substring auto-swaps indices if start > end\n if (startNum > endNum) {\n return `SubSeq(${strRef}, ${endNum + 1}, ${startNum})`;\n }\n return `SubSeq(${strRef}, ${startNum + 1}, ${endNum})`;\n }\n );\n\n return result;\n }\n\n /**\n * Translate complex JavaScript expressions to TLA+\n *\n * Handles:\n * - Ternary operators: a ? b : c → IF a THEN b ELSE c\n * - Nullish coalescing: a ?? b → IF a # NULL THEN a ELSE b\n * - Optional chaining: a?.b → IF a # NULL THEN a.b ELSE NULL\n * - Logical short-circuit: a && b → IF a THEN b ELSE FALSE\n */\n private translateComplexExpressions(expr: string, _statePrefix: string): string {\n if (!expr || typeof expr !== \"string\") {\n return expr || \"\";\n }\n\n let result = expr;\n\n // Phase 1: Handle optional chaining (must come before other operators)\n result = this.translateOptionalChaining(result);\n\n // Phase 2: Handle nullish coalescing (before ternary to avoid ?? being confused with ?)\n result = this.translateNullishCoalescing(result);\n\n // Phase 3: Handle ternary operators (after nullish so ?? doesn't interfere)\n result = this.translateTernary(result);\n\n // Phase 4: Handle logical short-circuit (advanced)\n // && and || are handled later as simple operators\n // This is for special cases where we want IF-THEN-ELSE semantics\n\n return result;\n }\n\n /**\n * Translate ternary operator: condition ? trueValue : falseValue\n * → IF condition THEN trueValue ELSE falseValue\n *\n * Handles nested ternaries recursively\n */\n private translateTernary(expr: string): string {\n if (!expr || typeof expr !== \"string\" || !expr.includes(\"?\")) {\n return expr || \"\";\n }\n\n // Match ternary pattern: condition ? true_expr : false_expr\n // Use a simple approach for non-nested ternaries first\n // Pattern: anything ? anything : anything (non-greedy)\n const ternaryRegex = /([^?]+)\\?([^:]+):([^:?]+)/;\n\n let result = expr;\n let match: RegExpMatchArray | null;\n let iterations = 0;\n const maxIterations = 10; // Prevent infinite loops\n\n // Process ternaries from innermost to outermost (right to left)\n match = result.match(ternaryRegex);\n while (match && iterations < maxIterations) {\n const condition = match[1]?.trim();\n const trueVal = match[2]?.trim();\n const falseVal = match[3]?.trim();\n\n const tlaIf = `IF ${condition} THEN ${trueVal} ELSE ${falseVal}`;\n\n // Replace the matched ternary\n if (match[0]) {\n result = result.replace(match[0], tlaIf);\n }\n iterations++;\n match = result.match(ternaryRegex);\n }\n\n return result;\n }\n\n /**\n * Translate nullish coalescing: a ?? b → IF a # NULL THEN a ELSE b\n *\n * Note: JavaScript ?? checks for null or undefined, but TLA+ only has NULL\n */\n private translateNullishCoalescing(expr: string): string {\n if (!expr || typeof expr !== \"string\" || !expr.includes(\"??\")) {\n return expr || \"\";\n }\n\n // Match: expr ?? defaultValue\n // Use non-greedy matching to handle multiple ?? in sequence\n const nullishRegex = /([^?]+)\\?\\?([^?]+)/;\n\n let result = expr;\n let match: RegExpMatchArray | null;\n let iterations = 0;\n const maxIterations = 10;\n\n match = result.match(nullishRegex);\n while (match && iterations < maxIterations) {\n const value = match[1]?.trim();\n const defaultVal = match[2]?.trim();\n\n const tlaIf = `IF ${value} # NULL THEN ${value} ELSE ${defaultVal}`;\n\n if (match[0]) {\n result = result.replace(match[0], tlaIf);\n }\n iterations++;\n match = result.match(nullishRegex);\n }\n\n return result;\n }\n\n /**\n * Translate optional chaining: a?.b?.c → IF a # NULL /\\ a.b # NULL THEN a.b.c ELSE NULL\n *\n * Strategy: Convert each ?. to explicit null check iteratively\n * Supports: a?.b, a?.[0], a?.['prop'], chained a?.b?.c\n */\n private translateOptionalChaining(expr: string): string {\n // If no optional chaining, return as-is\n if (!expr.includes(\"?.\")) {\n return expr;\n }\n\n let result = expr;\n let iteration = 0;\n const maxIterations = 10;\n let previousResult = \"\";\n\n // Iteratively process ?. operators until none remain or no changes made\n while (result.includes(\"?.\") && iteration < maxIterations && result !== previousResult) {\n previousResult = result;\n\n // Pattern 1: identifier?.property (simple property access)\n // Matches: a?.b, user?.name, etc.\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\?\\.(\\w+)(?!\\?\\.)/g,\n (_match, obj, prop) => `IF ${obj} # NULL THEN ${obj}.${prop} ELSE NULL`\n );\n\n // Pattern 2: (expression)?.property (parenthesized expression)\n // Matches: (a.b.c)?.d, (user)?.name, etc.\n result = result.replace(\n /\\(([^)]+)\\)\\?\\.(\\w+)/g,\n (_match, expr, prop) => `IF (${expr}) # NULL THEN (${expr}).${prop} ELSE NULL`\n );\n\n // Pattern 3: identifier?.[index] (bracket notation with number)\n // Matches: items?.[0], arr?.[5], etc.\n // TLA+ uses 1-based indexing, so [0] becomes [1]\n result = result.replace(/(\\w+(?:\\.\\w+)*)\\?\\.\\[(\\d+)\\]/g, (_match, obj, index) => {\n const tlaIndex = Number.parseInt(index, 10) + 1; // Convert to 1-based\n return `IF ${obj} # NULL THEN ${obj}[${tlaIndex}] ELSE NULL`;\n });\n\n // Pattern 4: identifier?.['property'] or identifier?.[\"property\"]\n // Matches: obj?.['name'], user?.[\"id\"], etc.\n result = result.replace(\n /(\\w+(?:\\.\\w+)*)\\?\\.\\[['\"](\\w+)['\"]\\]/g,\n (_match, obj, prop) => `IF ${obj} # NULL THEN ${obj}.${prop} ELSE NULL`\n );\n\n iteration++;\n }\n\n // If ?. still remains after max iterations, warn and return original\n if (result.includes(\"?.\") && iteration >= maxIterations) {\n // Return original rather than partially translated to avoid confusing output\n return expr;\n }\n\n return result;\n }\n\n /**\n * Translate string methods to TLA+ operators\n *\n * - str.startsWith(prefix) → SubSeq(str, 1, Len(prefix)) = prefix\n * - str.endsWith(suffix) → SubSeq(str, Len(str) - Len(suffix) + 1, Len(str)) = suffix\n * - str.includes(sub) → \\E i \\in 1..Len(str) : SubSeq(str, i, i + Len(sub) - 1) = sub\n */\n private translateStringMethods(expr: string): string {\n if (!expr || typeof expr !== \"string\") {\n return expr || \"\";\n }\n\n let result = expr;\n\n // String.startsWith(prefix)\n result = result.replace(/(\\w+(?:\\.\\w+)*)\\.startsWith\\(([^)]+)\\)/g, (_match, str, prefix) => {\n const trimmedPrefix = prefix.trim();\n return `SubSeq(${str}, 1, Len(${trimmedPrefix})) = ${trimmedPrefix}`;\n });\n\n // String.endsWith(suffix)\n result = result.replace(/(\\w+(?:\\.\\w+)*)\\.endsWith\\(([^)]+)\\)/g, (_match, str, suffix) => {\n const trimmedSuffix = suffix.trim();\n return `SubSeq(${str}, Len(${str}) - Len(${trimmedSuffix}) + 1, Len(${str})) = ${trimmedSuffix}`;\n });\n\n // String.includes(substring) - more complex, uses existential quantifier\n result = result.replace(/(\\w+(?:\\.\\w+)*)\\.includes\\(([^)]+)\\)/g, (_match, str, substring) => {\n const trimmedSub = substring.trim();\n return `\\\\E i \\\\in 1..Len(${str}) : SubSeq(${str}, i, i + Len(${trimmedSub}) - 1) = ${trimmedSub}`;\n });\n\n return result;\n }\n\n private messageTypeToActionName(messageType: string): string {\n // Defensive check: this method should only be called with valid TLA+ identifiers\n // (filtering happens earlier, but this adds an extra layer of safety)\n if (!this.isValidTLAIdentifier(messageType)) {\n // Sanitize by removing all invalid characters and replacing with underscores\n const sanitized = messageType.replace(/[^a-zA-Z0-9_]/g, \"_\");\n // Ensure it starts with a letter\n const validStart = sanitized.match(/[a-zA-Z]/);\n if (!validStart) {\n // No letters at all, can't create a valid identifier\n return \"HandleInvalidMessageType\";\n }\n // Use the sanitized version from the first letter onwards\n const validIdentifier = sanitized.slice(sanitized.indexOf(validStart[0]));\n return this.messageTypeToActionName(validIdentifier);\n }\n\n // Convert USER_LOGIN -> HandleUserLogin\n return `Handle${messageType\n .split(\"_\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())\n .join(\"\")}`;\n }\n\n /**\n * Resolve action names for all handlers, detecting and handling collisions.\n * When two different messageTypes would produce the same action name,\n * use the origin to differentiate (e.g., HandleFnConnected for state handlers).\n */\n private resolveActionNamesForHandlers(handlers: MessageHandler[]): void {\n this.resolvedActionNames.clear();\n const actionNameToMessageTypes = this.groupHandlersByActionName(handlers);\n this.resolveCollisions(actionNameToMessageTypes);\n }\n\n /**\n * Group handlers by their base action name for collision detection.\n */\n private groupHandlersByActionName(\n handlers: MessageHandler[]\n ): Map<string, Array<{ messageType: string; origin?: \"event\" | \"stateHandler\" }>> {\n const actionNameToMessageTypes = new Map<\n string,\n Array<{ messageType: string; origin?: \"event\" | \"stateHandler\" }>\n >();\n\n for (const handler of handlers) {\n const baseActionName = this.messageTypeToActionName(handler.messageType);\n if (!actionNameToMessageTypes.has(baseActionName)) {\n actionNameToMessageTypes.set(baseActionName, []);\n }\n const existing = actionNameToMessageTypes.get(baseActionName);\n if (existing && !existing.some((e) => e.messageType === handler.messageType)) {\n existing.push({ messageType: handler.messageType, origin: handler.origin });\n }\n }\n\n return actionNameToMessageTypes;\n }\n\n /**\n * Resolve naming collisions by using origin to differentiate action names.\n */\n private resolveCollisions(\n actionNameToMessageTypes: Map<\n string,\n Array<{ messageType: string; origin?: \"event\" | \"stateHandler\" }>\n >\n ): void {\n for (const [baseActionName, messageTypes] of actionNameToMessageTypes.entries()) {\n const single = messageTypes.length === 1 ? messageTypes[0] : undefined;\n if (single) {\n this.resolvedActionNames.set(single.messageType, baseActionName);\n continue;\n }\n this.resolveCollidingGroup(baseActionName, messageTypes);\n }\n }\n\n /**\n * Resolve a group of message types that share a base action name. Origin\n * differentiates event vs stateHandler; polly#144 then appends a\n * deterministic numeric suffix so distinct message types that sanitize to\n * the same name (e.g. \"task:tree-cloned\" and \"task/tree/cloned\") never\n * collapse onto one action.\n */\n private resolveCollidingGroup(\n baseActionName: string,\n messageTypes: Array<{ messageType: string; origin?: \"event\" | \"stateHandler\" }>\n ): void {\n const usedNames = new Set<string>();\n for (const entry of messageTypes) {\n const originName =\n entry.origin === \"stateHandler\"\n ? baseActionName.replace(/^Handle/, \"HandleFn\")\n : baseActionName;\n this.resolvedActionNames.set(entry.messageType, this.uniquify(originName, usedNames));\n }\n }\n\n /**\n * Return `name`, or `name_N` for the smallest N >= 2 not already in `used`,\n * recording the result in `used`.\n */\n private uniquify(name: string, used: Set<string>): string {\n let candidate = name;\n let suffix = 2;\n while (used.has(candidate)) {\n candidate = `${name}_${suffix}`;\n suffix++;\n }\n used.add(candidate);\n return candidate;\n }\n\n /**\n * Get the resolved action name for a message type.\n * Must call resolveActionNamesForHandlers first.\n */\n private getResolvedActionName(messageType: string): string {\n const resolved = this.resolvedActionNames.get(messageType);\n if (resolved) {\n return resolved;\n }\n // Fallback to base conversion if not pre-resolved\n return this.messageTypeToActionName(messageType);\n }\n\n private assignmentValueToTLA(value: string | boolean | number | null): string {\n if (typeof value === \"boolean\") {\n return value ? \"TRUE\" : \"FALSE\";\n }\n if (typeof value === \"number\") {\n return String(value);\n }\n if (value === null) {\n return \"NULL\"; // Will need to handle this based on type\n }\n if (typeof value === \"string\") {\n // Safety guard: NDET markers must be handled by emitNDETStateUpdates,\n // never reach this function\n if (value.startsWith(\"NDET:\")) {\n throw new Error(\n `NDET marker \"${value}\" reached assignmentValueToTLA — should have been partitioned in emitStateUpdates`\n );\n }\n // Handle parameter references from shorthand property assignments\n if (value.startsWith(\"param:\")) {\n const paramName = value.substring(6);\n return `payload.${this.sanitizeFieldName(paramName)}`;\n }\n // polly#147: a captured object-literal expression RHS (e.g.\n // \"sessionsMachine.value.outstanding + 1\"). Translate it like a\n // requires/ensures expression — signal references flatten to\n // contextStates[ctx].<field> (pre-state, unprimed, valid inside the\n // EXCEPT clause), arithmetic and operators pass through.\n if (value.startsWith(\"EXPR:\")) {\n return this.tsExpressionToTLA(value.substring(5), false);\n }\n // Check if this is already a TLA+ expression (compound operator or array mutation)\n // These contain @ (current value reference) or TLA+ operators\n if (this.isTLAExpression(value)) {\n // Replace undefined variable references with placeholder from Value set\n return this.sanitizeTLAExpression(value);\n }\n return `\"${value}\"`; // Regular string literal\n }\n return \"NULL\";\n }\n\n /**\n * Sanitize TLA+ expressions by replacing undefined variables with placeholders\n * Uses \"v1\" from our bounded Value set for abstract model checking\n */\n private sanitizeTLAExpression(expr: string): string {\n // Pattern to match Append(@, identifier) where identifier is not quoted\n const appendPattern = /Append\\(@,\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\)/g;\n\n return expr.replace(appendPattern, (match, varName) => {\n // If it's already a string literal or number, keep it\n if (/^\".*\"$/.test(varName) || /^\\d+$/.test(varName)) {\n return match;\n }\n\n // Replace with placeholder from Value set for abstract model checking\n return 'Append(@, \"v1\")';\n });\n }\n\n /**\n * Check if a string value is a TLA+ expression (not a literal string)\n * TLA+ expressions contain:\n * - @ (current value reference for EXCEPT)\n * - TLA+ operators: Append, SubSeq, Tail, Len, Head, etc.\n * - TLA+ syntax: \\o (concatenation), << >> (sequences)\n */\n private isTLAExpression(value: string): boolean {\n // Check for @ symbol (used in EXCEPT expressions)\n if (value.includes(\"@\")) {\n return true;\n }\n\n // Check for TLA+ sequence operators\n const tlaOperators = [\n \"Append\",\n \"SubSeq\",\n \"Tail\",\n \"Head\",\n \"Len\",\n \"\\\\o\", // Concatenation\n \"<<\", // Sequence start\n \"Cardinality\", // Set cardinality\n \"CHOOSE\", // Choice operator\n \"\\\\E\", // Exists quantifier\n \"\\\\A\", // Forall quantifier\n ];\n\n return tlaOperators.some((op) => value.includes(op));\n }\n\n private addRouteWithHandlers(_config: VerificationConfig, analysis: CodebaseAnalysis): void {\n this.line(\"\\\\* =============================================================================\");\n this.line(\"\\\\* Message Routing with State Transitions\");\n this.line(\"\\\\* =============================================================================\");\n this.line(\"\");\n\n if (analysis.handlers.length === 0) {\n // No handlers, just use base routing\n return;\n }\n\n this.line(\"\\\\* Route a message and invoke its handler\");\n this.line(\"UserRouteMessage(msgIndex) ==\");\n this.indent++;\n this.line(\"/\\\\ msgIndex \\\\in 1..Len(messages)\");\n this.line(\"/\\\\ LET msg == messages[msgIndex]\");\n this.line(' IN /\\\\ msg.status = \"pending\"');\n this.line(\" /\\\\ routingDepth' = routingDepth + 1\");\n this.line(\" /\\\\ routingDepth < 5\");\n this.line(\" /\\\\ \\\\E target \\\\in msg.targets :\");\n this.line(' /\\\\ IF target \\\\in Contexts /\\\\ ports[target] = \"connected\"');\n this.line(\" THEN \\\\* Successful delivery - route AND invoke handler\");\n this.line(\n ' /\\\\ messages\\' = [messages EXCEPT ![msgIndex].status = \"delivered\",'\n );\n this.line(\n \" ![msgIndex].deliveredTo = target]\"\n );\n this.line(\" /\\\\ delivered' = delivered \\\\union {msg.id}\");\n this.line(\n \" /\\\\ pendingRequests' = [id \\\\in DOMAIN pendingRequests \\\\ {msg.id} |->\"\n );\n this.line(\" pendingRequests[id]]\");\n this.line(\" /\\\\ time' = time + 1\");\n this.line(\n \" /\\\\ \\\\E p \\\\in PayloadType : payload' = p \\\\* Non-deterministic payload\"\n );\n this.line(\" /\\\\ StateTransition(target, msg.msgType)\");\n this.line(\" ELSE \\\\* Port not connected - message fails\");\n this.line(\n ' /\\\\ messages\\' = [messages EXCEPT ![msgIndex].status = \"failed\"]'\n );\n this.line(\n \" /\\\\ pendingRequests' = [id \\\\in DOMAIN pendingRequests \\\\ {msg.id} |->\"\n );\n this.line(\" pendingRequests[id]]\");\n this.line(\" /\\\\ time' = time + 1\");\n this.line(\n ` /\\\\ ${this.unchangedUserStates(undefined, [\"delivered\", \"payload\"])}`\n );\n this.line(\" /\\\\ UNCHANGED ports\");\n this.indent--;\n this.line(\"\");\n }\n\n /**\n * polly#117: emit PropagateMeshOp, the action that diffuses\n * mesh-document values between contexts. Gated on `config.mesh`.\n *\n * The action is intentionally simple: copy the source context's\n * value for the docId to the destination, requiring only that they\n * currently differ. This models Automerge sync at the\n * \"eventually-consistent\" level — TLC can fire the action at any\n * reachable state where two contexts disagree on a mesh document,\n * so cross-peer convergence claims can hold across the explored\n * state space rather than being trivially violated by every\n * routing nondeterminism.\n */\n private addPropagateMeshOp(): void {\n if (!this.hasMeshConfig()) return;\n this.line(\"\\\\* polly#117: propagate a mesh-document value from one context to another.\");\n this.line(\"\\\\* Models Automerge sync: src and dst must currently disagree on docId, and\");\n this.line(\"\\\\* the action copies src's value into dst's record. All other state is fixed.\");\n this.line(\"PropagateMeshOp(src, dst, docId) ==\");\n this.indent++;\n this.line(\"/\\\\ src # dst\");\n this.line(\"/\\\\ meshState[src][docId] # meshState[dst][docId]\");\n this.line(\"/\\\\ meshState' = [meshState EXCEPT ![dst][docId] = meshState[src][docId]]\");\n this.line(\n \"/\\\\ UNCHANGED <<ports, messages, pendingRequests, delivered, routingDepth, time, contextStates, payload>>\"\n );\n this.indent--;\n this.line(\"\");\n }\n\n private addNext(_config: VerificationConfig, analysis: CodebaseAnalysis): void {\n this.addPropagateMeshOp();\n\n this.line(\"\\\\* Next state relation (extends MessageRouter)\");\n this.line(\"UserNext ==\");\n this.indent++;\n\n // Check if there are any representable handlers (polly#144 — routes and\n // colon-namespaced messages count, not just bare TLA+ identifiers).\n const hasValidHandlers = analysis.handlers.some((h) =>\n this.canRepresentAsTLAAction(h.messageType)\n );\n\n if (hasValidHandlers) {\n // Use integrated routing + handlers\n // payload is UNCHANGED for non-message actions, but can change non-deterministically\n // when a message is routed (to model any possible payload value)\n const userPayload = this.unchangedUserStates(undefined, [\"payload\"]);\n this.line(`\\\\/ \\\\E c \\\\in Contexts : ConnectPort(c) /\\\\ ${userPayload}`);\n this.line(`\\\\/ \\\\E c \\\\in Contexts : DisconnectPort(c) /\\\\ ${userPayload}`);\n\n // Always use Tabs set (defined in config as integers or model values for symmetry)\n this.line(\n \"\\\\/ \\\\E src \\\\in Contexts : \\\\E targetSet \\\\in (SUBSET Contexts \\\\ {{}}) : \\\\E tab \\\\in Tabs : \\\\E msgType \\\\in UserMessageTypes :\"\n );\n this.indent++;\n this.line(`SendMessage(src, targetSet, tab, msgType) /\\\\ ${userPayload}`);\n this.indent--;\n this.line(\"\\\\/ \\\\E i \\\\in 1..Len(messages) : UserRouteMessage(i)\");\n this.line(`\\\\/ CompleteRouting /\\\\ ${userPayload}`);\n this.line(`\\\\/ \\\\E i \\\\in 1..Len(messages) : TimeoutMessage(i) /\\\\ ${userPayload}`);\n\n // polly#117: PropagateMeshOp diffuses mesh-document values between\n // contexts when mesh is declared in config. Models Automerge sync\n // as a non-deterministic state-equality action.\n if (this.hasMeshConfig()) {\n this.line(\n \"\\\\/ \\\\E src, dst \\\\in Contexts : \\\\E docId \\\\in MeshDocs : PropagateMeshOp(src, dst, docId)\"\n );\n }\n } else {\n // No valid handlers, all actions preserve contextStates and payload\n this.line(`\\\\/ Next /\\\\ ${this.unchangedUserStates(undefined, [\"payload\"])}`);\n }\n\n this.indent--;\n this.line(\"\");\n }\n\n private addSpec(): void {\n this.line(\"\\\\* Specification\");\n this.line(\"UserSpec == UserInit /\\\\ [][UserNext]_allVars /\\\\ WF_allVars(UserNext)\");\n this.line(\"\");\n }\n\n private addInvariants(config: VerificationConfig, _analysis: CodebaseAnalysis): void {\n this.line(\"\\\\* =============================================================================\");\n this.line(\"\\\\* Application Invariants\");\n this.line(\"\\\\* =============================================================================\");\n this.line(\"\");\n\n this.line(\"\\\\* TypeOK and NoRoutingLoops are inherited from MessageRouter\");\n this.line(\"\");\n\n this.line(\"\\\\* Application state type invariant\");\n this.line(\"UserStateTypeInvariant ==\");\n this.indent++;\n this.line(\"\\\\A ctx \\\\in Contexts :\");\n this.indent++;\n this.line(\"contextStates[ctx] \\\\in State\");\n this.indent--;\n this.indent--;\n this.line(\"\");\n\n // polly#160: desugar capability declarations into safety invariants BEFORE\n // the render below, so they flow through the same generateTLAInvariants /\n // INVARIANTS-clause path as JSDoc invariants (field names match by\n // construction via tsExpressionToTLA).\n if (config.capabilities && config.capabilities.length > 0) {\n this.addCapabilityInvariants(config.capabilities);\n }\n\n // Add extracted invariants from JSDoc\n if (this.extractedInvariants.length > 0) {\n this.line(\"\\\\* Extracted invariants from code annotations\");\n this.line(\"\");\n\n const invGenerator = new InvariantGenerator();\n const tlaInvariants = invGenerator.generateTLAInvariants(this.extractedInvariants, (expr) =>\n this.tsExpressionToTLA(expr, false)\n );\n\n for (const invDef of tlaInvariants) {\n this.line(invDef);\n this.line(\"\");\n }\n }\n\n // Add Tier 2 Optimization: Temporal constraints\n if (config.tier2?.temporalConstraints && config.tier2.temporalConstraints.length > 0) {\n this.addTemporalConstraints(config.tier2.temporalConstraints);\n }\n\n this.line(\"\\\\* State constraint to bound state space\");\n this.addStateConstraint(config, _analysis);\n\n // Module-end marker is emitted separately so temporal properties (if\n // any) land inside the module rather than after its closing line.\n }\n\n /**\n * polly#160 (A3): desugar capability declarations into safety invariants.\n *\n * A capability `{name, enabledBy, requires}` becomes \"granting the capability\n * implies its precondition holds\": `enabledBy => requires`, encoded as the\n * material implication `(!(enabledBy)) || (requires)`. The explicit\n * disjunction is deliberate: tsExpressionToTLA has no `=>` rewrite rule (a\n * bare `=>` survives only by accident), but it does translate `!`→`~`,\n * `||`→`\\/`, and the `state.`/`.value` field forms, yielding\n * `(~(...)) \\/ (...)`. Pushed onto extractedInvariants so the existing render\n * + INVARIANTS-clause path picks them up.\n */\n private addCapabilityInvariants(capabilities: CapabilityConfig[]): void {\n for (const cap of capabilities) {\n this.extractedInvariants.push({\n name: `Capability_${cap.name}`,\n description: cap.message\n ? `polly#160 capability: ${cap.message}`\n : `polly#160 capability: ${cap.name} requires its precondition`,\n expression: `(!(${cap.enabledBy})) || (${cap.requires})`,\n });\n }\n }\n\n /**\n * Add temporal constraint invariants (Tier 2 optimization)\n */\n private addTemporalConstraints(\n constraints: Array<{ before: string; after: string; description?: string }>\n ): void {\n this.line(\"\\\\* Tier 2: Temporal constraint invariants\");\n this.line(\"\\\\* Enforce ordering requirements between message types\");\n this.line(\"\");\n\n for (let i = 0; i < constraints.length; i++) {\n const constraint = constraints[i];\n if (!constraint) continue;\n const invName = `TemporalConstraint${i + 1}`;\n\n if (constraint.description) {\n this.line(`\\\\* ${constraint.description}`);\n }\n this.line(`${invName} ==`);\n this.indent++;\n this.line(\n `\\\\* If ${constraint.after} has been delivered, then ${constraint.before} must have been delivered`\n );\n this.line(\n `(\\\\E i \\\\in 1..Len(messages) : messages[i].id \\\\in delivered /\\\\ messages[i].msgType = \"${constraint.after}\")`\n );\n this.line(\"=>\");\n this.line(\n `(\\\\E i \\\\in 1..Len(messages) : messages[i].id \\\\in delivered /\\\\ messages[i].msgType = \"${constraint.before}\")`\n );\n this.indent--;\n this.line(\"\");\n\n // Track this invariant for config generation\n this.extractedInvariants.push({\n name: invName,\n description:\n constraint.description || `${constraint.before} must happen before ${constraint.after}`,\n expression: `${constraint.before} happens-before ${constraint.after}`,\n location: { file: \"\", line: 0 },\n });\n }\n }\n\n /**\n * Generate StateConstraint with per-message bounds support (Tier 1 optimization),\n * bounded exploration (Tier 2 optimization), and user-defined state constraints\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Multiple constraint types require nested conditionals\n private addStateConstraint(config: VerificationConfig, analysis: CodebaseAnalysis): void {\n const hasPerMessageBounds =\n config.messages.perMessageBounds && Object.keys(config.messages.perMessageBounds).length > 0;\n const hasBoundedExploration = config.tier2?.boundedExploration?.maxDepth !== undefined;\n const hasUserConstraints = (analysis.globalStateConstraints?.length ?? 0) > 0;\n\n const needsConjunction = hasPerMessageBounds || hasBoundedExploration || hasUserConstraints;\n\n this.line(\"StateConstraint ==\");\n this.indent++;\n\n if (needsConjunction) {\n // Multiple constraints\n this.line(\"/\\\\ Len(messages) <= MaxMessages\");\n\n // Tier 1: Per-message bounds\n if (hasPerMessageBounds && config.messages.perMessageBounds) {\n for (const [msgType, _bound] of Object.entries(config.messages.perMessageBounds)) {\n const constName = `MaxMessages_${msgType}`;\n this.line(\n `/\\\\ Cardinality({m \\\\in DOMAIN messages : messages[m].msgType = \"${msgType}\"}) <= ${constName}`\n );\n }\n }\n\n // Tier 2: Bounded exploration (depth limit)\n if (hasBoundedExploration && config.tier2?.boundedExploration?.maxDepth) {\n this.line(\n `/\\\\ TLCGet(\"level\") <= ${config.tier2.boundedExploration.maxDepth} \\\\* Tier 2: Bounded exploration`\n );\n }\n\n // User-defined state constraints (stateConstraint() calls)\n if (hasUserConstraints && analysis.globalStateConstraints) {\n for (const constraint of analysis.globalStateConstraints) {\n const tlaExpr = this.tsExpressionToTLA(constraint.expression, false);\n this.line(`\\\\* ${constraint.name}${constraint.message ? `: ${constraint.message}` : \"\"}`);\n this.line(`/\\\\ \\\\A ctx \\\\in Contexts : (${tlaExpr})`);\n }\n }\n } else {\n // Simple global bound only\n this.line(\"Len(messages) <= MaxMessages\");\n }\n\n this.indent--;\n this.line(\"\");\n\n // Log bounded exploration\n if (hasBoundedExploration && config.tier2?.boundedExploration?.maxDepth) {\n console.log(\n `[INFO] [TLAGenerator] Tier 2: Bounded exploration with maxDepth = ${config.tier2.boundedExploration.maxDepth}`\n );\n }\n\n // Log user-defined state constraints\n if (hasUserConstraints && analysis.globalStateConstraints) {\n console.log(\n `[INFO] [TLAGenerator] ${analysis.globalStateConstraints.length} user-defined state constraint(s) added to CONSTRAINT clause`\n );\n }\n }\n\n /**\n * Add delivered tracking variables for temporal properties\n */\n private addDeliveredTracking(): void {\n this.line(\"\");\n const tempGenerator = new TemporalTLAGenerator();\n const deliveredVars = tempGenerator.generateDeliveredVariables();\n this.line(deliveredVars);\n this.line(\"\");\n }\n\n /**\n * Add temporal property definitions\n */\n private addTemporalProperties(): void {\n this.line(\"\\\\* =============================================================================\");\n this.line(\"\\\\* Temporal Properties\");\n this.line(\"\\\\* =============================================================================\");\n this.line(\"\");\n\n const tempGenerator = new TemporalTLAGenerator();\n const tlaProperties = tempGenerator.generateTLAProperties(this.temporalProperties);\n\n for (const propDef of tlaProperties) {\n this.line(propDef);\n this.line(\"\");\n }\n\n // Module-end marker is emitted by the top-level generator so it\n // always lands as the last line of the spec.\n }\n\n private fieldConfigToTLAType(\n _fieldPath: string,\n fieldConfig: FieldConfig,\n _config: VerificationConfig\n ): string {\n // Try each type pattern in order\n const typeResult =\n this.tryAbstractType(fieldConfig) ||\n this.tryBooleanType(fieldConfig) ||\n this.tryEnumType(fieldConfig) ||\n this.tryArrayType(fieldConfig) ||\n this.tryExplicitNumberType(fieldConfig) ||\n this.tryNumberType(fieldConfig) ||\n this.tryStringType(fieldConfig) ||\n this.tryMapType(fieldConfig);\n\n return typeResult || \"Value\";\n }\n\n /**\n * Try to match abstract type pattern\n * Abstract fields use the generic Value type for model checking.\n * Nullable abstract fields include NULL in the union.\n */\n private tryAbstractType(fieldConfig: FieldConfig): string | null {\n if (\"abstract\" in fieldConfig && fieldConfig.abstract === true) {\n if (\"nullable\" in fieldConfig && fieldConfig.nullable === true) {\n return \"Value \\\\union {NULL}\";\n }\n return \"Value\";\n }\n return null;\n }\n\n /**\n * Try to match boolean type pattern\n */\n private tryBooleanType(fieldConfig: FieldConfig): string | null {\n if (\"type\" in fieldConfig && fieldConfig.type === \"boolean\") {\n return \"BOOLEAN\";\n }\n\n // Check for boolean array: [true, false] or [false, true]\n if (Array.isArray(fieldConfig)) {\n if (\n fieldConfig.length === 2 &&\n typeof fieldConfig[0] === \"boolean\" &&\n typeof fieldConfig[1] === \"boolean\"\n ) {\n return \"BOOLEAN\";\n }\n }\n\n return null;\n }\n\n /**\n * Try to match enum type pattern\n */\n private tryEnumType(fieldConfig: FieldConfig): string | null {\n if (\"type\" in fieldConfig && fieldConfig.type === \"enum\" && fieldConfig.values) {\n const values = fieldConfig.values.map((v: string) => `\"${v}\"`).join(\", \");\n return `{${values}}`;\n }\n return null;\n }\n\n /**\n * Try to match array type pattern\n */\n private tryArrayType(fieldConfig: FieldConfig): string | null {\n if (\"maxLength\" in fieldConfig) {\n return \"Seq(Value)\";\n }\n return null;\n }\n\n /**\n * Try to match explicit number type: { type: \"number\", min?, max? }\n */\n private tryExplicitNumberType(fieldConfig: FieldConfig): string | null {\n if (\"type\" in fieldConfig && fieldConfig.type === \"number\") {\n const min = \"min\" in fieldConfig && fieldConfig.min != null ? fieldConfig.min : 0;\n const max = \"max\" in fieldConfig && fieldConfig.max != null ? fieldConfig.max : 100;\n return `${min}..${max}`;\n }\n return null;\n }\n\n /**\n * Try to match number type pattern\n */\n private tryNumberType(fieldConfig: FieldConfig): string | null {\n if (\"min\" in fieldConfig && \"max\" in fieldConfig) {\n const min = fieldConfig.min || 0;\n const max = fieldConfig.max || 100;\n return `${min}..${max}`;\n }\n return null;\n }\n\n /**\n * Try to match string type pattern\n */\n private tryStringType(fieldConfig: FieldConfig): string | null {\n if (!(\"values\" in fieldConfig)) return null;\n\n if (fieldConfig.values && Array.isArray(fieldConfig.values)) {\n const values = fieldConfig.values.map((v: string) => `\"${v}\"`).join(\", \");\n return `{${values}}`;\n }\n\n return \"STRING\";\n }\n\n /**\n * Try to match map type pattern\n */\n private tryMapType(fieldConfig: FieldConfig): string | null {\n if (\"maxSize\" in fieldConfig) {\n return \"[Keys -> Value]\";\n }\n return null;\n }\n\n private getInitialValueFromAnalysis(fieldAnalysis: FieldAnalysis): string {\n const typeInfo = fieldAnalysis.type;\n\n switch (typeInfo.kind) {\n case \"boolean\":\n return \"FALSE\";\n case \"string\":\n return this.getInitialStringValue(typeInfo, fieldAnalysis.bounds);\n case \"number\":\n return this.getInitialNumberValue(fieldAnalysis.bounds);\n case \"enum\":\n return this.getInitialEnumValue(typeInfo);\n case \"array\":\n return \"<<>>\";\n case \"set\":\n return \"{}\";\n case \"map\":\n return \"[x \\\\in {} |-> NULL]\";\n case \"object\":\n return \"NULL\";\n case \"null\":\n return \"NULL\";\n case \"union\":\n return this.getInitialUnionValue(typeInfo, fieldAnalysis);\n default:\n return \"NULL\";\n }\n }\n\n /**\n * Get initial value for string type\n */\n private getInitialStringValue(\n typeInfo: { enumValues?: string[] },\n bounds?: { values?: string[] }\n ): string {\n if (typeInfo.enumValues && typeInfo.enumValues.length > 0) {\n return `\"${typeInfo.enumValues[0]}\"`;\n }\n if (bounds?.values && bounds.values.length > 0) {\n return `\"${bounds.values[0]}\"`;\n }\n return '\"\"';\n }\n\n /**\n * Get initial value for number type\n */\n private getInitialNumberValue(bounds?: { min?: number }): string {\n if (bounds?.min !== undefined) {\n return `${bounds.min}`;\n }\n return \"0\";\n }\n\n /**\n * Get initial value for enum type\n */\n private getInitialEnumValue(typeInfo: { enumValues?: string[] }): string {\n if (typeInfo.enumValues && typeInfo.enumValues.length > 0) {\n return `\"${typeInfo.enumValues[0]}\"`;\n }\n return '\"\"';\n }\n\n /**\n * Get initial value for union type\n */\n private getInitialUnionValue(\n typeInfo: { unionTypes?: Array<{ kind: string }> },\n fieldAnalysis: FieldAnalysis\n ): string {\n if (typeInfo.unionTypes && typeInfo.unionTypes.length > 0) {\n const firstType =\n typeInfo.unionTypes.find((t) => t.kind !== \"null\") || typeInfo.unionTypes[0];\n return this.getInitialValueFromAnalysis({\n ...fieldAnalysis,\n type: firstType as unknown as FieldAnalysis[\"type\"],\n });\n }\n return \"NULL\";\n }\n\n private inferTLATypeFromAnalysis(fieldAnalysis: FieldAnalysis): string {\n const typeInfo = fieldAnalysis.type;\n\n // Handle nullable types\n const makeNullable = (baseType: string): string => {\n return typeInfo.nullable ? `${baseType} \\\\union {NULL}` : baseType;\n };\n\n // Convert TypeKind to TLA+ type\n switch (typeInfo.kind) {\n case \"boolean\":\n return makeNullable(\"BOOLEAN\");\n\n case \"string\":\n // Check if there are enum values\n if (typeInfo.enumValues && typeInfo.enumValues.length > 0) {\n const values = typeInfo.enumValues.map((v) => `\"${v}\"`).join(\", \");\n return makeNullable(`{${values}}`);\n }\n // Check bounds for bounded strings\n if (fieldAnalysis.bounds?.values && fieldAnalysis.bounds.values.length > 0) {\n const values = fieldAnalysis.bounds.values.map((v) => `\"${v}\"`).join(\", \");\n return makeNullable(`{${values}}`);\n }\n return makeNullable(\"STRING\");\n\n case \"number\":\n // Check for numeric bounds\n if (fieldAnalysis.bounds?.min !== undefined && fieldAnalysis.bounds?.max !== undefined) {\n return makeNullable(`${fieldAnalysis.bounds.min}..${fieldAnalysis.bounds.max}`);\n }\n return makeNullable(\"Int\");\n\n case \"enum\":\n if (typeInfo.enumValues && typeInfo.enumValues.length > 0) {\n const values = typeInfo.enumValues.map((v) => `\"${v}\"`).join(\", \");\n return makeNullable(`{${values}}`);\n }\n return makeNullable(\"STRING\");\n\n case \"array\":\n // Sequence type\n if (typeInfo.elementType) {\n // For now, use simplified Value type\n return makeNullable(\"Seq(Value)\");\n }\n return makeNullable(\"Seq(Value)\");\n\n case \"set\":\n // Set type\n return makeNullable(\"SUBSET Value\");\n\n case \"map\":\n // Function type (TLA+ records/functions)\n return makeNullable(\"[Keys -> Value]\");\n\n case \"object\":\n // For nested objects, we'd need recursive handling\n // For now, use generic Value\n return makeNullable(\"Value\");\n\n case \"union\":\n // For unions, try to find a common representation\n // For now, use generic Value\n return makeNullable(\"Value\");\n\n case \"null\":\n return \"NULL\";\n default:\n return \"Value\";\n }\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Config type discrimination requires multiple conditionals\n private getInitialValue(fieldConfig: FieldConfig): string {\n // Handle abstract fields - use value from bounded Value set\n if (\"abstract\" in fieldConfig && fieldConfig.abstract === true) {\n if (\"nullable\" in fieldConfig && fieldConfig.nullable === true) {\n return \"NULL\"; // Nullable abstract fields start as NULL\n }\n return '\"v1\"'; // Default value from Value set\n }\n\n // Check for boolean array: [true, false]\n if (Array.isArray(fieldConfig)) {\n if (fieldConfig.length > 0 && typeof fieldConfig[0] === \"boolean\") {\n return fieldConfig[0] ? \"TRUE\" : \"FALSE\";\n }\n // String array\n if (fieldConfig.length > 0 && typeof fieldConfig[0] === \"string\") {\n return `\"${fieldConfig[0]}\"`;\n }\n }\n\n if (\"type\" in fieldConfig) {\n if (fieldConfig.type === \"boolean\") {\n return \"FALSE\";\n }\n if (fieldConfig.type === \"enum\" && fieldConfig.values && fieldConfig.values.length > 0) {\n return `\"${fieldConfig.values[0]}\"`;\n }\n // Handle array type\n if (fieldConfig.type === \"array\") {\n return \"<<>>\"; // Empty sequence\n }\n // Handle string type\n if (fieldConfig.type === \"string\") {\n return '\"\"'; // Empty string\n }\n // Handle explicit number type\n if (fieldConfig.type === \"number\") {\n return String(\"min\" in fieldConfig && fieldConfig.min != null ? fieldConfig.min : 0);\n }\n }\n\n if (\"maxLength\" in fieldConfig) {\n return \"<<>>\"; // Empty sequence\n }\n\n if (\"min\" in fieldConfig) {\n return String(fieldConfig.min || 0);\n }\n\n if (\"values\" in fieldConfig && fieldConfig.values && fieldConfig.values.length > 0) {\n return `\"${fieldConfig.values[0]}\"`;\n }\n\n if (\"maxSize\" in fieldConfig) {\n // Map with all keys mapped to default value\n return '[k \\\\in Keys |-> \"v1\"]';\n }\n\n return \"0\"; // Default fallback\n }\n\n private fieldToConstName(fieldPath: string): string {\n return fieldPath.replace(/\\./g, \"_\").toUpperCase();\n }\n\n private sanitizeFieldName(fieldPath: string): string {\n return fieldPath.replace(/\\./g, \"_\");\n }\n\n private line(content: string): void {\n if (content === \"\") {\n this.lines.push(\"\");\n } else {\n const indentation = \" \".repeat(this.indent);\n this.lines.push(indentation + content);\n }\n }\n}\n\nexport async function generateTLA(\n config: VerificationConfig,\n analysis: CodebaseAnalysis\n): Promise<{ spec: string; cfg: string; validation?: ValidationReport }> {\n const generator = new TLAGenerator();\n return await generator.generate(config, analysis);\n}\n\n/**\n * Filter messages.perMessageBounds to only the subsystem's handlers, then\n * layer the subsystem-level bounds override on top in-place. Mutates the\n * passed messages object.\n */\nfunction applySubsystemBounds(\n messages: VerificationConfig[\"messages\"],\n subsystem: SubsystemConfig,\n handlerNames: Set<string>\n): void {\n if (messages.perMessageBounds) {\n const filtered: Record<string, number> = {};\n for (const [msg, bound] of Object.entries(messages.perMessageBounds)) {\n if (handlerNames.has(msg)) {\n filtered[msg] = bound;\n }\n }\n messages.perMessageBounds = filtered;\n }\n\n const override = subsystem.bounds;\n if (!override) return;\n\n if (override.maxInFlight !== undefined) {\n messages.maxInFlight = override.maxInFlight;\n }\n if (override.perMessageBounds) {\n const merged: Record<string, number> = { ...(messages.perMessageBounds ?? {}) };\n for (const [msg, bound] of Object.entries(override.perMessageBounds)) {\n if (handlerNames.has(msg)) {\n merged[msg] = bound;\n }\n }\n messages.perMessageBounds = merged;\n }\n}\n\n/**\n * Generate a filtered TLA+ spec for a single subsystem.\n *\n * Filters the config's state/messages and analysis's handlers/messageTypes\n * to only those belonging to the subsystem, then delegates to the standard generator.\n */\nexport async function generateSubsystemTLA(\n _subsystemName: string,\n subsystem: SubsystemConfig,\n config: VerificationConfig,\n analysis: CodebaseAnalysis\n): Promise<{ spec: string; cfg: string; validation?: ValidationReport }> {\n const stateFields = new Set(subsystem.state);\n const handlerNames = new Set(subsystem.handlers);\n\n // Filter state config to only subsystem fields\n const filteredState: Record<string, unknown> = {};\n for (const [field, fieldConfig] of Object.entries(config.state)) {\n if (stateFields.has(field)) {\n filteredState[field] = fieldConfig;\n }\n }\n\n // Filter messages config\n const filteredMessages = {\n ...config.messages,\n include: subsystem.handlers, // only include this subsystem's handlers\n };\n // Remove exclude since we're using explicit include\n filteredMessages.exclude = undefined;\n\n // Filter perMessageBounds to only relevant handlers, then layer the\n // per-subsystem bounds override on top. A subsystem with no parameterised\n // handlers can safely run at higher maxInFlight to exercise multi-step\n // ensures (handlers reachable only after another handler has fired) without\n // forcing every other subsystem to pay the same exploration cost.\n applySubsystemBounds(filteredMessages, subsystem, handlerNames);\n\n // Build filtered config\n const filteredConfig: VerificationConfig = {\n ...config,\n state: filteredState as unknown as VerificationConfig[\"state\"],\n messages: filteredMessages,\n subsystems: undefined, // don't recurse\n };\n\n // Filter temporal constraints to only those involving subsystem handlers\n if (filteredConfig.tier2?.temporalConstraints) {\n filteredConfig.tier2 = {\n ...filteredConfig.tier2,\n temporalConstraints: filteredConfig.tier2.temporalConstraints.filter(\n (tc) => handlerNames.has(tc.before) && handlerNames.has(tc.after)\n ),\n };\n }\n\n // Filter globalStateConstraints to only those referencing subsystem state fields.\n // Expression uses signalName.value.field pattern; config uses signalName.field (dot notation).\n // Convert subsystem state fields to the signal.value.field patterns they represent.\n const subsystemFieldPatterns = subsystem.state.map((field) => {\n // \"user.loggedIn\" -> matches \"user.value.loggedIn\" in expression\n const dotIdx = field.indexOf(\".\");\n if (dotIdx >= 0) {\n return `${field.substring(0, dotIdx)}.value.${field.substring(dotIdx + 1)}`;\n }\n // \"todos\" -> matches \"todos.value\" in expression\n return `${field}.value`;\n });\n\n const filteredGlobalStateConstraints = (analysis.globalStateConstraints ?? []).filter(\n (constraint) =>\n subsystemFieldPatterns.some((pattern) => constraint.expression.includes(pattern))\n );\n\n // Filter analysis to only subsystem handlers/messageTypes\n const filteredAnalysis: CodebaseAnalysis = {\n ...analysis,\n messageTypes: analysis.messageTypes.filter((mt) => handlerNames.has(mt)),\n handlers: analysis.handlers.filter((h) => handlerNames.has(h.messageType)),\n globalStateConstraints: filteredGlobalStateConstraints,\n };\n\n const generator = new TLAGenerator();\n return await generator.generate(filteredConfig, filteredAnalysis, `UserApp_${_subsystemName}`);\n}\n",
13
+ "/**\n * Parse `.feature` files into the runner's normalized AST.\n *\n * Thin wrapper over `@cucumber/gherkin` (parser only — no cucumber runtime):\n * we keep our own {@link ParsedFeature} shape so the rest of the tool never\n * touches the gherkin message types, and swapping the parser stays a one-file\n * change. Responsibilities beyond raw parsing:\n * - normalize And/But to the preceding concrete keyword (Given/When/Then);\n * - fold Background steps into a feature-level list;\n * - expand each Scenario Outline into one concrete scenario per Examples row.\n */\nimport { AstBuilder, GherkinClassicTokenMatcher, Parser } from \"@cucumber/gherkin\";\nimport type { GherkinDocument, Scenario } from \"@cucumber/messages\";\nimport { IdGenerator } from \"@cucumber/messages\";\nimport type { ParsedFeature, ParsedScenario, ParsedStep, StepKeyword } from \"./types.ts\";\n\nfunction newParser() {\n return new Parser(new AstBuilder(IdGenerator.uuid()), new GherkinClassicTokenMatcher());\n}\n\n/** And/But inherit the previous concrete keyword; a leading And/But defaults to Given. */\nfunction normalizeKeyword(raw: string, prev: StepKeyword | null): StepKeyword {\n const k = raw.trim().toLowerCase();\n if (k === \"given\") return \"given\";\n if (k === \"when\") return \"when\";\n if (k === \"then\") return \"then\";\n return prev ?? \"given\";\n}\n\ninterface RawStep {\n keyword: string;\n text: string;\n location?: { line?: number };\n}\n\nfunction normalizeSteps(rawSteps: readonly RawStep[]): ParsedStep[] {\n const out: ParsedStep[] = [];\n let prev: StepKeyword | null = null;\n for (const s of rawSteps) {\n const keyword = normalizeKeyword(s.keyword, prev);\n prev = keyword;\n out.push({\n keyword,\n rawKeyword: s.keyword.trim(),\n text: s.text.trim(),\n line: s.location?.line ?? 0,\n });\n }\n return out;\n}\n\nfunction tagNames(tags: ReadonlyArray<{ name: string }> | undefined): string[] {\n return (tags ?? []).map((t) => t.name.replace(/^@/, \"\"));\n}\n\n/** Substitute `<placeholder>` cells from an Examples row into step text. */\nfunction fillOutline(text: string, headers: string[], cells: string[]): string {\n let filled = text;\n headers.forEach((h, i) => {\n filled = filled.split(`<${h}>`).join(cells[i] ?? \"\");\n });\n return filled;\n}\n\n/** A plain scenario, or one concrete scenario per Scenario Outline Examples row. */\nfunction buildScenarios(sc: Scenario): ParsedScenario[] {\n const baseSteps = sc.steps ?? [];\n const tags = tagNames(sc.tags);\n const examples = sc.examples ?? [];\n\n if (examples.length === 0) {\n return [\n { name: sc.name, tags, steps: normalizeSteps(baseSteps), line: sc.location?.line ?? 0 },\n ];\n }\n\n const out: ParsedScenario[] = [];\n for (const ex of examples) {\n const headers = (ex.tableHeader?.cells ?? []).map((c) => c.value);\n for (const row of ex.tableBody ?? []) {\n const cells = (row.cells ?? []).map((c) => c.value);\n const rowSteps = baseSteps.map((s) => ({\n keyword: s.keyword,\n text: fillOutline(s.text, headers, cells),\n location: s.location,\n }));\n const label = headers.map((h, i) => `${h}=${cells[i] ?? \"\"}`).join(\", \");\n out.push({\n name: `${sc.name} [${label}]`,\n tags: [...tags, ...tagNames(ex.tags)],\n steps: normalizeSteps(rowSteps),\n line: row.location?.line ?? sc.location?.line ?? 0,\n fromOutline: true,\n });\n }\n }\n return out;\n}\n\nexport function parseFeatureText(text: string, file: string): ParsedFeature {\n const doc: GherkinDocument = newParser().parse(text);\n const feature = doc.feature;\n if (!feature) {\n return { name: \"\", description: \"\", tags: [], background: [], scenarios: [], file };\n }\n\n let background: ParsedStep[] = [];\n const scenarios: ParsedScenario[] = [];\n\n for (const child of feature.children ?? []) {\n if (child.background) {\n background = normalizeSteps(child.background.steps ?? []);\n } else if (child.scenario) {\n scenarios.push(...buildScenarios(child.scenario));\n }\n }\n\n return {\n name: feature.name,\n description: (feature.description ?? \"\").trim(),\n tags: tagNames(feature.tags),\n background,\n scenarios,\n file,\n };\n}\n\nexport async function parseFeatureFile(path: string): Promise<ParsedFeature> {\n const text = await Bun.file(path).text();\n return parseFeatureText(text, path);\n}\n",
14
+ "/**\n * The step-binding registry and matcher.\n *\n * `defineStep()` is the consumer-facing keystone: one call registers a binding\n * that the runner executes (`given`/`when`/`then`) AND the verify extractor\n * reads (`message`/`stateExpr`). `defineWorld()` records how to build and\n * cold-reset the real-factory world.\n *\n * Patterns use a small Cucumber-expression subset: `{string}`, `{int}`,\n * `{float}`, `{word}`. Everything else is matched literally. That covers\n * declarative steps without dragging in the full cucumber-expressions library.\n *\n * The registry lives on `globalThis`, not in a module-level array, on purpose:\n * `polly bdd` ships as two bundles (the CLI and the `@fairfox/polly/bdd`\n * library export). `build-lib` runs with `splitting: false`, so this module is\n * *inlined separately into each bundle* — a module-level array would give the\n * runner and the consumer's `defineWorld` two different registries. A single\n * global slot is the standard cross-bundle-singleton fix.\n */\nimport type { StepBinding, StepKeyword, WorldDef } from \"./types.ts\";\n\ninterface CompiledBinding {\n binding: StepBinding;\n regex: RegExp;\n}\n\ninterface RegistryState {\n bindings: CompiledBinding[];\n worldDef: WorldDef | null;\n}\n\ndeclare global {\n // An ambient global declaration — `var` is the only legal form here.\n var __pollyBddRegistry__: RegistryState | undefined;\n}\n\nfunction state(): RegistryState {\n globalThis.__pollyBddRegistry__ ??= { bindings: [], worldDef: null };\n return globalThis.__pollyBddRegistry__;\n}\n\n/** Translate a Cucumber-expression pattern into an anchored RegExp. */\nexport function compilePattern(pattern: string): RegExp {\n // Escape regex metacharacters, then re-introduce capture groups for {tokens}.\n const escaped = pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const withGroups = escaped\n // {string} — double- or single-quoted; capture the inner text. The\n // alternation MUST be wrapped in a non-capturing group, or the `|` would\n // bind to the whole pattern and shatter any step with two+ tokens.\n .replace(/\\\\\\{string\\\\\\}/g, `(?:\"([^\"]*)\"|'([^']*)')`)\n .replace(/\\\\\\{int\\\\\\}/g, \"([-+]?\\\\d+)\")\n .replace(/\\\\\\{float\\\\\\}/g, \"([-+]?\\\\d*\\\\.?\\\\d+)\")\n .replace(/\\\\\\{word\\\\\\}/g, \"([^\\\\s]+)\");\n return new RegExp(`^${withGroups}$`);\n}\n\nexport function defineStep(binding: StepBinding): void {\n state().bindings.push({ binding, regex: compilePattern(binding.pattern) });\n}\n\nexport function defineWorld(def: WorldDef): void {\n state().worldDef = def;\n}\n\nexport function getWorldDef(): WorldDef | null {\n return state().worldDef;\n}\n\n/** Drop all registrations — used between isolated runs/tests. */\nexport function resetRegistry(): void {\n const s = state();\n s.bindings.length = 0;\n s.worldDef = null;\n}\n\nexport interface StepMatch {\n binding: StepBinding;\n args: string[];\n}\n\n/**\n * Find the binding whose pattern matches `text`. Captured groups become the\n * step arguments (the `{string}` alternation yields two groups per token, so\n * we drop the undefined half).\n *\n * When `keyword` is given, a binding that *has* the callback for that keyword\n * wins over one that merely matches the text — so the same phrase can serve as\n * a `given` precondition in one scenario and a `then` assertion in another.\n */\nexport function matchStep(text: string, keyword?: StepKeyword): StepMatch | null {\n let textOnlyFallback: StepMatch | null = null;\n for (const { binding, regex } of state().bindings) {\n const m = regex.exec(text);\n if (!m) continue;\n const args = m.slice(1).filter((g) => g !== undefined);\n if (!keyword || binding[keyword]) return { binding, args };\n textOnlyFallback ??= { binding, args };\n }\n return textOnlyFallback;\n}\n\n/** Snapshot of all registered bindings (for the verify extractor). */\nexport function registeredBindings(): StepBinding[] {\n return state().bindings.map((c) => c.binding);\n}\n",
15
+ "/**\n * The deeper verify cross-link: reduce each scenario to its *Then-predicate* —\n * the observable post-state a passing scenario claims is reachable.\n *\n * Where {@link extractTraces} (and `polly bdd check`) ask \"does this scenario\n * speak the config's vocabulary?\", a witness asks the *formal* question: \"can\n * the exhaustive model actually reach the state this scenario asserts?\" A\n * scenario whose Then-state the model proves unreachable is a scenario that\n * lies — green in the runner, impossible in the model. `polly verify --witness`\n * turns each predicate produced here into a per-scenario TLC reachability check\n * (tools/verify); this module never runs a model checker — it only reduces.\n *\n * The reduction reuses the same dual-use `stateExpr` metadata the static check\n * reads, but it needs the *whole* predicate, not just the field names. So it\n * substitutes the values captured from the step text into the binding's\n * `stateExpr` placeholders: a `then` bound to `user.role === \"{0}\"` matched\n * against `their role is \"admin\"` reduces to `user.role === \"admin\"`. Then-steps\n * whose `stateExpr` is a bare field reference (no comparison) or absent (a\n * runtime-only assertion like `the change is refused`) are not state-observable\n * outcomes — they are reported as skipped, never silently dropped.\n */\nimport { parseFeatureFile } from \"./parse.ts\";\nimport { matchStep, resetRegistry } from \"./steps.ts\";\n\n/** A scenario reduced to the post-state it claims, ready for the verify witness. */\nexport interface ScenarioWitness {\n feature: string;\n scenario: string;\n tags: string[];\n file: string;\n /**\n * The conjoined Then-predicate (TS, `signal.field` dialect, values\n * substituted) — e.g. `user.loggedIn === true && user.role === \"admin\"`.\n * `null` when the scenario has no state-observable outcome to witness.\n */\n predicate: string | null;\n /** Dotted state-field paths the predicate references (for subsystem routing). */\n fields: string[];\n /** Then-step texts skipped: a bare field ref, no binding, or a runtime-only check. */\n skipped: string[];\n}\n\nasync function loadStepModules(stepFiles: string[]): Promise<void> {\n resetRegistry();\n for (const file of stepFiles) {\n await import(`${file}?t=${Bun.nanoseconds()}`);\n }\n}\n\n/** A predicate is witnessable only if it actually compares — a bare field cannot. */\nconst COMPARISON = /===|!==|==|!=|<=|>=|<|>/;\n\n/** Substitute `{0}`, `{1}`, … in a stateExpr with the values captured from the step text. */\nfunction substituteArgs(expr: string, args: string[]): string {\n return expr.replace(/\\{(\\d+)\\}/g, (whole, index) => args[Number(index)] ?? whole);\n}\n\n/** Dotted identifier paths in an expression, minus string literals and keywords. */\nfunction fieldsIn(expr: string): string[] {\n const noStrings = expr.replace(/\"[^\"]*\"|'[^']*'/g, \"\");\n const ids = noStrings.match(/[a-zA-Z_$][\\w$]*(?:\\.[a-zA-Z_$][\\w$]*)*/g) ?? [];\n const ignore = new Set([\"true\", \"false\", \"null\", \"undefined\", \"length\", \"value\"]);\n return (\n ids\n .filter((id) => !ignore.has(id) && Number.isNaN(Number(id)))\n // Drop a trailing `.length` so routing sees the underlying field (`todos`).\n .map((id) => id.replace(/\\.length$/, \"\"))\n );\n}\n\n/**\n * Reduce one scenario's Then steps to a witness. Conjoins every Then whose\n * bound `stateExpr` resolves to a comparison; records the rest as skipped.\n */\nfunction reduceScenario(\n feature: { name: string; tags: string[]; background: ParsedStepLike[]; file: string },\n scenario: { name: string; tags: string[]; steps: ParsedStepLike[] }\n): ScenarioWitness {\n const thenSteps = [...feature.background, ...scenario.steps].filter((s) => s.keyword === \"then\");\n const conjuncts: string[] = [];\n const skipped: string[] = [];\n\n for (const step of thenSteps) {\n const match = matchStep(step.text, \"then\");\n const expr = match?.binding.stateExpr;\n if (!expr) {\n skipped.push(step.text);\n continue;\n }\n const resolved = substituteArgs(expr, match.args);\n if (!COMPARISON.test(resolved)) {\n // A bare field reference (`todos`, `user.role`) names a field but asserts\n // nothing checkable — useful to `polly bdd check`, not to a witness.\n skipped.push(step.text);\n continue;\n }\n conjuncts.push(resolved);\n }\n\n const predicate = conjuncts.length > 0 ? conjuncts.join(\" && \") : null;\n const fields = [...new Set(conjuncts.flatMap(fieldsIn))];\n return {\n feature: feature.name,\n scenario: scenario.name,\n tags: [...feature.tags, ...scenario.tags],\n file: feature.file,\n predicate,\n fields,\n skipped,\n };\n}\n\ninterface ParsedStepLike {\n keyword: \"given\" | \"when\" | \"then\";\n text: string;\n}\n\n/**\n * Reduce every scenario in the given feature files to a {@link ScenarioWitness}.\n * Step modules are loaded for their `defineStep` side effects (the same import\n * trick {@link extractTraces} uses) so `matchStep` can resolve each Then.\n */\nexport async function extractWitnesses(\n featureFiles: string[],\n stepFiles: string[]\n): Promise<ScenarioWitness[]> {\n await loadStepModules(stepFiles);\n const witnesses: ScenarioWitness[] = [];\n for (const file of featureFiles) {\n const feature = await parseFeatureFile(file);\n for (const scenario of feature.scenarios) {\n witnesses.push(\n reduceScenario(\n {\n name: feature.name,\n tags: feature.tags,\n background: feature.background,\n file: feature.file,\n },\n scenario\n )\n );\n }\n }\n return witnesses;\n}\n",
16
+ "/**\n * The verify half of the BDD reachability witness (`polly verify --witness`).\n *\n * The BDD stratum (tools/bdd) reduces each scenario to its Then-predicate — the\n * post-state a passing scenario claims is reachable, in the runtime\n * `signal.field` dialect (e.g. `user.loggedIn === true && user.role ===\n * \"admin\"`). This module turns one such predicate into a TLC *reachability\n * witness* over the generated subsystem spec:\n *\n * WitnessReachable == ~(\\E ctx \\in Contexts : <predicate over contextStates[ctx]>)\n *\n * The negation makes the witness an invariant TLC can refute:\n * - TLC reports it *violated* ⇒ a state satisfying the predicate is REACHABLE\n * ⇒ the scenario describes a real outcome — honest. The counterexample\n * trace IS the scenario's path through the model.\n * - TLC explores fully with *no violation* ⇒ the predicate is UNREACHABLE\n * ⇒ the scenario asserts a state the model proves impossible — it lies.\n *\n * Why a dedicated translator and not the handler-expression `tsExpressionToTLA`:\n * the BDD dialect drops the `.value` a handler expression carries\n * (`user.loggedIn`, not `user.value.loggedIn`) and a witness only ever needs a\n * flat conjunction of comparisons over state fields. A small, total translator\n * for that grammar is far more predictable than threading the 150-KB generator's\n * mesh/array machinery through a second entry point.\n */\n\n/** The single invariant every generated witness module declares. */\nexport const WITNESS_INVARIANT = \"WitnessReachable\";\n\n/** Raised when a Then-predicate falls outside the witness grammar. */\nexport class WitnessTranslationError extends Error {}\n\n/**\n * The two directions a witness can run. A `positive` witness (the default)\n * asserts a *desirable* outcome — it should be reachable. A `forbidden` witness\n * (tag `@forbidden`) asserts an *undesirable* state — it must be unreachable.\n * The TLC mechanism is identical (the negated existential); only the verdict\n * inverts, so the same `bddPredicateToTLA` / module / cfg serve both.\n */\nexport type WitnessPolarity = \"positive\" | \"forbidden\";\n\n/** A scenario tagged `@forbidden` flips the witness into a safety check. */\nexport function witnessPolarity(tags: string[]): WitnessPolarity {\n return tags.includes(\"forbidden\") ? \"forbidden\" : \"positive\";\n}\n\nexport interface WitnessVerdict {\n /** Display status, distinct per polarity so a report never conflates them. */\n status: \"reachable\" | \"unreachable\" | \"excluded\" | \"violated\";\n /** Whether this verdict passes (a forbidden state being unreachable passes). */\n ok: boolean;\n message: string;\n}\n\n/**\n * Map a TLC reachability fact to a pass/fail verdict for the witness's polarity.\n * `reachable` is true when TLC violated the witness invariant — it found a state\n * satisfying the predicate.\n *\n * positive + reachable → honest, the outcome happens (pass)\n * positive + unreachable → the scenario lies (fail)\n * forbidden + unreachable → the bad state is provably impossible (pass)\n * forbidden + reachable → the bad state IS reachable, a defect (fail)\n */\nexport function witnessVerdict(polarity: WitnessPolarity, reachable: boolean): WitnessVerdict {\n if (polarity === \"forbidden\") {\n return reachable\n ? {\n status: \"violated\",\n ok: false,\n message:\n \"the forbidden state is REACHABLE — a defect; the counterexample is the path to it\",\n }\n : { status: \"excluded\", ok: true, message: \"the model proves this state unreachable\" };\n }\n return reachable\n ? { status: \"reachable\", ok: true, message: \"the model reaches this outcome\" }\n : {\n status: \"unreachable\",\n ok: false,\n message: \"the model proves this outcome impossible (the scenario lies)\",\n };\n}\n\n/** JS comparison → TLA+ operator, longest-token-first so `===` wins over `==`. */\nconst COMPARATORS: ReadonlyArray<readonly [string, string]> = [\n [\"===\", \"=\"],\n [\"!==\", \"#\"],\n [\"==\", \"=\"],\n [\"!=\", \"#\"],\n [\">=\", \">=\"],\n [\"<=\", \"<=\"],\n [\">\", \">\"],\n [\"<\", \"<\"],\n];\n\n/** `user.loggedIn` → `user_loggedIn`; the signal name and nested fields join with `_`. */\nfunction flattenField(path: string): string {\n return path.split(\".\").join(\"_\");\n}\n\n/**\n * Translate one operand. A literal (boolean/number/string) maps straight across;\n * a field reference becomes `contextStates[ctx].<flattened>`, and a trailing\n * `.length` becomes TLA+ sequence length `Len(...)`.\n */\nfunction translateOperand(raw: string): string {\n const op = raw.trim();\n if (op === \"true\") return \"TRUE\";\n if (op === \"false\") return \"FALSE\";\n if (/^\"[^\"]*\"$/.test(op)) return op;\n if (/^'[^']*'$/.test(op)) return `\"${op.slice(1, -1)}\"`;\n if (/^[-+]?\\d+(?:\\.\\d+)?$/.test(op)) return op;\n if (!/^[a-zA-Z_$][\\w$]*(?:\\.[a-zA-Z_$][\\w$]*)*$/.test(op)) {\n throw new WitnessTranslationError(`unsupported operand \"${raw}\" in witness predicate`);\n }\n if (op.endsWith(\".length\")) {\n return `Len(contextStates[ctx].${flattenField(op.slice(0, -\".length\".length))})`;\n }\n return `contextStates[ctx].${flattenField(op)}`;\n}\n\n/** Translate a single `lhs <op> rhs` comparison. */\nfunction translateConjunct(conjunct: string): string {\n const text = conjunct.trim();\n for (const [js, tla] of COMPARATORS) {\n const at = text.indexOf(js);\n if (at === -1) continue;\n const lhs = text.slice(0, at);\n const rhs = text.slice(at + js.length);\n return `${translateOperand(lhs)} ${tla} ${translateOperand(rhs)}`;\n }\n throw new WitnessTranslationError(`no comparison operator in witness conjunct \"${conjunct}\"`);\n}\n\n/**\n * Translate a BDD Then-predicate (`&&`-joined comparisons, `signal.field`\n * dialect) into a TLA+ predicate over `contextStates[ctx]`.\n */\nexport function bddPredicateToTLA(predicate: string): string {\n const conjuncts = predicate\n .split(\"&&\")\n .map((c) => c.trim())\n .filter(Boolean);\n if (conjuncts.length === 0) {\n throw new WitnessTranslationError(\"empty witness predicate\");\n }\n return conjuncts.map(translateConjunct).join(\" /\\\\ \");\n}\n\n/** Wrap a translated predicate as the negated-reachability witness invariant. */\nexport function buildWitnessInvariant(tlaPredicate: string): string {\n return `${WITNESS_INVARIANT} == ~(\\\\E ctx \\\\in Contexts : ${tlaPredicate})`;\n}\n\n/**\n * A tiny TLA+ module that EXTENDS the generated subsystem spec and adds the one\n * witness invariant. EXTENDS pulls in every definition and declaration the\n * invariant needs (`Contexts`, `contextStates`, `UserSpec`, `StateConstraint`),\n * so the witness stays non-invasive — the subsystem spec is never edited.\n */\nexport function buildWitnessModule(\n moduleName: string,\n subsystemModule: string,\n tlaPredicate: string\n): string {\n return [\n `---- MODULE ${moduleName} ----`,\n `EXTENDS ${subsystemModule}`,\n \"\",\n buildWitnessInvariant(tlaPredicate),\n \"====\",\n \"\",\n ].join(\"\\n\");\n}\n\n/** The indented, non-comment body lines of a top-level `.cfg` section. */\nfunction sectionBody(cfg: string, header: string): string[] {\n const body: string[] = [];\n let inSection = false;\n for (const line of cfg.split(\"\\n\")) {\n const headerMatch = /^([A-Z_]+)\\b/.exec(line);\n if (headerMatch) {\n inSection = headerMatch[1] === header;\n continue;\n }\n if (!inSection) continue;\n if (line.trim() === \"\" || line.trim().startsWith(\"\\\\*\")) continue;\n body.push(line);\n }\n return body;\n}\n\n/** The inline value of a single-line header (e.g. `SPECIFICATION UserSpec`). */\nfunction headerLine(cfg: string, header: string): string | null {\n for (const line of cfg.split(\"\\n\")) {\n const m = new RegExp(`^${header}\\\\b(.*)$`).exec(line);\n if (m) return line.trimEnd();\n }\n return null;\n}\n\n/**\n * Derive a witness `.cfg` from a subsystem `.cfg`: keep SPECIFICATION,\n * CONSTANTS, CONSTRAINT and SYMMETRY verbatim, swap the INVARIANTS list for the\n * single witness, and drop PROPERTIES (the ensures temporal properties play no\n * part in — and only slow down — a state-reachability check). CONSTRAINT is\n * kept on purpose: StateConstraint prunes the space and is exactly what makes an\n * unreachable outcome provably unreachable (the login-guard case).\n */\nexport function buildWitnessCfg(baseCfg: string): string {\n const spec = headerLine(baseCfg, \"SPECIFICATION\") ?? \"SPECIFICATION UserSpec\";\n const constants = sectionBody(baseCfg, \"CONSTANTS\");\n const constraint = sectionBody(baseCfg, \"CONSTRAINT\");\n const symmetry = sectionBody(baseCfg, \"SYMMETRY\");\n\n const out = [spec, \"\", \"CONSTANTS\", ...constants, \"\", \"INVARIANTS\", ` ${WITNESS_INVARIANT}`];\n if (constraint.length > 0) out.push(\"\", \"CONSTRAINT\", ...constraint);\n if (symmetry.length > 0) out.push(\"\", \"SYMMETRY\", ...symmetry);\n return `${out.join(\"\\n\")}\\n`;\n}\n\n/** A field matches a subsystem state key if either is a dotted prefix of the other. */\nfunction covers(stateKeys: string[], field: string): boolean {\n return stateKeys.some(\n (k) => k === field || field.startsWith(`${k}.`) || k.startsWith(`${field}.`)\n );\n}\n\n/**\n * Route a witness to the one subsystem whose state covers every field it\n * references. Returns the subsystem name, or `null` when no subsystem (or more\n * than one) owns the fields — a cross-subsystem outcome cannot be witnessed in\n * the compositional model, where each subsystem is checked in isolation.\n */\nexport function routeWitness(\n fields: string[],\n subsystems: Record<string, { state: string[] }>\n): string | null {\n if (fields.length === 0) return null;\n const owners = Object.entries(subsystems).filter(([, sub]) =>\n fields.every((f) => covers(sub.state, f))\n );\n const only = owners.length === 1 ? owners[0] : undefined;\n return only ? only[0] : null;\n}\n",
13
17
  "// Docker container management for TLA+ verification\n\nimport { spawn } from \"node:child_process\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nexport type DockerRunResult = {\n exitCode: number;\n stdout: string;\n stderr: string;\n};\n\nexport class DockerRunner {\n private readonly IMAGE_NAME = \"polly-tla:latest\";\n private readonly DOCKERFILE_PATH = path.join(__dirname, \"../../Dockerfile\");\n\n /**\n * Check if Docker is available and daemon is responsive\n * Throws an error if Docker times out (to distinguish from Docker not being installed)\n */\n async isDockerAvailable(): Promise<boolean> {\n try {\n // Use 'docker info' instead of '--version' to verify daemon is running\n // '--version' only checks the client, not the daemon\n const result = await this.runCommand(\"docker\", [\"info\"], {\n timeout: 5000, // 5 second timeout\n });\n return result.exitCode === 0;\n } catch (error) {\n // Re-throw timeout errors so caller can handle them specially\n if (error instanceof Error && error.message.includes(\"timed out\")) {\n throw error;\n }\n return false;\n }\n }\n\n /**\n * Check if TLA+ image exists\n * Throws an error if Docker times out\n */\n async hasImage(): Promise<boolean> {\n try {\n const result = await this.runCommand(\"docker\", [\"images\", \"-q\", this.IMAGE_NAME], {\n timeout: 10000, // 10 second timeout\n });\n return result.stdout.trim().length > 0;\n } catch (error) {\n // Re-throw timeout errors so caller can handle them specially\n if (error instanceof Error && error.message.includes(\"timed out\")) {\n throw error;\n }\n return false;\n }\n }\n\n /**\n * Build TLA+ image from Dockerfile\n */\n async buildImage(onProgress?: (line: string) => void): Promise<void> {\n const dockerfileDir = path.dirname(this.DOCKERFILE_PATH);\n\n await this.runCommandStreaming(\n \"docker\",\n [\"build\", \"-f\", this.DOCKERFILE_PATH, \"-t\", this.IMAGE_NAME, dockerfileDir],\n onProgress,\n 300000 // 5 minute timeout for building image\n );\n }\n\n /**\n * Pull TLA+ image (deprecated - use buildImage instead)\n */\n async pullImage(onProgress?: (line: string) => void): Promise<void> {\n await this.buildImage(onProgress);\n }\n\n /**\n * Run TLC model checker on a spec\n */\n async runTLC(\n specPath: string,\n options?: {\n workers?: number;\n timeout?: number;\n maxDepth?: number;\n }\n ): Promise<TLCResult> {\n // Ensure spec file exists\n if (!fs.existsSync(specPath)) {\n throw new Error(`Spec file not found: ${specPath}`);\n }\n\n const specDir = path.dirname(specPath);\n const specName = path.basename(specPath, \".tla\");\n const cfgPath = path.join(specDir, `${specName}.cfg`);\n\n // Ensure cfg file exists\n if (!fs.existsSync(cfgPath)) {\n throw new Error(`Config file not found: ${cfgPath}`);\n }\n\n // Clean up any leftover state files from previous interrupted runs.\n // Older versions of the runner let TLC's -metadir default to\n // <work>/states, so stale dirs may still exist on the host bind mount.\n const statesDir = path.join(specDir, \"states\");\n if (fs.existsSync(statesDir)) {\n fs.rmSync(statesDir, { recursive: true, force: true });\n }\n\n // Run TLC in Docker.\n //\n // -metadir points TLC's state pool at a container-internal path\n // (/tmp/states on the overlay filesystem) instead of letting it default to\n // <work>/states, which under our bind mount lands on the host via Docker\n // Desktop's file-share layer (VirtioFS/osxfs). Large runs spill millions of\n // small state-pool files; that layer isn't built for sustained small-file\n // IO and surfaces transient \"No such file or directory\" mid-run failures.\n // Keeping the state pool inside the container hits the native filesystem at\n // native speed, and with --rm + -cleanup it dies with the container, so no\n // multi-GB dirs leak back onto the host. See issue #152.\n const args = [\n \"run\",\n \"--rm\",\n \"-v\",\n `${specDir}:/work`,\n this.IMAGE_NAME,\n \"tlc\",\n \"-workers\",\n `${options?.workers || 1}`,\n \"-cleanup\", // Delete state files after model checking to prevent disk space issues\n \"-metadir\",\n \"/tmp/states\", // container-internal state pool, off the host bind mount (#152)\n ];\n\n // Add depth limit if maxDepth is configured (bounded model checking)\n if (options?.maxDepth !== undefined && options.maxDepth > 0) {\n args.push(\"-depth\", `${options.maxDepth}`);\n }\n\n args.push(`${specName}.tla`);\n\n const result = await this.runCommand(\"docker\", args, {\n timeout: options?.timeout,\n });\n\n return this.parseTLCOutput(result);\n }\n\n /**\n * Parse TLC output\n */\n private parseTLCOutput(result: DockerRunResult): TLCResult {\n const output = result.stdout + result.stderr;\n\n // Check for violations\n const violationMatch = output.match(/Error: Invariant (.*?) is violated/);\n if (violationMatch) {\n return {\n success: false,\n violation: {\n type: \"invariant\",\n name: violationMatch[1],\n trace: this.extractTrace(output),\n },\n output,\n };\n }\n\n // Check for errors\n if (result.exitCode !== 0 || output.includes(\"Error:\")) {\n return {\n success: false,\n error: this.extractError(output),\n output,\n };\n }\n\n // Success\n const statesMatch = output.match(/(\\d+) states generated/);\n const distinctMatch = output.match(/(\\d+) distinct states/);\n\n return {\n success: true,\n stats: {\n statesGenerated: statesMatch?.[1] ? Number.parseInt(statesMatch[1], 10) : 0,\n distinctStates: distinctMatch?.[1] ? Number.parseInt(distinctMatch[1], 10) : 0,\n },\n output,\n };\n }\n\n /**\n * Extract error trace from TLC output\n */\n private extractTrace(output: string): string[] {\n const lines = output.split(\"\\n\");\n const trace: string[] = [];\n let inTrace = false;\n\n for (const line of lines) {\n if (line.includes(\"State \") && line.includes(\":\")) {\n inTrace = true;\n trace.push(line);\n } else if (inTrace) {\n if (line.trim() === \"\" || line.startsWith(\"Error:\")) {\n break;\n }\n trace.push(line);\n }\n }\n\n return trace;\n }\n\n /**\n * Extract error message from TLC output\n */\n private extractError(output: string): string {\n // A state-pool write/read failing against a states/.../<n> path is almost\n // never a real model problem — it's the Docker Desktop file-share layer\n // dropping a small-file IO under sustained load. Since #152 we write the\n // state pool to a container-internal -metadir, so this should no longer\n // occur; if it does, point the consumer at the IO issue rather than letting\n // them chase a phantom spec error.\n if (/StatePool\\w*\\.run/.test(output) && /states\\/.*No such file or directory/.test(output)) {\n return \"TLC state-pool IO failure (states/.../<n>: No such file or directory). This is a Docker filesystem flake, not a spec error — re-run the verification. See issue #152.\";\n }\n\n const errorMatch = output.match(/Error: (.*?)(?:\\n|$)/);\n if (errorMatch?.[1]) {\n return errorMatch[1];\n }\n\n // Look for common error patterns\n if (output.includes(\"Parse Error\")) {\n return \"TLA+ syntax error in specification\";\n }\n if (output.includes(\"Semantic Error\")) {\n return \"Semantic error in specification\";\n }\n\n return \"Unknown error occurred during model checking\";\n }\n\n /**\n * Run a command and return output\n * Public to allow other runners (like SANYRunner) to execute commands\n */\n runCommand(\n command: string,\n args: string[],\n options?: { timeout?: number }\n ): Promise<DockerRunResult> {\n return new Promise((resolve, reject) => {\n const proc = spawn(command, args);\n\n let stdout = \"\";\n let stderr = \"\";\n\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString();\n });\n\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n // Only set timeout if a timeout value is provided\n const timeoutValue = options?.timeout ?? 0;\n const timeout =\n timeoutValue > 0\n ? setTimeout(() => {\n proc.kill();\n reject(\n new Error(\n `Command timed out after ${Math.floor(timeoutValue / 1000)}s. TLC was still making progress. Consider increasing the timeout or setting timeout: 0 for no timeout.`\n )\n );\n }, timeoutValue)\n : null;\n\n proc.on(\"close\", (exitCode) => {\n if (timeout) clearTimeout(timeout);\n\n resolve({\n exitCode: exitCode || 0,\n stdout,\n stderr,\n });\n });\n\n proc.on(\"error\", (error) => {\n if (timeout) clearTimeout(timeout);\n reject(error);\n });\n });\n }\n\n /**\n * Run a command with streaming output\n */\n private runCommandStreaming(\n command: string,\n args: string[],\n onOutput?: (line: string) => void,\n timeout?: number\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n const proc = spawn(command, args);\n\n // Set up timeout if provided\n const timeoutHandle =\n timeout && timeout > 0\n ? setTimeout(() => {\n proc.kill();\n reject(\n new Error(\n `Command timed out after ${Math.floor(timeout / 1000)}s. Docker may be unresponsive.`\n )\n );\n }, timeout)\n : null;\n\n proc.stdout.on(\"data\", (data) => {\n if (onOutput) {\n const lines = data.toString().split(\"\\n\");\n for (const line of lines) {\n if (line.trim()) {\n onOutput(line.trim());\n }\n }\n }\n });\n\n proc.stderr.on(\"data\", (data) => {\n if (onOutput) {\n const lines = data.toString().split(\"\\n\");\n for (const line of lines) {\n if (line.trim()) {\n onOutput(line.trim());\n }\n }\n }\n });\n\n proc.on(\"close\", (exitCode) => {\n if (timeoutHandle) clearTimeout(timeoutHandle);\n\n if (exitCode === 0) {\n resolve();\n } else {\n reject(new Error(`Command failed with exit code ${exitCode}`));\n }\n });\n\n proc.on(\"error\", (error) => {\n if (timeoutHandle) clearTimeout(timeoutHandle);\n reject(error);\n });\n });\n }\n}\n\nexport type TLCResult = {\n success: boolean;\n violation?: {\n type: \"invariant\" | \"property\" | \"deadlock\";\n name?: string;\n trace: string[];\n };\n error?: string;\n stats?: {\n statesGenerated: number;\n distinctStates: number;\n };\n output: string;\n};\n",
14
- "#!/usr/bin/env bun\n// CLI for verification system\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { type ValidationResult, validateExpressions } from \"./analysis/expression-validator\";\nimport { computeMeshOrPeerSignalFindings } from \"./analysis/mesh-signal-warnings\";\nimport {\n estimateStateSpace,\n feasibilityLabel,\n type StateSpaceEstimate,\n} from \"./analysis/state-space-estimator\";\nimport { generateConfig } from \"./codegen/config\";\nimport { validateConfig } from \"./config/parser\";\nimport type { UnifiedVerificationConfig } from \"./config/types\";\nimport { analyzeCodebase } from \"./extract/types\";\nimport { isSeedFixDisabled, meshSeedCfg } from \"./runner/mesh-seed\";\n\nconst COLORS = {\n reset: \"\\x1b[0m\",\n red: \"\\x1b[31m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n blue: \"\\x1b[34m\",\n gray: \"\\x1b[90m\",\n};\n\nfunction color(text: string, colorCode: string): string {\n return `${colorCode}${text}${COLORS.reset}`;\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n switch (command) {\n case \"--setup\":\n case \"setup\":\n await setupCommand();\n break;\n\n case \"--validate\":\n case \"validate\":\n await validateCommand();\n break;\n\n case \"--estimate\":\n case \"estimate\":\n await estimateCommand();\n break;\n\n case \"--help\":\n case \"help\":\n showHelp();\n break;\n\n default:\n await verifyCommand();\n }\n}\n\nasync function setupCommand() {\n console.log(color(\"\\n🔍 Analyzing codebase...\\n\", COLORS.blue));\n\n try {\n // Find tsconfig\n const tsConfigPath = findTsConfig();\n if (!tsConfigPath) {\n process.exit(1);\n }\n\n console.log(color(` Using: ${tsConfigPath}`, COLORS.gray));\n\n // Analyze codebase\n const analysis = await analyzeCodebase({\n tsConfigPath,\n stateFilePath: findStateFile(),\n });\n\n displayAnalysisResults(analysis);\n displayAnalysisSummary(analysis);\n\n // Generate and write config\n const configContent = generateConfig(analysis);\n const configPath = path.join(process.cwd(), \"specs\", \"verification.config.ts\");\n\n writeConfigFile(configPath, configContent);\n displaySetupSuccess(configPath);\n } catch (_error) {\n process.exit(1);\n }\n}\n\nfunction displayAnalysisResults(analysis: {\n stateType?: unknown;\n fields: unknown[];\n messageTypes: unknown[];\n}): void {\n if (analysis.stateType) {\n console.log(color(`✓ Found state type with ${analysis.fields.length} field(s)`, COLORS.green));\n } else {\n console.log(color(\"\\n⚠️ Could not find state type definition\", COLORS.yellow));\n console.log(\" Expected to find a type named 'AppState' or 'State'\");\n console.log(\" in a file matching **/state*.ts\");\n console.log();\n console.log(\" You can still generate a config template:\");\n console.log(\" It will be empty and you'll need to fill it in manually.\");\n console.log();\n }\n\n console.log(color(`✓ Found ${analysis.messageTypes.length} message type(s)`, COLORS.green));\n}\n\nfunction displayAnalysisSummary(analysis: {\n fields: Array<{ path: string; type: { kind: string }; confidence: string }>;\n}): void {\n if (analysis.fields.length === 0) return;\n\n console.log(color(\"\\n📊 Configuration Summary:\\n\", COLORS.blue));\n\n const table = [\n [\"Field\", \"Type\", \"Status\"],\n [\"─\".repeat(30), \"─\".repeat(20), \"─\".repeat(20)],\n ];\n\n for (const field of analysis.fields) {\n const status = getFieldStatus(field.confidence);\n table.push([field.path, field.type.kind, status]);\n }\n\n for (const row of table) {\n console.log(` ${row[0]?.padEnd(32) ?? \"\"} ${row[1]?.padEnd(22) ?? \"\"} ${row[2] ?? \"\"}`);\n }\n}\n\nfunction getFieldStatus(confidence: string): string {\n if (confidence === \"high\") return color(\"✓ Auto-configured\", COLORS.green);\n if (confidence === \"medium\") return color(\"⚠ Review needed\", COLORS.yellow);\n return color(\"⚠ Manual config\", COLORS.red);\n}\n\nfunction writeConfigFile(configPath: string, configContent: string): void {\n const configDir = path.dirname(configPath);\n if (!fs.existsSync(configDir)) {\n fs.mkdirSync(configDir, { recursive: true });\n }\n fs.writeFileSync(configPath, configContent, \"utf-8\");\n}\n\nfunction displaySetupSuccess(configPath: string): void {\n console.log(color(\"\\n✅ Configuration generated!\\n\", COLORS.green));\n console.log(` File: ${color(configPath, COLORS.blue)}`);\n console.log();\n console.log(color(\"📝 Next steps:\", COLORS.blue));\n console.log();\n console.log(\" 1. Review the generated configuration file\");\n console.log(\" 2. Fill in values marked with /* CONFIGURE */\");\n console.log(\" 3. Run 'polly verify' to check your configuration\");\n console.log();\n console.log(color(\"💡 Tip:\", COLORS.gray));\n console.log(color(\" Look for comments explaining what each field needs.\", COLORS.gray));\n console.log();\n}\n\nasync function validateCommand() {\n const configPath = path.join(process.cwd(), \"specs\", \"verification.config.ts\");\n\n console.log(color(\"\\n🔍 Validating configuration...\\n\", COLORS.blue));\n\n const result = validateConfig(configPath);\n\n if (result.valid) {\n console.log(color(\"✅ Configuration is complete and valid!\\n\", COLORS.green));\n console.log(\" You can now run 'polly verify' to start verification.\");\n console.log();\n return;\n }\n\n // Show errors\n const errors = result.issues.filter((i) => i.severity === \"error\");\n const warnings = result.issues.filter((i) => i.severity === \"warning\");\n\n displayValidationErrors(errors);\n displayValidationWarnings(warnings);\n\n console.log(color(\"Configuration incomplete. Please fix the errors above.\\n\", COLORS.red));\n process.exit(1);\n}\n\nasync function estimateCommand() {\n const configPath = path.join(process.cwd(), \"specs\", \"verification.config.ts\");\n\n console.log(color(\"\\n📊 Estimating state space...\\n\", COLORS.blue));\n\n // Validate config first\n const validation = validateConfig(configPath);\n if (!validation.valid) {\n const errors = validation.issues.filter((i) => i.severity === \"error\");\n console.log(color(`❌ Configuration incomplete (${errors.length} error(s))\\n`, COLORS.red));\n for (const error of errors.slice(0, 3)) {\n console.log(color(` • ${error.message}`, COLORS.red));\n }\n console.log(\"\\n Run 'polly verify --validate' to see all issues\");\n process.exit(1);\n }\n\n // Load config\n const config = await loadVerificationConfig(configPath);\n\n // Analyze codebase\n const analysis = await runCodebaseAnalysis();\n\n // Validate expressions\n const typedConfig = config as unknown as import(\"./config/types\").UnifiedVerificationConfig;\n const typedAnalysis = analysis as unknown as import(\"./core/model\").CodebaseAnalysis;\n const meshSignalNames = new Set(\n (typedAnalysis.meshOrPeerSignals ?? []).map((s) => s.variableName)\n );\n const exprValidation = validateExpressions(\n typedAnalysis.handlers,\n typedConfig.state,\n meshSignalNames\n );\n if (exprValidation.warnings.length > 0) {\n displayExpressionWarnings(exprValidation);\n }\n\n // Estimate\n const estimate = estimateStateSpace(typedConfig, typedAnalysis);\n\n displayEstimate(estimate);\n}\n\nfunction displayEstimate(estimate: StateSpaceEstimate): void {\n console.log(color(\"State space estimate:\\n\", COLORS.blue));\n\n // Fields table\n console.log(color(\" Fields:\", COLORS.blue));\n for (const field of estimate.fields) {\n const name = field.name.padEnd(28);\n const kind = field.kind.padEnd(18);\n const card =\n field.cardinality === \"unbounded\"\n ? color(\"(excluded — unbounded)\", COLORS.yellow)\n : `${field.cardinality} values`;\n console.log(` ${name} ${kind} ${card}`);\n }\n\n console.log();\n console.log(` Field combinations: ${color(String(estimate.fieldProduct), COLORS.green)}`);\n console.log(` Handlers: ${estimate.handlerCount}`);\n console.log(` Max in-flight: ${estimate.maxInFlight}`);\n console.log(\n ` Contexts: ${estimate.contextCount} (${estimate.contextCount - 1} tab${estimate.contextCount - 1 === 1 ? \"\" : \"s\"} + background)`\n );\n console.log(` Interleaving factor: ${estimate.interleavingFactor}`);\n\n console.log();\n console.log(\n ` Estimated states: ${color(`~${estimate.estimatedStates.toLocaleString()}`, COLORS.green)}`\n );\n\n // Feasibility\n const feasColor =\n estimate.feasibility === \"trivial\" || estimate.feasibility === \"feasible\"\n ? COLORS.green\n : estimate.feasibility === \"slow\"\n ? COLORS.yellow\n : COLORS.red;\n console.log();\n console.log(` Assessment: ${color(feasibilityLabel(estimate.feasibility), feasColor)}`);\n\n // Warnings\n if (estimate.warnings.length > 0) {\n console.log();\n for (const w of estimate.warnings) {\n console.log(color(` ⚠️ ${w}`, COLORS.yellow));\n }\n }\n\n // Suggestions\n if (estimate.suggestions.length > 0) {\n console.log();\n console.log(color(\" Suggestions:\", COLORS.blue));\n for (const s of estimate.suggestions) {\n console.log(color(` • ${s}`, COLORS.gray));\n }\n }\n\n console.log();\n}\n\nfunction displayValidationErrors(\n errors: Array<{\n message: string;\n field?: string;\n location?: { line: number };\n suggestion: string;\n }>\n): void {\n if (errors.length === 0) return;\n\n console.log(color(`❌ Found ${errors.length} error(s):\\n`, COLORS.red));\n\n for (const error of errors) {\n console.log(color(` • ${error.message}`, COLORS.red));\n if (error.field) {\n console.log(color(` Field: ${error.field}`, COLORS.gray));\n }\n if (error.location) {\n console.log(color(` Location: line ${error.location.line}`, COLORS.gray));\n }\n console.log(color(` → ${error.suggestion}`, COLORS.yellow));\n console.log();\n }\n}\n\nfunction displayValidationWarnings(\n warnings: Array<{ message: string; field?: string; suggestion: string }>\n): void {\n if (warnings.length === 0) return;\n\n console.log(color(`⚠️ Found ${warnings.length} warning(s):\\n`, COLORS.yellow));\n\n for (const warning of warnings) {\n console.log(color(` • ${warning.message}`, COLORS.yellow));\n if (warning.field) {\n console.log(color(` Field: ${warning.field}`, COLORS.gray));\n }\n console.log(color(` → ${warning.suggestion}`, COLORS.gray));\n console.log();\n }\n}\n\nfunction displayExpressionWarnings(result: ValidationResult): void {\n if (result.warnings.length === 0) return;\n\n console.log(color(`⚠️ Found ${result.warnCount} expression warning(s):\\n`, COLORS.yellow));\n\n for (const w of result.warnings) {\n console.log(color(` ⚠ ${w.message}`, COLORS.yellow));\n console.log(color(` ${w.expression}`, COLORS.gray));\n console.log(color(` at ${w.location.file}:${w.location.line}`, COLORS.gray));\n console.log(color(` → ${w.suggestion}`, COLORS.yellow));\n console.log();\n }\n}\n\n/**\n * polly#117: warn when a handler's requires/ensures predicate\n * references a `$meshState`/`$peerState` signal whose cross-peer\n * semantics the verifier does NOT check.\n *\n * A `$meshState` document declared under `mesh:` in the verification\n * config is routed through the `meshState` namespace with a\n * `PropagateMeshOp` action — its cross-peer claims are genuinely\n * checked, so it is NOT warned about. An *undeclared* `$meshState`\n * signal, or any `$peerState` signal, is flattened to single-context\n * local state; a predicate over it silently asserts only the\n * executing context's view. This warning makes that narrowing loud\n * and points at the fix.\n */\nfunction displayMeshOrPeerSignalWarnings(\n analysis: import(\"./core/model\").CodebaseAnalysis,\n declaredMeshDocs: ReadonlySet<string>\n): number {\n const findings = computeMeshOrPeerSignalFindings(analysis, declaredMeshDocs);\n if (findings.length === 0) return 0;\n\n const hasUndeclaredMesh = findings.some((f) => f.signalKind === \"mesh\");\n const hasPeer = findings.some((f) => f.signalKind === \"peer\");\n\n console.log(\n color(\n `\\n⚠️ ${findings.length} predicate(s) reference an unverified $meshState/$peerState signal (polly#117):`,\n COLORS.yellow\n )\n );\n console.log(\n color(\n \" These signals are flattened to single-context local state, so a green run\",\n COLORS.gray\n )\n );\n console.log(color(\" does NOT prove the claim holds across peers.\", COLORS.gray));\n if (hasUndeclaredMesh) {\n console.log(\n color(\n \" Fix ($meshState): declare the document key under `mesh: { ... }` in your\",\n COLORS.gray\n )\n );\n console.log(\n color(\n \" verification config. Declared mesh docs are routed through the meshState\",\n COLORS.gray\n )\n );\n console.log(\n color(\n \" namespace with a PropagateMeshOp action, so `forAllPeers(...)` claims are checked.\",\n COLORS.gray\n )\n );\n }\n if (hasPeer) {\n console.log(\n color(\" $peerState signals have no cross-peer verification model yet.\", COLORS.gray)\n );\n }\n console.log();\n\n for (const f of findings) {\n const remedy =\n f.signalKind === \"mesh\" ? \"not declared in config.mesh\" : \"$peerState — no cross-peer model\";\n console.log(color(` ⚠ ${f.handler} ${f.kind}: ${f.signalName} (${remedy})`, COLORS.yellow));\n console.log(color(` ${f.expression}`, COLORS.gray));\n console.log(color(` at ${f.location.file}:${f.location.line}`, COLORS.gray));\n console.log();\n }\n\n return findings.length;\n}\n\n/**\n * polly#160 (Ask #1): does the operator want a fail-closed run? `--strict`\n * (or POLLY_VERIFY_STRICT=1) turns model-coverage gaps and unverified\n * mesh/peer signals from warnings into a non-zero exit, so a silently\n * unmodelled path cannot pass with a green check.\n */\nfunction isStrictMode(): boolean {\n return process.argv.includes(\"--strict\") || process.env.POLLY_VERIFY_STRICT === \"1\";\n}\n\n/**\n * polly#160 (Ask #1): render the model-coverage report — which declared state\n * fields are written by which handlers, which are written by none, and which\n * mutators pin no postcondition. Clean specs get a one-line confirmation.\n */\nfunction displayModelCoverage(\n report: import(\"./analysis/model-coverage\").ModelCoverageReport\n): void {\n const { unwrittenFields, unconstrainedMutators, fieldCoverage } = report;\n\n if (unwrittenFields.length === 0 && unconstrainedMutators.length === 0) {\n console.log(\n color(\n `✓ Model coverage: all ${fieldCoverage.length} declared field(s) written by a modelled handler`,\n COLORS.green\n )\n );\n console.log();\n return;\n }\n\n if (unwrittenFields.length > 0) {\n console.log(\n color(\n `\\n⚠️ ${unwrittenFields.length} declared state field(s) written by NO modelled handler (polly#160):`,\n COLORS.yellow\n )\n );\n for (const f of unwrittenFields) {\n console.log(color(` • ${f}`, COLORS.yellow));\n }\n console.log(\n color(\n \" The model carries a variable no transition can change. Either it is dead\",\n COLORS.gray\n )\n );\n console.log(\n color(\n \" state (drop it from the verified surface) or its mutating path was never\",\n COLORS.gray\n )\n );\n console.log(\n color(\" modelled — the omission class both TLC and mutation testing miss.\", COLORS.gray)\n );\n console.log();\n }\n\n if (unconstrainedMutators.length > 0) {\n console.log(\n color(\n `ℹ️ ${unconstrainedMutators.length} handler(s) mutate declared state with no ensures() postcondition:`,\n COLORS.gray\n )\n );\n for (const m of unconstrainedMutators) {\n console.log(\n color(\n ` • ${m.handler} writes {${m.fields.join(\", \")}} — ${m.location.file}:${m.location.line}`,\n COLORS.gray\n )\n );\n }\n console.log(\n color(\n \" The checker explores these transitions but asserts nothing about their effect.\",\n COLORS.gray\n )\n );\n console.log();\n }\n}\n\n/**\n * polly#160 (Ask #1): compute and render the model-coverage report, then —\n * under --strict — fail closed before the expensive TLC pass when the model\n * has an unwritten declared field or an unverified mesh/peer signal. Extracted\n * from runFullVerification to keep that orchestrator within complexity limits.\n */\nasync function runModelCoverage(\n typedConfig: UnifiedVerificationConfig,\n typedAnalysis: import(\"./core/model\").CodebaseAnalysis,\n meshFindingCount: number\n): Promise<void> {\n const { computeModelCoverage, strictCoverageReasons } = await import(\"./analysis/model-coverage\");\n const stateFields = Object.keys(typedConfig.state ?? {});\n const coverage = computeModelCoverage(stateFields, typedAnalysis.handlers);\n displayModelCoverage(coverage);\n\n if (!isStrictMode()) return;\n\n const reasons = strictCoverageReasons(coverage, meshFindingCount);\n\n if (reasons.length === 0) {\n console.log(color(\"✓ Strict mode: model coverage complete\", COLORS.green));\n console.log();\n return;\n }\n\n console.log(color(\"❌ Strict mode: model coverage incomplete\\n\", COLORS.red));\n for (const reason of reasons) {\n console.log(color(` • ${reason}`, COLORS.red));\n }\n console.log();\n console.log(\n color(\" --strict fails closed on these so an unmodelled path cannot pass with a\", COLORS.gray)\n );\n console.log(\n color(\" green check. Re-run without --strict to treat them as warnings.\", COLORS.gray)\n );\n console.log();\n process.exit(1);\n}\n\nasync function verifyCommand() {\n const configPath = path.join(process.cwd(), \"specs\", \"verification.config.ts\");\n\n console.log(color(\"\\n🔍 Running verification...\\n\", COLORS.blue));\n\n // First validate config\n const validation = validateConfig(configPath);\n\n if (!validation.valid) {\n const errors = validation.issues.filter((i) => i.severity === \"error\");\n console.log(color(`❌ Configuration incomplete (${errors.length} error(s))\\n`, COLORS.red));\n\n for (const error of errors.slice(0, 3)) {\n console.log(color(` • ${error.message}`, COLORS.red));\n if (error.field) {\n console.log(color(` Field: ${error.field}`, COLORS.gray));\n }\n console.log();\n }\n\n if (errors.length > 3) {\n console.log(color(` ... and ${errors.length - 3} more error(s)`, COLORS.gray));\n console.log();\n }\n\n console.log(\" Run 'polly verify --validate' to see all issues\");\n console.log(\" Run 'polly verify --setup' to regenerate configuration\");\n console.log();\n process.exit(1);\n }\n\n console.log(color(\"✓ Configuration valid\", COLORS.green));\n console.log();\n\n // Run full verification\n try {\n await runFullVerification(configPath);\n } catch (error) {\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(color(\"\\n❌ Verification error:\", COLORS.red));\n if (error instanceof Error) {\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(color(error.message, COLORS.red));\n if (process.env.POLLY_DEBUG) {\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(color(\"\\nStack trace:\", COLORS.gray));\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(error.stack);\n }\n } else {\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(String(error));\n }\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error();\n process.exit(1);\n }\n}\n\n/**\n * polly#117/#114: read the docIds of the optional `mesh` record off a loaded\n * config without asserting its shape.\n */\nfunction getMeshDocIds(config: unknown): string[] {\n if (typeof config !== \"object\" || config === null || !(\"mesh\" in config)) return [];\n const mesh = config.mesh;\n if (typeof mesh !== \"object\" || mesh === null) return [];\n return Object.keys(mesh);\n}\n\n/**\n * Get timeout in seconds from config (0 = no timeout)\n */\nfunction getTimeout(config: UnifiedVerificationConfig): number {\n return config.verification?.timeout ?? 0;\n}\n\n/**\n * Get number of workers from config\n */\nfunction getWorkers(config: UnifiedVerificationConfig): number {\n return config.verification?.workers ?? 1;\n}\n\n/**\n * Get maxDepth from config for bounded model checking (Tier 2)\n */\nfunction getMaxDepth(config: UnifiedVerificationConfig): number | undefined {\n // maxDepth is only available in legacy config format with tier2 settings\n if (\"tier2\" in config && config.tier2?.boundedExploration?.maxDepth) {\n return config.tier2.boundedExploration.maxDepth;\n }\n return undefined;\n}\n\n/**\n * polly#160 (A2): coupled-field write-coupling lint. WARNS only — a legitimate\n * staged transition (one handler sets each field) trips the per-handler subset\n * check, so this never fails the run. The sound, whole-state detector is the\n * `capabilities` TLA+ invariant. Runs in runFullVerification before the\n * subsystem/monolithic branch, so it covers both paths.\n */\nasync function runCoupledFieldsLint(\n config: UnifiedVerificationConfig,\n analysis: import(\"./core/model\").CodebaseAnalysis\n): Promise<void> {\n const groups = config.coupledFields ?? [];\n if (groups.length === 0) return;\n\n const { checkCoupledFields } = await import(\"./analysis/coupled-fields\");\n const result = checkCoupledFields(groups, analysis.handlers);\n\n if (result.valid) {\n console.log(color(\"✓ Coupled fields: verified (no partial-subset writes)\", COLORS.green));\n console.log();\n return;\n }\n\n console.log(color(\"⚠️ Coupled-field violations detected:\\n\", COLORS.yellow));\n for (const v of result.violations) {\n console.log(\n color(\n ` • Handler \"${v.handler}\" writes {${v.written.join(\", \")}} but not {${v.missing.join(\n \", \"\n )}} of coupled group {${v.group.join(\", \")}}`,\n COLORS.yellow\n )\n );\n }\n console.log();\n console.log(\n color(\n \" These fields are declared to move together; a capability granted without its\",\n COLORS.yellow\n )\n );\n console.log(\n color(\n \" precondition is a likely cause. Co-write the full group in each handler, or model\",\n COLORS.yellow\n )\n );\n console.log(color(\" the relationship with a `capabilities` invariant.\", COLORS.yellow));\n console.log();\n}\n\nasync function runFullVerification(configPath: string) {\n // Load config\n const config = await loadVerificationConfig(configPath);\n\n // Analyze codebase\n const analysis = await runCodebaseAnalysis();\n\n // Validate expressions\n const typedConfig = config as unknown as UnifiedVerificationConfig;\n const typedAnalysis = analysis as unknown as import(\"./core/model\").CodebaseAnalysis;\n // polly#117: mesh/peer signal variable names — references into these\n // are not \"unmodeled fields\"; they are handled by the dedicated\n // mesh/peer signal warning below.\n const meshSignalNames = new Set(\n (typedAnalysis.meshOrPeerSignals ?? []).map((s) => s.variableName)\n );\n const exprValidation = validateExpressions(\n typedAnalysis.handlers,\n typedConfig.state,\n meshSignalNames\n );\n if (exprValidation.warnings.length > 0) {\n displayExpressionWarnings(exprValidation);\n }\n\n // polly#117: surface mesh- and peer-scoped signal references whose\n // cross-peer semantics the codegen does not check. A $meshState doc\n // declared under `mesh:` is verified cross-peer and excluded.\n const declaredMeshDocs = new Set(getMeshDocIds(typedConfig));\n const meshFindingCount = displayMeshOrPeerSignalWarnings(typedAnalysis, declaredMeshDocs);\n\n // polly#160: coupled-field write-coupling lint (warn-only). One call here\n // covers both the subsystem and monolithic paths below.\n await runCoupledFieldsLint(typedConfig, typedAnalysis);\n\n // polly#160 (Ask #1): model-coverage report + optional fail-closed gate.\n await runModelCoverage(typedConfig, typedAnalysis, meshFindingCount);\n\n // Check for subsystem-scoped verification\n if (typedConfig.subsystems && Object.keys(typedConfig.subsystems).length > 0) {\n await runSubsystemVerification(typedConfig, typedAnalysis);\n return;\n }\n\n // Monolithic verification (fallback)\n await runMonolithicVerification(config, analysis);\n}\n\nasync function runMonolithicVerification(config: unknown, analysis: unknown) {\n // Generate TLA+ specs\n const { specPath, specDir } = await generateAndWriteTLASpecs(config, analysis);\n\n // Find and copy base spec\n findAndCopyBaseSpec(specDir);\n\n console.log(color(\"✓ Specification generated\", COLORS.green));\n console.log(color(` ${specPath}`, COLORS.gray));\n console.log();\n\n // Setup and run Docker\n const docker = await setupDocker();\n\n // Determine timeout, workers, and maxDepth from config\n const typedConfig = config as unknown as UnifiedVerificationConfig;\n const timeoutSeconds = getTimeout(typedConfig);\n const workers = getWorkers(typedConfig);\n const maxDepth = getMaxDepth(typedConfig);\n\n // Run TLC\n console.log(color(\"⚙️ Running TLC model checker...\", COLORS.blue));\n if (timeoutSeconds === 0) {\n console.log(color(\" No timeout set - will run until completion\", COLORS.gray));\n } else {\n const timeoutMinutes = Math.floor(timeoutSeconds / 60);\n const timeoutLabel =\n timeoutMinutes > 0\n ? `${timeoutMinutes} minute${timeoutMinutes > 1 ? \"s\" : \"\"}`\n : `${timeoutSeconds} seconds`;\n console.log(color(` Timeout: ${timeoutLabel}`, COLORS.gray));\n }\n if (maxDepth !== undefined) {\n console.log(color(` Max depth: ${maxDepth}`, COLORS.gray));\n }\n console.log();\n\n const result = await docker.runTLC(specPath, {\n workers,\n timeout: timeoutSeconds > 0 ? timeoutSeconds * 1000 : undefined,\n maxDepth,\n });\n\n // polly#114: when the project declares $meshState documents, also\n // model-check the concurrent first-time seed — the polly#113 race that\n // lived entirely outside verification. A failure here is reported and\n // exits before the project-spec result.\n const meshSeed = await runMeshSeedGuard(docker, specDir, config);\n if (meshSeed && !meshSeed.success) {\n console.log(color(\"\\n❌ Mesh seed-race guard failed (polly#113 / polly#114)\\n\", COLORS.red));\n displayVerificationResults(meshSeed, specDir);\n }\n if (meshSeed) {\n console.log(color(\"✓ Mesh seed-race guard passed (MeshSeed.tla)\\n\", COLORS.green));\n }\n\n // Display results\n displayVerificationResults(result, specDir);\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Subsystem orchestration requires sequential steps with branching\nasync function runSubsystemVerification(\n config: UnifiedVerificationConfig,\n analysis: import(\"./core/model\").CodebaseAnalysis\n) {\n const subsystems = config.subsystems as unknown as Record<\n string,\n { state: string[]; handlers: string[] }\n >;\n const subsystemNames = Object.keys(subsystems);\n\n console.log(\n color(`Subsystem-scoped verification (${subsystemNames.length} subsystems)\\n`, COLORS.blue)\n );\n\n // Non-interference check\n const { checkNonInterference } = await import(\"./analysis/non-interference\");\n const interference = checkNonInterference(subsystems, analysis.handlers);\n\n if (interference.valid) {\n console.log(\n color(\"✓ Non-interference: verified (no cross-subsystem state writes)\", COLORS.green)\n );\n console.log();\n } else {\n console.log(color(\"⚠️ Non-interference violations detected:\\n\", COLORS.yellow));\n for (const v of interference.violations) {\n console.log(\n color(\n ` • Handler \"${v.handler}\" (${v.subsystem}) writes to \"${v.writesTo}\" owned by \"${v.ownedBy}\"`,\n COLORS.yellow\n )\n );\n }\n console.log();\n console.log(\n color(\n \" Compositional verification may not be sound. Consider restructuring subsystem boundaries.\",\n COLORS.yellow\n )\n );\n console.log();\n }\n\n // Precondition-locality check (read-side complement to non-interference).\n // A handler whose requires() reads state owned by another subsystem will\n // silently never have its postcondition evaluated under compositional\n // verification: the foreign subsystem is absent during this pass, so the\n // pre-state the handler waits for is never produced and TLC reports PASS\n // without firing the property the user wrote.\n const { checkPreconditionLocality } = await import(\"./analysis/precondition-locality\");\n const locality = checkPreconditionLocality(subsystems, analysis.handlers);\n\n if (locality.valid) {\n console.log(\n color(\"✓ Precondition locality: verified (no cross-subsystem requires() reads)\", COLORS.green)\n );\n console.log();\n } else {\n console.log(color(\"⚠️ Precondition-locality violations detected:\\n\", COLORS.yellow));\n for (const v of locality.violations) {\n console.log(\n color(\n ` • Handler \"${v.handler}\" (${v.subsystem}) requires \"${v.readsFrom}\" owned by \"${v.ownedBy}\"`,\n COLORS.yellow\n )\n );\n console.log(color(` ${v.expression}`, COLORS.gray));\n }\n console.log();\n console.log(\n color(\n \" Compositional verification of these subsystems cannot satisfy the precondition;\",\n COLORS.yellow\n )\n );\n console.log(\n color(\n \" the handler's ensures() postcondition will not be evaluated. Consider restructuring\",\n COLORS.yellow\n )\n );\n console.log(color(\" subsystems to keep preconditions local.\", COLORS.yellow));\n console.log();\n }\n\n // Warn about unassigned handlers\n const assignedHandlers = new Set(Object.values(subsystems).flatMap((s) => s.handlers));\n const unassigned = analysis.messageTypes.filter((mt) => !assignedHandlers.has(mt));\n if (unassigned.length > 0) {\n console.log(\n color(\n `⚠️ ${unassigned.length} handler(s) not assigned to any subsystem (will not be verified):`,\n COLORS.yellow\n )\n );\n for (const h of unassigned.slice(0, 10)) {\n console.log(color(` • ${h}`, COLORS.yellow));\n }\n if (unassigned.length > 10) {\n console.log(color(` ... and ${unassigned.length - 10} more`, COLORS.yellow));\n }\n console.log();\n }\n\n // Setup Docker once\n const docker = await setupDocker();\n const timeoutSeconds = getTimeout(config);\n const workers = getWorkers(config);\n const maxDepth = getMaxDepth(config);\n\n // Generate and run per-subsystem\n const { generateSubsystemTLA } = await import(\"./codegen/tla\");\n const results: Array<{\n name: string;\n success: boolean;\n handlerCount: number;\n ensuresCount: number;\n stateCount: number;\n elapsed: number;\n stats?: { statesGenerated: number; distinctStates: number };\n error?: string;\n }> = [];\n\n for (const name of subsystemNames) {\n const sub = subsystems[name];\n const startTime = Date.now();\n\n console.log(color(`⚙️ Verifying subsystem: ${name}...`, COLORS.blue));\n\n // Generate per-subsystem TLA+\n const { spec, cfg } = await generateSubsystemTLA(name, sub, config, analysis);\n\n // Count step-temporal ensures properties registered for this subsystem.\n // This is the upper bound on postconditions TLC will evaluate; a property\n // only fires when its handler is enabled at some reachable state, so the\n // count overstates true coverage when handlers are multi-step-reachable\n // and bounds.maxInFlight is too low to reach them.\n const ensuresCount = (spec.match(/^EnsuresAfter_\\w+ ==/gm) ?? []).length;\n\n // Write specs\n const specDir = path.join(process.cwd(), \"specs\", \"tla\", \"generated\", name);\n if (!fs.existsSync(specDir)) {\n fs.mkdirSync(specDir, { recursive: true });\n }\n\n const specPath = path.join(specDir, `UserApp_${name}.tla`);\n const cfgPath = path.join(specDir, `UserApp_${name}.cfg`);\n fs.writeFileSync(specPath, spec);\n fs.writeFileSync(cfgPath, cfg);\n\n // Copy base spec\n findAndCopyBaseSpec(specDir);\n\n // Run TLC\n const result = await docker.runTLC(specPath, {\n workers,\n timeout: timeoutSeconds > 0 ? timeoutSeconds * 1000 : undefined,\n maxDepth,\n });\n\n const elapsed = (Date.now() - startTime) / 1000;\n\n results.push({\n name,\n success: result.success,\n handlerCount: sub.handlers.length,\n ensuresCount,\n stateCount: result.stats?.distinctStates ?? 0,\n elapsed,\n stats: result.stats,\n error: result.error,\n });\n\n if (result.success) {\n console.log(color(` ✓ ${name} passed (${elapsed.toFixed(1)}s)`, COLORS.green));\n } else {\n console.log(color(` ✗ ${name} failed`, COLORS.red));\n if (result.violation) {\n console.log(color(` Invariant violated: ${result.violation.name}`, COLORS.red));\n } else if (result.error) {\n console.log(color(` Error: ${result.error}`, COLORS.red));\n }\n // Write full output for debugging\n fs.writeFileSync(path.join(specDir, \"tlc-output.log\"), result.output);\n }\n }\n\n console.log();\n\n // Compositional report\n displayCompositionalReport(results, interference.valid);\n}\n\nfunction displayEnsuresSummary(results: Array<{ ensuresCount: number }>): void {\n const totalEnsures = results.reduce((sum, r) => sum + r.ensuresCount, 0);\n if (totalEnsures === 0) return;\n\n const subsystemWord = `subsystem${results.length === 1 ? \"\" : \"s\"}`;\n console.log();\n console.log(\n color(\n ` ${totalEnsures} ensures step-properties registered across ${results.length} ${subsystemWord}.`,\n COLORS.gray\n )\n );\n console.log(\n color(\" A property only fires at states where its handler is enabled — raise\", COLORS.gray)\n );\n console.log(\n color(\n \" bounds.maxInFlight on a subsystem to reach multi-step-reachable handlers.\",\n COLORS.gray\n )\n );\n}\n\nfunction displayCompositionalReport(\n results: Array<{\n name: string;\n success: boolean;\n handlerCount: number;\n ensuresCount: number;\n stateCount: number;\n elapsed: number;\n }>,\n nonInterferenceValid: boolean\n): void {\n console.log(color(\"Subsystem verification results:\\n\", COLORS.blue));\n\n for (const r of results) {\n const status = r.success ? color(\"✓\", COLORS.green) : color(\"✗\", COLORS.red);\n const name = r.name.padEnd(20);\n const handlers = `${r.handlerCount} handler${r.handlerCount === 1 ? \"\" : \"s\"}`;\n const ensures = `${r.ensuresCount} ensures`;\n const states = `${r.stateCount} states`;\n const time = `${r.elapsed.toFixed(1)}s`;\n console.log(\n ` ${status} ${name} ${handlers.padEnd(14)} ${ensures.padEnd(12)} ${states.padEnd(14)} ${time}`\n );\n }\n\n displayEnsuresSummary(results);\n\n console.log();\n\n const nonIntLabel = nonInterferenceValid\n ? color(\"✓ verified (no cross-subsystem state writes)\", COLORS.green)\n : color(\"⚠ violations detected\", COLORS.yellow);\n console.log(` Non-interference: ${nonIntLabel}`);\n console.log();\n\n const allPassed = results.every((r) => r.success);\n if (allPassed && nonInterferenceValid) {\n console.log(color(\"Compositional result: ✓ PASS\", COLORS.green));\n console.log(\n color(\" All subsystems verified independently. By non-interference,\", COLORS.gray)\n );\n console.log(color(\" the full system satisfies all per-subsystem invariants.\", COLORS.gray));\n } else if (allPassed && !nonInterferenceValid) {\n console.log(color(\"Compositional result: ⚠ PASS (with warnings)\", COLORS.yellow));\n console.log(\n color(\" All subsystems passed, but non-interference violations exist.\", COLORS.gray)\n );\n console.log(color(\" Compositional soundness is not guaranteed.\", COLORS.gray));\n } else {\n console.log(color(\"Compositional result: ✗ FAIL\", COLORS.red));\n const failed = results.filter((r) => !r.success);\n for (const f of failed) {\n console.log(color(` Failed: ${f.name}`, COLORS.red));\n }\n process.exit(1);\n }\n\n console.log();\n}\n\nasync function loadVerificationConfig(configPath: string): Promise<unknown> {\n const resolvedPath = path.resolve(configPath);\n const configModule = await import(`file://${resolvedPath}?t=${Date.now()}`);\n\n // Support both named export (verificationConfig) and default export\n // Named export was added in v0.7.0 for better IDE support\n return configModule.verificationConfig || configModule.default;\n}\n\nasync function runCodebaseAnalysis(): Promise<{ fields: unknown[]; messageTypes: unknown[] }> {\n console.log(color(\"📊 Analyzing codebase...\", COLORS.blue));\n const tsConfigPath = findTsConfig();\n if (!tsConfigPath) {\n throw new Error(\"Could not find tsconfig.json\");\n }\n\n const analysis = await analyzeCodebase({\n tsConfigPath,\n stateFilePath: findStateFile(),\n });\n\n console.log(color(\"✓ Analysis complete\", COLORS.green));\n console.log();\n\n return analysis;\n}\n\nasync function generateAndWriteTLASpecs(\n config: unknown,\n analysis: unknown\n): Promise<{ specPath: string; specDir: string }> {\n const { generateTLA } = await import(\"./codegen/tla\");\n\n console.log(color(\"📝 Generating TLA+ specification...\", COLORS.blue));\n const { spec, cfg } = await generateTLA(config, analysis);\n\n const specDir = path.join(process.cwd(), \"specs\", \"tla\", \"generated\");\n if (!fs.existsSync(specDir)) {\n fs.mkdirSync(specDir, { recursive: true });\n }\n\n const specPath = path.join(specDir, \"UserApp.tla\");\n const cfgPath = path.join(specDir, \"UserApp.cfg\");\n\n fs.writeFileSync(specPath, spec);\n fs.writeFileSync(cfgPath, cfg);\n\n return { specPath, specDir };\n}\n\nfunction findAndCopyBaseSpec(specDir: string): void {\n const possiblePaths = [\n path.join(process.cwd(), \"specs\", \"tla\", \"MessageRouter.tla\"),\n path.join(__dirname, \"..\", \"specs\", \"tla\", \"MessageRouter.tla\"),\n path.join(__dirname, \"..\", \"..\", \"specs\", \"tla\", \"MessageRouter.tla\"),\n path.join(\n process.cwd(),\n \"external\",\n \"polly\",\n \"packages\",\n \"verify\",\n \"specs\",\n \"tla\",\n \"MessageRouter.tla\"\n ),\n path.join(\n process.cwd(),\n \"node_modules\",\n \"@fairfox\",\n \"polly-verify\",\n \"specs\",\n \"tla\",\n \"MessageRouter.tla\"\n ),\n ];\n\n let baseSpecPath: string | null = null;\n for (const candidatePath of possiblePaths) {\n if (fs.existsSync(candidatePath)) {\n baseSpecPath = candidatePath;\n break;\n }\n }\n\n if (baseSpecPath) {\n const destSpecPath = path.join(specDir, \"MessageRouter.tla\");\n fs.copyFileSync(baseSpecPath, destSpecPath);\n console.log(color(\"✓ Copied MessageRouter.tla\", COLORS.green));\n } else {\n console.log(\n color(\"⚠️ Warning: MessageRouter.tla not found, verification may fail\", COLORS.yellow)\n );\n console.log(color(\" Searched in:\", COLORS.gray));\n for (const searchPath of possiblePaths) {\n console.log(color(` - ${searchPath}`, COLORS.gray));\n }\n }\n}\n\n/**\n * polly#114: locate the directory holding the committed MeshSeed.tla /\n * MeshSeed.cfg pair. Mirrors findAndCopyBaseSpec's search order.\n */\nfunction findMeshSeedSpecDir(): string | null {\n const candidates = [\n path.join(process.cwd(), \"specs\", \"tla\"),\n path.join(__dirname, \"..\", \"specs\", \"tla\"),\n path.join(__dirname, \"..\", \"..\", \"specs\", \"tla\"),\n path.join(process.cwd(), \"node_modules\", \"@fairfox\", \"polly-verify\", \"specs\", \"tla\"),\n ];\n for (const dir of candidates) {\n if (fs.existsSync(path.join(dir, \"MeshSeed.tla\"))) return dir;\n }\n return null;\n}\n\n/**\n * polly#114: model-check the concurrent first-time $meshState seed.\n *\n * When the project declares mesh documents the seed path is in scope —\n * and the polly#113 race (two devices materialising the same document\n * concurrently, forking it permanently) lived entirely outside the\n * verify pipeline. This runs MeshSeed.tla alongside the project spec.\n *\n * `POLLY_113_DISABLE_FIX=1` — the same toggle seedDocumentBytes honours\n * to restore the pre-fix non-deterministic seed — flips the spec's\n * SeedDeterministic constant to FALSE. Under it TLC reports a\n * SeedConvergence violation and verification fails, so a regression in\n * the seed path cannot land green.\n *\n * Returns undefined (guard skipped) when no mesh documents are declared.\n */\nasync function runMeshSeedGuard(\n docker: Awaited<ReturnType<typeof setupDocker>>,\n specDir: string,\n config: unknown\n): Promise<Parameters<typeof displayVerificationResults>[0] | undefined> {\n if (getMeshDocIds(config).length === 0) return undefined;\n\n const sourceDir = findMeshSeedSpecDir();\n if (!sourceDir) {\n console.log(color(\"⚠️ MeshSeed.tla not found — skipping seed-race guard\", COLORS.yellow));\n return undefined;\n }\n\n const fixDisabled = isSeedFixDisabled();\n fs.copyFileSync(path.join(sourceDir, \"MeshSeed.tla\"), path.join(specDir, \"MeshSeed.tla\"));\n // One source of truth for Peers / invariants / properties: the\n // committed cfg. Only the SeedDeterministic constant is rewritten.\n const baseCfg = fs.readFileSync(path.join(sourceDir, \"MeshSeed.cfg\"), \"utf8\");\n fs.writeFileSync(\n path.join(specDir, \"MeshSeed.cfg\"),\n meshSeedCfg(baseCfg, { disableFix: fixDisabled })\n );\n\n console.log(\n color(\n `⚙️ Running mesh seed-race guard (MeshSeed.tla, SeedDeterministic = ${\n fixDisabled ? \"FALSE\" : \"TRUE\"\n })...`,\n COLORS.blue\n )\n );\n return docker.runTLC(path.join(specDir, \"MeshSeed.tla\"), { workers: 1 });\n}\n\nasync function setupDocker(): Promise<{\n runTLC: (\n specPath: string,\n options: { workers: number; timeout: number }\n ) => Promise<{\n success: boolean;\n stats?: { statesGenerated: number; distinctStates: number };\n violation?: { name: string; trace: string[] };\n error?: string;\n output: string;\n }>;\n}> {\n const { DockerRunner } = await import(\"./runner/docker\");\n\n console.log(color(\"🐳 Checking Docker...\", COLORS.blue));\n const docker = new DockerRunner();\n\n try {\n if (!(await docker.isDockerAvailable())) {\n console.log();\n console.log(color(\"❌ Docker is not available\", COLORS.red));\n console.log();\n console.log(\"Please ensure Docker is installed and running:\");\n console.log(\n color(\n \" • Install Docker Desktop: https://www.docker.com/products/docker-desktop\",\n COLORS.gray\n )\n );\n console.log(color(\" • Make sure Docker Desktop is running\", COLORS.gray));\n console.log();\n throw new Error(\"Docker is not available\");\n }\n } catch (error) {\n console.log();\n if (error instanceof Error && error.message.includes(\"timed out\")) {\n console.log(color(\"❌ Docker is unresponsive\", COLORS.red));\n console.log();\n console.log(\"Docker appears to be installed but is not responding.\");\n console.log(\"Try restarting Docker:\");\n console.log(color(\" • Quit Docker Desktop completely\", COLORS.gray));\n console.log(color(\" • Restart Docker Desktop\", COLORS.gray));\n console.log(\n color(\" • Wait for Docker to fully start (check the menu bar icon)\", COLORS.gray)\n );\n console.log();\n } else if (error instanceof Error && error.message !== \"Docker is not available\") {\n console.log(color(`❌ Error checking Docker: ${error.message}`, COLORS.red));\n console.log();\n }\n throw error;\n }\n\n try {\n if (!(await docker.hasImage())) {\n console.log(color(\" Pulling TLA+ image (this may take a moment)...\", COLORS.gray));\n await docker.pullImage((line) => {\n console.log(color(` ${line}`, COLORS.gray));\n });\n }\n } catch (error) {\n console.log();\n if (error instanceof Error && error.message.includes(\"timed out\")) {\n console.log(color(\"❌ Docker is unresponsive while checking for TLA+ image\", COLORS.red));\n console.log();\n console.log(\"Docker is not responding. Try restarting Docker Desktop.\");\n console.log();\n }\n throw error;\n }\n\n console.log(color(\"✓ Docker ready\", COLORS.green));\n console.log();\n\n return docker;\n}\n\nfunction displayVerificationResults(\n result: {\n success: boolean;\n stats?: { statesGenerated: number; distinctStates: number };\n violation?: { name: string; trace: string[] };\n error?: string;\n output: string;\n },\n specDir: string\n): void {\n if (result.success) {\n console.log(color(\"✅ Verification passed!\\n\", COLORS.green));\n console.log(color(\"Statistics:\", COLORS.blue));\n console.log(color(` States explored: ${result.stats?.statesGenerated || 0}`, COLORS.gray));\n console.log(color(` Distinct states: ${result.stats?.distinctStates || 0}`, COLORS.gray));\n console.log();\n return;\n }\n\n console.log(color(\"❌ Verification failed!\\n\", COLORS.red));\n\n if (result.violation) {\n console.log(color(`Invariant violated: ${result.violation.name}\\n`, COLORS.red));\n console.log(color(\"Trace to violation:\", COLORS.yellow));\n for (const line of result.violation.trace.slice(0, 20)) {\n console.log(color(` ${line}`, COLORS.gray));\n }\n if (result.violation.trace.length > 20) {\n console.log(color(` ... (${result.violation.trace.length - 20} more lines)`, COLORS.gray));\n }\n } else if (result.error) {\n console.log(color(`Error: ${result.error}`, COLORS.red));\n }\n\n console.log();\n console.log(color(\"Full output saved to:\", COLORS.gray));\n console.log(color(` ${path.join(specDir, \"tlc-output.log\")}`, COLORS.gray));\n fs.writeFileSync(path.join(specDir, \"tlc-output.log\"), result.output);\n\n process.exit(1);\n}\n\nfunction showHelp() {\n console.log(`\n${color(\"polly verify\", COLORS.blue)} - Formal verification for web extensions\n\nTests sample a few executions; a model checker explores every reachable state.\nThis compiles your handlers and state into TLA+ and runs TLC to prove safety\ninvariants hold under all interleavings — the ordering and concurrency bugs\ntests rarely reach.\n\n${color(\"Commands:\", COLORS.blue)}\n\n ${color(\"polly verify\", COLORS.green)}\n Run verification (validates config, generates specs, runs TLC)\n\n ${color(\"polly verify --strict\", COLORS.green)}\n Fail closed (non-zero exit) on model-coverage gaps: a declared state\n field no handler writes, or an unverified $meshState/$peerState predicate.\n Also via ${color(\"POLLY_VERIFY_STRICT=1\", COLORS.yellow)}.\n\n ${color(\"polly verify --setup\", COLORS.green)}\n Analyze codebase and generate configuration file\n\n ${color(\"polly verify --validate\", COLORS.green)}\n Validate existing configuration without running verification\n\n ${color(\"polly verify --estimate\", COLORS.green)}\n Estimate state space without running TLC\n\n ${color(\"polly verify --help\", COLORS.green)}\n Show this help message\n\n${color(\"Getting Started:\", COLORS.blue)}\n\n 1. Run ${color(\"polly verify --setup\", COLORS.green)} to generate configuration\n 2. Review ${color(\"specs/verification.config.ts\", COLORS.blue)} and fill in marked fields\n 3. Run ${color(\"polly verify --validate\", COLORS.green)} to check your configuration\n 4. Run ${color(\"polly verify\", COLORS.green)} to start verification\n\n${color(\"Configuration Help:\", COLORS.blue)}\n\n The generated config file uses special markers:\n\n ${color(\"/* CONFIGURE */\", COLORS.yellow)} - Replace with your value\n ${color(\"/* REVIEW */\", COLORS.yellow)} - Check auto-generated value\n ${color(\"null\", COLORS.yellow)} - Must be replaced with concrete value\n\n${color(\"Learn More:\", COLORS.blue)}\n\n Documentation: https://github.com/fairfox/web-ext\n TLA+ Resources: https://learntla.com\n`);\n}\n\nfunction findTsConfig(): string | null {\n const locations = [\n path.join(process.cwd(), \"tsconfig.json\"),\n path.join(process.cwd(), \"packages\", \"web-ext\", \"tsconfig.json\"),\n ];\n\n for (const loc of locations) {\n if (fs.existsSync(loc)) {\n return loc;\n }\n }\n\n return null;\n}\n\nfunction findStateFile(): string | undefined {\n const locations = [\n path.join(process.cwd(), \"types\", \"state.ts\"),\n path.join(process.cwd(), \"src\", \"types\", \"state.ts\"),\n path.join(process.cwd(), \"packages\", \"web-ext\", \"src\", \"shared\", \"state\", \"app-state.ts\"),\n ];\n\n for (const loc of locations) {\n if (fs.existsSync(loc)) {\n return loc;\n }\n }\n\n return undefined;\n}\n\nmain().catch((error) => {\n if (error instanceof Error && error.stack) {\n // Stack trace already printed by underlying functions\n }\n process.exit(1);\n});\n",
18
+ "#!/usr/bin/env bun\n// CLI for verification system\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { type ValidationResult, validateExpressions } from \"./analysis/expression-validator\";\nimport { computeMeshOrPeerSignalFindings } from \"./analysis/mesh-signal-warnings\";\nimport {\n estimateStateSpace,\n feasibilityLabel,\n type StateSpaceEstimate,\n} from \"./analysis/state-space-estimator\";\nimport { generateConfig } from \"./codegen/config\";\nimport { validateConfig } from \"./config/parser\";\nimport type { UnifiedVerificationConfig } from \"./config/types\";\nimport { analyzeCodebase } from \"./extract/types\";\nimport { isSeedFixDisabled, meshSeedCfg } from \"./runner/mesh-seed\";\n\nconst COLORS = {\n reset: \"\\x1b[0m\",\n red: \"\\x1b[31m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n blue: \"\\x1b[34m\",\n gray: \"\\x1b[90m\",\n};\n\nfunction color(text: string, colorCode: string): string {\n return `${colorCode}${text}${COLORS.reset}`;\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n switch (command) {\n case \"--setup\":\n case \"setup\":\n await setupCommand();\n break;\n\n case \"--validate\":\n case \"validate\":\n await validateCommand();\n break;\n\n case \"--estimate\":\n case \"estimate\":\n await estimateCommand();\n break;\n\n case \"--help\":\n case \"help\":\n showHelp();\n break;\n\n default:\n await verifyCommand();\n }\n}\n\nasync function setupCommand() {\n console.log(color(\"\\n🔍 Analyzing codebase...\\n\", COLORS.blue));\n\n try {\n // Find tsconfig\n const tsConfigPath = findTsConfig();\n if (!tsConfigPath) {\n process.exit(1);\n }\n\n console.log(color(` Using: ${tsConfigPath}`, COLORS.gray));\n\n // Analyze codebase\n const analysis = await analyzeCodebase({\n tsConfigPath,\n stateFilePath: findStateFile(),\n });\n\n displayAnalysisResults(analysis);\n displayAnalysisSummary(analysis);\n\n // Generate and write config\n const configContent = generateConfig(analysis);\n const configPath = path.join(process.cwd(), \"specs\", \"verification.config.ts\");\n\n writeConfigFile(configPath, configContent);\n displaySetupSuccess(configPath);\n } catch (_error) {\n process.exit(1);\n }\n}\n\nfunction displayAnalysisResults(analysis: {\n stateType?: unknown;\n fields: unknown[];\n messageTypes: unknown[];\n}): void {\n if (analysis.stateType) {\n console.log(color(`✓ Found state type with ${analysis.fields.length} field(s)`, COLORS.green));\n } else {\n console.log(color(\"\\n⚠️ Could not find state type definition\", COLORS.yellow));\n console.log(\" Expected to find a type named 'AppState' or 'State'\");\n console.log(\" in a file matching **/state*.ts\");\n console.log();\n console.log(\" You can still generate a config template:\");\n console.log(\" It will be empty and you'll need to fill it in manually.\");\n console.log();\n }\n\n console.log(color(`✓ Found ${analysis.messageTypes.length} message type(s)`, COLORS.green));\n}\n\nfunction displayAnalysisSummary(analysis: {\n fields: Array<{ path: string; type: { kind: string }; confidence: string }>;\n}): void {\n if (analysis.fields.length === 0) return;\n\n console.log(color(\"\\n📊 Configuration Summary:\\n\", COLORS.blue));\n\n const table = [\n [\"Field\", \"Type\", \"Status\"],\n [\"─\".repeat(30), \"─\".repeat(20), \"─\".repeat(20)],\n ];\n\n for (const field of analysis.fields) {\n const status = getFieldStatus(field.confidence);\n table.push([field.path, field.type.kind, status]);\n }\n\n for (const row of table) {\n console.log(` ${row[0]?.padEnd(32) ?? \"\"} ${row[1]?.padEnd(22) ?? \"\"} ${row[2] ?? \"\"}`);\n }\n}\n\nfunction getFieldStatus(confidence: string): string {\n if (confidence === \"high\") return color(\"✓ Auto-configured\", COLORS.green);\n if (confidence === \"medium\") return color(\"⚠ Review needed\", COLORS.yellow);\n return color(\"⚠ Manual config\", COLORS.red);\n}\n\nfunction writeConfigFile(configPath: string, configContent: string): void {\n const configDir = path.dirname(configPath);\n if (!fs.existsSync(configDir)) {\n fs.mkdirSync(configDir, { recursive: true });\n }\n fs.writeFileSync(configPath, configContent, \"utf-8\");\n}\n\nfunction displaySetupSuccess(configPath: string): void {\n console.log(color(\"\\n✅ Configuration generated!\\n\", COLORS.green));\n console.log(` File: ${color(configPath, COLORS.blue)}`);\n console.log();\n console.log(color(\"📝 Next steps:\", COLORS.blue));\n console.log();\n console.log(\" 1. Review the generated configuration file\");\n console.log(\" 2. Fill in values marked with /* CONFIGURE */\");\n console.log(\" 3. Run 'polly verify' to check your configuration\");\n console.log();\n console.log(color(\"💡 Tip:\", COLORS.gray));\n console.log(color(\" Look for comments explaining what each field needs.\", COLORS.gray));\n console.log();\n}\n\nasync function validateCommand() {\n const configPath = path.join(process.cwd(), \"specs\", \"verification.config.ts\");\n\n console.log(color(\"\\n🔍 Validating configuration...\\n\", COLORS.blue));\n\n const result = validateConfig(configPath);\n\n if (result.valid) {\n console.log(color(\"✅ Configuration is complete and valid!\\n\", COLORS.green));\n console.log(\" You can now run 'polly verify' to start verification.\");\n console.log();\n return;\n }\n\n // Show errors\n const errors = result.issues.filter((i) => i.severity === \"error\");\n const warnings = result.issues.filter((i) => i.severity === \"warning\");\n\n displayValidationErrors(errors);\n displayValidationWarnings(warnings);\n\n console.log(color(\"Configuration incomplete. Please fix the errors above.\\n\", COLORS.red));\n process.exit(1);\n}\n\nasync function estimateCommand() {\n const configPath = path.join(process.cwd(), \"specs\", \"verification.config.ts\");\n\n console.log(color(\"\\n📊 Estimating state space...\\n\", COLORS.blue));\n\n // Validate config first\n const validation = validateConfig(configPath);\n if (!validation.valid) {\n const errors = validation.issues.filter((i) => i.severity === \"error\");\n console.log(color(`❌ Configuration incomplete (${errors.length} error(s))\\n`, COLORS.red));\n for (const error of errors.slice(0, 3)) {\n console.log(color(` • ${error.message}`, COLORS.red));\n }\n console.log(\"\\n Run 'polly verify --validate' to see all issues\");\n process.exit(1);\n }\n\n // Load config\n const config = await loadVerificationConfig(configPath);\n\n // Analyze codebase\n const analysis = await runCodebaseAnalysis();\n\n // Validate expressions\n const typedConfig = config as unknown as import(\"./config/types\").UnifiedVerificationConfig;\n const typedAnalysis = analysis as unknown as import(\"./core/model\").CodebaseAnalysis;\n const meshSignalNames = new Set(\n (typedAnalysis.meshOrPeerSignals ?? []).map((s) => s.variableName)\n );\n const exprValidation = validateExpressions(\n typedAnalysis.handlers,\n typedConfig.state,\n meshSignalNames\n );\n if (exprValidation.warnings.length > 0) {\n displayExpressionWarnings(exprValidation);\n }\n\n // Estimate\n const estimate = estimateStateSpace(typedConfig, typedAnalysis);\n\n displayEstimate(estimate);\n}\n\nfunction displayEstimate(estimate: StateSpaceEstimate): void {\n console.log(color(\"State space estimate:\\n\", COLORS.blue));\n\n // Fields table\n console.log(color(\" Fields:\", COLORS.blue));\n for (const field of estimate.fields) {\n const name = field.name.padEnd(28);\n const kind = field.kind.padEnd(18);\n const card =\n field.cardinality === \"unbounded\"\n ? color(\"(excluded — unbounded)\", COLORS.yellow)\n : `${field.cardinality} values`;\n console.log(` ${name} ${kind} ${card}`);\n }\n\n console.log();\n console.log(` Field combinations: ${color(String(estimate.fieldProduct), COLORS.green)}`);\n console.log(` Handlers: ${estimate.handlerCount}`);\n console.log(` Max in-flight: ${estimate.maxInFlight}`);\n console.log(\n ` Contexts: ${estimate.contextCount} (${estimate.contextCount - 1} tab${estimate.contextCount - 1 === 1 ? \"\" : \"s\"} + background)`\n );\n console.log(` Interleaving factor: ${estimate.interleavingFactor}`);\n\n console.log();\n console.log(\n ` Estimated states: ${color(`~${estimate.estimatedStates.toLocaleString()}`, COLORS.green)}`\n );\n\n // Feasibility\n const feasColor =\n estimate.feasibility === \"trivial\" || estimate.feasibility === \"feasible\"\n ? COLORS.green\n : estimate.feasibility === \"slow\"\n ? COLORS.yellow\n : COLORS.red;\n console.log();\n console.log(` Assessment: ${color(feasibilityLabel(estimate.feasibility), feasColor)}`);\n\n // Warnings\n if (estimate.warnings.length > 0) {\n console.log();\n for (const w of estimate.warnings) {\n console.log(color(` ⚠️ ${w}`, COLORS.yellow));\n }\n }\n\n // Suggestions\n if (estimate.suggestions.length > 0) {\n console.log();\n console.log(color(\" Suggestions:\", COLORS.blue));\n for (const s of estimate.suggestions) {\n console.log(color(` • ${s}`, COLORS.gray));\n }\n }\n\n console.log();\n}\n\nfunction displayValidationErrors(\n errors: Array<{\n message: string;\n field?: string;\n location?: { line: number };\n suggestion: string;\n }>\n): void {\n if (errors.length === 0) return;\n\n console.log(color(`❌ Found ${errors.length} error(s):\\n`, COLORS.red));\n\n for (const error of errors) {\n console.log(color(` • ${error.message}`, COLORS.red));\n if (error.field) {\n console.log(color(` Field: ${error.field}`, COLORS.gray));\n }\n if (error.location) {\n console.log(color(` Location: line ${error.location.line}`, COLORS.gray));\n }\n console.log(color(` → ${error.suggestion}`, COLORS.yellow));\n console.log();\n }\n}\n\nfunction displayValidationWarnings(\n warnings: Array<{ message: string; field?: string; suggestion: string }>\n): void {\n if (warnings.length === 0) return;\n\n console.log(color(`⚠️ Found ${warnings.length} warning(s):\\n`, COLORS.yellow));\n\n for (const warning of warnings) {\n console.log(color(` • ${warning.message}`, COLORS.yellow));\n if (warning.field) {\n console.log(color(` Field: ${warning.field}`, COLORS.gray));\n }\n console.log(color(` → ${warning.suggestion}`, COLORS.gray));\n console.log();\n }\n}\n\nfunction displayExpressionWarnings(result: ValidationResult): void {\n if (result.warnings.length === 0) return;\n\n console.log(color(`⚠️ Found ${result.warnCount} expression warning(s):\\n`, COLORS.yellow));\n\n for (const w of result.warnings) {\n console.log(color(` ⚠ ${w.message}`, COLORS.yellow));\n console.log(color(` ${w.expression}`, COLORS.gray));\n console.log(color(` at ${w.location.file}:${w.location.line}`, COLORS.gray));\n console.log(color(` → ${w.suggestion}`, COLORS.yellow));\n console.log();\n }\n}\n\n/**\n * polly#117: warn when a handler's requires/ensures predicate\n * references a `$meshState`/`$peerState` signal whose cross-peer\n * semantics the verifier does NOT check.\n *\n * A `$meshState` document declared under `mesh:` in the verification\n * config is routed through the `meshState` namespace with a\n * `PropagateMeshOp` action — its cross-peer claims are genuinely\n * checked, so it is NOT warned about. An *undeclared* `$meshState`\n * signal, or any `$peerState` signal, is flattened to single-context\n * local state; a predicate over it silently asserts only the\n * executing context's view. This warning makes that narrowing loud\n * and points at the fix.\n */\nfunction displayMeshOrPeerSignalWarnings(\n analysis: import(\"./core/model\").CodebaseAnalysis,\n declaredMeshDocs: ReadonlySet<string>\n): number {\n const findings = computeMeshOrPeerSignalFindings(analysis, declaredMeshDocs);\n if (findings.length === 0) return 0;\n\n const hasUndeclaredMesh = findings.some((f) => f.signalKind === \"mesh\");\n const hasPeer = findings.some((f) => f.signalKind === \"peer\");\n\n console.log(\n color(\n `\\n⚠️ ${findings.length} predicate(s) reference an unverified $meshState/$peerState signal (polly#117):`,\n COLORS.yellow\n )\n );\n console.log(\n color(\n \" These signals are flattened to single-context local state, so a green run\",\n COLORS.gray\n )\n );\n console.log(color(\" does NOT prove the claim holds across peers.\", COLORS.gray));\n if (hasUndeclaredMesh) {\n console.log(\n color(\n \" Fix ($meshState): declare the document key under `mesh: { ... }` in your\",\n COLORS.gray\n )\n );\n console.log(\n color(\n \" verification config. Declared mesh docs are routed through the meshState\",\n COLORS.gray\n )\n );\n console.log(\n color(\n \" namespace with a PropagateMeshOp action, so `forAllPeers(...)` claims are checked.\",\n COLORS.gray\n )\n );\n }\n if (hasPeer) {\n console.log(\n color(\" $peerState signals have no cross-peer verification model yet.\", COLORS.gray)\n );\n }\n console.log();\n\n for (const f of findings) {\n const remedy =\n f.signalKind === \"mesh\" ? \"not declared in config.mesh\" : \"$peerState — no cross-peer model\";\n console.log(color(` ⚠ ${f.handler} ${f.kind}: ${f.signalName} (${remedy})`, COLORS.yellow));\n console.log(color(` ${f.expression}`, COLORS.gray));\n console.log(color(` at ${f.location.file}:${f.location.line}`, COLORS.gray));\n console.log();\n }\n\n return findings.length;\n}\n\n/**\n * polly#160 (Ask #1): does the operator want a fail-closed run? `--strict`\n * (or POLLY_VERIFY_STRICT=1) turns model-coverage gaps and unverified\n * mesh/peer signals from warnings into a non-zero exit, so a silently\n * unmodelled path cannot pass with a green check.\n */\nfunction isStrictMode(): boolean {\n return process.argv.includes(\"--strict\") || process.env.POLLY_VERIFY_STRICT === \"1\";\n}\n\n/**\n * `polly verify --witness`: after the invariant pass, turn each BDD scenario's\n * Then-predicate into a per-scenario TLC reachability check (the deeper BDD ↔\n * verify link). A scenario whose outcome the exhaustive model proves\n * unreachable is a scenario that lies. Off by default — it adds one TLC run per\n * witnessable scenario.\n */\nfunction isWitnessMode(): boolean {\n return process.argv.includes(\"--witness\");\n}\n\n/**\n * polly#160 (Ask #1): render the model-coverage report — which declared state\n * fields are written by which handlers, which are written by none, and which\n * mutators pin no postcondition. Clean specs get a one-line confirmation.\n */\nfunction displayModelCoverage(\n report: import(\"./analysis/model-coverage\").ModelCoverageReport\n): void {\n const { unwrittenFields, unconstrainedMutators, fieldCoverage } = report;\n\n if (unwrittenFields.length === 0 && unconstrainedMutators.length === 0) {\n console.log(\n color(\n `✓ Model coverage: all ${fieldCoverage.length} declared field(s) written by a modelled handler`,\n COLORS.green\n )\n );\n console.log();\n return;\n }\n\n if (unwrittenFields.length > 0) {\n console.log(\n color(\n `\\n⚠️ ${unwrittenFields.length} declared state field(s) written by NO modelled handler (polly#160):`,\n COLORS.yellow\n )\n );\n for (const f of unwrittenFields) {\n console.log(color(` • ${f}`, COLORS.yellow));\n }\n console.log(\n color(\n \" The model carries a variable no transition can change. Either it is dead\",\n COLORS.gray\n )\n );\n console.log(\n color(\n \" state (drop it from the verified surface) or its mutating path was never\",\n COLORS.gray\n )\n );\n console.log(\n color(\" modelled — the omission class both TLC and mutation testing miss.\", COLORS.gray)\n );\n console.log();\n }\n\n if (unconstrainedMutators.length > 0) {\n console.log(\n color(\n `ℹ️ ${unconstrainedMutators.length} handler(s) mutate declared state with no ensures() postcondition:`,\n COLORS.gray\n )\n );\n for (const m of unconstrainedMutators) {\n console.log(\n color(\n ` • ${m.handler} writes {${m.fields.join(\", \")}} — ${m.location.file}:${m.location.line}`,\n COLORS.gray\n )\n );\n }\n console.log(\n color(\n \" The checker explores these transitions but asserts nothing about their effect.\",\n COLORS.gray\n )\n );\n console.log();\n }\n}\n\n/**\n * polly#160 (Ask #1): compute and render the model-coverage report, then —\n * under --strict — fail closed before the expensive TLC pass when the model\n * has an unwritten declared field or an unverified mesh/peer signal. Extracted\n * from runFullVerification to keep that orchestrator within complexity limits.\n */\nasync function runModelCoverage(\n typedConfig: UnifiedVerificationConfig,\n typedAnalysis: import(\"./core/model\").CodebaseAnalysis,\n meshFindingCount: number\n): Promise<void> {\n const { computeModelCoverage, strictCoverageReasons } = await import(\"./analysis/model-coverage\");\n const stateFields = Object.keys(typedConfig.state ?? {});\n const coverage = computeModelCoverage(stateFields, typedAnalysis.handlers);\n displayModelCoverage(coverage);\n\n if (!isStrictMode()) return;\n\n const reasons = strictCoverageReasons(coverage, meshFindingCount);\n\n if (reasons.length === 0) {\n console.log(color(\"✓ Strict mode: model coverage complete\", COLORS.green));\n console.log();\n return;\n }\n\n console.log(color(\"❌ Strict mode: model coverage incomplete\\n\", COLORS.red));\n for (const reason of reasons) {\n console.log(color(` • ${reason}`, COLORS.red));\n }\n console.log();\n console.log(\n color(\" --strict fails closed on these so an unmodelled path cannot pass with a\", COLORS.gray)\n );\n console.log(\n color(\" green check. Re-run without --strict to treat them as warnings.\", COLORS.gray)\n );\n console.log();\n process.exit(1);\n}\n\nasync function verifyCommand() {\n const configPath = path.join(process.cwd(), \"specs\", \"verification.config.ts\");\n\n console.log(color(\"\\n🔍 Running verification...\\n\", COLORS.blue));\n\n // First validate config\n const validation = validateConfig(configPath);\n\n if (!validation.valid) {\n const errors = validation.issues.filter((i) => i.severity === \"error\");\n console.log(color(`❌ Configuration incomplete (${errors.length} error(s))\\n`, COLORS.red));\n\n for (const error of errors.slice(0, 3)) {\n console.log(color(` • ${error.message}`, COLORS.red));\n if (error.field) {\n console.log(color(` Field: ${error.field}`, COLORS.gray));\n }\n console.log();\n }\n\n if (errors.length > 3) {\n console.log(color(` ... and ${errors.length - 3} more error(s)`, COLORS.gray));\n console.log();\n }\n\n console.log(\" Run 'polly verify --validate' to see all issues\");\n console.log(\" Run 'polly verify --setup' to regenerate configuration\");\n console.log();\n process.exit(1);\n }\n\n console.log(color(\"✓ Configuration valid\", COLORS.green));\n console.log();\n\n // Run full verification\n try {\n await runFullVerification(configPath);\n } catch (error) {\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(color(\"\\n❌ Verification error:\", COLORS.red));\n if (error instanceof Error) {\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(color(error.message, COLORS.red));\n if (process.env.POLLY_DEBUG) {\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(color(\"\\nStack trace:\", COLORS.gray));\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(error.stack);\n }\n } else {\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error(String(error));\n }\n // biome-ignore lint/suspicious/noConsole: CLI tool needs console output for error reporting\n console.error();\n process.exit(1);\n }\n}\n\n/**\n * polly#117/#114: read the docIds of the optional `mesh` record off a loaded\n * config without asserting its shape.\n */\nfunction getMeshDocIds(config: unknown): string[] {\n if (typeof config !== \"object\" || config === null || !(\"mesh\" in config)) return [];\n const mesh = config.mesh;\n if (typeof mesh !== \"object\" || mesh === null) return [];\n return Object.keys(mesh);\n}\n\n/**\n * Get timeout in seconds from config (0 = no timeout)\n */\nfunction getTimeout(config: UnifiedVerificationConfig): number {\n return config.verification?.timeout ?? 0;\n}\n\n/**\n * Get number of workers from config\n */\nfunction getWorkers(config: UnifiedVerificationConfig): number {\n return config.verification?.workers ?? 1;\n}\n\n/**\n * Get maxDepth from config for bounded model checking (Tier 2)\n */\nfunction getMaxDepth(config: UnifiedVerificationConfig): number | undefined {\n // maxDepth is only available in legacy config format with tier2 settings\n if (\"tier2\" in config && config.tier2?.boundedExploration?.maxDepth) {\n return config.tier2.boundedExploration.maxDepth;\n }\n return undefined;\n}\n\n/**\n * polly#160 (A2): coupled-field write-coupling lint. WARNS only — a legitimate\n * staged transition (one handler sets each field) trips the per-handler subset\n * check, so this never fails the run. The sound, whole-state detector is the\n * `capabilities` TLA+ invariant. Runs in runFullVerification before the\n * subsystem/monolithic branch, so it covers both paths.\n */\nasync function runCoupledFieldsLint(\n config: UnifiedVerificationConfig,\n analysis: import(\"./core/model\").CodebaseAnalysis\n): Promise<void> {\n const groups = config.coupledFields ?? [];\n if (groups.length === 0) return;\n\n const { checkCoupledFields } = await import(\"./analysis/coupled-fields\");\n const result = checkCoupledFields(groups, analysis.handlers);\n\n if (result.valid) {\n console.log(color(\"✓ Coupled fields: verified (no partial-subset writes)\", COLORS.green));\n console.log();\n return;\n }\n\n console.log(color(\"⚠️ Coupled-field violations detected:\\n\", COLORS.yellow));\n for (const v of result.violations) {\n console.log(\n color(\n ` • Handler \"${v.handler}\" writes {${v.written.join(\", \")}} but not {${v.missing.join(\n \", \"\n )}} of coupled group {${v.group.join(\", \")}}`,\n COLORS.yellow\n )\n );\n }\n console.log();\n console.log(\n color(\n \" These fields are declared to move together; a capability granted without its\",\n COLORS.yellow\n )\n );\n console.log(\n color(\n \" precondition is a likely cause. Co-write the full group in each handler, or model\",\n COLORS.yellow\n )\n );\n console.log(color(\" the relationship with a `capabilities` invariant.\", COLORS.yellow));\n console.log();\n}\n\nasync function runFullVerification(configPath: string) {\n // Load config\n const config = await loadVerificationConfig(configPath);\n\n // Analyze codebase\n const analysis = await runCodebaseAnalysis();\n\n // Validate expressions\n const typedConfig = config as unknown as UnifiedVerificationConfig;\n const typedAnalysis = analysis as unknown as import(\"./core/model\").CodebaseAnalysis;\n // polly#117: mesh/peer signal variable names — references into these\n // are not \"unmodeled fields\"; they are handled by the dedicated\n // mesh/peer signal warning below.\n const meshSignalNames = new Set(\n (typedAnalysis.meshOrPeerSignals ?? []).map((s) => s.variableName)\n );\n const exprValidation = validateExpressions(\n typedAnalysis.handlers,\n typedConfig.state,\n meshSignalNames\n );\n if (exprValidation.warnings.length > 0) {\n displayExpressionWarnings(exprValidation);\n }\n\n // polly#117: surface mesh- and peer-scoped signal references whose\n // cross-peer semantics the codegen does not check. A $meshState doc\n // declared under `mesh:` is verified cross-peer and excluded.\n const declaredMeshDocs = new Set(getMeshDocIds(typedConfig));\n const meshFindingCount = displayMeshOrPeerSignalWarnings(typedAnalysis, declaredMeshDocs);\n\n // polly#160: coupled-field write-coupling lint (warn-only). One call here\n // covers both the subsystem and monolithic paths below.\n await runCoupledFieldsLint(typedConfig, typedAnalysis);\n\n // polly#160 (Ask #1): model-coverage report + optional fail-closed gate.\n await runModelCoverage(typedConfig, typedAnalysis, meshFindingCount);\n\n // Check for subsystem-scoped verification\n if (typedConfig.subsystems && Object.keys(typedConfig.subsystems).length > 0) {\n await runSubsystemVerification(typedConfig, typedAnalysis);\n if (isWitnessMode()) {\n await runWitnessVerification(typedConfig);\n }\n return;\n }\n\n // Monolithic verification (fallback)\n await runMonolithicVerification(config, analysis);\n if (isWitnessMode()) {\n console.log(\n color(\n \"\\n⚠ --witness needs subsystem-scoped verification (a `subsystems` block in the config);\",\n COLORS.yellow\n )\n );\n console.log(\n color(\" reachability witnesses route each scenario to its subsystem spec.\\n\", COLORS.yellow)\n );\n }\n}\n\nasync function runMonolithicVerification(config: unknown, analysis: unknown) {\n // Generate TLA+ specs\n const { specPath, specDir } = await generateAndWriteTLASpecs(config, analysis);\n\n // Find and copy base spec\n findAndCopyBaseSpec(specDir);\n\n console.log(color(\"✓ Specification generated\", COLORS.green));\n console.log(color(` ${specPath}`, COLORS.gray));\n console.log();\n\n // Setup and run Docker\n const docker = await setupDocker();\n\n // Determine timeout, workers, and maxDepth from config\n const typedConfig = config as unknown as UnifiedVerificationConfig;\n const timeoutSeconds = getTimeout(typedConfig);\n const workers = getWorkers(typedConfig);\n const maxDepth = getMaxDepth(typedConfig);\n\n // Run TLC\n console.log(color(\"⚙️ Running TLC model checker...\", COLORS.blue));\n if (timeoutSeconds === 0) {\n console.log(color(\" No timeout set - will run until completion\", COLORS.gray));\n } else {\n const timeoutMinutes = Math.floor(timeoutSeconds / 60);\n const timeoutLabel =\n timeoutMinutes > 0\n ? `${timeoutMinutes} minute${timeoutMinutes > 1 ? \"s\" : \"\"}`\n : `${timeoutSeconds} seconds`;\n console.log(color(` Timeout: ${timeoutLabel}`, COLORS.gray));\n }\n if (maxDepth !== undefined) {\n console.log(color(` Max depth: ${maxDepth}`, COLORS.gray));\n }\n console.log();\n\n const result = await docker.runTLC(specPath, {\n workers,\n timeout: timeoutSeconds > 0 ? timeoutSeconds * 1000 : undefined,\n maxDepth,\n });\n\n // polly#114: when the project declares $meshState documents, also\n // model-check the concurrent first-time seed — the polly#113 race that\n // lived entirely outside verification. A failure here is reported and\n // exits before the project-spec result.\n const meshSeed = await runMeshSeedGuard(docker, specDir, config);\n if (meshSeed && !meshSeed.success) {\n console.log(color(\"\\n❌ Mesh seed-race guard failed (polly#113 / polly#114)\\n\", COLORS.red));\n displayVerificationResults(meshSeed, specDir);\n }\n if (meshSeed) {\n console.log(color(\"✓ Mesh seed-race guard passed (MeshSeed.tla)\\n\", COLORS.green));\n }\n\n // Display results\n displayVerificationResults(result, specDir);\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Subsystem orchestration requires sequential steps with branching\nasync function runSubsystemVerification(\n config: UnifiedVerificationConfig,\n analysis: import(\"./core/model\").CodebaseAnalysis\n) {\n const subsystems = config.subsystems as unknown as Record<\n string,\n { state: string[]; handlers: string[] }\n >;\n const subsystemNames = Object.keys(subsystems);\n\n console.log(\n color(`Subsystem-scoped verification (${subsystemNames.length} subsystems)\\n`, COLORS.blue)\n );\n\n // Non-interference check\n const { checkNonInterference } = await import(\"./analysis/non-interference\");\n const interference = checkNonInterference(subsystems, analysis.handlers);\n\n if (interference.valid) {\n console.log(\n color(\"✓ Non-interference: verified (no cross-subsystem state writes)\", COLORS.green)\n );\n console.log();\n } else {\n console.log(color(\"⚠️ Non-interference violations detected:\\n\", COLORS.yellow));\n for (const v of interference.violations) {\n console.log(\n color(\n ` • Handler \"${v.handler}\" (${v.subsystem}) writes to \"${v.writesTo}\" owned by \"${v.ownedBy}\"`,\n COLORS.yellow\n )\n );\n }\n console.log();\n console.log(\n color(\n \" Compositional verification may not be sound. Consider restructuring subsystem boundaries.\",\n COLORS.yellow\n )\n );\n console.log();\n }\n\n // Precondition-locality check (read-side complement to non-interference).\n // A handler whose requires() reads state owned by another subsystem will\n // silently never have its postcondition evaluated under compositional\n // verification: the foreign subsystem is absent during this pass, so the\n // pre-state the handler waits for is never produced and TLC reports PASS\n // without firing the property the user wrote.\n const { checkPreconditionLocality } = await import(\"./analysis/precondition-locality\");\n const locality = checkPreconditionLocality(subsystems, analysis.handlers);\n\n if (locality.valid) {\n console.log(\n color(\"✓ Precondition locality: verified (no cross-subsystem requires() reads)\", COLORS.green)\n );\n console.log();\n } else {\n console.log(color(\"⚠️ Precondition-locality violations detected:\\n\", COLORS.yellow));\n for (const v of locality.violations) {\n console.log(\n color(\n ` • Handler \"${v.handler}\" (${v.subsystem}) requires \"${v.readsFrom}\" owned by \"${v.ownedBy}\"`,\n COLORS.yellow\n )\n );\n console.log(color(` ${v.expression}`, COLORS.gray));\n }\n console.log();\n console.log(\n color(\n \" Compositional verification of these subsystems cannot satisfy the precondition;\",\n COLORS.yellow\n )\n );\n console.log(\n color(\n \" the handler's ensures() postcondition will not be evaluated. Consider restructuring\",\n COLORS.yellow\n )\n );\n console.log(color(\" subsystems to keep preconditions local.\", COLORS.yellow));\n console.log();\n }\n\n // Warn about unassigned handlers\n const assignedHandlers = new Set(Object.values(subsystems).flatMap((s) => s.handlers));\n const unassigned = analysis.messageTypes.filter((mt) => !assignedHandlers.has(mt));\n if (unassigned.length > 0) {\n console.log(\n color(\n `⚠️ ${unassigned.length} handler(s) not assigned to any subsystem (will not be verified):`,\n COLORS.yellow\n )\n );\n for (const h of unassigned.slice(0, 10)) {\n console.log(color(` • ${h}`, COLORS.yellow));\n }\n if (unassigned.length > 10) {\n console.log(color(` ... and ${unassigned.length - 10} more`, COLORS.yellow));\n }\n console.log();\n }\n\n // Setup Docker once\n const docker = await setupDocker();\n const timeoutSeconds = getTimeout(config);\n const workers = getWorkers(config);\n const maxDepth = getMaxDepth(config);\n\n // Generate and run per-subsystem\n const { generateSubsystemTLA } = await import(\"./codegen/tla\");\n const results: Array<{\n name: string;\n success: boolean;\n handlerCount: number;\n ensuresCount: number;\n stateCount: number;\n elapsed: number;\n stats?: { statesGenerated: number; distinctStates: number };\n error?: string;\n }> = [];\n\n for (const name of subsystemNames) {\n const sub = subsystems[name];\n const startTime = Date.now();\n\n console.log(color(`⚙️ Verifying subsystem: ${name}...`, COLORS.blue));\n\n // Generate per-subsystem TLA+\n const { spec, cfg } = await generateSubsystemTLA(name, sub, config, analysis);\n\n // Count step-temporal ensures properties registered for this subsystem.\n // This is the upper bound on postconditions TLC will evaluate; a property\n // only fires when its handler is enabled at some reachable state, so the\n // count overstates true coverage when handlers are multi-step-reachable\n // and bounds.maxInFlight is too low to reach them.\n const ensuresCount = (spec.match(/^EnsuresAfter_\\w+ ==/gm) ?? []).length;\n\n // Write specs\n const specDir = path.join(process.cwd(), \"specs\", \"tla\", \"generated\", name);\n if (!fs.existsSync(specDir)) {\n fs.mkdirSync(specDir, { recursive: true });\n }\n\n const specPath = path.join(specDir, `UserApp_${name}.tla`);\n const cfgPath = path.join(specDir, `UserApp_${name}.cfg`);\n fs.writeFileSync(specPath, spec);\n fs.writeFileSync(cfgPath, cfg);\n\n // Copy base spec\n findAndCopyBaseSpec(specDir);\n\n // Run TLC\n const result = await docker.runTLC(specPath, {\n workers,\n timeout: timeoutSeconds > 0 ? timeoutSeconds * 1000 : undefined,\n maxDepth,\n });\n\n const elapsed = (Date.now() - startTime) / 1000;\n\n results.push({\n name,\n success: result.success,\n handlerCount: sub.handlers.length,\n ensuresCount,\n stateCount: result.stats?.distinctStates ?? 0,\n elapsed,\n stats: result.stats,\n error: result.error,\n });\n\n if (result.success) {\n console.log(color(` ✓ ${name} passed (${elapsed.toFixed(1)}s)`, COLORS.green));\n } else {\n console.log(color(` ✗ ${name} failed`, COLORS.red));\n if (result.violation) {\n console.log(color(` Invariant violated: ${result.violation.name}`, COLORS.red));\n } else if (result.error) {\n console.log(color(` Error: ${result.error}`, COLORS.red));\n }\n // Write full output for debugging\n fs.writeFileSync(path.join(specDir, \"tlc-output.log\"), result.output);\n }\n }\n\n console.log();\n\n // Compositional report\n displayCompositionalReport(results, interference.valid);\n}\n\n/** A finite default cap so an unconstrained witness cannot hang the run. */\nconst DEFAULT_WITNESS_TIMEOUT_MS = 180_000;\n\ntype WitnessStatus =\n | \"reachable\" // positive, pass\n | \"unreachable\" // positive, fail (the scenario lies)\n | \"excluded\" // forbidden, pass (the bad state is proven impossible)\n | \"violated\" // forbidden, fail (the bad state is reachable — a defect)\n | \"inconclusive\"\n | \"skipped\"\n | \"error\";\n\ninterface WitnessResult {\n id: string;\n status: WitnessStatus;\n /** Whether this result passes; drives the run's exit code. */\n ok: boolean;\n subsystem?: string;\n predicate?: string;\n note?: string;\n}\n\n/** Absolute paths matching `pattern` under `cwd`, sorted. */\nasync function globAbsolute(cwd: string, pattern: string): Promise<string[]> {\n const out: string[] = [];\n for await (const f of new Bun.Glob(pattern).scan({ cwd, absolute: true, onlyFiles: true })) {\n out.push(f);\n }\n return out.sort();\n}\n\n/**\n * `polly verify --witness`: the deeper BDD ↔ verify link. Each BDD scenario's\n * Then-predicate (reduced by tools/bdd) becomes a per-scenario TLC reachability\n * check over the subsystem spec the normal pass just generated.\n *\n * Semantics, inverted from a normal invariant: the witness `~(\\E ctx : <Then>)`\n * is *violated* exactly when the model reaches the asserted outcome — so a\n * violation is GOOD (the scenario is honest; the counterexample is its path).\n * A clean full exploration means the outcome is unreachable — the scenario\n * lies, and the run fails. Witnesses run WITHOUT the depth bound: a \"reachable\"\n * verdict is sound at any bound, but \"unreachable\" is only sound under full\n * exploration (StateConstraint keeps the space finite). If TLC times out first,\n * the verdict is inconclusive — reported, never silently passed or failed.\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: a flat per-scenario classify loop — the branches are the verdict surface.\nasync function runWitnessVerification(config: UnifiedVerificationConfig): Promise<void> {\n console.log(color(\"Reachability witnesses (--witness)\\n\", COLORS.blue));\n\n const cwd = process.cwd();\n const featureFiles = await globAbsolute(cwd, \"features/**/*.feature\");\n const stepFiles = [\n ...new Set([\n ...(await globAbsolute(cwd, \"features/**/*.steps.ts\")),\n ...(await globAbsolute(cwd, \"features/steps.ts\")),\n ]),\n ];\n if (featureFiles.length === 0 || stepFiles.length === 0) {\n console.log(\n color(\" No .feature files / step modules found — nothing to witness.\\n\", COLORS.gray)\n );\n return;\n }\n\n const { extractWitnesses } = await import(\"../../bdd/src/witness\");\n const {\n bddPredicateToTLA,\n buildWitnessCfg,\n buildWitnessModule,\n routeWitness,\n witnessPolarity,\n witnessVerdict,\n WITNESS_INVARIANT,\n } = await import(\"./codegen/witness\");\n\n const subsystems = config.subsystems as unknown as Record<string, { state: string[] }>;\n const witnesses = await extractWitnesses(featureFiles, stepFiles);\n\n const docker = await setupDocker();\n const timeoutSeconds = getTimeout(config);\n const timeout = timeoutSeconds > 0 ? timeoutSeconds * 1000 : DEFAULT_WITNESS_TIMEOUT_MS;\n const workers = getWorkers(config);\n\n const results: WitnessResult[] = [];\n let idx = 0;\n\n for (const w of witnesses) {\n const id = `${w.feature} › ${w.scenario}`;\n const polarity = witnessPolarity(w.tags);\n if (!w.predicate) {\n results.push({\n id,\n status: \"skipped\",\n ok: true,\n note: \"no state-observable Then to witness\",\n });\n continue;\n }\n const subsystem = routeWitness(w.fields, subsystems);\n if (!subsystem) {\n results.push({\n id,\n status: \"skipped\",\n ok: true,\n note: `fields [${w.fields.join(\", \")}] not owned by a single subsystem`,\n });\n continue;\n }\n\n const specDir = path.join(cwd, \"specs\", \"tla\", \"generated\", subsystem);\n const subsystemCfg = path.join(specDir, `UserApp_${subsystem}.cfg`);\n if (\n !fs.existsSync(path.join(specDir, `UserApp_${subsystem}.tla`)) ||\n !fs.existsSync(subsystemCfg)\n ) {\n results.push({\n id,\n status: \"error\",\n ok: false,\n subsystem,\n note: `subsystem spec missing: ${subsystem}`,\n });\n continue;\n }\n\n let tlaPredicate: string;\n try {\n tlaPredicate = bddPredicateToTLA(w.predicate);\n } catch (err) {\n results.push({\n id,\n status: \"error\",\n ok: false,\n subsystem,\n note: err instanceof Error ? err.message : String(err),\n });\n continue;\n }\n\n const moduleName = `Witness_${subsystem}_${idx++}`;\n const witnessTla = path.join(specDir, `${moduleName}.tla`);\n fs.writeFileSync(\n witnessTla,\n buildWitnessModule(moduleName, `UserApp_${subsystem}`, tlaPredicate)\n );\n fs.writeFileSync(\n path.join(specDir, `${moduleName}.cfg`),\n buildWitnessCfg(fs.readFileSync(subsystemCfg, \"utf8\"))\n );\n\n const polarityTag =\n polarity === \"forbidden\" ? color(\" [forbidden — must be unreachable]\", COLORS.gray) : \"\";\n console.log(color(`⚙️ ${id}`, COLORS.blue) + polarityTag);\n console.log(color(` ${subsystem} ⊨ ${w.predicate}`, COLORS.gray));\n\n let tlc: Awaited<ReturnType<Awaited<ReturnType<typeof setupDocker>>[\"runTLC\"]>>;\n try {\n tlc = await docker.runTLC(witnessTla, { workers, timeout });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n results.push({\n id,\n status: \"inconclusive\",\n ok: true,\n subsystem,\n predicate: w.predicate,\n note: msg,\n });\n console.log(\n color(\" ⚠ inconclusive — TLC did not finish (raise the config timeout)\", COLORS.yellow)\n );\n continue;\n }\n\n const reachable = !tlc.success && tlc.violation?.name === WITNESS_INVARIANT;\n // A failure that is NOT our witness invariant is a genuine TLC/spec error.\n if (!tlc.success && !reachable) {\n results.push({\n id,\n status: \"error\",\n ok: false,\n subsystem,\n predicate: w.predicate,\n note: tlc.error ?? tlc.violation?.name ?? \"TLC error\",\n });\n console.log(color(` ! error — ${tlc.error ?? \"see log\"}`, COLORS.yellow));\n fs.writeFileSync(path.join(specDir, `${moduleName}.tlc-output.log`), tlc.output);\n continue;\n }\n\n const verdict = witnessVerdict(polarity, reachable);\n const note = reachable\n ? undefined\n : `${tlc.stats?.distinctStates ?? 0} distinct states explored`;\n results.push({\n id,\n status: verdict.status,\n ok: verdict.ok,\n subsystem,\n predicate: w.predicate,\n note,\n });\n console.log(\n color(\n ` ${verdict.ok ? \"✓\" : \"✗\"} ${verdict.status} — ${verdict.message}`,\n verdict.ok ? COLORS.green : COLORS.red\n )\n );\n // Keep the trace for any failure (a positive lie or a reachable forbidden state).\n if (!verdict.ok)\n fs.writeFileSync(path.join(specDir, `${moduleName}.tlc-output.log`), tlc.output);\n }\n\n displayWitnessReport(results);\n}\n\nfunction displayWitnessReport(results: WitnessResult[]): void {\n const count = (s: WitnessStatus) => results.filter((r) => r.status === s).length;\n\n console.log();\n console.log(color(\"Witness results:\\n\", COLORS.blue));\n for (const r of results) {\n const mark = {\n reachable: color(\"✓\", COLORS.green),\n excluded: color(\"✓\", COLORS.green),\n unreachable: color(\"✗\", COLORS.red),\n violated: color(\"✗\", COLORS.red),\n inconclusive: color(\"⚠\", COLORS.yellow),\n error: color(\"!\", COLORS.yellow),\n skipped: color(\"·\", COLORS.gray),\n }[r.status];\n const note = r.note ? color(` (${r.note})`, COLORS.gray) : \"\";\n console.log(` ${mark} ${r.status.padEnd(12)} ${r.id}${note}`);\n }\n\n const tally = (\n [\n \"reachable\",\n \"excluded\",\n \"unreachable\",\n \"violated\",\n \"inconclusive\",\n \"error\",\n \"skipped\",\n ] as const\n )\n .map((s) => `${count(s)} ${s}`)\n .join(\", \");\n console.log();\n console.log(color(` ${tally}`, COLORS.gray));\n console.log();\n\n const failures = results.filter((r) => !r.ok);\n if (failures.length > 0) {\n console.log(color(\"Witness result: ✗ FAIL\", COLORS.red));\n console.log(\n color(\n \" An outcome a scenario claims is unreachable, or a forbidden state the model can reach.\",\n COLORS.gray\n )\n );\n console.log();\n process.exit(1);\n }\n console.log(color(\"Witness result: ✓ PASS\", COLORS.green));\n console.log(\n color(\n \" Every claimed outcome is reachable; every forbidden state is proven unreachable.\",\n COLORS.gray\n )\n );\n console.log();\n}\n\nfunction displayEnsuresSummary(results: Array<{ ensuresCount: number }>): void {\n const totalEnsures = results.reduce((sum, r) => sum + r.ensuresCount, 0);\n if (totalEnsures === 0) return;\n\n const subsystemWord = `subsystem${results.length === 1 ? \"\" : \"s\"}`;\n console.log();\n console.log(\n color(\n ` ${totalEnsures} ensures step-properties registered across ${results.length} ${subsystemWord}.`,\n COLORS.gray\n )\n );\n console.log(\n color(\" A property only fires at states where its handler is enabled — raise\", COLORS.gray)\n );\n console.log(\n color(\n \" bounds.maxInFlight on a subsystem to reach multi-step-reachable handlers.\",\n COLORS.gray\n )\n );\n}\n\nfunction displayCompositionalReport(\n results: Array<{\n name: string;\n success: boolean;\n handlerCount: number;\n ensuresCount: number;\n stateCount: number;\n elapsed: number;\n }>,\n nonInterferenceValid: boolean\n): void {\n console.log(color(\"Subsystem verification results:\\n\", COLORS.blue));\n\n for (const r of results) {\n const status = r.success ? color(\"✓\", COLORS.green) : color(\"✗\", COLORS.red);\n const name = r.name.padEnd(20);\n const handlers = `${r.handlerCount} handler${r.handlerCount === 1 ? \"\" : \"s\"}`;\n const ensures = `${r.ensuresCount} ensures`;\n const states = `${r.stateCount} states`;\n const time = `${r.elapsed.toFixed(1)}s`;\n console.log(\n ` ${status} ${name} ${handlers.padEnd(14)} ${ensures.padEnd(12)} ${states.padEnd(14)} ${time}`\n );\n }\n\n displayEnsuresSummary(results);\n\n console.log();\n\n const nonIntLabel = nonInterferenceValid\n ? color(\"✓ verified (no cross-subsystem state writes)\", COLORS.green)\n : color(\"⚠ violations detected\", COLORS.yellow);\n console.log(` Non-interference: ${nonIntLabel}`);\n console.log();\n\n const allPassed = results.every((r) => r.success);\n if (allPassed && nonInterferenceValid) {\n console.log(color(\"Compositional result: ✓ PASS\", COLORS.green));\n console.log(\n color(\" All subsystems verified independently. By non-interference,\", COLORS.gray)\n );\n console.log(color(\" the full system satisfies all per-subsystem invariants.\", COLORS.gray));\n } else if (allPassed && !nonInterferenceValid) {\n console.log(color(\"Compositional result: ⚠ PASS (with warnings)\", COLORS.yellow));\n console.log(\n color(\" All subsystems passed, but non-interference violations exist.\", COLORS.gray)\n );\n console.log(color(\" Compositional soundness is not guaranteed.\", COLORS.gray));\n } else {\n console.log(color(\"Compositional result: ✗ FAIL\", COLORS.red));\n const failed = results.filter((r) => !r.success);\n for (const f of failed) {\n console.log(color(` Failed: ${f.name}`, COLORS.red));\n }\n process.exit(1);\n }\n\n console.log();\n}\n\nasync function loadVerificationConfig(configPath: string): Promise<unknown> {\n const resolvedPath = path.resolve(configPath);\n const configModule = await import(`file://${resolvedPath}?t=${Date.now()}`);\n\n // Support both named export (verificationConfig) and default export\n // Named export was added in v0.7.0 for better IDE support\n return configModule.verificationConfig || configModule.default;\n}\n\nasync function runCodebaseAnalysis(): Promise<{ fields: unknown[]; messageTypes: unknown[] }> {\n console.log(color(\"📊 Analyzing codebase...\", COLORS.blue));\n const tsConfigPath = findTsConfig();\n if (!tsConfigPath) {\n throw new Error(\"Could not find tsconfig.json\");\n }\n\n const analysis = await analyzeCodebase({\n tsConfigPath,\n stateFilePath: findStateFile(),\n });\n\n console.log(color(\"✓ Analysis complete\", COLORS.green));\n console.log();\n\n return analysis;\n}\n\nasync function generateAndWriteTLASpecs(\n config: unknown,\n analysis: unknown\n): Promise<{ specPath: string; specDir: string }> {\n const { generateTLA } = await import(\"./codegen/tla\");\n\n console.log(color(\"📝 Generating TLA+ specification...\", COLORS.blue));\n const { spec, cfg } = await generateTLA(config, analysis);\n\n const specDir = path.join(process.cwd(), \"specs\", \"tla\", \"generated\");\n if (!fs.existsSync(specDir)) {\n fs.mkdirSync(specDir, { recursive: true });\n }\n\n const specPath = path.join(specDir, \"UserApp.tla\");\n const cfgPath = path.join(specDir, \"UserApp.cfg\");\n\n fs.writeFileSync(specPath, spec);\n fs.writeFileSync(cfgPath, cfg);\n\n return { specPath, specDir };\n}\n\nfunction findAndCopyBaseSpec(specDir: string): void {\n const possiblePaths = [\n path.join(process.cwd(), \"specs\", \"tla\", \"MessageRouter.tla\"),\n path.join(__dirname, \"..\", \"specs\", \"tla\", \"MessageRouter.tla\"),\n path.join(__dirname, \"..\", \"..\", \"specs\", \"tla\", \"MessageRouter.tla\"),\n path.join(\n process.cwd(),\n \"external\",\n \"polly\",\n \"packages\",\n \"verify\",\n \"specs\",\n \"tla\",\n \"MessageRouter.tla\"\n ),\n path.join(\n process.cwd(),\n \"node_modules\",\n \"@fairfox\",\n \"polly-verify\",\n \"specs\",\n \"tla\",\n \"MessageRouter.tla\"\n ),\n ];\n\n let baseSpecPath: string | null = null;\n for (const candidatePath of possiblePaths) {\n if (fs.existsSync(candidatePath)) {\n baseSpecPath = candidatePath;\n break;\n }\n }\n\n if (baseSpecPath) {\n const destSpecPath = path.join(specDir, \"MessageRouter.tla\");\n fs.copyFileSync(baseSpecPath, destSpecPath);\n console.log(color(\"✓ Copied MessageRouter.tla\", COLORS.green));\n } else {\n console.log(\n color(\"⚠️ Warning: MessageRouter.tla not found, verification may fail\", COLORS.yellow)\n );\n console.log(color(\" Searched in:\", COLORS.gray));\n for (const searchPath of possiblePaths) {\n console.log(color(` - ${searchPath}`, COLORS.gray));\n }\n }\n}\n\n/**\n * polly#114: locate the directory holding the committed MeshSeed.tla /\n * MeshSeed.cfg pair. Mirrors findAndCopyBaseSpec's search order.\n */\nfunction findMeshSeedSpecDir(): string | null {\n const candidates = [\n path.join(process.cwd(), \"specs\", \"tla\"),\n path.join(__dirname, \"..\", \"specs\", \"tla\"),\n path.join(__dirname, \"..\", \"..\", \"specs\", \"tla\"),\n path.join(process.cwd(), \"node_modules\", \"@fairfox\", \"polly-verify\", \"specs\", \"tla\"),\n ];\n for (const dir of candidates) {\n if (fs.existsSync(path.join(dir, \"MeshSeed.tla\"))) return dir;\n }\n return null;\n}\n\n/**\n * polly#114: model-check the concurrent first-time $meshState seed.\n *\n * When the project declares mesh documents the seed path is in scope —\n * and the polly#113 race (two devices materialising the same document\n * concurrently, forking it permanently) lived entirely outside the\n * verify pipeline. This runs MeshSeed.tla alongside the project spec.\n *\n * `POLLY_113_DISABLE_FIX=1` — the same toggle seedDocumentBytes honours\n * to restore the pre-fix non-deterministic seed — flips the spec's\n * SeedDeterministic constant to FALSE. Under it TLC reports a\n * SeedConvergence violation and verification fails, so a regression in\n * the seed path cannot land green.\n *\n * Returns undefined (guard skipped) when no mesh documents are declared.\n */\nasync function runMeshSeedGuard(\n docker: Awaited<ReturnType<typeof setupDocker>>,\n specDir: string,\n config: unknown\n): Promise<Parameters<typeof displayVerificationResults>[0] | undefined> {\n if (getMeshDocIds(config).length === 0) return undefined;\n\n const sourceDir = findMeshSeedSpecDir();\n if (!sourceDir) {\n console.log(color(\"⚠️ MeshSeed.tla not found — skipping seed-race guard\", COLORS.yellow));\n return undefined;\n }\n\n const fixDisabled = isSeedFixDisabled();\n fs.copyFileSync(path.join(sourceDir, \"MeshSeed.tla\"), path.join(specDir, \"MeshSeed.tla\"));\n // One source of truth for Peers / invariants / properties: the\n // committed cfg. Only the SeedDeterministic constant is rewritten.\n const baseCfg = fs.readFileSync(path.join(sourceDir, \"MeshSeed.cfg\"), \"utf8\");\n fs.writeFileSync(\n path.join(specDir, \"MeshSeed.cfg\"),\n meshSeedCfg(baseCfg, { disableFix: fixDisabled })\n );\n\n console.log(\n color(\n `⚙️ Running mesh seed-race guard (MeshSeed.tla, SeedDeterministic = ${\n fixDisabled ? \"FALSE\" : \"TRUE\"\n })...`,\n COLORS.blue\n )\n );\n return docker.runTLC(path.join(specDir, \"MeshSeed.tla\"), { workers: 1 });\n}\n\nasync function setupDocker(): Promise<{\n runTLC: (\n specPath: string,\n options: { workers: number; timeout: number }\n ) => Promise<{\n success: boolean;\n stats?: { statesGenerated: number; distinctStates: number };\n violation?: { name: string; trace: string[] };\n error?: string;\n output: string;\n }>;\n}> {\n const { DockerRunner } = await import(\"./runner/docker\");\n\n console.log(color(\"🐳 Checking Docker...\", COLORS.blue));\n const docker = new DockerRunner();\n\n try {\n if (!(await docker.isDockerAvailable())) {\n console.log();\n console.log(color(\"❌ Docker is not available\", COLORS.red));\n console.log();\n console.log(\"Please ensure Docker is installed and running:\");\n console.log(\n color(\n \" • Install Docker Desktop: https://www.docker.com/products/docker-desktop\",\n COLORS.gray\n )\n );\n console.log(color(\" • Make sure Docker Desktop is running\", COLORS.gray));\n console.log();\n throw new Error(\"Docker is not available\");\n }\n } catch (error) {\n console.log();\n if (error instanceof Error && error.message.includes(\"timed out\")) {\n console.log(color(\"❌ Docker is unresponsive\", COLORS.red));\n console.log();\n console.log(\"Docker appears to be installed but is not responding.\");\n console.log(\"Try restarting Docker:\");\n console.log(color(\" • Quit Docker Desktop completely\", COLORS.gray));\n console.log(color(\" • Restart Docker Desktop\", COLORS.gray));\n console.log(\n color(\" • Wait for Docker to fully start (check the menu bar icon)\", COLORS.gray)\n );\n console.log();\n } else if (error instanceof Error && error.message !== \"Docker is not available\") {\n console.log(color(`❌ Error checking Docker: ${error.message}`, COLORS.red));\n console.log();\n }\n throw error;\n }\n\n try {\n if (!(await docker.hasImage())) {\n console.log(color(\" Pulling TLA+ image (this may take a moment)...\", COLORS.gray));\n await docker.pullImage((line) => {\n console.log(color(` ${line}`, COLORS.gray));\n });\n }\n } catch (error) {\n console.log();\n if (error instanceof Error && error.message.includes(\"timed out\")) {\n console.log(color(\"❌ Docker is unresponsive while checking for TLA+ image\", COLORS.red));\n console.log();\n console.log(\"Docker is not responding. Try restarting Docker Desktop.\");\n console.log();\n }\n throw error;\n }\n\n console.log(color(\"✓ Docker ready\", COLORS.green));\n console.log();\n\n return docker;\n}\n\nfunction displayVerificationResults(\n result: {\n success: boolean;\n stats?: { statesGenerated: number; distinctStates: number };\n violation?: { name: string; trace: string[] };\n error?: string;\n output: string;\n },\n specDir: string\n): void {\n if (result.success) {\n console.log(color(\"✅ Verification passed!\\n\", COLORS.green));\n console.log(color(\"Statistics:\", COLORS.blue));\n console.log(color(` States explored: ${result.stats?.statesGenerated || 0}`, COLORS.gray));\n console.log(color(` Distinct states: ${result.stats?.distinctStates || 0}`, COLORS.gray));\n console.log();\n return;\n }\n\n console.log(color(\"❌ Verification failed!\\n\", COLORS.red));\n\n if (result.violation) {\n console.log(color(`Invariant violated: ${result.violation.name}\\n`, COLORS.red));\n console.log(color(\"Trace to violation:\", COLORS.yellow));\n for (const line of result.violation.trace.slice(0, 20)) {\n console.log(color(` ${line}`, COLORS.gray));\n }\n if (result.violation.trace.length > 20) {\n console.log(color(` ... (${result.violation.trace.length - 20} more lines)`, COLORS.gray));\n }\n } else if (result.error) {\n console.log(color(`Error: ${result.error}`, COLORS.red));\n }\n\n console.log();\n console.log(color(\"Full output saved to:\", COLORS.gray));\n console.log(color(` ${path.join(specDir, \"tlc-output.log\")}`, COLORS.gray));\n fs.writeFileSync(path.join(specDir, \"tlc-output.log\"), result.output);\n\n process.exit(1);\n}\n\nfunction showHelp() {\n console.log(`\n${color(\"polly verify\", COLORS.blue)} - Formal verification for web extensions\n\nTests sample a few executions; a model checker explores every reachable state.\nThis compiles your handlers and state into TLA+ and runs TLC to prove safety\ninvariants hold under all interleavings — the ordering and concurrency bugs\ntests rarely reach.\n\n${color(\"Commands:\", COLORS.blue)}\n\n ${color(\"polly verify\", COLORS.green)}\n Run verification (validates config, generates specs, runs TLC)\n\n ${color(\"polly verify --strict\", COLORS.green)}\n Fail closed (non-zero exit) on model-coverage gaps: a declared state\n field no handler writes, or an unverified $meshState/$peerState predicate.\n Also via ${color(\"POLLY_VERIFY_STRICT=1\", COLORS.yellow)}.\n\n ${color(\"polly verify --witness\", COLORS.green)}\n After the invariant pass, check each BDD scenario's Then-outcome for\n reachability: one TLC run per witnessable scenario over its subsystem spec.\n A scenario the exhaustive model proves unreachable is one that lies, and\n fails the run. Needs a ${color(\"subsystems\", COLORS.blue)} block and ${color(\"features/\", COLORS.blue)} (see polly bdd).\n\n ${color(\"polly verify --setup\", COLORS.green)}\n Analyze codebase and generate configuration file\n\n ${color(\"polly verify --validate\", COLORS.green)}\n Validate existing configuration without running verification\n\n ${color(\"polly verify --estimate\", COLORS.green)}\n Estimate state space without running TLC\n\n ${color(\"polly verify --help\", COLORS.green)}\n Show this help message\n\n${color(\"Getting Started:\", COLORS.blue)}\n\n 1. Run ${color(\"polly verify --setup\", COLORS.green)} to generate configuration\n 2. Review ${color(\"specs/verification.config.ts\", COLORS.blue)} and fill in marked fields\n 3. Run ${color(\"polly verify --validate\", COLORS.green)} to check your configuration\n 4. Run ${color(\"polly verify\", COLORS.green)} to start verification\n\n${color(\"Configuration Help:\", COLORS.blue)}\n\n The generated config file uses special markers:\n\n ${color(\"/* CONFIGURE */\", COLORS.yellow)} - Replace with your value\n ${color(\"/* REVIEW */\", COLORS.yellow)} - Check auto-generated value\n ${color(\"null\", COLORS.yellow)} - Must be replaced with concrete value\n\n${color(\"Learn More:\", COLORS.blue)}\n\n Documentation: https://github.com/fairfox/web-ext\n TLA+ Resources: https://learntla.com\n`);\n}\n\nfunction findTsConfig(): string | null {\n const locations = [\n path.join(process.cwd(), \"tsconfig.json\"),\n path.join(process.cwd(), \"packages\", \"web-ext\", \"tsconfig.json\"),\n ];\n\n for (const loc of locations) {\n if (fs.existsSync(loc)) {\n return loc;\n }\n }\n\n return null;\n}\n\nfunction findStateFile(): string | undefined {\n const locations = [\n path.join(process.cwd(), \"types\", \"state.ts\"),\n path.join(process.cwd(), \"src\", \"types\", \"state.ts\"),\n path.join(process.cwd(), \"packages\", \"web-ext\", \"src\", \"shared\", \"state\", \"app-state.ts\"),\n ];\n\n for (const loc of locations) {\n if (fs.existsSync(loc)) {\n return loc;\n }\n }\n\n return undefined;\n}\n\nmain().catch((error) => {\n if (error instanceof Error && error.stack) {\n // Stack trace already printed by underlying functions\n }\n process.exit(1);\n});\n",
15
19
  "// polly#117: detect requires/ensures predicates whose cross-peer\n// semantics the verifier does NOT check.\n//\n// A `$meshState` document is verified cross-peer only when its key is\n// declared in the `mesh: { ... }` block of the verification config:\n// the codegen then routes it through the `meshState` namespace, emits\n// a `PropagateMeshOp` action, and lets `forAllPeers(...)` claims over\n// it be checked. An *undeclared* `$meshState` signal — or any\n// `$peerState` signal, for which no cross-peer model exists yet — is\n// flattened to single-context local state, so a predicate over it\n// silently asserts only the executing context's view.\n//\n// This module computes the findings; `cli.ts` renders them. Keeping\n// the computation pure makes it directly testable without driving the\n// whole CLI.\n\nimport type { CodebaseAnalysis } from \"../core/model\";\n\n/** One predicate that references a signal with unverified cross-peer semantics. */\nexport type MeshOrPeerSignalFinding = {\n /** The handler (message type) the predicate belongs to. */\n handler: string;\n /** Whether the predicate is a requires() or an ensures(). */\n kind: \"precondition\" | \"postcondition\";\n /** The raw predicate expression. */\n expression: string;\n /** The offending signal's variable name. */\n signalName: string;\n /** Whether the signal is a `$meshState` or `$peerState` signal. */\n signalKind: \"mesh\" | \"peer\";\n /** Source location of the predicate. */\n location: { file: string; line: number };\n};\n\n/**\n * Find every requires/ensures predicate that references a\n * `$meshState`/`$peerState` signal the verifier does not check\n * cross-peer.\n *\n * A `$meshState` signal whose key is in `declaredMeshDocs` (i.e. the\n * consumer declared it under `mesh:` in the verification config) is\n * routed through the `meshState` namespace and IS verified — it is\n * excluded. Every other reference — an undeclared `$meshState` signal,\n * or any `$peerState` signal — is reported.\n *\n * @param analysis the analysed codebase\n * @param declaredMeshDocs the set of doc keys declared under `mesh:`\n * in the verification config\n */\nexport function computeMeshOrPeerSignalFindings(\n analysis: CodebaseAnalysis,\n declaredMeshDocs: ReadonlySet<string>\n): MeshOrPeerSignalFinding[] {\n const signals = analysis.meshOrPeerSignals ?? [];\n if (signals.length === 0) return [];\n\n // A declared $meshState doc is genuinely verified cross-peer; only\n // the rest are unverified and worth warning about.\n const unverified = signals.filter((s) => !(s.kind === \"mesh\" && declaredMeshDocs.has(s.key)));\n if (unverified.length === 0) return [];\n\n const findings: MeshOrPeerSignalFinding[] = [];\n\n for (const handler of analysis.handlers) {\n const scan = (\n conditions: Array<{ expression: string; location?: { line?: number } }>,\n kind: \"precondition\" | \"postcondition\"\n ): void => {\n for (const cond of conditions) {\n for (const sig of unverified) {\n // Match `<varName>.value` on an identifier boundary so a\n // signal named `thing` does not false-positive on\n // `myThing.value`.\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — `sig.variableName` is a TypeScript identifier extracted from typed AST analysis, never user input.\n const pattern = new RegExp(`\\\\b${sig.variableName}\\\\.value\\\\b`);\n if (pattern.test(cond.expression)) {\n findings.push({\n handler: handler.messageType,\n kind,\n expression: cond.expression,\n signalName: sig.variableName,\n signalKind: sig.kind,\n location: {\n file: handler.location?.file ?? sig.filePath,\n line: cond.location?.line ?? handler.location?.line ?? sig.line,\n },\n });\n }\n }\n }\n };\n scan(handler.preconditions, \"precondition\");\n scan(handler.postconditions, \"postcondition\");\n }\n\n return findings;\n}\n",
16
20
  "// Configuration Types for Adapter-Based Verification\n\nimport type { RoutingAdapter } from \"../adapters/base\";\nimport type { StateSchema } from \"../core/model\";\n\n// New Adapter-Based Configuration\n\n/**\n * polly#160: a directional capability whose grant requires a precondition.\n * Desugars to a TLA+ safety invariant `(enabledBy) => (requires)` checked at\n * every reachable state — catching \"a capability granted without its\n * precondition\" (an omission across multiple handlers that mutation testing\n * cannot see).\n *\n * `enabledBy` and `requires` are TS boolean expressions in the same dialect as\n * `requires()`/`ensures()` (e.g. `\"state.authReady\"`,\n * `\"state.user.value.loggedIn\"`). They MUST reference state via the `state.` /\n * signal `.value` form so the field flattens to `contextStates[ctx].*`; bare\n * identifiers are rejected at config-validation time.\n */\nexport interface CapabilityConfig {\n /** Capability name; used to derive the TLA+ invariant identifier. */\n name: string;\n /** Expression that is true when the capability is granted/active. */\n enabledBy: string;\n /** Expression that MUST hold whenever the capability is enabled. */\n requires: string;\n /** Optional human-readable message for the generated invariant comment. */\n message?: string;\n}\n\n/**\n * Adapter-based verification configuration (new format)\n */\nexport interface AdapterVerificationConfig {\n /** The routing adapter to use */\n adapter: RoutingAdapter;\n\n /** State bounds (domain-agnostic) */\n state: StateSchema;\n\n /** Concurrency bounds */\n bounds?: {\n maxInFlight?: number;\n [key: string]: unknown;\n };\n\n /** Verification behavior on build */\n onBuild?: \"warn\" | \"error\" | \"off\";\n\n /** Verification behavior on release */\n onRelease?: \"warn\" | \"error\" | \"off\";\n\n /** Optional: Custom invariants */\n invariants?: Array<{\n name: string;\n expression: string;\n description?: string;\n }>;\n\n /** polly#160: directional capability invariants (desugar to TLA+). */\n capabilities?: CapabilityConfig[];\n\n /** polly#160: symmetric write-coupling lint groups (static warning only). */\n coupledFields?: string[][];\n}\n\n// Legacy Configuration (Backward Compatibility)\n\n/**\n * Legacy verification configuration (backward compatible)\n */\nexport interface LegacyVerificationConfig {\n /** State configuration (old format) */\n state: Record<string, unknown>;\n\n /** Message configuration (old format) */\n messages: {\n maxInFlight: number | null;\n maxTabs: number | null;\n };\n\n /** Verification behavior on build */\n onBuild: \"warn\" | \"error\" | \"off\";\n\n /** Verification behavior on release */\n onRelease: \"warn\" | \"error\" | \"off\";\n\n /** polly#160: directional capability invariants (desugar to TLA+). */\n capabilities?: CapabilityConfig[];\n\n /** polly#160: symmetric write-coupling lint groups (static warning only). */\n coupledFields?: string[][];\n}\n\n// Unified Configuration Type\n\n/**\n * Union of new and legacy configuration formats\n */\nexport type UnifiedVerificationConfig = AdapterVerificationConfig | LegacyVerificationConfig;\n\n/**\n * Type guard to check if config is adapter-based (new format)\n */\nexport function isAdapterConfig(\n config: UnifiedVerificationConfig\n): config is AdapterVerificationConfig {\n return \"adapter\" in config;\n}\n\n/**\n * Type guard to check if config is legacy format\n */\nexport function isLegacyConfig(\n config: UnifiedVerificationConfig\n): config is LegacyVerificationConfig {\n return \"messages\" in config && !(\"adapter\" in config);\n}\n\n// Configuration Validation\n\nexport interface ConfigIssue {\n type:\n | \"incomplete\"\n | \"null_placeholder\"\n | \"unrealistic_bound\"\n | \"invalid_value\"\n // polly#160\n | \"capability_unknown_field\"\n | \"capability_empty_expression\"\n | \"coupled_unknown_field\";\n severity: \"error\" | \"warning\";\n field?: string;\n location?: { line: number; column: number };\n message: string;\n suggestion: string;\n}\n\nexport interface ValidationResult {\n valid: boolean;\n issues: ConfigIssue[];\n configType?: \"adapter\" | \"legacy\";\n}\n",
17
21
  "import type {\n AdapterVerificationConfig,\n LegacyVerificationConfig,\n UnifiedVerificationConfig,\n} from \"../config/types\";\nimport { isAdapterConfig, isLegacyConfig } from \"../config/types\";\nimport type { CodebaseAnalysis } from \"../core/model\";\n\nexport type FieldEstimate = {\n name: string;\n cardinality: number | \"unbounded\";\n kind: string;\n};\n\nexport type StateSpaceEstimate = {\n fields: FieldEstimate[];\n fieldProduct: number;\n handlerCount: number;\n maxInFlight: number;\n contextCount: number;\n totalStateSpace: number;\n interleavingFactor: number;\n estimatedStates: number;\n feasibility: \"trivial\" | \"feasible\" | \"slow\" | \"infeasible\";\n warnings: string[];\n suggestions: string[];\n};\n\nfunction typedFieldCardinality(name: string, obj: Record<string, unknown>): FieldEstimate | null {\n if (!(\"type\" in obj)) return null;\n\n switch (obj.type) {\n case \"boolean\":\n return { name, cardinality: 2, kind: \"boolean\" };\n case \"enum\":\n if (Array.isArray(obj.values)) {\n return { name, cardinality: obj.values.length, kind: \"enum\" };\n }\n return { name, cardinality: \"unbounded\", kind: \"enum\" };\n case \"number\":\n if (typeof obj.min === \"number\" && typeof obj.max === \"number\") {\n return { name, cardinality: obj.max - obj.min + 1, kind: \"number\" };\n }\n return { name, cardinality: \"unbounded\", kind: \"number\" };\n case \"array\":\n return { name, cardinality: \"unbounded\", kind: \"array\" };\n case \"string\":\n return { name, cardinality: \"unbounded\", kind: \"string\" };\n default:\n return null;\n }\n}\n\nfunction legacyFieldCardinality(name: string, obj: Record<string, unknown>): FieldEstimate | null {\n // { values: [...], abstract?: boolean }\n if (\"values\" in obj && Array.isArray(obj.values)) {\n const base = obj.values.length;\n const extra = obj.abstract === true ? 1 : 0;\n return {\n name,\n cardinality: base + extra,\n kind: obj.abstract ? \"enum (abstract)\" : \"enum (values)\",\n };\n }\n\n // { maxLength: N } (array)\n if (\"maxLength\" in obj && !(\"type\" in obj)) {\n return { name, cardinality: \"unbounded\", kind: \"array\" };\n }\n\n // { min, max } (number range)\n if (\n \"min\" in obj &&\n \"max\" in obj &&\n typeof obj.min === \"number\" &&\n typeof obj.max === \"number\" &&\n !(\"type\" in obj)\n ) {\n return { name, cardinality: obj.max - obj.min + 1, kind: \"number\" };\n }\n\n return null;\n}\n\n/**\n * Compute the cardinality of a single state field from config.\n */\nfunction fieldCardinality(name: string, value: unknown): FieldEstimate {\n // Array literal: [val1, val2, ...]\n if (Array.isArray(value)) {\n return { name, cardinality: value.length, kind: \"enum (literal)\" };\n }\n\n if (typeof value !== \"object\" || value === null) {\n return { name, cardinality: \"unbounded\", kind: \"unknown\" };\n }\n\n const obj = value as unknown as Record<string, unknown>;\n\n return (\n typedFieldCardinality(name, obj) ??\n legacyFieldCardinality(name, obj) ?? { name, cardinality: \"unbounded\", kind: \"unknown\" }\n );\n}\n\n/**\n * Compute C(n, k) * k! = n! / (n-k)! (permutations)\n */\nfunction permutations(n: number, k: number): number {\n if (k > n) return 1;\n let result = 1;\n for (let i = 0; i < k; i++) {\n result *= n - i;\n }\n return result;\n}\n\nfunction getHandlerCount(config: UnifiedVerificationConfig, analysis: CodebaseAnalysis): number {\n if (isLegacyConfig(config)) {\n const msgs = config.messages as unknown as LegacyVerificationConfig[\"messages\"] & {\n include?: string[];\n exclude?: string[];\n };\n if (msgs.include) {\n return msgs.include.length;\n }\n if (msgs.exclude) {\n return Math.max(0, analysis.handlers.length - msgs.exclude.length);\n }\n }\n return analysis.handlers.length;\n}\n\nfunction getMaxInFlight(config: UnifiedVerificationConfig): number {\n if (isLegacyConfig(config)) {\n return config.messages.maxInFlight ?? 1;\n }\n if (isAdapterConfig(config)) {\n return (config as unknown as AdapterVerificationConfig).bounds?.maxInFlight ?? 1;\n }\n return 1;\n}\n\nfunction getMaxTabs(config: UnifiedVerificationConfig): number {\n if (isLegacyConfig(config)) {\n return config.messages.maxTabs ?? 1;\n }\n return 1;\n}\n\nfunction getFeasibility(states: number): StateSpaceEstimate[\"feasibility\"] {\n if (states < 100_000) return \"trivial\";\n if (states <= 1_000_000) return \"feasible\";\n if (states <= 10_000_000) return \"slow\";\n return \"infeasible\";\n}\n\nfunction feasibilityLabel(f: StateSpaceEstimate[\"feasibility\"]): string {\n switch (f) {\n case \"trivial\":\n return \"trivial (should complete in seconds)\";\n case \"feasible\":\n return \"feasible (should complete in minutes)\";\n case \"slow\":\n return \"slow (may take 10–30 minutes)\";\n case \"infeasible\":\n return \"infeasible (likely won't terminate)\";\n }\n}\n\nexport function estimateStateSpace(\n config: UnifiedVerificationConfig,\n analysis: CodebaseAnalysis\n): StateSpaceEstimate {\n const state = config.state as unknown as Record<string, unknown>;\n const fields: FieldEstimate[] = [];\n const warnings: string[] = [];\n const suggestions: string[] = [];\n\n for (const [name, value] of Object.entries(state)) {\n fields.push(fieldCardinality(name, value));\n }\n\n // Compute field product (only bounded fields)\n const unboundedFields = fields.filter((f) => f.cardinality === \"unbounded\");\n const boundedFields = fields.filter((f) => f.cardinality !== \"unbounded\");\n\n const fieldProduct =\n boundedFields.length > 0\n ? boundedFields.reduce((acc, f) => acc * (f.cardinality as unknown as number), 1)\n : 1;\n\n if (unboundedFields.length > 0) {\n warnings.push(\n `${unboundedFields.length} field(s) have unbounded domains: ${unboundedFields.map((f) => f.name).join(\", \")}`\n );\n suggestions.push(\n `Fields ${unboundedFields.map((f) => f.name).join(\", \")} have unbounded domains — their actual impact depends on handler logic`\n );\n }\n\n const handlerCount = getHandlerCount(config, analysis);\n const maxInFlight = getMaxInFlight(config);\n const maxTabs = getMaxTabs(config);\n\n // Contexts: tabs + 1 background\n const contextCount = maxTabs + 1;\n\n const totalStateSpace = fieldProduct ** contextCount;\n\n // Interleaving: permutations(handlerCount, maxInFlight)\n const interleavingFactor = permutations(handlerCount, maxInFlight);\n\n const estimatedStates = totalStateSpace * interleavingFactor;\n\n const feasibility = getFeasibility(estimatedStates);\n\n // Generate suggestions\n if (handlerCount > 15) {\n suggestions.push(\"Consider splitting into subsystems\");\n }\n\n for (const f of boundedFields) {\n if ((f.cardinality as unknown as number) > 50) {\n suggestions.push(`Consider reducing bounds for field \"${f.name}\" (${f.cardinality} values)`);\n }\n }\n\n if (maxInFlight > 2) {\n const reducedInterleaving = permutations(handlerCount, 2);\n const reduction =\n reducedInterleaving > 0 ? Math.round(interleavingFactor / reducedInterleaving) : 1;\n suggestions.push(\n `Reducing maxInFlight from ${maxInFlight} to 2 would reduce interleaving by ~${reduction}x`\n );\n }\n\n return {\n fields,\n fieldProduct,\n handlerCount,\n maxInFlight,\n contextCount,\n totalStateSpace,\n interleavingFactor,\n estimatedStates,\n feasibility,\n warnings,\n suggestions,\n };\n}\n\nexport { feasibilityLabel };\n",
@@ -23,7 +27,7 @@
23
27
  "// Component relationship extraction from TypeScript code\n// Detects function calls, imports, and dependencies between components\n\nimport {\n type ArrowFunction,\n type CallExpression,\n type FunctionDeclaration,\n type FunctionExpression,\n type Identifier,\n Node,\n type SourceFile,\n} from \"ts-morph\";\n\n/**\n * Represents a relationship between components detected from code analysis\n */\nexport interface DetectedRelationship {\n /** Source component (handler, service, etc.) */\n from: string;\n /** Target component being called/used */\n to: string;\n /** Description of the relationship */\n description: string;\n /** Technology/method used (e.g., \"Function Call\", \"Import\", \"SQL\", \"HTTP\") */\n technology?: string;\n /** Confidence level of this detection */\n confidence: \"high\" | \"medium\" | \"low\";\n /** Evidence supporting this detection */\n evidence: string[];\n}\n\n/**\n * Extracts component relationships from handler code\n */\nexport class RelationshipExtractor {\n /**\n * Extract relationships from a function/handler body\n */\n extractFromHandler(\n handlerNode: Node,\n sourceFile: SourceFile,\n handlerName: string\n ): DetectedRelationship[] {\n const relationships: DetectedRelationship[] = [];\n const visited = new Set<string>(); // Prevent infinite recursion\n\n this.extractFromNode(handlerNode, sourceFile, handlerName, relationships, visited);\n\n return this.deduplicateRelationships(relationships);\n }\n\n /**\n * Recursively extract relationships from a node and follow function calls\n */\n private extractFromNode(\n node: Node,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n node.forEachDescendant((descendant) => {\n this.processDescendantNode(descendant, sourceFile, handlerName, relationships, visited);\n });\n }\n\n /**\n * Process a single descendant node for relationship extraction\n */\n private processDescendantNode(\n descendant: Node,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n if (Node.isCallExpression(descendant)) {\n this.processCallExpression(descendant, sourceFile, handlerName, relationships, visited);\n }\n\n if (Node.isAwaitExpression(descendant)) {\n const rel = this.extractFromDatabaseCall(descendant, handlerName);\n if (rel) {\n relationships.push(rel);\n }\n }\n\n if (Node.isCallExpression(descendant) && descendant.getExpression().getText() === \"fetch\") {\n const rel = this.extractFromFetchCall(descendant, handlerName);\n if (rel) {\n relationships.push(rel);\n }\n }\n }\n\n /**\n * Process a call expression for relationship extraction\n */\n private processCallExpression(\n callExpr: CallExpression,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n const expr = callExpr.getExpression();\n\n if (Node.isIdentifier(expr)) {\n this.processIdentifierCall(expr, sourceFile, handlerName, relationships, visited);\n return;\n }\n\n if (Node.isPropertyAccessExpression(expr)) {\n const rel = this.extractFromPropertyAccess(expr, handlerName);\n if (rel) {\n relationships.push(rel);\n return;\n }\n }\n\n const rel = this.extractFromFunctionCall(callExpr, handlerName, sourceFile);\n if (rel) {\n relationships.push(rel);\n }\n }\n\n /**\n * Process an identifier call (local or imported function)\n */\n private processIdentifierCall(\n identifier: Identifier,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n const functionName = identifier.getText();\n const resolved = this.resolveFunctionDeclaration(functionName, sourceFile);\n\n if (resolved && !visited.has(functionName)) {\n this.followFunctionCall(\n functionName,\n resolved.functionDecl,\n resolved.sourceFile,\n handlerName,\n relationships,\n visited\n );\n return;\n }\n\n if (!resolved) {\n this.tryAddServiceCallRelationship(functionName, handlerName, relationships);\n }\n }\n\n /**\n * Resolve function declaration from name\n */\n private resolveFunctionDeclaration(\n functionName: string,\n sourceFile: SourceFile\n ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n let functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression | undefined =\n sourceFile.getFunction(functionName);\n let targetSourceFile = sourceFile;\n\n if (!functionDecl) {\n const resolved = this.resolveImportedFunction(functionName, sourceFile);\n if (resolved) {\n functionDecl = resolved.functionDecl;\n targetSourceFile = resolved.sourceFile;\n }\n }\n\n if (!functionDecl) {\n return null;\n }\n\n return { functionDecl, sourceFile: targetSourceFile };\n }\n\n /**\n * Follow a function call recursively\n */\n private followFunctionCall(\n functionName: string,\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression,\n targetSourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n visited.add(functionName);\n\n const body = functionDecl.getBody();\n if (body) {\n this.extractFromNode(body, targetSourceFile, handlerName, relationships, visited);\n }\n }\n\n /**\n * Try to add a service call relationship based on function name\n */\n private tryAddServiceCallRelationship(\n functionName: string,\n handlerName: string,\n relationships: DetectedRelationship[]\n ): void {\n const componentFromName = this.inferComponentFromFunctionName(functionName);\n if (componentFromName) {\n relationships.push({\n from: this.toComponentId(handlerName),\n to: componentFromName,\n description: `Calls ${functionName}()`,\n technology: \"Function Call\",\n confidence: \"medium\",\n evidence: [`Function call: ${functionName}`],\n });\n }\n }\n\n /**\n * Extract relationship from a function call\n */\n private extractFromFunctionCall(\n callExpr: CallExpression,\n handlerName: string,\n sourceFile: SourceFile\n ): DetectedRelationship | null {\n const expr = callExpr.getExpression();\n const exprText = expr.getText();\n\n // Skip common utility functions and built-ins\n const skipList = [\n \"console.\",\n \"JSON.\",\n \"Math.\",\n \"Object.\",\n \"Array.\",\n \"String.\",\n \"Number.\",\n \"Date.\",\n \"Promise.\",\n \"setTimeout\",\n \"setInterval\",\n \"clearTimeout\",\n \"clearInterval\",\n ];\n\n if (skipList.some((skip) => exprText.startsWith(skip))) {\n return null;\n }\n\n // Extract function name\n let functionName = exprText;\n let targetComponent: string | null = null;\n\n // Handle property access (e.g., db.getConnection() -> db_client)\n if (Node.isPropertyAccessExpression(expr)) {\n const objectExpr = expr.getExpression();\n const objectName = objectExpr.getText();\n const methodName = expr.getName();\n\n // Map common patterns to component names\n targetComponent = this.inferComponentFromCall(objectName);\n\n if (!targetComponent) {\n return null;\n }\n\n functionName = methodName;\n } else {\n // Direct function call - try to resolve from imports\n targetComponent = this.resolveComponentFromImport(exprText, sourceFile);\n\n if (!targetComponent) {\n return null;\n }\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: targetComponent,\n description: `Calls ${functionName}()`,\n technology: \"Function Call\",\n confidence: \"high\",\n evidence: [`Function call: ${exprText}`],\n };\n }\n\n /**\n * Extract relationship from property access chain\n * Handles both simple (obj.method) and nested (obj.prop.method) patterns\n */\n private extractFromPropertyAccess(\n propAccess: Node,\n handlerName: string\n ): DetectedRelationship | null {\n if (!Node.isPropertyAccessExpression(propAccess)) {\n return null;\n }\n\n const fullChain = propAccess.getText();\n const methodName = propAccess.getName();\n\n // Extract the root object from potentially nested property access\n // e.g., repositories.users.create -> repositories\n let rootObject = propAccess.getExpression();\n while (Node.isPropertyAccessExpression(rootObject)) {\n rootObject = rootObject.getExpression();\n }\n\n const objectName = rootObject.getText();\n\n // Map object name to component name\n const targetComponent = this.inferComponentFromCall(objectName);\n\n if (!targetComponent) {\n return null;\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: targetComponent,\n description: `Calls ${methodName}()`,\n technology: \"Function Call\",\n confidence: \"high\",\n evidence: [`Property access: ${fullChain}`],\n };\n }\n\n /**\n * Extract relationship from database call\n */\n private extractFromDatabaseCall(\n awaitExpr: Node,\n handlerName: string\n ): DetectedRelationship | null {\n if (!Node.isAwaitExpression(awaitExpr)) {\n return null;\n }\n\n const innerExpr = awaitExpr.getExpression();\n if (!Node.isCallExpression(innerExpr)) {\n return null;\n }\n\n const callExpr = innerExpr.getExpression().getText();\n\n // Detect database patterns\n if (\n callExpr.includes(\"db.query\") ||\n callExpr.includes(\"db.execute\") ||\n callExpr.includes(\"db.select\") ||\n callExpr.includes(\"db.insert\") ||\n callExpr.includes(\"db.update\") ||\n callExpr.includes(\"db.delete\")\n ) {\n const operation = this.inferDatabaseOperation(callExpr);\n\n return {\n from: this.toComponentId(handlerName),\n to: \"database\",\n description: operation,\n technology: \"SQL\",\n confidence: \"high\",\n evidence: [`Database call: ${callExpr}`],\n };\n }\n\n return null;\n }\n\n /**\n * Extract relationship from fetch/HTTP call\n */\n private extractFromFetchCall(\n callExpr: CallExpression,\n handlerName: string\n ): DetectedRelationship | null {\n const args = callExpr.getArguments();\n if (args.length === 0 || !args[0]) {\n return null;\n }\n\n const urlArg = args[0].getText();\n\n // Try to extract API name from URL\n let apiName = \"external_api\";\n if (urlArg.includes(\"openai\")) {\n apiName = \"openai_api\";\n } else if (urlArg.includes(\"anthropic\")) {\n apiName = \"anthropic_api\";\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: apiName,\n description: \"Calls external API\",\n technology: \"HTTP/REST\",\n confidence: \"high\",\n evidence: [`fetch() call to: ${urlArg}`],\n };\n }\n\n /**\n * Infer component name from object.method pattern\n */\n private inferComponentFromCall(objectName: string): string | null {\n const mappings: Record<string, string> = {\n db: \"db_client\",\n database: \"database\",\n repos: \"repositories\",\n repository: \"repositories\",\n repositories: \"repositories\",\n cache: \"cache\",\n storage: \"storage\",\n ai: \"ai_service\",\n auth: \"auth_service\",\n authservice: \"auth_service\",\n user: \"user_service\",\n userservice: \"user_service\",\n logger: \"logger\",\n queue: \"queue_service\",\n };\n\n const normalized = objectName.toLowerCase();\n return mappings[normalized] || null;\n }\n\n /**\n * Infer component name from function name patterns\n * Detects patterns like getDatabase(), createRepositories(), etc.\n */\n private inferComponentFromFunctionName(functionName: string): string | null {\n const normalized = functionName.toLowerCase();\n\n // Pattern 1: getXxx() or createXxx()\n if (normalized.startsWith(\"get\") || normalized.startsWith(\"create\")) {\n const prefixLength = normalized.startsWith(\"get\") ? 3 : 6;\n const suffix = functionName.substring(prefixLength);\n return this.matchComponentPattern(suffix);\n }\n\n // Pattern 2: initXxx() or setupXxx()\n if (normalized.startsWith(\"init\") || normalized.startsWith(\"setup\")) {\n const prefixLength = normalized.startsWith(\"init\") ? 4 : 5;\n const suffix = functionName.substring(prefixLength);\n return this.matchInitPattern(suffix);\n }\n\n return null;\n }\n\n /**\n * Match component patterns for get/create functions\n */\n private matchComponentPattern(suffix: string): string | null {\n const suffixLower = suffix.toLowerCase();\n\n const componentPatterns = [\n {\n patterns: [\"database\", \"db\", \"dbconnection\", \"connection\"],\n component: \"db_client\",\n },\n {\n patterns: [\"repositories\", \"repos\", \"repository\"],\n component: \"repositories\",\n },\n {\n patterns: [\"cache\"],\n component: \"cache\",\n },\n {\n patterns: [\"storage\"],\n component: \"storage\",\n },\n {\n patterns: [\"ai\", \"llm\"],\n component: \"ai_service\",\n },\n {\n patterns: [\"logger\"],\n component: \"logger\",\n },\n ];\n\n for (const { patterns, component } of componentPatterns) {\n if (patterns.some((pattern) => suffixLower.includes(pattern) || suffixLower === pattern)) {\n return component;\n }\n }\n\n // Service patterns (special case with extraction)\n if (suffixLower.includes(\"service\")) {\n const serviceMatch = suffix.match(/^(.+?)Service/i);\n if (serviceMatch) {\n return this.toComponentId(`${serviceMatch[1]}_service`);\n }\n return \"service\";\n }\n\n return null;\n }\n\n /**\n * Match patterns for init/setup functions\n */\n private matchInitPattern(suffix: string): string | null {\n const suffixLower = suffix.toLowerCase();\n\n if (suffixLower.includes(\"database\") || suffixLower === \"db\") {\n return \"db_client\";\n }\n if (suffixLower.includes(\"cache\")) {\n return \"cache\";\n }\n\n return null;\n }\n\n /**\n * Resolve component from import statement\n */\n private resolveComponentFromImport(functionName: string, sourceFile: SourceFile): string | null {\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const namedImports = importDecl.getNamedImports();\n\n for (const namedImport of namedImports) {\n if (namedImport.getName() === functionName) {\n const modulePath = importDecl.getModuleSpecifierValue();\n const component = this.inferComponentFromModulePath(modulePath);\n if (component) return component;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Infer component from module path\n */\n private inferComponentFromModulePath(modulePath: string): string | null {\n if (modulePath.includes(\"/db/\") || modulePath.includes(\"/database/\")) {\n return \"db_client\";\n }\n if (modulePath.includes(\"/repos\") || modulePath.includes(\"/repositories\")) {\n return \"repositories\";\n }\n if (modulePath.includes(\"/service\") || modulePath.includes(\"/services\")) {\n const match = modulePath.match(/\\/([^/]+)\\.ts$/);\n if (match?.[1]) {\n return this.toComponentId(match[1]);\n }\n }\n return null;\n }\n\n /**\n * Resolve imported function to its declaration in another file\n * This enables cross-file relationship detection for architectures where\n * handlers are separated from routing logic\n */\n private resolveImportedFunction(\n functionName: string,\n sourceFile: SourceFile\n ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n try {\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const namedImports = importDecl.getNamedImports();\n\n for (const namedImport of namedImports) {\n if (namedImport.getName() === functionName) {\n const moduleSpecifier = importDecl.getModuleSpecifierSourceFile();\n if (!moduleSpecifier) continue;\n\n const result = this.findFunctionInModule(functionName, moduleSpecifier);\n if (result) return result;\n }\n }\n }\n } catch (_error) {\n // Silently fail on resolution errors (e.g., missing files, parse errors)\n // This ensures the extractor is resilient to incomplete projects\n return null;\n }\n\n return null;\n }\n\n /**\n * Find function declaration or arrow function in a module\n */\n private findFunctionInModule(\n functionName: string,\n moduleSpecifier: SourceFile\n ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n // Find the function in the imported file\n const functionDecl = moduleSpecifier.getFunction(functionName);\n if (functionDecl) {\n return {\n functionDecl,\n sourceFile: moduleSpecifier,\n };\n }\n\n // Also check for exported arrow functions or const declarations\n const variableDecl = moduleSpecifier.getVariableDeclaration(functionName);\n if (variableDecl) {\n const initializer = variableDecl.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return {\n functionDecl: initializer,\n sourceFile: moduleSpecifier,\n };\n }\n }\n\n return null;\n }\n\n /**\n * Infer database operation type\n */\n private inferDatabaseOperation(callExpr: string): string {\n if (callExpr.includes(\"query\") || callExpr.includes(\"select\")) {\n return \"Reads from database\";\n }\n if (\n callExpr.includes(\"execute\") ||\n callExpr.includes(\"insert\") ||\n callExpr.includes(\"update\") ||\n callExpr.includes(\"delete\")\n ) {\n return \"Writes to database\";\n }\n return \"Accesses database\";\n }\n\n /**\n * Convert name to component ID format\n */\n private toComponentId(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"_\")\n .replace(/^_|_$/g, \"\");\n }\n\n /**\n * Remove duplicate relationships\n */\n private deduplicateRelationships(relationships: DetectedRelationship[]): DetectedRelationship[] {\n const seen = new Set<string>();\n const unique: DetectedRelationship[] = [];\n\n for (const rel of relationships) {\n const key = `${rel.from}->${rel.to}`;\n if (!seen.has(key)) {\n seen.add(key);\n unique.push(rel);\n }\n }\n\n return unique;\n }\n}\n",
24
28
  "/**\n * polly#114: the concurrent first-time $meshState seed guard.\n *\n * MeshSeed.tla model-checks the polly#113 race — two devices materialising\n * the same mesh document concurrently and forking it permanently. The\n * spec's `SeedDeterministic` constant is TRUE for the shipped fix; this\n * module rewrites it to FALSE when the fix is disabled, under which TLC\n * reports a `SeedConvergence` violation.\n *\n * The toggle is shared by the verify CLI (which honours the\n * `POLLY_113_DISABLE_FIX` environment variable, the same lever\n * seedDocumentBytes uses) and the e2e falsification script, so there is\n * one source of truth for how the guard is parameterised.\n */\n\n/** The invariant whose violation is the polly#113 race. */\nexport const SEED_CONVERGENCE_INVARIANT = \"SeedConvergence\";\n\n/**\n * Produce the MeshSeed.cfg contents for a run. With `disableFix` the\n * `SeedDeterministic` constant flips to FALSE — the pre-fix seed — and\n * TLC is expected to report a {@link SEED_CONVERGENCE_INVARIANT}\n * violation. Otherwise the committed cfg is used unchanged.\n */\nexport function meshSeedCfg(baseCfg: string, opts: { disableFix: boolean }): string {\n if (!opts.disableFix) return baseCfg;\n // Match the constant *declaration* line specifically: optional\n // indentation, then `SeedDeterministic = TRUE`, then end of line. A\n // plain string replace would hit the first occurrence — which is the\n // explanatory comment, not the declaration — and leave the real\n // constant untouched, silently defeating the falsification.\n const declaration = /^([ \\t]*)SeedDeterministic = TRUE[ \\t]*$/m;\n if (!declaration.test(baseCfg)) {\n throw new Error(\n \"MeshSeed.cfg no longer declares `SeedDeterministic = TRUE` on its own line — the polly#114 seed-race guard cannot be falsified. Update tools/verify/src/runner/mesh-seed.ts.\"\n );\n }\n return baseCfg.replace(declaration, \"$1SeedDeterministic = FALSE\");\n}\n\n/** True when the polly#113 seed fix is disabled for this process. */\nexport function isSeedFixDisabled(env: NodeJS.ProcessEnv = process.env): boolean {\n return env[\"POLLY_113_DISABLE_FIX\"] === \"1\";\n}\n"
25
29
  ],
26
- "mappings": "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",
27
- "debugId": "EBD97C743E15B6D964756E2164756E21",
30
+ "mappings": "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",
31
+ "debugId": "F9E0214A7A9A110B64756E2164756E21",
28
32
  "names": []
29
33
  }