Proposal (pre-approved by the maintainer, who maintains both repos — this issue is the formal record)
Per views-datafactory ADR-050 (epic views-datafactory#342), the platform's consumer-contract ownership is split:
- views-frames owns the byte-level FeatureFrame layout —
save()/load() write and read the bytes, so the layout specification should live HERE, in the blast radius of the PRs that can change it (Common Closure Principle). Suggested: a short docs/on_disk_layout.md (or docstring section) beside save()/load() describing header.json + identifiers.npz + values.npy, marked as the authoritative spec.
- views-datafactory owns the query vocabulary (
OutputFormat, CONTRACT_VERSION) and hosts the conformance fixture: tests/fixtures/feature_frame_contract/frame/ — committed real save() output with a pinned digest and a regeneration-identity test that alarms if a views-frames upgrade changes the layout.
Why the fixture matters to this repo
The drift risk is real and recent: views-datafactory issue #116 documented the pre-v1.0.0 layout in prose; it was wrong within three weeks of being written (the #220 migration changed the files). The committed fixture is the executable alternative — and views-frames is welcome to adopt the same fixture in its own CI (copy or fetch; regeneration procedure in its README).
Asks
Refs: views-datafactory ADR-050, epic #342, docs/guides/consumer_contract.md, views-frames ADR-012 (N,F,S tensor), ADR-015 (id semantics).
Proposal (pre-approved by the maintainer, who maintains both repos — this issue is the formal record)
Per views-datafactory ADR-050 (epic views-datafactory#342), the platform's consumer-contract ownership is split:
save()/load()write and read the bytes, so the layout specification should live HERE, in the blast radius of the PRs that can change it (Common Closure Principle). Suggested: a shortdocs/on_disk_layout.md(or docstring section) besidesave()/load()describingheader.json+identifiers.npz+values.npy, marked as the authoritative spec.OutputFormat,CONTRACT_VERSION) and hosts the conformance fixture:tests/fixtures/feature_frame_contract/frame/— committed realsave()output with a pinned digest and a regeneration-identity test that alarms if a views-frames upgrade changes the layout.Why the fixture matters to this repo
The drift risk is real and recent: views-datafactory issue #116 documented the pre-v1.0.0 layout in prose; it was wrong within three weeks of being written (the #220 migration changed the files). The committed fixture is the executable alternative — and views-frames is welcome to adopt the same fixture in its own CI (copy or fetch; regeneration procedure in its README).
Asks
save()/load()docs/guides/consumer_contract.md(which deliberately does NOT restate byte-level detail)Refs: views-datafactory ADR-050, epic #342,
docs/guides/consumer_contract.md, views-frames ADR-012 (N,F,S tensor), ADR-015 (id semantics).