# GovOPlaN Approvals **Repository type:** module (domain). `govoplan-approvals` owns generic approval and sign-off chains with trusted delegation, separation of duties, escalation, and signature references. It persists immutable request revisions, append-only decisions and lifecycle evidence, exposes a tenant-scoped API and WebUI, and provides the `approvals.requests` capability for exact-subject approval checks. ## Initial Ownership - approval requests - sign-off chains - delegation and substitution facts - four-eyes constraints - escalation state - signature references ## Boundaries This module does not own: - module-specific business decisions - workflow orchestration engine - identity and RBAC primitives Detailed boundary notes are in [docs/APPROVALS_DOMAIN_BOUNDARY.md](docs/APPROVALS_DOMAIN_BOUNDARY.md). Tenant approval administrators manage reusable chains under `Admin > Tenant > Approval templates`. Template edits and publication create immutable revisions with content hashes and actor provenance. The history API and UI compare any two revisions as structured JSON-pointer changes. The request workspace also exposes due-step escalation to approval administrators; the server rechecks the due timestamp and request revision before recording the transition. Template API additions: - `GET /api/v1/approvals/templates/{template_id}/history` - `GET /api/v1/approvals/templates/{template_id}/compare` ## Integrations Optional integrations: - workflow engine - audit - files - notifications ## Development Install From the core checkout: ```bash cd /mnt/DATA/git/govoplan-core ./.venv/bin/python -m pip install -e ../govoplan-approvals ``` Focused runtime verification: ```bash cd /mnt/DATA/git/govoplan-approvals PYTHONPATH=src:/mnt/DATA/git/govoplan-core/src /mnt/DATA/git/govoplan-core/.venv/bin/python -m unittest discover -s tests ``` ## 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/approvals`. 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-approvals --apply ``` ## Git-source WebUI package The repository root exposes `@govoplan/approvals-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/approvals-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.