fix: reuse accounts for verified follow profile aliases #315

Merged
erik merged 2 commits from fix/task-8e78c322-follow-profile-aliases into main 2026-10-30 20:28:09 -05:00
Owner

Summary

  • Reuse the original contact-owned account through reciprocal canonical actor/profile verification; reject ambiguous matches and unverified URL equivalence.
  • Use canonical delivery metadata and atomically save follows/catalog inserts.
  • Add guarded operator-only SQL and an adoption/repair runbook preserving follow status and immutable incoming history, with separate website deployment/data authorization and Rott verification gates.

Task: task-8e78c322

Verification

  • ./scripts/pre-pr.sh passed: build/contract validation, CSS, formatting, lint, types and full local workspace tests (786 template-site tests; 1,493 total workspace tests).
  • Alias regressions cover profile/actor/handle inputs, Link representations, canonical metadata, conflicts, safety, unrelated feeds, refollow and rollback.
  • Exact repair SQL tested for retained post/boost bodies, removed-copy tombstones, delivery aliases, cursors, status/generation and failure guards.
  • No API shape/contract version, package version, dependency or CI changes.

Operational limits

No production deployment, database inspection/repair or Rott refresh was performed. Hosted source/schema remain unverified. These task requirements remain pending separate authorization. The script intentionally refuses a destination that already has a follow and does not delete duplicate catalog records.

Gates

Initial independent review identified a transaction-boundary race. Two new regressions reproduced it; matching sets are now revalidated inside the write savepoint before persistence. Full pre-PR checks rerun successfully. CI run 569 passed at 0979627. Independent re-review returned PASS with no actionable findings; the initial transaction-boundary finding is resolved. Explicit human approval required before merge.

## Summary - Reuse the original contact-owned account through reciprocal canonical actor/profile verification; reject ambiguous matches and unverified URL equivalence. - Use canonical delivery metadata and atomically save follows/catalog inserts. - Add guarded operator-only SQL and an adoption/repair runbook preserving follow status and immutable incoming history, with separate website deployment/data authorization and Rott verification gates. Task: task-8e78c322 ## Verification - ./scripts/pre-pr.sh passed: build/contract validation, CSS, formatting, lint, types and full local workspace tests (786 template-site tests; 1,493 total workspace tests). - Alias regressions cover profile/actor/handle inputs, Link representations, canonical metadata, conflicts, safety, unrelated feeds, refollow and rollback. - Exact repair SQL tested for retained post/boost bodies, removed-copy tombstones, delivery aliases, cursors, status/generation and failure guards. - No API shape/contract version, package version, dependency or CI changes. ## Operational limits No production deployment, database inspection/repair or Rott refresh was performed. Hosted source/schema remain unverified. These task requirements remain pending separate authorization. The script intentionally refuses a destination that already has a follow and does not delete duplicate catalog records. ## Gates Initial independent review identified a transaction-boundary race. Two new regressions reproduced it; matching sets are now revalidated inside the write savepoint before persistence. Full pre-PR checks rerun successfully. CI run 569 passed at 0979627. Independent re-review returned PASS with no actionable findings; the initial transaction-boundary finding is resolved. Explicit human approval required before merge.
fix: reuse accounts for verified follow profile aliases
All checks were successful
CI / build-lint-test (pull_request) Successful in 1m35s
19bdd61890
Task: #task-8e78c322
fix: revalidate follow identity inside write transaction
All checks were successful
CI / build-lint-test (pull_request) Successful in 1m6s
0979627d7d
Task: #task-8e78c322
erik merged commit 6c441fbe8b into main 2026-10-30 20:28:09 -05:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
erik/slugkit!315
No description provided.