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:
@@ -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 | 6–8 days | ✅ **Code complete** (2026-04-27) — 4 unit tests; manual smoke recipe in `gui/TESTING.md` |
|
| 8 | GUI: app shell + Security Keys tab | 6–8 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 8 ✓ unblocked 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.
|
||||||
|
|||||||
Reference in New Issue
Block a user