Skip to content

healthcheck: detect stale lab Julia env (installed Manifest vs pinned Manifest) #74

Description

@Rchari1

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions