Build atomic private-staging promotion, rollback, and hardened host templates #55

Closed
opened 2026-08-21 14:16:41 +00:00 by timmy · 1 comment
Owner

Parent: #53

Implement the reviewed Phase 1 deployment substrate without changing live Caddy or deploying yet.

Deliverables

  • Immutable release layout and atomic current symlink promotion.
  • Source archive SHA-256 verification before extraction.
  • Strict tar member validation: traversal, links, devices, secrets, .env, and forbidden artifacts rejected.
  • Bounded loopback health and public mobile smoke gates with automatic rollback.
  • status, promote, and rollback commands using argument arrays, never shell interpolation.
  • Hardened timmy-staging.service, secret-free env example, /timmy-staging/* Caddy snippet, and operator runbook.
  • Phase 1 defaults: HOST=127.0.0.1, port 4174, TIMMY_BASE_PATH=/timmy-staging, vision disabled unless explicitly configured, Hermes disabled.
  • Verify templates with systemd/Caddy parsers and hostile security review.

No live service, user, /etc file, Caddy route, or deployment may be changed by this issue. Live provisioning is a separate human-gated child issue.

Parent: #53 Implement the reviewed Phase 1 deployment substrate without changing live Caddy or deploying yet. ## Deliverables - Immutable release layout and atomic `current` symlink promotion. - Source archive SHA-256 verification before extraction. - Strict tar member validation: traversal, links, devices, secrets, `.env`, and forbidden artifacts rejected. - Bounded loopback health and public mobile smoke gates with automatic rollback. - `status`, `promote`, and `rollback` commands using argument arrays, never shell interpolation. - Hardened `timmy-staging.service`, secret-free env example, `/timmy-staging/*` Caddy snippet, and operator runbook. - Phase 1 defaults: `HOST=127.0.0.1`, port 4174, `TIMMY_BASE_PATH=/timmy-staging`, vision disabled unless explicitly configured, Hermes disabled. - Verify templates with systemd/Caddy parsers and hostile security review. No live service, user, `/etc` file, Caddy route, or deployment may be changed by this issue. Live provisioning is a separate human-gated child issue.
timmy added this to the M3 — Private Beta & Longitudinal Value milestone 2026-08-21 14:16:41 +00:00
Author
Owner

Closing as delivered by merged PR #56. The immutable promotion/rollback tooling is also exercised on authenticated loopback-bound /timmy-staging; this issue stayed open only because the PR body said Implements #55 rather than an auto-closing keyword.

Closing as delivered by merged PR #56. The immutable promotion/rollback tooling is also exercised on authenticated loopback-bound `/timmy-staging`; this issue stayed open only because the PR body said `Implements #55` rather than an auto-closing keyword.
timmy closed this issue 2026-08-22 23:52:42 +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#55
No description provided.