Skip to content

fix(ci): green main — dvp_atoms manifest, RH emitter stances, sympy-1.12 + lake-skip fixes - #231

Open
DrMurphyIsIn wants to merge 5 commits into
mainfrom
ci/green-main-phase0
Open

fix(ci): green main — dvp_atoms manifest, RH emitter stances, sympy-1.12 + lake-skip fixes#231
DrMurphyIsIn wants to merge 5 commits into
mainfrom
ci/green-main-phase0

Conversation

@DrMurphyIsIn

Copy link
Copy Markdown
Owner

Greens main after today's dVP/RH merges left CI red (telperion-casestudy + telperion-test). No mathematics is changed; these are manifest/registry/test-hygiene and version-robustness fixes. Verified locally: full telperion suite 1290 passed, 44 skipped, 0 failed under BOTH sympy 1.12 and current sympy, with cvxpy present (matching the CI matrix).

Fixes

  1. dvp_atoms manifest registration — the new dVP atom example (emits BCSplit/JensenZeroCount/SphereBound) was unlisted; the manifest-completeness gate correctly rejected it. Added as group=quick (~0.4s byte-stable regen). (fixes telperion-casestudy)
  2. Sensitivity stances for the 3 new dVP/RH emittersBCSplitEmitter/JensenZeroCountEmitter/SphereBoundEmitter were added without a stance, tripping test_every_emitter_is_classified. Each takes the analytic bounds as hypotheses and does structural combine/order/uniformization glue (no corruptible witness, cert-time refusal of bad params, no adapter) → STRUCTURALLY_NONVACUOUS, matching the HalfPlaneDiskEmitter precedent. ⚠️ trust-model statement — please sanity-check the classification.
  3. Lean-toolchain test skips — kernel-touching tests (test_statement_match, two test_negative_control) now guard on lean_env_ready (lake and built Mathlib) and the simplify verifier test on lake presence, so they skip cleanly on the no-toolchain unit job instead of erroring. Also rewrote the stale test_lean_server_start_failure test: start() was redesigned to a pure env-capability check (no Popen worker); spawn-failure recording now happens in probe()/elaborate(), so the test patches both the LSP Popen and single-shot subprocess.run paths.
  4. mt_optimize sympy-1.12 fix — under numpy≥2, repr(np.float64) is 'np.float64(...)'; sympy 1.12 converts numpy scalars by stringifying, so sp.floor(np.float64*denom) raised invalid literal for int(). Fixed with an exact float() coercion. Math unchanged.
  5. spectral roundtrip tolerance — the np.roots factor is a numeric intermediate (~1e-4 residual on clustered VP deg-4 roots); the shipped cert is the rationalized exact factor gated by the exact SOS-identity test. Loosened the numeric roundtrip to a principled 1e-3.

🤖 Generated with Claude Code

Dr. Murphy and others added 5 commits September 5, 2026 15:54
Greens telperion-casestudy: the new dVP atom example (emits BCSplit/
JensenZeroCount/SphereBound) was unlisted, which the manifest-completeness
gate correctly rejected. Group=quick (~0.4s byte-stable regen).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W4CnMPKEstq3yVjTgjtreY
BCSplit/JensenZeroCount/SphereBound were added without a stance, tripping
test_every_emitter_is_classified. Each takes the analytic bounds as
hypotheses and does structural combine/order/uniformization glue (no
corruptible witness, cert-time refusal of bad params, no adapter) ->
STRUCTURALLY_NONVACUOUS, matching the HalfPlaneDiskEmitter precedent.
Flagged for maintainer confirmation (trust-model statement).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W4CnMPKEstq3yVjTgjtreY
The unit CI job has no Lean toolchain; these tests errored instead of
skipping. Guard kernel-touching tests on lean_env_ready (lake + built
Mathlib) and the simplify verifier test on lake presence. Also rewrite
the stale test_lean_server_start_failure test: start() was redesigned to a
pure env-capability check (no Popen worker); spawn-failure recording now
happens in probe()/elaborate(), so the test patches both the LSP Popen and
the single-shot subprocess.run paths and asserts via probe/available.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W4CnMPKEstq3yVjTgjtreY
…mize

Under numpy>=2 repr(np.float64) is 'np.float64(...)'; sympy 1.12 converts
numpy scalars by stringifying, so sp.floor(np.float64*denom) raised
'invalid literal for int()'. float(v) is an exact value-preserving coerce;
newer sympy masked it. Both sympy matrix legs now green. Math unchanged.
…trip

The np.roots-based factor is a numeric intermediate (~1e-4 residual on
clustered VP deg-4 roots, varies with BLAS/ordering across envs); the
shipped cert is the rationalized exact factor gated by the exact SOS
identity test. Loosen the roundtrip bound so both sympy legs pass without
hiding a real break.
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