Repository navigation
Description
Phase 4 (audit) of design #4113 — closing kind-by-gate inventory for pkgs/id boards
Parent design: #4113 ("one signed set, one meaning — BoardGraph's gates hold at insert, projection and replication"). Design doc: files/designs/code-id-boardgraph-one-signed-set.md in the keep-the-four-repos-healthy goal workspace. Audit baseline: origin/main d9636237.
Gated on Phases 1–3 of the design: Phase 1 = #3963 + #4109 (insert gates: embed_ref validation; second-first BoardListing refused), Phase 2 = #4003 + #3964 (projection determinism: active-only attestation edges; deterministic Rules resolution), Phase 3 = #4081 (fork record in the fork board's replication set + closure). Do not start the inventory before all three land.
Scope
A kind-by-gate inventory for pkgs/id/src/boards.rs: for every BoardObject variant (Board, Rules, Forum, Thread, Post, Attachment, Membership, RoleAttestation, ModerationAction, BoardFork, Supersede, Theme, BoardListing, Tombstone), disposition each of the design's five gates, with the code site or test that proves it:
- Shape —
validate_shapeconstrains every field that carries a rule (bounds, uniqueness inside the object, text rules). - References at insert — every reference field the object carries is validated by
validate_links(existence + board scope viarequire_scoped/require_board, kind checked where a kind rule exists). List each variant's reference fields explicitly; a field with no validation is a finding, not an oversight to leave silent. - Chain / resolution posture — one of: chain head unique at insert (listings) / competing versions resolved by a stated deterministic rule (rules) / not versioned, with the reason.
- Projection effect — the variant's effect in
compose_view(andlatest_listingswhere relevant) under the active-records rule: a record contributes edges/effects only while itself active, or the deliberate exception with its reason (cf. thehas_roleexistence-based acceptance note — deliberate, documented divergences are dispositions, not findings). - Replication membership + closure — the variant's
board_ref()posture and whetherboard_object_set's closure pulls in everythingvalidate_linksneeds for a fresh graph to accept it (the Board/Theme/BoardFork dependency pattern).
Record the inventory as a table in the boards.rs module header doc (the checklist the next object kind is reviewed against), and post a summary on design #4113.
Acceptance criteria
- The inventory table is in the
boards.rsmodule header doc, covering every variant × the five gates above, each cell dispositioned (holds / fixed here / filed follow-up / deliberately different with reason). - A summary with any findings is posted on design Design: one signed set, one meaning — BoardGraph's gates hold at insert, projection and replication (pkgs/id) #4113.
- Any confirmed same-shape gap (an unvalidated reference field, an undispositioned versioned kind, a variant missing from its board's replication set) is either fixed under this issue — only if small and within one variant — or filed as a named follow-up issue linked from Design: one signed set, one meaning — BoardGraph's gates hold at insert, projection and replication (pkgs/id) #4113. Never left as a comment-only finding.
- No behaviour changes beyond the dispositions taken; existing boards tests still pass (CI).
🤖 Filed by the design architect (pass 35, 2026-11-01) as Phase 4 (audit) of design #4113.
Activity
dezren39 commentedon Nov 2, 2026
🤖 Agent note · filed as Phase 4 (audit) of design #4113
status/blockedon Phases 1–3 landing — Phase 1 = id(boards): Post embed_ref is never validated — dangling and cross-board game-post references are accepted into BoardGraph #3963 + id(boards): a second 'first' BoardListing (v1, supersedes=None) is accepted for the same host — publication state falls to the content-hash tie-break #4109, Phase 2 = id(boards): compose_view applies supersedes edges from superseded attestations — a nullified revocation still revokes #4003 + id(boards): Rules revision numbers are not unique per board — two different revision-1 rule texts coexist in one graph #3964, Phase 3 = id(boards): BoardFork records are in no board's replication set — fork provenance never replicates and replicas still report Complete #4081. Do not start the inventory before all three land.BoardObjectvariant against the five gates (shape / references at insert / chain-or-resolution posture / projection effect under the active-records rule / replication membership + closure); deliberate documented divergences (e.g. thehas_roleexistence-based acceptance note) are dispositions with reasons, not findings; a confirmed same-shape gap is fixed here only if small and within one variant, else filed as a named follow-up linked from Design: one signed set, one meaning — BoardGraph's gates hold at insert, projection and replication (pkgs/id) #4113.dezren39 commentedon Nov 2, 2026
🤖 Agent note · picked up
161 remaining items
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 5, 2026
🤖 Agent note · handed off