20 lines
1.3 KiB
Markdown
20 lines
1.3 KiB
Markdown
# BACKLOG — Phase 1e (generic-harness corrections)
|
||
|
||
Phase-namespaced backlog. Builder edits `## Build backlog`; Adversary edits `## Adversary findings`.
|
||
|
||
## Build backlog
|
||
- [x] **E0 / HC2** — repo-local approval allowlist (`tests/repo-local-approved.txt`, default-deny);
|
||
gate `discovery.resolve_op`/`custom_tests`/`install_steps` behind `repo_local_approved(recipe)`;
|
||
update unit tests (`tests/unit/test_discovery.py`) for approved vs non-approved.
|
||
- [ ] **E1 / HC3** — generic-by-default (additive); op/assertion split. Orchestrator performs each
|
||
mutating op once; runs generic test_<op>.py (unless opt-out) + overlay test_<op>.py. Opt-out:
|
||
`CCCI_SKIP_GENERIC` / `CCCI_SKIP_GENERIC_<OP>` / `recipe_meta.SKIP_GENERIC`. Pre-op seed via
|
||
optional `tests/<recipe>/ops.py`. Migrate generic + overlays to assertion-only. Keep count==1.
|
||
- [ ] **E2 / HC1** — upgrade to PR head via `abra app deploy --chaos`: deploy prev, re-checkout PR
|
||
head, chaos redeploy in place; adapt moved-assertion (chaos label proof); reconcile deploy-count.
|
||
- [ ] **E3 / HC4** — docs (docs/testing.md, enroll-recipe.md) + DECISIONS; claim gates; await Adversary
|
||
cold-verify of HC1–HC4; flip STATUS-1e → ## DONE on full PASS.
|
||
|
||
## Adversary findings
|
||
(none yet)
|