Skip to content

SplitProof v0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 31 Aug 16:01
· 3 commits to main since this release
Immutable release. Only release title and notes can be modified.

SplitProof 0.2.0

Released 2026-08-31.

SplitProof 0.2 adds weighted multi-label group balancing, explainable diagnostics, and bounded
deterministic local improvement. New manifests move to schema 2 and assignment algorithm 3 while
retaining explicit verification support for schema-v1 evidence.

Highlights

  • Records can carry finite positive record weights, and each indivisible group contributes one
    consistent effective group weight. Stratified group splits and k-fold assignment balance
    non-empty multi-label sets.
  • One shared, scale-free objective reports count, record-weight, group-weight, and per-label-weight
    contributions. JSON and Markdown diagnostics expose deviations and group leakage separately from
    assignment generation.
  • Algorithm v3 performs deterministic greedy placement followed by bounded strict-improvement
    single-group moves. Pair swaps are additionally considered for at most 32 groups, and
    max_local_iterations=0 provides a reproducible greedy-only comparison.
  • Schema-v2 fingerprints cover normalized label sets and both weight types. Manifest verification
    rejects malformed ratios, normalized duplicate IDs, unchecksummable values, coverage drift, and
    group leakage where the selected algorithm promises group integrity.
  • The CLI accepts --weight-field and --group-weight-field and protects inputs/outputs from path
    collisions, including hard-link aliases.
  • A deterministic quality fixture compares seeded random groups, record hashing, the historical v2
    greedy projection, v3 greedy-only placement, and the complete v3 optimizer.

Compatibility and migration

Schema-v1 manifests remain readable and verifiable under their historical fingerprint of record ID,
group, and scalar label. That verification cannot attest to v0.2-only labels or weights.

Two explicit migration paths are documented:

  1. Preserve published assignments, then create a schema-v2 manifest over the reviewed v0.2 records
    and unchanged destinations.
  2. Adopt algorithm v3 under a new split/release identifier and review assignment and diagnostic
    changes against the verified v1 baseline.

Algorithm v3 can move groups because its objective and local search differ from historical versions;
a schema migration must not be represented as a no-op algorithm upgrade.

Verification

The release candidate passed 102 tests with 92.96% branch coverage. Boundary tests cover strict
diagnostic and manifest failures, weights and extreme finite ratios, normalized duplicate IDs,
scale invariance, deterministic ties, the 32-group swap cutoff, schema-v1 disk migration, and
hard-linked CLI paths. In the repository synthetic fixture, the checked optimized_v3
result has objective 0.0083414534 and zero group leakage; these values describe only that fixture,
not a universal quality guarantee.

Known boundaries

  • Algorithm v3 is a deterministic bounded heuristic, not a global optimizer. Search stops when no
    strict improvement exists or at its iteration limit; pair swaps are disabled above 32 groups.
  • Record and group weights must be finite and strictly positive. Stratified operations require each
    record to have at least one label, and group-weight values must agree within a group.
  • Record-hash splitting intentionally does not preserve groups. Other built-in group-aware
    algorithms treat group leakage as a verification failure.
  • The dataset fingerprint covers split-relevant normalized fields, not arbitrary payload bytes. The
    manifest checksum detects accidental modification but is not a digital signature.