Skip to content

contract: mirror osm_street_node (0x0F0B) so the count fuse balances - #953

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/q2-osm-map-reencoding-56p5e2
Aug 14, 2026
Merged

contract: mirror osm_street_node (0x0F0B) so the count fuse balances#953
AdaWorldAPI merged 1 commit into
mainfrom
claude/q2-osm-map-reencoding-56p5e2

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Aug 14, 2026

Copy link
Copy Markdown
Owner

Unblocks a broken build on main. Not draft — this is the missing half of an already-merged change.

What broke

AdaWorldAPI/OGAR#268 merged osm_street_node = 0x0F0B into ogar_vocab::class_ids::ALL. This repo mirrors that codebook and asserts the two agree at compile time, so main now fails to build:

error[E0080]: evaluation panicked: ogar_codebook mirror drifted from
ogar_vocab::class_ids::ALL (concept count mismatch) — update
lance_graph_contract::ogar_codebook::CODEBOOK to match OGAR
  --> crates/lance-graph-ogar/src/lib.rs:119:32

The fuse did its job — it caught a real cross-repo drift at compile time rather than letting a silently-short mirror ship. This PR is the mirror entry it is asking for: one line in CODEBOOK, plus the doc note on why the concept has no Rails source.

Why it was missing

Both halves were written together (this commit and OGAR's 7c986da, one minute apart). Only the OGAR half got a PR, so when #268 merged, main inherited an OGAR that this repo's mirror had not caught up with. Paired changes need paired PRs; opening one and not the other is how a compile-time invariant turns into a broken main.

Scope

One commit, two files, +6/−1 — the CODEBOOK entry and a Cargo.lock line. No behaviour change: osm_street_node has no consumer in this repo yet, so the entry exists to keep the mirror honest and the fuse balanced.

Note on the fuse itself

The operator has flagged that this compile-time fuse is deprecated and should migrate to the ogar-vocab + hotplug.rs pattern, which removes the need for a hand-maintained mirror (and therefore this whole class of paired-PR failure). That migration is deliberately not in this PR — this is the minimal unblock for a red main; the redesign deserves its own change rather than being smuggled into a hotfix.


Generated by Claude Code

Summary by CodeRabbit

  • New Features
    • Added the canonical osm_street_node concept for representing synthesized OpenStreetMap junction nodes.

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NMeiLmtDKhomJNSo2ecbJw
@cursor

cursor Bot commented Aug 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_b650d1c5-ada0-43f0-8840-38b98acbfa3f)

@AdaWorldAPI
AdaWorldAPI merged commit bfc4f6d into main Aug 14, 2026
5 of 6 checks passed
@coderabbitai

coderabbitai Bot commented Aug 14, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: caa6c711-f46c-4e35-abff-082395c3c111

📥 Commits

Reviewing files that changed from the base of the PR and between eacde61 and f9e9d79.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • crates/lance-graph-contract/src/ogar_codebook.rs

📝 Walkthrough

Walkthrough

The public codebook adds the canonical osm_street_node concept with stable Geo-domain id 0x0F0B. It represents synthesized OSM junction nodes.

Changes

OSM street node concept

Layer / File(s) Summary
Add OSM street node concept
crates/lance-graph-contract/src/ogar_codebook.rs
The public codebook registers osm_street_node with id 0x0F0B for synthesized OSM junction nodes.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Suggested reviewers: claude

Poem

A rabbit hops through streets anew,
OSM nodes join the view.
0x0F0B marks the place,
In the codebook’s orderly space.
Junctions bloom with ears held high.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants