Commit Graph

525 Commits

Author SHA1 Message Date
fca4866ea1 status(2): Q4.4 ghost P4+create-post authored, full-lifecycle run in flight (NOT claimed) 2026-05-30 04:18:06 +01:00
b4d03ccafe feat(2): ghost P4 data-integrity overlay (MySQL ci_marker) + §4.3 create-post round-trip
- ops.py + test_{upgrade,backup,restore}.py: seed ci_marker into the MySQL `ghost` DB (db service)
  via the mysql CLI; rides the recipe's mysqldump --tab backup. recipe is MySQL not sqlite (stale
  comment fixed). Expect restore RED -> recipe-PR (no backupbot.restore hook; immich/mattermost class).
- functional/_ghost.py: cookie-aware Ghost Admin API client (stdlib http.cookiejar; Origin CSRF hdr).
- functional/test_post_roundtrip.py: §4.3 create published post + read back (unique marker, non-vacuous);
  closes the DEFERRED ghost create-post item.
- PARITY.md + recipe_meta.py updated. Authored node-free; full-lifecycle run next, NOT yet claimed.
2026-05-30 04:14:13 +01:00
c8c3cc8858 inbox(2): consumed Builder ghost-run heads-up — holding heavy deploys (node is Builder's for RECIPE=ghost); will cold-verify ghost on claim (esp. create-post replaces weak test_content_api + P4 restore non-vacuousness) 2026-05-30 04:09:57 +01:00
43b34bbaa0 inbox(2): reclaiming node for ghost full-lifecycle run (P3 create-post + P4 mysql marker); hold heavy deploys 2026-05-30 04:09:24 +01:00
71af595915 review(2): Q4.7 plausible §4.3 floor NOW FIRST-HAND GREEN — my cold run (adv-plausible-cold2) install+custom pass, deploy-count=1, BOTH *_event_roundtrip PASSED (ClickHouse events_v2 read-back), clean teardown; prior readiness-404 was a transient ClickHouse-boot flake; Q4.7 first-hand-evidence obligation CLEARED; note: ClickHouse boot intermittently flaky 1/2 on single node 2026-05-30 04:08:04 +01:00
1770b0c3e6 inbox(2): consumed Adversary plausible-probe heads-up — node stays with Adversary (settles Q4.7 first-hand); I'll do node-free authoring (ghost P4+create-post) meanwhile 2026-05-30 03:53:40 +01:00
83239eb673 status(2): Q4.3 bluesky-pds Adversary PASS (REVIEW-2 e45e0ee) — DONE; next unblocked: ghost P4+create-post deeper 2026-05-30 03:53:08 +01:00
430d57aac3 inbox(2): Adversary running plausible break-it probe on the node (settling Q4.7 §4.3 first-hand); ping to reclaim node 2026-05-30 03:42:06 +01:00
e45e0eea71 review(2): Q4.3 bluesky-pds PASS — COLD full lifecycle GREEN (my clone, log adv-bluesky-pr0) 5 tiers+4 custom, deploy-count=1, real upgrade crossover 0.1.1+v0.4→0.2.0+v0.4, clean teardown; P4 atproto-account marker non-vacuous via IN-BAND pre_restore delete+assert-gone (no recipe-PR — bluesky volume restore genuinely round-trips, real recipe diff from postgres recipes); 2 distinct P3 functional (account+post §4.3 round-trip + getSession auth-gating 401); no veto 2026-05-30 02:56:26 +01:00
7d69a596a7 status(2): fix Q4.3 bluesky claim text (heredoc had eaten backtick code spans) 2026-05-30 02:51:48 +01:00
4760f9676a claim(Q4.3): bluesky-pds full lifecycle GREEN — P4 added (atproto account marker survives backup/restore/upgrade; volume restore works, no recipe-PR); 5 tiers + 4 custom pass, deploy-count=1, clean teardown
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 02:50:53 +01:00
ad53a7c6c4 status(2): Q4.3 bluesky-pds P4 overlay (atproto account marker) authored, full-lifecycle run in flight 2026-05-30 02:49:27 +01:00
74da6dc46b feat(2): bluesky-pds P4 data-integrity overlay — deterministic atproto account marker (recipe-aware; catches running-app-holds-sqlite restore gap) via _p4.py + ops/test_upgrade/backup/restore
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 02:46:50 +01:00
8e160af997 journal(2): mattermost PASS (3rd this session); next bluesky-pds P4 scoped (account-based marker to catch running-app-sqlite-hold restore gap) 2026-05-30 02:39:05 +01:00
32050885a8 status(2): Q4.5 mattermost-lts Adversary PASS — DONE (3rd PASS this session; 2 recipe-PRs fixing real backup/restore bugs) 2026-05-30 02:36:54 +01:00
2b4087712d review(2): Q4.5 mattermost-lts PASS — COLD full lifecycle GREEN (my clone, log adv-mattermost-pr1) 5 tiers+4 custom, deploy-count=1, real upgrade crossover 10.11.15→10.11.18, clean teardown; P4 restore proven NON-VACUOUS via negative control (PR=0 published recipe → test_restore_returns_state FAILED 'relation ci_marker does not exist', fail-loud) — recipe-PR #1 is a genuine fix; 2 distinct P3 functional tests (self round-trip + cross-user delivery w/ user_b own token); clean teardown after FAILED run too; no veto 2026-05-30 02:35:50 +01:00
1ca7b2328b claim(Q4.5): mattermost-lts full lifecycle GREEN — P4 restore fixed via recipe-PR recipe-maintainers/mattermost-lts#1 (published restore was a no-op); 5 tiers + 4 custom pass, deploy-count=1, clean teardown
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 02:11:52 +01:00
e9d1e894b2 fix(2): mattermost functional tests share a deterministic admin bootstrap (_mm.bootstrap_admin) — only ONE unauthenticated first-user creation is allowed, so the multi-user test no longer collides with create_message
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 01:58:32 +01:00
7672f110f6 feat(2): mattermost-lts P3 2nd characteristic test (multi-user message visibility) + PARITY/DECISIONS for the postgres-restore recipe-PR
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 01:48:08 +01:00
342c3b078f status(2): Q4.5 mattermost recipe-PR #1 opened (pg_backup.sh restore fix), validation run in flight 2026-05-30 01:41:37 +01:00
11d6d82aad status/journal(2): Q4.5 mattermost P4 overlay caught a real recipe restore defect (no backupbot.restore.post-hook → DB not reimported); recipe-PR queued (immich pattern); node clean
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 01:30:19 +01:00
012a477540 fix(2): mattermost-lts P4 overlay — postgres service is named 'postgres' not 'db' (exec_in_app container discovery)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 01:18:57 +01:00
21e0b16ac4 status(2): Q4.5 mattermost-lts P4 overlay authored, full-lifecycle run in flight 2026-05-30 01:13:55 +01:00
80ad0a9ed1 feat(2): mattermost-lts P4 data-integrity overlay (ops.py postgres ci_marker seed + test_install/upgrade/backup/restore) — verifying recipe's PGDATA-dir restore brings the marker back
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 01:11:10 +01:00
0599477440 status(2): Q4.1 matrix-synapse Adversary PASS — DONE 2026-05-30 01:08:55 +01:00
c503f7d51c review(2): Q4.1 matrix-synapse PASS — COLD first-hand full lifecycle GREEN (my clone, log adv-matrix-cold); 5 tiers + 3 custom, deploy-count=1, real upgrade crossover 7.1.0→7.1.1, P4 restore ci_marker survives; §4.3 register retry verified NON-VACUOUS + reproduced the real post-restore transient (500 attempt1/2 → succeeded attempt3, full register→room→send→readback chain intact, 4xx fail-fast, timeout RAISEs); clean teardown; no veto 2026-05-30 01:07:53 +01:00
b73018c9ab journal(2): Q4.1 matrix register-500 root cause (restore DROP DATABASE FORCE closes synapse DB pool) + readiness-retry fix
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 01:01:09 +01:00
9a8850affa claim(Q4.1): matrix-synapse full lifecycle GREEN — §4.3 register transient post-restore 500 root-caused (synapse DB pool closed by restore DROP DATABASE FORCE) + fixed with bounded readiness-retry (not weakened); 5 tiers + 3 functional pass, P4 ci_marker survives, deploy-count=1, clean teardown
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 01:00:38 +01:00
db124d5107 fix(2): matrix register test — bounded readiness-retry on transient post-restore 5xx (synapse re-establishing DB pool after restore-tier DROP DATABASE); assertion unchanged, RAISEs on persistent failure
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 00:52:18 +01:00
cf54fe36a8 status(2): Q4.1 matrix — 4 tiers green; §4.3 register test 500 M_UNKNOWN, diagnosing with synapse log capture (not weakening)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 00:45:31 +01:00
f39bae71ea status(2): Q3.5 immich Adversary PASS (P4-restore CLOSED); Q4.1 matrix-synapse full-lifecycle run in flight
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 00:39:57 +01:00
11c5498bfa review(2): Q3.5 immich PASS — COLD first-hand full lifecycle GREEN (my clone, log adv-immich-cold); 5 tiers + 3 custom, deploy-count=1, P4 restore test_restore_returns_state PASSED (ci_marker survives recipe-PR pg_dump backup→restore; non-vacuous: pre_restore DROPs+asserts), negative control 7eb3937 lacks DB backupbot labels (bug confirmed), real upgrade crossover 1.5.1+v2.6.3→1.6.0+v2.7.5, 2 distinct P3 functional, clean teardown; P4-restore RED CLOSED; no veto 2026-05-30 00:36:17 +01:00
191a647dcf journal(2): immich claimed; remaining-recipe scope + backup-capability survey (ghost/bluesky/uptime-kuma/mattermost all backup-capable → P4 overlays required)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 00:22:12 +01:00
0487631bac claim(Q3.5): immich full lifecycle GREEN — P4 fixed via recipe-PR recipe-maintainers/immich#1 (recipe backed up NO database); 5 tiers + 3 custom pass, deploy-count=1, clean teardown
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 00:20:48 +01:00
ecd770b9ca feat(2): immich P3 2nd functional test (asset-processing: metadata extraction + library statistics) + PARITY/DECISIONS for immich postgres-backup recipe-PR
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 00:08:10 +01:00
4f0eeb54bd status(2): immich P4 — mechanism validated, recipe-PR recipe-maintainers/immich#1 opened, full-lifecycle run in flight
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 23:59:39 +01:00
6241e735ca review(2): drone leftover CLOSED (Builder removed stack+vol, node clean); immich Q3.5 P4 recipe-PR deploy in flight (immi-074f69); no gate pending; drone still operator-blocked (/etc/timezone absent) 2026-05-29 23:49:51 +01:00
a4a2e60b87 status(2): immich Q3.5 P4 in-flight — recipe-PR for postgres backup (recipe backs up no DB); inbox consumed, node clean
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 23:45:08 +01:00
7e2a5bc09c journal(2): immich Q3.5 P4 decision — recipe-PR to add postgres backup (recipe backs up NO DB as published); validate vchord dump/restore empirically first
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 23:44:47 +01:00
9b2ce09a67 inbox(2): consume adversary heads-up — removed forgotten drone smoke stack+volume (NOT pre-staging; drone integration awaits operator /etc/timezone host-deploy). Node clean: only infra stacks (traefik/bridge/dashboard/backups/warm-keycloak).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 23:39:23 +01:00
dd45e9555e revert(2): drop adversary scratch probe scripts accidentally staged by git add -A (runner/adv_*.py are local-only adversary scratch, not Builder code) 2026-05-29 23:37:48 +01:00
af94708de4 review(2): resume checkpoint — no gate pending; drone block genuine (/etc/timezone still absent on host); leftover drone smoke stack flagged (housekeeping); immich P4-restore still OPEN, unsigned 2026-05-29 23:37:17 +01:00
18577336f0 docs(2): Q5.1 — enroll-recipe.md §2.4 non-HTTP/multi-service/host-dependent recipes + mumble/mailu examples
Documents the Phase-2 Q4 patterns proven this session: EXTRA_ENV callable, READY_PROBE (HTTP+TCP),
CHAOS_BASE_DEPLOY, recipe_checkout -f, install_steps overlay-drop; non-HTTP protocol tests (mumble
host-ports + _mumble_proto), in-container functional tests (mailu flask/sendmail/doveadm under
TLS_FLAVOR=notls), and P4-N/A when a recipe ships no backupbot label. Worked-example pointers to
tests/mumble + tests/mailu.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 22:33:43 +01:00
1d99f91b44 status/backlog(2): Q4.10 drone BLOCKED on operator host /etc/timezone deploy (3bde76f); surfaced
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 22:20:35 +01:00
03b0a3b44d deferred(2): Q4.10 drone blocked on host /etc/timezone deploy (gitea SCM dep); integration scoped
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 22:19:55 +01:00
3bde76f239 fix(2): cc-ci host — declare /etc/timezone (gitea + Debian-image recipes bind it)
gitea (drone's SCM dep) binds /etc/timezone:ro; NixOS time.timeZone only creates /etc/localtime, so
the bind failed ('bind source path does not exist: /etc/timezone') → container rejected. Declare
environment.etc.timezone=UTC. Enables drone Q4.10's gitea dep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 22:16:24 +01:00
f86a58addf journal(2): drone+gitea integration fully scoped (gitea dep config + admin/token/OAuth-app + install_steps wiring; §4.3 build-creation deferred)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 21:59:07 +01:00
25ae2935b9 status(2): Q4.9 mailu Adversary PASS (REVIEW-2 2958eb6, P4-N/A signed off) — DONE; next drone Q4.10
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 21:51:57 +01:00
2958eb6c97 review(2): Q4.9 mailu PASS — COLD first-hand full lifecycle GREEN ×2 (my clone @6a216ed); deploy-count=1, real upgrade crossover 3.0.0→3.0.1 (head_ref==chaos-version), 2 non-vacuous P3 (unique-mailbox round-trip + unique-marker postfix→dovecot delivery), wait_healthy real gate, clean teardown; P4-N/A §7.1 sign-off GRANTED (no backupbot label, independently confirmed); P5/P6 N/A justified; no veto
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 21:51:06 +01:00
3c79e3de32 journal(2): drone Q4.10 analysis — needs gitea SCM dep + OAuth + build-trigger pipeline (heaviest §4.3)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 21:46:06 +01:00