Files
cc-ci/machine-docs/BACKLOG-1d.md

40 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BACKLOG — Phase 1d
## Build backlog (Builder-only)
### G0 — Generic install + deploy-once orchestrator (DG1)
- [ ] `runner/harness/generic.py`: generic assertion helpers (`assert_serving` — real HTTP, not
Traefik fallback/default cert) + op helpers (`do_upgrade`, `do_backup`, `do_restore`) +
`backup_capable(recipe)` (scan compose for backupbot.backup).
- [ ] `runner/harness/discovery.py`: per-op overlay resolution (repo-local > cc-ci > generic),
custom-test discovery (both locations, additive), install-steps hook discovery.
- [ ] `tests/_generic/`: assertion-only generic tier files (test_install/upgrade/backup/restore.py).
- [ ] Refactor `run_recipe_ci.py` → deploy-once: deploy base version once, run tiers in order against
the shared deployment, one teardown in finally; per-op result summary.
- [ ] Refactor `tests/conftest.py` fixtures to expose the shared live deployment (no per-tier deploy).
- [ ] Deploy-count guard (`CCCI_DEPLOY_COUNT`) in `lifecycle.deploy_app`; assert ==1 per run.
- [ ] Prove generic install green on custom-html-tiny (no cc-ci/repo-local tests). → claim G0.
### G1 — Generic upgrade + backup/restore (DG2, DG3)
- [ ] Generic upgrade tier: previous→target in place; reconverge + serving.
- [ ] Generic backup/restore tiers gated on backup-capability; clean N/A skip otherwise.
- [ ] Prove on a backup-capable recipe (custom-html: has backupbot labels).
### G2 — Layering + discovery + precedence (DG4, DG4.1)
- [ ] Migrate an existing recipe's tests to the new assertion-only overlay contract as the proof.
- [ ] Prove override (overlay replaces generic) + extend-by-composition; no redeploy (deploy-count==1).
### G3 — Custom install-steps hook + graceful-generic (DG5)
- [ ] install_steps.sh hook run during install tier (after app new+env, before deploy).
- [ ] Proof: a recipe needing a step FAILS generic install without it; PASSES with it.
### G4 — !testme e2e + per-op reporting + docs + cold verify (DG6, DG7, DG8)
- [ ] !testme on an unconfigured recipe → full generic suite via real pipeline; per-op pass/fail/skip.
- [ ] Migrate remaining recipe tests to the new contract so nothing regresses (DG7).
- [ ] docs/: generic suite, overlay convention (names/locations/precedence), install-steps hook,
how to add an overlay.
- [ ] Request Adversary cold-verify DG1DG8 → flip STATUS-1d to ## DONE.
## Adversary findings (Adversary-only)
(none yet)