net-kingdom/workplans/NK-WP-0044-runbook-packs-for-runbook-tutorials.md
tegwick 2f48c9df8d
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
ssh-certificates pack: use ops-warden's rehearsal config (WARDEN_CONFIG); record dry-run
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: sonnet
Assistant-Process: 6969@bnt-lap001
Assistant-Session: e8ae73f2-8385-4c9c-b714-94c3c52cdbc0
2026-10-02 22:01:44 +02:00

7.3 KiB

id type title domain repo status flavor owner topic_slug created updated related state_hub_workstream_id
NK-WP-0044 workplan Provide NetKingdom runbook packs for the runbook-tutorials engine infotech net-kingdom active implementation claude netkingdom 2026-09-29 2026-09-29
NK-WP-0009
82414324-e9cf-5581-af9e-b0122411d7bf

The guided console invented here (NET-WP-0016) now has a home: the runbook-tutorials repository (workplans RBT-WP-0002 to RBT-WP-0006). This workplan is net-kingdom's side: keep the existing console working, and offer NetKingdom runbooks as packs in runbooks/, following runbook-pack/v0.1.

Wrap the existing console as a legacy pack

id: NK-WP-0044-T01
status: done
priority: high
state_hub_task_id: "44a2d9a7-c0bc-5099-89fb-f6a3fa0c2e50"

runbooks/security-bootstrap-console/pack.yaml, engine legacy-command. Verified end to end: rtut launch starts make security-bootstrap-ui, port 8876 answers, and the process stops on exit. The console itself is unchanged.

Convert the SSH certificate tutorial to a native pack

id: NK-WP-0044-T02
status: done
priority: high
state_hub_task_id: "ea4b5cb2-cb7d-5349-9057-bf2657690c79"

runbooks/ssh-certificates/pack.yaml (parameters actor, pubkey, tunnel; owner-tagged steps; verify and rollback). It validates; it is unexercised.

Convert the OpenBao and flex-auth tutorials

id: NK-WP-0044-T03
status: done
priority: high
state_hub_task_id: "ba1a41a7-b40d-5312-851e-93c613ac9b27"

Ported to v0.2 on 2026-09-29 (RBT-WP-0009-T06): all three NetKingdom packs now use stages, actors, datapoints with dimensions, gates, idempotency and framing; the OpenBao pack models "validate a real ceremony record" as alternatives recommended by a datapoint (there is no skip in v0.2); the live flex-auth steps are auto_confirm: manual-only so auto-confirm never mints tokens on its own. All 13 cluster-free checks were re-run through the engine and pass. docs/tutorials/openbao-operating-path.md and protected-system-flex-auth.md become native packs. The flex-auth pack's live part uses the informed-decision pin and the negative tests N1-N3 as parameterized steps. N4 (expired token) is not in the pack: it needs a ten-minute wait and a held token, so it stays a documented manual check in the markdown tutorial. The markdown stays until the packs are exercised. Verified without a run record: the ten offline and read-only verify commands were executed and passed; the cluster-touching steps (port-forward and token calls) have not been run.

Validate packs in this repository

id: NK-WP-0044-T04
status: done
priority: medium
state_hub_task_id: "1423d9d7-ce11-5fd3-9905-3566f947b0a9"

make runbooks-validate runs the rtut validator from the runbook-tutorials checkout (RTUT_HOME, default ~/runbook-tutorials).

Exercise the packs through the UI

id: NK-WP-0044-T05
status: wait
needs_human: true
blocking_reason: "Bernd runs the three v0.2 packs in the UI against the cluster; the engine records the outcomes."
priority: high
state_hub_task_id: "2d99180e-25ff-51db-8208-b0320c8ec7e3"

The UI, project runs and maturity are ready (RBT-WP-0004 and RBT-WP-0008 are finished). Bernd runs the SSH, OpenBao and flex-auth packs in the UI, ideally inside a rehearsal project so the clean runs count as maturity evidence; the engine records outcomes, and NK-WP-0009 T03-T05 close on those receipts. Start with rtut check . and open the packs from the runbook list.

Dry-runs 2026-10-01 (Claude, through rtut.run2; no environment, manual checks self-attested, so no maturity): nk.object-storage-sts and nk.openbao-operating-path ran clean. nk.ssh-certificates stopped at sign: its defaults (actor agt-claude-railiance01, key ~/.ssh/id_ed25519.pub) do not exist on this workstation (ops-warden inventory holds agt-state-hub-bridge, agt-codex-interhub-*, adm-example, atm-backup-daily; no id_ed25519 key). Nothing was issued. Decision needed from Bernd on which actor and key the rehearsal uses; then fix the pack defaults. Engine gap (rtut CLI cannot run v0.2 packs) sent to runbook-tutorials (6e366f35-43a7-4e55-8622-40626a4acbec). Project trial-2 is the lighthouse showcase and holds no NetKingdom pack, so it is not T05 evidence.

Rehearsal actor 2026-10-02: Bernd approved an inert test actor, not a master key. Added agt-rehearsal (agt, 2h, principal rehearsal-inert-nohost, no host trusts it) to the workstation warden inventory, key ~/.ssh/agt-rehearsal_ed25519; the nk.ssh-certificates defaults now point at it and its tunnel step is an honest alternative (no target yet = not proven). warden sign is still denied by flex-auth (unknown_actor_resource): actors live in ops-warden's production registry. Request sent to ops-warden for the sanctioned registration; net-kingdom does not edit their registry. A systematic pre-production testing environment (test CA, test principals, test hosts) is Bernd's later topic.

ops-warden answered 2026-10-02 (21c85dc3-754e-41fc-a271-02255054e12d): no production registry change. A rehearsal config (WARDEN_CONFIG=~/.config/warden/rehearsal/warden.yaml, throwaway local CA, no flex-auth gate, no prod trust) signs for the inert agt-rehearsal. The pack now has a warden_config datapoint defaulting to it. nk.ssh-certificates dry-ran clean (cert: test CA, principal rehearsal-inert-nohost only, 2h). This proves the signing mechanics, not the policy gate; the tunnel stage stays "not proven" until a test target exists. Dry-runs of packs 1-3 are all clean; Bernd's UI rehearsal is the remaining T05 work. A systematic pre-production environment (ops-warden's option b) is Bernd's later topic.

Retire the markdown verifier

id: NK-WP-0044-T06
status: wait
depends_on: [NK-WP-0044-T05]
blocking_reason: "Once the tutorials are packs (T05)."
priority: low
state_hub_task_id: "1b747058-d4df-5f5c-bd63-e85d46dd094e"

Once the tutorials are packs, tools/tutorial-verify and make tutorials-verify are replaced by runbooks-validate, and docs/tutorials/ becomes a pointer.

Port the seven console runbooks

id: NK-WP-0044-T07
status: done
priority: low
state_hub_task_id: "8628d5eb-6e5d-501d-a8f5-960d6b5db8f4"

The security bootstrap console's seven runbooks (privacyIDEA realm repair, key material compromised, generate new unseal keys, emergency lock-down, restore drill, token revocation, user lifecycle dry-run) can become native v0.2 packs. They are linear procedures with 23 command blocks and need none of the gaps G1 to G7 in runbook-tutorials/docs/console-mapping.md. The console itself stays a permanent legacy pack.

Ported on 2026-09-29: runbooks/privacyidea-realm-repair, openbao-key-compromise, openbao-rotate-unseal-keys, openbao-emergency-lockdown, openbao-restore-drill, openbao-token-revocation and user-lifecycle-dry-run. All validate (make runbooks-validate, 11 packs). They are unexercised: no command was run. Secret-handling steps are auto_confirm: manual-only, irreversible steps use the pack confirm_phrase, and token and share entry stays at hidden prompts.

Acceptance Criteria

  • The console still works and is launched by the engine without changes to it.
  • Every NetKingdom pack validates; maturity is derived from run history, not declared.