# Scratchpad - Ubuntu 24.04 k3s VM Appliance

## Metadata
- Date started: 2026-02-23
- Plan folder: `ee/docs/plans/2026-02-23-ubuntu-k3s-vm-appliance/`
- Related chart: `helm/` with base values at `helm/values.yaml`

## Decisions Locked So Far
1. Base OS: Ubuntu Server 24.04 LTS.
2. Kubernetes runtime: k3s for v1.
3. Upgrade control plane: GitOps pull model with Flux.
4. VM artifact targets: vSphere OVA and QCOW2.
5. Automation code location: `ee/` subtree under `ee/appliance/`.
6. Product posture: locked appliance, no customer host tweaking.
7. Topology path: start single-node, support migration to 3-node HA with embedded etcd.
8. Artifact distribution: hybrid model (vendor-hosted default plus signed offline bundle import).
9. Support policy: support `N`, `N-1`, and `N-2`.
10. Upgrade jump policy: sequential only (`N -> N+1`).

## Proposed Repository Layout
1. `ee/appliance/packer/`
2. `ee/appliance/cloud-init/`
3. `ee/appliance/k3s/`
4. `ee/appliance/gitops/`
5. `ee/appliance/scripts/`
6. `historical local release metadata (removed)`

## Open Decisions To Finalize
1. Concrete endpoint names and ownership for vendor-hosted artifact storage.
2. Concrete endpoint names and operator flow for signed offline bundle distribution/import.
3. Exact release promotion cadence and approval gates for `candidate -> stable`.

## Risks / Gotchas
1. If stale image rebuild policy is not enforced, "always-current" requirement fails in practice.
2. If values overlays diverge from `helm/` baseline too much, maintenance cost rises.
3. Single-node defaults can block clean HA migration if datastore and scheduling assumptions are not made now.
4. Air-gapped or restricted-network customer sites require explicit mirror/import path from day one.

## Command Notes
1. Plan folder created:
- `mkdir -p ee/docs/plans/2026-02-23-ubuntu-k3s-vm-appliance`

## Next Implementation Sequence (High-Level)
1. Scaffold `ee/appliance` filesystem and script entrypoints.
2. Add Packer templates and autoinstall seed.
3. Add first-boot k3s + GitOps bootstrap flow.
4. Add release manifest schema + publication logic.
5. Add upgrade and rollback scripts.
6. Validate single-node install and HA migration path in test environment.
