Policies: drafting, versioning & tracked acceptance #6

Closed
opened 2026-06-05 12:57:16 +00:00 by thatguygriff · 1 comment
Owner

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
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
thatguygriff added the feature label 2026-06-05 12:57:16 +00:00
Author
Owner

Closing as complete. Implemented and merged in PR #15 (Policies domain).

Closing as complete. Implemented and merged in PR #15 (Policies domain).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Unsupervised/unsupervised-scheduler#6