# Agent instructions — Overdeck K3s Phase 2

## Scope

Apply and verify only the Phase 2 one-command enrollment planning implementation. Phase 2 is dry-run/read-only. Do not join a node, create a K3s token, alter SSH, mutate Kubernetes, update live registries, merge a pull request, or enable dispatch.

## Required procedure

1. Run `apply-overdeck-k3s-phase2.sh` as the normal repository owner.
2. Preserve the shared checkout exactly; the launcher must create a fresh isolated worktree from current `origin/main`.
3. Treat package checksums, changed-path allowlist, semantic plan merges, all required gates, and the independent receipt validator as fail-closed.
4. Use the shipped fixture unless the owner explicitly passes `--live-candidate`.
5. Keep any created pull request in draft state.
6. Return the printed `overdeck-k3s-phase2-result-*.tar.gz` archive.

## Success criteria

- all required gates pass;
- `plan.json` and registry previews are deterministic across repeated fixture runs;
- the plan has 17 ordered steps and no secret values;
- the candidate preview has `execution=none` and no order/fallback membership;
- source registry digests are unchanged;
- every mutation flag is false;
- `phase3_authorized=false`;
- the independent validator returns `status=passed`;
- the exact package delta is committed and optionally pushed to a draft branch only after receipt authorization.

## Forbidden actions

- Do not run the launcher as root.
- Do not invoke `enroll-node.py --mode apply` or the wrapper with `--apply`/`--execute`.
- Do not edit the shared checkout.
- Do not copy preview registries over tracked registries.
- Do not expose or collect token values, kubeconfig content, private keys or environment variables.
- Do not push directly to `main` or merge the draft pull request.
- Do not create or modify product UI primitives. Phase 2 has no product UI scope.
