Skip to content

Declare project root with eigs.json (v0.43.0 resolution) - #108

Merged
InauguralPhysicist merged 2 commits into
mainfrom
fix-v043-eigs-json
Sep 8, 2026
Merged

Declare project root with eigs.json (v0.43.0 resolution)#108
InauguralPhysicist merged 2 commits into
mainfrom
fix-v043-eigs-json

Conversation

@InauguralPhysicist

Copy link
Copy Markdown
Contributor

The benchmark/emitter subdir files (benchmarks/dump_tseitin_cnf.eigs etc.) load root-relative lib/ paths and break on v0.43.0 (#1056 file-relative + project-root resolution). minisat.eigs at the root already worked file-relative, so the smoke suite missed this. eigs.json at the root resolves the subdir loads. Surfaced while wiring native MiniSat as the fast UNSAT oracle for the AOT differential.

InauguralPhysicist and others added 2 commits September 3, 2026 14:10
Seventeen `x is ...` sites inside functions wrote names that also exist at
module scope (`result`, `t0`, `t1`, `ms`, `parsed`, `cfg`) or a builtin's
name (`negative`). On the VM these are locals on the first call and outer
writes once the module binding exists -- harmless here because the
module reassigns them after every call -- but the AOT refuses the
ambiguity by name (ouroboros#86 measured 2026-09-03: "function 'dpll_rec'
assigns module name 'result' whose first module-level binding does not
provably precede the function's first use", then the same for
run_benchmarks' timing names, then "`negative is ...` writes the GLOBAL
builtin binding"). `local` makes each of them what they were meant to be.

VM output on tests/corpus/k4_3color_unsat.cnf and --bench is unchanged;
`bash aot/build.sh minisat.eigs` now builds, and the native binary's
output on the corpus instances matches the VM's modulo the ms field.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FDZZDgZDoJxPFBaPH5NkG3
benchmarks/*.eigs (dump_tseitin_cnf, tseitin_ladder) sit in a subdirectory and
load root-relative lib/ paths (lib/dimacs.eigs etc.); under v0.43.0 (#1056,
file-relative + project-root resolution, cwd step removed) those resolve only
via a project-root marker. minisat.eigs at the root already worked (file-relative),
which is why the smoke suite passed — the benchmark/emitter subdir files did not.
eigs.json at the root fixes them.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@InauguralPhysicist
InauguralPhysicist merged commit 6dbfa7d into main Sep 8, 2026
1 check passed
@InauguralPhysicist
InauguralPhysicist deleted the fix-v043-eigs-json branch September 8, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant