Skip to content

ramdisk: headless planning, staging, mounts, recovery + tokenized CLI (PR2 of #377 split) - #821

Draft
BColsey wants to merge 2 commits into
JustVugg:devfrom
BColsey:successor/pr2-headless
Draft

ramdisk: headless planning, staging, mounts, recovery + tokenized CLI (PR2 of #377 split)#821
BColsey wants to merge 2 commits into
JustVugg:devfrom
BColsey:successor/pr2-headless

Conversation

@BColsey

@BColsey BColsey commented Aug 4, 2026

Copy link
Copy Markdown

Draft successor — supersedes #377. One of three dependent PRs reconstructed from the frozen green donor 5f6f31a. Do not merge #377.

Scope

Headless planning/discovery, platform ops, durable state, safe mount recovery, the reduced facade + tokenized CLI, packaging, and portable tests. No frontend/TUI; managed start/stop deferred to PR3.

Control plane: c/ramdisk.py, c/__init__.py, c/ramdisk_support/{__init__,accelerator,cli,common,discovery,lifecycle,linux_ops,model,mounts,planning,platform_ops,presentation,presets,processes,state}.py. Packaging: c/coli, c/tools/clean.py, pyproject.toml, flake.nix. Portable tests (state_lifecycle, processes, mounts, planning, platform, packaging, CLI/JSON smoke, facade, …) + docs/CI.

Reconstruction work (drafts may not build in isolation until these land)

  • Tokenized JSON CLI (design L56-73): plan / stage --plan-token / read-only verify / status / destroy --deployment-token, all --json; versioned result/error schemas. prepare stays an alias; managed start/stop stay deferred to PR3.
  • Sever the eager UI import: presentation.py imports ramdisk_ui at module top level — relocate the data contracts + token builders into a headless ramdisk_support module so PR2 builds with ramdisk_ui/ramdisk_textual/curses_ui physically absent.
  • Packaging: drop textual as a hard pyproject.toml dep (→ tui extra); stop c/coli and flake.nix from requiring/bundling UI files; update test_ramdisk_packaging.py bundle assertions.

Dependency

Depends on PR1 (#820): c/coli imports resource_plan.py (PR1). PR3 (#822) depends on this PR's durable state + recovery.

Build verification (subagent worktree)

  • Package imports; lifecycle/state/processes import cleanly. 233 passed / 36 failed — every failure traces to the intentionally-excluded UI/benchmark/curses bundle (no unexpected defect).
  • Sharper blocker found by execution: it is not only presentation.py:10 importing ramdisk_ui — the coli launcher top-level bundle self-check (_complete_support, c/coli:67-162) hard-aborts with SystemExit("coli: incomplete colocated support bundle …") when ramdisk_ui.py/ramdisk_textual.py/benchmark.py/curses_ui.py/runtime_monitor.py are absent, killing the unittest runner. PR2 must make that self-check absence-tolerant (and have the lazy importlib accessors treat a missing optional module as "feature unavailable", not a hard abort).

BColsey and others added 2 commits August 3, 2026 22:07
Co-Authored-By: Claude <noreply@anthropic.com>
…d CLI from donor 5f6f31a

Co-Authored-By: Claude <noreply@anthropic.com>
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