databrickslabs / databrickslabs/ontos
[Feature]: Data Product Certification (end-to-end)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 212
- Forks
- 71
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 43
Description
Parent PRD
#86
What to build
A thin vertical slice delivering certification for Data Products end-to-end: schema, API, UI, and data migration.
Add certification columns to the data_products table (certification_level, inherited_certification_level, certified_at, certified_by, certification_expires_at, certification_notes). Create a CertificationInfo Pydantic model in models/lifecycle.py. Implement POST /api/data-products/{id}/certify (with level + notes in body) and DELETE /api/data-products/{id}/certify endpoints, gated to Steward/Admin roles. Migrate existing status="certified" rows to status="active" + top certification level. Build a CertificationBadge component (shield icon + level name from config table, tooltip with details). Add a certification section to the product detail page and an inline cert badge in the product list table.
Refer to the parent PRD "Dimension 2: Certification" section for full design.
Acceptance criteria
- Alembic migration adds certification columns to
data_products - Existing
status="certified"rows migrated tostatus="active"+certification_levelset to top configured level -
CertificationInfoPydantic model with validation (level must reference existingcertification_levels.level_order) -
POST /api/data-products/{id}/certifysets certification fields, requires Steward/Admin role -
DELETE /api/data-products/{id}/certifyclears certification fields, requires Steward/Admin role - Non-Steward/Admin users receive 403 on certify/decertify
-
CertificationBadgecomponent renders level name + icon from config, handles uncertified (null) gracefully - Product detail page shows certification section (level badge, certified_by, certified_at, expires_at, notes)
- Product list table shows inline certification badge
- Unit tests for certify/decertify logic, RBAC enforcement, level validation
- Component tests for CertificationBadge
Blocked by
- Blocked by #87 (certification levels config table must exist)
- Blocked by #88 (clean status enum without CERTIFIED value)
User stories addressed
From PRD #86:
- User story 1: Steward certifies a product at a specific level
- User story 20: Only Stewards and Admins can certify
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 by reading parent PRD #86 and resolving blockers #87 and #88 before working on the end-to-end slice. Then trace models/lifecycle.py, the data_products migration, the certify/decertify API endpoints, and the product detail/list UI entry points. Done means all listed acceptance criteria pass, including migration, RBAC, validation, API tests, and CertificationBadge component tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, database, frontend, full-stack
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100