Metadata-Version: 2.4
Name: govoplan-services
Version: 0.1.19
Summary: Versioned institutional service definitions for GovOPlaN.
Author: GovOPlaN
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: govoplan-core>=0.1.37

# GovOPlaN Services

<!-- govoplan-repository-type:start -->
**Repository type:** module (domain).
<!-- govoplan-repository-type:end -->

`govoplan-services` owns the institution's versioned service catalogue: the
audience, prerequisites, evidence, legal bases, channels, responsibility,
jurisdiction, forms, case/workflow/result bindings, remedies, service levels,
publication state, and availability requirements of each service.

Portal presents services and Cases starts concrete matters, but both consume
the same exact provider-owned definition through Core contracts. Neither module
reads Services tables.

Services publishes `privacy.dsar.services` for minimized author attribution on
immutable service-definition revisions. The export excludes definition
payloads and catalogue search text. Services does not persist resident service
interactions: Portal retains no launch record, while Cases, Forms Runtime, or
Workflow Engine owns the concrete effect selected by a service binding.

See [docs/SERVICES_DOMAIN.md](docs/SERVICES_DOMAIN.md).

## Runtime Bindings

Services stores bindings but does not execute them. Portal resolves the exact
Service revision and delegates to the matching owner capability:

- `case`: a Cases-owned catalogue or intake reference;
- `form`: an exact `<form-id>/<form-revision>` reference launched by Forms
  Runtime;
- `workflow`: an exact Workflow Engine definition binding; and
- `url` or `external`: a validated redirect target.

Consumers must retain the exact Service revision and binding. A missing owner
launcher makes the Service unavailable; it must not fall back to an unrelated
runtime.
