From 6d7bc28ea93e9c641dcf931caeafbc1728129179 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 23 Jun 2026 05:49:35 +0000 Subject: [PATCH] fix(contract+lock): extend ogar_codebook mirror with PRODUCT + ACCOUNTING_ACCOUNT (OGAR #111) and bump pin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit D2 — follow-up to the merged sibling D1 (lance-graph #595, `81d08c42`) which mirrored OGAR #110's auth domain. OGAR #111 just merged on the same day, adding two more entries to `ogar_vocab::class_ids::ALL`: - `product 0x0207` (← `product.template` / `product.product` converge) - `accounting_account 0x0208` (← `account.account` / `account.account.template` converge) Without this sync, `lance_graph_ogar::parity::COUNT_FUSE` panics again the moment a consumer (q2's Railway docker build is the canary) bumps its own OGAR pin to current main: mirror=43, ALL=45. Two coordinated fixes: 1. lance-graph-contract: extend ogar_codebook::CODEBOOK with the 2 new commerce-arm entries. Same convergence pattern as `commercial_document` (which both `account.move` and `sale.order` resolve to). No new ConceptDomain variant — both stay in Commerce (0x02XX). 2. Workspace Cargo.lock: bump pinned OGAR crates (ogar-vocab / ogar-class-view / ogar-ontology / ogar-adapter-surrealql) from `08a9c979` → `ac4b4162` (current OGAR main, post-#111 merge). 4 references in this lock. Safe SHA swap verified: Cargo.toml deps for all four OGAR crates are byte-identical between the two commits (`git diff 08a9c979..ac4b4162 -- crates/{ogar-vocab,ogar-class-view,ogar-ontology, ogar-adapter-surrealql}/Cargo.toml` returns EMPTY). Tests: - lance-graph-contract: 9 doctests pass (compile-time COUNT_FUSE passes) - lance-graph-ogar lib: 53/53 pass including parity::tests::mirror_is_a_faithful_copy_of_ogar_codebook - cargo build -p lance-graph-ogar: clean Closes the cycle named in E-OGAR-AUTH-MIRROR-DRIFT (lance-graph #596 / sibling-merged as #595/81d08c42): mirror updates must land in the SAME commit as any OGAR-side ALL-list extension. This PR demonstrates the discipline working — OGAR #111 merged this morning, the mirror catches up this afternoon (instead of three days later when q2's lock bumps). Source-of-finding: - AdaWorldAPI/OGAR#111 (introduced PRODUCT + ACCOUNTING_ACCOUNT) - AdaWorldAPI/odoo-rs#14 (the upstream finding: 11 missing OdooPort aliases) Co-Authored-By: Claude Opus 4.8 --- Cargo.lock | 8 ++++---- crates/lance-graph-contract/src/ogar_codebook.rs | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2b75eb2b..3ff37b00 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6042,7 +6042,7 @@ dependencies = [ [[package]] name = "ogar-adapter-surrealql" version = "0.1.0" -source = "git+https://github.com/AdaWorldAPI/OGAR?branch=main#08a9c979d8939e1303770ea32aa2010928e79318" +source = "git+https://github.com/AdaWorldAPI/OGAR?branch=main#ac4b4162bb6ba8d590be3b2b37a07a44f7135d6c" dependencies = [ "ogar-vocab", ] @@ -6050,7 +6050,7 @@ dependencies = [ [[package]] name = "ogar-class-view" version = "0.1.0" -source = "git+https://github.com/AdaWorldAPI/OGAR?branch=main#08a9c979d8939e1303770ea32aa2010928e79318" +source = "git+https://github.com/AdaWorldAPI/OGAR?branch=main#ac4b4162bb6ba8d590be3b2b37a07a44f7135d6c" dependencies = [ "lance-graph-contract 0.1.0 (git+https://github.com/AdaWorldAPI/lance-graph?branch=main)", "ogar-vocab", @@ -6059,12 +6059,12 @@ dependencies = [ [[package]] name = "ogar-ontology" version = "0.1.0" -source = "git+https://github.com/AdaWorldAPI/OGAR?branch=main#08a9c979d8939e1303770ea32aa2010928e79318" +source = "git+https://github.com/AdaWorldAPI/OGAR?branch=main#ac4b4162bb6ba8d590be3b2b37a07a44f7135d6c" [[package]] name = "ogar-vocab" version = "0.1.0" -source = "git+https://github.com/AdaWorldAPI/OGAR?branch=main#08a9c979d8939e1303770ea32aa2010928e79318" +source = "git+https://github.com/AdaWorldAPI/OGAR?branch=main#ac4b4162bb6ba8d590be3b2b37a07a44f7135d6c" [[package]] name = "once_cell" diff --git a/crates/lance-graph-contract/src/ogar_codebook.rs b/crates/lance-graph-contract/src/ogar_codebook.rs index f9379230..7d862314 100644 --- a/crates/lance-graph-contract/src/ogar_codebook.rs +++ b/crates/lance-graph-contract/src/ogar_codebook.rs @@ -287,6 +287,13 @@ pub const CODEBOOK: &[(&str, u16)] = &[ ("billing_party", 0x0204), ("payment_record", 0x0205), ("currency_policy", 0x0206), + // Phase-3 mints per OGAR PR #111: both product.template / product.product + // and account.account / account.account.template converge on these two + // canonical concepts (same convergence pattern as account.move ↔ sale.order + // → commercial_document). Closes the cross-axis identity gap surfaced by + // odoo-rs PR #14. + ("product", 0x0207), + ("accounting_account", 0x0208), // ── 0x09XX — Health domain (MedCare; OGIT NTO/Healthcare promotion) ── ("patient", 0x0901), ("diagnosis", 0x0902),