Skip to content

VM lifecycle — provisioning architecture & troubleshooting

PRD: n1-cloud/docs/prd/PRD-350-2026-05-29-pyinfra-osquery-provisioning/PRD-350.md Milestone M8 · merged vm-lifecycle corpus n1-cloud#1089

Read n1-cloud/docs/runbook/vm-lifecycle/INDEX.md once. It routes:

  1. Architecture — n1-cloud/docs/runbook/vm-lifecycle/provisioning-architecture.runbook.md : converge → stack.up() → output-mapper writeback → bootstrap floor; four telemetry sources with authority levels.
  2. Prerequisites — n1-cloud/docs/runbook/vm-lifecycle/state-map-and-prerequisites.runbook.md : golden image, instance-type catalog ( n1-cloud#1066 ), quotas, stack lock.
  3. Signals — n1-cloud/docs/runbook/vm-lifecycle/invariants-and-signals.runbook.md : per-stage invariants + the D1 timeline smoking-gun.
  4. Fix recipes — n1-cloud/docs/runbook/vm-lifecycle/troubleshoot-and-fix.runbook.md : symptom → diagnosis → code-first fix (S1–S7).
  5. Hard-won facts — n1-cloud/docs/runbook/vm-lifecycle/grounded-intel.runbook.md : noop-not-persisted, drift-not-reroll-only, UTC discipline.

n1-cloud/docs/runbook/runbook/pyinfra-osquery-provisioning.runbook.md ties the layers:

LayerWorkflowSource
L1 substrateconverge.yml n1-cloud-pulumi/.github/workflows/converge.yml
Bootstrap floorpyinfra.yml (deploy_slug=bootstrap) n1-cloud-pulumi/.github/workflows/pyinfra.yml — auto after box up per n1-cloud/docs/prd/PRD-0-template-project/PRD-0.dos-donts.md:63
Golden bakegolden-bake.yml n1-cloud-apps/.github/workflows/golden-bake.yml — operator runbook: n1-cloud/docs/runbook/runbook/golden-image-bake.runbook.md

vm_status remains provisioning until bootstrap pyinfra completes ( n1-cloud/docs/prd/PRD-0-template-project/PRD-0.dos-donts.md:52 ).

Terminal window
# Soft reroll (idempotent up)
bun scripts/reroll.ts --ids 01KPN3W890J2ZZB39XRJF1VT0H --kind box --action up
# Converge dispatch surface (admin)
nayaone-admin api adminDeployN1Cloud # deploy web+workers only — not converge

Bare ULIDs only — n1-cloud/scripts/reroll.ts:433 rejects box_ / runner_ prefixes at parse time.