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

2026-11-14

Heimdall
2026-11-14 10:53:40 +00:00
Heimdall
Test: merge notice feed and its bearer (red; the feed is a skeleton and the routes do not exist)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 10:42:57 +00:00
Heimdall
Docs: merge page, its flag and deploy order
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 10:30:15 +00:00
Heimdall
MergeAccounts page: prove both accounts, choose the survivor against a preview, consent for both, confirm through the saga
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>
2026-11-14 10:29:59 +00:00
Heimdall
Test: an ended merge shows no notice even with its grace date ahead
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 10:21:22 +00:00
Heimdall
MergeNotice in the layout and a Merge status link on Membership status
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 10:17:13 +00:00
Heimdall
MergeStatus page: the member's merges and undo by fresh proof of every moved login
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>
2026-11-14 10:17:13 +00:00
Heimdall
MergeWording: the closed words of the merge pages
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 10:11:29 +00:00
Heimdall
2026-11-14 10:07:46 +00:00
Heimdall
Test: first undefined attempt purpose is now 11 (9 and 10 are the merge proofs)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 10:04:45 +00:00
Heimdall
Complete merge-proof sign-ins into MergeProofs; refusals return to the starting page
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>
2026-11-14 10:00:20 +00:00
Heimdall
Test: merge-proof sign-ins complete into MergeProofs (red; completion cases are stubs)
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>
2026-11-14 09:59:46 +00:00
Heimdall
MergeProofs: in-memory per-actor holder of merge proofs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 09:57:45 +00:00
Heimdall
Test: MergeProofs holder (red; type is a skeleton)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 09:56:49 +00:00
Heimdall
Auth and member clients follow no redirect: one WithoutRedirects for all three
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>
2026-11-14 09:56:49 +00:00
Heimdall
Test: a 307 from Heimdall is not followed by the auth and member clients (red)
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>
2026-11-14 09:56:19 +00:00