src/communities.rs:
- Error looks like empty.
room_json fills moderators with unwrap_or_default() (~:1384), so a persist error and "no moderator appointed" both come back as []. Ask: fail the read, or return moderators_readable: false.
- No way to appoint a room moderator. Persist's appointed set is founder-rooted
delegates_to scoped moderate, and the FSD says moderators "keep using duty conferral". The only conferral route, /v1/accord/duty/*, is rooted in the accord, so it's a different authority. Ask: a founder-rooted appoint/remove route (governed by the room's consensus_protocol), or name the intended one.
- Room rows have no envelope. FSD §1 rule 8 says every list route carries each row's envelope (subject, attester, cohort_scope, dimension, consent scope).
room_json has none, so roster rows can't carry the receipt every other signed row gets.
Found by CIRISClient's communities card (CSD-102/103, branch feat/communities), read against origin/main 046e1b3.
🤖 Generated with Claude Code
src/communities.rs:room_jsonfillsmoderatorswithunwrap_or_default()(~:1384), so a persist error and "no moderator appointed" both come back as[]. Ask: fail the read, or returnmoderators_readable: false.delegates_toscopedmoderate, and the FSD says moderators "keep using duty conferral". The only conferral route,/v1/accord/duty/*, is rooted in the accord, so it's a different authority. Ask: a founder-rooted appoint/remove route (governed by the room'sconsensus_protocol), or name the intended one.room_jsonhas none, so roster rows can't carry the receipt every other signed row gets.Found by CIRISClient's communities card (CSD-102/103, branch
feat/communities), read against origin/main 046e1b3.🤖 Generated with Claude Code