Projection fixtures and independent reverse oracles
Runtime index · Forward/reverse API · Stage 14 ledger · Dymaxion implementation
Cartofreako publishes a versioned, implementation-neutral projection fixture
bundle under fixtures/projections/v1/.
Consumers do not need Cartofreako headers, WebAssembly, generated art, S3, or
network access to parse it.
Contract and contents
projection-fixtures-v1.schema.json
defines longitude/latitude input in degrees and top-left page output as
normalized u=x/width, v=y/height. Stable geometric topology keys are
normative; Cartofreako numeric native-cell IDs live in a separate crosswalk.
Reverse candidate sets are unordered and retain cut, component, and boundary
identity.
The checked v1 bundle contains 31,008 cases:
| Family | Cases | Coverage |
|---|---|---|
| Cahill–Keyes | 108 | Octants, construction zones, seams, poles, and compatibility anchors |
| AuthaGraph | 28 | Sectors and singular vertices |
| Dymaxion | 73 | Faces/subfaces, boundaries, and reference registration |
| Myriahedral | 30,720 | All 5,120 face centers in each of six registered layouts |
| Star-X | 17 | Carrier, fixed-60°S cap, cutoff, overlap, quadrants, and pole |
| Voronoi | 62 | All faces plus representative edges and vertices |
Every file is covered by
SHA256SUMS, and every case
states a deliberately narrow evidence grade: published anchor, pinned upstream
implementation, independent reimplementation, structural invariant, or
Cartofreako compatibility. A round trip through Cartofreako is never relabeled
as independent proof.
Three independent consumers
Run the offline gate with:
make check-projection-fixtures
It checks all 31,008 cases in native C++, a representative cross-family pack through WebAssembly, and the complete bundle with a dependency-free Python reader. Normal checks consume immutable fixture bytes; they never refresh them. Maintainers use the separate explicit command only when reviewed values or provenance change:
make refresh-projection-fixtures
Cross-implementation reverse evidence
make check-reverse-oracles consumes the frozen records in
fixtures/projections/v1/oracles/
and writes a local report under reports/. The current 2,108-case result is:
| Route | Cases | Result |
|---|---|---|
Pinned d3-geo-polygon v2.0.1 Voronoi inverse |
96 independently selected projected page points | Maximum angular difference 5.08038e-13° |
| Pinned D3 Airocean/Gray versus Cartofreako Dymaxion | 92 points | Four upstream face-19 registration exclusions retained; maximum classified difference 0.000165906°, below the declared 0.0003° rounded-registration bound |
| Dependency-free Python Myriahedral face-local inverse | 1,920 points | Maximum angular difference 1.32339e-13° |
The D3 v1.12.1-to-v2.0.1 delta record shows unchanged projection vertices, faces, parents, rotation, scale, and center; the newer release modernizes syntax and GeoJSON handling. The four Dymaxion exclusions are not discarded failures: the fixture records them as an upstream registration difference so they cannot silently alter production behavior.
Oracle refresh requires an explicitly pinned upstream checkout and is not
reachable from make all, a GitHub release, or the human-invoked UCB AAO/S3
path:
D3_GEO_POLYGON_V2_ROOT=/path/to/d3-geo-polygon-v2.0.1 \
make refresh-reverse-oracle-fixtures
AuthaGraph, Cahill–Keyes, and Star-X retain narrower structural or derived composition evidence until genuinely independent producers exist.
Standalone Equal Earth comparison bundle
Stage 16J publishes a separate exploration-only bundle under
fixtures/projections/equal-earth-v1/.
It remains outside the six-family v1 runtime fixture manifest so a research
control cannot silently become a released atlas family.
The bundle contains 30 forward/reverse cases across canonical Greenwich and
an experimental 11.5°E layout. Each case carries raw unit-sphere and
normalized top-left page coordinates plus frozen PROJ 9.6.2 and D3 Geo 2.0.1
observations. Check it offline with:
make check-equal-earth-projection
The gate validates the JSON Schema, hashes, C++ and JavaScript agreement, page-outside behavior, forward/reverse residuals, Jacobian/Tissot diagnostics, and spherical area scale. Fixture refresh is an explicit maintainer action:
D3_GEO_ROOT=/path/to/d3-geo-2.0.1 \
make refresh-equal-earth-fixtures
PROJ and D3 are cross-implementation observations, not evidence that Cartofreako has joined a campaign or corrected human perception. See the implementation notes and five comparison plates.