docs(vault): fleet-wide fact re-verification pass (67 pages)
The docs-fact census wave re-read the live hosts and re-keyed every page it could: runtime/payload identities, ports, sizes, ledger figures, unit state, and the retirement banners that drifted as the fleet moved. The wave was interrupted mid-run, so this commit carries only what passed the integrity gates: every touched page parses (front matter or H1+status convention intact, balanced fences, no truncated tables, trailing newline), the docs_completeness and link-integrity seams are green, and bats is 384/384. Numbers that this session proved on live hosts are keyed to the measured value, not the page's earlier claim.
This commit is contained in:
1 parent
466fd477d8
commit
e7f0d93c86
67 files changed
+2619
-1152
No files matched your search
@@ -5,7 +5,7 @@ tags:
|
||||
- architecture
|
||||
- e2e
|
||||
- homepage
|
||||
timestamp: 2026-09-01
|
||||
timestamp: 2026-10-18
|
||||
---
|
||||
|
||||
# E2E Suite — homepage + guard chain (Playwright)
|
||||
@@ -28,16 +28,21 @@ user sees it; the `bats` seams assert config shape, not behavior.
|
||||
| `specs/19-frankbook.spec.ts` | `frankbook` project: walks the six admin links that terminate on FrankBook-Pro (192.168.0.112) — conditional, see below |
|
||||
| `specs/13-sso.spec.ts` | direct guarded-vhost visits resolve silently with ONLY the homepage session (single-login enforcement) |
|
||||
| `specs/14-guard.spec.ts` | `guest` project, no storage state: unauthenticated traffic lands on the IdP login |
|
||||
| `specs/15-unauth-fetch.spec.ts` | `guest` project: a wget-style client must never receive application bytes from a guarded service — it asserts on **leakage** (app-code markers), not on status code |
|
||||
| `specs/16-marreta.spec.ts` | regression guard for the 2026-09-12 incident: the marreta tile resolving to the authentik login flow because the `marreta-proxy` ProxyProvider had no linked Application |
|
||||
| `specs/17-hermes-vhost.spec.ts` | `hermes.franksdank.cloud` fronts a host-networked container, so the vhost upstream is the host LAN address; guards the 2026-09-16 loopback-bind 502 that the rest of the suite stayed green through |
|
||||
| `specs/18-openwebui-sso.spec.ts` | `ai.franksdank.cloud` completes its OIDC round-trip silently with only the homepage session |
|
||||
| `lib/login.ts` | `akLogin` helper (two-stage flow, shadow-DOM locators) |
|
||||
| `lib/env.ts` | loads `.env.local`, exports `REAL_UA` |
|
||||
| `tests/e2e_scaffold.bats` | bats seam: structure + no-credentials-tracked (never drives the fleet) |
|
||||
| `tests/e2e_scaffold.bats` | bats seam: structure, placeholder-only example env, **every spec matched by a playwright project** (`tests/e2e_scaffold.bats:51`), and no credentials/auth state tracked. Never drives the fleet |
|
||||
|
||||
## Projects and auth
|
||||
|
||||
- **setup** — logs in as `qa-e2e` and `qa-e2e-admin` (fleet-managed IdP test
|
||||
users; the admin is a `homepage-admins` member), writes
|
||||
`.auth/qa-e2e{,-admin}.json` storage states.
|
||||
- **standard** — 10/12/13 with the user state.
|
||||
- **standard** — 10/12/13/16/17/18 with the user state
|
||||
(`tests/e2e/playwright.config.ts:33`).
|
||||
- **admin** — 11 with the admin state.
|
||||
- **guest** — 14/15 with an empty state.
|
||||
- **frankbook** — 19 with the admin state. **Excluded from every default run**: the
|
||||
@@ -64,7 +69,9 @@ cd tests/e2e && npx playwright test # ALL projects, frankbook included
|
||||
|
||||
Requires LAN reachability of `www.franksdank.cloud` (Pi-hole DNS or public).
|
||||
The suite is **not** part of `./tests/run.sh` — it needs the live fleet and
|
||||
real IdP credentials.
|
||||
real IdP credentials. It **is** a deploy gate: `scripts/deploy.sh` runs it and
|
||||
aborts with `DEPLOY INCOMPLETE: e2e gate FAILED` when it does not pass
|
||||
(`scripts/deploy.sh:278-285`).
|
||||
|
||||
## Gotchas (all paid for live)
|
||||
|
||||
|
||||
Reference in new issue
Block a user