Repository navigation
Rewrite chapter 60 to rules, and write the handover and setup runbooks #381
Copy link
Copy link
Open
Labels
area: deployhomelab-deploy, deploy-v2, manifests, and rollout flow.homelab-deploy, deploy-v2, manifests, and rollout flow.priority: P2Medium; normal planned work.Medium; normal planned work.status: blockedCannot move forward until an external dependency is resolved.Cannot move forward until an external dependency is resolved.type: docsDocumentation-only change.Documentation-only change.
Description
Parent
Rewrite the spec and the compiler in place, release 1.0.0, and hand over every Project
What to build
The maintainer hands a Project over from a runbook, and chapter 60 holds rules only. The runbook carries what Order the Project handovers and what the spec must settle before each and Decide which conditions on the settled decisions change the model settled about how one handover runs and what proves it done.
Acceptance criteria
- Chapter 60 keeps its rules (the bootstrap set, the handover ledger, restore, secrets at rest) and states the authority constraint as restated: for each Project, the hand-written objects stay authoritative until that Project hands over. Its claim that adoption renames nothing is corrected, and its Blueprint packs section is gone.
- The handover runbook states the order rule: Applications first and the foundation last (
node, observability, data, edge, then secrets), and among ready Projects the one with the fewest new concepts first. - It states what proves a handover done: the one-off diff of the render against the Project's hand-written objects is clean or each difference is explained; the Reconcile Units report Ready; a consumer-visible value checks out. Then one change flips the ledger entry and deletes the hand-written objects, the descriptor and the drift-check entry.
- It states that a mismatched namespace or database name is changed by a Move.
- It states that a HelmRelease is always suspended and then deleted, that the diff lists what is left to delete by hand, and that a chart's CRDs pass to the bootstrap set first.
- It states the retirements that precede the secrets handover: Reloader, the Vault Agent injector, the Vault CSI provider and cert-manager.
- It carries three checks: each GPU node advertises its resource (
node); nothing in an image reads the injected token file (each Project among the fourteen pod templates that request it); the failover gap is measured (utility). - The handover ledger names grimoire, tribelt,
latex, knowledge-platform, estate-dashboard andnode. -
npm run lint:linkspasses.
Blocked by
Metadata
Metadata
Assignees
Labels
area: deployhomelab-deploy, deploy-v2, manifests, and rollout flow.homelab-deploy, deploy-v2, manifests, and rollout flow.priority: P2Medium; normal planned work.Medium; normal planned work.status: blockedCannot move forward until an external dependency is resolved.Cannot move forward until an external dependency is resolved.type: docsDocumentation-only change.Documentation-only change.
Activity
ExtraToast commentedon Oct 27, 2026
Resume here, with the source material (2026-10-27)
State: not started.
Next step: after #374, rewrite chapter 60 as rules, and write two runbooks: the handover runbook (one Project off fleet-infra onto the estate path) and the setup runbook (a cluster from nothing).
Blocked by: #374 (ordering: the chapter layout settles first). #656–#663 are blocked by this issue.
The local
HANDOVER.mdthis drew on is being reduced to a pointer, so the material is copied here.Handover order and shape
estate-vso-secrets.Per-Project steps the runbook must cover
secrets-system, restore, unseal, then retire the old one. It is a short planned outage in a quiet window, with the maintainer. Today a frankfurt restart seals Vault and takes down every database app; auto-unseal is estate#210.observability-system. The old claims stay read-only until their retention would have run out, and are deleted on the maintainer's go-ahead at idle IO priority.secret/data/<ns>/garage(s3.key_hex,s3.secret) tosecret/data/<project>/garage/s3;garage-dataclaim: stop Garage, copy the LMDB metadata ontogarage-meta, keep the blocks ongarage-data, and pointmetadata_snapshots_diratgarage-snapshots;file-backup, never the live LMDB.mongo-data-mongo-0to adopt the live PVC.ingress-systemandingress-lan-systemtoedge-system. They are stateless, but each load-balancer address must pass from the old Service to the new one. cert-manager retires, because each acme tier issues its own.secret/data/platform/cloudflare#CF_DNS_API_TOKENmust exist first (maintainer).api: { reason }andapiAccess.namespaceHolders.nodeAgentscatalog first; otherwise the render raisesE_NO_NODE_AGENT_POLICY.Version rollout steps, from 1.0.0 onward
alertClassis required on 0.31 and 0.32 and gone in 1.0.schemaVersionhas the same major and a minor no higher than the toolkit's (chapter 40). Until Raise E_SCHEMA_VERSION_MISMATCH when composing a fragment #665 lands that gate is not enforced, so a fragment for a newer minor composes and its unknown fields are silently dropped. That is why the toolkit is upgraded before any Project.Settled decisions the chapter-60 rules should state (do not reopen)
policy-adminwith ServiceAccountvault-policyin its namespace, with policies templated on the login's namespace.consumes.deploy-kit.jorisjonkers.dev/<application>.<surface>: "true", from namespaces labelledmanaged-by: deploy-kit(ADR 0035). Network policy is render-only.reporter-<project>besiderollouts-<project>.backupsandrollback-backupare removed in 1.0, feat(model)!: drop the rollback-backup annotation and the snapshot's backups list #652).Setup runbook prerequisites (maintainer)
age-keygen), with its public key as the Platform document'soffCluster.recipient, which 1.0 requires.secret/data/platform/backup/off-cluster.CF_DNS_API_TOKEN.ExtraToast commentedon Oct 29, 2026
Decision (maintainer, 2026-10-29): split it. The handover and setup runbooks land now under
docs/. Only chapter 60's rewrite to rules stays blocked on #374.ExtraToast commentedon Oct 29, 2026
The runbook half is in progress on
docs/381-runbooks: the handover runbook and the setup runbook underdocs/runbooks/. Chapter 60's rewrite to rules stays blocked on #374 and is not part of that change;status: blockedstays on for it.docs(runbooks): write the handover and setup runbooks (#702)
ExtraToast commentedon Oct 29, 2026
The runbook half landed in #702.
docs/runbooks/handover.mdcovers one Project's handover:docs/runbooks/setup.mdstands the estate path up on a cluster:secrets.sh,cluster.sh, the bootstrap CRDs and the first composition;Still open on this issue:
latex, knowledge-platform, estate-dashboard andnode. The runbook boxes are met by docs(runbooks): write the handover and setup runbooks #702.HANDOVER.md, which does not exist on estatemain.status: in-progressis off again;status: blockedstays for the chapter half.