Problem
Found during live testing of the 1.1–1.3 stack (see the root-cause writeup on #72): the lab env at ~/.amico/julia had DirectTrajOpt 0.9.6 while the repo's pinned Manifest wants 0.9.7. The env predated the 0.9.7 bump and was never re-instantiated.
Result: every solve died at construction —
MethodError: no method matching IpoptOptions(; intermediate_callback::PulseEmitCallback)
(the solver-agnostic intermediate_callback on the Ipopt path is new in DTO 0.9.7) — so runs finished failed with no AMICODE_PULSE records and the inspector showed "no pulse data". healthcheck.mjs passed throughout: julia+project only checks that the project loads, not that it matches the pin. This is a silent demo-killer on any machine whose env predates a Manifest bump.
Proposal
Add a healthcheck item that compares the installed lab env against the repo/VSIX-pinned Manifest:
- Cheap textual pass: parse both
Manifest.tomls and diff [[deps.*]] name→version (report the first few mismatches).
- Failure message should say the fix: re-run
install.sh (which copies the pinned Manifest + Pkg.instantiate), or copy + instantiate manually.
- The pinned Manifest ships with the extension (
packages/extension/julia/Manifest.toml), so the check needs no network.
Optionally install.sh could print a warning when overwriting an existing env Manifest that differs, but the healthcheck is the load-bearing guard.
Acceptance
- With the env deliberately rolled back to DTO 0.9.6,
healthcheck.mjs fails with a message naming the stale package(s) and the fix.
- With the env in sync, the item passes.
Problem
Found during live testing of the 1.1–1.3 stack (see the root-cause writeup on #72): the lab env at
~/.amico/juliahad DirectTrajOpt 0.9.6 while the repo's pinned Manifest wants 0.9.7. The env predated the 0.9.7 bump and was never re-instantiated.Result: every solve died at construction —
(the solver-agnostic
intermediate_callbackon the Ipopt path is new in DTO 0.9.7) — so runs finishedfailedwith noAMICODE_PULSErecords and the inspector showed "no pulse data".healthcheck.mjspassed throughout:julia+projectonly checks that the project loads, not that it matches the pin. This is a silent demo-killer on any machine whose env predates a Manifest bump.Proposal
Add a healthcheck item that compares the installed lab env against the repo/VSIX-pinned Manifest:
Manifest.tomls and diff[[deps.*]]name→version (report the first few mismatches).install.sh(which copies the pinned Manifest +Pkg.instantiate), or copy + instantiate manually.packages/extension/julia/Manifest.toml), so the check needs no network.Optionally
install.shcould print a warning when overwriting an existing env Manifest that differs, but the healthcheck is the load-bearing guard.Acceptance
healthcheck.mjsfails with a message naming the stale package(s) and the fix.