From 5cb5f35dccebfc9c170588a2eb652faa804ac308 Mon Sep 17 00:00:00 2001 From: Libby Date: Thu, 5 Nov 2026 09:41:42 +0000 Subject: [PATCH] heimdall-delegation: README caveat that the cap does not bind under ballot copying Co-Authored-By: Claude Sonnet 5.5 --- packages/heimdall-delegation/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/heimdall-delegation/README.md b/packages/heimdall-delegation/README.md index bf0eca38..bfe920f6 100644 --- a/packages/heimdall-delegation/README.md +++ b/packages/heimdall-delegation/README.md @@ -27,6 +27,13 @@ any CultMesh projection. ascending originator id. A receipt's `counted` is its scaled weight and `weight - counted` is uncast; a share that rounds to zero is `Uncast(Trimmed)`. Cast + uncast = total weight. + **Caveat:** the cap binds the ledger, not influence. A delegator under an + over-cap holder can copy that holder's ballot and vote directly; the + resolver sees a direct ballot and cannot see the copying. In the Bifrost sim + (`docs/research/2026-11-05-estate-rule-sim/`, commit `5d352c6c`, Bifrost PR + #4), with full copying the cap leaves effective top-holder share unchanged + (difference +0.001 or less at every alpha), while the formal share drops. The + copy rate there is an assumption, not a measurement. - Revocation (**placeholder**): `Delegation::revoked` is `Some(time)` when revoked. A revoked delegation is inert; the resolver reads no clock and the caller owns the ledger. Each receipt carries `revoked_at`, the latest