# BACKLOG — phase `nixenv` ## Build backlog - [x] M1: define shared harness/recipe-test runtime env once (overlay in `packages.nix`): `ccciPyEnv` + `ccciRuntimeTools` (the union tool set) + `cc-ci-run`. - [x] M1: `harness.nix` references `pkgs.cc-ci-run` (no local pyEnv/runtimeInputs). - [x] M1: `nightly-sweep.nix` invokes `cc-ci-run` (no duplicate pyEnv, no own tool list, DEFECT-3 patch gone). - [x] M1: both host `configuration.nix` `systemPackages` reference `pkgs.ccciRuntimeTools` (+ openssh); end identical. - [x] M1: grep proof — exactly one `withPackages`/`pytest playwright` in nix/ (packages.nix); no module declares its own harness tool list. - [x] M1: `nixos-rebuild build` succeeds for both `#cc-ci` and `#cc-ci-hetzner`. - [x] M1: CLAIM, await Adversary PASS. - [ ] M2: deploy via `nixos-rebuild switch`; verify host health (systemctl --failed, oneshots, timer, endpoints). - [ ] M2: live parity — gitea `test_lfs_roundtrip` green under BOTH Drone path and a real timer fire from the unified env. - [ ] M2: canon-style sweep still promotes/SKIPs correctly (no regression). - [ ] M2: CLAIM, await Adversary PASS → `## DONE`. ## Adversary findings