databrickslabs / databrickslabs/ontos
Compliance Templates — Slice 5: blocking publish enforcement
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 212
- Forks
- 71
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 43
Description
Parent PRD
#676
What to build
Turn the completeness validator (#710) into blocking enforcement at publish, while keeping routine edits frictionless. Wire the check explicitly into the publish path, next to the existing inline validation in data_products_manager.publish_product() — which raises ValueError that the route converts to HTTP 400 (the symmetry model). On failure, publication is refused with the list of missing mandatory fields; the owner fixes them and retries. Editing unrelated product fields must never be blocked by pending compliance fields.
Single on_publish enforcement point in v1; no per-field enforcement knob. See PRD Enforcement and Integration.
Acceptance criteria
- Publishing a product with unmet mandatory compliance fields is refused
- The refusal surfaces the explicit list of missing mandatory fields
- Fixing the fields and retrying allows publication to proceed
- Products that pass completeness publish normally
- Routine (unrelated) product edits are never blocked by pending compliance fields
- Enforcement is wired at the publish call site next to the existing validation (ValueError → HTTP 400 pattern)
Blocked by
- Blocked by #710
User stories addressed
- User story 20
- User story 21
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with blocked issue #710, then inspect data_products_manager.publish_product() and the route that converts ValueError to HTTP 400. Verify the completeness check is enforced only at the publish call site, while unrelated edits remain unaffected. Done means incomplete products are refused with the missing-field list, corrected products publish, and complete products retain normal behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100