docs: update STATUS.md — Step 4 done, Step 5 next
Records acceptance evidence for Steps 1-4 (container tests 21/21 pass, build clean with expected unused-method warnings) and queues the BootReconciler implementation for Step 5.
This commit is contained in:
@@ -1,37 +1,36 @@
|
||||
# RESUME HERE — Rust orchestrator migration
|
||||
|
||||
Updated: 2026-04-22 (late session, pivoted from laptop to ThinkPad)
|
||||
Updated: 2026-04-22 (Step 3 committed, moving to Step 4)
|
||||
|
||||
**To resume this work, SSH into the ThinkPad and run `opencode` from `~/Projects/archy/`.**
|
||||
**To resume this work, SSH into the ThinkPad and run `opencode` from `~/Projects/archy/`. Or work from the laptop via the SSHFS mount at `~/mnt/archy-thinkpad/`.**
|
||||
|
||||
## Where we are
|
||||
|
||||
Working through the 11-step plan in [`rust-orchestrator-migration.md`](./rust-orchestrator-migration.md).
|
||||
|
||||
- [x] **Step 1** — `ContainerConfig` schema extended with `build:` (mutually exclusive with `image:`), new `ResolvedSource` enum, `resolve()` method, 10 new tests
|
||||
- [x] **Step 2** — `ContainerRuntime` trait gained `image_exists` + `build_image` on all three impls (PodmanRuntime, DockerRuntime, AutoRuntime), 4 new argv-construction tests
|
||||
- [ ] **Step 3** — `ProdContainerOrchestrator` (next up)
|
||||
- [ ] Steps 4-11 — see design doc
|
||||
- [x] **Step 1** — `3767c267` ContainerConfig schema with `build:`, `ResolvedSource` enum, `resolve()`, 10 tests
|
||||
- [x] **Step 2** — `34af4d9d` ContainerRuntime trait gained `image_exists` + `build_image`, 4 argv tests, 25/25 pass
|
||||
- [x] **Step 3** — `b6a04d31` ProdContainerOrchestrator (999 LOC), 16 tests all pass, not yet wired to main.rs
|
||||
- [x] **Step 4** — `e8a59c93` ContainerOrchestrator trait, RpcHandler uses it in prod (+ `13858842` chore gitignore ._*)
|
||||
- [ ] **Step 5** — BootReconciler task in new file boot_reconciler.rs (next up)
|
||||
- [ ] **Step 6** — main.rs wire-up: load manifests, adopt, spawn reconciler (replaces the commented-out `run_boot_reconciliation` block at main.rs:107-111)
|
||||
- [ ] **Step 7** — Three UI manifests + Dockerfile refactor (runtime bind-mount of nginx.conf)
|
||||
- [ ] **Step 8** — Delete bash scripts + systemd units + ISO builder lines
|
||||
- [ ] **Step 9** — Hot-swap + verify on .228
|
||||
- [ ] **Step 10** — Hot-swap + verify on .116
|
||||
- [ ] **Step 11** — Chaos matrix on both nodes
|
||||
|
||||
## Acceptance evidence
|
||||
## Acceptance evidence (Steps 1–4)
|
||||
|
||||
`cargo test -p archipelago-container --lib` passes 25/25 on the ThinkPad (cargo 1.95.0).
|
||||
`cargo test -p archipelago-container --lib` → 25/25 pass.
|
||||
`cargo test -p archipelago container::` → 21/21 pass (16 prod_orchestrator + 5 other container tests).
|
||||
`cargo build -p archipelago` → clean, 11 "unused" warnings for methods not yet wired from main.rs (expected).
|
||||
|
||||
Unrelated test failures (identity_manager / session / wallet / mesh / credentials): 24 pre-existing on baseline `b6a04d31`, fluctuates to 25 on Step 4 — confirmed unrelated (diff only shifted 3 fs-state tests that are independently flaky).
|
||||
|
||||
## Uncommitted state
|
||||
|
||||
The 6 modified files in `git status` ARE the Step 1+2 work:
|
||||
|
||||
```
|
||||
core/archipelago/src/container/dev_orchestrator.rs
|
||||
core/container/src/dependency_resolver.rs
|
||||
core/container/src/lib.rs
|
||||
core/container/src/manifest.rs
|
||||
core/container/src/podman_client.rs
|
||||
core/container/src/runtime.rs
|
||||
```
|
||||
|
||||
Plus `docs/rust-orchestrator-migration.md` (the design spec, untracked).
|
||||
Plus `tests/` (bats harness, uncommitted leftover from prior session).
|
||||
Clean — only leftover is `tests/` (bats harness from prior session, not in scope for this migration).
|
||||
|
||||
## Answered design questions (no need to re-ask)
|
||||
|
||||
@@ -52,7 +51,14 @@ Both are development alpha nodes — **full destructive latitude**, no need to a
|
||||
|
||||
## Next action
|
||||
|
||||
Step 3: create `core/archipelago/src/container/prod_orchestrator.rs` (new file, ~400 LOC). See the design doc section for "Step 3" for the full public surface + acceptance criteria. Write it, add unit tests against a `MockRuntime`, verify `cargo test -p archipelago` builds.
|
||||
**Step 5 — BootReconciler.** New file `core/archipelago/src/container/boot_reconciler.rs`. Design doc §269-352 has the full shape. Plan:
|
||||
|
||||
1. `pub struct BootReconciler { orchestrator: Arc<ProdContainerOrchestrator>, interval: Duration, shutdown: CancellationToken }` — interval is 30s per answered Q3.
|
||||
2. `pub async fn run_forever(self)` that runs an initial `reconcile_all()` then loops on `tokio::select! { sleep | shutdown }`.
|
||||
3. Unit tests against a `MockRuntime`: verifies (a) initial reconcile fires immediately, (b) second reconcile fires after `interval`, (c) shutdown token terminates the loop cleanly, (d) a per-app failure in one reconcile doesn't stop subsequent reconciles.
|
||||
4. Wire-up lives in Step 6.
|
||||
|
||||
No changes to existing code; this is an additive file + tests.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user