Commit a97d7c3
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 7bc123c commit a97d7c3
8 files changed
Lines changed: 286 additions & 23 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 | |
|---|---|---|---|
| |||
260 | 260 | | |
261 | 261 | | |
262 | 262 | | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
263 | 287 | | |
264 | 288 | | |
265 | 289 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| 120 | + | |
| 121 | + | |
120 | 122 | | |
121 | 123 | | |
122 | 124 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
12 | 17 | | |
13 | 18 | | |
14 | 19 | | |
| |||
29 | 34 | | |
30 | 35 | | |
31 | 36 | | |
| 37 | + | |
32 | 38 | | |
33 | 39 | | |
34 | 40 | | |
35 | 41 | | |
36 | 42 | | |
37 | 43 | | |
38 | 44 | | |
| 45 | + | |
39 | 46 | | |
40 | 47 | | |
41 | 48 | | |
| |||
| 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