| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
standards workspaces build + test / eoc-rs (push) Successful in 1m54s
standards workspaces build + test / jcp-rs (push) Successful in 1m19s
standards workspaces build + test / proof-rs (push) Successful in 1m12s
standards workspaces build + test / jouleclaw-rs (push) Successful in 6m1s
standards workspaces build + test / sandbox-rs (push) Successful in 2m10s
standards workspaces build + test / aac-rs (push) Successful in 1m14s
standards workspaces build + test / smart-byte-rs (push) Successful in 2m34s
standards workspaces build + test / joule-code-rs (push) Successful in 4m20s
standards workspaces build + test / joulecontract-rs (push) Successful in 1m43s
standards workspaces build + test / map-rs (push) Successful in 1m38s
standards workspaces build + test / mesh-rs (push) Successful in 53s
standards workspaces build + test / openpay (push) Successful in 4m35s
standards workspaces build + test / arl-rs (push) Successful in 47m49s
standards workspaces build + test / joule-ui-rs (push) Successful in 56m18s
standards workspaces build + test / jouledesk-rs (push) Successful in 1h3m7s
standards workspaces build + test / joulehook-rs (push) Successful in 12m29s
standards workspaces build + test / sense-rs (push) Successful in 2m27s
CI now runs map's main() harness (#93), but that harness computes both sides of every comparison in process. Nothing reads map/conformance/v1/*.json — the files a third-party implementation is told to certify against. The gap is measured, not assumed. Changing the Merkle domain separator in map-schema from "map:node" to "map:nodeX" -- a wire-format change, since a third-party implementation would then compute different roots for the same tileset -- leaves the harness reporting 15 passed, 0 failed. The new drift test is the only thing that notices. tests/pack.rs takes inputs from the pack and recomputes recorded outputs rather than re-reading them: every published cell key is rebuilt from its scalar fields and re-addressed to its recorded canonical CBOR and content id; the tileset is rebuilt as gen-vectors builds it and compared to the published directory, manifest and revision, with the Merkle root recomputed, both signatures verified, and the revision chaining onto the manifest root; and the sealed JCR-1 receipt is re-derived and compared byte for byte. That receipt check was written expecting a third stale vector -- joulehook's and jouledesk's published JCR-1 envelopes both fell behind when the receipt payload gained a field. map's is current. The prediction was wrong, which is worth recording as much as a hit would have been. Two things the tests document rather than assert blindly: - Directory::root() commits to the sorted (key, content_id) leaves, so editing an entry's offset or len leaves it unchanged. That is by design and sound -- the content_id authenticates whatever bytes a range fetch returns, so a moved range fails at the content check. An earlier draft of this test asserted the opposite and was wrong. The tamper case edits a content_id instead. - The published manifest does NOT survive a JSON round trip. AltSchedule::default() -- the schedule a 2.5D surface-only tileset uses, so the common case -- sets width_m to f64::INFINITY. JSON has no infinity, so serde_json writes null and f64 refuses null coming back. A third party deserializing tileset_vectors.json with the reference types fails on the first step. Signatures and content ids are unaffected: the canonical form is CBOR, which represents infinity. Fixing the JSON presentation is a normative change to a published artifact, so it is left to a maintainer; the test pins the defect so it is visible, and fails when it is fixed. Co-Authored-By: Claude Opus 5 <[email protected]> |
||
| .. | ||
| crates | ||
| Cargo.lock | ||
| Cargo.toml | ||