From cca1428f26cc50d7bcb3cace261bab887447e441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 13 Jul 2026 23:47:32 +0200 Subject: [PATCH] chore(federation-hardening): 5.1 verified on staging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ran the post-deploy staging check on staging.trails.cool: - Durability: enqueued a real delivery, restarted the journal mid-flight; the job survived the restart (still `created` in Postgres afterward) and completed after — "Successfully sent activity … to social.ullrich.is/users/ullrich/inbox", federation_delivery_total {outcome="delivered"}=1, queue drained to 0. The old in-process queue would have dropped it. - Blocklist outbound: a poll-remote-actor for a blocked domain returned {skipped: "blocked instance"} with no network fetch. - Operator block/unblock procedure works against the live staging DB. Inbound-drop leg is covered by the group-2/3 real-Postgres integration tests + the two-instance e2e harness (firing it live needs a peer-initiated signed request). All 13 tasks now complete. Co-Authored-By: Claude Opus 4.8 (1M context) --- openspec/changes/federation-hardening/tasks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openspec/changes/federation-hardening/tasks.md b/openspec/changes/federation-hardening/tasks.md index bbaa4ef..bbd62bf 100644 --- a/openspec/changes/federation-hardening/tasks.md +++ b/openspec/changes/federation-hardening/tasks.md @@ -23,5 +23,5 @@ ## 5. Verification -- [ ] 5.1 Staging check: queue a fan-out, restart the journal container, confirm deliveries complete; block a test domain and verify both directions — **post-deploy step**, run once the change is on staging (see PR description for the exact commands) +- [x] 5.1 Staging check (verified on staging.trails.cool 2026-07-13): queued a real delivery, restarted the journal container mid-flight — the job survived the restart in Postgres (the old in-process queue would have lost it) and completed after, "Successfully sent activity … to social.ullrich.is/users/ullrich/inbox" (`federation_delivery_total{outcome="delivered"} 1`, queue drained to 0). Blocklist **outbound** verified: a `poll-remote-actor` for a blocked domain logged `result: {skipped: "blocked instance"}` (no fetch). Operator block/unblock procedure works against the live DB. The blocklist **inbound** drop is covered by the group-2/3 real-Postgres integration tests + the two-instance `e2e/federation/` harness (firing it live needs a peer-initiated signed request). - [x] 5.2 Run `pnpm typecheck && pnpm lint && pnpm test && pnpm test:e2e` — typecheck/lint/test green locally; `test:e2e` enforced by the required "E2E Tests" CI check on every PR