|
| 1 | +# 03 — Implementation Phases |
| 2 | + |
| 3 | +## Timeline (single engineer estimate) |
| 4 | +- MVP: **2–4 weeks** |
| 5 | +- Hardened v1: **6–10 weeks** |
| 6 | + |
| 7 | +## Phase breakdown |
| 8 | + |
| 9 | +## Phase 0 — Spike (2–3 days) |
| 10 | +- Validate rootfs-only loading path with current Gondolin (`rootDiskPath`) |
| 11 | +- Confirm minimum runtime files/processes needed for `vm.exec` |
| 12 | +- Capture one known-good manual conversion recipe |
| 13 | + |
| 14 | +**Exit criteria:** end-to-end manual demo from OCI image to running VM |
| 15 | + |
| 16 | +## Phase 1 — `oci2gondolin` scaffolding (2–3 days) |
| 17 | +- CLI parser + config model |
| 18 | +- source abstraction (`image ref`, `oci tar`, `oci layout`) |
| 19 | +- output modes (`rootfs`, `assets`) |
| 20 | + |
| 21 | +**Exit criteria:** CLI skeleton + dry-run mode |
| 22 | + |
| 23 | +## Phase 2 — OCI resolver/puller (4–6 days) |
| 24 | +- auth token flow |
| 25 | +- manifest/index selection by platform |
| 26 | +- blob download/read + digest verification |
| 27 | +- local blob cache by digest |
| 28 | + |
| 29 | +**Exit criteria:** pull and verify layers/config for public images |
| 30 | + |
| 31 | +## Phase 3 — Layer apply engine (4–7 days) |
| 32 | +- ordered extraction |
| 33 | +- whiteout/opaque directory handling |
| 34 | +- secure extraction checks |
| 35 | + |
| 36 | +**Exit criteria:** merged rootfs matches expected filesystem semantics |
| 37 | + |
| 38 | +## Phase 4 — Gondolin materialization (3–5 days) |
| 39 | +- inject runtime requirements |
| 40 | +- ext4 build step |
| 41 | +- emit `meta.json` and/or full assets bundle |
| 42 | + |
| 43 | +**Exit criteria:** converted image boots and supports `vm.exec` |
| 44 | + |
| 45 | +## Phase 5 — `dockerfile2gondolin` wrapper (3–5 days) |
| 46 | +- BuildKit integration (`buildx`, `buildctl`) |
| 47 | +- argument passthrough for target/build args/secrets |
| 48 | +- temporary OCI artifact handling |
| 49 | + |
| 50 | +**Exit criteria:** Dockerfile -> Gondolin in one command |
| 51 | + |
| 52 | +## Phase 6 — Hardening + docs (4–7 days) |
| 53 | +- integration tests with multiple fixtures |
| 54 | +- performance/caching tuning |
| 55 | +- user docs + troubleshooting |
| 56 | + |
| 57 | +**Exit criteria:** v1 candidate release |
| 58 | + |
| 59 | +## Suggested sequencing notes |
| 60 | +- Keep converter core independent from CLI wrappers |
| 61 | +- Keep all Dockerfile logic in wrapper layer |
| 62 | +- Ensure all artifacts are reproducible and cache-addressable by digest |
0 commit comments