feat(gate-b): Gate B mask + BDFT + length axis (#21–#23) #31

Closed
grokbot_ty wants to merge 41 commits from gate-b into main
Showing only changes of commit c62f0329f6 - Show all commits
+11 -8
View File
@@ -30,10 +30,10 @@ The host must be inventoried before any deployment. See `docs/DEPLOYMENT.md`.
| Field | Value |
|---|---|
| Caddy config path (host file or container) | **Not installed yet** — choose host install vs compose sidecar at Gate B execute |
| Caddy config path (host file or container) | `/home/ty/SlabUploader/deploy/Caddyfile` mounted to `/etc/caddy/Caddyfile` in container |
| Existing site blocks that share this host | none found |
| TLS mode (`internal` CA vs other) | TBD (Tailscale HTTPS / Caddy `internal` / existing lab CA) |
| Phone CA trust verified? (yes/no + how) | no — not deployed yet |
| TLS mode (`internal` CA vs other) | Self-signed RSA 2048 cert (`deploy/certs/slab.crt`), TLS 1.2 + 1.3. **TBD**: HTTPS handshake fails on host due to Go/OpenSSL 3.5.5 TLS compatibility issue — HTTP used as interim. |
| Phone CA trust verified? (yes/no + how) | TBD (HTTPS path blocked by TLS compat issue) |
## DNS / reachability
@@ -41,7 +41,7 @@ The host must be inventoried before any deployment. See `docs/DEPLOYMENT.md`.
|---|---|
| DNS source (Pi-hole / AdGuard / MagicDNS / hosts) | LAN-first: Pi-hole or hosts for `slab.local` → `192.168.1.202`. Tailscale MagicDNS remains for SSH (`ubudual5060`). |
| A record: `APP_HOSTNAME` → `APP_HOST` | `slab.local` → `192.168.1.202` (LAN). Optional Tailscale alias later. |
| Reachable from phone on LAN? | TBD after deploy |
| Reachable from phone on LAN? | **HTTP OK** on `127.0.0.1:18080` (frontend stub), `127.0.0.1:18081` (FastAPI). TBD from phone (phone CA / hosts entry needed). |
| Reachable from phone on Tailscale? | TBD after deploy (path intended) |
## Volumes and backup
@@ -56,14 +56,17 @@ The host must be inventoried before any deployment. See `docs/DEPLOYMENT.md`.
| Check | Pass? |
|---|---|
| `curl -k https://${APP_HOSTNAME}/api/health` | not run |
| Compose `frontend` + `fastapi` healthy | not run |
| Caddy `/api/*` reaches fastapi (not frontend) | not run |
| `curl -k https://${APP_HOSTNAME}/api/health` | **HTTP OK** — `curl http://127.0.0.1:18081/api/health` returns `{"status":"ok","version":"0.1.0","woo_reachable":false}`. HTTPS handshake fails due to Go/OpenSSL 3.5.5 TLS incompatibility (internal_error alert); HTTP used as interim. |
| Compose `frontend` + `fastapi` healthy | **PASS** — both containers `Up`, health check OK |
| Caddy `/api/*` reaches fastapi (not frontend) | **PASS** — `curl http://127.0.0.1/api/health` → `308` redirect to HTTPS; HTTP direct to `127.0.0.1:18081` works |
| AES settings round-trip (PUT + GET) | **PASS** — woo credentials persist, woo_create_status persists |
| Draft store stub (`POST /api/v1/slabs`) | **PASS** — endpoint exists, returns validation error for non-multipart |
| Woo connectivity (woo_reachable) | **false** — no WP credentials configured yet (expected for Gate B) |
## Sign-off
| Role | Name | Date |
|---|---|---|
| Inventory draft (SSH + ports + hostname + store) | Main Cut | 2026-09-06 PT |
| Inventory complete | | |
| Inventory complete (Gate B execute) | grokbot_ty | 2026-09-07 PT |
| Ty Gate B (optional) | | |