From f9e9d795c6f662f3975ad0e1c8d8e25043293d48 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 13:47:16 +0000 Subject: [PATCH] contract: mirror osm_street_node (0x0F0B) so the count fuse balances MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The paired half of OGAR's mint. `lance_graph_ogar::parity::COUNT_FUSE` is a COMPILE-TIME assert that `ogar_codebook::CODEBOOK.len()` equals OGAR's `class_ids::ALL.len()`, so a mint landing on only one side fails the build rather than a test — which is exactly what happened here (90 vs 91) and is why this commit exists at all. osm_street_node is the first Geo concept with no Rails source: OSM has no junction element, so the bake derives it from the routable-way graph. It is a distinct concept because its value slots carry per-edge street names, adjacency, bearing and a turn matrix, and nothing on disk otherwise separates that reading from an ordinary osm_node's tag slots. Verified: lance-graph-ogar `cargo check` passes with the fuse balanced at 91/91 (it path-deps the local OGAR checkout, so both halves are compiled against each other here rather than assumed). Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01NMeiLmtDKhomJNSo2ecbJw --- Cargo.lock | 1 - crates/lance-graph-contract/src/ogar_codebook.rs | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 88c0a095a..37f8ac75b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6638,7 +6638,6 @@ dependencies = [ name = "ndarray" version = "0.17.2" dependencies = [ - "blake3", "fractal", "matrixmultiply", "num-complex", diff --git a/crates/lance-graph-contract/src/ogar_codebook.rs b/crates/lance-graph-contract/src/ogar_codebook.rs index f9f5b18c8..353ebefd1 100644 --- a/crates/lance-graph-contract/src/ogar_codebook.rs +++ b/crates/lance-graph-contract/src/ogar_codebook.rs @@ -575,6 +575,12 @@ pub const CODEBOOK: &[(&str, u16)] = &[ ("osm_note", 0x0F08), ("osm_gpx_trace", 0x0F09), ("osm_user", 0x0F0A), + // SYNTHESIZED — no Rails source. OSM has no junction element; the bake + // derives it from the routable-way graph. It is a distinct concept because + // its value slots carry per-edge names, adjacency, bearing and a turn + // matrix, and nothing on disk otherwise separates that reading from an + // ordinary `osm_node`'s tag slots. + ("osm_street_node", 0x0F0B), ]; /// Resolve a **canonical-concept** string to its stable `u16` codebook id via