Define production topology, secrets, backup, and rollback runbook #39
Closed
opened 2026-08-19 01:59:02 +00:00 by timmy
·
1 comment
No Branch/Tag Specified
main
timmy/19-metrics-operator-report
timmy/16-image-ingress-hardening
timmy/40-security-rc-evidence
timmy/27-dataset-card
timmy/26-review-adjudication
timmy/32-abstention-policy
timmy/29-evaluation-harness
timmy/35-portable-backup-versions
timmy/24-training-contribution-consent
fix/demo-caption-pixels
timmy/36-photo-lifecycle-controls
timmy/release-notes-grounded-chat
timmy/37-grounded-chat-citations
timmy/21-escalation-regression
timmy/34-explainable-pattern-summaries
timmy/15-container-worker-receipts
timmy/73-blank-first-ordering
timmy/18-vision-corpus
timmy/20-photo-dataflow-threat-model
timmy/67-hard-stool-followup
timmy/13-provisional-suggestion-state
timmy/12-manual-fallback-draft-recovery
timmy/11-mobile-capture-recovery
free/hy3-timmy-16
timmy/35-version-ledger-migrations
timmy/41-release-observability-dashboard
free/step-timmy-14
timmy/21-escalation-regression-suite
timmy/17-bounded-inference-queue
timmy/58-strict-csp-runtime-config
timmy/55-staging-deployment-tooling
timmy/53-private-subpage-staging
timmy/10-reproducible-smolvlm-bootstrap
timmy/48-vomiting-phrase-hotfix
timmy/48-server-safety-override
timmy/47-sleek-hermes-agent
timmy/9-product-boundary-decisions
timmy/8-ci-gates
daily-2026-11-02
daily-2026-11-01
daily-2026-10-31
daily-2026-10-30
daily-2026-10-29
daily-2026-10-28
daily-2026-10-27
daily-2026-10-26
daily-2026-10-25
daily-2026-10-24
daily-2026-10-22
daily-2026-10-21
daily-2026-10-20
daily-2026-10-19
daily-2026-10-18
daily-2026-10-17
daily-2026-10-16
daily-2026-10-15
daily-2026-10-14
daily-2026-10-13
daily-2026-10-12
daily-2026-10-11
daily-2026-10-10
daily-2026-10-09
daily-2026-10-08
daily-2026-10-07
daily-2026-08-27
daily-2026-08-26
daily-2026-08-25
daily-2026-08-24
daily-2026-08-23
daily-2026-08-22
daily-2026-08-21.1
daily-2026-08-21
daily-2026-08-20.3
daily-2026-08-20.2
daily-2026-08-20.1
daily-2026-08-20
daily-2026-08-19.2
daily-2026-08-19.1
daily-2026-08-19
Labels
Clear labels
area/backend
area/data
area/frontend
area/model
area/privacy
area/release
area/safety
blocked
human-gate
priority/P0
priority/P1
priority/P2
state:review
type/docs
type/epic
type/feature
type/ops
type/research
type/security
type/test
Application API and storage
Dataset and provenance
PWA and interaction design
Vision model and inference
Privacy and consent
Release engineering and distribution
Clinical safety boundary
Blocked on an explicit dependency or decision
Requires explicit human approval
Release-critical
High priority
Planned
Documentation and evidence
Roadmap epic
Product feature
Infrastructure and operations
Research or evaluation
Security hardening
Verification and quality gate
Milestone
No items
No Milestone
M4 — Production Readiness & Release
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stackchain/timmy-talking-turd#39
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Parent epic: #7
Outcome
Specify how app, API, model worker, and optional training store run and recover.
Acceptance criteria
Dependencies
Required evidence
Delivery
Open a focused branch and PR with
Closes #ISSUE. Do not include real medical images in issue comments or Git history.Backup, restore, and the runbook are on
timmy/39-production-runbook-backupas PR #90 — #90Covered: topology and network boundaries as they actually bind, the four secrets and their rotation,
scripts/operator_backup.py(records only; weights, transient inference images, secrets, logs, symlinks refused by name with reasons; one SHA-256 per member; reproducible archive; verify-before-write restore that refuses traversal, links, absolute paths, unlisted members, a non-empty target, and a record-count mismatch), plus 20 new tests and an on-camera demonstration of a real backup/verify/restore over a synthetic corpus.Not covered: acceptance criterion 3, "rollback procedure is exercised on staging".
tests/staging-deploy.test.pyexercises the rollback code path against a rootless fixture, but the live drill on the private staging host must be run by an operator, because a rolled-back staging host is serving release testing at the time. The runbook marks it a human gate under #53, so the PR saysRefs #39and does not claimCloses.