Run CI on claude/spec-driven-engine and raise Python floor to 3.12#75
Run CI on claude/spec-driven-engine and raise Python floor to 3.12#75MaxGhenis wants to merge 3 commits into
Conversation
The Tests workflow only triggered on main while all integration PRs merge into claude/spec-driven-engine, so the spec engine has been landing without CI. Add the branch to the workflow triggers. requires-python claimed >=3.11 but microimpute (the canonical donor imputation backend) only installs on 3.12-3.14 via its marker, leaving 3.11 installs without the imputation engine. Raise the floor to 3.12 and align the CI matrix, classifiers, docs workflow, and mypy target. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
tests/spec/test_spec.py and tests/targets/test_spec.py share a module basename, and neither directory was a package, so pytest's whole-suite collection failed with an import file mismatch. tests/ already uses package-style test directories (tests/__init__.py, tests/fusion/); bring core/, spec/, and targets/ in line. The full suite has been uncollectable since the duplicate basename landed - masked because CI never ran on this branch and local runs targeted tests/spec/ only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
First full-suite CI run on this branch: 41 failed / 1,029 passed / 123 skipped (after the All 41 failures are one root cause, not 41 problems: The engine instantiates So the failures are the declared dependency surface telling the truth: the spec engine cannot run against any released microimpute. Unblock path:
I deliberately did not skip/xfail these tests — masking them would hide exactly the signal this workflow exists to give. 🤖 Generated with Claude Code |
The suite's 41 failures came from pip resolving microimpute from PyPI (3.1.1, abstract Imputer) while [tool.uv.sources] pins the git rev with the concrete canonical Imputer the engine instantiates. pip ignores tool.uv.sources; uv honors it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What
Run CI on
claude/spec-driven-engine. The Tests workflow only triggered onmain, but the last ~30 PRs (Add provider-backed source registry #44–Resolve observation frames for entity bundles #74) merge intoclaude/spec-driven-engine— so the entire spec engine has landed with zero CI runs since May 31. This adds the integration branch to thepush/pull_requesttriggers so every PR into it (including this one) runs the suite.Align the Python floor with reality.
requires-pythonclaimed>=3.11, butmicroimpute— the canonical donor-imputation backend the spec engine depends on — only installs on3.12 <= python < 3.15via its environment marker, so a 3.11 install silently lacks the imputation engine. This bumpsrequires-pythonto>=3.12, drops 3.11 from the CI matrix and classifiers, bumps the docs workflow Python (3.11 can no longerpip install -e .), and aligns the mypy target.Why now
Flagged in an architecture review (2026-06-09): CI-on-trunk is the highest-leverage safety fix available — it removes the silent-breakage class entirely (the same class that produced the stale
packs/us↔microplex-usspec divergence).Notes
microcalibrate(the[calibrate]extra) still needs 3.13+; its marker is unchanged.🤖 Generated with Claude Code