Files
govoplan-committee/docs/COMMITTEE_DOMAIN_BOUNDARY.md
T

97 lines
4.0 KiB
Markdown

# Committee Domain Boundary
## Purpose
Committee, board, council, and senate workflows for meetings, agendas, minutes, decisions, voting, and follow-up tasks.
## Owns
- committee bodies
- meeting agendas
- minutes
- deliberation and vote context plus references to formal decision records
- votes
- follow-up assignments
## Does Not Own
- generic task execution
- document storage
- calendar event storage
- generic approval gates
- the cross-domain formal decision lifecycle, including authority, facts,
applicable rules, reasoning, effects, review, correction, and revocation
## Integration Candidates
- calendar
- docs
- files
- tasks
- workflow
- approvals
## Current Persistent Backend Slice
The current repository state is intentionally bounded:
- module manifest and entry point
- tenant-level permission definitions
- manager and viewer role templates
- documentation topic and architecture/evidence declaration
- `committee.workspace` and `committee.decision_path` interfaces and capabilities
- tenant-scoped body, meeting, agenda-item, vote-result, and minute persistence
- immutable revisions, OCC, replay-safe lifecycle events, migrations, uninstall
guards, API routes, and tenant summary counts
- a governed assembler for one formal committee outcome
- a protected local Decision projection when the optional Decisions provider is
absent
- a three-pane `/committee` workspace for bodies, meetings, agendas, governed
vote results, and minutes
- a provider-neutral ballot-finalization contract for external and secret
ballots that retains aggregate evidence rather than individual ballots
- Gitea issue workflow templates
- manifest and decision reconstruction contract tests
The decision path accepts or resolves one effective
Mandate covering the deciding unit, function, and jurisdiction; requires
approval, fact evidence, versioned legal bases, operative
result, and reasoning, and emits the shared formal Decision contract. If a
Decision registry is installed it records there; otherwise the result is
retained in the Committee-owned fallback projection and is available only
through the protected-read permission.
The workspace records the result of a governed vote rather than becoming a
general remote-balloting system. Local closure requires unique choices,
eligible/cast counts, matching result counts, an explicit quorum result, an
Approval reference, and evidence. Decided agenda items require a formal
Decision reference, and meetings cannot close while agenda items remain
unfinished. Accepted or corrected minutes require a Records reference,
Approval, and evidence.
A provider-bound vote is finalized only through
`committee.ballot_adapter.<provider>`. The adapter receives tenant, vote,
choices, eligible count, external ballot reference, request time, and
idempotency key. Its result must cover exactly the configured choices, sum to
the cast count, stay within eligibility, carry same-tenant evidence, and supply
a lowercase SHA-256 result digest plus provider receipt. Committee persists
that aggregate and does not persist voter choices or provider credentials.
Database restore is the module's semantic recovery unit. Calendar events,
documents, records, tasks, approvals, and externally conducted votes remain
recoverable through their owning providers and are linked by stable references.
## Decision Reconstruction Proof
`tests/test_decision_path.py` proves effective-time authority, organization,
function, and jurisdiction coverage, approval, legal basis/evidence versions, requested effects,
information governance, responsible actor/automation assurance, and a protected
reconstruction payload. A vote remains
an approval reference and is not made indistinguishable from the formal
institutional outcome.
`tests/test_workspace.py` proves parent and lifecycle constraints, immutable
history, replay and stale-write rejection, tenant isolation, committed-only
events, vote/quorum evidence, adapter-only provider closure, aggregate-only
secret-ballot persistence, minutes, and the local Decision projection.