EPIC: Private subpage staging for Alexander release testing #53

Open
opened 2026-08-21 13:20:52 +00:00 by timmy · 0 comments
Owner

Parent: #7

Alexander approved a private staging deployment for manual release testing and feedback. DNS is authoritative at DigitalOcean, but this host has no usable DigitalOcean credential and no authenticated browser session. Use the authorized fallback:

https://forge.alexanderwhitestone.com/timmy-staging/

Scope

  • Add tested TIMMY_BASE_PATH=/timmy-staging support for static assets, API fetches, manifest, service worker, and SPA navigation.
  • Namespace localStorage and constrain service-worker scope because staging shares the Forge origin.
  • Any future Timmy auth cookie must use Path=/timmy-staging/.
  • Add safe build identity and /timmy-staging/api/healthz.
  • Add immutable checksummed promotion, automatic rollback, systemd/Caddy templates, and public mobile smoke tests.
  • Preserve /git/ and the Gitea catch-all before/after Caddy reload.
  • Phase 1 keeps Hermes disabled. Phase 2 requires dedicated containment review.
  • Send Alexander one concise URL/release/test checklist after each successful staged promotion; convert concrete feedback into Gitea issues.

Gates

  • RED/GREEN tests for base-path traversal, routing, storage namespace, service-worker scope, cookie path, tar traversal, checksum mismatch, rollback, and health-response leakage.
  • Full 45+ unit suite, all mobile acceptances, syntax, audit, secret scan, Caddy validation, systemd verification, and hostile review.
  • Staging promotion consumes only non-superseded verified releases and re-verifies downloaded asset hashes.

Implementation plan: .hermes/plans/2026-08-21_130339-timmy-staging-deployment.md (local planning artifact).

Parent: #7 Alexander approved a private staging deployment for manual release testing and feedback. DNS is authoritative at DigitalOcean, but this host has no usable DigitalOcean credential and no authenticated browser session. Use the authorized fallback: `https://forge.alexanderwhitestone.com/timmy-staging/` ## Scope - Add tested `TIMMY_BASE_PATH=/timmy-staging` support for static assets, API fetches, manifest, service worker, and SPA navigation. - Namespace localStorage and constrain service-worker scope because staging shares the Forge origin. - Any future Timmy auth cookie must use `Path=/timmy-staging/`. - Add safe build identity and `/timmy-staging/api/healthz`. - Add immutable checksummed promotion, automatic rollback, systemd/Caddy templates, and public mobile smoke tests. - Preserve `/git/` and the Gitea catch-all before/after Caddy reload. - Phase 1 keeps Hermes disabled. Phase 2 requires dedicated containment review. - Send Alexander one concise URL/release/test checklist after each successful staged promotion; convert concrete feedback into Gitea issues. ## Gates - RED/GREEN tests for base-path traversal, routing, storage namespace, service-worker scope, cookie path, tar traversal, checksum mismatch, rollback, and health-response leakage. - Full 45+ unit suite, all mobile acceptances, syntax, audit, secret scan, Caddy validation, systemd verification, and hostile review. - Staging promotion consumes only non-superseded verified releases and re-verifies downloaded asset hashes. Implementation plan: `.hermes/plans/2026-08-21_130339-timmy-staging-deployment.md` (local planning artifact).
timmy added this to the M3 — Private Beta & Longitudinal Value milestone 2026-08-21 13:20:52 +00:00
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/timmy-talking-turd#53
No description provided.