feat(posts): GREEN — the cutover re-materialization tool (task 8) master
Fills the RED stubs for the §11 re-materialization tool: the cutover step that moves every legacy social.coves.community.post (in a COMMUNITY's repo) to an author-owned postv2 plus the community's acceptance, then deletes the old record — resumably and idempotently. - migration 037: post_rematerialization_ledger (old_uri PK; CHECK-closed 7-state vocabulary; migrated ≠ done so a crash on the delete retries ONLY the delete; nullable postv2 coordinates + fallback reason). - rematerialize_ledger.go: the parameterized ledger repo — idempotent Discover upsert, from-state-guarded transitions (a no-op transition is an error, not a silent success), and the CountByState census. - rematerialize.go: RematerializeRkey = SubjectRkey(oldURI) (pure/stable, so createAuthorRecord converges by read), and the RematerializeOne state machine — postv2 via createAuthorRecord, acceptance via WriteAcceptance DIRECT (no decider, never re-adjudicates), VERIFY BEFORE DELETE by re-reading the postv2 CID, and a no-creds author left as legacy, never forged. Run aggregates the census and holds Complete false while any fallback survives. - cmd/rematerialize-posts: the thin operator wrapper wiring the real LegacySource (listRecords/deleteRecord over hosted community repos), the author factory, the direct writer, and the ledger. Greens all task-8 reds; make test + make test-integration pass, no regressions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>