Skip to content

Commit ecb92c0

Browse files
committed
feat(callcenter): build odoo_alignment cache (OGIT→OWL→odoo) the harvest BRIEFING assumes
The odoo-richness harvest BRIEFING (woa-rs/.claude/odoo/) documents an "already built" odoo_alignment.rs with resolve_odoo / resolve_odoo_to_family / dolce_odoo — but it never existed in either repo. This builds it for real as the single-source spine module (consumers depend on it; no skr_data mirror, per the per-OGIT-storage / read-only-spine invariant). Two O(1) legs: odoo class --owl:equivalentClass--> OWL pivot --> OGIT family+slot --> FamilyEntry - resolve_odoo(class) -> Option<OwlPivot>: leg 1 (static seed). - resolve_odoo_to_family(class, &table): both legs, confirmed live against the family's hydrated OgitFamilyTable (wrong-family-safe, no panic). - resolve_odoo_entry(class, &table) -> Option<&FamilyEntry>: lands on the inline entry the lanes read for inherited thinking style. - dolce_odoo(class): DOLCE marker from suffix rules. - seed_family_table(&mut table): populate foundry slots (hydration overlay/tests). Option B (no minted family/slot): the four foundry family bytes are restated from data/family_registry.ttl (BillingCore 0x61, SMBAccounting 0x62, SmbFoundryCustomer 0x80, SmbFoundryInvoice 0x81) and asserted against it in a test. Seed rows: res.partner->fibo:LegalEntity, account.move->fibo:Transaction, account.move.line->fibo:JournalEntryLine, account.account->fibo:Account, account.account.template(SKR)->fibo:Account, product.*->schema:Product. Unmapped classes (stock.move, sale.order, hr.*, account.reconcile.model) resolve to None — the Layer-2-axiom signal, not an invented family. 9 unit tests; cargo check + clippy + fmt clean.
1 parent 0cc6e81 commit ecb92c0

2 files changed

Lines changed: 432 additions & 0 deletions

File tree

crates/lance-graph-callcenter/src/lib.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,18 @@ pub use family_table::{
174174
FamilyEntry, OgitFamilyTable, OwlCharacteristics, PerFamilyCodebook, SchemaKind,
175175
};
176176

177+
// Odoo → OWL → OGIT alignment cache (the "two-version bridge" leg). Static
178+
// seed binding odoo models (res.partner, account.move(.line), account.account,
179+
// product.*, SKR) to their owl:equivalentClass pivots and the foundry family
180+
// + slot they inherit under Option B. Single source — woa-rs skr_data consumes
181+
// via this dep, never mirrors. See module doc + woa-rs/.claude/odoo/BRIEFING.md.
182+
pub mod odoo_alignment;
183+
pub use odoo_alignment::{
184+
dolce_odoo, resolve_odoo, resolve_odoo_entry, resolve_odoo_to_family, seed_family_table,
185+
OwlPivot, FAMILY_BILLING_CORE, FAMILY_SMB_ACCOUNTING, FAMILY_SMB_FOUNDRY_CUSTOMER,
186+
FAMILY_SMB_FOUNDRY_INVOICE,
187+
};
188+
177189
// PR-F1 — UnifiedBridgeGate<B>: production CognitiveBridgeGate impl.
178190
// Wraps UnifiedBridge<B>; Chinese-wall check fires before policy evaluation
179191
// on cross-tenant ops (§3.8). No dep on thinking-engine from thinking-engine.

0 commit comments

Comments
 (0)