Studio admin drafts/versions/publishes policies; registrants must accept the current published version of every policy. Acceptance is version-bound, so a new version must be re-accepted at the next booking.
REST: GET /policies (public current versions); admin CRUD /policies, /policies/{id}/versions, publish endpoint (manage_policies)
Acceptances written via accepted_policy_version_ids[] on POST /bookings & POST /enrollments; registration rejected unless every current version is covered
Acceptance
Publishing creates/archives versions and updates current_version_id; re-acceptance enforced after a new version; tests under tests/Unit/Policy/ passing
Studio admin drafts/versions/publishes policies; registrants must accept the current published version of every policy. Acceptance is version-bound, so a new version must be re-accepted at the next booking.
**Spec:** `docs/features/policies.md`
## Scope
- New tables `{prefix}us_policies`, `{prefix}us_policy_versions` (status draft/published/archived), `{prefix}us_policy_acceptances` (policy_version_id, polymorphic registration ref, accepted_at, ip_address)
- Domain package `src/Policy/`: `Policy`, `PolicyVersion`, `PolicyAcceptance`, repositories, `PolicyController`, `PolicyEndpoint`
- REST: `GET /policies` (public current versions); admin CRUD `/policies`, `/policies/{id}/versions`, publish endpoint (`manage_policies`)
- Acceptances written via `accepted_policy_version_ids[]` on `POST /bookings` & `POST /enrollments`; registration rejected unless every current version is covered
## Acceptance
- Publishing creates/archives versions and updates `current_version_id`; re-acceptance enforced after a new version; tests under `tests/Unit/Policy/` passing
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Studio admin drafts/versions/publishes policies; registrants must accept the current published version of every policy. Acceptance is version-bound, so a new version must be re-accepted at the next booking.
Spec:
docs/features/policies.mdScope
{prefix}us_policies,{prefix}us_policy_versions(status draft/published/archived),{prefix}us_policy_acceptances(policy_version_id, polymorphic registration ref, accepted_at, ip_address)src/Policy/:Policy,PolicyVersion,PolicyAcceptance, repositories,PolicyController,PolicyEndpointGET /policies(public current versions); admin CRUD/policies,/policies/{id}/versions, publish endpoint (manage_policies)accepted_policy_version_ids[]onPOST /bookings&POST /enrollments; registration rejected unless every current version is coveredAcceptance
current_version_id; re-acceptance enforced after a new version; tests undertests/Unit/Policy/passingClosing as complete. Implemented and merged in PR #15 (Policies domain).