artdag: optimize composition pass (fuse + dce) + 4 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m4s

artdag/optimize entries outputs fusible? fuses the entry list then DCEs against
the output names — sinks survive fusion (never absorbed), so output-equivalent
with fewer nodes. optimize 22/22, total 132/132.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-07 12:25:41 +00:00
parent 4947d1f5aa
commit 64ddd29176
5 changed files with 63 additions and 6 deletions

View File

@@ -30,7 +30,7 @@ edges.
## Status (rolling)
`bash lib/artdag/conformance.sh`**128/128** (8 suites: dag, analyze, plan, execute, optimize, fed, cost, serialize)
`bash lib/artdag/conformance.sh`**132/132** (8 suites: dag, analyze, plan, execute, optimize, fed, cost, serialize)
Base roadmap (Phases 16) COMPLETE. Now extending.
@@ -138,6 +138,12 @@ lib/artdag/optimize.sx lib/artdag/federation.sx
## Progress log
- **Ext: optimize composition pass** (optimize suite 22/22, total 132/132).
`artdag/optimize entries outputs fusible?` fuses the entry list then DCEs against
the output names (sinks survive fusion since they're never absorbed) — fewer nodes,
identical results. Verified: dead branch dropped + chain fused (4→2), an output that
is itself "dead" is retained, no-fusible-set still DCEs.
- **Ext: DAG wire serialization** (serialize suite 13/13, total 128/128).
`lib/artdag/serialize.sx`: `dag->wire` emits a topo-ordered list of
`(id op inputs params commutative)` records — plain lists with keyword-keyed param