@fairfox/polly 0.91.0 → 0.92.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/polly.js +3 -3
- package/dist/cli/polly.js.map +3 -3
- package/dist/gallery/gallery.css +2 -2
- package/dist/gallery/gallery.js +248 -241
- package/dist/src/background/index.js +27 -11
- package/dist/src/background/index.js.map +2 -2
- package/dist/src/background/message-router.js +27 -11
- package/dist/src/background/message-router.js.map +2 -2
- package/dist/src/client/index.js +56 -56
- package/dist/src/client/index.js.map +4 -4
- package/dist/src/elysia/index.js +16 -7
- package/dist/src/elysia/index.js.map +4 -4
- package/dist/src/elysia/plugin.d.ts +4 -4
- package/dist/src/index.js +27 -11
- package/dist/src/index.js.map +2 -2
- package/dist/src/mesh.js +2 -2
- package/dist/src/mesh.js.map +3 -3
- package/dist/src/peer.js +6 -6
- package/dist/src/peer.js.map +3 -3
- package/dist/src/polly-ui/index.css +2 -2
- package/dist/src/polly-ui/markdown.js +1844 -1010
- package/dist/src/polly-ui/markdown.js.map +5 -5
- package/dist/src/polly-ui/styles.css +2 -2
- package/dist/src/shared/adapters/index.js +27 -11
- package/dist/src/shared/adapters/index.js.map +2 -2
- package/dist/src/shared/lib/context-helpers.js +27 -11
- package/dist/src/shared/lib/context-helpers.js.map +2 -2
- package/dist/src/shared/lib/message-bus.js +27 -11
- package/dist/src/shared/lib/message-bus.js.map +2 -2
- package/dist/src/shared/lib/resource.js +17 -1
- package/dist/src/shared/lib/resource.js.map +2 -2
- package/dist/src/shared/lib/state.js +17 -1
- package/dist/src/shared/lib/state.js.map +2 -2
- package/dist/src/shared/state/app-state.js +17 -1
- package/dist/src/shared/state/app-state.js.map +2 -2
- package/dist/tools/bdd/src/cli.js +20 -2
- package/dist/tools/bdd/src/cli.js.map +4 -4
- package/dist/tools/bdd/src/index.js +20 -2
- package/dist/tools/bdd/src/index.js.map +3 -3
- package/dist/tools/init/templates/pwa/package.json.template +2 -3
- package/dist/tools/mutate/src/args.d.ts +25 -3
- package/dist/tools/mutate/src/cli.js +3238 -312
- package/dist/tools/mutate/src/cli.js.map +32 -12
- package/dist/tools/mutate/src/config.d.ts +13 -2
- package/dist/tools/mutate/src/define.d.ts +76 -0
- package/dist/tools/mutate/src/engine/ast.d.ts +13 -0
- package/dist/tools/mutate/src/engine/baseline.d.ts +20 -0
- package/dist/tools/mutate/src/engine/cache.d.ts +32 -0
- package/dist/tools/mutate/src/engine/coverage.d.ts +60 -0
- package/dist/tools/mutate/src/engine/generate.d.ts +23 -0
- package/dist/tools/mutate/src/engine/graph.d.ts +11 -0
- package/dist/tools/mutate/src/engine/index.d.ts +16 -0
- package/dist/tools/mutate/src/engine/junit.d.ts +38 -0
- package/dist/tools/mutate/src/engine/operators.d.ts +14 -0
- package/dist/tools/mutate/src/engine/preload.d.ts +10 -0
- package/dist/tools/mutate/src/engine/preload.js +180 -0
- package/dist/tools/mutate/src/engine/preload.js.map +10 -0
- package/dist/tools/mutate/src/engine/probes.d.ts +12 -0
- package/dist/tools/mutate/src/engine/report-writer.d.ts +44 -0
- package/dist/tools/mutate/src/engine/runner.d.ts +31 -0
- package/dist/tools/mutate/src/engine/stray-writes.d.ts +25 -0
- package/dist/tools/mutate/src/engine/typecheck.d.ts +37 -0
- package/dist/tools/mutate/src/engine/types.d.ts +191 -0
- package/dist/tools/mutate/src/engine/verify-callsites.d.ts +9 -0
- package/dist/tools/mutate/src/engine/workdir.d.ts +16 -0
- package/dist/tools/mutate/src/engine-config.d.ts +7 -0
- package/dist/tools/mutate/src/index.d.ts +7 -3
- package/dist/tools/mutate/src/index.js +2821 -193
- package/dist/tools/mutate/src/index.js.map +26 -7
- package/dist/tools/mutate/src/ingest.d.ts +30 -1
- package/dist/tools/mutate/src/init.d.ts +2 -1
- package/dist/tools/mutate/src/migrate.d.ts +32 -0
- package/dist/tools/mutate/src/report.d.ts +3 -0
- package/dist/tools/mutate/src/run.d.ts +17 -8
- package/dist/tools/mutate/src/verify-matrix.d.ts +12 -15
- package/dist/tools/quality/src/cli.js +9 -9
- package/dist/tools/quality/src/cli.js.map +4 -4
- package/dist/tools/quality/src/index.js +9 -9
- package/dist/tools/quality/src/index.js.map +4 -4
- package/dist/tools/quality/src/no-tautology-ensures.d.ts +2 -2
- package/dist/tools/quality/src/plugins/import-checks.d.ts +1 -1
- package/dist/tools/test/src/adapters/index.js +3 -2
- package/dist/tools/test/src/adapters/index.js.map +3 -3
- package/dist/tools/test/src/coverage-policy/cli.d.ts +2 -2
- package/dist/tools/test/src/coverage-policy/cli.js +217 -17
- package/dist/tools/test/src/coverage-policy/cli.js.map +7 -5
- package/dist/tools/test/src/coverage-policy/index.d.ts +1 -1
- package/dist/tools/test/src/coverage-policy/index.js +213 -12
- package/dist/tools/test/src/coverage-policy/index.js.map +7 -5
- package/dist/tools/test/src/coverage-policy/mutate-targets.d.ts +29 -12
- package/dist/tools/test/src/e2e-mesh/index.js +6 -6
- package/dist/tools/test/src/e2e-mesh/index.js.map +4 -4
- package/dist/tools/test/src/e2e-relay/index.js +230 -226
- package/dist/tools/test/src/e2e-relay/index.js.map +7 -7
- package/dist/tools/test/src/index.js +3 -2
- package/dist/tools/test/src/index.js.map +3 -3
- package/dist/tools/test/src/visual/index.js +684 -511
- package/dist/tools/test/src/visual/index.js.map +11 -11
- package/dist/tools/verify/src/cli.js +17 -2
- package/dist/tools/verify/src/cli.js.map +4 -4
- package/dist/tools/verify/src/config.d.ts +1 -1
- package/dist/tools/verify/src/config.js +68 -3
- package/dist/tools/verify/src/config.js.map +4 -4
- package/dist/tools/verify/src/primitives/index.d.ts +34 -0
- package/dist/tools/visualize/src/cli.js +16 -1
- package/dist/tools/visualize/src/cli.js.map +3 -3
- package/package.json +29 -39
- package/dist/tools/verify/src/stryker/index.d.ts +0 -32
- package/dist/tools/verify/src/stryker/index.js +0 -86
- package/dist/tools/verify/src/stryker/index.js.map +0 -10
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"sources": ["../tools/verify/src/analysis/expression-validator.ts", "../tools/verify/src/codegen/model-constants.ts", "../tools/verify/src/runner/memory.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/container-name.ts", "../tools/verify/src/runner/docker.ts", "../tools/verify/src/cli.ts", "../tools/verify/src/analysis/mesh-signal-warnings.ts", "../tools/verify/src/analysis/state-space-estimator.ts", "../tools/verify/src/config/types.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
|
-
"// The constant sets a generated `.cfg` declares, in one place.\n//\n// polly#183 is what happens when two callers each keep their own copy. The\n// `.cfg` writer emitted a fixed three-element `Contexts` set; the state-space\n// estimator modelled `maxTabs + 1` contexts and no send branching at all. The\n// prediction missed the run it was predicting by about 10^5, and a subsystem\n// that never terminated was reported as ~5,800 states.\n//\n// Both the writer (`TLAGenerator.addBasicConstants` /\n// `addProjectSpecificConstants`) and the estimator read this module, so the two\n// cannot drift again without a test noticing.\n\n/**\n * The `Contexts` set a config that declares none gets.\n *\n * Three names chosen when polly modelled a browser extension with a background\n * worker, a content script and a popup. It stays the default so a config\n * written before polly#185 generates the same spec it did.\n */\nexport const DEFAULT_CONTEXTS = [\"background\", \"content\", \"popup\"] as const;\n\n/**\n * The subset of a verification config that decides the generated `Contexts`\n * set.\n *\n * Structural rather than `VerificationConfig` so the estimator can pass a\n * legacy or adapter config without narrowing it first.\n */\nexport type ContextSetInput = {\n contexts?: readonly string[] | null | undefined;\n};\n\n/** A TLA+ model value: a letter or underscore, then letters, digits, underscores. */\nexport const CONTEXT_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\n/**\n * Make a declared context name safe to emit as a TLA+ model value.\n *\n * The rule `TLAGenerator.sanitizeIdentifier` applies to mesh doc ids\n * (polly#117): every character that is not a letter, digit or underscore\n * becomes an underscore. A name whose sanitised form is still not an\n * identifier (`\"1st\"`, `\"\"`) is rejected at config validation rather than\n * mangled here.\n */\nexport function sanitizeContextName(name: string): string {\n return name.replace(/[^A-Za-z0-9_]/g, \"_\");\n}\n\n/** Whether the config declares its own context set (polly#185). */\nexport function hasDeclaredContexts(config?: ContextSetInput | null):
|
|
6
|
+
"// The constant sets a generated `.cfg` declares, in one place.\n//\n// polly#183 is what happens when two callers each keep their own copy. The\n// `.cfg` writer emitted a fixed three-element `Contexts` set; the state-space\n// estimator modelled `maxTabs + 1` contexts and no send branching at all. The\n// prediction missed the run it was predicting by about 10^5, and a subsystem\n// that never terminated was reported as ~5,800 states.\n//\n// Both the writer (`TLAGenerator.addBasicConstants` /\n// `addProjectSpecificConstants`) and the estimator read this module, so the two\n// cannot drift again without a test noticing.\n\n/**\n * The `Contexts` set a config that declares none gets.\n *\n * Three names chosen when polly modelled a browser extension with a background\n * worker, a content script and a popup. It stays the default so a config\n * written before polly#185 generates the same spec it did.\n */\nexport const DEFAULT_CONTEXTS = [\"background\", \"content\", \"popup\"] as const;\n\n/**\n * The subset of a verification config that decides the generated `Contexts`\n * set.\n *\n * Structural rather than `VerificationConfig` so the estimator can pass a\n * legacy or adapter config without narrowing it first.\n */\nexport type ContextSetInput = {\n contexts?: readonly string[] | null | undefined;\n};\n\n/** A TLA+ model value: a letter or underscore, then letters, digits, underscores. */\nexport const CONTEXT_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\n/**\n * Make a declared context name safe to emit as a TLA+ model value.\n *\n * The rule `TLAGenerator.sanitizeIdentifier` applies to mesh doc ids\n * (polly#117): every character that is not a letter, digit or underscore\n * becomes an underscore. A name whose sanitised form is still not an\n * identifier (`\"1st\"`, `\"\"`) is rejected at config validation rather than\n * mangled here.\n */\nexport function sanitizeContextName(name: string): string {\n return name.replace(/[^A-Za-z0-9_]/g, \"_\");\n}\n\n/** Whether the config declares its own context set (polly#185). */\nexport function hasDeclaredContexts(\n config?: ContextSetInput | null\n): config is { contexts: readonly string[] } {\n const declared = config?.contexts;\n return Array.isArray(declared) && declared.length > 0;\n}\n\n/**\n * The literal values the generated `.cfg` assigns to `Contexts`.\n *\n * `config.contexts` when declared, sanitised for emission; `DEFAULT_CONTEXTS`\n * otherwise. Nothing in the generated `.tla` or in `MessageRouter.tla` names a\n * member of the set — every use is a quantifier or a function domain — so this\n * one line decides `|Contexts|` for the whole model (polly#185).\n */\nexport function resolveContexts(config?: ContextSetInput | null): string[] {\n if (!hasDeclaredContexts(config)) return [...DEFAULT_CONTEXTS];\n return config.contexts.map(sanitizeContextName);\n}\n\n/**\n * `|SUBSET Contexts \\ {{}}|` — the non-empty target sets a send may address.\n *\n * `UserNext` quantifies over every one of them, so this multiplies the\n * successor count of a single `SendMessage` step.\n */\nexport function targetSetCount(contexts: readonly string[]): number {\n return 2 ** contexts.length - 1;\n}\n\n/**\n * The subset of `messages` that decides the generated `Tabs` set.\n *\n * Structural rather than `MessageConfig` so the estimator can pass a legacy or\n * adapter config's message block without narrowing it first.\n */\nexport type TabSetInput = {\n maxTabs?: number | null | undefined;\n maxClients?: number | null | undefined;\n maxRenderers?: number | null | undefined;\n maxWorkers?: number | null | undefined;\n maxContexts?: number | null | undefined;\n tabSymmetry?: boolean | undefined;\n};\n\n/**\n * Whether a project-specific bound is declared. The `.cfg` writer narrows the\n * default tab set from `{0, 1}` to `{0}` when one is, on the reading that a\n * project naming workers/renderers/clients is not a multi-tab extension.\n */\nfunction hasProjectConstant(messages: TabSetInput): boolean {\n return (\n messages.maxWorkers !== undefined ||\n messages.maxRenderers !== undefined ||\n messages.maxContexts !== undefined ||\n messages.maxClients !== undefined\n );\n}\n\n/**\n * The literal values the generated `.cfg` assigns to `Tabs`, in emission order.\n *\n * Model values (`Tab0`, `Tab1`, …) under `messages.tabSymmetry`; integers\n * otherwise.\n */\nexport function generatedTabValues(messages: TabSetInput): string[] {\n if (messages.tabSymmetry) {\n const maxTabs = messages.maxTabs ?? 1;\n return Array.from({ length: maxTabs + 1 }, (_, i) => `Tab${i}`);\n }\n\n if (messages.maxTabs !== undefined && messages.maxTabs !== null) {\n return Array.from({ length: messages.maxTabs + 1 }, (_, i) => String(i));\n }\n\n return hasProjectConstant(messages) ? [\"0\"] : [\"0\", \"1\"];\n}\n\n/** `|Tabs|` for a given message config. */\nexport function generatedTabCount(messages: TabSetInput): number {\n return generatedTabValues(messages).length;\n}\n\n/**\n * Distinct successor states of one `SendMessage` step in a generated spec.\n *\n * `UserNext` emits:\n *\n * ```tla\n * \\/ \\E src \\in Contexts : \\E targetSet \\in (SUBSET Contexts \\ {{}}) :\n * \\E tab \\in Tabs : \\E msgType \\in UserMessageTypes :\n * SendMessage(src, targetSet, tab, msgType) /\\ ...\n * ```\n *\n * so a send branches `|Contexts| * (2^|Contexts| - 1) * |Tabs| * |handlers|`\n * ways. `MaxMessages` (`messages.maxInFlight`) is the exponent on it — which is\n * why the context set is the cheapest term to cut (polly#185).\n */\nexport function sendBranchingFactor(\n handlerCount: number,\n tabCount: number,\n contexts: readonly string[]\n): number {\n return contexts.length * targetSetCount(contexts) * tabCount * handlerCount;\n}\n",
|
|
7
7
|
"// Memory ceilings for a TLC run (polly#181).\n//\n// Without a cap, `docker run` gets no `--memory` and the JVM gets no `-Xmx`, so\n// TLC sizes its heap from `MaxRAMPercentage` (25%) of whatever Docker Desktop\n// was allocated. That is a machine setting: the same spec on the same polly\n// version chose 1984MB on one allocation and 6000MB on another, and a long run\n// died mid-check with no TLC message at all — the host's low-memory handling\n// killed it. A model too large for the ceiling should end with a TLC message\n// naming the run, not a silent kill the user has to infer from `docker info`.\n\n/**\n * Container memory ceiling when `verification.memory` is unset.\n *\n * Fixed rather than a fraction of the host, so two machines with different\n * Docker Desktop allocations run the same model with the same heap and get the\n * same answer.\n */\nexport const DEFAULT_TLC_MEMORY = \"4g\";\n\n/**\n * Floor for `verification.memory`. Below this the JVM spends its whole heap on\n * TLC's own fingerprint set and the run cannot make progress, so it is rejected\n * at config validation rather than started.\n */\nexport const MIN_TLC_MEMORY = \"512m\";\n\n/**\n * Fraction of the container limit given to the JVM heap.\n *\n * The rest is the JVM's non-heap use — TLC's off-heap fingerprint set (it\n * reports `64MB offheap`), metaspace, thread stacks and the JVM itself. Keeping\n * `-Xmx` under the cgroup limit means the JVM throws OutOfMemoryError, which\n * TLC prints, instead of the kernel killing the container silently.\n */\nexport const JVM_HEAP_FRACTION = 0.75;\n\nconst MEGABYTE = 1024 ** 2;\n\nconst UNIT_BYTES: Record<string, number> = {\n b: 1,\n k: 1024,\n m: MEGABYTE,\n g: 1024 ** 3,\n};\n\n/**\n * Bytes for a docker-style memory string (`\"512m\"`, `\"8g\"`, `\"1073741824\"`).\n * `null` when the string is not one — the caller reports it, never guesses.\n */\nexport function parseMemoryBytes(spec: string): number | null {\n const match = /^(\\d+)\\s*([bkmg])?$/i.exec(spec.trim());\n if (!match?.[1]) return null;\n\n const value = Number.parseInt(match[1], 10);\n if (value <= 0) return null;\n\n const unit = (match[2] ?? \"b\").toLowerCase();\n const multiplier = UNIT_BYTES[unit];\n if (multiplier === undefined) return null;\n\n return value * multiplier;\n}\n\n/** Bytes of the configured minimum, for comparisons and error text. */\nexport const MIN_TLC_MEMORY_BYTES = parseMemoryBytes(MIN_TLC_MEMORY) ?? 512 * 1024 ** 2;\n\n/**\n * The `-Xmx` argument for a container limited to `memoryBytes`.\n *\n * Whole megabytes, so the JVM accepts it verbatim: `\"8g\"` gives `-Xmx6144m`,\n * the pairing measured working on a model that had been dying silently.\n */\nexport function jvmHeapArg(memoryBytes: number): string {\n const megabytes = Math.max(64, Math.floor((memoryBytes * JVM_HEAP_FRACTION) / MEGABYTE));\n return `${megabytes}m`;\n}\n\n/**\n * `JAVA_TOOL_OPTIONS` for a TLC container.\n *\n * Passed as an environment variable rather than baked into the image's\n * entrypoint so a changed setting needs no image rebuild. `UseParallelGC` is\n * the collector TLC asks for by name in a warning it prints on every run\n * without it.\n */\nexport function javaToolOptions(memoryBytes: number): string {\n return `-Xmx${jvmHeapArg(memoryBytes)} -XX:+UseParallelGC`;\n}\n",
|
|
8
8
|
"// 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 { OffSurfaceMutation } from \"../core/model\";\nimport type { MessageHandler } from \"../types\";\n\n/** polly#163: one verified-state write outside the modelled handler surface. */\nexport type OffSurfaceWriter = {\n /** Enclosing function/method, e.g. `RecoveryFlow.register`, or `<module>`. */\n function: string;\n file: string;\n line: number;\n};\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 * polly#163: writers of this field that escape the modelled handler surface\n * (non-dispatched functions/methods). Present only when there is at least one;\n * a field with these is mutated by a path no TLA action explores, even if a\n * handler also writes it (the case `unwrittenFields` cannot see).\n */\n offSurfaceWriters?: OffSurfaceWriter[];\n};\n\n/**\n * polly#163: a verified-state write the model never explores, tagged with\n * whether it lands on a declared field (the dangerous, fail-closed case) or an\n * undeclared one (reported as a plain warning).\n */\nexport type OffSurfaceFinding = {\n /** Canonical config field name when declared, else the raw `${signal}_field`. */\n field: string;\n signalVariable: string;\n function: string;\n file: string;\n line: number;\n /** True when `field` is part of the declared verified-state schema. */\n declared: boolean;\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 * polly#163: every verified-state write outside the modelled handler surface.\n * Ones whose `declared` flag is set land on a field in the verified schema —\n * the model carries that field but a non-dispatched path mutates it, which\n * `unwrittenFields` cannot detect when a handler also writes the field.\n */\n offSurfaceMutations: OffSurfaceFinding[];\n /**\n * True when the model has a coverage gap worth failing `--strict` on: a\n * declared-but-unwritten field (the model cannot exercise it) OR a declared\n * field mutated off-surface (polly#163 — a path no transition explores).\n * Unconstrained mutators are a soft 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 * polly#163: turn raw off-surface mutations into the report's per-field writer\n * lists and finding list. Only writes that land on a DECLARED field are kept —\n * for an undeclared signal there is no modelled transition to be \"outside\" of,\n * so those are dropped rather than reported as noise. `rawByKey` maps a\n * normalised field key to its original config name.\n */\nfunction foldOffSurface(\n offSurface: OffSurfaceMutation[],\n rawByKey: Map<string, string>\n): {\n offSurfaceByField: Map<string, OffSurfaceWriter[]>;\n offSurfaceMutations: OffSurfaceFinding[];\n} {\n const offSurfaceByField = new Map<string, OffSurfaceWriter[]>();\n const offSurfaceMutations: OffSurfaceFinding[] = [];\n for (const m of offSurface) {\n const key = norm(m.field);\n const raw = rawByKey.get(key);\n if (raw === undefined) continue;\n offSurfaceMutations.push({\n field: raw,\n signalVariable: m.signalVariable,\n function: m.functionName,\n file: m.filePath,\n line: m.line,\n declared: true,\n });\n const list = offSurfaceByField.get(key) ?? [];\n list.push({ function: m.functionName, file: m.filePath, line: m.line });\n offSurfaceByField.set(key, list);\n }\n return { offSurfaceByField, offSurfaceMutations };\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); `offSurface` is `analysis.offSurfaceMutations`\n * (polly#163) — verified-state writes the extractor found outside every\n * modelled handler body. It defaults to empty so existing callers are\n * unaffected.\n */\nexport function computeModelCoverage(\n stateFields: string[],\n handlers: MessageHandler[],\n offSurface: OffSurfaceMutation[] = []\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 const rawByKey = new Map(declaredOrder.map((d) => [d.key, d.raw]));\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 // polly#163: fold off-surface writers in per declared field.\n const { offSurfaceByField, offSurfaceMutations } = foldOffSurface(offSurface, rawByKey);\n\n const fieldCoverage: FieldWriteCoverage[] = declaredOrder.map(({ raw, key }) => {\n const offSurfaceWriters = offSurfaceByField.get(key);\n return {\n field: raw,\n writers: Array.from(writersByField.get(key) ?? []).sort(),\n ...(offSurfaceWriters && offSurfaceWriters.length > 0 ? { offSurfaceWriters } : {}),\n };\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 const hasDeclaredOffSurface = offSurfaceMutations.some((m) => m.declared);\n\n return {\n fieldCoverage,\n unwrittenFields,\n unconstrainedMutators,\n offSurfaceMutations,\n hasStrictViolation: unwrittenFields.length > 0 || hasDeclaredOffSurface,\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.unwrittenFields.length > 0) {\n reasons.push(\n `${report.unwrittenFields.length} declared state field(s) written by no modelled handler`\n );\n }\n // polly#163: a declared field mutated by a non-dispatched path the model never\n // explores. Distinct from unwrittenFields — this fires even when a handler\n // also writes the field.\n const declaredOffSurface = (report.offSurfaceMutations ?? []).filter((m) => m.declared);\n if (declaredOffSurface.length > 0) {\n reasons.push(\n `${declaredOffSurface.length} declared state field write(s) outside any modelled transition (polly#163)`\n );\n }\n if (meshFindingCount > 0) {\n reasons.push(`${meshFindingCount} unverified $meshState/$peerState predicate(s)`);\n }\n return reasons;\n}\n",
|
|
9
9
|
"// polly#160 (A2): coupled-field write-coupling lint.\n//\n// A `coupledFields` group declares state fields that are expected to move\n// together. Any single handler that writes a NON-EMPTY STRICT SUBSET of a\n// group's fields in one transition is flagged — the smell behind \"a capability\n// granted without its precondition\" (e.g. a handler that sets `authReady`\n// without `authenticated`).\n//\n// This is a fast, syntactic, per-handler hint. It WARNS, never fails: a\n// legitimate staged transition (handler X sets one field, handler Y sets the\n// other) trips it as a false positive, so the caller prints warnings only. The\n// sound, whole-reachable-state detector is the `capabilities` TLA+ invariant.\n\nimport type { MessageHandler } from \"../types\";\n\nexport type CoupledFieldsViolation = {\n /** The declared coupling group that was violated. */\n group: string[];\n /** The handler (message type) that wrote a strict subset of the group. */\n handler: string;\n /** Group fields this handler actually wrote. */\n written: string[];\n /** Group fields this handler did NOT write. */\n missing: string[];\n};\n\nexport type CoupledFieldsResult = {\n valid: boolean;\n violations: CoupledFieldsViolation[];\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\"). */\nfunction norm(field: string): string {\n return field.replace(/_/g, \".\");\n}\n\n/**\n * Flag any handler that writes a non-empty strict subset of a coupled group.\n * Order within a group is irrelevant (set membership). Consumes ONLY the\n * explicit `coupledFields` groups — capability declarations are checked\n * separately by their generated TLA+ invariant.\n */\nexport function checkCoupledFields(\n coupledFields: string[][],\n handlers: MessageHandler[]\n): CoupledFieldsResult {\n const violations: CoupledFieldsViolation[] = [];\n\n for (const rawGroup of coupledFields) {\n const group = rawGroup.map(norm);\n const groupSet = new Set(group);\n if (groupSet.size < 2) continue; // a group of <2 can have no strict subset\n\n for (const handler of handlers) {\n const violation = subsetViolation(group, groupSet, handler);\n if (violation) violations.push(violation);\n }\n }\n\n return { valid: violations.length === 0, violations };\n}\n\n/** Which of `group`'s (normalised) fields this handler assigns. */\nfunction writtenFields(group: Set<string>, handler: MessageHandler): Set<string> {\n const written = new Set<string>();\n for (const assignment of handler.assignments) {\n const field = norm(assignment.field);\n if (group.has(field)) written.add(field);\n }\n return written;\n}\n\n/** A violation iff the handler wrote a NON-EMPTY STRICT subset of the group. */\nfunction subsetViolation(\n group: string[],\n groupSet: Set<string>,\n handler: MessageHandler\n): CoupledFieldsViolation | null {\n const written = writtenFields(groupSet, handler);\n if (written.size === 0 || written.size === groupSet.size) return null;\n return {\n group,\n handler: handler.messageType,\n written: group.filter((f) => written.has(f)),\n missing: group.filter((f) => !written.has(f)),\n };\n}\n",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
"// Configuration validator - detects incomplete configuration\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n CONTEXT_NAME_PATTERN,\n DEFAULT_CONTEXTS,\n sanitizeContextName,\n} from \"../codegen/model-constants\";\nimport { MIN_TLC_MEMORY, MIN_TLC_MEMORY_BYTES, parseMemoryBytes } from \"../runner/memory\";\nimport type { ConfigIssue, ValidationResult, VerificationConfig } from \"../types\";\nimport { validateCapabilities, validateCoupledFields } from \"./capability-validation\";\n\n/**\n * Names a declared context may not take (polly#185): TLA+ keywords, and the\n * constants and operators a generated `.cfg`/`.tla` pair already declares. A\n * collision is a SANY error at run time, after the container is up.\n */\nconst RESERVED_CONTEXT_NAMES = new Set([\n // Constants the generated .cfg assigns.\n \"Contexts\",\n \"MaxMessages\",\n \"NULL\",\n \"Tabs\",\n \"TimeoutLimit\",\n \"MaxWorkers\",\n \"MaxRenderers\",\n \"MaxClients\",\n \"NoTarget\",\n \"MeshDocs\",\n // TLA+ keywords that may appear where a model value does.\n \"ASSUME\",\n \"BOOLEAN\",\n \"CASE\",\n \"CHOOSE\",\n \"CONSTANT\",\n \"CONSTANTS\",\n \"DOMAIN\",\n \"ELSE\",\n \"ENABLED\",\n \"EXCEPT\",\n \"EXTENDS\",\n \"FALSE\",\n \"IF\",\n \"IN\",\n \"INSTANCE\",\n \"LET\",\n \"MODULE\",\n \"OTHER\",\n \"SUBSET\",\n \"THEN\",\n \"TRUE\",\n \"UNCHANGED\",\n \"UNION\",\n \"VARIABLE\",\n \"VARIABLES\",\n \"WITH\",\n]);\n\nexport class ConfigValidator {\n private issues: ConfigIssue[] = [];\n\n validate(configPath: string): ValidationResult {\n this.issues = [];\n\n if (!fs.existsSync(configPath)) {\n this.issues.push({\n type: \"incomplete\",\n severity: \"error\",\n message: \"Configuration file does not exist\",\n suggestion: \"Run 'bun verify --setup' to generate configuration\",\n });\n\n return {\n valid: false,\n issues: this.issues,\n };\n }\n\n // Read the source file\n const configSource = fs.readFileSync(configPath, \"utf-8\");\n\n // Check for CONFIGURE markers\n this.checkConfigureMarkers(configSource);\n\n // Check for REVIEW markers (warnings only)\n this.checkReviewMarkers(configSource);\n\n // Load and validate the actual config\n try {\n const config = this.loadConfig(configPath);\n this.validateConfig(config);\n } catch (error) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n message: `Failed to load configuration: ${error instanceof Error ? error.message : String(error)}`,\n suggestion: \"Check for syntax errors in the configuration file\",\n });\n }\n\n const hasErrors = this.issues.some((i) => i.severity === \"error\");\n\n return {\n valid: !hasErrors,\n issues: this.issues,\n };\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Config validation requires complex pattern matching\n private checkConfigureMarkers(source: string): void {\n const configureRegex = /\\/\\*\\s*CONFIGURE\\s*\\*\\//g;\n const matches = [...source.matchAll(configureRegex)];\n\n if (matches.length > 0) {\n // Find line numbers for each match\n const lines = source.split(\"\\n\");\n const locations: Array<{ line: number; column: number; context: string }> = [];\n\n for (const match of matches) {\n const position = match.index ?? 0;\n const lineNumber = source.substring(0, position).split(\"\\n\").length;\n const line = lines[lineNumber - 1];\n\n // Skip if this is in a single-line comment\n if (line?.trim().startsWith(\"//\")) {\n continue;\n }\n\n // Extract field name from context\n const fieldMatch = line?.match(/\"([^\"]+)\":\\s*{/);\n const fieldName = fieldMatch ? fieldMatch[1] : \"unknown\";\n\n locations.push({\n line: lineNumber,\n column: (match.index ?? 0) - source.lastIndexOf(\"\\n\", position),\n context: fieldName ?? \"unknown\",\n });\n }\n\n // Only add issues if there are actual incomplete markers (not in comments)\n if (locations.length > 0) {\n this.issues.push({\n type: \"incomplete\",\n severity: \"error\",\n message: `Found ${locations.length} incomplete configuration marker(s)`,\n suggestion: \"Replace all /* CONFIGURE */ markers with actual values\",\n });\n\n // Add individual issues for each marker\n for (const loc of locations) {\n this.issues.push({\n type: \"incomplete\",\n severity: \"error\",\n field: loc.context,\n location: { line: loc.line, column: loc.column },\n message: `Incomplete configuration at line ${loc.line}`,\n suggestion: `Fill in value for \"${loc.context}\"`,\n });\n }\n }\n }\n }\n\n private checkReviewMarkers(source: string): void {\n const reviewRegex = /\\/\\*\\s*REVIEW\\s*\\*\\//g;\n const matches = [...source.matchAll(reviewRegex)];\n\n if (matches.length > 0) {\n // Filter out matches in single-line comments\n const lines = source.split(\"\\n\");\n const validMatches = [...matches].filter((match) => {\n const position = match.index ?? 0;\n const lineNumber = source.substring(0, position).split(\"\\n\").length;\n const line = lines[lineNumber - 1];\n return !line?.trim().startsWith(\"//\");\n });\n\n if (validMatches.length > 0) {\n this.issues.push({\n type: \"incomplete\",\n severity: \"warning\",\n message: `Found ${validMatches.length} value(s) that should be reviewed`,\n suggestion: \"Review auto-generated values marked with /* REVIEW */\",\n });\n }\n }\n }\n\n private loadConfig(configPath: string): VerificationConfig {\n // Dynamic import of the config file\n // In production, this would use proper module loading\n delete require.cache[require.resolve(path.resolve(configPath))];\n const module = require(path.resolve(configPath));\n return module.verificationConfig || module.default || module;\n }\n\n private validateConfig(config: VerificationConfig): void {\n // Check for null values\n this.findNullPlaceholders(config.state, \"state\");\n this.findNullPlaceholders(config.messages, \"messages\");\n\n // Validate bounds\n this.validateBounds(config);\n\n // Validate Tier 1 optimizations\n this.validateTier1Optimizations(config.messages);\n\n // polly#185: the declared context set becomes the .cfg's Contexts constant.\n this.validateContexts(config);\n\n // Validate verification options\n if (config.verification) {\n this.validateVerificationOptions(config.verification);\n }\n\n // Validate Tier 2 optimizations\n if (config.tier2) {\n this.validateTier2Optimizations(config.tier2);\n }\n\n // Validate subsystems\n if (config.subsystems) {\n this.validateSubsystems(config.subsystems, config.state, config.messages);\n }\n\n // polly#160: validate capability + coupled-field declarations.\n this.issues.push(...validateCapabilities(config.capabilities, config.state));\n this.issues.push(...validateCoupledFields(config.coupledFields, config.state));\n }\n\n private findNullPlaceholders(obj: unknown, path: string): void {\n if (obj === null || obj === undefined) {\n this.issues.push({\n type: \"null_placeholder\",\n severity: \"error\",\n field: path,\n message: `Configuration incomplete: ${path}`,\n suggestion: \"Replace null with a concrete value\",\n });\n return;\n }\n\n if (typeof obj !== \"object\") {\n return;\n }\n\n for (const [key, value] of Object.entries(obj)) {\n const fullPath = `${path}.${key}`;\n\n if (value === null) {\n this.issues.push({\n type: \"null_placeholder\",\n severity: \"error\",\n field: fullPath,\n message: `Configuration incomplete: ${fullPath}`,\n suggestion: \"Replace null with a concrete value\",\n });\n } else if (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n this.findNullPlaceholders(value, fullPath);\n }\n }\n }\n\n private validateBounds(config: VerificationConfig): void {\n // Check messages config\n this.validateMessageBounds(config.messages);\n\n // Check state field bounds\n for (const [fieldName, fieldConfig] of Object.entries(config.state)) {\n if (typeof fieldConfig !== \"object\" || fieldConfig === null) {\n continue;\n }\n\n this.validateFieldBounds(fieldName, fieldConfig);\n }\n }\n\n private validateMessageBounds(messages: {\n maxInFlight: number | null;\n maxTabs?: number | null;\n }): void {\n if (messages.maxInFlight !== null) {\n if (messages.maxInFlight < 1) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"messages.maxInFlight\",\n message: \"maxInFlight must be at least 1\",\n suggestion: \"Use a value between 4-10 for most cases\",\n });\n }\n\n if (messages.maxInFlight > 20) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: \"messages.maxInFlight\",\n message: \"Very high maxInFlight (>20) will slow verification significantly\",\n suggestion: \"Use 4-10 for development, up to 20 for thorough verification\",\n });\n }\n }\n\n if (messages.maxTabs !== null && messages.maxTabs !== undefined) {\n if (messages.maxTabs < 1) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"messages.maxTabs\",\n message: \"maxTabs must be at least 1\",\n suggestion: \"Use 2-3 for most cases\",\n });\n }\n\n if (messages.maxTabs > 10) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: \"messages.maxTabs\",\n message: \"Very high maxTabs (>10) will slow verification significantly\",\n suggestion: \"Use 2-3 for most cases\",\n });\n }\n }\n }\n\n private validateFieldBounds(fieldName: string, fieldConfig: Record<string, unknown>): void {\n // Array bounds\n if (\"maxLength\" in fieldConfig) {\n this.validateArrayBounds(fieldName, fieldConfig);\n }\n\n // Number bounds\n if (\"min\" in fieldConfig && \"max\" in fieldConfig) {\n this.validateNumberBounds(fieldName, fieldConfig);\n }\n\n // Map/Set bounds\n if (\"maxSize\" in fieldConfig) {\n this.validateMapSetBounds(fieldName, fieldConfig);\n }\n }\n\n private validateArrayBounds(fieldName: string, fieldConfig: Record<string, unknown>): void {\n const maxLength = (fieldConfig as unknown as { maxLength?: number | null }).maxLength;\n if (maxLength === null) return;\n\n if (maxLength < 0) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `state.${fieldName}.maxLength`,\n message: \"maxLength cannot be negative\",\n suggestion: \"Use a positive number\",\n });\n }\n\n if (maxLength > 50) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: `state.${fieldName}.maxLength`,\n message: `Very large maxLength (${maxLength}) will slow verification`,\n suggestion: \"Use 10-20 for most cases\",\n });\n }\n }\n\n private validateNumberBounds(fieldName: string, fieldConfig: Record<string, unknown>): void {\n const min = (fieldConfig as unknown as { min?: number | null }).min;\n const max = (fieldConfig as unknown as { max?: number | null }).max;\n\n if (min !== null && max !== null && min > max) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `state.${fieldName}`,\n message: `Invalid range: min (${min}) > max (${max})`,\n suggestion: \"Ensure min is less than or equal to max\",\n });\n }\n\n if (min !== null && max !== null && max - min > 1000) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: `state.${fieldName}`,\n message: `Very large number range (${max - min}) will slow verification`,\n suggestion: \"Use smaller ranges when possible\",\n });\n }\n }\n\n private validateMapSetBounds(fieldName: string, fieldConfig: Record<string, unknown>): void {\n const maxSize = (fieldConfig as unknown as { maxSize?: number | null }).maxSize;\n if (maxSize === null) return;\n\n if (maxSize < 0) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `state.${fieldName}.maxSize`,\n message: \"maxSize cannot be negative\",\n suggestion: \"Use a positive number\",\n });\n }\n\n if (maxSize > 20) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: `state.${fieldName}.maxSize`,\n message: `Very large maxSize (${maxSize}) will slow verification`,\n suggestion: \"Use 3-5 for most cases\",\n });\n }\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Validation requires checking multiple conditions\n private validateTier1Optimizations(messages: VerificationConfig[\"messages\"]): void {\n // Validate include/exclude are mutually exclusive\n if (messages.include && messages.exclude) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"messages\",\n message: \"Cannot use both 'include' and 'exclude' filters\",\n suggestion: \"Use either 'include' OR 'exclude', not both\",\n });\n }\n\n // Validate symmetry groups have at least 2 members\n if (messages.symmetry) {\n for (let i = 0; i < messages.symmetry.length; i++) {\n const group = messages.symmetry[i];\n if (group.length < 2) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field: `messages.symmetry[${i}]`,\n message: \"Symmetry group must have at least 2 message types\",\n suggestion: \"Remove single-element symmetry groups\",\n });\n }\n }\n }\n\n // Validate perMessageBounds values are realistic\n if (messages.perMessageBounds) {\n for (const [msgType, bound] of Object.entries(messages.perMessageBounds)) {\n if (bound < 1) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `messages.perMessageBounds.${msgType}`,\n message: `Per-message bound must be at least 1`,\n suggestion: \"Use a positive number\",\n });\n }\n if (bound > 20) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: `messages.perMessageBounds.${msgType}`,\n message: `Per-message bound ${bound} is outside recommended range (1-20)`,\n suggestion: \"Consider adjusting bound to a more realistic value\",\n });\n }\n }\n }\n\n // Validate tabSymmetry\n if (messages.tabSymmetry !== undefined) {\n if (typeof messages.tabSymmetry !== \"boolean\") {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"messages.tabSymmetry\",\n message: \"tabSymmetry must be a boolean\",\n suggestion: \"Use true or false\",\n });\n }\n\n if (messages.tabSymmetry && (messages.maxTabs === undefined || messages.maxTabs === null)) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field: \"messages.tabSymmetry\",\n message: \"tabSymmetry enabled but maxTabs not set\",\n suggestion: \"Set maxTabs to define the number of tabs for symmetry reduction\",\n });\n }\n }\n }\n\n private validateVerificationOptions(\n verification: NonNullable<VerificationConfig[\"verification\"]>\n ): void {\n if (verification.timeout !== undefined) {\n if (verification.timeout < 0) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"verification.timeout\",\n message: \"Timeout cannot be negative\",\n suggestion: \"Use 0 for no timeout, or positive number for timeout in seconds\",\n });\n }\n if (verification.timeout > 3600) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: \"verification.timeout\",\n message: \"Timeout over 1 hour (3600s) is very long\",\n suggestion: \"Consider reducing timeout or using 0 for no limit\",\n });\n }\n }\n\n if (verification.workers !== undefined) {\n if (verification.workers < 1) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"verification.workers\",\n message: \"Workers must be at least 1\",\n suggestion: \"Use 1 or more workers\",\n });\n }\n if (verification.workers > 16) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: \"verification.workers\",\n message: \"More than 16 workers may not improve performance\",\n suggestion: \"Typical range is 1-8 workers\",\n });\n }\n }\n\n this.validateMemory(verification.memory);\n }\n\n /**\n * polly#185: `contexts` becomes the `.cfg`'s `Contexts` set, and its members\n * become TLA+ model values.\n *\n * A name TLC cannot parse fails the run after the spec is generated and the\n * container is up, with a SANY error naming a line the user never wrote — so\n * it is rejected here instead. An empty array is rejected outright: the\n * router's `ports` function, `contextStates` and every quantifier are over\n * `Contexts`, and all of them are degenerate at zero.\n */\n private validateContexts(config: VerificationConfig): void {\n this.warnOnDeadMaxContexts(config);\n\n const contexts = (config as { contexts?: unknown }).contexts;\n if (contexts === undefined) return;\n\n if (!Array.isArray(contexts)) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"contexts\",\n message: \"contexts must be an array of context names\",\n suggestion: `Use an array, e.g. [\"server\"], or omit the key for the default {${DEFAULT_CONTEXTS.join(\", \")}}`,\n });\n return;\n }\n\n if (contexts.length === 0) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"contexts\",\n message: \"contexts is empty; the model needs at least one context\",\n suggestion: `Name at least one context, e.g. [\"server\"], or omit the key for the default {${DEFAULT_CONTEXTS.join(\", \")}}`,\n });\n return;\n }\n\n const seen = new Map<string, string>();\n for (const name of contexts) {\n this.validateContextName(name, seen);\n }\n\n this.warnOnSingleContextMesh(config, contexts.length);\n }\n\n /** One declared context name: type, shape, sanitising, reserved words, duplicates. */\n private validateContextName(name: unknown, seen: Map<string, string>): void {\n if (typeof name !== \"string\") {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"contexts\",\n message: `Context name ${JSON.stringify(name)} is not a string`,\n suggestion: \"Every entry must be a string naming one context\",\n });\n return;\n }\n\n const emitted = sanitizeContextName(name);\n\n if (!CONTEXT_NAME_PATTERN.test(emitted)) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"contexts\",\n message: `Context \"${name}\" is not a TLA+ model value (emits as \"${emitted}\")`,\n suggestion: \"Start with a letter or underscore, then letters, digits or underscores\",\n });\n return;\n }\n\n if (RESERVED_CONTEXT_NAMES.has(emitted)) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"contexts\",\n message: `Context \"${name}\" collides with a TLA+ keyword or a constant the .cfg already declares`,\n suggestion: `Pick a name outside {${[...RESERVED_CONTEXT_NAMES].sort().join(\", \")}}`,\n });\n return;\n }\n\n const collidesWith = seen.get(emitted);\n if (collidesWith !== undefined) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"contexts\",\n message:\n collidesWith === name\n ? `Context \"${name}\" is declared twice`\n : `Contexts \"${collidesWith}\" and \"${name}\" both emit as \"${emitted}\"`,\n suggestion: \"Each context must emit a distinct TLA+ model value\",\n });\n return;\n }\n seen.set(emitted, name);\n\n if (emitted !== name) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field: \"contexts\",\n message: `Context \"${name}\" is emitted as the model value \"${emitted}\"`,\n suggestion: \"Name it that way in the config so the spec and the config read alike\",\n });\n }\n }\n\n /**\n * polly#185: `messages.maxContexts` never sized `Contexts`. It emitted a\n * `MaxContexts` constant the spec did not declare, which TLC read and\n * ignored, so the key had never produced an error either.\n */\n private warnOnDeadMaxContexts(config: VerificationConfig): void {\n if (config.messages?.maxContexts === undefined) return;\n\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field: \"messages.maxContexts\",\n message: \"messages.maxContexts does not size the Contexts set and never did\",\n suggestion: 'Declare the set instead, e.g. contexts: [\"server\", \"client\"]',\n });\n }\n\n /**\n * polly#185: `PropagateMeshOp(src, dst, docId)` requires `src # dst`, so a\n * single-context model never fires it — the Automerge sync the `mesh` block\n * declares is then not modelled at all.\n */\n private warnOnSingleContextMesh(config: VerificationConfig, contextCount: number): void {\n if (contextCount > 1) return;\n if (!config.mesh || Object.keys(config.mesh).length === 0) return;\n\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field: \"contexts\",\n message:\n \"one context with a `mesh` block: PropagateMeshOp needs two distinct contexts, so mesh propagation is never enabled\",\n suggestion: \"Declare at least two contexts, or drop the mesh block from this model\",\n });\n }\n\n /**\n * polly#181: `verification.memory` caps both the container and the JVM heap.\n * A value TLC cannot work in is rejected here rather than started, because a\n * run that dies for want of memory dies without a TLC message.\n */\n private validateMemory(memory: string | undefined): void {\n if (memory === undefined) return;\n\n const bytes = parseMemoryBytes(memory);\n if (bytes === null) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"verification.memory\",\n message: `\"${memory}\" is not a docker-style memory size`,\n suggestion: 'Use a number with an optional b/k/m/g suffix, e.g. \"8g\"',\n });\n return;\n }\n\n if (bytes < MIN_TLC_MEMORY_BYTES) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"verification.memory\",\n message: `${memory} is below the ${MIN_TLC_MEMORY} minimum TLC can run in`,\n suggestion: `Use ${MIN_TLC_MEMORY} or more`,\n });\n }\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Validation requires checking multiple conditions\n private validateTier2Optimizations(tier2: NonNullable<VerificationConfig[\"tier2\"]>): void {\n // Validate temporal constraints\n if (tier2.temporalConstraints) {\n for (let i = 0; i < tier2.temporalConstraints.length; i++) {\n const constraint = tier2.temporalConstraints[i];\n if (!constraint.before || !constraint.after) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `tier2.temporalConstraints[${i}]`,\n message: \"Temporal constraint must have 'before' and 'after' fields\",\n suggestion: \"Specify both message types for ordering constraint\",\n });\n }\n if (constraint.before === constraint.after) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `tier2.temporalConstraints[${i}]`,\n message: \"Temporal constraint cannot have same message type for 'before' and 'after'\",\n suggestion: \"Use different message types\",\n });\n }\n }\n }\n\n // Validate bounded exploration\n if (tier2.boundedExploration) {\n if (tier2.boundedExploration.maxDepth !== undefined) {\n if (tier2.boundedExploration.maxDepth < 1) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"tier2.boundedExploration.maxDepth\",\n message: \"maxDepth must be at least 1\",\n suggestion: \"Use positive integer for depth limit\",\n });\n }\n if (tier2.boundedExploration.maxDepth > 100) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: \"tier2.boundedExploration.maxDepth\",\n message: \"maxDepth > 100 may not be useful\",\n suggestion: \"Typical range is 10-50\",\n });\n }\n }\n }\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Subsystem validation requires checking multiple cross-references\n private validateSubsystems(\n subsystems: Record<\n string,\n {\n state: string[];\n handlers: string[];\n bounds?: {\n maxInFlight?: number;\n perMessageBounds?: Record<string, number>;\n };\n }\n >,\n stateConfig: Record<string, unknown>,\n messages: { maxInFlight: number | null }\n ): void {\n const stateFieldNames = Object.keys(stateConfig);\n const allAssignedHandlers = new Map<string, string>(); // handler → subsystem name\n const allAssignedFields = new Map<string, string>(); // field → subsystem name\n\n for (const [subsystemName, subsystem] of Object.entries(subsystems)) {\n // Validate state field references\n for (const field of subsystem.state) {\n if (!stateFieldNames.includes(field)) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `subsystems.${subsystemName}.state`,\n message: `State field \"${field}\" does not exist in top-level state config`,\n suggestion: `Available fields: ${stateFieldNames.join(\", \")}`,\n });\n }\n\n // Check for duplicate field assignments across subsystems\n const existingOwner = allAssignedFields.get(field);\n if (existingOwner) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field: `subsystems.${subsystemName}.state`,\n message: `State field \"${field}\" is assigned to both \"${existingOwner}\" and \"${subsystemName}\"`,\n suggestion: \"State fields should be partitioned across subsystems for non-interference\",\n });\n } else {\n allAssignedFields.set(field, subsystemName);\n }\n }\n\n // Validate handler references (no empty arrays)\n if (subsystem.handlers.length === 0) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field: `subsystems.${subsystemName}.handlers`,\n message: `Subsystem \"${subsystemName}\" has no handlers`,\n suggestion: \"Add at least one handler to the subsystem\",\n });\n }\n\n // Check for duplicate handler assignments across subsystems\n for (const handler of subsystem.handlers) {\n const existingOwner = allAssignedHandlers.get(handler);\n if (existingOwner) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `subsystems.${subsystemName}.handlers`,\n message: `Handler \"${handler}\" is assigned to both \"${existingOwner}\" and \"${subsystemName}\"`,\n suggestion: \"Each handler must belong to exactly one subsystem\",\n });\n } else {\n allAssignedHandlers.set(handler, subsystemName);\n }\n }\n\n // Validate state array is non-empty\n if (subsystem.state.length === 0) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field: `subsystems.${subsystemName}.state`,\n message: `Subsystem \"${subsystemName}\" has no state fields`,\n suggestion: \"Add at least one state field to the subsystem\",\n });\n }\n\n if (subsystem.bounds) {\n this.validateSubsystemBounds(subsystemName, subsystem, messages);\n }\n }\n }\n\n private validateSubsystemBounds(\n subsystemName: string,\n subsystem: {\n handlers: string[];\n bounds?: { maxInFlight?: number; perMessageBounds?: Record<string, number> };\n },\n messages: { maxInFlight: number | null }\n ): void {\n const bounds = subsystem.bounds;\n if (!bounds) return;\n\n const effectiveMaxInFlight =\n bounds.maxInFlight === undefined ? (messages.maxInFlight ?? 3) : bounds.maxInFlight;\n\n if (bounds.maxInFlight !== undefined && bounds.maxInFlight < 1) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: `subsystems.${subsystemName}.bounds.maxInFlight`,\n message: `bounds.maxInFlight must be at least 1, got ${bounds.maxInFlight}`,\n suggestion: \"Use 1 to keep the global value, or 2+ to exercise multi-step ensures\",\n });\n }\n if (bounds.maxInFlight !== undefined && bounds.maxInFlight > 20) {\n this.issues.push({\n type: \"unrealistic_bound\",\n severity: \"warning\",\n field: `subsystems.${subsystemName}.bounds.maxInFlight`,\n message: `Very high bounds.maxInFlight (${bounds.maxInFlight}) will slow this subsystem's verification significantly`,\n suggestion: \"Use 2-4 for most multi-step ensures cases\",\n });\n }\n\n if (bounds.perMessageBounds) {\n const handlerSet = new Set(subsystem.handlers);\n for (const [msg, bound] of Object.entries(bounds.perMessageBounds)) {\n this.validatePerMessageBound(subsystemName, msg, bound, effectiveMaxInFlight, handlerSet);\n }\n }\n }\n\n private validatePerMessageBound(\n subsystemName: string,\n msg: string,\n bound: number,\n effectiveMaxInFlight: number,\n handlerSet: Set<string>\n ): void {\n const field = `subsystems.${subsystemName}.bounds.perMessageBounds.${msg}`;\n if (bound < 1) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field,\n message: `perMessageBounds[${msg}] must be at least 1, got ${bound}`,\n suggestion: \"Remove the entry to inherit from the global bound, or set 1+\",\n });\n }\n if (bound > effectiveMaxInFlight) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field,\n message: `perMessageBounds[${msg}] = ${bound} exceeds effective maxInFlight = ${effectiveMaxInFlight}; the bound is unreachable and ${msg} will not be explored`,\n suggestion: `Lower perMessageBounds[${msg}] to ≤ ${effectiveMaxInFlight}, or raise bounds.maxInFlight`,\n });\n }\n if (!handlerSet.has(msg)) {\n this.issues.push({\n type: \"invalid_value\",\n severity: \"warning\",\n field,\n message: `perMessageBounds[${msg}] is set on subsystem \"${subsystemName}\" but ${msg} is not in its handlers list; the override will be silently dropped`,\n suggestion: `Move ${msg} into subsystems.${subsystemName}.handlers, or remove the override`,\n });\n }\n }\n}\n\nexport function validateConfig(configPath: string): ValidationResult {\n const validator = new ConfigValidator();\n return validator.validate(configPath);\n}\n",
|
|
27
27
|
"// polly#160: config validation for `capabilities` and `coupledFields`.\n//\n// Pure functions returning ConfigIssue[] (the same shape the parser collects),\n// so they are unit-testable without a config-file fixture.\n\nimport { extractFieldRefs, fieldInConfig } from \"../analysis/expression-validator\";\nimport type { ConfigIssue } from \"../types\";\nimport type { CapabilityConfig } from \"./types\";\n\n/**\n * Validate capability declarations.\n *\n * - G1: a non-empty `enabledBy`/`requires` expression that yields ZERO field\n * references is a FATAL error. Bare identifiers (\"authReady\") pass through\n * `tsExpressionToTLA` as free TLA+ identifiers AND `extractFieldRefs` returns\n * `[]`, so without this guard the generated invariant is silently vacuous —\n * exactly the silent-omission failure mode #160 exists to surface.\n * - G2: every referenced field must resolve in the state config (reusing\n * `fieldInConfig`), otherwise the invariant references an undeclared field.\n */\nexport function validateCapabilities(\n capabilities: CapabilityConfig[] | undefined,\n stateConfig: Record<string, unknown>\n): ConfigIssue[] {\n if (!capabilities || capabilities.length === 0) return [];\n\n const issues: ConfigIssue[] = [];\n const configKeys = new Set(Object.keys(stateConfig));\n\n for (const cap of capabilities) {\n const name = cap.name?.trim();\n if (!name) {\n issues.push({\n type: \"invalid_value\",\n severity: \"error\",\n field: \"capabilities\",\n message: \"Capability is missing a name.\",\n suggestion: \"Give each capability a unique name; it becomes the TLA+ invariant identifier.\",\n });\n continue;\n }\n\n issues.push(\n ...validateExpression(name, \"enabledBy\", cap.enabledBy, configKeys, stateConfig),\n ...validateExpression(name, \"requires\", cap.requires, configKeys, stateConfig)\n );\n }\n\n return issues;\n}\n\n/** Validate one capability expression slot (enabledBy/requires): G1 + G2. */\nfunction validateExpression(\n name: string,\n slot: \"enabledBy\" | \"requires\",\n expr: string | undefined,\n configKeys: Set<string>,\n stateConfig: Record<string, unknown>\n): ConfigIssue[] {\n const field = `capabilities.${name}.${slot}`;\n\n if (!expr?.trim()) {\n return [\n {\n type: \"capability_empty_expression\",\n severity: \"error\",\n field,\n message: `Capability \"${name}\" has an empty ${slot} expression.`,\n suggestion: `Provide a state expression for ${slot}, e.g. \"state.authenticated\".`,\n },\n ];\n }\n\n const refs = extractFieldRefs(expr);\n\n // G1: a non-empty expression that references no modelled state field would\n // compile to a vacuous/free-identifier invariant.\n if (refs.length === 0) {\n return [\n {\n type: \"capability_empty_expression\",\n severity: \"error\",\n field,\n message: `Capability \"${name}\" ${slot} expression \"${expr}\" references no state field.`,\n suggestion:\n 'Reference state via the state./.value form (e.g. \"state.authReady\"); a bare identifier produces a silently-vacuous invariant.',\n },\n ];\n }\n\n // G2: every referenced field must exist in the state config.\n return refs\n .filter((ref) => !fieldInConfig(ref, configKeys, stateConfig))\n .map((ref) => ({\n type: \"capability_unknown_field\",\n severity: \"error\",\n field,\n message: `Capability \"${name}\" ${slot} references \"${ref}\", which is not in the state config.`,\n suggestion: `Add \"${ref}\" to state, or correct the expression. Known fields: ${[...configKeys].join(\", \")}`,\n }));\n}\n\n/**\n * Validate coupled-field groups: every field name must resolve in the state\n * config. (The strict-subset write detection itself is a runtime WARNING\n * produced later by `checkCoupledFields`, not here.)\n */\nexport function validateCoupledFields(\n coupledFields: string[][] | undefined,\n stateConfig: Record<string, unknown>\n): ConfigIssue[] {\n if (!coupledFields || coupledFields.length === 0) return [];\n\n const issues: ConfigIssue[] = [];\n const configKeys = new Set(Object.keys(stateConfig));\n\n coupledFields.forEach((group, i) => {\n for (const field of group) {\n if (!fieldInConfig(field, configKeys, stateConfig)) {\n issues.push({\n type: \"coupled_unknown_field\",\n severity: \"error\",\n field: `coupledFields[${i}]`,\n message: `Coupled field \"${field}\" is not in the state config.`,\n suggestion: `Use a declared state field. Known fields: ${[...configKeys].join(\", \")}`,\n });\n }\n }\n });\n\n return issues;\n}\n",
|
|
28
28
|
"// Type extraction from TypeScript using ts-morph\n\nimport { Project, type SourceFile, type Type } from \"ts-morph\";\nimport type { CodebaseAnalysis, FieldAnalysis, MessageHandler, TypeInfo } from \"../types\";\nimport { HandlerExtractor } from \"./handlers\";\n\nexport class TypeExtractor {\n private project: Project;\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n }\n\n /**\n * Analyze the codebase and extract state types and message types\n */\n async analyzeCodebase(stateFilePath?: string): Promise<CodebaseAnalysis> {\n // Find state type\n const stateType = stateFilePath ? this.extractStateType(stateFilePath) : this.findStateType();\n\n // Find message types\n const messageTypes = this.findMessageTypes();\n\n // Analyze fields\n const fields = stateType ? this.analyzeFields(stateType) : [];\n\n // Extract message handlers\n const handlerAnalysis = this.extractHandlerAnalysis();\n\n // Filter message types and handlers to only include valid TLA+ identifiers\n const validMessageTypes = this.filterAndLogMessageTypes(\n messageTypes,\n handlerAnalysis.messageTypes\n );\n const validHandlers = this.filterAndLogHandlers(handlerAnalysis.handlers);\n\n // Ensure handlers have all required properties\n // biome-ignore lint/suspicious/noExplicitAny: Mapping partial handler objects to complete MessageHandler interface\n const completeHandlers: MessageHandler[] = validHandlers.map((h: any) => ({\n messageType: h.messageType,\n node: h.node || \"unknown\",\n assignments: h.assignments || [],\n preconditions: h.preconditions || [],\n postconditions: h.postconditions || [],\n location: h.location,\n relationships: h.relationships,\n origin: h.origin,\n }));\n\n return {\n stateType,\n messageTypes: validMessageTypes,\n fields,\n handlers: completeHandlers,\n stateConstraints: handlerAnalysis.stateConstraints,\n globalStateConstraints: handlerAnalysis.globalStateConstraints,\n verifiedStates: handlerAnalysis.verifiedStates,\n meshOrPeerSignals: handlerAnalysis.meshOrPeerSignals,\n resources: handlerAnalysis.resources,\n offSurfaceMutations: handlerAnalysis.offSurfaceMutations,\n };\n }\n\n /**\n * Extract handler analysis from the project\n */\n private extractHandlerAnalysis() {\n const configFilePath = this.project.getCompilerOptions()[\"configFilePath\"];\n const tsConfigPath = typeof configFilePath === \"string\" ? configFilePath : \"tsconfig.json\";\n const handlerExtractor = new HandlerExtractor(tsConfigPath);\n return handlerExtractor.extractHandlers();\n }\n\n /**\n * Filter and log message types, keeping every type that can be represented\n * in TLA+ (polly#144). A message type is only ever emitted as a *quoted*\n * string literal (\"POST /register/options\") and turned into an action name\n * via sanitization, so non-identifier types like HTTP routes and\n * colon-namespaced WS messages are perfectly representable. We drop only the\n * genuinely unrepresentable ones — strings with no letter to anchor an action\n * name (empty, whitespace, all-symbol).\n */\n private filterAndLogMessageTypes(\n messageTypes: string[],\n handlerMessageTypes: Set<string>\n ): string[] {\n const allMessageTypes = Array.from(new Set([...messageTypes, ...handlerMessageTypes]));\n const keptMessageTypes: string[] = [];\n const droppedMessageTypes: string[] = [];\n\n for (const msgType of allMessageTypes) {\n if (this.canRepresentAsTLAAction(msgType)) {\n keptMessageTypes.push(msgType);\n } else {\n droppedMessageTypes.push(msgType);\n }\n }\n\n this.logDroppedMessageTypes(droppedMessageTypes);\n return keptMessageTypes;\n }\n\n /**\n * Log warnings about unrepresentable message types. Unlike the old\n * invalid-identifier path this is unconditional (not POLLY_DEBUG-gated):\n * silently dropping handlers was the core failure mode in polly#144.\n */\n private logDroppedMessageTypes(droppedMessageTypes: string[]): void {\n if (droppedMessageTypes.length === 0) return;\n\n console.log(\n `[WARN] Dropped ${droppedMessageTypes.length} unrepresentable message type(s) (no letter to form a TLA+ action name):`\n );\n for (const dropped of droppedMessageTypes) {\n console.log(`[WARN] - \"${dropped}\"`);\n }\n }\n\n /**\n * Filter and log handlers, keeping every handler whose message type is\n * representable in TLA+ (polly#144 — HTTP routes and colon-namespaced\n * messages included).\n */\n private filterAndLogHandlers(\n handlers: Array<{ messageType: string; location: { file: string; line: number } }>\n ) {\n const keptHandlers = handlers.filter((h) => this.canRepresentAsTLAAction(h.messageType));\n\n this.logDroppedHandlers(handlers, keptHandlers);\n return keptHandlers;\n }\n\n /**\n * Log warnings about dropped handlers (unconditional — see polly#144).\n */\n private logDroppedHandlers(\n allHandlers: Array<{ messageType: string; location: { file: string; line: number } }>,\n keptHandlers: Array<{ messageType: string }>\n ): void {\n const droppedHandlerCount = allHandlers.length - keptHandlers.length;\n if (droppedHandlerCount === 0) return;\n\n console.log(\n `[WARN] Dropped ${droppedHandlerCount} handler(s) with unrepresentable message types:`\n );\n for (const handler of allHandlers) {\n if (!this.canRepresentAsTLAAction(handler.messageType)) {\n console.log(\n `[WARN] - Handler for \"${handler.messageType}\" at ${handler.location.file}:${handler.location.line}`\n );\n }\n }\n }\n\n /**\n * Check whether a message type can be represented in the generated TLA+\n * (polly#144). The type itself becomes a quoted string literal, so the only\n * hard requirement is that it contains at least one letter — enough to\n * sanitize into a valid `Handle…` action name. Everything else (slashes,\n * colons, spaces, leading digits) is fine. Strings carrying TS\n * type-expression punctuation (`{}();<>=`) are rejected as extraction\n * artifacts rather than 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 * Extract state type from a specific file\n */\n private extractStateType(filePath: string): TypeInfo | null {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) {\n return null;\n }\n\n // Look for type alias named \"AppState\" or similar\n const typeAlias =\n sourceFile.getTypeAlias(\"AppState\") ||\n sourceFile.getTypeAlias(\"State\") ||\n sourceFile.getTypeAliases()[0];\n\n if (!typeAlias) {\n return null;\n }\n\n const type = typeAlias.getType();\n return this.convertType(type, typeAlias.getName());\n }\n\n /**\n * Find state type by searching common patterns\n */\n private findStateType(): TypeInfo | null {\n // Search for files with \"state\" in the name\n const stateFiles = this.project.getSourceFiles(\"**/state*.ts\");\n\n for (const file of stateFiles) {\n const typeAlias = file.getTypeAlias(\"AppState\") || file.getTypeAlias(\"State\");\n\n if (typeAlias) {\n const type = typeAlias.getType();\n return this.convertType(type, typeAlias.getName());\n }\n }\n\n return null;\n }\n\n /**\n * Find message types by searching for type unions\n * Handles:\n * - Simple string literal unions\n * - Discriminated unions ({ type: 'foo' } | { type: 'bar' })\n * - Type aliases across files\n * - Template literal types (with warning)\n * - Conditional types (conservatively)\n * - Mapped types\n */\n private findMessageTypes(): string[] {\n const messageTypes: string[] = [];\n const warnings: string[] = [];\n\n // Search for files with \"message\" in the name\n const messageFiles = this.project.getSourceFiles(\"**/message*.ts\");\n\n for (const file of messageFiles) {\n // Look for type aliases that might contain message types\n for (const typeAlias of file.getTypeAliases()) {\n const extractedTypes = this.extractMessageTypesFromType(\n typeAlias.getType(),\n typeAlias.getName(),\n file,\n warnings\n );\n messageTypes.push(...extractedTypes);\n }\n }\n\n // Log warnings about unbounded types\n if (warnings.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\"[WARN] Message type extraction warnings:\");\n for (const warning of warnings) {\n console.log(`[WARN] ${warning}`);\n }\n }\n\n return [...new Set(messageTypes)]; // Dedupe\n }\n\n /**\n * Extract message types from a TypeScript type\n * Recursively handles unions, discriminated unions, aliases, etc.\n */\n private extractMessageTypesFromType(\n type: Type,\n typeName: string,\n sourceFile: SourceFile,\n warnings: string[]\n ): string[] {\n if (type.isUnion()) {\n return this.extractFromUnionType(type, typeName, sourceFile, warnings);\n }\n\n if (type.getAliasSymbol()) {\n return this.extractFromTypeAlias(type, typeName, sourceFile, warnings);\n }\n\n // Check if type has conditional type method before calling\n if (\n // biome-ignore lint/suspicious/noExplicitAny: Runtime check for ts-morph Type method availability\n typeof (type as unknown as any).isConditionalType === \"function\" &&\n // biome-ignore lint/suspicious/noExplicitAny: Runtime check for ts-morph Type method availability\n (type as unknown as any).isConditionalType()\n ) {\n return this.extractFromConditionalType(type, warnings);\n }\n\n if (type.getText().includes(\"[K in \")) {\n return this.extractFromMappedType(type, sourceFile, warnings);\n }\n\n if (type.getText().includes(\"`\")) {\n this.warnTemplateLiteral(type, warnings);\n return [];\n }\n\n return [];\n }\n\n /**\n * Extract message types from union type\n */\n private extractFromUnionType(\n type: Type,\n typeName: string,\n sourceFile: SourceFile,\n warnings: string[]\n ): string[] {\n const messageTypes: string[] = [];\n const unionTypes = type.getUnionTypes();\n\n for (const unionType of unionTypes) {\n const extracted = this.extractFromUnionMember(unionType, typeName, sourceFile, warnings);\n messageTypes.push(...extracted);\n }\n\n return messageTypes;\n }\n\n /**\n * Extract message types from a single union member\n */\n private extractFromUnionMember(\n unionType: Type,\n typeName: string,\n sourceFile: SourceFile,\n warnings: string[]\n ): string[] {\n if (unionType.isObject()) {\n return this.extractFromDiscriminatedUnion(unionType, sourceFile, warnings);\n }\n\n if (unionType.isStringLiteral()) {\n return [unionType.getLiteralValue() as string];\n }\n\n if (unionType.getAliasSymbol()) {\n const aliasedType = unionType.getAliasSymbol()?.getDeclaredType();\n if (aliasedType) {\n return this.extractMessageTypesFromType(aliasedType, typeName, sourceFile, warnings);\n }\n }\n\n return [];\n }\n\n /**\n * Extract message types from discriminated union\n */\n private extractFromDiscriminatedUnion(\n unionType: Type,\n sourceFile: SourceFile,\n warnings: string[]\n ): string[] {\n const typeProperty = unionType.getProperty(\"type\");\n if (!typeProperty) {\n return [];\n }\n\n const typeType = typeProperty.getTypeAtLocation(sourceFile);\n\n if (typeType.isStringLiteral()) {\n return [typeType.getLiteralValue() as string];\n }\n\n if (typeType.getText().includes(\"`\")) {\n warnings.push(\n `Template literal type in discriminant: ${typeType.getText()} - may be unbounded`\n );\n }\n\n return [];\n }\n\n /**\n * Extract message types from type alias\n */\n private extractFromTypeAlias(\n type: Type,\n typeName: string,\n sourceFile: SourceFile,\n warnings: string[]\n ): string[] {\n const aliasedType = type.getAliasSymbol()?.getDeclaredType();\n if (!aliasedType || aliasedType === type) {\n return [];\n }\n\n return this.extractMessageTypesFromType(aliasedType, typeName, sourceFile, warnings);\n }\n\n /**\n * Extract message types from conditional type\n */\n private extractFromConditionalType(type: Type, warnings: string[]): string[] {\n warnings.push(`Conditional type detected: ${type.getText()} - extracting conservatively`);\n\n const messageTypes: string[] = [];\n const typeText = type.getText();\n const parts = typeText.split(\"?\");\n\n if (parts.length < 2) {\n return messageTypes;\n }\n\n const secondPart = parts[1];\n if (!secondPart) return messageTypes;\n\n const branches = secondPart.split(\":\");\n for (const branch of branches) {\n const extracted = this.extractStringLiteralFromBranch(branch);\n if (extracted) {\n messageTypes.push(extracted);\n }\n }\n\n return messageTypes;\n }\n\n /**\n * Extract string literal from conditional branch\n */\n private extractStringLiteralFromBranch(branch: string): string | null {\n const trimmed = branch.trim();\n const match = trimmed.match(/^[\"'](\\w+)[\"']$/);\n return match?.[1] ?? null;\n }\n\n /**\n * Extract message types from mapped type\n */\n private extractFromMappedType(type: Type, sourceFile: SourceFile, warnings: string[]): string[] {\n warnings.push(`Mapped type detected: ${type.getText()} - attempting to extract keys`);\n\n const match = type.getText().match(/\\[K in ([^\\]]+)\\]/);\n if (!match?.[1]) {\n return [];\n }\n\n const keyTypeName = match[1].trim();\n const keyTypeAlias = sourceFile.getTypeAlias?.(keyTypeName);\n\n if (!keyTypeAlias) {\n return [];\n }\n\n const keyType = keyTypeAlias.getType();\n return this.extractMessageTypesFromType(keyType, keyTypeName, sourceFile, warnings);\n }\n\n /**\n * Warn about template literal types\n */\n private warnTemplateLiteral(type: Type, warnings: string[]): void {\n warnings.push(\n `Template literal type: ${type.getText()} - this creates an unbounded set and cannot be fully extracted`\n );\n }\n\n /**\n * Convert ts-morph Type to our TypeInfo\n */\n private convertType(type: Type, name: string): TypeInfo {\n const nullable = type.isNullable();\n\n if (type.isBoolean() || type.isBooleanLiteral()) {\n return { name, kind: \"boolean\", nullable };\n }\n\n if (type.isUnion()) {\n return this.convertUnionType(type, name, nullable);\n }\n\n if (type.isString() || type.isStringLiteral()) {\n return { name, kind: \"string\", nullable };\n }\n\n if (type.isNumber() || type.isNumberLiteral()) {\n return { name, kind: \"number\", nullable };\n }\n\n if (type.isArray()) {\n return this.convertArrayType(type, name, nullable);\n }\n\n const collectionType = this.tryConvertCollectionType(type, name, nullable);\n if (collectionType) {\n return collectionType;\n }\n\n if (type.isObject()) {\n return this.convertObjectType(type, name, nullable);\n }\n\n if (type.isNull()) {\n return { name, kind: \"null\", nullable: true };\n }\n\n return { name, kind: \"unknown\", nullable };\n }\n\n /**\n * Convert union type to TypeInfo\n */\n private convertUnionType(type: Type, name: string, nullable: boolean): TypeInfo {\n const unionTypes = type.getUnionTypes();\n\n // Check for string literal union (enum)\n const allStringLiterals = unionTypes.every((t) => t.isStringLiteral());\n if (allStringLiterals) {\n const enumValues = unionTypes.map((t) => t.getLiteralValue() as unknown as string);\n return { name, kind: \"enum\", nullable, enumValues };\n }\n\n // Check for nullable type (T | null | undefined)\n const nonNullTypes = unionTypes.filter((t) => !t.isNull() && !t.isUndefined());\n\n if (nonNullTypes.length === 1) {\n const firstType = nonNullTypes[0];\n if (firstType) {\n const baseType = this.convertType(firstType, name);\n return { ...baseType, nullable: true };\n }\n }\n\n // Generic union\n return {\n name,\n kind: \"union\",\n nullable,\n unionTypes: unionTypes.map((t, i) => this.convertType(t, `${name}_${i}`)),\n };\n }\n\n /**\n * Convert array type to TypeInfo\n */\n private convertArrayType(type: Type, name: string, nullable: boolean): TypeInfo {\n const elementType = type.getArrayElementType();\n return {\n name,\n kind: \"array\",\n nullable,\n elementType: elementType\n ? this.convertType(elementType, `${name}_element`)\n : { name: \"unknown\", kind: \"unknown\", nullable: false },\n };\n }\n\n /**\n * Try to convert Map or Set type to TypeInfo\n */\n private tryConvertCollectionType(type: Type, name: string, nullable: boolean): TypeInfo | null {\n const symbol = type.getSymbol();\n if (!symbol) return null;\n\n const symbolName = symbol.getName();\n\n if (symbolName === \"Map\") {\n const typeArgs = type.getTypeArguments();\n return {\n name,\n kind: \"map\",\n nullable,\n valueType: typeArgs?.[1] ? this.convertType(typeArgs[1], `${name}_value`) : undefined,\n };\n }\n\n if (symbolName === \"Set\") {\n const typeArgs = type.getTypeArguments();\n return {\n name,\n kind: \"set\",\n nullable,\n elementType: typeArgs?.[0] ? this.convertType(typeArgs[0], `${name}_element`) : undefined,\n };\n }\n\n return null;\n }\n\n /**\n * Convert object type to TypeInfo\n */\n private convertObjectType(type: Type, name: string, nullable: boolean): TypeInfo {\n const properties: Record<string, TypeInfo> = {};\n const sourceFile = this.project.getSourceFiles()[0];\n\n if (sourceFile) {\n for (const prop of type.getProperties()) {\n const propName = prop.getName();\n const propType = prop.getTypeAtLocation(sourceFile);\n properties[propName] = this.convertType(propType, propName);\n }\n }\n\n return { name, kind: \"object\", nullable, properties };\n }\n\n /**\n * Analyze fields and determine confidence/bounds\n */\n private analyzeFields(stateType: TypeInfo, prefix = \"\"): FieldAnalysis[] {\n const fields: FieldAnalysis[] = [];\n\n if (stateType.kind === \"object\" && stateType.properties) {\n for (const [key, propType] of Object.entries(stateType.properties)) {\n const path = prefix ? `${prefix}.${key}` : key;\n\n // Recursively analyze nested objects (but not Map/Set - they're leaf nodes)\n if (propType.kind === \"object\") {\n // Don't add intermediate objects as fields, just recurse into them\n fields.push(...this.analyzeFields(propType, path));\n } else {\n // This is a leaf field (or Map/Set), add it for configuration\n const analysis = this.analyzeField(path, propType);\n fields.push(analysis);\n }\n }\n }\n\n return fields;\n }\n\n /**\n * Analyze a single field and determine configuration needs\n */\n private analyzeField(path: string, type: TypeInfo): FieldAnalysis {\n const analysis: FieldAnalysis = {\n path,\n type,\n confidence: \"low\",\n evidence: [],\n suggestions: [],\n bounds: {},\n };\n\n if (type.kind === \"boolean\") return this.analyzeBooleanField(analysis);\n if (type.kind === \"enum\") return this.analyzeEnumField(analysis, type);\n if (type.kind === \"array\") return this.analyzeArrayField(analysis);\n if (type.kind === \"number\") return this.analyzeNumberField(analysis);\n if (type.kind === \"string\") return this.analyzeStringField(analysis);\n if (type.kind === \"map\" || type.kind === \"set\") return this.analyzeMapSetField(analysis);\n\n return analysis;\n }\n\n private analyzeBooleanField(analysis: FieldAnalysis): FieldAnalysis {\n analysis.confidence = \"high\";\n analysis.evidence.push(\"Boolean type - auto-configured\");\n return analysis;\n }\n\n private analyzeEnumField(analysis: FieldAnalysis, type: TypeInfo): FieldAnalysis {\n if (type.enumValues) {\n analysis.confidence = \"high\";\n analysis.evidence.push(`Enum with ${type.enumValues.length} values`);\n if (analysis.bounds) {\n analysis.bounds.values = type.enumValues;\n }\n }\n return analysis;\n }\n\n private analyzeArrayField(analysis: FieldAnalysis): FieldAnalysis {\n analysis.confidence = \"low\";\n analysis.suggestions.push(\"Choose maxLength: 5 (fast), 10 (balanced), or 20 (thorough)\");\n if (analysis.bounds) {\n analysis.bounds.maxLength = undefined;\n }\n\n const foundBound = this.findArrayBound();\n if (foundBound && analysis.bounds) {\n analysis.confidence = \"medium\";\n analysis.evidence.push(`Found array check: ${foundBound.evidence}`);\n analysis.bounds.maxLength = foundBound.value;\n }\n\n return analysis;\n }\n\n private analyzeNumberField(analysis: FieldAnalysis): FieldAnalysis {\n analysis.confidence = \"low\";\n analysis.suggestions.push(\"Provide min and max values based on your application logic\");\n if (analysis.bounds) {\n analysis.bounds.min = undefined;\n analysis.bounds.max = undefined;\n }\n\n const foundBound = this.findNumberBound();\n if (foundBound && analysis.bounds) {\n analysis.confidence = \"high\";\n analysis.evidence.push(`Found comparison: ${foundBound.evidence}`);\n analysis.bounds = { ...analysis.bounds, ...foundBound.bounds };\n }\n\n return analysis;\n }\n\n private analyzeStringField(analysis: FieldAnalysis): FieldAnalysis {\n analysis.confidence = \"low\";\n analysis.suggestions.push(\n 'Provide 2-3 example values: [\"value1\", \"value2\", \"value3\"]',\n \"Or use { abstract: true } for symbolic verification\"\n );\n if (analysis.bounds) {\n analysis.bounds.values = undefined;\n }\n return analysis;\n }\n\n private analyzeMapSetField(analysis: FieldAnalysis): FieldAnalysis {\n analysis.confidence = \"low\";\n analysis.suggestions.push(\"Provide maxSize (recommended: 3-5)\");\n if (analysis.bounds) {\n analysis.bounds.maxSize = undefined;\n }\n return analysis;\n }\n\n /**\n * Try to find array bounds by searching for length checks\n */\n private findArrayBound(): { value: number; evidence: string } | null {\n // TODO: Search source code for patterns like:\n // - if (array.length < N)\n // - array.slice(0, N)\n // This would require analyzing the actual usage in code\n return null;\n }\n\n /**\n * Try to find number bounds by searching for comparisons\n */\n private findNumberBound(): { bounds: { min?: number; max?: number }; evidence: string } | null {\n // TODO: Search source code for patterns like:\n // - if (counter < 100)\n // - if (value >= 0 && value <= 100)\n // This would require analyzing the actual usage in code\n return null;\n }\n}\n\nexport async function analyzeCodebase(options: {\n tsConfigPath: string;\n stateFilePath?: string;\n}): Promise<CodebaseAnalysis> {\n const extractor = new TypeExtractor(options.tsConfigPath);\n return extractor.analyzeCodebase(options.stateFilePath);\n}\n",
|
|
29
|
-
"// Handler extraction from TypeScript code\n// Extracts message handlers and their state mutations\n//\n// STATE ASSIGNMENT EXTRACTION - SUPPORTED PATTERNS\n//\n// The following patterns are extracted and converted to TLA+ state transitions:\n//\n// OBJECTS:\n// ✓ state.field = value → direct assignment\n// ✓ signal.value.field = value → signal nested field\n// ✓ signal.value = { field: value } → object literal\n// ✓ signal.value = { ...signal.value, f } → spread update (extracts changed fields)\n//\n// ARRAYS:\n// ✓ [...arr, item] → Append(@, payload)\n// ✓ [item, ...arr] → <<payload>> \\o @\n// ✓ arr.filter(...) → SelectSeq(@, LAMBDA t: TRUE)\n// ✓ arr.map(...) → [i \\in DOMAIN @ |-> @[i]]\n// ✓ arr.slice(...) → SubSeq(@, 1, Len(@))\n// ✓ arr.concat(...) → @ \\o <<payload>>\n// ✓ arr.reverse() → [i \\in DOMAIN @ |-> @[Len(@) - i + 1]]\n//\n// SETS:\n// ✓ new Set([...set, item]) → @ \\union {payload}\n// ✓ new Set([...set].filter(...)) → @ \\ {payload}\n// ✓ new Set() → {}\n//\n// MAPS:\n// ✓ new Map([...map, [k, v]]) → [@ EXCEPT ![payload.key] = payload.value]\n// ✓ new Map([...map].filter(...)) → [k \\in DOMAIN @ \\ {payload.key} |-> @[k]]\n// ✓ new Map() → <<>>\n//\n// UNSUPPORTED PATTERNS (will emit warnings)\n//\n// MUTATING METHODS (modify in place, don't return new value):\n// ✗ arr.push(), arr.pop(), arr.shift(), arr.unshift(), arr.splice()\n// ✗ arr.sort() with in-place mutation\n// ✗ set.add(), set.delete(), set.clear()\n// ✗ map.set(), map.delete(), map.clear()\n//\n// QUERY METHODS (return non-collection values):\n// ✗ arr.find(), arr.findIndex(), arr.reduce()\n// ✗ arr.some(), arr.every(), arr.includes(), arr.indexOf()\n// ✗ set.has(), map.has(), map.get()\n//\n// COMPLEX EXPRESSIONS:\n// ✗ Ternary expressions in assignments\n// ✗ Function calls as values (except supported collection methods)\n// ✗ Computed property names\n// ✗ Dynamic field names\n// ✗ Nested object updates beyond first level\n// ✗ Object.assign(), Object.keys(), Object.values(), Object.entries()\n//\n// To request support for additional patterns, please open an issue at:\n// https://github.com/anthropics/polly/issues\n\nimport {\n type ArrowFunction,\n type BinaryExpression,\n type CallExpression,\n type FunctionDeclaration,\n type FunctionExpression,\n type Identifier,\n type IfStatement,\n Node,\n type ObjectLiteralExpression,\n Project,\n type PropertyAccessExpression,\n type SourceFile,\n type Statement,\n type SwitchStatement,\n SyntaxKind,\n type VariableDeclaration,\n VariableDeclarationKind,\n} from \"ts-morph\";\nimport type {\n ComponentRelationship,\n GlobalStateConstraint,\n MeshOrPeerSignalInfo,\n MessageHandler,\n OffSurfaceMutation,\n ResourceInfo,\n StateAssignment,\n StateConstraint,\n VerificationCondition,\n VerifiedStateInfo,\n} from \"../types\";\nimport { RelationshipExtractor } from \"./relationships\";\n\nexport interface ExtractionWarning {\n type: \"unsupported_pattern\";\n pattern: string;\n location: string;\n suggestion: string;\n}\n\nexport interface HandlerAnalysis {\n handlers: MessageHandler[];\n messageTypes: Set<string>;\n stateConstraints: StateConstraint[];\n globalStateConstraints: GlobalStateConstraint[];\n verifiedStates: VerifiedStateInfo[];\n meshOrPeerSignals: MeshOrPeerSignalInfo[];\n resources: ResourceInfo[];\n offSurfaceMutations: OffSurfaceMutation[];\n warnings: ExtractionWarning[];\n}\n\nexport class HandlerExtractor {\n private project: Project;\n private typeGuardCache: WeakMap<SourceFile, Map<string, string>>;\n private relationshipExtractor: RelationshipExtractor;\n private analyzedFiles: Set<string>; // Track files we've already analyzed\n private packageRoot: string; // Package directory (contains package.json)\n private warnings: ExtractionWarning[]; // Warnings for unsupported patterns\n private currentFunctionParams: string[] = []; // Current handler's parameter names\n private contextOverrides: Map<string, string>; // path prefix → context name\n // polly#163: source spans of every function body the extractor modelled as a\n // handler. A verified-state write outside all of these is \"off-surface\".\n private onSurfaceSpans: Array<{ file: string; start: number; end: number }> = [];\n\n constructor(tsConfigPath: string, contextOverrides?: Map<string, string>) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n this.typeGuardCache = new WeakMap();\n this.relationshipExtractor = new RelationshipExtractor();\n this.analyzedFiles = new Set<string>();\n this.warnings = [];\n this.contextOverrides = contextOverrides || new Map();\n // Find package root by looking for package.json from tsconfig location\n this.packageRoot = this.findPackageRoot(tsConfigPath);\n }\n\n /**\n * Emit a warning for an unsupported pattern\n */\n private warnUnsupportedPattern(pattern: string, location: string, suggestion: string): void {\n // Deduplicate warnings by pattern + location\n const exists = this.warnings.some((w) => w.pattern === pattern && w.location === location);\n if (!exists) {\n this.warnings.push({\n type: \"unsupported_pattern\",\n pattern,\n location,\n suggestion,\n });\n }\n }\n\n /**\n * Extract parameter names from a function\n */\n private extractParameterNames(\n func: ArrowFunction | FunctionExpression | FunctionDeclaration\n ): string[] {\n return func.getParameters().map((p) => p.getName());\n }\n\n /**\n * Get a location string for a node\n */\n private getNodeLocation(node: Node): string {\n const sourceFile = node.getSourceFile();\n const lineAndCol = sourceFile.getLineAndColumnAtPos(node.getStart());\n const filePath = sourceFile.getFilePath();\n const relativePath = filePath.startsWith(this.packageRoot)\n ? filePath.substring(this.packageRoot.length + 1)\n : filePath;\n return `${relativePath}:${lineAndCol.line}`;\n }\n\n /**\n * Find the nearest package.json directory from tsconfig location\n * This defines the package boundary - we only analyze files within this package\n */\n private findPackageRoot(tsConfigPath: string): string {\n let dir = tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n // Walk up until we find package.json\n while (dir.length > 1) {\n try {\n const packageJsonPath = `${dir}/package.json`;\n const file = Bun.file(packageJsonPath);\n if (file.size > 0) {\n // Found package.json\n return dir;\n }\n } catch {\n // Keep looking\n }\n const parentDir = dir.substring(0, dir.lastIndexOf(\"/\"));\n if (parentDir === dir) break; // Reached root\n dir = parentDir;\n }\n // Fallback: use tsconfig directory\n return tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n }\n\n /**\n * Extract all message handlers from the codebase\n *\n * Uses transitive import following to discover all reachable code:\n * 1. Start with source files from tsconfig that are within the package\n * 2. Follow imports recursively (within package boundary)\n * 3. Cache analyzed files to avoid re-processing\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Handler extraction requires analyzing multiple patterns and file boundaries\n extractHandlers(): HandlerAnalysis {\n const handlers: MessageHandler[] = [];\n const messageTypes = new Set<string>();\n const invalidMessageTypes = new Set<string>();\n const stateConstraints: StateConstraint[] = [];\n const globalStateConstraints: GlobalStateConstraint[] = [];\n const verifiedStates: VerifiedStateInfo[] = [];\n const meshOrPeerSignals: MeshOrPeerSignalInfo[] = [];\n const resources: ResourceInfo[] = [];\n this.warnings = []; // Clear warnings from previous runs\n this.onSurfaceSpans = []; // polly#163: reset modelled-handler spans\n\n // Find all source files from tsconfig as potential entry points\n const allSourceFiles = this.project.getSourceFiles();\n // Filter to only files within the package boundary\n const entryPoints = allSourceFiles.filter((f) => this.isWithinPackage(f.getFilePath()));\n\n this.debugLogSourceFiles(allSourceFiles, entryPoints);\n\n // Analyze each entry point and follow its imports transitively\n for (const entryPoint of entryPoints) {\n this.analyzeFileAndImports(\n entryPoint,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints,\n globalStateConstraints,\n verifiedStates,\n resources\n );\n }\n\n // Issue #27: Second pass - find functions that modify verified states\n if (verifiedStates.length > 0) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found ${verifiedStates.length} verified state(s), scanning for mutating functions...`\n );\n }\n\n for (const filePath of this.analyzedFiles) {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n\n const mutatingHandlers = this.findStateMutatingFunctions(sourceFile, verifiedStates);\n\n for (const handler of mutatingHandlers) {\n // Avoid duplicates - check if handler already exists for this message type\n const exists = handlers.some(\n (h) =>\n h.messageType === handler.messageType && h.location.file === handler.location.file\n );\n\n if (!exists) {\n handlers.push(handler);\n if (this.canRepresentAsTLAAction(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n }\n }\n\n // polly#117: collect mesh- and peer-scoped signal declarations so\n // the CLI can warn when a requires/ensures predicate references\n // one — the verifier currently has no native support for their\n // cross-peer semantics.\n for (const filePath of this.analyzedFiles) {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n meshOrPeerSignals.push(...this.extractMeshOrPeerSignalsFromFile(sourceFile));\n }\n\n // polly#163: third pass — find state-signal writes that fall outside every\n // function body the handler extraction above modelled (the non-dispatched\n // `register()` shape #160). Runs last so all on-surface spans are recorded.\n //\n // Scope is the whole state-signal family (config-free), not just\n // `{ verify: true }` declarations — dispatch handlers already pick up any\n // `signal.value` write by pattern, so the off-surface scan must too. The\n // verify layer (which has the config) separates declared fields from the\n // rest.\n const stateSignalNames = new Set<string>();\n for (const filePath of this.analyzedFiles) {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n for (const name of this.extractStateSignalVariableNames(sourceFile)) {\n stateSignalNames.add(name);\n }\n }\n for (const v of verifiedStates) stateSignalNames.add(v.variableName);\n for (const m of meshOrPeerSignals) stateSignalNames.add(m.variableName);\n\n const offSurfaceMutations: OffSurfaceMutation[] = [];\n if (stateSignalNames.size > 0) {\n for (const filePath of this.analyzedFiles) {\n // Test/spec/feature files seed verified state directly by design; that\n // is not a model gap, so the off-surface scan only covers app source.\n if (!this.isOffSurfaceScannable(filePath)) continue;\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n offSurfaceMutations.push(...this.findOffSurfaceMutations(sourceFile, stateSignalNames));\n }\n }\n\n this.debugLogExtractionResults(handlers.length, invalidMessageTypes.size);\n this.debugLogAnalysisStats(allSourceFiles.length, entryPoints.length);\n\n return {\n handlers,\n messageTypes,\n stateConstraints,\n globalStateConstraints,\n verifiedStates,\n meshOrPeerSignals,\n resources,\n offSurfaceMutations,\n warnings: this.warnings,\n };\n }\n\n /**\n * Walk a source file for `$meshState(id, init)` and `$peerState(id, init)`\n * calls and return one entry per call, tagged with its scope.\n */\n extractMeshOrPeerSignalsFromFile(sourceFile: SourceFile): MeshOrPeerSignalInfo[] {\n const out: MeshOrPeerSignalInfo[] = [];\n const filePath = sourceFile.getFilePath();\n sourceFile.forEachDescendant((node) => {\n const info = this.recognizeMeshOrPeerStateCall(node, filePath);\n if (info) out.push(info);\n });\n return out;\n }\n\n /**\n * Recognize a `$meshState(...)` or `$peerState(...)` call and return\n * a descriptor for the resulting signal. Mirrors\n * `recognizeVerifiedStateCall` but for the mesh/peer family.\n */\n private recognizeMeshOrPeerStateCall(node: Node, filePath: string): MeshOrPeerSignalInfo | null {\n if (!Node.isCallExpression(node)) return null;\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) return null;\n\n const funcName = expression.getText();\n const kind: \"mesh\" | \"peer\" | null =\n funcName === \"$meshState\" ? \"mesh\" : funcName === \"$peerState\" ? \"peer\" : null;\n if (!kind) return null;\n\n const args = node.getArguments();\n const keyArg = args[0];\n if (!keyArg || !Node.isStringLiteral(keyArg)) return null;\n const key = keyArg.getLiteralValue();\n\n const variableName = this.getVariableNameFromParent(node) || key;\n const access = this.extractMeshAccess(args[2]);\n\n return {\n kind,\n key,\n variableName,\n filePath,\n line: node.getStartLineNumber(),\n ...(access ? { access } : {}),\n };\n }\n\n /**\n * polly#114: pull the read/write predicate source text out of a\n * `$meshState` / `$peerState` declaration's `access` option. The\n * runtime access set cannot be resolved statically; the predicate\n * expression that gates it can, and is what the visualiser labels.\n */\n private extractMeshAccess(\n optionsArg: Node | undefined\n ): { read: string; write: string } | undefined {\n if (!optionsArg || !Node.isObjectLiteralExpression(optionsArg)) return undefined;\n const accessProp = optionsArg.getProperty(\"access\");\n if (!accessProp || !Node.isPropertyAssignment(accessProp)) return undefined;\n const accessObj = accessProp.getInitializer();\n if (!accessObj || !Node.isObjectLiteralExpression(accessObj)) return undefined;\n\n const predicateText = (name: string): string | undefined => {\n const prop = accessObj.getProperty(name);\n if (!prop || !Node.isPropertyAssignment(prop)) return undefined;\n return prop.getInitializer()?.getText().replace(/\\s+/g, \" \").trim();\n };\n const read = predicateText(\"read\");\n const write = predicateText(\"write\");\n if (read === undefined && write === undefined) return undefined;\n return { read: read ?? \"unset\", write: write ?? \"unset\" };\n }\n\n /**\n * Analyze a file and recursively follow its imports\n *\n * This implements the Knip pattern: follow imports transitively\n * to discover all reachable code, including files outside src/\n * that are imported from analyzed files.\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Import following requires conditional logic for package boundaries, caching, and recursion\n private analyzeFileAndImports(\n sourceFile: SourceFile,\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>,\n stateConstraints: StateConstraint[],\n globalStateConstraints: GlobalStateConstraint[],\n verifiedStates: VerifiedStateInfo[],\n resources: ResourceInfo[]\n ): void {\n const filePath = sourceFile.getFilePath();\n\n // Skip if already analyzed\n if (this.analyzedFiles.has(filePath)) {\n return;\n }\n\n // Mark as analyzed\n this.analyzedFiles.add(filePath);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Analyzing: ${filePath}`);\n }\n\n // Extract handlers from this file\n const fileHandlers = this.extractFromFile(sourceFile);\n handlers.push(...fileHandlers);\n this.categorizeHandlerMessageTypes(fileHandlers, messageTypes, invalidMessageTypes);\n\n // Extract state constraints from this file\n const fileConstraints = this.extractStateConstraintsFromFile(sourceFile);\n stateConstraints.push(...fileConstraints);\n\n // Extract global state constraints (stateConstraint() calls)\n const fileGlobalConstraints = this.extractGlobalStateConstraintsFromFile(sourceFile);\n globalStateConstraints.push(...fileGlobalConstraints);\n\n // Issue #27: Extract verified states from this file\n const fileVerifiedStates = this.extractVerifiedStatesFromFile(sourceFile);\n verifiedStates.push(...fileVerifiedStates);\n\n // Extract $resource() calls and emit synthetic handlers\n const fileResources = this.extractResourcesFromFile(sourceFile, filePath);\n for (const resource of fileResources) {\n resources.push(resource);\n const context = this.inferContext(filePath);\n const syntheticHandlers = this.createResourceHandlers(resource, context);\n for (const handler of syntheticHandlers) {\n handlers.push(handler);\n if (this.canRepresentAsTLAAction(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n\n // Follow imports to discover more files (within package boundary only)\n const importDeclarations = sourceFile.getImportDeclarations();\n for (const importDecl of importDeclarations) {\n const importedFile = importDecl.getModuleSpecifierSourceFile();\n\n if (importedFile) {\n const importedPath = importedFile.getFilePath();\n\n // Only follow imports within the same package\n // This excludes:\n // - node_modules (other packages)\n // - Framework code in monorepo parent (other packages)\n // But includes:\n // - All files in this package (src/, specs/, tests/, etc.)\n if (!this.isWithinPackage(importedPath)) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Skipping external import: ${importedPath}`);\n }\n continue;\n }\n\n // Recursively analyze imported file\n this.analyzeFileAndImports(\n importedFile,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints,\n globalStateConstraints,\n verifiedStates,\n resources\n );\n } else if (process.env[\"POLLY_DEBUG\"]) {\n // Log unresolved imports for debugging\n const specifier = importDecl.getModuleSpecifierValue();\n if (!specifier.startsWith(\"node:\") && !this.isNodeModuleImport(specifier)) {\n console.log(`[DEBUG] Could not resolve import: ${specifier} in ${filePath}`);\n }\n }\n }\n }\n\n /**\n * Check if a file path is within the package boundary\n */\n private isWithinPackage(filePath: string): boolean {\n // Must be under package root\n if (!filePath.startsWith(this.packageRoot)) {\n return false;\n }\n // Must not be in node_modules\n if (filePath.includes(\"/node_modules/\")) {\n return false;\n }\n return true;\n }\n\n /**\n * Check if an import specifier is a node_modules import\n */\n private isNodeModuleImport(specifier: string): boolean {\n // Relative imports start with . or ..\n // Absolute/node_modules imports don't\n return !specifier.startsWith(\".\") && !specifier.startsWith(\"/\");\n }\n\n private debugLogAnalysisStats(totalSourceFiles: number, entryPointCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Analysis Statistics:`);\n console.log(`[DEBUG] Package root: ${this.packageRoot}`);\n console.log(`[DEBUG] Source files from tsconfig: ${totalSourceFiles}`);\n console.log(`[DEBUG] Entry points (in package): ${entryPointCount}`);\n console.log(`[DEBUG] Files analyzed (including imports): ${this.analyzedFiles.size}`);\n console.log(\n `[DEBUG] Additional files discovered: ${this.analyzedFiles.size - entryPointCount}`\n );\n }\n\n private debugLogSourceFiles(allSourceFiles: SourceFile[], entryPoints: SourceFile[]): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Loaded ${allSourceFiles.length} source files from tsconfig`);\n console.log(`[DEBUG] Filtered to ${entryPoints.length} entry points within package`);\n if (entryPoints.length <= 20) {\n for (const sf of entryPoints) {\n console.log(`[DEBUG] - ${sf.getFilePath()}`);\n }\n }\n }\n\n private categorizeHandlerMessageTypes(\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>\n ): void {\n for (const handler of handlers) {\n if (this.canRepresentAsTLAAction(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n\n private debugLogExtractionResults(handlerCount: number, invalidCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Total handlers extracted: ${handlerCount}`);\n if (invalidCount > 0) {\n console.log(`[DEBUG] Filtered ${invalidCount} invalid message type(s) from handlers`);\n }\n }\n\n /**\n * Check whether a message type can be represented in the generated TLA+\n * (polly#144). Message types become quoted string literals and are sanitized\n * into `Handle…` action names, so HTTP routes (\"POST /register/options\") and\n * colon-namespaced messages (\"chat:send\") are all representable — the only\n * requirement is at least one letter to anchor the action name. Strings\n * carrying TS type-expression punctuation (`{}();<>=`) are rejected as\n * extraction artifacts rather than 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 * Extract handlers from a single source file\n */\n private extractFromFile(sourceFile: SourceFile): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n sourceFile.forEachDescendant((node) => {\n this.processNodeForHandlers(node, context, filePath, handlers);\n });\n\n return handlers;\n }\n\n /**\n * Process a single node to find handler patterns\n */\n private processNodeForHandlers(\n node: Node,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n if (Node.isCallExpression(node)) {\n this.processCallExpressionHandler(node, context, filePath, handlers);\n }\n\n if (Node.isSwitchStatement(node)) {\n const switchHandlers = this.extractSwitchCaseHandlers(node, context, filePath);\n handlers.push(...switchHandlers);\n }\n\n if (Node.isVariableDeclaration(node)) {\n const mapHandlers = this.extractHandlerMapPattern(node, context, filePath);\n handlers.push(...mapHandlers);\n }\n\n if (Node.isIfStatement(node) && !this.isElseIfStatement(node)) {\n const typeGuardHandlers = this.extractTypeGuardHandlers(node, context, filePath);\n handlers.push(...typeGuardHandlers);\n }\n }\n\n /**\n * Process call expression to find .on() or .addEventListener() handlers\n */\n private processCallExpressionHandler(\n node: CallExpression,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n const expression = node.getExpression();\n\n if (Node.isPropertyAccessExpression(expression)) {\n const methodName = expression.getName();\n\n if (methodName === \"on\" || methodName === \"addEventListener\") {\n const handler = this.extractHandler(node, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n\n if (methodName === \"ws\") {\n this.extractElysiaWsHandlers(node, context, filePath, handlers);\n }\n\n // REST route handlers\n if (this.isRestMethod(methodName) && this.isWebFrameworkFile(node.getSourceFile())) {\n const restHandler = this.extractRestHandler(node, methodName, context, filePath);\n if (restHandler) {\n handlers.push(restHandler);\n }\n }\n }\n }\n\n /**\n * Check if a method name is a REST HTTP method\n */\n private isRestMethod(name: string): boolean {\n return [\"get\", \"post\", \"put\", \"delete\", \"patch\"].includes(name);\n }\n\n /**\n * Check if a node is an else-if statement\n */\n private isElseIfStatement(node: Node): boolean {\n const parent = node.getParent();\n return parent !== undefined && Node.isIfStatement(parent);\n }\n\n /**\n * Extract handler details from a .on() call expression\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: handler extraction requires branching logic\n private extractHandler(\n callExpr: CallExpression,\n context: string,\n filePath: string\n ): MessageHandler | null {\n const args = callExpr.getArguments();\n\n if (args.length < 2) {\n return null;\n }\n\n // First argument should be the message type (string literal)\n const messageTypeArg = args[0];\n let messageType: string | null = null;\n\n if (Node.isStringLiteral(messageTypeArg)) {\n messageType = messageTypeArg.getLiteralValue();\n } else if (Node.isTemplateExpression(messageTypeArg)) {\n // Handle template literals if needed\n messageType = messageTypeArg.getText().replace(/[`'\"]/g, \"\");\n }\n\n if (!messageType) {\n return null;\n }\n\n // Second argument is the handler function\n const handlerArg = args[1];\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Parse the handler function for state assignments and verification conditions\n let actualHandler: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n actualHandler = handlerArg;\n } else if (Node.isIdentifier(handlerArg)) {\n // Resolve function reference (e.g., bus.on('query', handleQuery))\n actualHandler = this.resolveFunctionReference(handlerArg);\n }\n\n let parameters: string[] | undefined;\n\n if (actualHandler) {\n this.currentFunctionParams = this.extractParameterNames(actualHandler);\n parameters =\n this.currentFunctionParams.length > 0 ? [...this.currentFunctionParams] : undefined;\n this.extractAssignments(actualHandler, assignments);\n this.extractVerificationConditions(actualHandler, preconditions, postconditions);\n\n // Check for async mutations (potential race conditions)\n if (Node.isArrowFunction(actualHandler) || Node.isFunctionExpression(actualHandler)) {\n this.checkAsyncMutations(actualHandler, messageType);\n }\n this.currentFunctionParams = [];\n }\n\n const line = callExpr.getStartLineNumber();\n\n // Extract relationships from handler code\n const sourceFile = callExpr.getSourceFile();\n const handlerName = `${messageType}_handler`;\n let relationships: ComponentRelationship[] | undefined;\n\n if (actualHandler) {\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n actualHandler,\n sourceFile,\n handlerName\n );\n if (detectedRelationships.length > 0) {\n relationships = detectedRelationships;\n }\n }\n\n return {\n messageType,\n node: context, // Renamed from 'context' to 'node' for generalization\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line,\n },\n relationships,\n origin: \"event\" as const,\n parameters,\n };\n }\n\n /**\n * Extract handlers from Elysia .ws() call\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: WebSocket handler extraction requires analyzing multiple callback patterns\n private extractElysiaWsHandlers(\n node: CallExpression,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n const args = node.getArguments();\n if (args.length < 2) return;\n\n // First arg is the route path (string)\n const routeArg = args[0];\n if (!routeArg || !Node.isStringLiteral(routeArg)) return;\n const routePath = routeArg.getLiteralValue();\n\n // Second arg is the config object\n const configArg = args[1];\n if (!configArg || !Node.isObjectLiteralExpression(configArg)) return;\n\n // Look for message, open, close callbacks\n const callbacks = [\"message\", \"open\", \"close\"];\n for (const cbName of callbacks) {\n const prop = configArg.getProperty(cbName);\n if (!prop) continue;\n\n let funcBody: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isMethodDeclaration(prop)) {\n // Method shorthand: message(ws, data) { ... }\n // Use the method body directly for analysis\n funcBody = prop as unknown as FunctionDeclaration;\n } else if (Node.isPropertyAssignment(prop)) {\n const init = prop.getInitializer();\n if (init && (Node.isArrowFunction(init) || Node.isFunctionExpression(init))) {\n funcBody = init;\n }\n }\n\n if (!funcBody) continue;\n\n if (cbName === \"message\") {\n // Walk body for type guard handlers and switch statements\n const body = funcBody.getBody();\n if (!body) continue;\n\n const subHandlers = this.extractSubHandlersFromBody(body, context, filePath);\n\n if (subHandlers.length > 0) {\n handlers.push(...subHandlers);\n } else {\n // No sub-handlers found, register as a generic ws message handler\n handlers.push(\n this.buildWsHandler(\n `ws_message`,\n routePath,\n context,\n filePath,\n funcBody,\n node.getStartLineNumber()\n )\n );\n }\n } else {\n // open/close lifecycle handlers\n handlers.push(\n this.buildWsHandler(\n `ws_${cbName}`,\n routePath,\n context,\n filePath,\n funcBody,\n node.getStartLineNumber()\n )\n );\n }\n }\n }\n\n /**\n * Extract sub-handlers (type guards and switch cases) from a function body\n */\n private extractSubHandlersFromBody(\n body: Node,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const subHandlers: MessageHandler[] = [];\n\n body.forEachDescendant((child) => {\n if (Node.isIfStatement(child) && !this.isElseIfStatement(child)) {\n const typeGuardHandlers = this.extractTypeGuardHandlers(child, context, filePath);\n subHandlers.push(...typeGuardHandlers);\n }\n if (Node.isSwitchStatement(child)) {\n const switchHandlers = this.extractSwitchCaseHandlers(child, context, filePath);\n subHandlers.push(...switchHandlers);\n }\n });\n\n return subHandlers;\n }\n\n /**\n * Build a WebSocket handler entry\n */\n private buildWsHandler(\n messageType: string,\n _routePath: string,\n context: string,\n filePath: string,\n funcBody: ArrowFunction | FunctionExpression | FunctionDeclaration,\n line: number\n ): MessageHandler {\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n this.currentFunctionParams = this.extractParameterNames(funcBody);\n this.extractAssignments(funcBody, assignments);\n this.extractVerificationConditions(funcBody, preconditions, postconditions);\n this.currentFunctionParams = [];\n\n return {\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: { file: filePath, line },\n origin: \"event\" as const,\n };\n }\n\n /**\n * Extract a REST route handler (.get/.post/.put/.delete/.patch)\n */\n private extractRestHandler(\n node: CallExpression,\n methodName: string,\n context: string,\n filePath: string\n ): MessageHandler | null {\n const args = node.getArguments();\n if (args.length < 2) return null;\n\n // First arg must be a string literal route path\n const routeArg = args[0];\n if (!routeArg || !Node.isStringLiteral(routeArg)) return null;\n const routePath = routeArg.getLiteralValue();\n\n const httpMethod = methodName.toUpperCase();\n const messageType = `${httpMethod} ${routePath}`;\n\n // Second arg is the handler function\n const handlerArg = args[1];\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n let actualHandler: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n actualHandler = handlerArg;\n } else if (Node.isIdentifier(handlerArg)) {\n actualHandler = this.resolveFunctionReference(handlerArg);\n }\n\n let parameters: string[] | undefined;\n\n if (actualHandler) {\n this.currentFunctionParams = this.extractParameterNames(actualHandler);\n parameters =\n this.currentFunctionParams.length > 0 ? [...this.currentFunctionParams] : undefined;\n this.extractAssignments(actualHandler, assignments);\n this.extractVerificationConditions(actualHandler, preconditions, postconditions);\n this.currentFunctionParams = [];\n }\n\n return {\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: node.getStartLineNumber(),\n },\n origin: \"event\" as const,\n parameters,\n handlerKind: \"rest\",\n httpMethod,\n routePath,\n };\n }\n\n /**\n * Check if a source file imports from a known web framework\n */\n private isWebFrameworkFile(sourceFile: SourceFile): boolean {\n const frameworks = [\"elysia\", \"express\", \"hono\", \"fastify\", \"koa\", \"@elysiajs/eden\"];\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const specifier = importDecl.getModuleSpecifierValue();\n if (frameworks.some((fw) => specifier === fw || specifier.startsWith(`${fw}/`))) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Extract state assignments from a handler function\n * Handles:\n * - Simple assignments: state.field = value\n * - Compound operators: state.count += 1\n * - Unary operators: state.count++, state.count--, ++state.count, --state.count\n * - Array mutations: state.items.push(item)\n * - Array indexing: state.items[0] = value\n */\n private extractAssignments(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\n assignments: StateAssignment[]\n ): void {\n // polly#163: this body is part of the modelled handler surface. Any\n // verified-state write inside its span is \"on-surface\" and must not be\n // re-reported as an escaped mutator.\n this.recordOnSurfaceSpan(funcNode);\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.extractBinaryExpressionAssignment(node, assignments);\n }\n\n if (Node.isCallExpression(node)) {\n this.extractArrayMutationAssignment(node, assignments);\n }\n\n if (Node.isPostfixUnaryExpression(node) || Node.isPrefixUnaryExpression(node)) {\n this.extractUnaryExpressionAssignment(node, assignments);\n }\n });\n }\n\n /**\n * Extract assignments from binary expressions (=, +=, -=, etc.)\n */\n private extractBinaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n\n if (operator === \"=\") {\n this.extractSimpleOrElementAccessAssignment(node, assignments);\n } else if ([\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) {\n this.extractCompoundAssignment(node, assignments);\n }\n }\n\n /**\n * Extract simple or element access assignments (state.field = value or state.items[0] = value)\n */\n private extractSimpleOrElementAccessAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n this.extractPropertyAccessAssignment(left, right, assignments);\n } else if (Node.isElementAccessExpression(left)) {\n this.extractElementAccessAssignment(left, right, assignments);\n }\n }\n\n /**\n * Extract property access assignment (state.field = value or someState.value.field = value)\n */\n private extractPropertyAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const fieldPath = this.getPropertyPath(left);\n\n // Try each pattern in order\n if (this.tryExtractStateFieldPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalNestedFieldPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalObjectPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalArrayPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalMethodPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSetConstructorPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractMapConstructorPattern(fieldPath, right, assignments)) return;\n this.tryExtractSignalDirectValuePattern(fieldPath, right, assignments);\n }\n\n /** Pattern 1: state.field = value */\n private tryExtractStateFieldPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.startsWith(\"state.\")) return false;\n const field = fieldPath.substring(6);\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field, value });\n }\n return true;\n }\n\n /** Pattern 2: someState.value.field = value (signal pattern with nested field) */\n private tryExtractSignalNestedFieldPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n const valueFieldMatch = fieldPath.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\\.value\\.(.+)$/);\n if (!valueFieldMatch?.[1] || !valueFieldMatch?.[2]) return false;\n const signalName = valueFieldMatch[1];\n const fieldName = valueFieldMatch[2];\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field: `${signalName}_${fieldName}`, value });\n }\n return true;\n }\n\n /** Pattern 3: someState.value = { object literal } (signal replacement or spread update) */\n private tryExtractSignalObjectPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isObjectLiteralExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n if (this.isSpreadUpdatePattern(right, fieldPath)) {\n this.extractSpreadUpdateAssignments(right, assignments, signalName);\n } else {\n this.extractObjectLiteralAssignments(right, assignments, signalName);\n }\n return true;\n }\n\n /** Check if object literal is a spread update pattern: { ...existing, field: value } */\n private isSpreadUpdatePattern(\n objectLiteral: import(\"ts-morph\").ObjectLiteralExpression,\n fieldPath: string\n ): boolean {\n const properties = objectLiteral.getProperties();\n if (properties.length === 0) return false;\n const firstProp = properties[0];\n if (!firstProp || !Node.isSpreadAssignment(firstProp)) return false;\n const spreadExpr = firstProp.getExpression();\n if (!spreadExpr) return false;\n return this.getPropertyPath(spreadExpr) === fieldPath;\n }\n\n /** Pattern 4: someState.value = [...someState.value, item] (array spread) */\n private tryExtractSignalArrayPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isArrayLiteralExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n const arrayAssignment = this.extractArraySpreadOperation(right, fieldPath, signalName);\n if (arrayAssignment) {\n assignments.push(arrayAssignment);\n }\n return true;\n }\n\n /** Pattern 5: someState.value = someState.value.filter(...) or .map(...) (array methods) */\n private tryExtractSignalMethodPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isCallExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n\n // Check for and warn about Set/Map direct method calls that mutate\n this.checkForMutatingCollectionMethods(right);\n\n const methodAssignment = this.extractArrayMethodOperation(right, fieldPath, signalName);\n if (methodAssignment) {\n assignments.push(methodAssignment);\n }\n return true;\n }\n\n /** Check for mutating Set/Map methods and emit warnings */\n private checkForMutatingCollectionMethods(callExpr: import(\"ts-morph\").CallExpression): void {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for Set mutating methods\n const setMethods = [\"add\", \"delete\", \"clear\"];\n if (setMethods.includes(methodName)) {\n // Try to determine if this is a Set operation by checking the source expression\n const sourceText = sourceExpr.getText();\n if (sourceText.includes(\"Set\") || this.looksLikeSetOrMap(sourceExpr, \"Set\")) {\n this.warnUnsupportedPattern(\n `set.${methodName}()`,\n this.getNodeLocation(callExpr),\n `Set.${methodName}() mutates in place. Use: new Set([...set, item]) for add, new Set([...set].filter(...)) for delete.`\n );\n }\n }\n\n // Check for Map mutating methods\n const mapMethods = [\"set\", \"delete\", \"clear\"];\n if (mapMethods.includes(methodName)) {\n const sourceText = sourceExpr.getText();\n if (sourceText.includes(\"Map\") || this.looksLikeSetOrMap(sourceExpr, \"Map\")) {\n this.warnUnsupportedPattern(\n `map.${methodName}()`,\n this.getNodeLocation(callExpr),\n `Map.${methodName}() mutates in place. Use: new Map([...map, [key, value]]) for set, new Map([...map].filter(...)) for delete.`\n );\n }\n }\n }\n\n /** Heuristic check if an expression might be a Set or Map */\n private looksLikeSetOrMap(expr: Node, collectionType: \"Set\" | \"Map\"): boolean {\n const text = expr.getText().toLowerCase();\n return text.includes(collectionType.toLowerCase());\n }\n\n /** Pattern 6: someState.value = new Set([...someState.value, item]) (Set operations) */\n private tryExtractSetConstructorPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isNewExpression(right)) return false;\n const constructorExpr = right.getExpression();\n if (!Node.isIdentifier(constructorExpr) || constructorExpr.getText() !== \"Set\") return false;\n\n const signalName = fieldPath.slice(0, -6);\n const setAssignment = this.extractSetOperation(right, fieldPath, signalName);\n if (setAssignment) {\n assignments.push(setAssignment);\n }\n return true;\n }\n\n /** Pattern 7: someState.value = new Map([...someState.value, [key, val]]) (Map operations) */\n private tryExtractMapConstructorPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isNewExpression(right)) return false;\n const constructorExpr = right.getExpression();\n if (!Node.isIdentifier(constructorExpr) || constructorExpr.getText() !== \"Map\") return false;\n\n const signalName = fieldPath.slice(0, -6);\n const mapAssignment = this.extractMapOperation(right, fieldPath, signalName);\n if (mapAssignment) {\n assignments.push(mapAssignment);\n }\n return true;\n }\n\n /**\n * Pattern 8: someState.value = expression (direct signal value assignment)\n * Matches signal.value = literal or signal.value = payload.xxx\n */\n private tryExtractSignalDirectValuePattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\")) return false;\n const signalName = fieldPath.slice(0, -6);\n\n // Try extracting a primitive literal\n const literalValue = this.extractValue(right);\n if (literalValue !== undefined) {\n assignments.push({ field: signalName, value: literalValue });\n return true;\n }\n\n // Try extracting payload.xxx property access\n if (Node.isPropertyAccessExpression(right)) {\n const rightPath = this.getPropertyPath(right);\n const parts = rightPath.split(\".\");\n if (\n parts.length === 2 &&\n parts[0] !== undefined &&\n parts[1] !== undefined &&\n this.currentFunctionParams.includes(parts[0])\n ) {\n assignments.push({ field: signalName, value: `param:${parts[1]}` });\n return true;\n }\n }\n\n return false;\n }\n\n /** Extract Set operations from new Set(...) constructor */\n private extractSetOperation(\n newExpr: import(\"ts-morph\").NewExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const args = newExpr.getArguments();\n\n // new Set() - clear operation\n if (args.length === 0) {\n return { field: signalName, value: \"{}\" };\n }\n\n const firstArg = args[0];\n if (!firstArg) return null;\n\n // new Set([...set.value, item]) - add operation\n if (Node.isArrayLiteralExpression(firstArg)) {\n return this.extractSetArrayOperation(firstArg, fieldPath, signalName);\n }\n\n // new Set([...set.value].filter(...)) - delete operation via method chain\n if (Node.isCallExpression(firstArg)) {\n return this.extractSetMethodChainOperation(firstArg, fieldPath, signalName);\n }\n\n return null;\n }\n\n /** Extract Set operation from array literal: new Set([...set.value, item]) */\n private extractSetArrayOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n const firstElement = elements[0];\n const lastElement = elements[elements.length - 1];\n\n // Check for add: new Set([...set.value, item])\n if (firstElement && Node.isSpreadElement(firstElement)) {\n const spreadExpr = firstElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Add operation: @ \\union {payload}\n return { field: signalName, value: \"@ \\\\union {payload}\" };\n }\n }\n\n // Check for add at beginning: new Set([item, ...set.value])\n if (lastElement && Node.isSpreadElement(lastElement)) {\n const spreadExpr = lastElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n return { field: signalName, value: \"{payload} \\\\union @\" };\n }\n }\n\n return null;\n }\n\n /** Extract Set operation from method chain: new Set([...set.value].filter(...)) */\n private extractSetMethodChainOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for [...set.value].filter(...) pattern\n if (methodName === \"filter\" && Node.isArrayLiteralExpression(sourceExpr)) {\n const elements = sourceExpr.getElements();\n if (elements.length === 1) {\n const spreadEl = elements[0];\n if (spreadEl && Node.isSpreadElement(spreadEl)) {\n const spreadExpr = spreadEl.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Delete operation: @ \\ {payload}\n return { field: signalName, value: \"@ \\\\ {payload}\" };\n }\n }\n }\n }\n\n return null;\n }\n\n /** Extract Map operations from new Map(...) constructor */\n private extractMapOperation(\n newExpr: import(\"ts-morph\").NewExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const args = newExpr.getArguments();\n\n // new Map() - clear operation\n if (args.length === 0) {\n return { field: signalName, value: \"<<>>\" }; // Empty function in TLA+\n }\n\n const firstArg = args[0];\n if (!firstArg) return null;\n\n // new Map([...map.value, [key, value]]) - set operation\n if (Node.isArrayLiteralExpression(firstArg)) {\n return this.extractMapArrayOperation(firstArg, fieldPath, signalName);\n }\n\n // new Map([...map.value].filter(...)) - delete operation via method chain\n if (Node.isCallExpression(firstArg)) {\n return this.extractMapMethodChainOperation(firstArg, fieldPath, signalName);\n }\n\n return null;\n }\n\n /** Extract Map operation from array literal: new Map([...map.value, [key, val]]) */\n private extractMapArrayOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n const firstElement = elements[0];\n\n // Check for set: new Map([...map.value, [key, value]])\n if (firstElement && Node.isSpreadElement(firstElement)) {\n const spreadExpr = firstElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Set operation: [@ EXCEPT ![payload.key] = payload.value]\n return { field: signalName, value: \"[@ EXCEPT ![payload.key] = payload.value]\" };\n }\n }\n\n return null;\n }\n\n /** Extract Map operation from method chain: new Map([...map.value].filter(...)) */\n private extractMapMethodChainOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for [...map.value].filter(...) pattern\n if (methodName === \"filter\" && Node.isArrayLiteralExpression(sourceExpr)) {\n const elements = sourceExpr.getElements();\n if (elements.length === 1) {\n const spreadEl = elements[0];\n if (spreadEl && Node.isSpreadElement(spreadEl)) {\n const spreadExpr = spreadEl.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Delete operation: restrict domain\n return { field: signalName, value: \"[k \\\\in DOMAIN @ \\\\ {payload.key} |-> @[k]]\" };\n }\n }\n }\n }\n\n return null;\n }\n\n /**\n * Extract array method operations: arr.filter(...), arr.map(...)\n */\n private extractArrayMethodOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n const sourcePath = this.getPropertyPath(sourceExpr);\n\n // Check if source matches target (e.g., todos.value = todos.value.filter(...))\n if (sourcePath !== fieldPath) return null;\n\n switch (methodName) {\n case \"filter\":\n // Non-deterministic element removal — codegen emits \\E newLen\n return { field: signalName, value: \"NDET:FILTER\" };\n\n case \"map\":\n // Non-deterministic single-element modification — codegen emits \\E mapIdx, mapVal\n return { field: signalName, value: \"NDET:MAP\" };\n\n case \"slice\":\n // Subsequence is semantically equivalent to filter in the abstract model\n return { field: signalName, value: \"NDET:FILTER\" };\n\n case \"concat\":\n // Concat appends another sequence\n return { field: signalName, value: \"@ \\\\o <<payload>>\" };\n\n case \"reverse\":\n // Reverse the sequence\n return { field: signalName, value: \"[i \\\\in DOMAIN @ |-> @[Len(@) - i + 1]]\" };\n\n default:\n // Warn about unsupported array methods\n this.warnUnsupportedArrayMethod(methodName, callExpr);\n return null;\n }\n }\n\n /** Warn about unsupported array methods */\n private warnUnsupportedArrayMethod(methodName: string, node: Node): void {\n const mutatingMethods = [\n \"push\",\n \"pop\",\n \"shift\",\n \"unshift\",\n \"splice\",\n \"sort\",\n \"fill\",\n \"copyWithin\",\n ];\n const queryMethods = [\n \"find\",\n \"findIndex\",\n \"reduce\",\n \"reduceRight\",\n \"some\",\n \"every\",\n \"includes\",\n \"indexOf\",\n \"lastIndexOf\",\n ];\n const otherMethods = [\"flat\", \"flatMap\", \"join\", \"toString\", \"toLocaleString\"];\n\n if (mutatingMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' mutates in place. Use spread syntax: [...arr, item] for append, arr.filter() for removal.`\n );\n } else if (queryMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' returns a single value, not a new array. State assignment won't be extracted.`\n );\n } else if (otherMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' is not supported for state extraction. Consider using map/filter instead.`\n );\n }\n }\n\n /**\n * Extract assignments from spread update pattern: { ...existing, field: value }\n * Only extracts the explicitly set properties, not the spread\n */\n private extractSpreadUpdateAssignments(\n objectLiteral: import(\"ts-morph\").ObjectLiteralExpression,\n assignments: StateAssignment[],\n signalName: string\n ): void {\n for (const prop of objectLiteral.getProperties()) {\n // Skip spread assignments (they preserve existing values)\n if (Node.isSpreadAssignment(prop)) continue;\n\n // Extract regular property assignments\n this.extractPropertyAssignment(prop, assignments, signalName);\n }\n }\n\n /**\n * Extract array spread operations: [...arr, item] or [item, ...arr]\n */\n private extractArraySpreadOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n // Try append pattern first, then prepend\n return (\n this.tryExtractAppendOperation(elements, fieldPath, signalName) ??\n this.tryExtractPrependOperation(elements, fieldPath, signalName)\n );\n }\n\n /** Extract append operation: [...arr, item] or [...arr, item1, item2] */\n private tryExtractAppendOperation(\n elements: Node[],\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const firstElement = elements[0];\n if (!firstElement || !Node.isSpreadElement(firstElement)) return null;\n\n const spreadExpr = firstElement.getExpression();\n if (!spreadExpr || this.getPropertyPath(spreadExpr) !== fieldPath) return null;\n\n if (elements.length === 2) {\n return { field: signalName, value: \"Append(@, payload)\" };\n }\n const placeholders = Array(elements.length - 1)\n .fill(\"payload\")\n .join(\", \");\n return { field: signalName, value: `@ \\\\o <<${placeholders}>>` };\n }\n\n /** Extract prepend operation: [item, ...arr] or [item1, item2, ...arr] */\n private tryExtractPrependOperation(\n elements: Node[],\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n if (elements.length < 2) return null;\n\n const lastElement = elements[elements.length - 1];\n if (!lastElement || !Node.isSpreadElement(lastElement)) return null;\n\n const spreadExpr = lastElement.getExpression();\n if (!spreadExpr || this.getPropertyPath(spreadExpr) !== fieldPath) return null;\n\n if (elements.length === 2) {\n return { field: signalName, value: \"<<payload>> \\\\o @\" };\n }\n const placeholders = Array(elements.length - 1)\n .fill(\"payload\")\n .join(\", \");\n return { field: signalName, value: `<<${placeholders}>> \\\\o @` };\n }\n\n /**\n * Extract assignments from object literal properties\n * Used for: someState.value = { field1: value1, field2: value2 }\n * @param signalName - Optional signal name prefix (e.g., \"user\" for user.value = {...})\n */\n private extractObjectLiteralAssignments(\n objectLiteral: Node,\n assignments: StateAssignment[],\n signalName?: string\n ): void {\n if (!Node.isObjectLiteralExpression(objectLiteral)) return;\n\n for (const prop of objectLiteral.getProperties()) {\n this.extractPropertyAssignment(prop, assignments, signalName);\n }\n }\n\n /**\n * Extract a single property assignment from an object literal property\n */\n private extractPropertyAssignment(\n prop: Node,\n assignments: StateAssignment[],\n signalName?: string\n ): void {\n // Handle regular property assignments: { field: value }\n if (Node.isPropertyAssignment(prop)) {\n this.extractRegularPropertyAssignment(prop, assignments, signalName);\n return;\n }\n\n // Handle shorthand properties: { field }\n if (Node.isShorthandPropertyAssignment(prop)) {\n const name = prop.getName();\n const field = signalName ? `${signalName}_${name}` : name;\n // If the identifier matches a function parameter, trace it to payload\n if (this.currentFunctionParams.includes(name)) {\n assignments.push({ field, value: `param:${name}` });\n } else {\n // For shorthand, we can't extract the value statically\n // but we know the field is being set\n assignments.push({ field, value: \"@\" }); // Use @ as placeholder\n }\n }\n }\n\n /**\n * Handle the regular `{ field: value }` form within an object literal.\n * Splits the literal-extraction and payload-property-tracing paths so the\n * outer dispatcher stays simple and biome's cognitive-complexity budget\n * holds.\n */\n private extractRegularPropertyAssignment(\n prop: Node,\n assignments: StateAssignment[],\n signalName?: string\n ): void {\n if (!Node.isPropertyAssignment(prop)) return;\n const name = prop.getName();\n const initializer = prop.getInitializer();\n if (!name || !initializer) return;\n\n const field = signalName ? `${signalName}_${name}` : name;\n\n const value = this.extractValue(initializer);\n if (value !== undefined) {\n assignments.push({ field, value });\n return;\n }\n\n // Trace `field: paramName` (renamed-property form, e.g.\n // `currentView: view`) to the payload identifier. The shorthand\n // `{ view }` form already does this; without this branch the renamed\n // form silently drops the assignment from the action body and leaves\n // ensures references to the parameter unbound (issue #77).\n if (Node.isIdentifier(initializer)) {\n const paramName = initializer.getText();\n if (this.currentFunctionParams.includes(paramName)) {\n assignments.push({ field, value: `param:${paramName}` });\n return;\n }\n }\n\n // Trace `field: paramName.X` (e.g. `role: payload.role`) to the payload\n // field. Mirrors the shorthand `{ field }` and direct `signal.value =\n // paramName.X` paths so longhand object literals participate in\n // payload-domain wiring (issue #72) and per-action ensures Asserts\n // (issue #73) the same way the other forms do.\n const paramName = this.extractPayloadPropertyParam(initializer);\n if (paramName !== null) {\n assignments.push({ field, value: `param:${paramName}` });\n return;\n }\n\n // polly#147: a non-literal initializer that is a translatable expression —\n // arithmetic on the signal's own field (`outstanding + 1`), a copy of\n // another field, an index access — is captured verbatim and translated to\n // TLA+ at codegen time, mirroring how `state.foo += 1` keeps its RHS via\n // `right.getText()`. Without this the assignment was silently dropped, so a\n // counter `signal.value = { outstanding: signal.value.outstanding + 1 }`\n // generated an UNCHANGED stub and its bounded-counter ensures could never\n // be anchored.\n if (this.isTranslatableInitializer(initializer)) {\n // polly#169: resolve `const x = sig.value` aliases before the text leaves\n // the function that gave its identifiers meaning.\n // polly#170: strip redundant outer parentheses — `translateTernary` is a\n // regex and chops across them, producing `IF (a THEN 1 ELSE 0)`.\n const captured = this.resolveSignalAliases(this.unwrapParentheses(initializer));\n assignments.push({ field, value: `EXPR:${captured}` });\n return;\n }\n\n // polly#144 set the precedent that a silently dropped handler is the core\n // failure mode, so its warning is unconditional. The same applies here: a\n // dropped property models the field as never moving, and every property\n // written over it then holds vacuously (polly#170).\n const on = signalName ? ` on ${signalName}.value` : \"\";\n console.log(\n `[WARN] dropped object-literal property '${name}'${on} — initializer \\`${initializer.getText().replace(/\\s+/g, \" \").slice(0, 80)}\\` (${initializer.getKindName()}) is not translatable to TLA+`\n );\n }\n\n /**\n * polly#169: rewrite `<alias>.field` back to `<signal>.value.field`.\n *\n * The `EXPR:` capture hands source text to a codegen translator that resolves\n * signal references by shape, not by binding. A handler that reads through\n * `const state = offlineQueue.value` emitted `state.unsyncedChanges`, which\n * the translator's `state.` rule rewrote to `contextStates[ctx].unsyncedChanges`\n * — a member that does not exist, because the record carries\n * `offlineQueue_unsyncedChanges`. An alias under any other name reached SANY\n * as a free identifier.\n *\n * Aliases are collected from the initializer's OWN enclosing function rather\n * than from extractor instance state: an object literal is reached by two\n * walks (`extractAssignments`, and `findStateMutationsInFunction` for the\n * issue-#27 lift pass) and only one passes through the handler entry points\n * that maintain instance state, so state held on `this` would silently do\n * nothing on the other.\n *\n * Rewriting is driven by AST node positions, not by a regex over the text —\n * a regex is what made the original defect possible.\n */\n private resolveSignalAliases(initializer: Node): string {\n const aliases = this.collectSignalAliases(initializer);\n if (aliases.size === 0) return initializer.getText();\n\n const base = initializer.getStart();\n const edits: Array<{ start: number; end: number; text: string }> = [];\n\n // forEachDescendant excludes the node itself, and the initializer is often\n // the whole access (`o.count`), so visit the root as well.\n const visit = (node: Node): void => {\n if (!Node.isPropertyAccessExpression(node)) return;\n const target = node.getExpression();\n if (!Node.isIdentifier(target)) return;\n const signal = aliases.get(target.getText());\n if (!signal) return;\n edits.push({\n start: target.getStart() - base,\n end: target.getEnd() - base,\n text: `${signal}.value`,\n });\n };\n visit(initializer);\n initializer.forEachDescendant(visit);\n\n if (edits.length === 0) return initializer.getText();\n\n let text = initializer.getText();\n for (const edit of edits.sort((a, b) => b.start - a.start)) {\n text = text.slice(0, edit.start) + edit.text + text.slice(edit.end);\n }\n return text;\n }\n\n /**\n * Collect `const <name> = <ident>.value` bindings from the nearest enclosing\n * function of `node`.\n *\n * Deliberately narrow. Destructuring, a reassigned `let`, and an alias of an\n * alias are left untranslated and fall through to the warning: a wrong entry\n * rewrites an expression into a field that DOES exist, which is strictly\n * worse than one that fails loudly.\n */\n private collectSignalAliases(node: Node): Map<string, string> {\n const aliases = new Map<string, string>();\n\n const fn = node.getFirstAncestor(\n (a) =>\n Node.isArrowFunction(a) || Node.isFunctionExpression(a) || Node.isFunctionDeclaration(a)\n );\n if (!fn) return aliases;\n\n const reassigned = this.collectReassignedIdentifiers(fn);\n\n fn.forEachDescendant((inner) => {\n if (!Node.isVariableDeclaration(inner)) return;\n const binding = this.readSignalAliasBinding(inner);\n if (!binding) return;\n // An alias of an alias, and a rebound name, are both left untranslated.\n if (aliases.has(binding.signal)) return;\n if (reassigned.has(binding.alias)) return;\n aliases.set(binding.alias, binding.signal);\n });\n\n return aliases;\n }\n\n /** Identifiers assigned anywhere in `fn`, so a rebound alias can be ignored. */\n private collectReassignedIdentifiers(fn: Node): Set<string> {\n const reassigned = new Set<string>();\n fn.forEachDescendant((inner) => {\n if (!Node.isBinaryExpression(inner)) return;\n if (inner.getOperatorToken().getText() !== \"=\") return;\n const left = inner.getLeft();\n if (Node.isIdentifier(left)) reassigned.add(left.getText());\n });\n return reassigned;\n }\n\n /**\n * Read `const <alias> = <signal>.value` from a declaration, or null.\n *\n * `const` only (a `let` may be rebound between the alias and its use), a plain\n * identifier only (a destructuring pattern binds fields, not the object), and\n * `<identifier>.value` only (not `a.b.value`).\n */\n private readSignalAliasBinding(\n decl: VariableDeclaration\n ): { alias: string; signal: string } | null {\n const list = decl.getParent();\n if (!Node.isVariableDeclarationList(list)) return null;\n if (list.getDeclarationKind() !== VariableDeclarationKind.Const) return null;\n\n const nameNode = decl.getNameNode();\n if (!Node.isIdentifier(nameNode)) return null;\n\n const init = decl.getInitializer();\n if (!init || !Node.isPropertyAccessExpression(init)) return null;\n if (init.getName() !== \"value\") return null;\n\n const target = init.getExpression();\n if (!Node.isIdentifier(target)) return null;\n\n return { alias: nameNode.getText(), signal: target.getText() };\n }\n\n /**\n * Whether an object-literal property initializer is an expression the codegen\n * translator (`tsExpressionToTLA`) handles reliably (polly#147). Literals and\n * payload-parameter references are resolved before this is reached; this\n * covers arithmetic, member/index access, (un)parenthesized unary forms and —\n * since polly#170 — a single ternary.\n *\n * polly#170: the original \"conditional expressions are excluded\" rule was\n * both too strict and too loose. Too strict, because `translateTernary`\n * (tools/verify codegen) does translate a single comment-free ternary\n * correctly, and dropping it modelled the field as never moving. Too loose,\n * because the kind checks below admit a ternary nested inside a binary or a\n * parenthesized expression, and a call nested anywhere — `translateTernary`\n * is a regex, so `{ x: (a ? 1 : 0) }` became `IF (a THEN 1 ELSE 0)` with\n * unbalanced parentheses.\n *\n * The subtree checks close both halves: reject a call or a nested ternary\n * wherever it appears, and reject a comment, whose `//` is carried into the\n * generated line and can corrupt the quote-conversion pass.\n */\n private isTranslatableInitializer(node: Node): boolean {\n const kindAllowed =\n Node.isBinaryExpression(node) ||\n Node.isPropertyAccessExpression(node) ||\n Node.isElementAccessExpression(node) ||\n Node.isPrefixUnaryExpression(node) ||\n Node.isPostfixUnaryExpression(node) ||\n Node.isParenthesizedExpression(node) ||\n Node.isConditionalExpression(node);\n\n if (!kindAllowed) return false;\n if (this.containsComment(node)) return false;\n if (node.getFirstDescendantByKind(SyntaxKind.CallExpression)) return false;\n\n // A ternary is admitted only as the whole expression, and only one deep.\n // Unwrap parentheses first: a nested ternary is normally written\n // `a ? (b ? c : d) : e`, so a check that inspects the branch nodes directly\n // reads that as a single ternary and admits it. `getFirstDescendantByKind`\n // excludes the node itself, so this rejects a ternary nested under a root\n // ternary and a ternary anywhere under a binary or parenthesized root — the\n // two shapes `translateTernary`'s regex gets wrong — while admitting a root\n // ternary with none below it.\n return (\n this.unwrapParentheses(node).getFirstDescendantByKind(SyntaxKind.ConditionalExpression) ===\n undefined\n );\n }\n\n /** Strip redundant parentheses, so branch checks see the real node. */\n private unwrapParentheses(node: Node): Node {\n let current = node;\n while (Node.isParenthesizedExpression(current)) {\n current = current.getExpression();\n }\n return current;\n }\n\n /**\n * Whether a node's source text carries a comment. A `//` inside a captured\n * expression is carried verbatim into the generated TLA+ line (polly#170).\n */\n private containsComment(node: Node): boolean {\n const text = node.getText();\n return text.includes(\"//\") || text.includes(\"/*\");\n }\n\n /**\n * If `initializer` is `paramName.X` where paramName is a function parameter\n * of the current handler, return X. Otherwise return null.\n */\n private extractPayloadPropertyParam(initializer: Node): string | null {\n if (!Node.isPropertyAccessExpression(initializer)) return null;\n const parts = this.getPropertyPath(initializer).split(\".\");\n if (parts.length !== 2) return null;\n const [paramName, fieldName] = parts;\n if (paramName === undefined || fieldName === undefined) return null;\n if (!this.currentFunctionParams.includes(paramName)) return null;\n return fieldName;\n }\n\n /**\n * Extract element access assignment (state.items[index] = value)\n */\n private extractElementAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isElementAccessExpression(left)) return;\n\n const expr = left.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const fieldPath = this.getPropertyPath(expr);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (!field) return;\n const indexExpr = left.getArgumentExpression();\n const index = indexExpr ? indexExpr.getText() : \"0\";\n const value = this.extractValue(right);\n\n if (value !== undefined) {\n const tlaIndex = this.isNumericLiteral(index)\n ? (Number.parseInt(index, 10) + 1).toString()\n : `${index} + 1`;\n assignments.push({\n field: `${field}[${tlaIndex}]`,\n value,\n });\n }\n }\n\n /**\n * Check if field path is a state mutation pattern and extract field name\n * Supports: state.field, someState.value.field\n * Returns: field name or null if not a state pattern\n */\n private extractFieldFromStatePath(fieldPath: string): string | null {\n // Pattern 1: state.field\n if (fieldPath.startsWith(\"state.\")) {\n return fieldPath.substring(6);\n }\n\n // Pattern 2: someState.value.field\n const valueMatch = fieldPath.match(/\\.value\\.(.+)$/);\n if (valueMatch?.[1]) {\n return valueMatch[1];\n }\n\n return null;\n }\n\n /**\n * Extract compound assignments (+=, -=, *=, /=, %=)\n */\n private extractCompoundAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n const fieldPath = this.getPropertyPath(left);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n const rightValue = right.getText();\n const tlaOp = operator.slice(0, -1); // Remove '=' suffix\n assignments.push({\n field,\n value: `@ ${tlaOp} ${rightValue}`,\n });\n }\n }\n }\n\n /**\n * Get operator text from unary expression token\n */\n private getUnaryOperatorText(operator: unknown): string | null {\n if (typeof operator === \"number\") {\n // It's a SyntaxKind enum value\n if (operator === SyntaxKind.PlusPlusToken) return \"++\";\n if (operator === SyntaxKind.MinusMinusToken) return \"--\";\n return null;\n }\n if (operator && typeof operator === \"object\" && \"getText\" in operator) {\n // It's a Node with getText method\n return (operator as unknown as { getText(): string }).getText();\n }\n return null;\n }\n\n /**\n * Extract unary expression assignments (++, --)\n */\n private extractUnaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isPostfixUnaryExpression(node) && !Node.isPrefixUnaryExpression(node)) return;\n\n const operator = node.getOperatorToken();\n const operatorText = this.getUnaryOperatorText(operator);\n\n // Only handle ++ and --\n if (operatorText !== \"++\" && operatorText !== \"--\") return;\n\n const operand = node.getOperand();\n if (!Node.isPropertyAccessExpression(operand)) return;\n\n const fieldPath = this.getPropertyPath(operand);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n // Translate ++ to @ + 1 and -- to @ - 1\n const value = operatorText === \"++\" ? \"@ + 1\" : \"@ - 1\";\n assignments.push({ field, value });\n }\n }\n\n /**\n * Extract array mutation assignments (push, pop, shift, unshift, splice)\n */\n private extractArrayMutationAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (Node.isPropertyAccessExpression(object)) {\n const fieldPath = this.getPropertyPath(object);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n const args = node.getArguments().map((arg) => arg.getText());\n const tlaValue = this.translateArrayMethod(methodName, args, fieldPath);\n\n if (tlaValue) {\n assignments.push({ field, value: tlaValue });\n }\n }\n }\n }\n\n /**\n * Translate array mutation methods to TLA+ operators\n */\n private translateArrayMethod(\n methodName: string,\n args: string[],\n fieldPath: string\n ): string | null {\n switch (methodName) {\n case \"push\":\n return args.length === 1 ? `Append(@, ${args[0]})` : null;\n\n case \"pop\":\n return \"SubSeq(@, 1, Len(@)-1)\";\n\n case \"shift\":\n return \"Tail(@)\";\n\n case \"unshift\":\n return args.length === 1 ? `<<${args[0]}>> \\\\o @` : null;\n\n case \"splice\":\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Warning: splice() mutation on ${fieldPath} not fully translated`);\n }\n return null;\n\n default:\n return null;\n }\n }\n\n /**\n * Check for async mutations that could cause race conditions\n * Warns when async handlers have state mutations after await expressions\n */\n private checkAsyncMutations(\n funcNode: ArrowFunction | FunctionExpression,\n messageType: string\n ): void {\n // Check if function is async\n const isAsync =\n funcNode.hasModifier?.(SyntaxKind.AsyncKeyword) ||\n funcNode.getModifiers?.()?.some((m: Node) => m.getKind() === SyntaxKind.AsyncKeyword);\n\n if (!isAsync) {\n return; // Not async, no race conditions possible\n }\n\n // Find all await expressions\n const awaitExpressions: Node[] = [];\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isAwaitExpression(node)) {\n awaitExpressions.push(node);\n }\n });\n\n if (awaitExpressions.length === 0) {\n return; // No awaits, no interleaving possible\n }\n\n // Find all state mutations\n const mutations: Array<{ field: string; line: number; afterAwait: boolean }> = [];\n const body = funcNode.getBody();\n\n if (!body) {\n return;\n }\n\n const firstAwait = awaitExpressions[0];\n if (!firstAwait) return;\n\n // Get position of first await\n const firstAwaitPos = firstAwait.getStart();\n\n // Track mutations and whether they occur after await\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.checkBinaryExpressionMutation(node, firstAwaitPos, mutations);\n }\n\n if (Node.isCallExpression(node)) {\n this.checkCallExpressionMutation(node, firstAwaitPos, mutations);\n }\n });\n\n // Filter to mutations after await\n const mutationsAfterAwait = mutations.filter((m) => m.afterAwait);\n\n if (mutationsAfterAwait.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Warning: Async handler for '${messageType}' has ${mutationsAfterAwait.length} state mutation(s) after await`\n );\n console.log(\n \"[DEBUG] This may cause race conditions if multiple messages are processed concurrently\"\n );\n console.log(\n `[DEBUG] Mutations: ${mutationsAfterAwait.map((m) => `${m.field} (line ${m.line})`).join(\", \")}`\n );\n }\n }\n\n /**\n * Extract verification conditions (requires/ensures) from a handler function\n */\n private extractVerificationConditions(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n const body = funcNode.getBody();\n const statements = Node.isBlock(body) ? body.getStatements() : body ? [body] : [];\n\n for (const statement of statements) {\n this.processStatementForConditions(statement, preconditions, postconditions);\n }\n }\n\n /**\n * Process a statement to extract verification conditions\n */\n private processStatementForConditions(\n statement: Node | Statement,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n if (!Node.isExpressionStatement(statement)) return;\n\n const expr = statement.getExpression();\n if (!Node.isCallExpression(expr)) return;\n\n const callee = expr.getExpression();\n if (!Node.isIdentifier(callee)) return;\n\n const functionName = callee.getText();\n\n if (functionName === \"requires\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n preconditions.push(condition);\n }\n } else if (functionName === \"ensures\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n postconditions.push(condition);\n }\n }\n }\n\n /**\n * Extract condition from a requires() or ensures() call\n */\n private extractCondition(callExpr: CallExpression): VerificationCondition | null {\n const args = callExpr.getArguments();\n\n if (args.length === 0) {\n return null;\n }\n\n // First argument is the condition expression\n const conditionArg = args[0];\n if (!conditionArg) return null;\n\n const expression = conditionArg.getText();\n\n // Second argument (optional) is the message\n let message: string | undefined;\n if (args.length >= 2 && Node.isStringLiteral(args[1])) {\n message = args[1].getLiteralValue();\n }\n\n const line = callExpr.getStartLineNumber();\n const column = callExpr.getStartLinePos();\n\n return {\n expression,\n message,\n location: {\n line,\n column,\n },\n };\n }\n\n /**\n * Get the full property access path (e.g., \"state.user.loggedIn\")\n */\n private getPropertyPath(node: PropertyAccessExpression | Node): string {\n const parts: string[] = [];\n\n let current = node;\n while (Node.isPropertyAccessExpression(current)) {\n parts.unshift(current.getName());\n current = current.getExpression();\n }\n\n // Add the base identifier\n if (Node.isIdentifier(current)) {\n parts.unshift(current.getText());\n }\n\n return parts.join(\".\");\n }\n\n /**\n * Extract a literal value from an expression\n */\n private extractValue(node: Node): string | boolean | number | null | undefined {\n if (Node.isStringLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (Node.isNumericLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (node.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n\n if (node.getKind() === SyntaxKind.FalseKeyword) {\n return false;\n }\n\n if (node.getKind() === SyntaxKind.NullKeyword) {\n return null;\n }\n\n // For complex expressions, return undefined (can't extract)\n return undefined;\n }\n\n /**\n * Check if a string represents a numeric literal\n */\n private isNumericLiteral(str: string): boolean {\n return /^\\d+$/.test(str);\n }\n\n /**\n * Extract handlers from switch/case message router patterns\n * Detects: switch(message.type) { case 'EVENT': handler(); }\n */\n private extractSwitchCaseHandlers(\n switchNode: SwitchStatement,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n // Check if switching on message.type or similar\n const expression = switchNode.getExpression();\n const expressionText = expression.getText();\n\n // Look for patterns like: message.type, data.type, msg.type, event.type\n if (!/\\.(type|kind|event|action)/.test(expressionText)) {\n return handlers;\n }\n\n // Extract handlers from each case clause\n const caseClauses = switchNode.getClauses();\n for (const clause of caseClauses) {\n if (Node.isCaseClause(clause)) {\n const caseExpr = clause.getExpression();\n\n // Extract message type from case expression\n let messageType: string | null = null;\n if (Node.isStringLiteral(caseExpr)) {\n messageType = caseExpr.getLiteralValue();\n }\n\n if (messageType) {\n const line = clause.getStartLineNumber();\n\n handlers.push({\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n origin: \"event\" as const,\n });\n }\n }\n }\n } catch (_error) {\n // Skip malformed switch statements\n }\n\n return handlers;\n }\n\n /**\n * Extract handlers from handler map patterns\n * Detects: const handlers = { 'EVENT': handlerFn, ... }\n */\n private extractHandlerMapPattern(\n varDecl: VariableDeclaration,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const initializer = varDecl.getInitializer();\n if (!initializer) {\n return handlers;\n }\n\n // Get the object literal - either direct or from defineHandlers() call\n const objectLiteral = this.getHandlerMapObject(initializer, varDecl);\n if (!objectLiteral) {\n return handlers;\n }\n\n // Extract handlers from object properties\n const properties = objectLiteral.getProperties();\n for (const prop of properties) {\n const handler = this.extractHandlerFromProperty(prop, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n } catch (_error) {\n // Skip malformed object literals\n }\n\n return handlers;\n }\n\n /**\n * Extract the object literal from a handler map.\n * Only processes direct object literals with handler-like variable names.\n */\n private getHandlerMapObject(\n initializer: Node,\n varDecl: VariableDeclaration\n ): ObjectLiteralExpression | null {\n // Only process direct object literals\n if (Node.isObjectLiteralExpression(initializer)) {\n if (this.isHandlerMapName(varDecl.getName())) {\n return initializer;\n }\n }\n return null;\n }\n\n /**\n * Check if variable name suggests it's a handler map\n */\n private isHandlerMapName(varName: string): boolean {\n return /(handler|listener|callback|event)s?/.test(varName.toLowerCase());\n }\n\n /**\n * Extract handler from a property assignment in a handler map\n */\n private extractHandlerFromProperty(\n prop: Node,\n context: string,\n filePath: string\n ): MessageHandler | null {\n if (!Node.isPropertyAssignment(prop)) {\n return null;\n }\n\n const nameNode = prop.getNameNode();\n const messageType = this.getMessageTypeFromPropertyName(nameNode);\n\n if (!messageType) {\n return null;\n }\n\n const value = prop.getInitializer();\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Extract from the handler function\n if (value) {\n // Case 1: Inline arrow function or function expression\n if (Node.isArrowFunction(value) || Node.isFunctionExpression(value)) {\n this.extractAssignments(value, assignments);\n this.extractVerificationConditions(value, preconditions, postconditions);\n }\n // Case 2: Function reference (e.g., handleQuery)\n else if (Node.isIdentifier(value)) {\n const referencedFunction = this.resolveFunctionReference(value);\n if (referencedFunction) {\n this.extractAssignments(referencedFunction, assignments);\n this.extractVerificationConditions(referencedFunction, preconditions, postconditions);\n }\n }\n }\n\n const line = prop.getStartLineNumber();\n return {\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: { file: filePath, line },\n };\n }\n\n /**\n * Extract message type from property name node\n */\n private getMessageTypeFromPropertyName(nameNode: Node): string | null {\n if (Node.isStringLiteral(nameNode)) {\n return nameNode.getLiteralValue();\n }\n if (Node.isIdentifier(nameNode)) {\n return nameNode.getText();\n }\n return null;\n }\n\n /**\n * Resolve a function reference to its declaration or expression.\n * Handles both named function declarations and variable-assigned functions.\n *\n * @param identifier - The identifier node referencing the function\n * @returns The resolved function node, or null if not found\n */\n private resolveFunctionReference(\n identifier: Node\n ): FunctionDeclaration | ArrowFunction | FunctionExpression | null {\n if (!Node.isIdentifier(identifier)) {\n return null;\n }\n\n try {\n const definitions = identifier.getDefinitionNodes();\n\n for (const def of definitions) {\n // Direct function declaration\n if (Node.isFunctionDeclaration(def)) {\n return def;\n }\n\n // Variable declaration with function initializer\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return initializer;\n }\n }\n }\n } catch (_error) {\n // Failed to resolve - return null\n }\n\n return null;\n }\n\n /**\n * Extract handlers from type guard if/else-if patterns\n * Detects: if (isQueryMessage(msg)) { handleQuery(msg); }\n */\n private extractTypeGuardHandlers(\n ifNode: Node,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const sourceFile = ifNode.getSourceFile();\n const typeGuards = this.getOrComputeTypeGuards(sourceFile);\n\n this.debugLogTypeGuards(sourceFile, typeGuards);\n this.processIfElseChain(\n ifNode as unknown as IfStatement,\n typeGuards,\n context,\n filePath,\n handlers\n );\n } catch (error) {\n this.debugLogError(error);\n }\n\n return handlers;\n }\n\n /**\n * Get cached type guards or compute if not cached\n */\n private getOrComputeTypeGuards(sourceFile: SourceFile): Map<string, string> {\n let typeGuards = this.typeGuardCache.get(sourceFile);\n if (!typeGuards) {\n typeGuards = this.findTypePredicateFunctions(sourceFile);\n this.typeGuardCache.set(sourceFile, typeGuards);\n }\n return typeGuards;\n }\n\n /**\n * Debug log type guards found in source file\n */\n private debugLogTypeGuards(sourceFile: SourceFile, typeGuards: Map<string, string>): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] File: ${sourceFile.getBaseName()}`);\n console.log(`[DEBUG] Local type guards found: ${typeGuards.size}`);\n\n if (typeGuards.size > 0) {\n for (const [name, type] of typeGuards.entries()) {\n console.log(`[DEBUG] - ${name} → ${type}`);\n }\n }\n }\n\n /**\n * Process if-else-if chain to extract handlers\n */\n private processIfElseChain(\n currentIf: IfStatement,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n let ifStatement = currentIf;\n while (ifStatement) {\n const handler = this.extractHandlerFromIfClause(ifStatement, typeGuards, context, filePath);\n\n if (handler) {\n handlers.push(handler);\n this.debugLogFoundHandler(handler);\n }\n\n // Check for else-if\n const elseStatement = ifStatement.getElseStatement();\n if (elseStatement && Node.isIfStatement(elseStatement)) {\n ifStatement = elseStatement;\n } else {\n break;\n }\n }\n }\n\n /**\n * Debug log found handler\n */\n private debugLogFoundHandler(handler: MessageHandler): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found handler: ${handler.messageType} at line ${handler.location.line}`);\n }\n }\n\n /**\n * Debug log error\n */\n private debugLogError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error in extractTypeGuardHandlers: ${error}`);\n }\n }\n\n /**\n * Extract handler from a single if clause\n */\n private extractHandlerFromIfClause(\n ifNode: Node,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string\n ): MessageHandler | null {\n try {\n const ifStmt = ifNode as unknown as IfStatement;\n const condition = ifStmt.getExpression();\n\n // Pattern 1: Type guard function call — if (isSubscribe(msg))\n if (Node.isCallExpression(condition)) {\n const funcExpr = condition.getExpression();\n const funcName = Node.isIdentifier(funcExpr) ? funcExpr.getText() : undefined;\n\n this.debugLogProcessingFunction(funcName);\n\n const messageType = this.resolveMessageType(funcExpr, funcName, typeGuards);\n if (!messageType) {\n this.debugLogUnresolvedMessageType(funcName);\n return null;\n }\n\n const line = ifStmt.getStartLineNumber();\n const relationships = this.extractRelationshipsFromIfBlock(ifStmt, messageType);\n\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n relationships,\n };\n }\n\n // Pattern 2: Equality check — if (data.type === 'subscribe')\n if (Node.isBinaryExpression(condition)) {\n const messageType = this.extractMessageTypeFromEqualityCheck(condition);\n if (messageType) {\n const line = ifStmt.getStartLineNumber();\n const relationships = this.extractRelationshipsFromIfBlock(ifStmt, messageType);\n\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n relationships,\n };\n }\n }\n\n return null;\n } catch (_error) {\n return null;\n }\n }\n\n /**\n * Extract message type from equality check: data.type === 'subscribe'\n */\n private extractMessageTypeFromEqualityCheck(\n expr: import(\"ts-morph\").BinaryExpression\n ): string | null {\n const operator = expr.getOperatorToken().getText();\n if (operator !== \"===\" && operator !== \"==\") return null;\n\n const left = expr.getLeft();\n const right = expr.getRight();\n\n // Check: xxx.type === 'value' or 'value' === xxx.type\n const stringLiteral = Node.isStringLiteral(right)\n ? right\n : Node.isStringLiteral(left)\n ? left\n : null;\n const propAccess = Node.isPropertyAccessExpression(left)\n ? left\n : Node.isPropertyAccessExpression(right)\n ? right\n : null;\n\n if (!stringLiteral || !propAccess) return null;\n\n const propName = propAccess.getName();\n if (propName !== \"type\" && propName !== \"kind\" && propName !== \"action\") {\n return null;\n }\n\n return stringLiteral.getLiteralValue();\n }\n\n /**\n * Debug log processing function\n */\n private debugLogProcessingFunction(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Processing if condition with function: ${funcName}`);\n }\n }\n\n /**\n * Debug log unresolved message type\n */\n private debugLogUnresolvedMessageType(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Could not resolve message type for: ${funcName}`);\n }\n }\n\n /**\n * Resolve message type from function expression\n */\n private resolveMessageType(\n funcExpr: Node,\n funcName: string | undefined,\n typeGuards: Map<string, string>\n ): string | undefined {\n if (funcName && typeGuards.has(funcName)) {\n const guardType = typeGuards.get(funcName);\n if (guardType) {\n this.debugLogFoundInLocalTypeGuards(funcName, guardType);\n return guardType;\n }\n }\n\n if (Node.isIdentifier(funcExpr)) {\n this.debugLogTryingImportResolution(funcName);\n return this.resolveImportedTypeGuard(funcExpr) ?? undefined;\n }\n\n return undefined;\n }\n\n /**\n * Debug log found in local type guards\n */\n private debugLogFoundInLocalTypeGuards(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found in local type guards: ${funcName} → ${messageType}`);\n }\n }\n\n /**\n * Debug log trying import resolution\n */\n private debugLogTryingImportResolution(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Not found locally, trying import resolution for: ${funcName}`);\n }\n }\n\n /**\n * Extract relationships from if block\n */\n private extractRelationshipsFromIfBlock(\n ifStmt: IfStatement,\n messageType: string\n ): ComponentRelationship[] | undefined {\n const thenStatement = ifStmt.getThenStatement();\n if (!thenStatement) {\n return undefined;\n }\n\n const sourceFile = ifStmt.getSourceFile();\n const handlerName = `${messageType}_handler`;\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n thenStatement,\n sourceFile,\n handlerName\n );\n\n return detectedRelationships.length > 0 ? detectedRelationships : undefined;\n }\n\n /**\n * Find all type predicate functions in a source file\n * Returns a map of function name → message type\n * Uses AST-based detection for consistency with imported type guard resolution\n */\n private findTypePredicateFunctions(sourceFile: SourceFile): Map<string, string> {\n const typeGuards = new Map<string, string>();\n\n sourceFile.forEachDescendant((node) => {\n this.processTypePredicate(node, typeGuards);\n });\n\n return typeGuards;\n }\n\n /**\n * Process a node that might be a type predicate function\n */\n private processTypePredicate(node: Node, typeGuards: Map<string, string>): void {\n if (!this.isFunctionNode(node)) {\n return;\n }\n\n const returnTypeNode = node.getReturnTypeNode();\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return;\n }\n\n const functionName = this.extractFunctionName(node);\n if (!functionName) {\n return;\n }\n\n const messageType = this.extractMessageTypeFromTypePredicateFunction(node, returnTypeNode);\n if (messageType) {\n typeGuards.set(functionName, messageType);\n }\n }\n\n /**\n * Extract function name from function node\n */\n private extractFunctionName(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | undefined {\n if (Node.isFunctionDeclaration(node)) {\n return node.getName();\n }\n\n if (Node.isFunctionExpression(node) || Node.isArrowFunction(node)) {\n return this.extractFunctionNameFromVariable(node);\n }\n\n return undefined;\n }\n\n /**\n * Extract function name from variable declaration\n */\n private extractFunctionNameFromVariable(\n node: FunctionExpression | ArrowFunction\n ): string | undefined {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return undefined;\n }\n\n /**\n * Extract message type from type predicate function\n */\n private extractMessageTypeFromTypePredicateFunction(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node\n ): string | null {\n if (!Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n // Try to get type node if method exists\n if (\"getTypeNode\" in returnTypeNode && typeof returnTypeNode.getTypeNode === \"function\") {\n const typeNode = returnTypeNode.getTypeNode();\n\n if (typeNode) {\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n if (messageType) {\n return messageType;\n }\n }\n }\n\n return this.extractMessageTypeFromFunctionBodyText(node);\n }\n\n /**\n * Extract message type from function body text\n */\n private extractMessageTypeFromFunctionBodyText(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | null {\n const body = node.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n return typeValueMatch[1] ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolve type guard from imported function\n * Uses ts-morph symbol resolution to find definition across files\n * Checks AST structure, not resolved types (which can lose type predicate info)\n */\n private resolveImportedTypeGuard(identifier: Identifier): string | null {\n try {\n const funcName = identifier.getText();\n const definitions = identifier.getDefinitionNodes();\n\n if (definitions.length === 0) {\n this.debugLogNoDefinitions(funcName);\n return null;\n }\n\n for (const def of definitions) {\n const messageType = this.tryExtractTypeGuardFromDefinition(def, funcName);\n if (messageType) {\n return messageType;\n }\n }\n } catch (error) {\n this.debugLogResolutionError(error);\n }\n\n return null;\n }\n\n /**\n * Try to extract type guard from a single function definition\n */\n private tryExtractTypeGuardFromDefinition(def: Node, funcName: string): string | null {\n if (!this.isFunctionNode(def)) {\n return null;\n }\n\n const returnTypeNode = def.getReturnTypeNode();\n this.debugLogReturnTypeInfo(funcName, def, returnTypeNode);\n\n const typePredicateResult = this.extractFromTypePredicate(returnTypeNode, funcName);\n if (typePredicateResult) {\n return typePredicateResult;\n }\n\n return this.extractFromFunctionBody(def, funcName);\n }\n\n /**\n * Check if node is a function type\n */\n private isFunctionNode(\n node: Node\n ): node is FunctionDeclaration | FunctionExpression | ArrowFunction {\n return (\n Node.isFunctionDeclaration(node) ||\n Node.isFunctionExpression(node) ||\n Node.isArrowFunction(node)\n );\n }\n\n /**\n * Extract message type from type predicate node\n */\n private extractFromTypePredicate(\n returnTypeNode: Node | undefined,\n funcName: string\n ): string | null {\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n const typeNode = returnTypeNode.getTypeNode();\n if (!typeNode) {\n return null;\n }\n\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n\n if (messageType) {\n this.debugLogTypePredicateResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Extract message type from function body\n */\n private extractFromFunctionBody(\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n funcName: string\n ): string | null {\n const body = def.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n const messageType = typeValueMatch[1] ?? null;\n this.debugLogBodyResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Debug: Log no definitions found\n */\n private debugLogNoDefinitions(funcName: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] No definitions found for imported function: ${funcName}`);\n }\n }\n\n /**\n * Debug: Log return type info\n */\n private debugLogReturnTypeInfo(\n funcName: string,\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node | undefined\n ): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n const returnType = def.getReturnType().getText();\n console.log(`[DEBUG] Function ${funcName} return type (resolved): ${returnType}`);\n console.log(`[DEBUG] Has return type node: ${!!returnTypeNode}`);\n console.log(\n `[DEBUG] Is type predicate node: ${returnTypeNode && Node.isTypePredicate(returnTypeNode)}`\n );\n }\n }\n\n /**\n * Debug: Log type predicate resolution\n */\n private debugLogTypePredicateResolution(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from AST type predicate)`);\n }\n }\n\n /**\n * Debug: Log body resolution\n */\n private debugLogBodyResolution(funcName: string, messageType: string | null): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from body)`);\n }\n }\n\n /**\n * Debug: Log resolution error\n */\n private debugLogResolutionError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error resolving imported type guard: ${error}`);\n }\n }\n\n /**\n * Extract message type from TypeScript type name\n * Examples:\n * QueryMessage → query\n * CommandMessage → command\n * SubscribeMessage → subscribe\n */\n private extractMessageTypeFromTypeName(typeName: string): string {\n // Remove common suffixes and convert to lowercase\n const messageType = typeName\n .replace(/Message$/, \"\")\n .replace(/Event$/, \"\")\n .replace(/Request$/, \"\")\n .replace(/Command$/, \"\")\n .replace(/Query$/, \"\")\n .toLowerCase();\n\n return messageType;\n }\n\n /**\n * Infer the context (background, content, popup, etc.) from file path\n */\n private inferContext(filePath: string): string {\n // Check context overrides first (monorepo workspace packages)\n for (const [pathPrefix, context] of this.contextOverrides.entries()) {\n if (filePath.startsWith(pathPrefix)) return context;\n }\n\n const path = filePath.toLowerCase();\n\n // Check contexts in priority order\n return (\n this.inferElectronContext(path) ||\n this.inferWorkerContext(path) ||\n this.inferServerAppContext(path) ||\n this.inferChromeExtensionContext(path) ||\n \"unknown\"\n );\n }\n\n /**\n * Infer Electron context (main, renderer, preload)\n */\n private inferElectronContext(path: string): string | null {\n if (\n path.includes(\"main.ts\") ||\n path.includes(\"main.js\") ||\n path.includes(\"/main/\") ||\n path.includes(\"\\\\main\\\\\")\n ) {\n return \"main\";\n }\n\n if (\n path.includes(\"/renderer/\") ||\n path.includes(\"\\\\renderer\\\\\") ||\n path.includes(\"renderer.ts\") ||\n path.includes(\"renderer.js\")\n ) {\n return \"renderer\";\n }\n\n if (path.includes(\"preload.ts\") || path.includes(\"preload.js\")) {\n return \"preload\";\n }\n\n return null;\n }\n\n /**\n * Infer Worker/PWA context\n */\n private inferWorkerContext(path: string): string | null {\n if (path.includes(\"service-worker\") || path.includes(\"sw.ts\") || path.includes(\"sw.js\")) {\n return \"worker\";\n }\n\n if (path.includes(\"/worker/\") || path.includes(\"\\\\worker\\\\\")) {\n return \"worker\";\n }\n\n return null;\n }\n\n /**\n * Infer WebSocket/server app context\n */\n private inferServerAppContext(path: string): string | null {\n if (\n path.includes(\"/server/\") ||\n path.includes(\"\\\\server\\\\\") ||\n path.includes(\"/server.\") ||\n path.includes(\"server.ts\") ||\n path.includes(\"server.js\")\n ) {\n return \"server\";\n }\n\n if (path.includes(\"/client/\") || path.includes(\"\\\\client\\\\\") || path.includes(\"/client.\")) {\n return \"client\";\n }\n\n return null;\n }\n\n /**\n * Infer Chrome extension context\n */\n private inferChromeExtensionContext(path: string): string | null {\n if (path.includes(\"/background/\") || path.includes(\"\\\\background\\\\\")) {\n return \"background\";\n }\n\n if (path.includes(\"/content/\") || path.includes(\"\\\\content\\\\\")) {\n return \"content\";\n }\n\n if (path.includes(\"/popup/\") || path.includes(\"\\\\popup\\\\\")) {\n return \"popup\";\n }\n\n if (path.includes(\"/devtools/\") || path.includes(\"\\\\devtools\\\\\")) {\n return \"devtools\";\n }\n\n if (path.includes(\"/options/\") || path.includes(\"\\\\options\\\\\")) {\n return \"options\";\n }\n\n if (path.includes(\"/offscreen/\") || path.includes(\"\\\\offscreen\\\\\")) {\n return \"offscreen\";\n }\n\n return null;\n }\n\n /**\n * Check binary expression for state mutations\n */\n private checkBinaryExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\" && ![\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left) && !Node.isElementAccessExpression(left)) return;\n\n const fieldPath = Node.isPropertyAccessExpression(left)\n ? this.getPropertyPath(left)\n : this.getPropertyPath(left.getExpression());\n\n const field = this.extractFieldFromStatePath(fieldPath);\n if (field) {\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Check call expression for array mutation methods\n */\n private checkCallExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (!Node.isPropertyAccessExpression(object)) return;\n\n const fieldPath = this.getPropertyPath(object);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field && [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].includes(methodName)) {\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Extract state-level constraints from a source file\n */\n private extractStateConstraintsFromFile(sourceFile: SourceFile): StateConstraint[] {\n const constraints: StateConstraint[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n const nodeConstraints = this.recognizeStateConstraint(node, filePath);\n constraints.push(...nodeConstraints);\n });\n\n return constraints;\n }\n\n /**\n * Extract global state constraints (stateConstraint() calls) from a source file\n */\n private extractGlobalStateConstraintsFromFile(sourceFile: SourceFile): GlobalStateConstraint[] {\n const constraints: GlobalStateConstraint[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n const constraint = this.recognizeGlobalStateConstraint(node, filePath);\n if (constraint) {\n constraints.push(constraint);\n }\n });\n\n return constraints;\n }\n\n /**\n * Recognize a stateConstraint() call and extract the constraint definition\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Parser logic requires nested conditionals\n private recognizeGlobalStateConstraint(\n node: Node,\n filePath: string\n ): GlobalStateConstraint | null {\n if (!Node.isCallExpression(node)) {\n return null;\n }\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) {\n return null;\n }\n\n const functionName = expression.getText();\n if (functionName !== \"stateConstraint\") {\n return null;\n }\n\n const args = node.getArguments();\n if (args.length < 2) {\n return null;\n }\n\n // Arg 0: string literal → name\n const nameArg = args[0];\n if (!Node.isStringLiteral(nameArg)) {\n return null;\n }\n const name = nameArg.getLiteralValue();\n\n // Arg 1: arrow function → extract body expression\n const predicateArg = args[1];\n if (!Node.isArrowFunction(predicateArg)) {\n return null;\n }\n\n const body = predicateArg.getBody();\n let expressionText: string;\n\n if (Node.isBlock(body)) {\n // Block body: find return statement\n const returnStatement = body.getStatements().find((s) => Node.isReturnStatement(s));\n if (!returnStatement || !Node.isReturnStatement(returnStatement)) {\n return null;\n }\n const returnExpr = returnStatement.getExpression();\n if (!returnExpr) {\n return null;\n }\n expressionText = returnExpr.getText();\n } else {\n // Expression body\n expressionText = body.getText();\n }\n\n // Arg 2 (optional): object literal with message property\n let message: string | undefined;\n if (args.length >= 3) {\n const optionsArg = args[2];\n if (Node.isObjectLiteralExpression(optionsArg)) {\n for (const prop of optionsArg.getProperties()) {\n if (Node.isPropertyAssignment(prop) && prop.getName() === \"message\") {\n const value = prop.getInitializer();\n if (value && Node.isStringLiteral(value)) {\n message = value.getLiteralValue();\n }\n }\n }\n }\n }\n\n return {\n name,\n expression: expressionText,\n message,\n location: {\n file: filePath,\n line: node.getStartLineNumber(),\n },\n };\n }\n\n /**\n * Recognize a $constraints() call and extract constraint definitions\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Parser logic requires nested conditionals\n private recognizeStateConstraint(node: Node, filePath: string): StateConstraint[] {\n if (!Node.isCallExpression(node)) {\n return [];\n }\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) {\n return [];\n }\n\n const functionName = expression.getText();\n if (functionName !== \"$constraints\") {\n return [];\n }\n\n // Get arguments: $constraints(field, constraintsObject)\n const args = node.getArguments();\n if (args.length < 2) {\n return [];\n }\n\n // First argument is the state field name\n const fieldArg = args[0];\n if (!Node.isStringLiteral(fieldArg)) {\n return [];\n }\n const field = fieldArg.getLiteralValue();\n\n // Second argument is the constraints object\n const constraintsArg = args[1];\n if (!Node.isObjectLiteralExpression(constraintsArg)) {\n return [];\n }\n\n // Extract each message type constraint\n const results: StateConstraint[] = [];\n for (const property of constraintsArg.getProperties()) {\n if (!Node.isPropertyAssignment(property)) {\n continue;\n }\n\n const messageType = property.getName();\n const initializer = property.getInitializer();\n if (!initializer || !Node.isObjectLiteralExpression(initializer)) {\n continue;\n }\n\n // Extract requires, ensures, and message from the constraint object\n let requires: string | undefined;\n let ensures: string | undefined;\n let message: string | undefined;\n\n for (const constraintProp of initializer.getProperties()) {\n if (!Node.isPropertyAssignment(constraintProp)) {\n continue;\n }\n\n const propName = constraintProp.getName();\n const propValue = constraintProp.getInitializer();\n if (!propValue) {\n continue;\n }\n\n if (propName === \"requires\" && Node.isStringLiteral(propValue)) {\n requires = propValue.getLiteralValue();\n } else if (propName === \"ensures\" && Node.isStringLiteral(propValue)) {\n ensures = propValue.getLiteralValue();\n } else if (propName === \"message\" && Node.isStringLiteral(propValue)) {\n message = propValue.getLiteralValue();\n }\n }\n\n results.push({\n field,\n messageType,\n requires,\n ensures,\n message,\n location: {\n file: filePath,\n line: property.getStartLineNumber(),\n },\n });\n }\n\n return results;\n }\n\n // Verified State Discovery (Issue #27)\n\n /**\n * Extract $sharedState declarations with { verify: true } from a source file\n *\n * Finds patterns like:\n * const authState = $sharedState('auth', initialState, { verify: true })\n * export const settings = $syncedState('settings', defaults, { verify: true })\n */\n extractVerifiedStatesFromFile(sourceFile: SourceFile): VerifiedStateInfo[] {\n const verifiedStates: VerifiedStateInfo[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) return;\n\n const stateInfo = this.recognizeVerifiedStateCall(node, filePath);\n if (stateInfo) {\n verifiedStates.push(stateInfo);\n }\n });\n\n return verifiedStates;\n }\n\n /**\n * Recognize a $sharedState/$syncedState/$persistedState call with verify: true\n */\n private recognizeVerifiedStateCall(node: Node, filePath: string): VerifiedStateInfo | null {\n if (!Node.isCallExpression(node)) return null;\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) return null;\n\n const funcName = expression.getText();\n // Match state primitives that support verification\n if (![\"$sharedState\", \"$syncedState\", \"$persistedState\"].includes(funcName)) {\n return null;\n }\n\n const args = node.getArguments();\n if (args.length < 2) return null;\n\n // Check for { verify: true } in options (3rd argument)\n const optionsArg = args[2];\n if (!optionsArg || !this.hasVerifyTrue(optionsArg)) return null;\n\n // Extract state key (1st argument)\n const keyArg = args[0];\n if (!keyArg || !Node.isStringLiteral(keyArg)) return null;\n const key = keyArg.getLiteralValue();\n\n // Get variable name from parent declaration\n const variableName = this.getVariableNameFromParent(node) || key;\n\n // Extract field names from initial value (2nd argument)\n const initialValueArg = args[1];\n const fields = initialValueArg ? this.extractFieldNames(initialValueArg) : [];\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found verified state: ${variableName} (key: \"${key}\") with fields: [${fields.join(\", \")}]`\n );\n }\n\n return {\n key,\n variableName,\n filePath,\n line: node.getStartLineNumber(),\n fields,\n };\n }\n\n /**\n * Check if an options object contains verify: true\n */\n private hasVerifyTrue(optionsNode: Node): boolean {\n if (!Node.isObjectLiteralExpression(optionsNode)) return false;\n\n for (const prop of optionsNode.getProperties()) {\n if (!Node.isPropertyAssignment(prop)) continue;\n\n const name = prop.getName();\n if (name !== \"verify\") continue;\n\n const initializer = prop.getInitializer();\n if (initializer && initializer.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Get variable name from parent VariableDeclaration\n */\n private getVariableNameFromParent(node: Node): string | null {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return null;\n }\n\n /**\n * Extract field names from an initial value expression\n * Handles object literals and identifier references\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Field extraction requires traversing nested object structures\n private extractFieldNames(node: Node): string[] {\n const fields: string[] = [];\n\n if (Node.isObjectLiteralExpression(node)) {\n for (const prop of node.getProperties()) {\n if (Node.isPropertyAssignment(prop) || Node.isShorthandPropertyAssignment(prop)) {\n fields.push(prop.getName());\n }\n }\n } else if (Node.isIdentifier(node)) {\n // Try to resolve the identifier to its declaration\n const definitions = node.getDefinitionNodes();\n for (const def of definitions) {\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (initializer && Node.isObjectLiteralExpression(initializer)) {\n return this.extractFieldNames(initializer);\n }\n }\n }\n }\n\n return fields;\n }\n\n /**\n * Find exported functions that modify verified state signals\n *\n * Looks for patterns:\n * - authState.value = { ... }\n * - authState.value.field = value\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: State mutation detection requires complex AST pattern matching\n findStateMutatingFunctions(\n sourceFile: SourceFile,\n verifiedStates: VerifiedStateInfo[]\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const stateVarNames = new Set(verifiedStates.map((s) => s.variableName));\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n // Find all exported functions\n for (const func of sourceFile.getFunctions()) {\n if (!func.isExported()) continue;\n\n const funcName = func.getName();\n if (!funcName) continue;\n\n // Check if function modifies any verified state\n this.currentFunctionParams = this.extractParameterNames(func);\n const assignments = this.findStateMutationsInFunction(func, stateVarNames);\n if (assignments.length === 0) {\n this.currentFunctionParams = [];\n continue;\n }\n\n // Extract requires/ensures\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n this.extractVerificationConditions(func, preconditions, postconditions);\n\n // Generate message type from function name\n const messageType = this.functionNameToMessageType(funcName);\n\n const parameters =\n this.currentFunctionParams.length > 0 ? [...this.currentFunctionParams] : undefined;\n this.currentFunctionParams = [];\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found state-mutating function: ${funcName} → ${messageType} ` +\n `(${assignments.length} assignments, ${preconditions.length} preconditions, ${postconditions.length} postconditions)`\n );\n }\n\n handlers.push({\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: func.getStartLineNumber(),\n },\n origin: \"stateHandler\" as const,\n parameters,\n });\n }\n\n // Also check exported variable declarations with arrow functions\n for (const varStmt of sourceFile.getVariableStatements()) {\n if (!varStmt.isExported()) continue;\n\n for (const decl of varStmt.getDeclarations()) {\n const initializer = decl.getInitializer();\n if (!initializer) continue;\n if (!Node.isArrowFunction(initializer) && !Node.isFunctionExpression(initializer)) continue;\n\n const funcName = decl.getName();\n if (!funcName) continue;\n\n this.currentFunctionParams = this.extractParameterNames(initializer);\n const assignments = this.findStateMutationsInFunction(initializer, stateVarNames);\n if (assignments.length === 0) {\n this.currentFunctionParams = [];\n continue;\n }\n\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n this.extractVerificationConditions(initializer, preconditions, postconditions);\n\n const messageType = this.functionNameToMessageType(funcName);\n\n const arrowParams =\n this.currentFunctionParams.length > 0 ? [...this.currentFunctionParams] : undefined;\n this.currentFunctionParams = [];\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found state-mutating arrow function: ${funcName} → ${messageType}`);\n }\n\n handlers.push({\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: decl.getStartLineNumber(),\n },\n origin: \"stateHandler\" as const,\n parameters: arrowParams,\n });\n }\n }\n\n return handlers;\n }\n\n /**\n * Find state mutations within a function that target verified state signals\n */\n private findStateMutationsInFunction(\n func: FunctionDeclaration | ArrowFunction | FunctionExpression,\n stateVarNames: Set<string>\n ): StateAssignment[] {\n const mutations: StateAssignment[] = [];\n\n // polly#163: the Issue #27 lift pass models this exported mutator's body as\n // a synthetic handler, so writes within it are on-surface.\n this.recordOnSurfaceSpan(func);\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: AST traversal for state mutations requires multiple pattern checks\n func.forEachDescendant((node) => {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\") return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const path = this.getPropertyPath(left);\n\n // Check for patterns:\n // 1. authState.value = { ... } (full replacement)\n // 2. authState.value.field = value (field update)\n for (const varName of stateVarNames) {\n // Pattern 1: Full state replacement\n // e.g., authState.value = { loggedIn: true } → authState_loggedIn = true\n if (path === `${varName}.value`) {\n const right = node.getRight();\n if (Node.isObjectLiteralExpression(right)) {\n this.extractObjectLiteralAssignments(right, mutations, varName);\n }\n break;\n }\n\n // Pattern 2: Field update\n // e.g., authState.value.loggedIn = true → authState_loggedIn = true\n const fieldPrefix = `${varName}.value.`;\n if (path.startsWith(fieldPrefix)) {\n const fieldName = path.substring(fieldPrefix.length);\n const value = this.extractValue(node.getRight());\n mutations.push({ field: `${varName}_${fieldName}`, value: value ?? \"@\" });\n break;\n }\n }\n });\n\n return mutations;\n }\n\n // polly#163: off-surface mutator detection\n\n /**\n * Whether a file is application source the off-surface scan should cover.\n * Test, spec, BDD-feature, story and e2e files seed verified state directly\n * as fixtures — expected, not an escaped runtime mutator — so they are out.\n */\n private isOffSurfaceScannable(filePath: string): boolean {\n return !/(?:\\.(?:test|spec|stories)\\.[cm]?[jt]sx?$)|(?:\\/(?:__tests__|tests|test|features|e2e|stories|__mocks__)\\/)/i.test(\n filePath\n );\n }\n\n /** The signal factories whose `.value` writes the model treats as state. */\n private static readonly STATE_SIGNAL_FACTORIES = new Set([\n \"$state\",\n \"$sharedState\",\n \"$syncedState\",\n \"$persistedState\",\n \"$meshState\",\n \"$peerState\",\n ]);\n\n /**\n * Collect the variable names of every state-signal declaration in a file,\n * regardless of a `{ verify: true }` flag. Scopes the off-surface scan to\n * genuine state signals so it does not false-positive on unrelated `.value`\n * writes.\n */\n private extractStateSignalVariableNames(sourceFile: SourceFile): string[] {\n const names: string[] = [];\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) return;\n const expr = node.getExpression();\n if (!Node.isIdentifier(expr)) return;\n if (!HandlerExtractor.STATE_SIGNAL_FACTORIES.has(expr.getText())) return;\n const varName = this.getVariableNameFromParent(node);\n if (varName) names.push(varName);\n });\n return names;\n }\n\n /**\n * Mark a function body as part of the modelled handler surface. Called from\n * the two extraction chokepoints — `extractAssignments` (every dispatch / ws /\n * rest / type-guard / switch handler body) and `findStateMutationsInFunction`\n * (every lifted exported mutator). A verified-state write whose position is\n * not contained in any recorded span is off-surface.\n */\n private recordOnSurfaceSpan(node: Node): void {\n this.onSurfaceSpans.push({\n file: node.getSourceFile().getFilePath(),\n start: node.getStart(),\n end: node.getEnd(),\n });\n }\n\n /** True when `pos` in `file` falls inside a modelled handler body span. */\n private isWithinOnSurfaceSpan(file: string, pos: number): boolean {\n for (const span of this.onSurfaceSpans) {\n if (span.file === file && pos >= span.start && pos <= span.end) return true;\n }\n return false;\n }\n\n /**\n * Walk a file for verified-state writes (`signal.value` / `signal.value.field`\n * on the left of `=`) that are NOT inside any modelled handler body. These are\n * the escaped, non-dispatched mutators of polly#163 — the model never explores\n * them, so a field only they (or they-and-a-handler) write is silently\n * uncounted by the #162 coverage report.\n *\n * Must run after all handler extraction so `onSurfaceSpans` is complete.\n */\n private findOffSurfaceMutations(\n sourceFile: SourceFile,\n stateVarNames: ReadonlySet<string>\n ): OffSurfaceMutation[] {\n const out: OffSurfaceMutation[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n if (Node.isBinaryExpression(node)) {\n out.push(...this.offSurfaceWritesAt(node, stateVarNames, filePath));\n }\n });\n\n return out;\n }\n\n /**\n * Off-surface findings for a single assignment node, or `[]` when it is not a\n * verified-state write or is inside a modelled handler body.\n */\n private offSurfaceWritesAt(\n node: BinaryExpression,\n stateVarNames: ReadonlySet<string>,\n filePath: string\n ): OffSurfaceMutation[] {\n if (node.getOperatorToken().getText() !== \"=\") return [];\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left)) return [];\n\n const match = this.matchVerifiedStateWrite(this.getPropertyPath(left), stateVarNames);\n if (!match) return [];\n\n // On-surface writes belong to a modelled handler — skip them.\n if (this.isWithinOnSurfaceSpan(filePath, left.getStart())) return [];\n\n const base = {\n signalVariable: match.signal,\n functionName: this.enclosingFunctionName(node),\n filePath,\n line: node.getStartLineNumber(),\n };\n\n // Field-level write: one finding, keyed `${signal}_${field}`.\n if (match.field !== undefined) {\n return [{ field: `${match.signal}_${match.field}`, ...base }];\n }\n\n // Whole-state replacement: one finding per object-literal key, or the bare\n // signal name when the RHS is not an object literal.\n const fields = this.objectLiteralFieldNames(node.getRight());\n if (fields.length === 0) return [{ field: match.signal, ...base }];\n return fields.map((f) => ({ field: `${match.signal}_${f}`, ...base }));\n }\n\n /**\n * Recognize `signal.value` (whole-state) or `signal.value.field` (field) on\n * the LHS of an assignment, where `signal` is a verified-state variable.\n * Mirrors the two patterns in `findStateMutationsInFunction`.\n */\n private matchVerifiedStateWrite(\n path: string,\n stateVarNames: ReadonlySet<string>\n ): { signal: string; field?: string } | null {\n for (const varName of stateVarNames) {\n if (path === `${varName}.value`) return { signal: varName };\n const prefix = `${varName}.value.`;\n if (path.startsWith(prefix)) return { signal: varName, field: path.substring(prefix.length) };\n }\n return null;\n }\n\n /** Object-literal property names (for `signal.value = { a, b }`). */\n private objectLiteralFieldNames(right: Node): string[] {\n if (!Node.isObjectLiteralExpression(right)) return [];\n const names: string[] = [];\n for (const prop of right.getProperties()) {\n if (Node.isPropertyAssignment(prop) || Node.isShorthandPropertyAssignment(prop)) {\n names.push(prop.getName());\n }\n }\n return names;\n }\n\n /**\n * Name the nearest enclosing function/method of a node for the off-surface\n * report: `Class.method`, a bare function/accessor name, the variable a\n * function expression is bound to, or `<module>` for top-level module code.\n */\n private enclosingFunctionName(node: Node): string {\n let current: Node | undefined = node.getParent();\n while (current) {\n const name = this.namedScope(current);\n if (name !== null) return name;\n current = current.getParent();\n }\n return \"<module>\";\n }\n\n /**\n * The display name of a function-like node, or `null` when `node` is not a\n * function-like scope (keep climbing) or is an unnamed closure (keep climbing\n * to the nearest named scope).\n */\n private namedScope(node: Node): string | null {\n if (Node.isFunctionDeclaration(node)) {\n return node.getName() ?? \"<anonymous function>\";\n }\n if (Node.isMethodDeclaration(node)) {\n const clsName = node.getFirstAncestorByKind(SyntaxKind.ClassDeclaration)?.getName();\n const methodName = node.getName();\n return clsName ? `${clsName}.${methodName}` : methodName;\n }\n if (Node.isGetAccessorDeclaration(node) || Node.isSetAccessorDeclaration(node)) {\n return node.getName();\n }\n if (Node.isArrowFunction(node) || Node.isFunctionExpression(node)) {\n return this.boundFunctionName(node) ?? null;\n }\n return null;\n }\n\n /** The variable / property name a function expression is assigned to, if any. */\n private boundFunctionName(fn: Node): string | undefined {\n const parent = fn.getParent();\n if (!parent) return undefined;\n if (Node.isVariableDeclaration(parent)) return parent.getName();\n if (Node.isPropertyAssignment(parent)) return parent.getName();\n return undefined;\n }\n\n /**\n * Convert function name to message type\n * Examples:\n * handleAuthSuccess → AuthSuccess\n * handleLogout → Logout\n * setUserProfile → SetUserProfile\n */\n private functionNameToMessageType(funcName: string): string {\n // Remove common handler prefixes\n let name = funcName\n .replace(/^handle/, \"\")\n .replace(/^on/, \"\")\n .replace(/^set/, \"Set\")\n .replace(/^update/, \"Update\")\n .replace(/^do/, \"\");\n\n // Ensure first letter is uppercase\n if (name.length > 0) {\n name = name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n return name || funcName;\n }\n\n // $resource() Discovery\n\n /**\n * Extract $resource() calls from a source file.\n *\n * Recognizes: const todos = $resource(\"todos\", { source, fetcher, initialValue })\n */\n private extractResourcesFromFile(sourceFile: SourceFile, filePath: string): ResourceInfo[] {\n const resources: ResourceInfo[] = [];\n\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) return;\n\n const resource = this.extractResourcePattern(node, filePath);\n if (resource) {\n resources.push(resource);\n }\n });\n\n return resources;\n }\n\n /**\n * Match a $resource() call and extract its metadata.\n */\n private extractResourcePattern(node: CallExpression, filePath: string): ResourceInfo | null {\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) return null;\n if (expression.getText() !== \"$resource\") return null;\n\n const args = node.getArguments();\n if (args.length < 2) return null;\n\n // First arg: resource name (string literal)\n const nameArg = args[0];\n if (!nameArg || !Node.isStringLiteral(nameArg)) return null;\n const name = nameArg.getLiteralValue();\n\n // Second arg: options object with source, fetcher, initialValue\n const optionsArg = args[1];\n if (!optionsArg || !Node.isObjectLiteralExpression(optionsArg)) return null;\n\n // Extract source signal reads\n const sourceSignals = this.extractResourceSourceReads(optionsArg);\n\n // Get variable name from parent declaration\n const variableName = this.getVariableNameFromParent(node) || name;\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found $resource: ${variableName} (name: \"${name}\") with source signals: [${sourceSignals.join(\", \")}]`\n );\n }\n\n return {\n name,\n variableName,\n filePath,\n line: node.getStartLineNumber(),\n sourceSignals,\n };\n }\n\n /**\n * Walk the source() function in a $resource options object to find .value reads.\n *\n * Looks for patterns like:\n * source: () => ({ userId: authState.value.userId })\n * Extracts signal field names: [\"authState_userId\"]\n */\n private extractResourceSourceReads(optionsObj: ObjectLiteralExpression): string[] {\n const signals: string[] = [];\n\n const sourceProp = optionsObj.getProperty(\"source\");\n if (!sourceProp || !Node.isPropertyAssignment(sourceProp)) return signals;\n\n const sourceInit = sourceProp.getInitializer();\n if (!sourceInit) return signals;\n\n // Walk the source function body looking for .value reads\n sourceInit.forEachDescendant((node) => {\n if (!Node.isPropertyAccessExpression(node)) return;\n\n const text = node.getText();\n // Match: signal.value.field or signal.value\n const match = text.match(/^(\\w+)\\.value(?:\\.(\\w+))?$/);\n if (match) {\n const signalName = match[1];\n const fieldName = match[2];\n if (!signalName) return;\n if (fieldName) {\n signals.push(`${signalName}_${fieldName}`);\n } else {\n signals.push(signalName);\n }\n }\n });\n\n return signals;\n }\n\n /**\n * Create three synthetic MessageHandler entries for a $resource:\n * - {name}_FetchStart: source available, status != loading → status = loading\n * - {name}_FetchSuccess: status == loading → status = success, error = false\n * - {name}_FetchError: status == loading → status = error, error = true\n */\n private createResourceHandlers(resource: ResourceInfo, context: string): MessageHandler[] {\n const { name, filePath, line } = resource;\n const location = { file: filePath, line };\n\n const fetchStart: MessageHandler = {\n messageType: `${name}_FetchStart`,\n node: context,\n assignments: [\n { field: `${name}_status`, value: \"loading\" },\n { field: `${name}_error`, value: false },\n ],\n preconditions: [\n {\n expression: `${name}_status !== \"loading\"`,\n location: { line, column: 0 },\n },\n ],\n postconditions: [],\n location,\n };\n\n const fetchSuccess: MessageHandler = {\n messageType: `${name}_FetchSuccess`,\n node: context,\n assignments: [\n { field: `${name}_status`, value: \"success\" },\n { field: `${name}_error`, value: false },\n ],\n preconditions: [\n {\n expression: `${name}_status === \"loading\"`,\n location: { line, column: 0 },\n },\n ],\n postconditions: [],\n location,\n };\n\n const fetchError: MessageHandler = {\n messageType: `${name}_FetchError`,\n node: context,\n assignments: [\n { field: `${name}_status`, value: \"error\" },\n { field: `${name}_error`, value: true },\n ],\n preconditions: [\n {\n expression: `${name}_status === \"loading\"`,\n location: { line, column: 0 },\n },\n ],\n postconditions: [],\n location,\n };\n\n return [fetchStart, fetchSuccess, fetchError];\n }\n}\n\nexport function extractHandlers(tsConfigPath: string): HandlerAnalysis {\n const extractor = new HandlerExtractor(tsConfigPath);\n return extractor.extractHandlers();\n}\n",
|
|
29
|
+
"// Handler extraction from TypeScript code\n// Extracts message handlers and their state mutations\n//\n// STATE ASSIGNMENT EXTRACTION - SUPPORTED PATTERNS\n//\n// The following patterns are extracted and converted to TLA+ state transitions:\n//\n// OBJECTS:\n// ✓ state.field = value → direct assignment\n// ✓ signal.value.field = value → signal nested field\n// ✓ signal.value = { field: value } → object literal\n// ✓ signal.value = { ...signal.value, f } → spread update (extracts changed fields)\n//\n// ARRAYS:\n// ✓ [...arr, item] → Append(@, payload)\n// ✓ [item, ...arr] → <<payload>> \\o @\n// ✓ arr.filter(...) → SelectSeq(@, LAMBDA t: TRUE)\n// ✓ arr.map(...) → [i \\in DOMAIN @ |-> @[i]]\n// ✓ arr.slice(...) → SubSeq(@, 1, Len(@))\n// ✓ arr.concat(...) → @ \\o <<payload>>\n// ✓ arr.reverse() → [i \\in DOMAIN @ |-> @[Len(@) - i + 1]]\n//\n// SETS:\n// ✓ new Set([...set, item]) → @ \\union {payload}\n// ✓ new Set([...set].filter(...)) → @ \\ {payload}\n// ✓ new Set() → {}\n//\n// MAPS:\n// ✓ new Map([...map, [k, v]]) → [@ EXCEPT ![payload.key] = payload.value]\n// ✓ new Map([...map].filter(...)) → [k \\in DOMAIN @ \\ {payload.key} |-> @[k]]\n// ✓ new Map() → <<>>\n//\n// UNSUPPORTED PATTERNS (will emit warnings)\n//\n// MUTATING METHODS (modify in place, don't return new value):\n// ✗ arr.push(), arr.pop(), arr.shift(), arr.unshift(), arr.splice()\n// ✗ arr.sort() with in-place mutation\n// ✗ set.add(), set.delete(), set.clear()\n// ✗ map.set(), map.delete(), map.clear()\n//\n// QUERY METHODS (return non-collection values):\n// ✗ arr.find(), arr.findIndex(), arr.reduce()\n// ✗ arr.some(), arr.every(), arr.includes(), arr.indexOf()\n// ✗ set.has(), map.has(), map.get()\n//\n// COMPLEX EXPRESSIONS:\n// ✗ Ternary expressions in assignments\n// ✗ Function calls as values (except supported collection methods)\n// ✗ Computed property names\n// ✗ Dynamic field names\n// ✗ Nested object updates beyond first level\n// ✗ Object.assign(), Object.keys(), Object.values(), Object.entries()\n//\n// To request support for additional patterns, please open an issue at:\n// https://github.com/anthropics/polly/issues\n\nimport {\n type ArrowFunction,\n type BinaryExpression,\n type CallExpression,\n type FunctionDeclaration,\n type FunctionExpression,\n type Identifier,\n type IfStatement,\n Node,\n type ObjectLiteralExpression,\n Project,\n type PropertyAccessExpression,\n type SourceFile,\n type Statement,\n type SwitchStatement,\n SyntaxKind,\n type VariableDeclaration,\n VariableDeclarationKind,\n} from \"ts-morph\";\nimport type {\n ComponentRelationship,\n GlobalStateConstraint,\n MeshOrPeerSignalInfo,\n MessageHandler,\n OffSurfaceMutation,\n ResourceInfo,\n StateAssignment,\n StateConstraint,\n VerificationCondition,\n VerifiedStateInfo,\n} from \"../types\";\nimport { RelationshipExtractor } from \"./relationships\";\n\nexport interface ExtractionWarning {\n type: \"unsupported_pattern\";\n pattern: string;\n location: string;\n suggestion: string;\n}\n\nexport interface HandlerAnalysis {\n handlers: MessageHandler[];\n messageTypes: Set<string>;\n stateConstraints: StateConstraint[];\n globalStateConstraints: GlobalStateConstraint[];\n verifiedStates: VerifiedStateInfo[];\n meshOrPeerSignals: MeshOrPeerSignalInfo[];\n resources: ResourceInfo[];\n offSurfaceMutations: OffSurfaceMutation[];\n warnings: ExtractionWarning[];\n}\n\nexport class HandlerExtractor {\n private project: Project;\n private typeGuardCache: WeakMap<SourceFile, Map<string, string>>;\n private relationshipExtractor: RelationshipExtractor;\n private analyzedFiles: Set<string>; // Track files we've already analyzed\n private packageRoot: string; // Package directory (contains package.json)\n private warnings: ExtractionWarning[]; // Warnings for unsupported patterns\n private currentFunctionParams: string[] = []; // Current handler's parameter names\n private contextOverrides: Map<string, string>; // path prefix → context name\n // polly#163: source spans of every function body the extractor modelled as a\n // handler. A verified-state write outside all of these is \"off-surface\".\n private onSurfaceSpans: Array<{ file: string; start: number; end: number }> = [];\n\n constructor(tsConfigPath: string, contextOverrides?: Map<string, string>) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n this.typeGuardCache = new WeakMap();\n this.relationshipExtractor = new RelationshipExtractor();\n this.analyzedFiles = new Set<string>();\n this.warnings = [];\n this.contextOverrides = contextOverrides || new Map();\n // Find package root by looking for package.json from tsconfig location\n this.packageRoot = this.findPackageRoot(tsConfigPath);\n }\n\n /**\n * Emit a warning for an unsupported pattern\n */\n private warnUnsupportedPattern(pattern: string, location: string, suggestion: string): void {\n // Deduplicate warnings by pattern + location\n const exists = this.warnings.some((w) => w.pattern === pattern && w.location === location);\n if (!exists) {\n this.warnings.push({\n type: \"unsupported_pattern\",\n pattern,\n location,\n suggestion,\n });\n }\n }\n\n /**\n * Extract parameter names from a function\n */\n private extractParameterNames(\n func: ArrowFunction | FunctionExpression | FunctionDeclaration\n ): string[] {\n return func.getParameters().map((p) => p.getName());\n }\n\n /**\n * Get a location string for a node\n */\n private getNodeLocation(node: Node): string {\n const sourceFile = node.getSourceFile();\n const lineAndCol = sourceFile.getLineAndColumnAtPos(node.getStart());\n const filePath = sourceFile.getFilePath();\n const relativePath = filePath.startsWith(this.packageRoot)\n ? filePath.substring(this.packageRoot.length + 1)\n : filePath;\n return `${relativePath}:${lineAndCol.line}`;\n }\n\n /**\n * Find the nearest package.json directory from tsconfig location\n * This defines the package boundary - we only analyze files within this package\n */\n private findPackageRoot(tsConfigPath: string): string {\n let dir = tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n // Walk up until we find package.json\n while (dir.length > 1) {\n try {\n const packageJsonPath = `${dir}/package.json`;\n const file = Bun.file(packageJsonPath);\n if (file.size > 0) {\n // Found package.json\n return dir;\n }\n } catch {\n // Keep looking\n }\n const parentDir = dir.substring(0, dir.lastIndexOf(\"/\"));\n if (parentDir === dir) break; // Reached root\n dir = parentDir;\n }\n // Fallback: use tsconfig directory\n return tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n }\n\n /**\n * Extract all message handlers from the codebase\n *\n * Uses transitive import following to discover all reachable code:\n * 1. Start with source files from tsconfig that are within the package\n * 2. Follow imports recursively (within package boundary)\n * 3. Cache analyzed files to avoid re-processing\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Handler extraction requires analyzing multiple patterns and file boundaries\n extractHandlers(): HandlerAnalysis {\n const handlers: MessageHandler[] = [];\n const messageTypes = new Set<string>();\n const invalidMessageTypes = new Set<string>();\n const stateConstraints: StateConstraint[] = [];\n const globalStateConstraints: GlobalStateConstraint[] = [];\n const verifiedStates: VerifiedStateInfo[] = [];\n const meshOrPeerSignals: MeshOrPeerSignalInfo[] = [];\n const resources: ResourceInfo[] = [];\n this.warnings = []; // Clear warnings from previous runs\n this.onSurfaceSpans = []; // polly#163: reset modelled-handler spans\n\n // Find all source files from tsconfig as potential entry points\n const allSourceFiles = this.project.getSourceFiles();\n // Filter to only files within the package boundary\n const entryPoints = allSourceFiles.filter((f) => this.isWithinPackage(f.getFilePath()));\n\n this.debugLogSourceFiles(allSourceFiles, entryPoints);\n\n // Analyze each entry point and follow its imports transitively\n for (const entryPoint of entryPoints) {\n this.analyzeFileAndImports(\n entryPoint,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints,\n globalStateConstraints,\n verifiedStates,\n resources\n );\n }\n\n // Issue #27: Second pass - find functions that modify verified states\n if (verifiedStates.length > 0) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found ${verifiedStates.length} verified state(s), scanning for mutating functions...`\n );\n }\n\n for (const filePath of this.analyzedFiles) {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n\n const mutatingHandlers = this.findStateMutatingFunctions(sourceFile, verifiedStates);\n\n for (const handler of mutatingHandlers) {\n // Avoid duplicates - check if handler already exists for this message type\n const exists = handlers.some(\n (h) =>\n h.messageType === handler.messageType && h.location.file === handler.location.file\n );\n\n if (!exists) {\n handlers.push(handler);\n if (this.canRepresentAsTLAAction(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n }\n }\n\n // polly#117: collect mesh- and peer-scoped signal declarations so\n // the CLI can warn when a requires/ensures predicate references\n // one — the verifier currently has no native support for their\n // cross-peer semantics.\n for (const filePath of this.analyzedFiles) {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n meshOrPeerSignals.push(...this.extractMeshOrPeerSignalsFromFile(sourceFile));\n }\n\n // polly#163: third pass — find state-signal writes that fall outside every\n // function body the handler extraction above modelled (the non-dispatched\n // `register()` shape #160). Runs last so all on-surface spans are recorded.\n //\n // Scope is the whole state-signal family (config-free), not just\n // `{ verify: true }` declarations — dispatch handlers already pick up any\n // `signal.value` write by pattern, so the off-surface scan must too. The\n // verify layer (which has the config) separates declared fields from the\n // rest.\n const stateSignalNames = new Set<string>();\n for (const filePath of this.analyzedFiles) {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n for (const name of this.extractStateSignalVariableNames(sourceFile)) {\n stateSignalNames.add(name);\n }\n }\n for (const v of verifiedStates) stateSignalNames.add(v.variableName);\n for (const m of meshOrPeerSignals) stateSignalNames.add(m.variableName);\n\n const offSurfaceMutations: OffSurfaceMutation[] = [];\n if (stateSignalNames.size > 0) {\n for (const filePath of this.analyzedFiles) {\n // Test/spec/feature files seed verified state directly by design; that\n // is not a model gap, so the off-surface scan only covers app source.\n if (!this.isOffSurfaceScannable(filePath)) continue;\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n offSurfaceMutations.push(...this.findOffSurfaceMutations(sourceFile, stateSignalNames));\n }\n }\n\n this.debugLogExtractionResults(handlers.length, invalidMessageTypes.size);\n this.debugLogAnalysisStats(allSourceFiles.length, entryPoints.length);\n\n return {\n handlers,\n messageTypes,\n stateConstraints,\n globalStateConstraints,\n verifiedStates,\n meshOrPeerSignals,\n resources,\n offSurfaceMutations,\n warnings: this.warnings,\n };\n }\n\n /**\n * Walk a source file for `$meshState(id, init)` and `$peerState(id, init)`\n * calls and return one entry per call, tagged with its scope.\n */\n extractMeshOrPeerSignalsFromFile(sourceFile: SourceFile): MeshOrPeerSignalInfo[] {\n const out: MeshOrPeerSignalInfo[] = [];\n const filePath = sourceFile.getFilePath();\n sourceFile.forEachDescendant((node) => {\n const info = this.recognizeMeshOrPeerStateCall(node, filePath);\n if (info) out.push(info);\n });\n return out;\n }\n\n /**\n * Recognize a `$meshState(...)` or `$peerState(...)` call and return\n * a descriptor for the resulting signal. Mirrors\n * `recognizeVerifiedStateCall` but for the mesh/peer family.\n */\n private recognizeMeshOrPeerStateCall(node: Node, filePath: string): MeshOrPeerSignalInfo | null {\n if (!Node.isCallExpression(node)) return null;\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) return null;\n\n const funcName = expression.getText();\n const kind: \"mesh\" | \"peer\" | null =\n funcName === \"$meshState\" ? \"mesh\" : funcName === \"$peerState\" ? \"peer\" : null;\n if (!kind) return null;\n\n const args = node.getArguments();\n const keyArg = args[0];\n if (!keyArg || !Node.isStringLiteral(keyArg)) return null;\n const key = keyArg.getLiteralValue();\n\n const variableName = this.getVariableNameFromParent(node) || key;\n const access = this.extractMeshAccess(args[2]);\n\n return {\n kind,\n key,\n variableName,\n filePath,\n line: node.getStartLineNumber(),\n ...(access ? { access } : {}),\n };\n }\n\n /**\n * polly#114: pull the read/write predicate source text out of a\n * `$meshState` / `$peerState` declaration's `access` option. The\n * runtime access set cannot be resolved statically; the predicate\n * expression that gates it can, and is what the visualiser labels.\n */\n private extractMeshAccess(\n optionsArg: Node | undefined\n ): { read: string; write: string } | undefined {\n if (!optionsArg || !Node.isObjectLiteralExpression(optionsArg)) return undefined;\n const accessProp = optionsArg.getProperty(\"access\");\n if (!accessProp || !Node.isPropertyAssignment(accessProp)) return undefined;\n const accessObj = accessProp.getInitializer();\n if (!accessObj || !Node.isObjectLiteralExpression(accessObj)) return undefined;\n\n const predicateText = (name: string): string | undefined => {\n const prop = accessObj.getProperty(name);\n if (!prop || !Node.isPropertyAssignment(prop)) return undefined;\n return prop.getInitializer()?.getText().replace(/\\s+/g, \" \").trim();\n };\n const read = predicateText(\"read\");\n const write = predicateText(\"write\");\n if (read === undefined && write === undefined) return undefined;\n return { read: read ?? \"unset\", write: write ?? \"unset\" };\n }\n\n /**\n * Analyze a file and recursively follow its imports\n *\n * This implements the Knip pattern: follow imports transitively\n * to discover all reachable code, including files outside src/\n * that are imported from analyzed files.\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Import following requires conditional logic for package boundaries, caching, and recursion\n private analyzeFileAndImports(\n sourceFile: SourceFile,\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>,\n stateConstraints: StateConstraint[],\n globalStateConstraints: GlobalStateConstraint[],\n verifiedStates: VerifiedStateInfo[],\n resources: ResourceInfo[]\n ): void {\n const filePath = sourceFile.getFilePath();\n\n // Skip if already analyzed\n if (this.analyzedFiles.has(filePath)) {\n return;\n }\n\n // Mark as analyzed\n this.analyzedFiles.add(filePath);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Analyzing: ${filePath}`);\n }\n\n // Extract handlers from this file\n const fileHandlers = this.extractFromFile(sourceFile);\n handlers.push(...fileHandlers);\n this.categorizeHandlerMessageTypes(fileHandlers, messageTypes, invalidMessageTypes);\n\n // Extract state constraints from this file\n const fileConstraints = this.extractStateConstraintsFromFile(sourceFile);\n stateConstraints.push(...fileConstraints);\n\n // Extract global state constraints (stateConstraint() calls)\n const fileGlobalConstraints = this.extractGlobalStateConstraintsFromFile(sourceFile);\n globalStateConstraints.push(...fileGlobalConstraints);\n\n // Issue #27: Extract verified states from this file\n const fileVerifiedStates = this.extractVerifiedStatesFromFile(sourceFile);\n verifiedStates.push(...fileVerifiedStates);\n\n // Extract $resource() calls and emit synthetic handlers\n const fileResources = this.extractResourcesFromFile(sourceFile, filePath);\n for (const resource of fileResources) {\n resources.push(resource);\n const context = this.inferContext(filePath);\n const syntheticHandlers = this.createResourceHandlers(resource, context);\n for (const handler of syntheticHandlers) {\n handlers.push(handler);\n if (this.canRepresentAsTLAAction(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n\n // Follow imports to discover more files (within package boundary only)\n const importDeclarations = sourceFile.getImportDeclarations();\n for (const importDecl of importDeclarations) {\n const importedFile = importDecl.getModuleSpecifierSourceFile();\n\n if (importedFile) {\n const importedPath = importedFile.getFilePath();\n\n // Only follow imports within the same package\n // This excludes:\n // - node_modules (other packages)\n // - Framework code in monorepo parent (other packages)\n // But includes:\n // - All files in this package (src/, specs/, tests/, etc.)\n if (!this.isWithinPackage(importedPath)) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Skipping external import: ${importedPath}`);\n }\n continue;\n }\n\n // Recursively analyze imported file\n this.analyzeFileAndImports(\n importedFile,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints,\n globalStateConstraints,\n verifiedStates,\n resources\n );\n } else if (process.env[\"POLLY_DEBUG\"]) {\n // Log unresolved imports for debugging\n const specifier = importDecl.getModuleSpecifierValue();\n if (!specifier.startsWith(\"node:\") && !this.isNodeModuleImport(specifier)) {\n console.log(`[DEBUG] Could not resolve import: ${specifier} in ${filePath}`);\n }\n }\n }\n }\n\n /**\n * Check if a file path is within the package boundary\n */\n private isWithinPackage(filePath: string): boolean {\n // Must be under package root\n if (!filePath.startsWith(this.packageRoot)) {\n return false;\n }\n // Must not be in node_modules\n if (filePath.includes(\"/node_modules/\")) {\n return false;\n }\n return true;\n }\n\n /**\n * Check if an import specifier is a node_modules import\n */\n private isNodeModuleImport(specifier: string): boolean {\n // Relative imports start with . or ..\n // Absolute/node_modules imports don't\n return !specifier.startsWith(\".\") && !specifier.startsWith(\"/\");\n }\n\n private debugLogAnalysisStats(totalSourceFiles: number, entryPointCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Analysis Statistics:`);\n console.log(`[DEBUG] Package root: ${this.packageRoot}`);\n console.log(`[DEBUG] Source files from tsconfig: ${totalSourceFiles}`);\n console.log(`[DEBUG] Entry points (in package): ${entryPointCount}`);\n console.log(`[DEBUG] Files analyzed (including imports): ${this.analyzedFiles.size}`);\n console.log(\n `[DEBUG] Additional files discovered: ${this.analyzedFiles.size - entryPointCount}`\n );\n }\n\n private debugLogSourceFiles(allSourceFiles: SourceFile[], entryPoints: SourceFile[]): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Loaded ${allSourceFiles.length} source files from tsconfig`);\n console.log(`[DEBUG] Filtered to ${entryPoints.length} entry points within package`);\n if (entryPoints.length <= 20) {\n for (const sf of entryPoints) {\n console.log(`[DEBUG] - ${sf.getFilePath()}`);\n }\n }\n }\n\n private categorizeHandlerMessageTypes(\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>\n ): void {\n for (const handler of handlers) {\n if (this.canRepresentAsTLAAction(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n\n private debugLogExtractionResults(handlerCount: number, invalidCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Total handlers extracted: ${handlerCount}`);\n if (invalidCount > 0) {\n console.log(`[DEBUG] Filtered ${invalidCount} invalid message type(s) from handlers`);\n }\n }\n\n /**\n * Check whether a message type can be represented in the generated TLA+\n * (polly#144). Message types become quoted string literals and are sanitized\n * into `Handle…` action names, so HTTP routes (\"POST /register/options\") and\n * colon-namespaced messages (\"chat:send\") are all representable — the only\n * requirement is at least one letter to anchor the action name. Strings\n * carrying TS type-expression punctuation (`{}();<>=`) are rejected as\n * extraction artifacts rather than 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 * Extract handlers from a single source file\n */\n private extractFromFile(sourceFile: SourceFile): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n sourceFile.forEachDescendant((node) => {\n this.processNodeForHandlers(node, context, filePath, handlers);\n });\n\n return handlers;\n }\n\n /**\n * Process a single node to find handler patterns\n */\n private processNodeForHandlers(\n node: Node,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n if (Node.isCallExpression(node)) {\n this.processCallExpressionHandler(node, context, filePath, handlers);\n }\n\n if (Node.isSwitchStatement(node)) {\n const switchHandlers = this.extractSwitchCaseHandlers(node, context, filePath);\n handlers.push(...switchHandlers);\n }\n\n if (Node.isVariableDeclaration(node)) {\n const mapHandlers = this.extractHandlerMapPattern(node, context, filePath);\n handlers.push(...mapHandlers);\n }\n\n if (Node.isIfStatement(node) && !this.isElseIfStatement(node)) {\n const typeGuardHandlers = this.extractTypeGuardHandlers(node, context, filePath);\n handlers.push(...typeGuardHandlers);\n }\n }\n\n /**\n * Process call expression to find .on() or .addEventListener() handlers\n */\n private processCallExpressionHandler(\n node: CallExpression,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n const expression = node.getExpression();\n\n if (Node.isPropertyAccessExpression(expression)) {\n const methodName = expression.getName();\n\n if (methodName === \"on\" || methodName === \"addEventListener\") {\n const handler = this.extractHandler(node, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n\n if (methodName === \"ws\") {\n this.extractElysiaWsHandlers(node, context, filePath, handlers);\n }\n\n // REST route handlers\n if (this.isRestMethod(methodName) && this.isWebFrameworkFile(node.getSourceFile())) {\n const restHandler = this.extractRestHandler(node, methodName, context, filePath);\n if (restHandler) {\n handlers.push(restHandler);\n }\n }\n }\n }\n\n /**\n * Check if a method name is a REST HTTP method\n */\n private isRestMethod(name: string): boolean {\n return [\"get\", \"post\", \"put\", \"delete\", \"patch\"].includes(name);\n }\n\n /**\n * Check if a node is an else-if statement\n */\n private isElseIfStatement(node: Node): boolean {\n const parent = node.getParent();\n return parent !== undefined && Node.isIfStatement(parent);\n }\n\n /**\n * Extract handler details from a .on() call expression\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: handler extraction requires branching logic\n private extractHandler(\n callExpr: CallExpression,\n context: string,\n filePath: string\n ): MessageHandler | null {\n const args = callExpr.getArguments();\n\n if (args.length < 2) {\n return null;\n }\n\n // First argument should be the message type (string literal)\n const messageTypeArg = args[0];\n let messageType: string | null = null;\n\n if (Node.isStringLiteral(messageTypeArg)) {\n messageType = messageTypeArg.getLiteralValue();\n } else if (Node.isTemplateExpression(messageTypeArg)) {\n // Handle template literals if needed\n messageType = messageTypeArg.getText().replace(/[`'\"]/g, \"\");\n }\n\n if (!messageType) {\n return null;\n }\n\n // Second argument is the handler function\n const handlerArg = args[1];\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Parse the handler function for state assignments and verification conditions\n let actualHandler: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n actualHandler = handlerArg;\n } else if (Node.isIdentifier(handlerArg)) {\n // Resolve function reference (e.g., bus.on('query', handleQuery))\n actualHandler = this.resolveFunctionReference(handlerArg);\n }\n\n let parameters: string[] | undefined;\n\n if (actualHandler) {\n this.currentFunctionParams = this.extractParameterNames(actualHandler);\n parameters =\n this.currentFunctionParams.length > 0 ? [...this.currentFunctionParams] : undefined;\n this.extractAssignments(actualHandler, assignments);\n this.extractVerificationConditions(actualHandler, preconditions, postconditions);\n\n // Check for async mutations (potential race conditions)\n if (Node.isArrowFunction(actualHandler) || Node.isFunctionExpression(actualHandler)) {\n this.checkAsyncMutations(actualHandler, messageType);\n }\n this.currentFunctionParams = [];\n }\n\n const line = callExpr.getStartLineNumber();\n\n // Extract relationships from handler code\n const sourceFile = callExpr.getSourceFile();\n const handlerName = `${messageType}_handler`;\n let relationships: ComponentRelationship[] | undefined;\n\n if (actualHandler) {\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n actualHandler,\n sourceFile,\n handlerName\n );\n if (detectedRelationships.length > 0) {\n relationships = detectedRelationships;\n }\n }\n\n return {\n messageType,\n node: context, // Renamed from 'context' to 'node' for generalization\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line,\n },\n relationships,\n origin: \"event\" as const,\n parameters,\n };\n }\n\n /**\n * Extract handlers from Elysia .ws() call\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: WebSocket handler extraction requires analyzing multiple callback patterns\n private extractElysiaWsHandlers(\n node: CallExpression,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n const args = node.getArguments();\n if (args.length < 2) return;\n\n // First arg is the route path (string)\n const routeArg = args[0];\n if (!routeArg || !Node.isStringLiteral(routeArg)) return;\n const routePath = routeArg.getLiteralValue();\n\n // Second arg is the config object\n const configArg = args[1];\n if (!configArg || !Node.isObjectLiteralExpression(configArg)) return;\n\n // Look for message, open, close callbacks\n const callbacks = [\"message\", \"open\", \"close\"];\n for (const cbName of callbacks) {\n const prop = configArg.getProperty(cbName);\n if (!prop) continue;\n\n let funcBody: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isMethodDeclaration(prop)) {\n // Method shorthand: message(ws, data) { ... }\n // Use the method body directly for analysis\n funcBody = prop as unknown as FunctionDeclaration;\n } else if (Node.isPropertyAssignment(prop)) {\n const init = prop.getInitializer();\n if (init && (Node.isArrowFunction(init) || Node.isFunctionExpression(init))) {\n funcBody = init;\n }\n }\n\n if (!funcBody) continue;\n\n if (cbName === \"message\") {\n // Walk body for type guard handlers and switch statements\n const body = funcBody.getBody();\n if (!body) continue;\n\n const subHandlers = this.extractSubHandlersFromBody(body, context, filePath);\n\n if (subHandlers.length > 0) {\n handlers.push(...subHandlers);\n } else {\n // No sub-handlers found, register as a generic ws message handler\n handlers.push(\n this.buildWsHandler(\n `ws_message`,\n routePath,\n context,\n filePath,\n funcBody,\n node.getStartLineNumber()\n )\n );\n }\n } else {\n // open/close lifecycle handlers\n handlers.push(\n this.buildWsHandler(\n `ws_${cbName}`,\n routePath,\n context,\n filePath,\n funcBody,\n node.getStartLineNumber()\n )\n );\n }\n }\n }\n\n /**\n * Extract sub-handlers (type guards and switch cases) from a function body\n */\n private extractSubHandlersFromBody(\n body: Node,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const subHandlers: MessageHandler[] = [];\n\n body.forEachDescendant((child) => {\n if (Node.isIfStatement(child) && !this.isElseIfStatement(child)) {\n const typeGuardHandlers = this.extractTypeGuardHandlers(child, context, filePath);\n subHandlers.push(...typeGuardHandlers);\n }\n if (Node.isSwitchStatement(child)) {\n const switchHandlers = this.extractSwitchCaseHandlers(child, context, filePath);\n subHandlers.push(...switchHandlers);\n }\n });\n\n return subHandlers;\n }\n\n /**\n * Build a WebSocket handler entry\n */\n private buildWsHandler(\n messageType: string,\n _routePath: string,\n context: string,\n filePath: string,\n funcBody: ArrowFunction | FunctionExpression | FunctionDeclaration,\n line: number\n ): MessageHandler {\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n this.currentFunctionParams = this.extractParameterNames(funcBody);\n this.extractAssignments(funcBody, assignments);\n this.extractVerificationConditions(funcBody, preconditions, postconditions);\n this.currentFunctionParams = [];\n\n return {\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: { file: filePath, line },\n origin: \"event\" as const,\n };\n }\n\n /**\n * Extract a REST route handler (.get/.post/.put/.delete/.patch)\n */\n private extractRestHandler(\n node: CallExpression,\n methodName: string,\n context: string,\n filePath: string\n ): MessageHandler | null {\n const args = node.getArguments();\n if (args.length < 2) return null;\n\n // First arg must be a string literal route path\n const routeArg = args[0];\n if (!routeArg || !Node.isStringLiteral(routeArg)) return null;\n const routePath = routeArg.getLiteralValue();\n\n const httpMethod = methodName.toUpperCase();\n const messageType = `${httpMethod} ${routePath}`;\n\n // Second arg is the handler function\n const handlerArg = args[1];\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n let actualHandler: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n actualHandler = handlerArg;\n } else if (Node.isIdentifier(handlerArg)) {\n actualHandler = this.resolveFunctionReference(handlerArg);\n }\n\n let parameters: string[] | undefined;\n\n if (actualHandler) {\n this.currentFunctionParams = this.extractParameterNames(actualHandler);\n parameters =\n this.currentFunctionParams.length > 0 ? [...this.currentFunctionParams] : undefined;\n this.extractAssignments(actualHandler, assignments);\n this.extractVerificationConditions(actualHandler, preconditions, postconditions);\n this.currentFunctionParams = [];\n }\n\n return {\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: node.getStartLineNumber(),\n },\n origin: \"event\" as const,\n parameters,\n handlerKind: \"rest\",\n httpMethod,\n routePath,\n };\n }\n\n /**\n * Check if a source file imports from a known web framework\n */\n private isWebFrameworkFile(sourceFile: SourceFile): boolean {\n const frameworks = [\"elysia\", \"express\", \"hono\", \"fastify\", \"koa\", \"@elysiajs/eden\"];\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const specifier = importDecl.getModuleSpecifierValue();\n if (frameworks.some((fw) => specifier === fw || specifier.startsWith(`${fw}/`))) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Extract state assignments from a handler function\n * Handles:\n * - Simple assignments: state.field = value\n * - Compound operators: state.count += 1\n * - Unary operators: state.count++, state.count--, ++state.count, --state.count\n * - Array mutations: state.items.push(item)\n * - Array indexing: state.items[0] = value\n */\n private extractAssignments(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\n assignments: StateAssignment[]\n ): void {\n // polly#163: this body is part of the modelled handler surface. Any\n // verified-state write inside its span is \"on-surface\" and must not be\n // re-reported as an escaped mutator.\n this.recordOnSurfaceSpan(funcNode);\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.extractBinaryExpressionAssignment(node, assignments);\n }\n\n if (Node.isCallExpression(node)) {\n this.extractArrayMutationAssignment(node, assignments);\n }\n\n if (Node.isPostfixUnaryExpression(node) || Node.isPrefixUnaryExpression(node)) {\n this.extractUnaryExpressionAssignment(node, assignments);\n }\n });\n }\n\n /**\n * Extract assignments from binary expressions (=, +=, -=, etc.)\n */\n private extractBinaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n\n if (operator === \"=\") {\n this.extractSimpleOrElementAccessAssignment(node, assignments);\n } else if ([\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) {\n this.extractCompoundAssignment(node, assignments);\n }\n }\n\n /**\n * Extract simple or element access assignments (state.field = value or state.items[0] = value)\n */\n private extractSimpleOrElementAccessAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n this.extractPropertyAccessAssignment(left, right, assignments);\n } else if (Node.isElementAccessExpression(left)) {\n this.extractElementAccessAssignment(left, right, assignments);\n }\n }\n\n /**\n * Extract property access assignment (state.field = value or someState.value.field = value)\n */\n private extractPropertyAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const fieldPath = this.getPropertyPath(left);\n\n // Try each pattern in order\n if (this.tryExtractStateFieldPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalNestedFieldPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalObjectPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalArrayPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalMethodPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSetConstructorPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractMapConstructorPattern(fieldPath, right, assignments)) return;\n this.tryExtractSignalDirectValuePattern(fieldPath, right, assignments);\n }\n\n /** Pattern 1: state.field = value */\n private tryExtractStateFieldPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.startsWith(\"state.\")) return false;\n const field = fieldPath.substring(6);\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field, value });\n }\n return true;\n }\n\n /** Pattern 2: someState.value.field = value (signal pattern with nested field) */\n private tryExtractSignalNestedFieldPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n const valueFieldMatch = fieldPath.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\\.value\\.(.+)$/);\n if (!valueFieldMatch?.[1] || !valueFieldMatch?.[2]) return false;\n const signalName = valueFieldMatch[1];\n const fieldName = valueFieldMatch[2];\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field: `${signalName}_${fieldName}`, value });\n }\n return true;\n }\n\n /** Pattern 3: someState.value = { object literal } (signal replacement or spread update) */\n private tryExtractSignalObjectPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isObjectLiteralExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n if (this.isSpreadUpdatePattern(right, fieldPath)) {\n this.extractSpreadUpdateAssignments(right, assignments, signalName);\n } else {\n this.extractObjectLiteralAssignments(right, assignments, signalName);\n }\n return true;\n }\n\n /** Check if object literal is a spread update pattern: { ...existing, field: value } */\n private isSpreadUpdatePattern(\n objectLiteral: import(\"ts-morph\").ObjectLiteralExpression,\n fieldPath: string\n ): boolean {\n const properties = objectLiteral.getProperties();\n if (properties.length === 0) return false;\n const firstProp = properties[0];\n if (!firstProp || !Node.isSpreadAssignment(firstProp)) return false;\n const spreadExpr = firstProp.getExpression();\n if (!spreadExpr) return false;\n return this.getPropertyPath(spreadExpr) === fieldPath;\n }\n\n /** Pattern 4: someState.value = [...someState.value, item] (array spread) */\n private tryExtractSignalArrayPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isArrayLiteralExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n const arrayAssignment = this.extractArraySpreadOperation(right, fieldPath, signalName);\n if (arrayAssignment) {\n assignments.push(arrayAssignment);\n }\n return true;\n }\n\n /** Pattern 5: someState.value = someState.value.filter(...) or .map(...) (array methods) */\n private tryExtractSignalMethodPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isCallExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n\n // Check for and warn about Set/Map direct method calls that mutate\n this.checkForMutatingCollectionMethods(right);\n\n const methodAssignment = this.extractArrayMethodOperation(right, fieldPath, signalName);\n if (methodAssignment) {\n assignments.push(methodAssignment);\n }\n return true;\n }\n\n /** Check for mutating Set/Map methods and emit warnings */\n private checkForMutatingCollectionMethods(callExpr: import(\"ts-morph\").CallExpression): void {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for Set mutating methods\n const setMethods = [\"add\", \"delete\", \"clear\"];\n if (setMethods.includes(methodName)) {\n // Try to determine if this is a Set operation by checking the source expression\n const sourceText = sourceExpr.getText();\n if (sourceText.includes(\"Set\") || this.looksLikeSetOrMap(sourceExpr, \"Set\")) {\n this.warnUnsupportedPattern(\n `set.${methodName}()`,\n this.getNodeLocation(callExpr),\n `Set.${methodName}() mutates in place. Use: new Set([...set, item]) for add, new Set([...set].filter(...)) for delete.`\n );\n }\n }\n\n // Check for Map mutating methods\n const mapMethods = [\"set\", \"delete\", \"clear\"];\n if (mapMethods.includes(methodName)) {\n const sourceText = sourceExpr.getText();\n if (sourceText.includes(\"Map\") || this.looksLikeSetOrMap(sourceExpr, \"Map\")) {\n this.warnUnsupportedPattern(\n `map.${methodName}()`,\n this.getNodeLocation(callExpr),\n `Map.${methodName}() mutates in place. Use: new Map([...map, [key, value]]) for set, new Map([...map].filter(...)) for delete.`\n );\n }\n }\n }\n\n /** Heuristic check if an expression might be a Set or Map */\n private looksLikeSetOrMap(expr: Node, collectionType: \"Set\" | \"Map\"): boolean {\n const text = expr.getText().toLowerCase();\n return text.includes(collectionType.toLowerCase());\n }\n\n /** Pattern 6: someState.value = new Set([...someState.value, item]) (Set operations) */\n private tryExtractSetConstructorPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isNewExpression(right)) return false;\n const constructorExpr = right.getExpression();\n if (!Node.isIdentifier(constructorExpr) || constructorExpr.getText() !== \"Set\") return false;\n\n const signalName = fieldPath.slice(0, -6);\n const setAssignment = this.extractSetOperation(right, fieldPath, signalName);\n if (setAssignment) {\n assignments.push(setAssignment);\n }\n return true;\n }\n\n /** Pattern 7: someState.value = new Map([...someState.value, [key, val]]) (Map operations) */\n private tryExtractMapConstructorPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isNewExpression(right)) return false;\n const constructorExpr = right.getExpression();\n if (!Node.isIdentifier(constructorExpr) || constructorExpr.getText() !== \"Map\") return false;\n\n const signalName = fieldPath.slice(0, -6);\n const mapAssignment = this.extractMapOperation(right, fieldPath, signalName);\n if (mapAssignment) {\n assignments.push(mapAssignment);\n }\n return true;\n }\n\n /**\n * Pattern 8: someState.value = expression (direct signal value assignment)\n * Matches signal.value = literal or signal.value = payload.xxx\n */\n private tryExtractSignalDirectValuePattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\")) return false;\n const signalName = fieldPath.slice(0, -6);\n\n // Try extracting a primitive literal\n const literalValue = this.extractValue(right);\n if (literalValue !== undefined) {\n assignments.push({ field: signalName, value: literalValue });\n return true;\n }\n\n // Try extracting payload.xxx property access\n if (Node.isPropertyAccessExpression(right)) {\n const rightPath = this.getPropertyPath(right);\n const parts = rightPath.split(\".\");\n if (\n parts.length === 2 &&\n parts[0] !== undefined &&\n parts[1] !== undefined &&\n this.currentFunctionParams.includes(parts[0])\n ) {\n assignments.push({ field: signalName, value: `param:${parts[1]}` });\n return true;\n }\n }\n\n return false;\n }\n\n /** Extract Set operations from new Set(...) constructor */\n private extractSetOperation(\n newExpr: import(\"ts-morph\").NewExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const args = newExpr.getArguments();\n\n // new Set() - clear operation\n if (args.length === 0) {\n return { field: signalName, value: \"{}\" };\n }\n\n const firstArg = args[0];\n if (!firstArg) return null;\n\n // new Set([...set.value, item]) - add operation\n if (Node.isArrayLiteralExpression(firstArg)) {\n return this.extractSetArrayOperation(firstArg, fieldPath, signalName);\n }\n\n // new Set([...set.value].filter(...)) - delete operation via method chain\n if (Node.isCallExpression(firstArg)) {\n return this.extractSetMethodChainOperation(firstArg, fieldPath, signalName);\n }\n\n return null;\n }\n\n /** Extract Set operation from array literal: new Set([...set.value, item]) */\n private extractSetArrayOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n const firstElement = elements[0];\n const lastElement = elements[elements.length - 1];\n\n // Check for add: new Set([...set.value, item])\n if (firstElement && Node.isSpreadElement(firstElement)) {\n const spreadExpr = firstElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Add operation: @ \\union {payload}\n return { field: signalName, value: \"@ \\\\union {payload}\" };\n }\n }\n\n // Check for add at beginning: new Set([item, ...set.value])\n if (lastElement && Node.isSpreadElement(lastElement)) {\n const spreadExpr = lastElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n return { field: signalName, value: \"{payload} \\\\union @\" };\n }\n }\n\n return null;\n }\n\n /** Extract Set operation from method chain: new Set([...set.value].filter(...)) */\n private extractSetMethodChainOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for [...set.value].filter(...) pattern\n if (methodName === \"filter\" && Node.isArrayLiteralExpression(sourceExpr)) {\n const elements = sourceExpr.getElements();\n if (elements.length === 1) {\n const spreadEl = elements[0];\n if (spreadEl && Node.isSpreadElement(spreadEl)) {\n const spreadExpr = spreadEl.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Delete operation: @ \\ {payload}\n return { field: signalName, value: \"@ \\\\ {payload}\" };\n }\n }\n }\n }\n\n return null;\n }\n\n /** Extract Map operations from new Map(...) constructor */\n private extractMapOperation(\n newExpr: import(\"ts-morph\").NewExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const args = newExpr.getArguments();\n\n // new Map() - clear operation\n if (args.length === 0) {\n return { field: signalName, value: \"<<>>\" }; // Empty function in TLA+\n }\n\n const firstArg = args[0];\n if (!firstArg) return null;\n\n // new Map([...map.value, [key, value]]) - set operation\n if (Node.isArrayLiteralExpression(firstArg)) {\n return this.extractMapArrayOperation(firstArg, fieldPath, signalName);\n }\n\n // new Map([...map.value].filter(...)) - delete operation via method chain\n if (Node.isCallExpression(firstArg)) {\n return this.extractMapMethodChainOperation(firstArg, fieldPath, signalName);\n }\n\n return null;\n }\n\n /** Extract Map operation from array literal: new Map([...map.value, [key, val]]) */\n private extractMapArrayOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n const firstElement = elements[0];\n\n // Check for set: new Map([...map.value, [key, value]])\n if (firstElement && Node.isSpreadElement(firstElement)) {\n const spreadExpr = firstElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Set operation: [@ EXCEPT ![payload.key] = payload.value]\n return { field: signalName, value: \"[@ EXCEPT ![payload.key] = payload.value]\" };\n }\n }\n\n return null;\n }\n\n /** Extract Map operation from method chain: new Map([...map.value].filter(...)) */\n private extractMapMethodChainOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for [...map.value].filter(...) pattern\n if (methodName === \"filter\" && Node.isArrayLiteralExpression(sourceExpr)) {\n const elements = sourceExpr.getElements();\n if (elements.length === 1) {\n const spreadEl = elements[0];\n if (spreadEl && Node.isSpreadElement(spreadEl)) {\n const spreadExpr = spreadEl.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Delete operation: restrict domain\n return { field: signalName, value: \"[k \\\\in DOMAIN @ \\\\ {payload.key} |-> @[k]]\" };\n }\n }\n }\n }\n\n return null;\n }\n\n /**\n * Extract array method operations: arr.filter(...), arr.map(...)\n */\n private extractArrayMethodOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n const sourcePath = this.getPropertyPath(sourceExpr);\n\n // Check if source matches target (e.g., todos.value = todos.value.filter(...))\n if (sourcePath !== fieldPath) return null;\n\n switch (methodName) {\n case \"filter\":\n // Non-deterministic element removal — codegen emits \\E newLen\n return { field: signalName, value: \"NDET:FILTER\" };\n\n case \"map\":\n // Non-deterministic single-element modification — codegen emits \\E mapIdx, mapVal\n return { field: signalName, value: \"NDET:MAP\" };\n\n case \"slice\":\n // Subsequence is semantically equivalent to filter in the abstract model\n return { field: signalName, value: \"NDET:FILTER\" };\n\n case \"concat\":\n // Concat appends another sequence\n return { field: signalName, value: \"@ \\\\o <<payload>>\" };\n\n case \"reverse\":\n // Reverse the sequence\n return { field: signalName, value: \"[i \\\\in DOMAIN @ |-> @[Len(@) - i + 1]]\" };\n\n default:\n // Warn about unsupported array methods\n this.warnUnsupportedArrayMethod(methodName, callExpr);\n return null;\n }\n }\n\n /** Warn about unsupported array methods */\n private warnUnsupportedArrayMethod(methodName: string, node: Node): void {\n const mutatingMethods = [\n \"push\",\n \"pop\",\n \"shift\",\n \"unshift\",\n \"splice\",\n \"sort\",\n \"fill\",\n \"copyWithin\",\n ];\n const queryMethods = [\n \"find\",\n \"findIndex\",\n \"reduce\",\n \"reduceRight\",\n \"some\",\n \"every\",\n \"includes\",\n \"indexOf\",\n \"lastIndexOf\",\n ];\n const otherMethods = [\"flat\", \"flatMap\", \"join\", \"toString\", \"toLocaleString\"];\n\n if (mutatingMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' mutates in place. Use spread syntax: [...arr, item] for append, arr.filter() for removal.`\n );\n } else if (queryMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' returns a single value, not a new array. State assignment won't be extracted.`\n );\n } else if (otherMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' is not supported for state extraction. Consider using map/filter instead.`\n );\n }\n }\n\n /**\n * Extract assignments from spread update pattern: { ...existing, field: value }\n * Only extracts the explicitly set properties, not the spread\n */\n private extractSpreadUpdateAssignments(\n objectLiteral: import(\"ts-morph\").ObjectLiteralExpression,\n assignments: StateAssignment[],\n signalName: string\n ): void {\n for (const prop of objectLiteral.getProperties()) {\n // Skip spread assignments (they preserve existing values)\n if (Node.isSpreadAssignment(prop)) continue;\n\n // Extract regular property assignments\n this.extractPropertyAssignment(prop, assignments, signalName);\n }\n }\n\n /**\n * Extract array spread operations: [...arr, item] or [item, ...arr]\n */\n private extractArraySpreadOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n // Try append pattern first, then prepend\n return (\n this.tryExtractAppendOperation(elements, fieldPath, signalName) ??\n this.tryExtractPrependOperation(elements, fieldPath, signalName)\n );\n }\n\n /** Extract append operation: [...arr, item] or [...arr, item1, item2] */\n private tryExtractAppendOperation(\n elements: Node[],\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const firstElement = elements[0];\n if (!firstElement || !Node.isSpreadElement(firstElement)) return null;\n\n const spreadExpr = firstElement.getExpression();\n if (!spreadExpr || this.getPropertyPath(spreadExpr) !== fieldPath) return null;\n\n if (elements.length === 2) {\n return { field: signalName, value: \"Append(@, payload)\" };\n }\n const placeholders = Array(elements.length - 1)\n .fill(\"payload\")\n .join(\", \");\n return { field: signalName, value: `@ \\\\o <<${placeholders}>>` };\n }\n\n /** Extract prepend operation: [item, ...arr] or [item1, item2, ...arr] */\n private tryExtractPrependOperation(\n elements: Node[],\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n if (elements.length < 2) return null;\n\n const lastElement = elements[elements.length - 1];\n if (!lastElement || !Node.isSpreadElement(lastElement)) return null;\n\n const spreadExpr = lastElement.getExpression();\n if (!spreadExpr || this.getPropertyPath(spreadExpr) !== fieldPath) return null;\n\n if (elements.length === 2) {\n return { field: signalName, value: \"<<payload>> \\\\o @\" };\n }\n const placeholders = Array(elements.length - 1)\n .fill(\"payload\")\n .join(\", \");\n return { field: signalName, value: `<<${placeholders}>> \\\\o @` };\n }\n\n /**\n * Extract assignments from object literal properties\n * Used for: someState.value = { field1: value1, field2: value2 }\n * @param signalName - Optional signal name prefix (e.g., \"user\" for user.value = {...})\n */\n private extractObjectLiteralAssignments(\n objectLiteral: Node,\n assignments: StateAssignment[],\n signalName?: string\n ): void {\n if (!Node.isObjectLiteralExpression(objectLiteral)) return;\n\n for (const prop of objectLiteral.getProperties()) {\n this.extractPropertyAssignment(prop, assignments, signalName);\n }\n }\n\n /**\n * Extract a single property assignment from an object literal property\n */\n private extractPropertyAssignment(\n prop: Node,\n assignments: StateAssignment[],\n signalName?: string\n ): void {\n // Handle regular property assignments: { field: value }\n if (Node.isPropertyAssignment(prop)) {\n this.extractRegularPropertyAssignment(prop, assignments, signalName);\n return;\n }\n\n // Handle shorthand properties: { field }\n if (Node.isShorthandPropertyAssignment(prop)) {\n const name = prop.getName();\n const field = signalName ? `${signalName}_${name}` : name;\n // If the identifier matches a function parameter, trace it to payload\n if (this.currentFunctionParams.includes(name)) {\n assignments.push({ field, value: `param:${name}` });\n } else {\n // For shorthand, we can't extract the value statically\n // but we know the field is being set\n assignments.push({ field, value: \"@\" }); // Use @ as placeholder\n }\n }\n }\n\n /**\n * Handle the regular `{ field: value }` form within an object literal.\n * Splits the literal-extraction and payload-property-tracing paths so the\n * outer dispatcher stays simple and biome's cognitive-complexity budget\n * holds.\n */\n private extractRegularPropertyAssignment(\n prop: Node,\n assignments: StateAssignment[],\n signalName?: string\n ): void {\n if (!Node.isPropertyAssignment(prop)) return;\n const name = prop.getName();\n const initializer = prop.getInitializer();\n if (!name || !initializer) return;\n\n const field = signalName ? `${signalName}_${name}` : name;\n\n const value = this.extractValue(initializer);\n if (value !== undefined) {\n assignments.push({ field, value });\n return;\n }\n\n // Trace `field: paramName` (renamed-property form, e.g.\n // `currentView: view`) to the payload identifier. The shorthand\n // `{ view }` form already does this; without this branch the renamed\n // form silently drops the assignment from the action body and leaves\n // ensures references to the parameter unbound (issue #77).\n if (Node.isIdentifier(initializer)) {\n const paramName = initializer.getText();\n if (this.currentFunctionParams.includes(paramName)) {\n assignments.push({ field, value: `param:${paramName}` });\n return;\n }\n }\n\n // Trace `field: paramName.X` (e.g. `role: payload.role`) to the payload\n // field. Mirrors the shorthand `{ field }` and direct `signal.value =\n // paramName.X` paths so longhand object literals participate in\n // payload-domain wiring (issue #72) and per-action ensures Asserts\n // (issue #73) the same way the other forms do.\n const paramName = this.extractPayloadPropertyParam(initializer);\n if (paramName !== null) {\n assignments.push({ field, value: `param:${paramName}` });\n return;\n }\n\n // polly#147: a non-literal initializer that is a translatable expression —\n // arithmetic on the signal's own field (`outstanding + 1`), a copy of\n // another field, an index access — is captured verbatim and translated to\n // TLA+ at codegen time, mirroring how `state.foo += 1` keeps its RHS via\n // `right.getText()`. Without this the assignment was silently dropped, so a\n // counter `signal.value = { outstanding: signal.value.outstanding + 1 }`\n // generated an UNCHANGED stub and its bounded-counter ensures could never\n // be anchored.\n if (this.isTranslatableInitializer(initializer)) {\n // polly#169: resolve `const x = sig.value` aliases before the text leaves\n // the function that gave its identifiers meaning.\n // polly#170: strip redundant outer parentheses — `translateTernary` is a\n // regex and chops across them, producing `IF (a THEN 1 ELSE 0)`.\n const captured = this.resolveSignalAliases(this.unwrapParentheses(initializer));\n assignments.push({ field, value: `EXPR:${captured}` });\n return;\n }\n\n // polly#144 set the precedent that a silently dropped handler is the core\n // failure mode, so its warning is unconditional. The same applies here: a\n // dropped property models the field as never moving, and every property\n // written over it then holds vacuously (polly#170).\n const on = signalName ? ` on ${signalName}.value` : \"\";\n console.log(\n `[WARN] dropped object-literal property '${name}'${on} — initializer \\`${initializer.getText().replace(/\\s+/g, \" \").slice(0, 80)}\\` (${initializer.getKindName()}) is not translatable to TLA+`\n );\n }\n\n /**\n * polly#169: rewrite `<alias>.field` back to `<signal>.value.field`.\n *\n * The `EXPR:` capture hands source text to a codegen translator that resolves\n * signal references by shape, not by binding. A handler that reads through\n * `const state = offlineQueue.value` emitted `state.unsyncedChanges`, which\n * the translator's `state.` rule rewrote to `contextStates[ctx].unsyncedChanges`\n * — a member that does not exist, because the record carries\n * `offlineQueue_unsyncedChanges`. An alias under any other name reached SANY\n * as a free identifier.\n *\n * Aliases are collected from the initializer's OWN enclosing function rather\n * than from extractor instance state: an object literal is reached by two\n * walks (`extractAssignments`, and `findStateMutationsInFunction` for the\n * issue-#27 lift pass) and only one passes through the handler entry points\n * that maintain instance state, so state held on `this` would silently do\n * nothing on the other.\n *\n * Rewriting is driven by AST node positions, not by a regex over the text —\n * a regex is what made the original defect possible.\n */\n private resolveSignalAliases(initializer: Node): string {\n const aliases = this.collectSignalAliases(initializer);\n if (aliases.size === 0) return initializer.getText();\n\n const base = initializer.getStart();\n const edits: Array<{ start: number; end: number; text: string }> = [];\n\n // forEachDescendant excludes the node itself, and the initializer is often\n // the whole access (`o.count`), so visit the root as well.\n const visit = (node: Node): void => {\n if (!Node.isPropertyAccessExpression(node)) return;\n const target = node.getExpression();\n if (!Node.isIdentifier(target)) return;\n const signal = aliases.get(target.getText());\n if (!signal) return;\n edits.push({\n start: target.getStart() - base,\n end: target.getEnd() - base,\n text: `${signal}.value`,\n });\n };\n visit(initializer);\n initializer.forEachDescendant(visit);\n\n if (edits.length === 0) return initializer.getText();\n\n let text = initializer.getText();\n for (const edit of edits.sort((a, b) => b.start - a.start)) {\n text = text.slice(0, edit.start) + edit.text + text.slice(edit.end);\n }\n return text;\n }\n\n /**\n * Collect `const <name> = <ident>.value` bindings from the nearest enclosing\n * function of `node`.\n *\n * Deliberately narrow. Destructuring, a reassigned `let`, and an alias of an\n * alias are left untranslated and fall through to the warning: a wrong entry\n * rewrites an expression into a field that DOES exist, which is strictly\n * worse than one that fails loudly.\n */\n private collectSignalAliases(node: Node): Map<string, string> {\n const aliases = new Map<string, string>();\n\n const fn = node.getFirstAncestor(\n (a) =>\n Node.isArrowFunction(a) || Node.isFunctionExpression(a) || Node.isFunctionDeclaration(a)\n );\n if (!fn) return aliases;\n\n const reassigned = this.collectReassignedIdentifiers(fn);\n\n fn.forEachDescendant((inner) => {\n if (!Node.isVariableDeclaration(inner)) return;\n const binding = this.readSignalAliasBinding(inner);\n if (!binding) return;\n // An alias of an alias, and a rebound name, are both left untranslated.\n if (aliases.has(binding.signal)) return;\n if (reassigned.has(binding.alias)) return;\n aliases.set(binding.alias, binding.signal);\n });\n\n return aliases;\n }\n\n /** Identifiers assigned anywhere in `fn`, so a rebound alias can be ignored. */\n private collectReassignedIdentifiers(fn: Node): Set<string> {\n const reassigned = new Set<string>();\n fn.forEachDescendant((inner) => {\n if (!Node.isBinaryExpression(inner)) return;\n if (inner.getOperatorToken().getText() !== \"=\") return;\n const left = inner.getLeft();\n if (Node.isIdentifier(left)) reassigned.add(left.getText());\n });\n return reassigned;\n }\n\n /**\n * Read `const <alias> = <signal>.value` from a declaration, or null.\n *\n * `const` only (a `let` may be rebound between the alias and its use), a plain\n * identifier only (a destructuring pattern binds fields, not the object), and\n * `<identifier>.value` only (not `a.b.value`).\n */\n private readSignalAliasBinding(\n decl: VariableDeclaration\n ): { alias: string; signal: string } | null {\n const list = decl.getParent();\n if (!Node.isVariableDeclarationList(list)) return null;\n if (list.getDeclarationKind() !== VariableDeclarationKind.Const) return null;\n\n const nameNode = decl.getNameNode();\n if (!Node.isIdentifier(nameNode)) return null;\n\n const init = decl.getInitializer();\n if (!init || !Node.isPropertyAccessExpression(init)) return null;\n if (init.getName() !== \"value\") return null;\n\n const target = init.getExpression();\n if (!Node.isIdentifier(target)) return null;\n\n return { alias: nameNode.getText(), signal: target.getText() };\n }\n\n /**\n * Whether an object-literal property initializer is an expression the codegen\n * translator (`tsExpressionToTLA`) handles reliably (polly#147). Literals and\n * payload-parameter references are resolved before this is reached; this\n * covers arithmetic, member/index access, (un)parenthesized unary forms and —\n * since polly#170 — a single ternary.\n *\n * polly#170: the original \"conditional expressions are excluded\" rule was\n * both too strict and too loose. Too strict, because `translateTernary`\n * (tools/verify codegen) does translate a single comment-free ternary\n * correctly, and dropping it modelled the field as never moving. Too loose,\n * because the kind checks below admit a ternary nested inside a binary or a\n * parenthesized expression, and a call nested anywhere — `translateTernary`\n * is a regex, so `{ x: (a ? 1 : 0) }` became `IF (a THEN 1 ELSE 0)` with\n * unbalanced parentheses.\n *\n * The subtree checks close both halves: reject a call or a nested ternary\n * wherever it appears, and reject a comment, whose `//` is carried into the\n * generated line and can corrupt the quote-conversion pass.\n */\n private isTranslatableInitializer(node: Node): boolean {\n const kindAllowed =\n Node.isBinaryExpression(node) ||\n Node.isPropertyAccessExpression(node) ||\n Node.isElementAccessExpression(node) ||\n Node.isPrefixUnaryExpression(node) ||\n Node.isPostfixUnaryExpression(node) ||\n Node.isParenthesizedExpression(node) ||\n Node.isConditionalExpression(node);\n\n if (!kindAllowed) return false;\n if (this.containsComment(node)) return false;\n if (node.getFirstDescendantByKind(SyntaxKind.CallExpression)) return false;\n\n // A ternary is admitted only as the whole expression, and only one deep.\n // Unwrap parentheses first: a nested ternary is normally written\n // `a ? (b ? c : d) : e`, so a check that inspects the branch nodes directly\n // reads that as a single ternary and admits it. `getFirstDescendantByKind`\n // excludes the node itself, so this rejects a ternary nested under a root\n // ternary and a ternary anywhere under a binary or parenthesized root — the\n // two shapes `translateTernary`'s regex gets wrong — while admitting a root\n // ternary with none below it.\n return (\n this.unwrapParentheses(node).getFirstDescendantByKind(SyntaxKind.ConditionalExpression) ===\n undefined\n );\n }\n\n /** Strip redundant parentheses, so branch checks see the real node. */\n private unwrapParentheses(node: Node): Node {\n let current = node;\n while (Node.isParenthesizedExpression(current)) {\n current = current.getExpression();\n }\n return current;\n }\n\n /**\n * Whether a node's source text carries a comment. A `//` inside a captured\n * expression is carried verbatim into the generated TLA+ line (polly#170).\n */\n private containsComment(node: Node): boolean {\n const text = node.getText();\n return text.includes(\"//\") || text.includes(\"/*\");\n }\n\n /**\n * If `initializer` is `paramName.X` where paramName is a function parameter\n * of the current handler, return X. Otherwise return null.\n */\n private extractPayloadPropertyParam(initializer: Node): string | null {\n if (!Node.isPropertyAccessExpression(initializer)) return null;\n const parts = this.getPropertyPath(initializer).split(\".\");\n if (parts.length !== 2) return null;\n const [paramName, fieldName] = parts;\n if (paramName === undefined || fieldName === undefined) return null;\n if (!this.currentFunctionParams.includes(paramName)) return null;\n return fieldName;\n }\n\n /**\n * Extract element access assignment (state.items[index] = value)\n */\n private extractElementAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isElementAccessExpression(left)) return;\n\n const expr = left.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const fieldPath = this.getPropertyPath(expr);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (!field) return;\n const indexExpr = left.getArgumentExpression();\n const index = indexExpr ? indexExpr.getText() : \"0\";\n const value = this.extractValue(right);\n\n if (value !== undefined) {\n const tlaIndex = this.isNumericLiteral(index)\n ? (Number.parseInt(index, 10) + 1).toString()\n : `${index} + 1`;\n assignments.push({\n field: `${field}[${tlaIndex}]`,\n value,\n });\n }\n }\n\n /**\n * Check if field path is a state mutation pattern and extract field name\n * Supports: state.field, someState.value.field\n * Returns: field name or null if not a state pattern\n */\n private extractFieldFromStatePath(fieldPath: string): string | null {\n // Pattern 1: state.field\n if (fieldPath.startsWith(\"state.\")) {\n return fieldPath.substring(6);\n }\n\n // Pattern 2: someState.value.field\n const valueMatch = fieldPath.match(/\\.value\\.(.+)$/);\n if (valueMatch?.[1]) {\n return valueMatch[1];\n }\n\n return null;\n }\n\n /**\n * Extract compound assignments (+=, -=, *=, /=, %=)\n */\n private extractCompoundAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n const fieldPath = this.getPropertyPath(left);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n const rightValue = right.getText();\n const tlaOp = operator.slice(0, -1); // Remove '=' suffix\n assignments.push({\n field,\n value: `@ ${tlaOp} ${rightValue}`,\n });\n }\n }\n }\n\n /**\n * Get operator text from unary expression token\n */\n private getUnaryOperatorText(operator: unknown): string | null {\n if (typeof operator === \"number\") {\n // It's a SyntaxKind enum value\n if (operator === SyntaxKind.PlusPlusToken) return \"++\";\n if (operator === SyntaxKind.MinusMinusToken) return \"--\";\n return null;\n }\n if (operator && typeof operator === \"object\" && \"getText\" in operator) {\n // It's a Node with getText method\n return (operator as unknown as { getText(): string }).getText();\n }\n return null;\n }\n\n /**\n * Extract unary expression assignments (++, --)\n */\n private extractUnaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isPostfixUnaryExpression(node) && !Node.isPrefixUnaryExpression(node)) return;\n\n const operator = node.getOperatorToken();\n const operatorText = this.getUnaryOperatorText(operator);\n\n // Only handle ++ and --\n if (operatorText !== \"++\" && operatorText !== \"--\") return;\n\n const operand = node.getOperand();\n if (!Node.isPropertyAccessExpression(operand)) return;\n\n const fieldPath = this.getPropertyPath(operand);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n // Translate ++ to @ + 1 and -- to @ - 1\n const value = operatorText === \"++\" ? \"@ + 1\" : \"@ - 1\";\n assignments.push({ field, value });\n }\n }\n\n /**\n * Extract array mutation assignments (push, pop, shift, unshift, splice)\n */\n private extractArrayMutationAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (Node.isPropertyAccessExpression(object)) {\n const fieldPath = this.getPropertyPath(object);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n const args = node.getArguments().map((arg) => arg.getText());\n const tlaValue = this.translateArrayMethod(methodName, args, fieldPath);\n\n if (tlaValue) {\n assignments.push({ field, value: tlaValue });\n }\n }\n }\n }\n\n /**\n * Translate array mutation methods to TLA+ operators\n */\n private translateArrayMethod(\n methodName: string,\n args: string[],\n fieldPath: string\n ): string | null {\n switch (methodName) {\n case \"push\":\n return args.length === 1 ? `Append(@, ${args[0]})` : null;\n\n case \"pop\":\n return \"SubSeq(@, 1, Len(@)-1)\";\n\n case \"shift\":\n return \"Tail(@)\";\n\n case \"unshift\":\n return args.length === 1 ? `<<${args[0]}>> \\\\o @` : null;\n\n case \"splice\":\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Warning: splice() mutation on ${fieldPath} not fully translated`);\n }\n return null;\n\n default:\n return null;\n }\n }\n\n /**\n * Check for async mutations that could cause race conditions\n * Warns when async handlers have state mutations after await expressions\n */\n private checkAsyncMutations(\n funcNode: ArrowFunction | FunctionExpression,\n messageType: string\n ): void {\n // Check if function is async\n const isAsync =\n funcNode.hasModifier?.(SyntaxKind.AsyncKeyword) ||\n funcNode.getModifiers?.()?.some((m: Node) => m.getKind() === SyntaxKind.AsyncKeyword);\n\n if (!isAsync) {\n return; // Not async, no race conditions possible\n }\n\n // Find all await expressions\n const awaitExpressions: Node[] = [];\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isAwaitExpression(node)) {\n awaitExpressions.push(node);\n }\n });\n\n if (awaitExpressions.length === 0) {\n return; // No awaits, no interleaving possible\n }\n\n // Find all state mutations\n const mutations: Array<{ field: string; line: number; afterAwait: boolean }> = [];\n const body = funcNode.getBody();\n\n if (!body) {\n return;\n }\n\n const firstAwait = awaitExpressions[0];\n if (!firstAwait) return;\n\n // Get position of first await\n const firstAwaitPos = firstAwait.getStart();\n\n // Track mutations and whether they occur after await\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.checkBinaryExpressionMutation(node, firstAwaitPos, mutations);\n }\n\n if (Node.isCallExpression(node)) {\n this.checkCallExpressionMutation(node, firstAwaitPos, mutations);\n }\n });\n\n // Filter to mutations after await\n const mutationsAfterAwait = mutations.filter((m) => m.afterAwait);\n\n if (mutationsAfterAwait.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Warning: Async handler for '${messageType}' has ${mutationsAfterAwait.length} state mutation(s) after await`\n );\n console.log(\n \"[DEBUG] This may cause race conditions if multiple messages are processed concurrently\"\n );\n console.log(\n `[DEBUG] Mutations: ${mutationsAfterAwait.map((m) => `${m.field} (line ${m.line})`).join(\", \")}`\n );\n }\n }\n\n /**\n * Extract verification conditions (requires/ensures) from a handler function\n */\n private extractVerificationConditions(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n const body = funcNode.getBody();\n const statements = Node.isBlock(body) ? body.getStatements() : body ? [body] : [];\n\n for (const statement of statements) {\n this.processStatementForConditions(statement, preconditions, postconditions);\n }\n }\n\n /**\n * Process a statement to extract verification conditions\n */\n private processStatementForConditions(\n statement: Node | Statement,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n if (!Node.isExpressionStatement(statement)) return;\n\n const expr = statement.getExpression();\n if (!Node.isCallExpression(expr)) return;\n\n const callee = expr.getExpression();\n if (!Node.isIdentifier(callee)) return;\n\n const functionName = callee.getText();\n\n if (functionName === \"requires\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n preconditions.push(condition);\n }\n } else if (functionName === \"ensures\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n postconditions.push(condition);\n }\n }\n }\n\n /**\n * Extract condition from a requires() or ensures() call\n */\n private extractCondition(callExpr: CallExpression): VerificationCondition | null {\n const args = callExpr.getArguments();\n\n if (args.length === 0) {\n return null;\n }\n\n // First argument is the condition expression\n const conditionArg = args[0];\n if (!conditionArg) return null;\n\n const expression = conditionArg.getText();\n\n // Second argument (optional) is the message\n let message: string | undefined;\n if (args.length >= 2 && Node.isStringLiteral(args[1])) {\n message = args[1].getLiteralValue();\n }\n\n const line = callExpr.getStartLineNumber();\n const column = callExpr.getStartLinePos();\n\n return {\n expression,\n message,\n location: {\n line,\n column,\n },\n };\n }\n\n /**\n * Get the full property access path (e.g., \"state.user.loggedIn\")\n */\n private getPropertyPath(node: PropertyAccessExpression | Node): string {\n const parts: string[] = [];\n\n let current = node;\n while (Node.isPropertyAccessExpression(current)) {\n parts.unshift(current.getName());\n current = current.getExpression();\n }\n\n // Add the base identifier\n if (Node.isIdentifier(current)) {\n parts.unshift(current.getText());\n }\n\n return parts.join(\".\");\n }\n\n /**\n * Extract a literal value from an expression\n */\n private extractValue(node: Node): string | boolean | number | null | undefined {\n if (Node.isStringLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (Node.isNumericLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (node.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n\n if (node.getKind() === SyntaxKind.FalseKeyword) {\n return false;\n }\n\n if (node.getKind() === SyntaxKind.NullKeyword) {\n return null;\n }\n\n // For complex expressions, return undefined (can't extract)\n return undefined;\n }\n\n /**\n * Check if a string represents a numeric literal\n */\n private isNumericLiteral(str: string): boolean {\n return /^\\d+$/.test(str);\n }\n\n /**\n * Extract handlers from switch/case message router patterns\n * Detects: switch(message.type) { case 'EVENT': handler(); }\n */\n private extractSwitchCaseHandlers(\n switchNode: SwitchStatement,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n // Check if switching on message.type or similar\n const expression = switchNode.getExpression();\n const expressionText = expression.getText();\n\n // Look for patterns like: message.type, data.type, msg.type, event.type\n if (!/\\.(type|kind|event|action)/.test(expressionText)) {\n return handlers;\n }\n\n // Extract handlers from each case clause\n const caseClauses = switchNode.getClauses();\n for (const clause of caseClauses) {\n if (Node.isCaseClause(clause)) {\n const caseExpr = clause.getExpression();\n\n // Extract message type from case expression\n let messageType: string | null = null;\n if (Node.isStringLiteral(caseExpr)) {\n messageType = caseExpr.getLiteralValue();\n }\n\n if (messageType) {\n const line = clause.getStartLineNumber();\n\n handlers.push({\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n origin: \"event\" as const,\n });\n }\n }\n }\n } catch (_error) {\n // Skip malformed switch statements\n }\n\n return handlers;\n }\n\n /**\n * Extract handlers from handler map patterns\n * Detects: const handlers = { 'EVENT': handlerFn, ... }\n */\n private extractHandlerMapPattern(\n varDecl: VariableDeclaration,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const initializer = varDecl.getInitializer();\n if (!initializer) {\n return handlers;\n }\n\n // Get the object literal - either direct or from defineHandlers() call\n const objectLiteral = this.getHandlerMapObject(initializer, varDecl);\n if (!objectLiteral) {\n return handlers;\n }\n\n // Extract handlers from object properties\n const properties = objectLiteral.getProperties();\n for (const prop of properties) {\n const handler = this.extractHandlerFromProperty(prop, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n } catch (_error) {\n // Skip malformed object literals\n }\n\n return handlers;\n }\n\n /**\n * Extract the object literal from a handler map.\n * Only processes direct object literals with handler-like variable names.\n */\n private getHandlerMapObject(\n initializer: Node,\n varDecl: VariableDeclaration\n ): ObjectLiteralExpression | null {\n // Only process direct object literals\n if (Node.isObjectLiteralExpression(initializer)) {\n if (this.isHandlerMapName(varDecl.getName())) {\n return initializer;\n }\n }\n return null;\n }\n\n /**\n * Check if variable name suggests it's a handler map\n */\n private isHandlerMapName(varName: string): boolean {\n return /(handler|listener|callback|event)s?/.test(varName.toLowerCase());\n }\n\n /**\n * Extract handler from a property assignment in a handler map\n */\n private extractHandlerFromProperty(\n prop: Node,\n context: string,\n filePath: string\n ): MessageHandler | null {\n if (!Node.isPropertyAssignment(prop)) {\n return null;\n }\n\n const nameNode = prop.getNameNode();\n const messageType = this.getMessageTypeFromPropertyName(nameNode);\n\n if (!messageType) {\n return null;\n }\n\n const value = prop.getInitializer();\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Extract from the handler function\n if (value) {\n // Case 1: Inline arrow function or function expression\n if (Node.isArrowFunction(value) || Node.isFunctionExpression(value)) {\n this.extractAssignments(value, assignments);\n this.extractVerificationConditions(value, preconditions, postconditions);\n }\n // Case 2: Function reference (e.g., handleQuery)\n else if (Node.isIdentifier(value)) {\n const referencedFunction = this.resolveFunctionReference(value);\n if (referencedFunction) {\n this.extractAssignments(referencedFunction, assignments);\n this.extractVerificationConditions(referencedFunction, preconditions, postconditions);\n }\n }\n }\n\n const line = prop.getStartLineNumber();\n return {\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: { file: filePath, line },\n };\n }\n\n /**\n * Extract message type from property name node\n */\n private getMessageTypeFromPropertyName(nameNode: Node): string | null {\n if (Node.isStringLiteral(nameNode)) {\n return nameNode.getLiteralValue();\n }\n if (Node.isIdentifier(nameNode)) {\n return nameNode.getText();\n }\n return null;\n }\n\n /**\n * Resolve a function reference to its declaration or expression.\n * Handles both named function declarations and variable-assigned functions.\n *\n * @param identifier - The identifier node referencing the function\n * @returns The resolved function node, or null if not found\n */\n private resolveFunctionReference(\n identifier: Node\n ): FunctionDeclaration | ArrowFunction | FunctionExpression | null {\n if (!Node.isIdentifier(identifier)) {\n return null;\n }\n\n try {\n const definitions = identifier.getDefinitionNodes();\n\n for (const def of definitions) {\n // Direct function declaration\n if (Node.isFunctionDeclaration(def)) {\n return def;\n }\n\n // Variable declaration with function initializer\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return initializer;\n }\n }\n }\n } catch (_error) {\n // Failed to resolve - return null\n }\n\n return null;\n }\n\n /**\n * Extract handlers from type guard if/else-if patterns\n * Detects: if (isQueryMessage(msg)) { handleQuery(msg); }\n */\n private extractTypeGuardHandlers(\n ifNode: Node,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const sourceFile = ifNode.getSourceFile();\n const typeGuards = this.getOrComputeTypeGuards(sourceFile);\n\n this.debugLogTypeGuards(sourceFile, typeGuards);\n this.processIfElseChain(\n ifNode as unknown as IfStatement,\n typeGuards,\n context,\n filePath,\n handlers\n );\n } catch (error) {\n this.debugLogError(error);\n }\n\n return handlers;\n }\n\n /**\n * Get cached type guards or compute if not cached\n */\n private getOrComputeTypeGuards(sourceFile: SourceFile): Map<string, string> {\n let typeGuards = this.typeGuardCache.get(sourceFile);\n if (!typeGuards) {\n typeGuards = this.findTypePredicateFunctions(sourceFile);\n this.typeGuardCache.set(sourceFile, typeGuards);\n }\n return typeGuards;\n }\n\n /**\n * Debug log type guards found in source file\n */\n private debugLogTypeGuards(sourceFile: SourceFile, typeGuards: Map<string, string>): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] File: ${sourceFile.getBaseName()}`);\n console.log(`[DEBUG] Local type guards found: ${typeGuards.size}`);\n\n if (typeGuards.size > 0) {\n for (const [name, type] of typeGuards.entries()) {\n console.log(`[DEBUG] - ${name} → ${type}`);\n }\n }\n }\n\n /**\n * Process if-else-if chain to extract handlers\n */\n private processIfElseChain(\n currentIf: IfStatement,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n let ifStatement = currentIf;\n while (ifStatement) {\n const handler = this.extractHandlerFromIfClause(ifStatement, typeGuards, context, filePath);\n\n if (handler) {\n handlers.push(handler);\n this.debugLogFoundHandler(handler);\n }\n\n // Check for else-if\n const elseStatement = ifStatement.getElseStatement();\n if (elseStatement && Node.isIfStatement(elseStatement)) {\n ifStatement = elseStatement;\n } else {\n break;\n }\n }\n }\n\n /**\n * Debug log found handler\n */\n private debugLogFoundHandler(handler: MessageHandler): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found handler: ${handler.messageType} at line ${handler.location.line}`);\n }\n }\n\n /**\n * Debug log error\n */\n private debugLogError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error in extractTypeGuardHandlers: ${error}`);\n }\n }\n\n /**\n * Extract handler from a single if clause\n */\n private extractHandlerFromIfClause(\n ifNode: Node,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string\n ): MessageHandler | null {\n try {\n const ifStmt = ifNode as unknown as IfStatement;\n const condition = ifStmt.getExpression();\n\n // Pattern 1: Type guard function call — if (isSubscribe(msg))\n if (Node.isCallExpression(condition)) {\n const funcExpr = condition.getExpression();\n const funcName = Node.isIdentifier(funcExpr) ? funcExpr.getText() : undefined;\n\n this.debugLogProcessingFunction(funcName);\n\n const messageType = this.resolveMessageType(funcExpr, funcName, typeGuards);\n if (!messageType) {\n this.debugLogUnresolvedMessageType(funcName);\n return null;\n }\n\n const line = ifStmt.getStartLineNumber();\n const relationships = this.extractRelationshipsFromIfBlock(ifStmt, messageType);\n\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n relationships,\n };\n }\n\n // Pattern 2: Equality check — if (data.type === 'subscribe')\n if (Node.isBinaryExpression(condition)) {\n const messageType = this.extractMessageTypeFromEqualityCheck(condition);\n if (messageType) {\n const line = ifStmt.getStartLineNumber();\n const relationships = this.extractRelationshipsFromIfBlock(ifStmt, messageType);\n\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n relationships,\n };\n }\n }\n\n return null;\n } catch (_error) {\n return null;\n }\n }\n\n /**\n * Extract message type from equality check: data.type === 'subscribe'\n */\n private extractMessageTypeFromEqualityCheck(\n expr: import(\"ts-morph\").BinaryExpression\n ): string | null {\n const operator = expr.getOperatorToken().getText();\n if (operator !== \"===\" && operator !== \"==\") return null;\n\n const left = expr.getLeft();\n const right = expr.getRight();\n\n // Check: xxx.type === 'value' or 'value' === xxx.type\n const stringLiteral = Node.isStringLiteral(right)\n ? right\n : Node.isStringLiteral(left)\n ? left\n : null;\n const propAccess = Node.isPropertyAccessExpression(left)\n ? left\n : Node.isPropertyAccessExpression(right)\n ? right\n : null;\n\n if (!stringLiteral || !propAccess) return null;\n\n const propName = propAccess.getName();\n if (propName !== \"type\" && propName !== \"kind\" && propName !== \"action\") {\n return null;\n }\n\n return stringLiteral.getLiteralValue();\n }\n\n /**\n * Debug log processing function\n */\n private debugLogProcessingFunction(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Processing if condition with function: ${funcName}`);\n }\n }\n\n /**\n * Debug log unresolved message type\n */\n private debugLogUnresolvedMessageType(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Could not resolve message type for: ${funcName}`);\n }\n }\n\n /**\n * Resolve message type from function expression\n */\n private resolveMessageType(\n funcExpr: Node,\n funcName: string | undefined,\n typeGuards: Map<string, string>\n ): string | undefined {\n if (funcName && typeGuards.has(funcName)) {\n const guardType = typeGuards.get(funcName);\n if (guardType) {\n this.debugLogFoundInLocalTypeGuards(funcName, guardType);\n return guardType;\n }\n }\n\n if (Node.isIdentifier(funcExpr)) {\n this.debugLogTryingImportResolution(funcName);\n return this.resolveImportedTypeGuard(funcExpr) ?? undefined;\n }\n\n return undefined;\n }\n\n /**\n * Debug log found in local type guards\n */\n private debugLogFoundInLocalTypeGuards(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found in local type guards: ${funcName} → ${messageType}`);\n }\n }\n\n /**\n * Debug log trying import resolution\n */\n private debugLogTryingImportResolution(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Not found locally, trying import resolution for: ${funcName}`);\n }\n }\n\n /**\n * Extract relationships from if block\n */\n private extractRelationshipsFromIfBlock(\n ifStmt: IfStatement,\n messageType: string\n ): ComponentRelationship[] | undefined {\n const thenStatement = ifStmt.getThenStatement();\n if (!thenStatement) {\n return undefined;\n }\n\n const sourceFile = ifStmt.getSourceFile();\n const handlerName = `${messageType}_handler`;\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n thenStatement,\n sourceFile,\n handlerName\n );\n\n return detectedRelationships.length > 0 ? detectedRelationships : undefined;\n }\n\n /**\n * Find all type predicate functions in a source file\n * Returns a map of function name → message type\n * Uses AST-based detection for consistency with imported type guard resolution\n */\n private findTypePredicateFunctions(sourceFile: SourceFile): Map<string, string> {\n const typeGuards = new Map<string, string>();\n\n sourceFile.forEachDescendant((node) => {\n this.processTypePredicate(node, typeGuards);\n });\n\n return typeGuards;\n }\n\n /**\n * Process a node that might be a type predicate function\n */\n private processTypePredicate(node: Node, typeGuards: Map<string, string>): void {\n if (!this.isFunctionNode(node)) {\n return;\n }\n\n const returnTypeNode = node.getReturnTypeNode();\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return;\n }\n\n const functionName = this.extractFunctionName(node);\n if (!functionName) {\n return;\n }\n\n const messageType = this.extractMessageTypeFromTypePredicateFunction(node, returnTypeNode);\n if (messageType) {\n typeGuards.set(functionName, messageType);\n }\n }\n\n /**\n * Extract function name from function node\n */\n private extractFunctionName(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | undefined {\n if (Node.isFunctionDeclaration(node)) {\n return node.getName();\n }\n\n if (Node.isFunctionExpression(node) || Node.isArrowFunction(node)) {\n return this.extractFunctionNameFromVariable(node);\n }\n\n return undefined;\n }\n\n /**\n * Extract function name from variable declaration\n */\n private extractFunctionNameFromVariable(\n node: FunctionExpression | ArrowFunction\n ): string | undefined {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return undefined;\n }\n\n /**\n * Extract message type from type predicate function\n */\n private extractMessageTypeFromTypePredicateFunction(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node\n ): string | null {\n if (!Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n // Try to get type node if method exists\n if (\"getTypeNode\" in returnTypeNode && typeof returnTypeNode.getTypeNode === \"function\") {\n const typeNode = returnTypeNode.getTypeNode();\n\n if (typeNode) {\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n if (messageType) {\n return messageType;\n }\n }\n }\n\n return this.extractMessageTypeFromFunctionBodyText(node);\n }\n\n /**\n * Extract message type from function body text\n */\n private extractMessageTypeFromFunctionBodyText(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | null {\n const body = node.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n return typeValueMatch[1] ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolve type guard from imported function\n * Uses ts-morph symbol resolution to find definition across files\n * Checks AST structure, not resolved types (which can lose type predicate info)\n */\n private resolveImportedTypeGuard(identifier: Identifier): string | null {\n try {\n const funcName = identifier.getText();\n const definitions = identifier.getDefinitionNodes();\n\n if (definitions.length === 0) {\n this.debugLogNoDefinitions(funcName);\n return null;\n }\n\n for (const def of definitions) {\n const messageType = this.tryExtractTypeGuardFromDefinition(def, funcName);\n if (messageType) {\n return messageType;\n }\n }\n } catch (error) {\n this.debugLogResolutionError(error);\n }\n\n return null;\n }\n\n /**\n * Try to extract type guard from a single function definition\n */\n private tryExtractTypeGuardFromDefinition(def: Node, funcName: string): string | null {\n if (!this.isFunctionNode(def)) {\n return null;\n }\n\n const returnTypeNode = def.getReturnTypeNode();\n this.debugLogReturnTypeInfo(funcName, def, returnTypeNode);\n\n const typePredicateResult = this.extractFromTypePredicate(returnTypeNode, funcName);\n if (typePredicateResult) {\n return typePredicateResult;\n }\n\n return this.extractFromFunctionBody(def, funcName);\n }\n\n /**\n * Check if node is a function type\n */\n private isFunctionNode(\n node: Node\n ): node is FunctionDeclaration | FunctionExpression | ArrowFunction {\n return (\n Node.isFunctionDeclaration(node) ||\n Node.isFunctionExpression(node) ||\n Node.isArrowFunction(node)\n );\n }\n\n /**\n * Extract message type from type predicate node\n */\n private extractFromTypePredicate(\n returnTypeNode: Node | undefined,\n funcName: string\n ): string | null {\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n const typeNode = returnTypeNode.getTypeNode();\n if (!typeNode) {\n return null;\n }\n\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n\n if (messageType) {\n this.debugLogTypePredicateResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Extract message type from function body\n */\n private extractFromFunctionBody(\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n funcName: string\n ): string | null {\n const body = def.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n const messageType = typeValueMatch[1] ?? null;\n this.debugLogBodyResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Debug: Log no definitions found\n */\n private debugLogNoDefinitions(funcName: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] No definitions found for imported function: ${funcName}`);\n }\n }\n\n /**\n * Debug: Log return type info\n */\n private debugLogReturnTypeInfo(\n funcName: string,\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node | undefined\n ): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n const returnType = def.getReturnType().getText();\n console.log(`[DEBUG] Function ${funcName} return type (resolved): ${returnType}`);\n console.log(`[DEBUG] Has return type node: ${!!returnTypeNode}`);\n console.log(\n `[DEBUG] Is type predicate node: ${returnTypeNode && Node.isTypePredicate(returnTypeNode)}`\n );\n }\n }\n\n /**\n * Debug: Log type predicate resolution\n */\n private debugLogTypePredicateResolution(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from AST type predicate)`);\n }\n }\n\n /**\n * Debug: Log body resolution\n */\n private debugLogBodyResolution(funcName: string, messageType: string | null): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from body)`);\n }\n }\n\n /**\n * Debug: Log resolution error\n */\n private debugLogResolutionError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error resolving imported type guard: ${error}`);\n }\n }\n\n /**\n * Extract message type from TypeScript type name\n * Examples:\n * QueryMessage → query\n * CommandMessage → command\n * SubscribeMessage → subscribe\n */\n private extractMessageTypeFromTypeName(typeName: string): string {\n // Remove common suffixes and convert to lowercase\n const messageType = typeName\n .replace(/Message$/, \"\")\n .replace(/Event$/, \"\")\n .replace(/Request$/, \"\")\n .replace(/Command$/, \"\")\n .replace(/Query$/, \"\")\n .toLowerCase();\n\n return messageType;\n }\n\n /**\n * Infer the context (background, content, popup, etc.) from file path\n */\n private inferContext(filePath: string): string {\n // Check context overrides first (monorepo workspace packages)\n for (const [pathPrefix, context] of this.contextOverrides.entries()) {\n if (filePath.startsWith(pathPrefix)) return context;\n }\n\n const path = filePath.toLowerCase();\n\n // Check contexts in priority order\n return (\n this.inferElectronContext(path) ||\n this.inferWorkerContext(path) ||\n this.inferServerAppContext(path) ||\n this.inferChromeExtensionContext(path) ||\n \"unknown\"\n );\n }\n\n /**\n * Infer Electron context (main, renderer, preload)\n */\n private inferElectronContext(path: string): string | null {\n if (\n path.includes(\"main.ts\") ||\n path.includes(\"main.js\") ||\n path.includes(\"/main/\") ||\n path.includes(\"\\\\main\\\\\")\n ) {\n return \"main\";\n }\n\n if (\n path.includes(\"/renderer/\") ||\n path.includes(\"\\\\renderer\\\\\") ||\n path.includes(\"renderer.ts\") ||\n path.includes(\"renderer.js\")\n ) {\n return \"renderer\";\n }\n\n if (path.includes(\"preload.ts\") || path.includes(\"preload.js\")) {\n return \"preload\";\n }\n\n return null;\n }\n\n /**\n * Infer Worker/PWA context\n */\n private inferWorkerContext(path: string): string | null {\n if (path.includes(\"service-worker\") || path.includes(\"sw.ts\") || path.includes(\"sw.js\")) {\n return \"worker\";\n }\n\n if (path.includes(\"/worker/\") || path.includes(\"\\\\worker\\\\\")) {\n return \"worker\";\n }\n\n return null;\n }\n\n /**\n * Infer WebSocket/server app context\n */\n private inferServerAppContext(path: string): string | null {\n if (\n path.includes(\"/server/\") ||\n path.includes(\"\\\\server\\\\\") ||\n path.includes(\"/server.\") ||\n path.includes(\"server.ts\") ||\n path.includes(\"server.js\")\n ) {\n return \"server\";\n }\n\n if (path.includes(\"/client/\") || path.includes(\"\\\\client\\\\\") || path.includes(\"/client.\")) {\n return \"client\";\n }\n\n return null;\n }\n\n /**\n * Infer Chrome extension context\n */\n private inferChromeExtensionContext(path: string): string | null {\n if (path.includes(\"/background/\") || path.includes(\"\\\\background\\\\\")) {\n return \"background\";\n }\n\n if (path.includes(\"/content/\") || path.includes(\"\\\\content\\\\\")) {\n return \"content\";\n }\n\n if (path.includes(\"/popup/\") || path.includes(\"\\\\popup\\\\\")) {\n return \"popup\";\n }\n\n if (path.includes(\"/devtools/\") || path.includes(\"\\\\devtools\\\\\")) {\n return \"devtools\";\n }\n\n if (path.includes(\"/options/\") || path.includes(\"\\\\options\\\\\")) {\n return \"options\";\n }\n\n if (path.includes(\"/offscreen/\") || path.includes(\"\\\\offscreen\\\\\")) {\n return \"offscreen\";\n }\n\n return null;\n }\n\n /**\n * Check binary expression for state mutations\n */\n private checkBinaryExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\" && ![\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left) && !Node.isElementAccessExpression(left)) return;\n\n const fieldPath = Node.isPropertyAccessExpression(left)\n ? this.getPropertyPath(left)\n : this.getPropertyPath(left.getExpression());\n\n const field = this.extractFieldFromStatePath(fieldPath);\n if (field) {\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Check call expression for array mutation methods\n */\n private checkCallExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (!Node.isPropertyAccessExpression(object)) return;\n\n const fieldPath = this.getPropertyPath(object);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field && [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].includes(methodName)) {\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Extract state-level constraints from a source file\n */\n private extractStateConstraintsFromFile(sourceFile: SourceFile): StateConstraint[] {\n const constraints: StateConstraint[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n const nodeConstraints = this.recognizeStateConstraint(node, filePath);\n constraints.push(...nodeConstraints);\n });\n\n return constraints;\n }\n\n /**\n * Extract global state constraints (stateConstraint() calls) from a source file\n */\n private extractGlobalStateConstraintsFromFile(sourceFile: SourceFile): GlobalStateConstraint[] {\n const constraints: GlobalStateConstraint[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n const constraint = this.recognizeGlobalStateConstraint(node, filePath);\n if (constraint) {\n constraints.push(constraint);\n }\n });\n\n return constraints;\n }\n\n /**\n * Recognize a stateConstraint() call and extract the constraint definition\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Parser logic requires nested conditionals\n private recognizeGlobalStateConstraint(\n node: Node,\n filePath: string\n ): GlobalStateConstraint | null {\n if (!Node.isCallExpression(node)) {\n return null;\n }\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) {\n return null;\n }\n\n const functionName = expression.getText();\n if (functionName !== \"stateConstraint\") {\n return null;\n }\n\n const args = node.getArguments();\n if (args.length < 2) {\n return null;\n }\n\n // Arg 0: string literal → name\n const nameArg = args[0];\n if (!Node.isStringLiteral(nameArg)) {\n return null;\n }\n const name = nameArg.getLiteralValue();\n\n // Arg 1: arrow function → extract body expression\n const predicateArg = args[1];\n if (!Node.isArrowFunction(predicateArg)) {\n return null;\n }\n\n const body = predicateArg.getBody();\n let expressionText: string;\n\n if (Node.isBlock(body)) {\n // Block body: find return statement\n const returnStatement = body.getStatements().find((s) => Node.isReturnStatement(s));\n if (!returnStatement || !Node.isReturnStatement(returnStatement)) {\n return null;\n }\n const returnExpr = returnStatement.getExpression();\n if (!returnExpr) {\n return null;\n }\n expressionText = returnExpr.getText();\n } else {\n // Expression body\n expressionText = body.getText();\n }\n\n // Arg 2 (optional): object literal with message property\n let message: string | undefined;\n if (args.length >= 3) {\n const optionsArg = args[2];\n if (Node.isObjectLiteralExpression(optionsArg)) {\n for (const prop of optionsArg.getProperties()) {\n if (Node.isPropertyAssignment(prop) && prop.getName() === \"message\") {\n const value = prop.getInitializer();\n if (value && Node.isStringLiteral(value)) {\n message = value.getLiteralValue();\n }\n }\n }\n }\n }\n\n return {\n name,\n expression: expressionText,\n message,\n location: {\n file: filePath,\n line: node.getStartLineNumber(),\n },\n };\n }\n\n /**\n * Recognize a $constraints() call and extract constraint definitions\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Parser logic requires nested conditionals\n private recognizeStateConstraint(node: Node, filePath: string): StateConstraint[] {\n if (!Node.isCallExpression(node)) {\n return [];\n }\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) {\n return [];\n }\n\n const functionName = expression.getText();\n if (functionName !== \"$constraints\") {\n return [];\n }\n\n // Get arguments: $constraints(field, constraintsObject)\n const args = node.getArguments();\n if (args.length < 2) {\n return [];\n }\n\n // First argument is the state field name\n const fieldArg = args[0];\n if (!Node.isStringLiteral(fieldArg)) {\n return [];\n }\n const field = fieldArg.getLiteralValue();\n\n // Second argument is the constraints object\n const constraintsArg = args[1];\n if (!Node.isObjectLiteralExpression(constraintsArg)) {\n return [];\n }\n\n // Extract each message type constraint\n const results: StateConstraint[] = [];\n for (const property of constraintsArg.getProperties()) {\n if (!Node.isPropertyAssignment(property)) {\n continue;\n }\n\n const messageType = property.getName();\n const initializer = property.getInitializer();\n if (!initializer || !Node.isObjectLiteralExpression(initializer)) {\n continue;\n }\n\n // Extract requires, ensures, and message from the constraint object\n let requires: string | undefined;\n let ensures: string | undefined;\n let message: string | undefined;\n\n for (const constraintProp of initializer.getProperties()) {\n if (!Node.isPropertyAssignment(constraintProp)) {\n continue;\n }\n\n const propName = constraintProp.getName();\n const propValue = constraintProp.getInitializer();\n if (!propValue) {\n continue;\n }\n\n if (propName === \"requires\" && Node.isStringLiteral(propValue)) {\n requires = propValue.getLiteralValue();\n } else if (propName === \"ensures\" && Node.isStringLiteral(propValue)) {\n ensures = propValue.getLiteralValue();\n } else if (propName === \"message\" && Node.isStringLiteral(propValue)) {\n message = propValue.getLiteralValue();\n }\n }\n\n results.push({\n field,\n messageType,\n requires,\n ensures,\n message,\n location: {\n file: filePath,\n line: property.getStartLineNumber(),\n },\n });\n }\n\n return results;\n }\n\n // Verified State Discovery (Issue #27)\n\n /**\n * Extract $sharedState declarations with { verify: true } from a source file\n *\n * Finds patterns like:\n * const authState = $sharedState('auth', initialState, { verify: true })\n * export const settings = $syncedState('settings', defaults, { verify: true })\n */\n extractVerifiedStatesFromFile(sourceFile: SourceFile): VerifiedStateInfo[] {\n const verifiedStates: VerifiedStateInfo[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) return;\n\n const stateInfo = this.recognizeVerifiedStateCall(node, filePath);\n if (stateInfo) {\n verifiedStates.push(stateInfo);\n }\n });\n\n return verifiedStates;\n }\n\n /**\n * Recognize a $sharedState/$syncedState/$persistedState call with verify: true\n */\n private recognizeVerifiedStateCall(node: Node, filePath: string): VerifiedStateInfo | null {\n if (!Node.isCallExpression(node)) return null;\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) return null;\n\n const funcName = expression.getText();\n // Match state primitives that support verification\n if (![\"$sharedState\", \"$syncedState\", \"$persistedState\"].includes(funcName)) {\n return null;\n }\n\n const args = node.getArguments();\n if (args.length < 2) return null;\n\n // Check for { verify: true } in options (3rd argument)\n const optionsArg = args[2];\n if (!optionsArg || !this.hasVerifyTrue(optionsArg)) return null;\n\n // Extract state key (1st argument)\n const keyArg = args[0];\n if (!keyArg || !Node.isStringLiteral(keyArg)) return null;\n const key = keyArg.getLiteralValue();\n\n // Get variable name from parent declaration\n const variableName = this.getVariableNameFromParent(node) || key;\n\n // Extract field names from initial value (2nd argument)\n const initialValueArg = args[1];\n const fields = initialValueArg ? this.extractFieldNames(initialValueArg) : [];\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found verified state: ${variableName} (key: \"${key}\") with fields: [${fields.join(\", \")}]`\n );\n }\n\n return {\n key,\n variableName,\n filePath,\n line: node.getStartLineNumber(),\n fields,\n };\n }\n\n /**\n * Check if an options object contains verify: true\n */\n private hasVerifyTrue(optionsNode: Node): boolean {\n if (!Node.isObjectLiteralExpression(optionsNode)) return false;\n\n for (const prop of optionsNode.getProperties()) {\n if (!Node.isPropertyAssignment(prop)) continue;\n\n const name = prop.getName();\n if (name !== \"verify\") continue;\n\n const initializer = prop.getInitializer();\n if (initializer && initializer.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Get variable name from parent VariableDeclaration\n */\n private getVariableNameFromParent(node: Node): string | null {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return null;\n }\n\n /**\n * Extract field names from an initial value expression\n * Handles object literals and identifier references\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Field extraction requires traversing nested object structures\n private extractFieldNames(node: Node): string[] {\n const fields: string[] = [];\n\n if (Node.isObjectLiteralExpression(node)) {\n for (const prop of node.getProperties()) {\n if (Node.isPropertyAssignment(prop) || Node.isShorthandPropertyAssignment(prop)) {\n fields.push(prop.getName());\n }\n }\n } else if (Node.isIdentifier(node)) {\n // Try to resolve the identifier to its declaration\n const definitions = node.getDefinitionNodes();\n for (const def of definitions) {\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (initializer && Node.isObjectLiteralExpression(initializer)) {\n return this.extractFieldNames(initializer);\n }\n }\n }\n }\n\n return fields;\n }\n\n /**\n * Find exported functions that modify verified state signals\n *\n * Looks for patterns:\n * - authState.value = { ... }\n * - authState.value.field = value\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: State mutation detection requires complex AST pattern matching\n findStateMutatingFunctions(\n sourceFile: SourceFile,\n verifiedStates: VerifiedStateInfo[]\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const stateVarNames = new Set(verifiedStates.map((s) => s.variableName));\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n // Find all exported functions\n for (const func of sourceFile.getFunctions()) {\n if (!func.isExported()) continue;\n\n const funcName = func.getName();\n if (!funcName) continue;\n\n // Check if function modifies any verified state\n this.currentFunctionParams = this.extractParameterNames(func);\n const assignments = this.findStateMutationsInFunction(func, stateVarNames);\n if (assignments.length === 0) {\n this.currentFunctionParams = [];\n continue;\n }\n\n // Extract requires/ensures\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n this.extractVerificationConditions(func, preconditions, postconditions);\n\n // Generate message type from function name\n const messageType = this.functionNameToMessageType(funcName);\n\n const parameters =\n this.currentFunctionParams.length > 0 ? [...this.currentFunctionParams] : undefined;\n this.currentFunctionParams = [];\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found state-mutating function: ${funcName} → ${messageType} ` +\n `(${assignments.length} assignments, ${preconditions.length} preconditions, ${postconditions.length} postconditions)`\n );\n }\n\n handlers.push({\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: func.getStartLineNumber(),\n },\n origin: \"stateHandler\" as const,\n parameters,\n });\n }\n\n // Also check exported variable declarations with arrow functions\n for (const varStmt of sourceFile.getVariableStatements()) {\n if (!varStmt.isExported()) continue;\n\n for (const decl of varStmt.getDeclarations()) {\n const initializer = decl.getInitializer();\n if (!initializer) continue;\n if (!Node.isArrowFunction(initializer) && !Node.isFunctionExpression(initializer)) continue;\n\n const funcName = decl.getName();\n if (!funcName) continue;\n\n this.currentFunctionParams = this.extractParameterNames(initializer);\n const assignments = this.findStateMutationsInFunction(initializer, stateVarNames);\n if (assignments.length === 0) {\n this.currentFunctionParams = [];\n continue;\n }\n\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n this.extractVerificationConditions(initializer, preconditions, postconditions);\n\n const messageType = this.functionNameToMessageType(funcName);\n\n const arrowParams =\n this.currentFunctionParams.length > 0 ? [...this.currentFunctionParams] : undefined;\n this.currentFunctionParams = [];\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found state-mutating arrow function: ${funcName} → ${messageType}`);\n }\n\n handlers.push({\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: decl.getStartLineNumber(),\n },\n origin: \"stateHandler\" as const,\n parameters: arrowParams,\n });\n }\n }\n\n return handlers;\n }\n\n /**\n * True when `node` sits in a callback passed to `.on(...)` /\n * `.addEventListener(...)` somewhere below `func`.\n */\n private isInsideHandlerRegistration(node: Node, func: Node): boolean {\n let current: Node | undefined = node.getParent();\n while (current && current !== func) {\n if (Node.isCallExpression(current)) {\n const callee = current.getExpression();\n if (\n Node.isPropertyAccessExpression(callee) &&\n (callee.getName() === \"on\" || callee.getName() === \"addEventListener\")\n ) {\n return true;\n }\n }\n current = current.getParent();\n }\n return false;\n }\n\n /**\n * Find state mutations within a function that target verified state signals\n */\n private findStateMutationsInFunction(\n func: FunctionDeclaration | ArrowFunction | FunctionExpression,\n stateVarNames: Set<string>\n ): StateAssignment[] {\n const mutations: StateAssignment[] = [];\n\n // polly#163: the Issue #27 lift pass models this exported mutator's body as\n // a synthetic handler, so writes within it are on-surface.\n this.recordOnSurfaceSpan(func);\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: AST traversal for state mutations requires multiple pattern checks\n func.forEachDescendant((node) => {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\") return;\n\n // A write inside a `bus.on(...)` callback registered by this function is\n // that handler's write, already modelled by the dispatch extraction. A\n // `registerHandlers(bus)` composite helper must not become a handler of\n // its own that replays every nested write unguarded.\n if (this.isInsideHandlerRegistration(node, func)) return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const path = this.getPropertyPath(left);\n\n // Check for patterns:\n // 1. authState.value = { ... } (full replacement)\n // 2. authState.value.field = value (field update)\n for (const varName of stateVarNames) {\n // Pattern 1: Full state replacement\n // e.g., authState.value = { loggedIn: true } → authState_loggedIn = true\n if (path === `${varName}.value`) {\n const right = node.getRight();\n if (Node.isObjectLiteralExpression(right)) {\n this.extractObjectLiteralAssignments(right, mutations, varName);\n }\n break;\n }\n\n // Pattern 2: Field update\n // e.g., authState.value.loggedIn = true → authState_loggedIn = true\n const fieldPrefix = `${varName}.value.`;\n if (path.startsWith(fieldPrefix)) {\n const fieldName = path.substring(fieldPrefix.length);\n const value = this.extractValue(node.getRight());\n mutations.push({ field: `${varName}_${fieldName}`, value: value ?? \"@\" });\n break;\n }\n }\n });\n\n return mutations;\n }\n\n // polly#163: off-surface mutator detection\n\n /**\n * Whether a file is application source the off-surface scan should cover.\n * Test, spec, BDD-feature, story and e2e files seed verified state directly\n * as fixtures — expected, not an escaped runtime mutator — so they are out.\n */\n private isOffSurfaceScannable(filePath: string): boolean {\n return !/(?:\\.(?:test|spec|stories)\\.[cm]?[jt]sx?$)|(?:\\/(?:__tests__|tests|test|features|e2e|stories|__mocks__)\\/)/i.test(\n filePath\n );\n }\n\n /** The signal factories whose `.value` writes the model treats as state. */\n private static readonly STATE_SIGNAL_FACTORIES = new Set([\n \"$state\",\n \"$sharedState\",\n \"$syncedState\",\n \"$persistedState\",\n \"$meshState\",\n \"$peerState\",\n ]);\n\n /**\n * Collect the variable names of every state-signal declaration in a file,\n * regardless of a `{ verify: true }` flag. Scopes the off-surface scan to\n * genuine state signals so it does not false-positive on unrelated `.value`\n * writes.\n */\n private extractStateSignalVariableNames(sourceFile: SourceFile): string[] {\n const names: string[] = [];\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) return;\n const expr = node.getExpression();\n if (!Node.isIdentifier(expr)) return;\n if (!HandlerExtractor.STATE_SIGNAL_FACTORIES.has(expr.getText())) return;\n const varName = this.getVariableNameFromParent(node);\n if (varName) names.push(varName);\n });\n return names;\n }\n\n /**\n * Mark a function body as part of the modelled handler surface. Called from\n * the two extraction chokepoints — `extractAssignments` (every dispatch / ws /\n * rest / type-guard / switch handler body) and `findStateMutationsInFunction`\n * (every lifted exported mutator). A verified-state write whose position is\n * not contained in any recorded span is off-surface.\n */\n private recordOnSurfaceSpan(node: Node): void {\n this.onSurfaceSpans.push({\n file: node.getSourceFile().getFilePath(),\n start: node.getStart(),\n end: node.getEnd(),\n });\n }\n\n /** True when `pos` in `file` falls inside a modelled handler body span. */\n private isWithinOnSurfaceSpan(file: string, pos: number): boolean {\n for (const span of this.onSurfaceSpans) {\n if (span.file === file && pos >= span.start && pos <= span.end) return true;\n }\n return false;\n }\n\n /**\n * Walk a file for verified-state writes (`signal.value` / `signal.value.field`\n * on the left of `=`) that are NOT inside any modelled handler body. These are\n * the escaped, non-dispatched mutators of polly#163 — the model never explores\n * them, so a field only they (or they-and-a-handler) write is silently\n * uncounted by the #162 coverage report.\n *\n * Must run after all handler extraction so `onSurfaceSpans` is complete.\n */\n private findOffSurfaceMutations(\n sourceFile: SourceFile,\n stateVarNames: ReadonlySet<string>\n ): OffSurfaceMutation[] {\n const out: OffSurfaceMutation[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n if (Node.isBinaryExpression(node)) {\n out.push(...this.offSurfaceWritesAt(node, stateVarNames, filePath));\n }\n });\n\n return out;\n }\n\n /**\n * Off-surface findings for a single assignment node, or `[]` when it is not a\n * verified-state write or is inside a modelled handler body.\n */\n private offSurfaceWritesAt(\n node: BinaryExpression,\n stateVarNames: ReadonlySet<string>,\n filePath: string\n ): OffSurfaceMutation[] {\n if (node.getOperatorToken().getText() !== \"=\") return [];\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left)) return [];\n\n const match = this.matchVerifiedStateWrite(this.getPropertyPath(left), stateVarNames);\n if (!match) return [];\n\n // On-surface writes belong to a modelled handler — skip them.\n if (this.isWithinOnSurfaceSpan(filePath, left.getStart())) return [];\n\n const base = {\n signalVariable: match.signal,\n functionName: this.enclosingFunctionName(node),\n filePath,\n line: node.getStartLineNumber(),\n };\n\n // Field-level write: one finding, keyed `${signal}_${field}`.\n if (match.field !== undefined) {\n return [{ field: `${match.signal}_${match.field}`, ...base }];\n }\n\n // Whole-state replacement: one finding per object-literal key, or the bare\n // signal name when the RHS is not an object literal.\n const fields = this.objectLiteralFieldNames(node.getRight());\n if (fields.length === 0) return [{ field: match.signal, ...base }];\n return fields.map((f) => ({ field: `${match.signal}_${f}`, ...base }));\n }\n\n /**\n * Recognize `signal.value` (whole-state) or `signal.value.field` (field) on\n * the LHS of an assignment, where `signal` is a verified-state variable.\n * Mirrors the two patterns in `findStateMutationsInFunction`.\n */\n private matchVerifiedStateWrite(\n path: string,\n stateVarNames: ReadonlySet<string>\n ): { signal: string; field?: string } | null {\n for (const varName of stateVarNames) {\n if (path === `${varName}.value`) return { signal: varName };\n const prefix = `${varName}.value.`;\n if (path.startsWith(prefix)) return { signal: varName, field: path.substring(prefix.length) };\n }\n return null;\n }\n\n /** Object-literal property names (for `signal.value = { a, b }`). */\n private objectLiteralFieldNames(right: Node): string[] {\n if (!Node.isObjectLiteralExpression(right)) return [];\n const names: string[] = [];\n for (const prop of right.getProperties()) {\n if (Node.isPropertyAssignment(prop) || Node.isShorthandPropertyAssignment(prop)) {\n names.push(prop.getName());\n }\n }\n return names;\n }\n\n /**\n * Name the nearest enclosing function/method of a node for the off-surface\n * report: `Class.method`, a bare function/accessor name, the variable a\n * function expression is bound to, or `<module>` for top-level module code.\n */\n private enclosingFunctionName(node: Node): string {\n let current: Node | undefined = node.getParent();\n while (current) {\n const name = this.namedScope(current);\n if (name !== null) return name;\n current = current.getParent();\n }\n return \"<module>\";\n }\n\n /**\n * The display name of a function-like node, or `null` when `node` is not a\n * function-like scope (keep climbing) or is an unnamed closure (keep climbing\n * to the nearest named scope).\n */\n private namedScope(node: Node): string | null {\n if (Node.isFunctionDeclaration(node)) {\n return node.getName() ?? \"<anonymous function>\";\n }\n if (Node.isMethodDeclaration(node)) {\n const clsName = node.getFirstAncestorByKind(SyntaxKind.ClassDeclaration)?.getName();\n const methodName = node.getName();\n return clsName ? `${clsName}.${methodName}` : methodName;\n }\n if (Node.isGetAccessorDeclaration(node) || Node.isSetAccessorDeclaration(node)) {\n return node.getName();\n }\n if (Node.isArrowFunction(node) || Node.isFunctionExpression(node)) {\n return this.boundFunctionName(node) ?? null;\n }\n return null;\n }\n\n /** The variable / property name a function expression is assigned to, if any. */\n private boundFunctionName(fn: Node): string | undefined {\n const parent = fn.getParent();\n if (!parent) return undefined;\n if (Node.isVariableDeclaration(parent)) return parent.getName();\n if (Node.isPropertyAssignment(parent)) return parent.getName();\n return undefined;\n }\n\n /**\n * Convert function name to message type\n * Examples:\n * handleAuthSuccess → AuthSuccess\n * handleLogout → Logout\n * setUserProfile → SetUserProfile\n */\n private functionNameToMessageType(funcName: string): string {\n // Remove common handler prefixes\n let name = funcName\n .replace(/^handle/, \"\")\n .replace(/^on/, \"\")\n .replace(/^set/, \"Set\")\n .replace(/^update/, \"Update\")\n .replace(/^do/, \"\");\n\n // Ensure first letter is uppercase\n if (name.length > 0) {\n name = name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n return name || funcName;\n }\n\n // $resource() Discovery\n\n /**\n * Extract $resource() calls from a source file.\n *\n * Recognizes: const todos = $resource(\"todos\", { source, fetcher, initialValue })\n */\n private extractResourcesFromFile(sourceFile: SourceFile, filePath: string): ResourceInfo[] {\n const resources: ResourceInfo[] = [];\n\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) return;\n\n const resource = this.extractResourcePattern(node, filePath);\n if (resource) {\n resources.push(resource);\n }\n });\n\n return resources;\n }\n\n /**\n * Match a $resource() call and extract its metadata.\n */\n private extractResourcePattern(node: CallExpression, filePath: string): ResourceInfo | null {\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) return null;\n if (expression.getText() !== \"$resource\") return null;\n\n const args = node.getArguments();\n if (args.length < 2) return null;\n\n // First arg: resource name (string literal)\n const nameArg = args[0];\n if (!nameArg || !Node.isStringLiteral(nameArg)) return null;\n const name = nameArg.getLiteralValue();\n\n // Second arg: options object with source, fetcher, initialValue\n const optionsArg = args[1];\n if (!optionsArg || !Node.isObjectLiteralExpression(optionsArg)) return null;\n\n // Extract source signal reads\n const sourceSignals = this.extractResourceSourceReads(optionsArg);\n\n // Get variable name from parent declaration\n const variableName = this.getVariableNameFromParent(node) || name;\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found $resource: ${variableName} (name: \"${name}\") with source signals: [${sourceSignals.join(\", \")}]`\n );\n }\n\n return {\n name,\n variableName,\n filePath,\n line: node.getStartLineNumber(),\n sourceSignals,\n };\n }\n\n /**\n * Walk the source() function in a $resource options object to find .value reads.\n *\n * Looks for patterns like:\n * source: () => ({ userId: authState.value.userId })\n * Extracts signal field names: [\"authState_userId\"]\n */\n private extractResourceSourceReads(optionsObj: ObjectLiteralExpression): string[] {\n const signals: string[] = [];\n\n const sourceProp = optionsObj.getProperty(\"source\");\n if (!sourceProp || !Node.isPropertyAssignment(sourceProp)) return signals;\n\n const sourceInit = sourceProp.getInitializer();\n if (!sourceInit) return signals;\n\n // Walk the source function body looking for .value reads\n sourceInit.forEachDescendant((node) => {\n if (!Node.isPropertyAccessExpression(node)) return;\n\n const text = node.getText();\n // Match: signal.value.field or signal.value\n const match = text.match(/^(\\w+)\\.value(?:\\.(\\w+))?$/);\n if (match) {\n const signalName = match[1];\n const fieldName = match[2];\n if (!signalName) return;\n if (fieldName) {\n signals.push(`${signalName}_${fieldName}`);\n } else {\n signals.push(signalName);\n }\n }\n });\n\n return signals;\n }\n\n /**\n * Create three synthetic MessageHandler entries for a $resource:\n * - {name}_FetchStart: source available, status != loading → status = loading\n * - {name}_FetchSuccess: status == loading → status = success, error = false\n * - {name}_FetchError: status == loading → status = error, error = true\n */\n private createResourceHandlers(resource: ResourceInfo, context: string): MessageHandler[] {\n const { name, filePath, line } = resource;\n const location = { file: filePath, line };\n\n const fetchStart: MessageHandler = {\n messageType: `${name}_FetchStart`,\n node: context,\n assignments: [\n { field: `${name}_status`, value: \"loading\" },\n { field: `${name}_error`, value: false },\n ],\n preconditions: [\n {\n expression: `${name}_status !== \"loading\"`,\n location: { line, column: 0 },\n },\n ],\n postconditions: [],\n location,\n };\n\n const fetchSuccess: MessageHandler = {\n messageType: `${name}_FetchSuccess`,\n node: context,\n assignments: [\n { field: `${name}_status`, value: \"success\" },\n { field: `${name}_error`, value: false },\n ],\n preconditions: [\n {\n expression: `${name}_status === \"loading\"`,\n location: { line, column: 0 },\n },\n ],\n postconditions: [],\n location,\n };\n\n const fetchError: MessageHandler = {\n messageType: `${name}_FetchError`,\n node: context,\n assignments: [\n { field: `${name}_status`, value: \"error\" },\n { field: `${name}_error`, value: true },\n ],\n preconditions: [\n {\n expression: `${name}_status === \"loading\"`,\n location: { line, column: 0 },\n },\n ],\n postconditions: [],\n location,\n };\n\n return [fetchStart, fetchSuccess, fetchError];\n }\n}\n\nexport function extractHandlers(tsConfigPath: string): HandlerAnalysis {\n const extractor = new HandlerExtractor(tsConfigPath);\n return extractor.extractHandlers();\n}\n",
|
|
30
30
|
"// 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",
|
|
31
31
|
"/**\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"
|
|
32
32
|
],
|
|
33
|
-
"mappings": "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",
|
|
34
|
-
"debugId": "
|
|
33
|
+
"mappings": "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",
|
|
34
|
+
"debugId": "31294C59A81B137264756E2164756E21",
|
|
35
35
|
"names": []
|
|
36
36
|
}
|