v0.12.0 — governance tightening
Highlights
- Security fix:
RequiredFilterCheckernow rejects tautological predicates. PreviouslyWHERE tenant_id = tenant_idsatisfied a blockingrequired_filterrule — a real bypass of the governance contract. Covers=,!=,<,<=,>,>=,LIKE,ILIKE,IS,IN,BETWEENself-reference variants. - Governance staleness detection: optional
last_reviewed: date | Nonefield onDomainandMetricImpact, plusfind_stale_reviews()andDataContract.find_stale()to flag artefacts whose review is missing or older than a threshold. - Two new example apps showcasing orthogonal governance archetypes:
examples/growth_agent/— experimentation / leading indicators / A/B-verified impactsexamples/ops_agent/— SRE reliability / PII-sensitive / real-time dashboards
Migration
- Review queries using self-referential predicates like
col = col— these are now rejected by blockingrequired_filterrules. - Adopting
last_reviewedis optional. If you add it to some entries, note that missing timestamps are reported as stale by default; filter withf.age_days is not Noneto grandfather in existing artefacts during rollout.
See CHANGELOG.md for the full release notes.