Files
govoplan-committee/README.md
T
zemion 7c2ec4ec17
Module Package Release / publish-packages (push) Successful in 11s
fix(packaging): expose immutable WebUI Git package for v0.1.21
2026-09-08 02:06:08 +02:00

121 lines
4.8 KiB
Markdown

# GovOPlaN Committee
<!-- govoplan-repository-type:start -->
**Repository type:** module (domain).
<!-- govoplan-repository-type:end -->
`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 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. 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.
When Voting is installed, Committee creates and follows a governed
`voting.ballots` record while retaining only its meeting/agendum reference and
verified aggregate outcome. Voting owns the frozen electorate, casting,
tallying, certification, challenge, and annulment lifecycle. The older
`committee.ballot_finalizer` / `committee.ballot_adapter.<provider>` path
remains a 0.1 compatibility boundary for existing external integrations;
individual provider ballots never enter Committee persistence.
## Initial Ownership
- committee bodies
- meeting agendas
- minutes
- deliberation/vote context and formal decision references
- votes
- follow-up assignments
## Boundaries
This module does not own:
- generic task execution
- document storage
- calendar event storage
- the generic formal decision lifecycle; a future Decisions provider owns
authority, facts/rules, reasoning, effects, review, correction, and revocation
Detailed boundary notes are in [docs/COMMITTEE_DOMAIN_BOUNDARY.md](docs/COMMITTEE_DOMAIN_BOUNDARY.md).
## Integrations
Expected optional integrations:
- calendar
- docs
- files
- tasks
- workflow
- approvals
- voting
## Development Install
From the core checkout:
```bash
cd /mnt/DATA/git/govoplan-core
./.venv/bin/python -m pip install -e ../govoplan-committee
```
Focused manifest verification:
```bash
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 0.1
compatibility 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`.
From the core checkout, labels can be synced once a local `GITEA_TOKEN` is available:
```bash
cd /mnt/DATA/git/govoplan-core
/mnt/DATA/git/govoplan/tools/gitea/gitea-sync-labels.py --root /mnt/DATA/git/govoplan-committee --apply
```
## Git-source WebUI package
The repository root exposes `@govoplan/committee-webui` for Git-tagged release
dependencies. It mirrors the owning `webui/package.json` version, public
TypeScript/CSS exports and peer requirements, with entry paths under
`webui/src`. Consumers provide the shared Core/React peers; the facade runs no
development or install scripts. The source archive contains `webui/src`, this
README and any repository license file. Run module development checks from `webui/`; Python
installation remains governed by `pyproject.toml`.
Das Repository stellt `@govoplan/committee-webui` am Wurzelpfad für versionierte
Git-Abhängigkeiten bereit. Version, öffentliche TypeScript-/CSS-Exporte und
Peer-Anforderungen entsprechen `webui/package.json`; die Einstiegspfade liegen
unter `webui/src`. Gemeinsame Core-/React-Peers stellt die einbindende Anwendung
bereit. Die Fassade führt keine Entwicklungs- oder Installationsskripte aus.
Entwicklungsprüfungen bleiben in `webui/`, die Python-Installation weiterhin in
`pyproject.toml` definiert.