release/0.5.0 — CIRPASS-2 reference structure v1.3.0 + UNTP 0.7.0 alignment#8
Merged
Conversation
…0 alignment End-to-end implementation of the CIRPASS-2 migration plan (docs/plans/CIRPASS_2_MIGRATION.md, Phases 0–9). Adds the second parallel schema family alongside UNTP DPP, completes the UNTP 0.7.0 alignment, and stages the 0.5.0 Preview release prep. CIRPASS-2 (Phases 0–7): - New SchemaFamily.CIRPASS family with v1.3.0 registered as a first- class entry. Auto-detection routes via @context and shape signatures; --target {auto,untp,cirpass} CLI flag plus DET001 family-mismatch diagnostic + EXIT_FAMILY_MISMATCH (3) exit code. - 20 Pydantic models under dppvalidator.models.cirpass.v1_3.* covering every required field of the CIRPASS reference schema. - 11 semantic rules under validators/rules/cirpass_v1_3/ across 4 prefixes (ACT, REL, SOC, LCA) covering every axiom in the v1.9.x EUDPP module specs. - Cross-family forward + reverse compat shims at compat/ with 5 MAP00X warning codes and a 15-row M01-M15 declarative step table. - CIRPASSJsonLDExporter accepting both native CIRPASS and UNTP-shimmed inputs; EUDPP exporter rebased onto v1.9.1 namespaces with EUDPP_CONTEXT_URL deprecated via PEP 562. - migrate --to {untp-0.7,cirpass-1.3} generalises the migrate command with --default-language for LocalisedText wrapping. - 6 EUDPP v1.9.x ontology TTLs vendored, every IRI rebased onto the canonical https://w3id.org/eudpp# fragment namespace (ADR 0002). - Six-code CLI exit surface formalised at module level (EXIT_VALID/INVALID/ERROR/FAMILY_MISMATCH/BLOCKING_WARNINGS/ IO_ERROR), documented at docs/reference/cli/exit-codes.md (ADR 0005). Plugins (Phase 7): - Textile v2 profile built-in (--profile textile-v2): 7 rules TXT001-TXT007 including TXT006 recycled-content disclosure and TXT007 repair-info (both new in v2). The legacy textile-v1 profile remains available; both ship as TEXTILE_PROFILES registry entries (ADR 0004). - Tyres GPL plugin under plugins/tyres/ (dppvalidator-tyres==0.1.0, Pre-1.0 / Experimental): 4 GDSO declaration models (Birth v0.9, Collection v0.1, Retread v0.1, Recycling v0.1) + TyreLifecycleHistory aggregate enforcing UUID-chain / chronological-order / single-Recycling invariants. 8 TYR-coded validators auto-registered via entry-points (ADR 0003). - Plugin license isolation enforced via tools/check_imports.py (AST-walks the core source tree; fails on any import from plugins/* — R8 mitigation). UNTP 0.7.0 alignment (Phase 8 polish + Phase 9 BLOCKER fixes): - DEFAULT_VERSIONS[UNTP] flipped from 0.6.1 to 0.7.0 (Phase 9.1). v0.6.x remains supported via auto-detection and the v0.6 -> v0.7 upgrade shim (compat/upgrade_0_6_to_0_7.py). - D1 BLOCKER fix (Phase 9.7): BitstringStatusListEntry.statusListIndex is now int | None with ge=0; new before-validator transparently coerces numeric strings (whitespace and leading-zero tolerant) for v0.6 fixture back-compat. Non-breaking. - D2 BLOCKER fix (Phase 9.8): PartyRoleEnum acceptance gradient documented + new SCHEMA_STRICT_ROLES constant + new advisory rule PRT001 surfaces the gap when payloads use one of the 14 wider values. New ValidationEngine(strict_role_enum=True) opt-in upgrades PRT001 from info to error. CIRPASS reverse-shim mapping fidelity preserved. Non-breaking. - 3-tier alignment guard test (Phase 9.9): tests/unit/test_v07_model_schema_alignment.py registers the full Phase 8.9 drift baseline (12 tests across strict / drift-watch / compat tiers), forcing every future PR widening drift to update the registered baseline atomically. - 3 deprecation surfaces activated for Phase 10 removal (Phase 9.4): bare-string SCHEMA_REGISTRY[version] lookup, is_dpp_document() alias, EUDPP_CONTEXT_URL legacy URL. Polish (Phase 8.5-8.6): - Centralised cross-CLI _load_input helper at cli/_io.py. - Centralised UNTP-CIRPASS shim helpers at compat/_shared.py and rules/cirpass_v1_3/_helpers.py. - Removed 6 dead pre-Phase-2 detection aliases. - Authored 2 missing error-doc pages (TXT006, TXT007). Tests: - 2525 passed / 36 skipped (+57 new tests vs the 0.4.0 baseline of 2468). - Coverage 92.04% (effectively flat). - 101/101 cross-version regression baseline (Phase 9.11 release- gate command). Documentation: - New CHANGELOG.md 0.5.0 entry (family-keyed: CIRPASS-2, UNTP, Plugins; Bug fixes; Deprecations; Cross-version compatibility; Known limitations referencing all 27 Phase 8.9 drift items; Migration guide). - New concept doc cirpass-2-alignment.md, user-facing guide migrate-untp-to-cirpass.md, and reference/cirpass/ section auto-generated via mkdocstrings. - Two new ADRs (0004 — textile v2 built-in; 0005 — six-code CLI exit surface) plus two refreshed earlier ADRs. Compatibility constraints honoured throughout (Phase 9 plan addendum): v0.6.0 / v0.6.1 fixtures parse, validate, and upgrade without regression; CIRPASS v1.3.0 round-trips remain bit-stable; mkdocs build --strict, ruff check, ruff format --check, ty check all clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bump pyproject.toml version to 0.5.0 (Preview). The release ships CIRPASS-2 reference structure v1.3.0 support, completes UNTP 0.7.0 alignment, and activates the Phase 10 deprecation surfaces. Tag-triggered release pipeline (.github/workflows/release.yml) will build, publish to TestPyPI, smoke-test, then publish to PyPI on push of tag v0.5.0. See CHANGELOG.md and docs/plans/CIRPASS_2_MIGRATION.md Phase 9 status block for the full release notes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
matbmeijer
added a commit
that referenced
this pull request
May 9, 2026
Update Phase 9 status block with the release-cut state — develop advanced through commits 290e303 + a8ea0c0; release/0.5.0 branch cut and pushed; PR #8 open with 36 CI checks running. Records the final manual tag step the release manager runs after PR merge. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
dppvalidator 0.5.0 (Preview) — adds end-to-end CIRPASS-2 reference structure v1.3.0 support alongside UNTP DPP 0.6.x / 0.7.0; ships the cross-family forward / reverse shims, the EUDPP v1.9.x ontology rebase, two pilot profiles (Textile v2 built-in, Tyres GPL plugin), and a six-code CLI exit surface.
End-to-end implementation log: docs/plans/CIRPASS_2_MIGRATION.md (Phases 0–9).
Full release notes: CHANGELOG.md — family-keyed sections (CIRPASS-2, UNTP, Plugins), Bug fixes, Deprecations, Cross-version compatibility, Known limitations referencing all 27 Phase 8.9 drift items, Migration guide.
Highlights
SchemaFamily.CIRPASS); 20 Pydantic models; 11 semantic rules across 4 prefixes (ACT/REL/SOC/LCA); cross-family forward + reverse shims with 5MAP00Xwarning codes; CIRPASS-JSONLD exporter.https://w3id.org/eudpp#fragment namespace per ADR 0002.BitstringStatusListEntry.statusListIndexis nowint | Nonewithge=0; transparent v0.6 numeric-string back-compat coercion. Non-breaking.PartyRoleEnumdocumented dual-tier acceptance gradient + newPRT001advisory rule + opt-inValidationEngine(strict_role_enum=True). Preserves CIRPASS reverse-shim mapping fidelity. Non-breaking.SCHEMA_REGISTRY[]lookup,is_dpp_document()alias,EUDPP_CONTEXT_URL.dppvalidator-tyres==0.1.0, Pre-1.0); plugin license-isolation gate (tools/check_imports.py).Test plan
uv run pytest tests/— 2525 passed / 36 skipped (+57 new tests vs 0.4.0)uv run ruff check src/ tests/— cleanuv run ruff format --check src/ tests/— cleanuv run ty check src/— cleanuv run --group docs mkdocs build --strict— cleanuv run python scripts/check_error_docs.py— 96/96 documented + nav-wireduv run python scripts/smoke_test.py— 96/97 passed (1 skipped)uv run pytest tests/integration/test_version_matrix.py tests/integration/test_compat_roundtrip.py tests/integration/test_round_trip_untp_cirpass.py tests/integration/test_cross_family_isolation.py tests/unit/test_engine_extended.py— 101/101import dppvalidatordoes not eager-loadmodels.cirpassCompatibility
Release pipeline
Tag
v0.5.0after merge →.github/workflows/release.ymlbuilds, publishes to TestPyPI, smoke-tests, then publishes to PyPI, creates a GitHub Release with SBOM, and emits SLSA provenance.🤖 Generated with Claude Code