docs(roadmap): refresh post Phase 8 + Phase 12 backend merges

* Phase 9/10/11 status rows: dependencies satisfied, mark "open now" with
  pointers to step-level plans where they exist.
* Phase 12 row: GUI tab is folded into the Phase 9 lane plan (not its own).
* ASCII dependency diagram: collapse the just-landed Phase-8/Phase-12-backend
  layer; show the three open lanes (9+12-GUI, 11 TOTP, 10 first-login)
  fanning into Phase 13.
* "Parallel-safe right now" heading bumped to post-Phase-8+12-backend.
  Table swaps the now-stale Recovery and post-Phase-8 GUI rows for the
  three actually-open lanes, with file footprints + plan links.
* Sequential tail paragraph names the six Code-complete phases (1, 3, 4,
  6, 8, 12) whose deferred gates Phase 14 must clear.
* Phase 12 closeout intro names the merge commit and corrects the now-stale
  "waiting on Phase 8" wording.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
michael
2026-04-27 10:09:22 -07:00
parent 4ec69119f6
commit b624f005b2

View File

@@ -36,10 +36,10 @@
| 6 | PAM module: `pam_authforge_pending.so` (C) | 3 days | ✅ **Code complete** (2026-04-27) — `pamtester` smoke recipe in `pam/TESTING.md` | | 6 | PAM module: `pam_authforge_pending.so` (C) | 3 days | ✅ **Code complete** (2026-04-27) — `pamtester` smoke recipe in `pam/TESTING.md` |
| 7 | CLI: `authforgectl` | 4 days | ✅ **Done** (2026-04-27) — 14 subcommands | | 7 | CLI: `authforgectl` | 4 days | ✅ **Done** (2026-04-27) — 14 subcommands |
| 8 | GUI: app shell + Security Keys tab | 68 days | ✅ **Code complete** (2026-04-27) — 4 unit tests; manual smoke recipe in `gui/TESTING.md` | | 8 | GUI: app shell + Security Keys tab | 68 days | ✅ **Code complete** (2026-04-27) — 4 unit tests; manual smoke recipe in `gui/TESTING.md` |
| 9 | GUI: Policy tab + lockout-warning UX | 4 days | **Spec'd** — opens after Phase 8 | | 9 | GUI: Policy tab + lockout-warning UX | 4 days | **Spec'd** — open now (plan at [2026-04-27-phase-9-and-12-gui.md](2026-04-27-phase-9-and-12-gui.md); bundles Phase 12 GUI tab) |
| 10 | First-login flow: autostart entry + fullscreen modal | 4 days | **Spec'd**needs Phase 6 ✓ + Phase 8 ✓ | | 10 | First-login flow: autostart entry + fullscreen modal | 4 days | **Spec'd**open now (Phase 6 ✓ + Phase 8 ✓) |
| 11 | TOTP support (PAM module + GUI tab) — feature flag | 5 days | **Spec'd** — opens now (needs Phase 2 ✓ + Phase 4 ✓) | | 11 | TOTP support (PAM module + GUI tab) — feature flag | 5 days | **Spec'd** — open now (Phase 2 ✓ + Phase 4 ✓ + Phase 8 for the GUI tab) |
| 12 | Recovery flow (codes + emergency unlock) | 4 days | ✅ **Code complete** (2026-04-27) — backend + PAM landed; GUI tab queued in Phase 9 lane | | 12 | Recovery flow (codes + emergency unlock) | 4 days | ✅ **Code complete** (2026-04-27) — backend + PAM landed; GUI tab folded into the Phase 9 lane plan |
| 13 | Debian packaging finalization (postinst, debconf, purge) | 4 days | **Spec'd** — sequential tail; needs all binaries built | | 13 | Debian packaging finalization (postinst, debconf, purge) | 4 days | **Spec'd** — sequential tail; needs all binaries built |
| 14 | Launchpad PPA build setup | 2 days | **Spec'd** — sequential tail after 13; **VM smoke gate for all "Code complete" phases** | | 14 | Launchpad PPA build setup | 2 days | **Spec'd** — sequential tail after 13; **VM smoke gate for all "Code complete" phases** |
| 15 | `authforge-gnome-integration` (Users panel shortcut) | 3 days | ✅ **Done** (2026-04-27) — parallel subagent (gnome lane) | | 15 | `authforge-gnome-integration` (Users panel shortcut) | 3 days | ✅ **Done** (2026-04-27) — parallel subagent (gnome lane) |
@@ -72,46 +72,48 @@ The phase numbering is a dependency-respecting ordering, **not** a serial schedu
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
└──────┬───┘ │ │ └──────┬───┘ │ │
↓ │ │ ↓ │ │
┌───────────┐ │ │ Phase 8 ✅ Phase 12 ✅ Phase 16 ✅
Phase 8 ✅ Phase 9 Phase 12 Phase 16 ✅ GUI keys+shell recovery Ansible (parallel agent)
GUI keys GUI policy recovery Ansible (parallel agent) │ backend+PAM
(open) (open)
────────────────────── ──────────────┬────────────
│ │
Phase 10 Phase 9 + 12-GUI Phase 11 Phase 10
first-login (needs 6 + 8) policy + recovery TOTP first-login (needs 6 + 8)
tabs (open) (open) (open)
│ │
Phase 13 └──────────────┴────────────┘
deb finalization (needs every binary)
Phase 13
Phase 14 deb finalization (needs every binary)
Launchpad PPA (VM smoke gate for "Code complete" phases)
Phase 14
Phase 17 Launchpad PPA (VM smoke gate for "Code complete" phases)
integration tests
Phase 17
Phase 18 integration tests
user docs
Phase 18
R user docs
v1.0 release
R
v1.0 release
``` ```
### What's parallel-safe right now (post-Phase 4+5) ### What's parallel-safe right now (post-Phase 8 + Phase 12 backend)
Three lanes touch disjoint file trees and can land in any order: Three lanes are open and touch disjoint file trees:
| Lane | Phases | Touches | Why parallel-safe | | Lane | Phases | Touches | Why parallel-safe |
|---|---|---|---| |---|---|---|---|
| **GUI** | 9 (after 8 ✓) | `gui/src/views/policy.rs` (new), small additions to `keys_page.rs` for the policy-violation banner | Phase 8 (Keys tab) landed 2026-04-27; Phase 9 (Policy tab) reuses the same shell + ToastOverlay + Daemon client. | | **GUI policy + recovery** | 9 + 12 GUI tab | `gui/src/{app_context,policy_form,policy_page,recovery_page}.rs` (new), additive bus.rs methods, ViewStack tabs in `main.rs` | Both views consume the typed D-Bus contract that landed with Phases 8 + 12 backend. AppContext refactor was foreseen by Phase 8's Task 7. Plan: [2026-04-27-phase-9-and-12-gui.md](2026-04-27-phase-9-and-12-gui.md). |
| **Recovery** | 12 | `daemon/src/recovery.rs`, `pam/pam_authforge_pending.c` (recovery hook), small `dbus.rs` `GenerateRecoveryCode` body | The PAM module already has a `recovery_code_matches` stub returning 0; Phase 12 makes it real. Daemon side is brand-new file. | | **TOTP** | 11 | `daemon/src/totp/` (new), `gui/src/totp_page.rs` (new), `debian/control` Recommends | Feature-flagged at build time. Phase 8 ✓ unblocked the GUI tab; daemon-side TOTP module is brand-new. Step-level plan still to be written. |
| **TOTP** | 11 | `daemon/src/totp/`, `gui/src/views/totp.rs`, `debian/control` Recommends | Feature-flagged at build time. Phase 8unblocked the GUI tab; both daemon + GUI surfaces open now. | | **First-login** | 10 | `gui/src/firstrun.rs` (new), `gui/data/authforge-firstrun.desktop`, `--first-run` CLI flag in `gui/src/main.rs` | Both Phase 6(PAM pending blocker) and Phase 8 ✓ (GUI shell) are in. Step-level plan still to be written. |
### Sequential tail (no parallelism wins) ### Sequential tail (no parallelism wins)
Phase 10 (first-login) needs both Phase 6 ✓ and Phase 8 ✓ — now fully unblocked. Phase 13 (deb finalization) needs every binary built. Phase 14 (PPA) chains off 13 — and is the **VM smoke gate** for everything currently in "Code complete" status. Phase 17 (integration tests) chains off 14. Phase 18 (user docs) and R (release) follow. Phase 13 (deb finalization) needs every binary built — opens once Phases 9, 10, 11 land. Phase 14 (PPA) chains off 13 — and is the **VM smoke gate** for everything currently in "Code complete" status (1, 3, 4, 6, 8, 12 — six phases with deferred real-hardware/root-write/libargon2-dev gates). Phase 17 (integration tests) chains off 14. Phase 18 (user docs) and R (release) follow.
### Lessons learned from this session's parallelism ### Lessons learned from this session's parallelism
@@ -254,7 +256,7 @@ Single-lane execution in a worktree at `.claude/worktrees/phase-8-gui-keys`. Pla
### Phase 12 backend closeout notes (2026-04-27) ### Phase 12 backend closeout notes (2026-04-27)
Backend + PAM landed via the plan at [2026-04-27-phase-12-recovery-backend.md](2026-04-27-phase-12-recovery-backend.md). 9 commits on `feature/phase-12-recovery-backend`. GUI tab is queued in the Phase 9 lane (waiting on Phase 8 ✓). Backend + PAM landed via the plan at [2026-04-27-phase-12-recovery-backend.md](2026-04-27-phase-12-recovery-backend.md). 9 commits on `feature/phase-12-recovery-backend`, merged to `main` as `4ec6911`. GUI tab is folded into the Phase 9 lane plan ([2026-04-27-phase-9-and-12-gui.md](2026-04-27-phase-9-and-12-gui.md)) — that lane is now open since Phase 8 ✓.
**Done:** **Done:**
- `daemon/src/storage/safe_user.rs` — extracted shared username path-segment sanitizer; `PendingStore` migrated to it. 2 new unit tests. - `daemon/src/storage/safe_user.rs` — extracted shared username path-segment sanitizer; `PendingStore` migrated to it. 2 new unit tests.