Heimdall
84ff2c4578
Account merge ledger: AccountMerge receipt, reductions, alias standing, undo and final sweep
...
AccountMergeLedger owns what a merge does to Bifrost records: PlanAsync (dry run, block codes),
CommitAsync (one save, total, idempotent), UndoLocalAsync (journal replay), FinalizeDueAsync
(AccountMergeSweeper) and StandingAsync/ResolveAsync. Votes and concept appraisals are voided by a
stamp that a model query filter hides from every tally. The actor accessor no longer ORs several
credentials under SingleOrDefault (a latent crash); a frozen or folded account resolves to no
account on every route, the OIDC authorize and chat refusal deny it, and patron intake follows the
alias. Migration AddAccountMerges is additive. No UI, no Heimdall call, nothing deployed.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-14 02:31:51 +00:00
..
Bifrost.Web.Tests
Account merge ledger: AccountMerge receipt, reductions, alias standing, undo and final sweep
2026-11-14 02:31:51 +00:00
fixtures
Mouth: fetch one named event's image for its Persona, store it, post an inert receipt (CHAT_FETCH, off by default) ( #73 )
2026-11-12 00:59:28 +00:00
cultlib-root.mjs
Resolve CultLib via VOIDBOT_CULTLIB_ROOT in tests; test formerly indexed stores ( #47 )
2026-11-11 05:01:33 +00:00
cultmesh-bridge-commands.test.mjs
Bifrost pump: one verb, one path; refuse anything else with a failed receipt
2026-09-30 16:59:51 +02:00
fake-clock.mjs
Watchdog notice reader: a future stamp is eligible now; no production clock seam
2026-10-01 02:19:01 +02:00
image-bytes.mjs
Image store: never chmod a room directory; refuse when setgid is not inherited
2026-11-08 09:27:40 +00:00
path-within.test.mjs
Linux path fixes: containment by path.relative, hostile-cursor test, verify prerequisites ( #77 )
2026-11-12 12:55:35 +00:00
persona-chat-images.test.mjs
Image store: room directory must share the Persona directory's group; never create the Persona directory
2026-11-08 09:29:59 +00:00
persona-feedback-cli.test.mjs
Resolve CultLib via VOIDBOT_CULTLIB_ROOT in tests; test formerly indexed stores ( #47 )
2026-11-11 05:01:33 +00:00
persona-feedback-idunn-health.test.mjs
Resolve CultLib via VOIDBOT_CULTLIB_ROOT in tests; test formerly indexed stores ( #47 )
2026-11-11 05:01:33 +00:00
persona-matrix-mouth-fetch.test.mjs
Mouth: fetch one named event's image for its Persona, store it, post an inert receipt (CHAT_FETCH, off by default) ( #73 )
2026-11-12 00:59:28 +00:00
persona-matrix-mouth-follow.test.mjs
Mouth: follow upgrades only a plain basis; @room keeps room ( #76 )
2026-11-12 12:28:39 +00:00
persona-matrix-mouth-open-direct.test.mjs
persona mouth: open a direct room for a Persona; answer unknown kinds loudly ( #39 )
2026-11-10 18:35:51 +00:00
persona-matrix-mouth-runtime.test.mjs
Mouth: fetch one named event's image for its Persona, store it, post an inert receipt (CHAT_FETCH, off by default) ( #73 )
2026-11-12 00:59:28 +00:00
persona-matrix-mouth-send-gate.test.mjs
send gate: re-check the brake after the gate wait, before the PUT
2026-11-03 10:37:22 +00:00
persona-matrix-mouth.test.mjs
Mouth: id shape on every delivery field, mentions bounded in bytes, round cap counts every target GET ( #72 )
2026-11-11 21:06:13 +00:00
shared-value-stores.test.mjs
Resolve CultLib via VOIDBOT_CULTLIB_ROOT in tests; test formerly indexed stores ( #47 )
2026-11-11 05:01:33 +00:00
watchdog-notice.test.mjs
Resolve CultLib via VOIDBOT_CULTLIB_ROOT in tests; test formerly indexed stores ( #47 )
2026-11-11 05:01:33 +00:00