Merge pages and notices: prove both, choose survivor with preview, undo, notice feed (dark by default) #87

Merged
heimdall merged 22 commits from heimdall/merge-notices into main 2026-11-14 13:18:19 +00:00
Member

Merge pages and notices (merge design cuts: proofs, status and undo, merge page, notice feed), plus the fix batch for Soul verdict cut-merge-notices.s1.

  • Proof of both accounts by Heimdall account id only; no email or name matching; the other account is named only after both proofs; survivor chosen against a preview; consent for both; undo with fresh proof inside the grace window.
  • Derived notice feed (merged/undone/final) with idempotent acks, bearer-gated pull routes, migration AddAccountMergeNoticeAcks.
  • Dark by default: AccountMerge:Enabled false. Not deployed.
  • Soul: s1 (no Blocker/High), fixes at 63b9596, delta verdict s2 clean (one Low: stale login list drives the conflict block).

Co-Authored-By: Claude Sonnet 5.5 noreply@anthropic.com

🤖 Generated with Claude Code

Merge pages and notices (merge design cuts: proofs, status and undo, merge page, notice feed), plus the fix batch for Soul verdict cut-merge-notices.s1. - Proof of both accounts by Heimdall account id only; no email or name matching; the other account is named only after both proofs; survivor chosen against a preview; consent for both; undo with fresh proof inside the grace window. - Derived notice feed (merged/undone/final) with idempotent acks, bearer-gated pull routes, migration `AddAccountMergeNoticeAcks`. - Dark by default: `AccountMerge:Enabled` false. Not deployed. - Soul: s1 (no Blocker/High), fixes at 63b9596, delta verdict s2 clean (one Low: stale login list drives the conflict block). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 🤖 Generated with [Claude Code](https://claude.com/claude-code)
AddHeimdallClients gathers the three Heimdall client registrations so the test
exercises the registrations Program uses. The auth and member clients still
follow redirects here; the mover already does not.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The mover's inline no-redirect handler becomes the shared extension; the
app-secret auth client and the member-bearer client use it too.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Adds the two attempt purposes, their start methods, the four outcomes, the step's
return path and the MergeProofs registration; the completion switch cases throw
until the next commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Self redeems as the session's account; Other redeems a verified different account
that has a member account found by Heimdall account id. Every refusal precedes the
identity list, and the bearer is held only by MergeProofs.Put.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Test files: the bearer list is kept apart from the surface it is checked against; wording tests use the Razor encoder.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Dark behind AccountMerge:Enabled. MergePreview is the one wording of the plan, MergeWording.Confirm the closed refusal words.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
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
GameCult/Bifrost!87
No description provided.