justfile: harden macOS bring-up, fold up into dm1 - #722
Conversation
`just artifacts` runs `minimal materialize` through the shim, which executes in a VM and syncs outputs back over an overlay. On a cold cache that sync can transiently drop the output file, failing the very first `just dm1` with: copying output file I/O error at path …/usr/share/virtio-linux/Image: No such file or directory (os error 2) Re-running succeeds. Wrap the two macOS materialize calls in a small retry helper (up to 3 attempts, clearing the partial output between tries) so bring-up survives the flake instead of aborting. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E6SWKgFLoRffVAUrkAWtz6
`dm1` was a macOS gate that just called `just up`, and `up` was the shared bring-up body. Since `up`'s only caller was `dm1` and `dm3` has its own body, inline `up` into `dm1` and drop the `up` recipe. `dm1` is already macOS-gated, so the inlined body sheds the Linux `LD_LIBRARY_PATH` branch. Build steps are invoked in the recipe body (not as recipe deps) to preserve the clean Linux SKIP. Comments referencing `just up` now point at `dm1`/`dm3`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E6SWKgFLoRffVAUrkAWtz6
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 52 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. 📝 WalkthroughWalkthroughThe justfile now retries macOS artifact materialization, explicitly builds and configures the DM1 stack, and changes DM3 VM startup to use a configurable readiness timeout without socket symlink bridging. ChangesDM1 and DM3 bring-up workflows
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant Justfile
participant Artifacts
participant Minvmd
participant Minimal
Justfile->>Artifacts: build required artifacts and dependencies
Justfile->>Minvmd: export MINVMD configuration
Justfile->>Minimal: invoke minimal ls
Minimal->>Minvmd: use configured VM integration
Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
`just dm3` bridged the CLI socket with `ln -sf <runtime>/minimal/ minimald.sock <state>/providers/local-0/ssh.sock`. Since the socket/path coordination fix (#690) minvmd binds that <state> ssh.sock DIRECTLY, so the symlink clobbers minvmd's own live socket with a link to a stale runtime path — every `minimal` dial then falls through to a native autospawn that exits 1, failing the recipe on an otherwise-healthy VM. Drop the symlink block (minvmd's direct bind is already the exact path the CLI dials) and raise MINVMD_READY_TIMEOUT_SECS to 150 (overridable): the generic guest kernel can spend 40-50s probing hardware before pid-1 (minimald) starts, overrunning minvmd's 60s READY default on a cold boot. Validated by the equivalent manual bring-up: `minvmd run --detach` without the symlink, then `minimal ls` reaches the VM on the first try. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JTLRizuWQ3GuZmBBv27Nt7
Resolve the conflicts from the commits that landed on main since this branch's merge-base (#721, #732, #734, #735, #722), keeping main's content and re-applying the `min` binary-target rename on top. - justfile: main folded `up` into `dm1` (#722), so the branch's older `up` recipe is dropped rather than resurrected. Main's `dm1` invoked the `{{minimal}}` variable this branch renames, which would have left `just` unable to resolve it; it now invokes `{{min-bin}}`. - CI lanes: keep main's rewritten jobs and steps, renaming only the CLI build flags and built-binary paths (`--bin min`, `target/debug/min`). Also point the sessions example project at `./target/debug/min`; the binary path it documented no longer exists after the rename. Published release asset names (`minimal-linux-amd64`, ...), the macOS `minimal` shim, and the `minimal` crate and lib target are deliberately left alone.
small justfile fixes, found while bringing this stack up on macOS and linux after the CI improvements went through