133bceff.
Registry-installed artifacts were verified after publication:
Changes
- JWT and complete PEM private-key detection run by default.
- Context-labeled US routing numbers and National Provider Identifiers run by default. They detect lexical shapes without checksum or registry validation.
- Canonical UUID detection is opt-in through
detect_uuid: true. - German locale routing adds seven German entity types.
- Rust and Python runtime capability metadata describes supported entities, default detection, locale additions, and configuration needed to activate scoped detectors.
- Package versions are aligned at 0.4.0 across Rust, Python, Node.js, and WASM.
Intentional locale-validation change
Explicit locales are now checked against the runtime registry. The recognized aliases arede, de-DE, de_DE, en-US, and fr, compared after trimming
and with ASCII case-insensitive matching. German aliases activate German
detectors; en-US and fr retain base detection. Omitting the locale also runs
base detection. UUID activation remains independent of locale.
Previously, arbitrary nonempty locale strings were accepted and silently used
base detection. In 0.4.0, unsupported explicit locales raise the binding’s
existing configuration error. Update callers that supplied placeholder or
unrecognized locale strings before adopting 0.4.0. The
compatibility policy governs subsequent 0.4.x changes.
Python adapter dependency and NPI selection
The Core Python binding (datafog_core) and the higher-level datafog-python
package have separate release lifecycles. The capability-aware adapter is
tracked in datafog-python draft PR #179,
which targets datafog-core>=0.4.0,<0.5. The published Core wheel has passed the 352-check local adapter/contract
suite. The adapter draft remains unreleased and must complete its hosted checks
and separate release review before it is merged or released. Core availability alone does not release the higher-level adapter.
A reviewed compatibility limitation remains in the legacy Python adapter.
Core can return both PHONE and NPI for the same numeric span. Legacy
processing resolves overlaps before filtering selected labels and gives
PHONE priority, so selecting only NPI through that legacy path can return
no finding. Default legacy redaction still protects the number. The native
datafog.v5.scan path retains the NPI finding, and native transformations can
select NPI explicitly. PR #179 tests this behavior while preserving the
legacy overlap and selection rules.
Release readiness gate
The following procedure remains applicable to future releases. The 0.4.0 registry verification results are recorded above. Record artifact paths, checksums, tested commits, commands, and results in each release review.- Land the focused detector and capability changes; select the exact candidate
commit. Confirm all package and lockfile versions with
python3 scripts/check-release.py python. - Run Rust formatting, Clippy, and workspace tests; build and test the installed Python wheel and source distribution, Node package, and real-browser WASM package. Verify Rust and Python capabilities agree and metadata matches actual detector activation across runtimes.
- Validate Mintlify content and links against the same candidate. Confirm the generated capabilities inventory is current.
- Build a candidate Python wheel from that commit. Install that local artifact
into an isolated environment for the downstream
datafog-pythoncheckout; record the wheel hash and both repository commits. Run its adapter, public API, German detector, transformation, structured-data, and regression suites. Test failure handling for unsupported locales and activation based on capability metadata. Fix and repeat against a newly identified artifact if integration fails. - Review downstream results and confirm the intended minimum Core dependency
and release order in
datafog-python. Downstream integration remains a required gate; Core’s installed-wheel tests do not replace it. - After approval of the verified candidate, publish the runtime packages from the same release commit using the documented release workflows. Creating a tag or invoking a publish workflow is a separate release action.
- Verify registry artifacts by installing the published versions before
announcing availability. Complete any dependent
datafog-pythonrelease only after its Core dependency is available.