3.6 KiB
3.6 KiB
UAT Run — Community Sync & Revocation (m9)
Date: 2026-03-05T00:15:49Z Agent: claude-sonnet-4-6 Verdict: PASS
m9-community-profile-sync (10/10)
- join_and_query_membership — user joins community, membership queryable (2026-03-05T00:12:00Z)
- signal_routes_to_community_aggregate — member signal forwarded to community aggregate (2026-03-05T00:12:00Z)
- nonmember_signal_not_forwarded — non-member signal stays local only (2026-03-05T00:12:00Z)
- multiple_communities_independent — user in 2 communities, both receive signals (2026-03-05T00:12:00Z)
- membership_persists_across_restart — close + reopen preserves memberships (2026-03-05T00:12:00Z)
- join_idempotent — double join produces single membership (2026-03-05T00:12:00Z)
- invalid_community_name_empty — empty name rejected with InvalidInput (2026-03-05T00:12:00Z)
- invalid_community_name_too_long — 65-char name rejected with InvalidInput (2026-03-05T00:12:00Z)
- forwarding_does_not_block_primary_write — base ledger updated regardless (2026-03-05T00:12:00Z)
- community_aggregate_windowed_count — 3 member signals produce count=3 (2026-03-05T00:12:00Z)
m9-leave-revocation (7/7)
- leave_stops_cohort_fanout — post-leave signals not forwarded to cohort (2026-03-05T00:12:30Z)
- join_resumes_cohort_fanout — rejoin re-enables forwarding (2026-03-05T00:12:30Z)
- leave_is_idempotent — double leave succeeds, timestamps monotonic (2026-03-05T00:12:30Z)
- status_query_lifecycle — Active→Left→Active transitions correct (2026-03-05T00:12:30Z)
- left_at_ns_preserved_on_rejoin — leave timestamp unchanged after rejoin (2026-03-05T00:12:30Z)
- unknown_user_defaults_to_active — unknown user reports Active/None (2026-03-05T00:12:30Z)
- leave_stops_community_forwarding — community key count unchanged after leave (2026-03-05T00:12:30Z)
m9-retroactive-purge (8/8)
- basic_purge_retracts_score — purge reduces community aggregate score (2026-03-05T00:13:00Z)
- second_purge_is_idempotent — second purge has 0 entries, score unchanged (2026-03-05T00:13:00Z)
- purge_does_not_affect_other_users — other users' contributions intact (2026-03-05T00:13:00Z)
- manifest_persisted_and_listable — manifests stored and retrievable (2026-03-05T00:13:00Z)
- purge_unknown_cohort_is_noop — unknown cohort returns empty manifest (2026-03-05T00:13:00Z)
- score_never_goes_negative — post-purge score >= 0.0 (2026-03-05T00:13:00Z)
- multiple_items_purged_together — multi-item purge in single operation (2026-03-05T00:13:00Z)
- non_cohort_member_purge_is_noop — non-member purge returns empty manifest (2026-03-05T00:13:00Z)
m9-purge-rematerialization (6/6)
- submit_purge_job_returns_job_id — API returns non-zero JobId (2026-03-05T00:13:30Z)
- purge_job_status_pending_after_submit — status is Pending immediately (2026-03-05T00:13:30Z)
- unknown_job_id_returns_none — unknown job returns None (2026-03-05T00:13:30Z)
- rematerialization_metrics_snapshot_is_valid — fresh metrics are zero (2026-03-05T00:13:30Z)
- job_succeeds_in_persistent_mode — engine processes job to Succeeded (2026-03-05T00:13:30Z)
- multiple_jobs_processed_independently — two jobs both complete independently (2026-03-05T00:13:30Z)
Regression
- cargo test --lib: 1355 passed (2026-03-05T00:14:30Z)
- m7_uat: 10/10 passed (2026-03-05T00:15:00Z)
Signed: UAT executor | 2026-03-05T00:15:49Z Tasks created: none 31/31 M9 integration steps passed