Skip to content

Commit e53c4bc

Browse files
committed
scaffold(odoo_blueprint): restructure to directory + 15 lane stubs (BP-1b waves) + v2 path correction
Restructures crates/lance-graph-ontology/src/odoo_blueprint.rs into a directory module with one sub-module per L-doc: odoo_blueprint/ mod.rs # typed OdooEntity surface (unchanged from feaa587) l1.rs ... l15.rs # per-lane const ENTITIES: &[OdooEntity] = &[] stubs Each lN.rs is a minimal stub pending the D-ODOO-BP-1b projection wave. Stubs declare an empty ENTITIES const and reference super::OdooEntity so the wave fills in the content without touching mod.rs or each other (per the autoattended-multiagent-pattern unique-file-write iron rule). Also fixes the v2 plan's Group E path: - crates/lance-graph-callcenter/src/role_keys.rs (wrong: that's the external-membrane crate) - → contract::callcenter::role_keys (correct: sibling of contract::grammar::role_keys, per the per-domain Layer-2 catalogue doctrine; this is where SAV-5b actually landed in feaa587). Plus fixes the Vsa16kF32 language: Vsa16kF32 is the deprecated f32 carrier; the actual SAV-5b shape uses RoleKey { words: Box<[u64; 256]> } which IS the Binary16K bitpacked format. Per the 2026-05-28 doctrinal update (user), bitpacked is a "desperation bucket"; the canonical identity architecture is LE-byte SoA with codebook inherited from OGIT (because the SoA doesn't guess). SAV-5b stays compiled as the desperation-bucket fallback; the canonical OGIT-codebook form lands in a separate follow-up commit (see next message in this PR). Tests: 3 odoo_blueprint unit tests pass; 40 ontology lib tests total. https://claude.ai/code/session_017gZ6sPRXYPj5n7uJ7NBtRv
1 parent 7c1cde4 commit e53c4bc

17 files changed

Lines changed: 195 additions & 4 deletions

File tree

.claude/plans/odoo-savant-reasoners-v2.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,16 @@ The savant IS its `SavantPattern` const. The shader executes the pattern
110110
over the SoA columns; the existing `Tactic::apply` interface handles
111111
per-tactic dispatch; the emission spec lands as a row in `EdgeColumn`.
112112

113-
### Group E — `crates/lance-graph-callcenter/src/role_keys.rs`
113+
### Group E — `lance-graph-contract::callcenter::role_keys` (path corrected from v2 draft — sibling of `contract::grammar::role_keys`, per the per-domain doctrine pattern; `Vsa16kF32` is the deprecated f32 carrier, identity slices live in the `Binary16K` u64-bitpacked `RoleKey` shape)
114114

115115
Per `I-VSA-IDENTITIES` Layer-2 catalogue:
116116

117-
- 25 disjoint `Vsa16kF32` slices (one identity per `OdooSavant` from
118-
`contract::savants`), bipolar ±1 in slice, zero elsewhere.
119-
- Lookup by enum: `pub fn savant_role_key(s: OdooSavant) -> &'static Vsa16kF32`.
117+
- 25 disjoint `RoleKey` slices (one identity per savant in
118+
[`contract::savants::SAVANTS`]), pseudo-random bipolar bits in slice
119+
via FNV-64-seeded LCG, zero elsewhere — same shape as
120+
`contract::grammar::role_keys`.
121+
- Lookup: `pub fn savant_role_key(id: u8) -> Option<&'static RoleKey>` +
122+
`pub fn savant_role_key_by_name(name: &str) -> Option<&'static RoleKey>`.
120123
- Slice allocation map MUST NOT overlap with `grammar/role_keys.rs` (or any
121124
future catalogue) — coordinate via a workspace-level slice manifest
122125
(probably `.claude/knowledge/role-key-slice-allocation.md` — verify or
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L1 (K3-POST) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L1-K3-POST.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L1 (K3-POST: posting policies, sequence-gap
10+
/// detection, autopost, lock-date advance).
11+
pub const ENTITIES: &[OdooEntity] = &[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L10 (ANALYTIC) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L10-ANALYTIC.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L10 (analytic accounts + analytic lines
10+
/// + analytic distribution + distribution model scoring).
11+
pub const ENTITIES: &[OdooEntity] = &[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L11 (COA-JOURNALS-LOCKDATES) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L11-COA-JOURNALS-LOCKDATES.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L11 (chart of accounts + journals + lock
10+
/// dates + sequence integrity).
11+
pub const ENTITIES: &[OdooEntity] = &[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L12 (MULTICOMPANY-CURRENCY) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L12-MULTICOMPANY-CURRENCY.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L12 (companies + branches + currencies
10+
/// + currency rates + FX exchange accounts + user company access).
11+
pub const ENTITIES: &[OdooEntity] = &[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L13 (STOCK-VALUATION-PROCUREMENT) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L13-STOCK-VALUATION-PROCUREMENT.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L13 (stock valuation + procurement rules
10+
/// + reorder timing + replenishment + route tiebreak).
11+
pub const ENTITIES: &[OdooEntity] = &[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L14 (HR-BASE) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L14-HR-BASE.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L14 (hr.employee + hr.department + hr.job
10+
/// + hr.contract base — payroll is Enterprise/absent).
11+
pub const ENTITIES: &[OdooEntity] = &[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L15 (TAX-REPARTITION) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L15-TAX-REPARTITION.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L15 (tax repartition lines + tax exigibility
10+
/// + tag invoicing/refund splits).
11+
pub const ENTITIES: &[OdooEntity] = &[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L2 (K3-RECON) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L2-K3-RECON.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L2 (K3-RECON: reconciliation, write-offs,
10+
/// bank statement matching).
11+
pub const ENTITIES: &[OdooEntity] = &[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! Lane L3 (K7-TAX) — typed Odoo entity declarations.
2+
//!
3+
//! Source: `.claude/odoo/L3-K7-TAX.md`.
4+
//!
5+
//! **Status:** stub — populated by the `D-ODOO-BP-1b` lane projection wave.
6+
7+
use super::OdooEntity;
8+
9+
/// Entities documented in lane L3 (K7-TAX: tax computation, exigibility,
10+
/// fiscal positions, repartition).
11+
pub const ENTITIES: &[OdooEntity] = &[];

0 commit comments

Comments
 (0)