Files
amethyst/amethyst
Claude f1241e891b fix(quartz): compaction must carry the authority-gated head, not the chain head
Findings from an independent review of this branch (a different model, per
CONTRIBUTING-WITH-AI.md). Two were real, and the first is a regression this
branch introduced.

compactControlPlane picked its per-entity head with a bare structural chain
walk, which is worse than the raw max-version it replaced. With no floor,
foldEntity anchors at the lowest-version edition carrying no `prev` — and after
a PRIOR compaction the genuine head's `prev` dangles into a trimmed epoch by
design. So a forged `version = 1, prev = null` decoy outranks a real v50→v52
chain, and because nothing in this path checks a signature it became the
entity's entire carried-forward state. A forged empty banlist would have erased
every ban at the next Refounding. Reproduced, then fixed by selecting the
owner-rooted authority-gated head — the same edition ConcordCommunityState.fold
would seat, so the new epoch starts where the old one left off, and an
unprivileged author cannot influence the choice at all.

recoverStrandedConcordCommunities derived its new ban gate with
`?.isBanned(..) == true`, which reads "not banned" when the session does not
exist yet or its first fold has not landed. The sweep runs on the revision tick,
so a banned member's own client would have hit that window on cold start and
recovered itself — the exact bypass the gate exists to stop. It now fails closed
and retries on the next sweep.

Also from the review: resolve() now warns when the ban fixpoint exhausts its
pass cap without settling, instead of silently returning a roster folded under a
mask that no longer matches its banlist; and banGate stops lowercasing the same
author three times.

Two review findings are accepted rather than fixed, and recorded on the PR: the
anchor tie-break picks the lowest rumor id before testing whether that candidate
connects (pre-existing, and changing it is consensus-affecting), and non-owner
moderators now need a resolved roster before a verb succeeds, which is the
intended fail-closed trade.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DrJhpFhhLjuDJQNkGvYMGj
2026-08-09 17:11:45 +00:00
..
2026-07-28 10:52:38 -04:00