Hoppa till huvudinnehåll
Petanque Life

Governance Bodies & Commissions

F01.02 8 features Levererad

I korthet

Governance Bodies & Commissions runs the formal organs of a federation — disciplinary commissions, umpire commissions, medical, selection and any other standing or ad-hoc committee — including their typed mandates, members, term limits, rotation rules, conflict-of-interest declarations and meeting decisions with auto-numbered references, all backed by an immutable, tenant-isolated governance audit log queryable by action taxonomy.

Så fungerar det

The domain is built around three documents. A Commission carries a typed scope (CommissionScope: jurisdiction × authority_level × authority_areas × reports_to) and binds members through CommissionMembership entries that hold a role (chair, deputy, member, secretary), term dates and rotation metadata. A Meeting hangs underneath with agenda items, minutes and Decision children.

A GovernanceAuditLog records every mutating call as an append-only row scoped strictly to the tenant. The /commissions router exposes CRUD plus filters on type/status/jurisdiction/authority_level and a /commissions/{id}/rotation-report that combines term_limit_months, max_consecutive_terms, rotation_policy and a 120-day gap-reset rule to surface members whose mandate is about to expire or who are blocked from another consecutive term. Member CRUD includes structured ConflictOfInterestDeclaration objects with a typed lifecycle (declared → acknowledged → recused → resolved); /commissions/{id}/conflicts lists across the commission so the chair can vet upcoming votes.

Meetings move through their agenda; when a Decision is created it starts as draft, transitions through adopted → published → rescinded, captures the vote split (for/against/abstain), and is auto-stamped with a {YYYY}-{NNN} reference number. Once published, the decision is queryable across all meetings via /meetings/published/decisions, which is what feeds the public regulatory feed and ties back to F01.04 rule changes. Every write — commission create/update, member add/remove, conflict declaration, decision lifecycle transition — appends a GovernanceAuditLog row that the read-only /governance/audit router exposes with filters and a /governance/audit/actions taxonomy.

Tenant isolation is enforced at the model layer: an FFPJP secretary can never see SBF audit traffic, even via the audit router.

Centrala funktioner

  • Maintain a typed registry of commissions with explicit jurisdiction, authority level and reporting line.
  • Manage commission membership with rotation policy, term limits and consecutive-term tracking.
  • Run meetings end-to-end: agenda, minutes, decisions and structured vote summaries.
  • Publish decisions with auto-numbered references and surface them across the federation.
  • Capture and resolve conflict-of-interest declarations through a typed four-state lifecycle.
  • Audit every governance action in an immutable, tenant-scoped log queryable by action taxonomy.

I praktiken

On a Wednesday afternoon the chair of the SBF disciplinary commission opens a scheduled meeting. Three agenda items are queued, one of which concerns a club where a sitting member has a declared conflict. The chair opens /commissions/{id}/conflicts, sees the declaration in state acknowledged, and uses the member-scoped endpoint to transition it to recused for this specific item.

Voting happens live: 4 for, 0 against, 1 abstain (the recused member). The decision is saved as draft, then adopted, then published — auto-stamped 2026-027. A GovernanceAuditLog row is written for every step.

Two days later the federation president pulls the rotation report and sees that the chair's own term expires in 87 days, with no consecutive-term renewal allowed.

Features i detta subsystem

8
ID Status Funktioner
F01.02.01 Levererad Commission/committee registry (disciplinary, umpire, medical, selection, etc.) — /commissions CRUD + filter på typ/status/jurisdiction/authority_level ✅ PL-F0102a
F01.02.02 Levererad Commission membership management (chair, members, terms) — add/update/remove + expiring-terms ✅ PL-F0102a
F01.02.03 Levererad Commission mandate and scope definition — strukturerad CommissionScope (jurisdiction × authority_level × authority_areas × reports_to) med org_node-invariant ✅ PL-F0102a
F01.02.04 Levererad Meeting management (agenda, minutes, decisions) — /meetings CRUD + agenda/minutes/decisions-sub-endpoints ✅ PL-F0102a
F01.02.05 Levererad Decision tracking and publication — lifecycle draft → adopted → published → rescinded, röstningssammanfattning, auto-genererat {YYYY}-{NNN}-referensnummer och tvärmötes-listning på /meetings/published/decisions ✅ PL-F0102b
F01.02.06 Levererad Term limits and rotation tracking — term_limit_months, max_consecutive_terms, rotation_policy, konsekutiv-term med 120-dagars gap-reset och /commissions/{id}/rotation-report ✅ PL-F0102b
F01.02.07 Levererad Conflict of interest declarations — strukturerad ConflictOfInterestDeclaration (typ × status) på ledamot, /commissions/{id}/conflicts listning + member-scoped CRUD med lifecycle-invarianter ✅ PL-F0102b
F01.02.08 Levererad Audit trail on all governance actions — append-only GovernanceAuditLog skrivs från samtliga muterande endpoints, read-only /governance/audit-router med filter och /actions-taxonomi, tenant-isolerad ✅ PL-F0102b