[VS-NfD] Write the operations manual (installation, update, backup/restore, deletion, role separation) #229
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#229
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plan reference:
20-massnahmenplan.md-> Phase 5ADR: ADR 0019
Effort: L (4–5 AT)
Depends on: #193, #194, #221
Context
The operator has to run this without us, including on the day something
fails. Deletion and destruction is the chapter with the most VS-specific
weight.
Current state
docs/operations/restore-runbook.md,deploy/stages.md,docs/architecture/operations.md,deploy/backup-basel.md,deploy/monitoring.md.pond purge (#193), orphan-file sweep (#194), offline update (#221).
Acceptance criteria
restriction on targets from #192.
copies it reaches (using the list from #228), how long residues
persist, and how an instance is decommissioned.
access, and what a Site-Admin can not do.
says so.
Out of scope
Customer-specific operating concepts, and 24/7 support processes.
For the deletion-and-destruction chapter, three additions from M24:
Addition for the operator documentation from #199 (attachment integrity, PR #259): every download re-hashes the stored attachment before serving and fails closed with attachment_integrity_failure (HTTP 500) on mismatch; the audit trail records file.integrity_failed with both hashes (expected = stored at upload, actual = computed now). Operator response: treat the object as tampered or corrupt, restore the affected file from a backup set (restore runbook), then re-download to confirm; the audit entry carries the hashes for the report. Rows predating the column are hashed by the nightly backfill riding the orphan-file-sweep job; a file that cannot be read is logged and retried nightly - a persistent unreadable report means the bytes are gone and the restore path above applies. Full behaviour: security.md, Content & upload security.
Addition for the operator documentation from #203 (PR #262): all third-party deploy images are digest-pinned (name:tag@sha256) in deploy/compose/docker-compose.yml; a CI step rejects any unpinned third-party reference. Updating a digest: docker buildx imagetools inspect name:tag resolves the manifest-list digest; change the compose reference, let CI confirm, then roll the same change out by hand to /srv/DOCKER/dorfteich-{test,int,prod}/docker-compose.yml (CD does not sync stage composes) and verify via docker inspect after the next pull/up. Full procedure: deploy/stages.md section 5a.
Done in commit
040f3fb(PR #274, CI run 580 green, fast-forward merged on Stefan's standing merge instruction).Evidence: docs/vs-nfd/70-betriebshandbuch.md - installation as actually run on the stages; airgap variant explicitly pending #218-#221 (M28) with existing groundwork named; update/rollback incl. the no-down-migrations caveat; backup/restore with the deploy-level target allowlist (#192) and the REHEARSED monthly restore drill (evidence: logs on #98); complete scheduler-job table (9 jobs, cadences verified against code); deletion-and-destruction per content type on the #228 copy list incl. immediate-destruction path and decommissioning; role separation with the explicit Site-Admin limits and the honest read-bypass note (residual risk R-09). Every procedure carries its evidence level - erprobt / Mechanik vorhanden, nicht geprobt / offen - nothing claimed above what was executed (rollback and manual backup-chain destruction are marked NOT rehearsed).