Commit 2a0abf5
committed
activate odoo plug-and-play profile (W11 D-RACTOR-SUPERVISOR consumer slot 50)
The seven-component plug-and-play stack the operator named — ontology /
callcenter / contract / rbac / surrealdb-on-kvs-lance / OGAR / ractor —
was already wired; the W11 plan (compile-time-consumer-binding-v1.md §2.2)
shipped the manifest-codegen build-script + CallcenterSupervisor +
GenericBridge surface. The precise gap was odoo's activation profile:
`modules/odoo/manifest.yaml` registered ODOO_V1 = (50, 1) in `MODULE_TABLE`
as INERT, with `rbac_policy: ~`, `stack_profile: ~`, `action_capabilities:
{}`, `actor: ~`.
This commit makes odoo "drop the odoo-rs crate and go" through three
additive surfaces:
1. modules/odoo/manifest.yaml — flip inert→active, declare rbac_policy:
odoo_policy, populate stack_profile with GoBD-derived defaults
(audit_retention_days: 3650 for §147 AO 10-year retention,
requires_fail_closed: true, escalation: llm), enumerate 15
action_capabilities (post_journal_entry/validate_invoice/
reconcile_payment/delete_partner/export_xml_invoice as escalate;
partner+journal+PDF+email writes as permit_with_audit; read paths
as permit), wire actor: {crate: odoo-rs, type: OdooActor, message_type:
OdooMessage}. inherits_from: fibofnd unchanged.
2. crates/lance-graph-supervisor/src/actors/odoo_actor.rs — OdooConsumerActor
skeleton (~140 LOC, 1:1 sibling of medcare_actor.rs). ODOO_G = 50,
ODOO_VERSION = 1. Reads ODOO_AUDIT_SALT env var, handles all 8
ConsumerEnvelope arms with TODO markers awaiting odoo-rs to land its
impl Consumer body. Re-exported via actors/mod.rs + lib.rs under the
supervisor feature gate.
3. crates/lance-graph-ontology/src/bridges/odoo_bridge.rs — OdooBridge:
NamespaceBridge (~50 LOC). bridge_id = "odoo", locks to namespace "Odoo"
(matches the existing test seed at registry.rs:826 + the convention
across WoaBridge/MedcareBridge/SpearBridge/SharePointBridge). impl
BridgeFromRegistry so make_bridge::<OdooBridge>(registry) works.
Per E-OGAR-AR-SHAPE-REHOME (2026-06-19), lance-graph does NOT mint
canonical-concept ids — OGAR's ogar-vocab is the canonical AR registry.
This activation creates the resolution surface (manifest-codegen → bridge
→ actor) through which odoo-rs fans out its DO arm to OGAR's 0xDDCC-encoded
codebook. Per hydrators/odoo.rs Seam decision 1 / Option B, odoo classes
inherit existing FIBO/SKR family slots via owl:equivalentClass-routing —
no new CAM codebook family minted. Foundry-family resolution lives in
lance_graph_callcenter::odoo_alignment; OdooBridge is the public-name →
OGIT URI translator the consumer crate dispatches through.
Acceptance:
- cargo check -p lance-graph-contract: clean (rebuilds OUT_DIR
ogit_namespace.rs + manifest_metadata.rs with ODOO_V1 non-inert).
- cargo test -p lance-graph-contract --test manifest_codegen: 8/8 pass
(incl. test_non_inert_no_actor_rejected — proves the activated manifest
survives the strict validator).
- cargo check -p lance-graph-supervisor: clean.
- cargo test -p lance-graph-supervisor --lib: 3/3 pass.
- cargo check -p lance-graph-ontology: clean.
- cargo test -p lance-graph-ontology --lib bridges: 1/1 filtered test pass.
Board hygiene: prepended EPIPHANIES E-ODOO-ACTIVATION-PROFILE +
LATEST_STATE Current Contract Inventory ACTIVATED entry.
Out of scope (future, lab follow-up): UnifiedBridge<OdooBridge> with
AuditChain under HSM-rooted salt — same TODO as MedcareConsumerActor;
lands with the odoo-rs consumer crate. supervisor.rs's spawn path still
uses StubConsumerActor generically; both medcare + odoo actors are
exported skeletons for future routing (W11 Tier-3 lane).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx1 parent b701806 commit 2a0abf5
8 files changed
Lines changed: 287 additions & 24 deletions
File tree
- .claude/board
- crates
- lance-graph-ontology/src/bridges
- lance-graph-supervisor/src
- actors
- modules/odoo
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
211 | 211 | | |
212 | 212 | | |
213 | 213 | | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
214 | 238 | | |
215 | 239 | | |
216 | 240 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
| 118 | + | |
| 119 | + | |
118 | 120 | | |
119 | 121 | | |
120 | 122 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
12 | 17 | | |
13 | 18 | | |
14 | 19 | | |
| |||
23 | 28 | | |
24 | 29 | | |
25 | 30 | | |
| 31 | + | |
26 | 32 | | |
27 | 33 | | |
28 | 34 | | |
29 | 35 | | |
30 | 36 | | |
31 | 37 | | |
| 38 | + | |
32 | 39 | | |
33 | 40 | | |
34 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| 20 | + | |
19 | 21 | | |
20 | 22 | | |
| 23 | + | |
0 commit comments