aprender-contrastive-data 0.69.1

Deterministic, leakage-safe contrastive data construction: class buckets, balanced few-shot selection, bounded pair sampling
Documentation
# aprender-contrastive-data

Deterministic, leakage-safe contrastive data construction — class buckets, balanced
few-shot selection, bounded pair sampling.

Part of the [Aprender](https://github.com/paiml/aprender) monorepo.

## What it does

Builds the pair dataset that contrastive/Siamese fine-tuning (SetFit) trains on: strict
JSONL ingest, typestate split roles, dataset attestation, cross-split deduplication,
balanced k-shot selection, bounded positive/negative pair sampling, and a canonical
manifest for every artifact along the way.

```toml
[dependencies]
aprender-contrastive-data = "0.64"
```

## Three constraints shape the API

**Bytes in, bytes out.** No filesystem access, no sockets, no path-shaped parameters —
not even in tests. `apr-cli` owns every filesystem adapter. The destination for these
artifacts is object storage, where a manifest is an object rather than a file; an API
that speaks `&Path` makes such a consumer a rewrite instead of a wrapper. Enforced by
`make contrastive-data-boundary`, which checks the resolved dependency closure against a
positive allowlist and bans `std::fs`/`std::net`/`std::path` under `src/` — including the
grouped-import spellings rustfmt produces.

**Determinism.** Every random decision is a pure function of its draw ordinal, taken from
the counter-based Philox generator in `aprender-rand`. Draw *i* cannot depend on how many
draws preceded it, because nothing precedes it. No `HashMap` or `HashSet` appears in
`src/`; ordered maps only.

**Typestate.** A `Split<Train>` cannot be built from validation bytes, a compatibility
dataset has no validation witness, and pairs cannot be built from raw ids. Five such
misuses are proven uncompilable with `trybuild` and committed `.stderr` snapshots.

## Contract

`contracts/contrastive-pair-protocol-v1.yaml` — 24 equations, 15 proof obligations,
20 falsification tests, 2 Kani harnesses.

```bash
pv validate contracts/contrastive-pair-protocol-v1.yaml
pv audit    contracts/contrastive-pair-protocol-v1.yaml --binding contracts/aprender/binding.yaml
```

## Links

- [Monorepo]https://github.com/paiml/aprender
- [Contract]https://github.com/paiml/aprender/blob/main/contracts/contrastive-pair-protocol-v1.yaml