Skip to content

Release 2.1.51 (2026-06-22)

Bug fixes

  • bound Lima instance name under UNIX_PATH_MAX (#1751)
  • docs(vm): design bounded Lima instance name under UNIX_PATH_MAX

Approved design for issue #1750: cap instance_name via a home-aware budget with cloud-style truncate+hash, and recover (identity, org, repo) from a per-instance sidecar. Ref #1750

  • docs(vm): add implementation plan for bounded Lima instance name

TDD task breakdown for issue #1750: budget helper, bounded instance_name, sidecar read/write, recover_triple, create-time sidecar write, validation/handoff. Ref #1750

  • fix(vm): bound Lima instance name under UNIX_PATH_MAX

Add a home-aware lima_name_budget and apply it in instance_name: dedicated names within budget are unchanged; over-budget names are truncated and hashed like the cloud backend, satisfying Lima's name regex and keeping the worst-case ssh.sock path under the limit. A pathological-home guard raises SpecError rather than emitting an invalid name. Existing dedicated-name tests are pinned to an explicit home for determinism. Ref #1750

  • feat(vm): add per-instance Lima metadata sidecar read/write

Store (identity, org, repo) in ~/.lima//vergil-meta.json so a truncated instance name stays reversible; the file is self-cleaning with the instance dir and a corrupt sidecar raises rather than silently falling back. Ref #1750

  • fix(vm): recover VM triple via sidecar with parse fallback

Add recover_triple and route discover_dedicated and _all_update_targets through it, so a truncated-name VM resolves via its sidecar instead of being silently skipped by parse_instance_name. Legacy short names and base boxes still resolve via the parse fallback. Ref #1750

  • feat(vm): write VM metadata sidecar on dedicated create

After a dedicated box is created, persist its (identity, org, repo) sidecar so a truncated instance name remains reversible by discovery and update --all. Base boxes write no sidecar. Ref #1750

  • fix(vm): satisfy lint and typecheck for instance-name bounding

Type read_instance_meta as dict[str, object] (the sidecar carries an int schema alongside string fields) and coerce in recover_triple; move the dedicated-invariant assert comment off the over-length line; use tmp_path and cast the SimpleNamespace target stub to Target in tests; apply ruff formatting. Ref #1750