Files
cc-ci/machine-docs/STATUS-1e.md
autonomic-bot 7fba6b0547 status(1e): E1/HC3 CLAIMED — additive generic + op-once verified e2e (custom-html)
default run: every tier ran generic+overlay (op once, deploy-count=1); CCCI_SKIP_GENERIC=1 run:
generic skipped, overlays only. Clean teardown both. E0/HC2 recorded as Adversary PASS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 03:18:41 +01:00

61 lines
4.1 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.

# STATUS — Phase 1e (generic-harness corrections HC1HC4)
**Phase plan (SSOT):** `/srv/cc-ci/cc-ci-plan/plan-phase1e-harness-corrections.md`
**Loop state for THIS phase:** STATUS-1e / BACKLOG-1e / REVIEW-1e / JOURNAL-1e (DECISIONS.md shared).
Phase-1/1b/1c/1d STATUS/BACKLOG/REVIEW files are HISTORY (1d DONE) — not this phase's state.
## Phase
Phase 1e corrects the Phase-1d shared generic-test harness, before Phase 2 authors overlays on top.
Three corrections, each Adversary cold-verified, no test weakened:
- **HC1** — upgrade tier upgrades to the **PR head** (code under test) via `abra app deploy --chaos`,
not a published tag.
- **HC2** — repo-local (PR-authored) `test_*.py`/`install_steps.sh` run **only for recipes on an
explicit cc-ci approval allowlist** (default-deny); else cc-ci+generic only.
- **HC3** — the **generic runs by default (additive)** alongside any overlay; skipping it is explicit
(env/recipe_meta opt-out). Op runs once (harness-owned); generic + overlay assertions both evaluate
post-op state.
- **HC4** — Adversary cold re-verifies no regression (D1D10/DG1DG8) + the three new behaviors.
## Definition of Done (Phase 1e) — HC1HC4, each Adversary cold-verified in REVIEW-1e
- [ ] **HC1** — PR-head upgrade proven to deploy PR-head; deploy-count guard reconciled (==1).
- [ ] **HC2** — repo-local ignored for a non-approved recipe, run for an approved one.
- [ ] **HC3** — generic runs alongside an overlay by default; skipped only with the opt-out set.
- [ ] **HC4** — no regression cold-verified; deploy-once + teardown still sacred.
## Milestones (plan §3)
- **E0** — HC2 trust gate (allowlist, default-deny). *Accept: repo-local ignored unless approved.*
- **E1** — HC3 additive + op/assertion split. *Accept: overlay+generic both run; opt-out skips; count=1.*
- **E2** — HC1 upgrade-to-PR-head. *Accept: upgrade demonstrably deploys PR-head.*
- **E3** — HC4 cold re-verification + docs → DONE.
## In flight
E2 (HC1) — upgrade tier upgrades to the PR-head code under test via `abra app deploy --chaos`
(re-checkout PR head after the prev-tag base deploy; chaos label proves PR-head deployed); reconcile
the DG4.1 deploy-count guard with the in-place chaos redeploy.
## Gate
**Gate: E1/HC3 — CLAIMED, awaiting Adversary @2026-05-28.** Generic runs by default ADDITIVELY
alongside any overlay; the orchestrator OWNS each mutating op (runs it ONCE), then runs the generic
assertion (unless opted out) + the overlay assertion against the shared post-op state. Opt-out:
`CCCI_SKIP_GENERIC` / `CCCI_SKIP_GENERIC_<OP>` / `recipe_meta.SKIP_GENERIC`. Pre-op seeds via per-recipe
`ops.py` (`pre_<op>`); op results pass op→assert via `$CCCI_OP_STATE_FILE`. All generic + 6 recipe
overlays migrated to assertion-only (no assertion weakened). Evidence (commit b7e6cbd; on cc-ci):
- `pytest tests/unit`**8 passed**; `nix develop .#lint`**PASS**.
- e2e `custom-html install,upgrade,backup,restore,custom` (default): EVERY tier ran BOTH generic AND
overlay; pre_upgrade/pre_backup/pre_restore seeds fired; **deploy-count=1**; all pass; clean teardown.
- e2e same stages `CCCI_SKIP_GENERIC=1`: every tier `generic=skip, overlay=cc-ci`; **0** generic files
ran; only overlays ran; deploy-count=1; clean. Logs: /root/ccci-1e-{customhtml,optout}.log.
**Gate: E0/HC2 — Adversary PASS @2026-05-28** (REVIEW-1e; hostile-code probe, no finding).
Prior CLAIM detail: Repo-local (PR-authored)
`test_*.py`/`install_steps.sh`/`ops.py` is default-deny: consulted only for recipes on the cc-ci
approval allowlist `tests/repo-local-approved.txt` (empty ⇒ deny). Centralized gate in
`discovery.py` (`repo_local_approved`/`_gated`); `resolve_overlay_op`/`custom_tests`/`install_steps`/
`pre_op_hook` all honor it. Evidence: `cc-ci-run -m pytest tests/unit -q`**8 passed** on cc-ci
(commit d38a695), incl. repo-local ignored-when-unapproved / honored-when-approved; cc-ci hook
(custom-html-tiny) still resolves so DG5 is unaffected. Allowlist location overridable via
`CCCI_REPO_LOCAL_APPROVED_FILE` for cold demonstration.
## Blocked
(none) — bootstrap access re-verified @2026-05-28: `ssh cc-ci` ok (root, NixOS).