Sync Repo-README from project files

2026-08-01 16:32:32 +02:00
parent 754b01902b
commit 2d865194ec
+31 -5
@@ -1,4 +1,4 @@
<!-- codex-wiki-sync:7c634261fb77c981bef55e71 --> <!-- codex-wiki-sync:d3613d8f5a1f62b4a4e55503 -->
> Mirrored from `/mnt/DATA/git/govoplan-committee/README.md`. > Mirrored from `/mnt/DATA/git/govoplan-committee/README.md`.
> Origin: `repository`. > 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. `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` The backend now exposes versioned `committee.workspace` and
capability. It combines committee meeting context with an effective Mandate, `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, including organization, function, and jurisdiction coverage, with approval,
legal bases, evidence, reasoning, and effects to create the shared legal bases, evidence, reasoning, and effects to create the shared
formal Decision contract. Mandate resolution and Decision persistence remain formal Decision contract. Mandate resolution and Decision persistence remain
optional providers. The module intentionally does not yet add HTTP routes, optional providers. If Decisions is absent, Committee retains a bounded,
database models, migrations, or WebUI navigation. 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 ## 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 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 ## 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`. Issue templates are installed under `.gitea/`, and the shared label taxonomy is copied to `docs/gitea-labels.json` with the module label `module/committee`.