Sync Repo-README from project files
+31
-5
@@ -1,4 +1,4 @@
|
||||
<!-- codex-wiki-sync:7c634261fb77c981bef55e71 -->
|
||||
<!-- codex-wiki-sync:d3613d8f5a1f62b4a4e55503 -->
|
||||
|
||||
> Mirrored from `/mnt/DATA/git/govoplan-committee/README.md`.
|
||||
> Origin: `repository`.
|
||||
@@ -13,13 +13,25 @@
|
||||
|
||||
`govoplan-committee` is the GovOPlaN module for committee, board, council, and senate workflows for meetings, agendas, minutes, deliberation, voting, formal decision references, and follow-up tasks.
|
||||
|
||||
The first headless slice exposes a versioned `committee.decision_path`
|
||||
capability. It combines committee meeting context with an effective Mandate,
|
||||
The backend now exposes versioned `committee.workspace` and
|
||||
`committee.decision_path` capabilities. The workspace persists immutable,
|
||||
OCC-guarded revisions for bodies, meetings, agenda items, governed vote
|
||||
results, and minutes, with replay-safe lifecycle events. The decision path
|
||||
combines that committee context with an effective Mandate,
|
||||
including organization, function, and jurisdiction coverage, with approval,
|
||||
legal bases, evidence, reasoning, and effects to create the shared
|
||||
formal Decision contract. Mandate resolution and Decision persistence remain
|
||||
optional providers. The module intentionally does not yet add HTTP routes,
|
||||
database models, migrations, or WebUI navigation.
|
||||
optional providers. If Decisions is absent, Committee retains a bounded,
|
||||
protected local Decision projection so the outcome remains reconstructable.
|
||||
The `/committee` WebUI provides the body, meeting, agenda, vote, and minutes
|
||||
workspace using the same immutable revisions and lifecycle guards as the API.
|
||||
|
||||
`committee.ballot_finalizer` delegates provider-bound external or secret
|
||||
ballots to `committee.ballot_adapter.<provider>` capabilities. Committee
|
||||
validates the exact choices, eligible/cast totals, tenant evidence, receipt,
|
||||
and result hash, then stores only the verified aggregate. Individual ballots
|
||||
never enter Committee persistence, and a provider-bound vote cannot be closed
|
||||
through the generic workspace endpoint.
|
||||
|
||||
## Initial Ownership
|
||||
|
||||
@@ -69,6 +81,20 @@ cd /mnt/DATA/git/govoplan-committee
|
||||
PYTHONPATH=src:/mnt/DATA/git/govoplan-core/src /mnt/DATA/git/govoplan-core/.venv/bin/python -m unittest discover -s tests
|
||||
```
|
||||
|
||||
## API And Recovery
|
||||
|
||||
`/api/v1/committee/workspace/{body|meeting|agenda_item|vote|minute}` supports
|
||||
bounded list/read/write and immutable history. Writes require an idempotency
|
||||
key and expected revision after creation. Protected local Decision projections
|
||||
use a separate read permission. Database restore is the semantic recovery unit;
|
||||
linked Calendar, Files, Records, Tasks, Approvals, and Decisions objects retain
|
||||
their own recovery responsibility.
|
||||
|
||||
`POST /api/v1/committee/workspace/vote/{vote_id}/finalize-provider` is the
|
||||
separate effect boundary for an installed ballot adapter. It requires the
|
||||
`committee:ballot:finalize` permission and preserves provider receipt/hash and
|
||||
evidence without exposing or persisting individual votes.
|
||||
|
||||
## Gitea Workflow
|
||||
|
||||
Issue templates are installed under `.gitea/`, and the shared label taxonomy is copied to `docs/gitea-labels.json` with the module label `module/committee`.
|
||||
|
||||
Reference in New Issue
Block a user