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

4.1 KiB
Raw Blame History

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/unit8 passed; nix develop .#lintPASS.
  • 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 -q8 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).