7f40224f0f
ast.ts: Add optional compoundOperator and compoundParts fields to RelationAssertion, allowing compound fluent assertions to carry their .and / .or structure through the AST layer. fluent.ts: toAst() now emits compoundOperator/compoundParts when isCompound, closing the gap where compound state was silently dropped in canonical extraction, preset building, and validation. lower-to-canonical.ts: Handle RelationAssertion with compound metadata by lowering each part as a separate grouped clause (same groupId, same compoundOperator), matching DSL parser compound behavior. validator.ts: Validate options on each compound part, closing the false-positive validation gap where only the final relation was checked. 3 lossy code paths (extractCanonicalFromAssertion, presets.toPresetResult, validateRelation) now preserve compound structure. Primary FOL evaluation path was already correct (fol-compiler reads compoundParts directly). 658 tests pass.
imhotep-core
Foundation types and contracts for Imhotep. Defines the AST/IR, geometry world schema, diagnostic taxonomy, pipeline contracts, FOL AST/IR representations, domain/value types, scene target descriptors, property contract/results types, and geometry snapshot caching.
Key Exports
| Module | Description |
|---|---|
types |
Core type definitions (positions, IDs, results, proofs) |
ast |
Unist-style AST node definitions |
ir |
Semantic IR and execution IR |
world |
Geometry world schema tables |
contracts |
Extractor, solver, compiler, reporter interfaces |
diagnostics |
Diagnostic categories, error codes, traces, shrinking |
logic-ast |
FOL AST types (quantifiers, connectives, predicates) |
logic-ir |
Lowered FOL IR for logic engine |
canonical |
Canonical world adapter for solver |
geometry-cache |
Disk-based extraction caching |