Name every boundary
Assign each column a normalized type and one of five roles, then separately declare target, identity, and time names.
Inspect column schemaPaid local software · v1.0.0 · Private delivery
Target-Blind Feature Freezer turns a strict, values-free column schema and an explicit selection policy into a deterministic candidate-feature contract, ordered manifest, exclusion ledger, and checksum set.
Already enforcing the same pre-target boundary with a feature store, schema contract, model signature, or reviewed internal gate? Keep it. This package is for teams that need a small standalone, values-free contract and retained exclusion evidence. No account is required to run it; the private implementation is not published to GitHub.
The schema must declare data_values_present: false; unknown fields and embedded row samples are rejected.
Target, identity, and time names must exist, match their schema roles, remain disjoint, and cannot become candidates.
Every governed output has a checksum, and the verifier detects changed, missing, or unexpected files.
Supported decision
Feature selection can absorb outcome knowledge long before model fitting begins—through manual curation, permissive naming, or an undocumented schema pass. The freezer creates a reviewable pre-target boundary from metadata alone and preserves both what entered and why every other column stayed out.
Workflow
Assign each column a normalized type and one of five roles, then separately declare target, identity, and time names.
Inspect column schemaUse allowed types, ordered include and exclude expressions, forbidden exact names, and selected-count bounds.
Inspect contract schemaKeep the ordered manifest, selected-feature CSV, exclusion ledger, summary, and exact file checksums together.
Inspect manifest schemaLicensed runtime
python -m target_blind_feature_freezer freeze contract.json --out frozen-features
python -m target_blind_feature_freezer verify frozen-featuresfreeze exits 0 after successful create-only publication and 1 for invalid input or operation. verify exits 0 when intact, 2 on integrity failure, and 1 when the pack cannot be inspected.
Licensed delivery
Request to buy
Send the legal-entity name, billing contact, country, intended Python version, and approximate column count. Do not send datasets, target values, credentials, private source, customer data, regulated data, or confidential feature names. A request is not an accepted order, and availability is not guaranteed until accepted in writing.