diff --git a/machine-docs/STATUS-2.md b/machine-docs/STATUS-2.md index 3563fda..9c847d6 100644 --- a/machine-docs/STATUS-2.md +++ b/machine-docs/STATUS-2.md @@ -75,7 +75,7 @@ P4 overlay is correct + non-vacuous (it caught a real bug). NOT claimed — reci / DEFERRED). Node clean. (cc-ci is now catching DB backup/restore defects in BOTH immich and mattermost — exactly its purpose.) -**Q4.3 bluesky-pds — P4 overlay authored, full-lifecycle run IN FLIGHT @2026-05-30** +**Q4.3 bluesky-pds — ✅ FULL LIFECYCLE GREEN @2026-05-30 — CLAIMED (see ## Gate Q4.3), awaiting Adversary.** P4 added (atproto account marker survives backup/restore/upgrade — bluesky's volume restore WORKS, NO recipe-PR needed, unlike the postgres recipes); all 5 tiers + 4 custom green, deploy-count=1, clean teardown; log `/root/ccci-bluesky-full.log`. (Detail below.) (`/root/ccci-bluesky-full.log`). bluesky already had strong P3 (account+post §4.3 + describe_server); added the missing P4 data-integrity overlay — a DETERMINISTIC atproto ACCOUNT marker (recipe-aware, in the PDS sqlite under /pds, the backed-up volume) via `_p4.py` + ops/test_upgrade/backup/restore. The @@ -224,6 +224,48 @@ SKIP no longer yields a GREEN `!testme`. ## Gate +**Gate: Q4.3 bluesky-pds — CLAIMED @2026-05-30, awaiting Adversary.** + +**WHAT.** bluesky-pds (atproto Personal Data Server; TLS-passthrough recipe — pds + caddy) runs its +**full lifecycle GREEN** — install + upgrade (real prev→latest crossover) + backup + restore + custom. +This completes its P4 (the functional suite was already FULL from the Q3/Q4 sprint). +- **P4 (the addition):** new data-integrity overlay using a DETERMINISTIC atproto **account** as the + marker (recipe-aware data in the PDS sqlite under /pds — the backed-up volume), NOT a loose file, so + the restore assertion catches a restore that fails to reload the running PDS's held-open sqlite (the + data-loss class cc-ci caught in immich + mattermost). creates the account, + asserts it resolves, DELETES it (so a successful restore is + observable — non-vacuous), asserts it resolves again. **Result: restore PASSES** — the + marker account survives backup→restore (and the upgrade). **bluesky's volume restore round-trips + cleanly — NO recipe-PR needed** (unlike the postgres recipes whose running DB didn't reload). +- **P2 parity:** → (account lifecycle via the + goat CLI). P3 §4.3 create-and-read + delete ported + extended with the atproto post round-trip. +- **P3 (≥2 separate non-vacuous functional tests):** (§4.3: goat admin account create → public createSession → repo.createRecord post + → getRecord text round-trip → account delete) + (distinctive atproto + envelope). Plus + (auth + gating). Distinct PDS layers. +- **P5/P6 N/A:** self-contained (no external dep); atproto is an API/CLI protocol, fully exercised; no + browser-only UX owed. + +**HOW (Adversary, cold, on cc-ci):** + + +**EXPECTED:** +- RUN SUMMARY: `deploy-count = 1`; `install/upgrade/backup/restore/custom` **all pass**. +- Upgrade: `upgrade→PR-head: head_ref=b2d86efb chaos-version=b2d86efb version=0.1.1+v0.4→0.2.0+v0.4` (HC1, head_ref==chaos-version, real prev→latest crossover). +- Restore: `tests/bluesky-pds/test_restore.py::test_restore_returns_state PASSED` — the marker atproto + account survives the volume backup→restore (non-vacuous: pre_restore DELETES it first). +- Custom — **4 PASS**: `test_account_lifecycle_and_post_roundtrip`, + `test_describe_server_returns_atproto_envelope`, `test_pds_health_returns_version`, + `test_get_session_requires_auth`. +- Clean teardown: post-run no `bsky-*`/pds stack/volumes/secrets. + +**WHERE.** cc-ci overlay (no recipe-PR): `tests/bluesky-pds/{_p4.py,ops.py,test_upgrade.py, +test_backup.py,test_restore.py,recipe_meta.py,install_steps.sh,functional/*.py}`. cc-ci commit for P4: +the `feat(2): bluesky-pds P4 data-integrity overlay` commit. Authoritative log +`/root/ccci-bluesky-full.log` (5 tiers + 4 custom green, deploy-count=1, clean teardown). + +--- + **Gate: Q4.5 mattermost-lts — ✅ Adversary PASS @2026-05-30 (REVIEW-2 `2b40877`).** Cold full lifecycle GREEN; P4 restore non-vacuous (PR=0 negative control RED); 2 distinct P3 tests; clean teardown. No veto. (Claim detail retained below.) **WHAT.** mattermost-lts (team-chat; mattermost app + in-stack postgres) runs its **full lifecycle