Skip to content

[3-9] Wire real EML/AST contracts into Goal 3's DAG modules #97

Description

@Mray229

Objective
Goal 3's [3-1] through [3-4] were built against provisional placeholder types (AstNode, EmlNode, generic vocab sets) while [1-2]/[2-1] weren't merged yet. Those real contracts now exist on goal2 (src/geml/contracts/ast.py's ASTNode/ASTEdge, src/geml/eml/ir.py's One/Variable/EML). This issue swaps the placeholders for the real thing.

Owned paths (adjust to actual file locations once confirmed)

src/geml/graph/validate.py — AST_VOCAB/EML_VOCAB placeholders
src/geml/dag/ast.py — AstNode → real ASTNode/ASTEdge
src/geml/dag/eml.py — EmlNode → real One/Variable/EML
src/geml/dag/direct_eml.py — add emit_add/emit_multiply/emit_divide/emit_power using the real formulas in compiler_core.py/compiler_arithmetic.py (currently only emit_exp/emit_ln exist)
src/geml/interfaces/eml_dag_cost.py — update in lockstep, since it depends on dag/eml.py

Tasks

Replace AstNode/EmlNode placeholder dataclasses with the real Pydantic contracts
Replace the placeholder AST_VOCAB/EML_VOCAB sets with whatever the real contracts expose
Add direct/memoized constructors for add, multiply, divide, power (formulas already verified real, from compiler_core.py/compiler_arithmetic.py)
Re-run all of [3-1]–[3-8]'s existing test suites to confirm nothing regresses

Acceptance criteria

All existing Goal 3 tests still pass against the real contracts
No provisional/placeholder types remain in any Goal 3 module
New add/multiply/divide/power audit cases pass in [3-5]'s equivalence audit

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions