Skip to content

Odoo savant roster (contract::savants) + FIBU/ZUGFeRD OGIT inheritance fix#416

Merged
AdaWorldAPI merged 6 commits into
mainfrom
claude/splat3d-cpu-simd-renderer-MAOO0
May 27, 2026
Merged

Odoo savant roster (contract::savants) + FIBU/ZUGFeRD OGIT inheritance fix#416
AdaWorldAPI merged 6 commits into
mainfrom
claude/splat3d-cpu-simd-renderer-MAOO0

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented May 27, 2026

Copy link
Copy Markdown
Owner

Summary

The lance-graph side of the woa-rs Odoo savant delegation, plus an ontology inheritance fix. Rebased linear on main (incl. #414/#415) — 3 commits, no merge bubbles.

  • D-ODOO-1 — contract::savants: the 25-savant roster as data (from .claude/odoo/SAVANTS.md + L1–L15, PR docs(odoo): import Odoo savant briefing pack into .claude/odoo #413). Each Savant carries its dispatch tuple — OGIT family (Option<u8>) × reasoning::ReasoningKind × nars::InferenceType × nars::SemiringChoice × thinking::StyleCluster — plus lane + the AXIS-B decision. SAVANTS[25] + savant()/savant_by_name()/unaligned() + query_strategy() (rides InferenceType::default_strategy). other_kind = the 6 ReasoningKind::Other(u32) codes. Rides the already-shipped reasoning::{Reasoner, ReasoningContext, ReasoningKind} delegation surface. 3 tests.
  • OGIT inheritance fix — re-parent the FIBU subtree under fibofnd so a ZUGFeRD/SKR lookup transitively inherits the FIBO/FIBU OWL (it was flat under dolce; only odoo had fibofnd):
    • zugferd, fibobe, skr03, skr04: inherits_from: dolce → fibofnd.
    • Family table regenerates via build.rs (fibofnd@20 sorts before all children → parent-known validation passes).
  • Governance — PR Cognitive substrate: locked 33-TSV atom layer + 34-tactic recipes + escalation loop #411 post-merge PR_ARC_INVENTORY + LATEST_STATE; odoo-savant-roster-v1 plan + INTEGRATION_PLANS prepend (with a sibling cross-note to feat(callcenter): odoo savant families + Layer-2 axioms + style wiring (D-ODOO-SAV-1/2/3) #414's odoo-savant-reasoners-v1).

Relationship to #414

#414 (odoo-savant-reasoners-v1, another session) shipped the callcenter-side families 0x63/0x90 + Layer-2 alignment axioms + style wiring (D-ODOO-SAV-1/2/3). This PR is the complementary contract-side roster (D-ODOO-1). They converge; the two D-id schemes are reconciled in the plan and will fully merge when the Reasoner impls (D-ODOO-2 / SAV-4) land.

Test plan

Invariants

suggestion-only never un-guarded write (Iron Rule 7) · deterministic guard stays in woa-rs (AXIS-A) · BBB-allowed crates only · savant tuple fully determines dispatch · business = OGIT-inherited sidecar (odoo/zugferd/skr inherit the FIBO foundation; 0x63/0x90 are the only new families).

https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41


Generated by Claude Code

Summary by CodeRabbit

  • New Features

    • Added a 25‑savant roster with lookup and query‑strategy utilities to enable delegated-reasoner dispatch.
    • Added runnable examples demonstrating a cognitive cycle and savant dispatch flows.
  • Documentation

    • Added governance proposal, evidence‑contract scaffold, board/archive entries, and integration notes documenting the roster and cognitive substrate.
  • Tests

    • Updated tests and smoke expectations to reflect the changed inheritance baseline (dolce → fibofnd).
  • Chores

    • Updated several module manifests to inherit from fibofnd instead of dolce.

Review Change Stack

claude added 3 commits May 27, 2026 17:58
Records the merge of the cognitive-substrate PR (33-TSV atom layer,
34-tactic recipes + 34 kernels, D-PERSONA-1 escalation). PR_ARC #411
prepend (Added/Locked/Deferred/Docs/Confidence; D0 rewrite-not-port,
SPOQ lattice, datapath/control/gate partition) + LATEST_STATE shipped row.

https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
…+ plan

The lance-graph side of the woa-rs Odoo savant delegation (material:
.claude/odoo/SAVANTS.md + L1-L15, imported by PR #413).

contract::savants -- the 25-savant roster as data. Each Savant carries
its dispatch tuple: OGIT family (Option<u8>) x reasoning::ReasoningKind x
nars::InferenceType x nars::SemiringChoice x thinking::StyleCluster, plus
lane + the AXIS-B decision. SAVANTS[25] + savant()/savant_by_name()/
unaligned() + query_strategy() (rides InferenceType::default_strategy).
other_kind module = the 6 ReasoningKind::Other(u32) codes. Rides the
already-shipped reasoning::{Reasoner,ReasoningKind} delegation surface.
3 tests green; 452 contract tests total.

Plan odoo-savant-roster-v1.md + INTEGRATION_PLANS prepend: D-ODOO-1 done;
D-ODOO-2 Reasoner impls per ReasoningKind, D-ODOO-3 new OGIT families
(0x63 ProductCatalog, 0x90 HRFoundation) + style wiring, D-ODOO-4 Layer-2
alignment axioms for the None classes (stock.*, analytic.distribution.
model, account.account.tag), D-ODOO-5 call-site conformance -- queued.
Invariant: suggestion-only never un-guarded write; deterministic guard
stays in woa-rs; odoo inherits FIBO/SKR slots (business = OGIT sidecar).

https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
…p inherits FIBO/FIBU OWL

The financial subtree was flat under dolce: only odoo inherited fibofnd
(FIBO Foundations), while zugferd / fibobe / skr03 / skr04 each inherited
dolce directly — so a ZUGFeRD or SKR lookup did NOT transitively pick up
the FIBO/FIBU OWL the way an odoo lookup does.

Re-parent to fibofnd (slot 20, sorts before all four children so the
build.rs parent-known-before-child validation passes):
  zugferd: dolce -> fibofnd   (Factur-X e-invoicing under FIBO Foundations)
  fibobe:  dolce -> fibofnd   (FIBO Business Entities extends FND, per real FIBO)
  skr03:   dolce -> fibofnd   (German chart of accounts under the FIBO foundation)
  skr04:   dolce -> fibofnd

Family table regenerated via build.rs; lance-graph-contract green (454
tests, no inherits_from validation panic). Verified at user request
("make sure OGIT lookup inherits FIBU and ZUGFeRD-related OWL").

https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
@coderabbitai

coderabbitai Bot commented May 27, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds a 25-entry Savant roster module with public types/constants, lookup helpers, query-strategy derivation and tests; updates four manifests' inheritance to fibofnd; adds governance entries and an AXIS‑B evidence-contract scaffold; and adds two examples (cognitive cycle and savant dispatch).

Changes

Odoo Savant Roster and Module Alignment

Layer / File(s) Summary
Integration plan and design specification
.claude/plans/odoo-savant-roster-v1.md
New plan document defines dispatch-tuple contract, roster-as-data and Reasoner implementation deliverables, OGIT family additions, Layer‑2 alignment axioms, delegation conformance, invariants, and open questions.
Savants module: API, constants, and types
crates/lance-graph-contract/src/savants.rs, crates/lance-graph-contract/src/lib.rs
Module docs, other_kind constants, Savant struct, and pub mod savants; added to crate root.
Savant roster data, helpers, and query strategy
crates/lance-graph-contract/src/savants.rs
SAVANTS: [Savant; 25] roster with per-id dispatch config; lookup helpers savant, savant_by_name, unaligned; Savant::query_strategy() deriving QueryStrategy from InferenceType.
Savants unit tests and validations
crates/lance-graph-contract/src/savants.rs (tests)
Tests validate roster cardinality, id/name round-trips, strategy derivation, and unaligned() expectations.
Module inheritance alignment for Layer-2 axioms
modules/fibobe/manifest.yaml, modules/skr03/manifest.yaml, modules/skr04/manifest.yaml, modules/zugferd/manifest.yaml
Four manifests change inherits_from from dolce to fibofnd.
Governance, agent log, and evidence scaffold
.claude/board/AGENT_LOG.md, .claude/board/INTEGRATION_PLANS.md, .claude/board/LATEST_STATE.md, .claude/board/PR_ARC_INVENTORY.md, .claude/odoo/savants/_SCAFFOLD-EVIDENCE-CONTRACT.md
Agent log records HANDOFF and D-ODOO-1 DONE with green tests; integration plans, latest state, and PR archive updated; new AXIS‑B evidence-contract scaffold added for per-savant evidence documentation.
Examples: cognitive cycle and savant dispatch
crates/lance-graph-contract/examples/cognitive_cycle.rs, crates/lance-graph-contract/examples/savant_dispatch.rs
Adds two examples: a cognitive tactic loop and a savant dispatch demo showing delegation and reasoning-kind matching.
Ontology hydrators and smoke tests
crates/lance-graph-ontology/src/hydrators/*, crates/lance-graph-ontology/tests/*
Hydrator configs updated to inherit from FIBOFND instead of DOLCE, and smoke tests adjusted to expect FIBOFND.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped through code with list and pen,
Twenty-five savants, catalogued then,
Fibofnd roots and queries clear,
Docs and tests all gathered near,
Handoff logged — the roster's in.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Odoo savant roster (contract::savants) + FIBU/ZUGFeRD OGIT inheritance fix' directly and accurately summarizes the two main changes in the PR: the introduction of the 25-savant roster module and the OGIT inheritance re-parenting fix.
Docstring Coverage ✅ Passed Docstring coverage is 81.82% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/splat3d-cpu-simd-renderer-MAOO0

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1f0703f528

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

// ── L8–L15 gap lanes (15) ──
Savant { id: 1, name: "FiscalPositionResolver", family: Some(0x80), kind: CustomerCategory, inference: Deduction, semiring: NarsTruth, style: Analytical, lane: "L9", decides: "which fiscal position (tax mapping) applies to a partner" },
Savant { id: 2, name: "PartnerTrustAdvisor", family: Some(0x80), kind: CustomerCategory, inference: Revision, semiring: NarsTruth, style: Empathic, lane: "L9", decides: "partner trust / dunning-risk from payment history" },
Savant { id: 3, name: "PricelistAssignmentAgent", family: None, kind: Other(other_kind::PRICELIST_ASSIGNMENT), inference: Revision, semiring: NarsTruth, style: Analytical, lane: "L8", decides: "partner pricelist when no explicit property (country-group/config fallback)" },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Point pricelist assignment at ProductCatalog

For the L8 pricelist fallback path this keeps the savant in the family=None bucket even though the rebased base already ships the authoritative Odoo alignment for product.pricelist / product.pricelist.item under FAMILY_PRODUCT_CATALOG = 0x64 (crates/lance-graph-callcenter/src/odoo_alignment.rs). Any dispatcher or readiness check using savant_by_name("PricelistAssignmentAgent").family or unaligned() will still treat this implemented ProductCatalog route as missing an axiom, so pricing evidence cannot be routed to the newly seeded family.

Useful? React with 👍 / 👎.

action_capabilities: {}
actor: ~
inherits_from: dolce
inherits_from: fibofnd

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep manifest parents aligned with hydrators

Changing the manifests to fibofnd only updates contract metadata; the runtime ontology hydrators for these domains still register their bundles with inherits_from: Some(OGIT::DOLCE_V1.0) (e.g. hydrate_fibo_be_from, hydrate_skr03_from, hydrate_skr04_from, and hydrate_zugferd_from). In any environment that hydrates through lance-graph-ontology, the registry will still expose direct DOLCE inheritance while lance_graph_contract::manifest reports FIBOFND, so consumers can observe conflicting parent chains instead of the intended transitive FIBO inheritance.

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/lance-graph-contract/src/savants.rs`:
- Around line 22-30: The ANALYTIC_MODEL_MATCH constant
(other_kind::ANALYTIC_MODEL_MATCH = 2) is defined but never used; the
"AnalyticModelScorer" savant (id: 5) currently sets kind to CustomerCategory
instead of using Other(other_kind::ANALYTIC_MODEL_MATCH). Fix by updating the
savant's kind assignment to use Other(other_kind::ANALYTIC_MODEL_MATCH) where
the "AnalyticModelScorer" is defined (or if the constant is intentionally
unused, delete/rename the constant in the other_kind module), ensuring the
ReasoningKind variant and the other_kind::ANALYTIC_MODEL_MATCH symbol are
consistent.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c1aad02d-dc24-46a1-ad48-8d39c14384d9

📥 Commits

Reviewing files that changed from the base of the PR and between c8acf55 and 1f0703f.

📒 Files selected for processing (11)
  • .claude/board/AGENT_LOG.md
  • .claude/board/INTEGRATION_PLANS.md
  • .claude/board/LATEST_STATE.md
  • .claude/board/PR_ARC_INVENTORY.md
  • .claude/plans/odoo-savant-roster-v1.md
  • crates/lance-graph-contract/src/lib.rs
  • crates/lance-graph-contract/src/savants.rs
  • modules/fibobe/manifest.yaml
  • modules/skr03/manifest.yaml
  • modules/skr04/manifest.yaml
  • modules/zugferd/manifest.yaml

Comment thread crates/lance-graph-contract/src/savants.rs
…oa-rs handoff)

Self-contained handover asking the woa-rs session (owner of the roster +
evidence schemas per SAVANTS.md) to carve out the 4 AXIS-B slots per savant
— Arrow EvidenceRef schema, odoo field->signal map, property-level OWL
alignment, the decision in evidence terms — so lance-graph can implement
the Reasoner impls (D-ODOO-2/SAV-4) in one pass instead of cross-session
ping-pong (which loses context). Pre-stubs the fixed dispatch tuple for all
25 savants (priority-tiered), the target Reasoner shape, and the open
dispatch-shape question. AGENT_LOG Layer-2 handoff note prepended.

https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.claude/board/AGENT_LOG.md (1)

94-95: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Align the recorded test total with this PR snapshot.

This entry records 452 tests, but this PR context reports 454 green after rebasing on #414/#415. Please either update the number or annotate the exact snapshot point/date to avoid governance drift.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/board/AGENT_LOG.md around lines 94 - 95, Update the test-count
recorded in the lance-graph entry so it matches the current PR snapshot: change
the phrase that reads "452 contract tests green." to the correct total "454
contract tests green." or alternatively append an explicit snapshot
identifier/date to that sentence to indicate which commit/point the 452 count
referred to; locate the sentence near the "contract::savants" / Savant roster
description in the lance-graph entry and adjust it accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.claude/odoo/savants/_SCAFFOLD-EVIDENCE-CONTRACT.md:
- Line 54: Update the scaffold table to match the runtime contract in
crates/lance-graph-contract/src/savants.rs: change the PricelistAssignmentAgent
row so its family field is None (not 0x63) to match the roster, and change the
infer entry that currently lists XorBundle to Induction (XorBundle is the
semiring, not the inference mode); ensure both row entries (the one for
PricelistAssignmentAgent and the infer row) exactly mirror the symbols and
values used in savants.rs so dispatch tuples align with runtime inputs.

---

Outside diff comments:
In @.claude/board/AGENT_LOG.md:
- Around line 94-95: Update the test-count recorded in the lance-graph entry so
it matches the current PR snapshot: change the phrase that reads "452 contract
tests green." to the correct total "454 contract tests green." or alternatively
append an explicit snapshot identifier/date to that sentence to indicate which
commit/point the 452 count referred to; locate the sentence near the
"contract::savants" / Savant roster description in the lance-graph entry and
adjust it accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9d3da19b-ea2f-4918-846f-5e6c2be07417

📥 Commits

Reviewing files that changed from the base of the PR and between 1f0703f and 7a7886e.

📒 Files selected for processing (2)
  • .claude/board/AGENT_LOG.md
  • .claude/odoo/savants/_SCAFFOLD-EVIDENCE-CONTRACT.md

Comment thread .claude/odoo/savants/_SCAFFOLD-EVIDENCE-CONTRACT.md Outdated
…mples

examples/cognitive_cycle.rs — the active-inference loop: a ThoughtCtx piped
through a tactic recipe (Elixir |> over the uniform `Tactic` behaviour),
marker-gated (Gate-bucket tactics skip in FLOW), looping until free energy
descends below the homeostasis floor ("shader rests"). Runs to rest in 2
rounds; narrates every step (which tactic fired, bucket, Δconf, gate state).

examples/savant_dispatch.rs — Odoo savant delegation: AXIS-A guard (woa-rs)
delegates the ambiguous core to a savant; dispatch is the data tuple
(family · ReasoningKind · InferenceType→QueryStrategy · Semiring · Style),
pattern-matched on ReasoningKind (Elixir case). Real savants from the roster
(PaymentToInvoiceMatcher / AutopostRecommender / FiscalPositionResolver /
SequenceGapAnomalyDetector); output is a NARS suggestion, never an un-guarded
write (Iron Rule 7).

Both `cargo run -p lance-graph-contract --example <name>` — genuine (every
call is a real contract kernel/type), self-explanatory, for a quick deep-dive.

https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
crates/lance-graph-contract/examples/savant_dispatch.rs (1)

54-60: ⚡ Quick win

Run rustfmt on the inbox literals to match repository style.

These struct literals are not cargo fmt-normalized and should be reformatted before merge.
As per coding guidelines, **/*.rs: Format Rust code with cargo fmt --all; keep modules and functions snake_case, types PascalCase, and reuse snafu error patterns.

Proposed formatting-aligned shape
-    let inbox = [
-        Situation { headline: "€1,200 payment arrived — does it fully reconcile the partner's open invoices?", ambiguous: true, savant: "PaymentToInvoiceMatcher" },
-        Situation { headline: "3rd identical bill from this vendor, unmodified — auto-post it?",              ambiguous: true, savant: "AutopostRecommender" },
-        Situation { headline: "new B2B partner in AT — which fiscal position (tax mapping)?",                 ambiguous: true, savant: "FiscalPositionResolver" },
-        Situation { headline: "journal sequence jumps 1042 → 1044 — is 1043 a deleted posted entry?",         ambiguous: true, savant: "SequenceGapAnomalyDetector" },
-        Situation { headline: "invoice with a perfectly matching single open item",                           ambiguous: false, savant: "ReconcileMatchSelector" },
-    ];
+    let inbox = [
+        Situation {
+            headline: "€1,200 payment arrived — does it fully reconcile the partner's open invoices?",
+            ambiguous: true,
+            savant: "PaymentToInvoiceMatcher",
+        },
+        Situation {
+            headline: "3rd identical bill from this vendor, unmodified — auto-post it?",
+            ambiguous: true,
+            savant: "AutopostRecommender",
+        },
+        Situation {
+            headline: "new B2B partner in AT — which fiscal position (tax mapping)?",
+            ambiguous: true,
+            savant: "FiscalPositionResolver",
+        },
+        Situation {
+            headline: "journal sequence jumps 1042 → 1044 — is 1043 a deleted posted entry?",
+            ambiguous: true,
+            savant: "SequenceGapAnomalyDetector",
+        },
+        Situation {
+            headline: "invoice with a perfectly matching single open item",
+            ambiguous: false,
+            savant: "ReconcileMatchSelector",
+        },
+    ];
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/lance-graph-contract/examples/savant_dispatch.rs` around lines 54 -
60, The inbox array of Situation struct literals (variable name inbox, type
Situation) is not formatted to repository style; run rustfmt/cargo fmt (e.g.,
cargo fmt --all) or manually reflow these literals so they match the repo's
formatting rules (align fields and spacing, enforce snake_case/PascalCase
conventions where applicable) and commit the reformatted
crate/examples/savant_dispatch.rs with the corrected inbox literals.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/lance-graph-contract/examples/cognitive_cycle.rs`:
- Around line 43-44: The final summary always reports reaching GateState::Flow
even when the loop exited due to round cap; update the post-loop reporting to
check gate_state(ctx.sd) == GateState::Flow (or the recorded gate state) and
conditionally print a FLOW-reached message only in that case, otherwise print a
message that the loop ended due to hitting the round limit; apply the same
conditional logic to the other occurrence around the code referenced at the
second site (the block near lines 70-71) so both summaries distinguish FLOW exit
vs round-cap exit.

---

Nitpick comments:
In `@crates/lance-graph-contract/examples/savant_dispatch.rs`:
- Around line 54-60: The inbox array of Situation struct literals (variable name
inbox, type Situation) is not formatted to repository style; run rustfmt/cargo
fmt (e.g., cargo fmt --all) or manually reflow these literals so they match the
repo's formatting rules (align fields and spacing, enforce snake_case/PascalCase
conventions where applicable) and commit the reformatted
crate/examples/savant_dispatch.rs with the corrected inbox literals.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d1a4996e-c14f-4016-8a05-0a25d14de495

📥 Commits

Reviewing files that changed from the base of the PR and between 7a7886e and fe071c6.

📒 Files selected for processing (2)
  • crates/lance-graph-contract/examples/cognitive_cycle.rs
  • crates/lance-graph-contract/examples/savant_dispatch.rs

Comment thread crates/lance-graph-contract/examples/cognitive_cycle.rs
- savants: PricelistAssignmentAgent family None → Some(0x64) (ProductCatalog,
  matches #414); drop dead other_kind::ANALYTIC_MODEL_MATCH const
- hydrators: complete the FIBU re-parent on the runtime side — fibo_be /
  skr03 / skr04 / zugferd inherits_from DOLCE → FIBOFND (FND stays DOLCE);
  update the three hydrator smoke tests' inheritance assertions to match
- cognitive_cycle example: rest message distinguishes FLOW vs round-cap
- scaffold + roster plan: 0x63 → 0x64 ProductCatalog; Induction(XorBundle) → Induction

https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/lance-graph-ontology/src/hydrators/skr_datev.rs`:
- Around line 49-50: Update the module-level documentation to reflect the new
parent chain: change any mention that the ontology inherits directly from DOLCE
to state that it now inherits from FIBOFND (OGIT::FIBOFND_V1.0) and adjust any
descriptive parent-chain text to include FIBOFND as the immediate parent; search
for the doc comments near the declarations referencing DOLCE (also the other
occurrence around the block with inherits_from: Some(OGIT::FIBOFND_V1.0) and
starting_entity_id: 100) and edit them so the prose and examples consistently
describe FIBOFND as the parent instead of DOLCE.

In `@crates/lance-graph-ontology/src/hydrators/zugferd.rs`:
- Line 86: Update the module-level doc comment in the zugferd hydrator to
reflect that this ontology now inherits from FIBOFND instead of DOLCE; locate
the top-of-file doc comment in
crates::lance-graph-ontology::hydrators::zugferd.rs and change any mention of
"DOLCE" to "FIBOFND" (or explain that it inherits from OGIT::FIBOFND_V1.0) so it
matches the code line inherits_from: Some(OGIT::FIBOFND_V1.0).

In `@crates/lance-graph-ontology/tests/skr_hydrator_smoke.rs`:
- Line 30: The test's documentation/header in skr_hydrator_smoke.rs is stale
(mentions DOLCE inheritance) while the assertions check bundle.inherits_from ==
Some(OGIT::FIBOFND_V1.0); update the test header/comments to state that SKR
bundles use FIBOFND inheritance instead of DOLCE, and make the same comment
change for the other occurrence referenced around the second assertion (the
other bundle.inherits_from check).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 791678e8-2cd4-4f75-86f6-0b7691aeefe6

📥 Commits

Reviewing files that changed from the base of the PR and between fe071c6 and b291ac5.

📒 Files selected for processing (10)
  • .claude/odoo/savants/_SCAFFOLD-EVIDENCE-CONTRACT.md
  • .claude/plans/odoo-savant-roster-v1.md
  • crates/lance-graph-contract/examples/cognitive_cycle.rs
  • crates/lance-graph-contract/src/savants.rs
  • crates/lance-graph-ontology/src/hydrators/fibo.rs
  • crates/lance-graph-ontology/src/hydrators/skr_datev.rs
  • crates/lance-graph-ontology/src/hydrators/zugferd.rs
  • crates/lance-graph-ontology/tests/fibo_be_hydrator_smoke.rs
  • crates/lance-graph-ontology/tests/skr_hydrator_smoke.rs
  • crates/lance-graph-ontology/tests/zugferd_hydrator_smoke.rs
✅ Files skipped from review due to trivial changes (2)
  • .claude/plans/odoo-savant-roster-v1.md
  • .claude/odoo/savants/_SCAFFOLD-EVIDENCE-CONTRACT.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • crates/lance-graph-contract/examples/cognitive_cycle.rs
  • crates/lance-graph-contract/src/savants.rs

Comment on lines +49 to 50
inherits_from: Some(OGIT::FIBOFND_V1.0),
starting_entity_id: 100,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update stale module docs to match the new parent chain.

The implementation now inherits from FIBOFND, but the module docs still describe direct DOLCE inheritance.

✏️ Suggested doc fix
-//! SKR 03 and SKR 04 each declare `inherits_from: Some(OGIT::DOLCE_V1.0)` —
-//! accounts are abstract economic objects, anchored to DUL Object via the
-//! cognitive shader's downstream alignment axioms (not baked in here).
+//! SKR 03 and SKR 04 each declare `inherits_from: Some(OGIT::FIBOFND_V1.0)` —
+//! accounts are aligned under the FIBO foundation layer (which itself
+//! chains to DOLCE via FIBOFND).

Also applies to: 95-96

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/lance-graph-ontology/src/hydrators/skr_datev.rs` around lines 49 - 50,
Update the module-level documentation to reflect the new parent chain: change
any mention that the ontology inherits directly from DOLCE to state that it now
inherits from FIBOFND (OGIT::FIBOFND_V1.0) and adjust any descriptive
parent-chain text to include FIBOFND as the immediate parent; search for the doc
comments near the declarations referencing DOLCE (also the other occurrence
around the block with inherits_from: Some(OGIT::FIBOFND_V1.0) and
starting_entity_id: 100) and edit them so the prose and examples consistently
describe FIBOFND as the parent instead of DOLCE.

version: OGIT::ZUGFERD_V1.1,
domain_name: "zugferd".to_string(),
inherits_from: Some(OGIT::DOLCE_V1.0),
inherits_from: Some(OGIT::FIBOFND_V1.0),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Refresh module docs to reflect FIBOFND inheritance.

The code now uses FIBOFND, but the top-level doc comment still says DOLCE.

✏️ Suggested doc fix
-//! Declares `inherits_from: Some(OGIT::DOLCE_V1.0)`. Alignment to upstream
-//! ontologies (FIBO MonetaryAmount, DUL Description, schema.org Invoice)
-//! is left as an explicit downstream assertion, not baked into the XSD.
+//! Declares `inherits_from: Some(OGIT::FIBOFND_V1.0)` so ZUGFeRD aligns
+//! under the FIBO foundation chain. Additional semantic alignment remains
+//! an explicit downstream assertion, not baked into the XSD.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
inherits_from: Some(OGIT::FIBOFND_V1.0),
//! Declares `inherits_from: Some(OGIT::FIBOFND_V1.0)` so ZUGFeRD aligns
//! under the FIBO foundation chain. Additional semantic alignment remains
//! an explicit downstream assertion, not baked into the XSD.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/lance-graph-ontology/src/hydrators/zugferd.rs` at line 86, Update the
module-level doc comment in the zugferd hydrator to reflect that this ontology
now inherits from FIBOFND instead of DOLCE; locate the top-of-file doc comment
in crates::lance-graph-ontology::hydrators::zugferd.rs and change any mention of
"DOLCE" to "FIBOFND" (or explain that it inherits from OGIT::FIBOFND_V1.0) so it
matches the code line inherits_from: Some(OGIT::FIBOFND_V1.0).

assert_eq!(bundle.g, OGIT::SKR03_V1.0);
assert_eq!(bundle.domain_name, "skr03");
assert_eq!(bundle.inherits_from, Some(OGIT::DOLCE_V1.0));
assert_eq!(bundle.inherits_from, Some(OGIT::FIBOFND_V1.0));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix stale test-module docs about inheritance.

The test header still says SKR bundles use DOLCE inheritance, but assertions now validate FIBOFND.

✏️ Suggested doc fix
-//! - Both schemes hydrate into separate G slots with the correct domain
-//!   and DOLCE inheritance.
+//! - Both schemes hydrate into separate G slots with the correct domain
+//!   and FIBOFND inheritance.

Also applies to: 49-49

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/lance-graph-ontology/tests/skr_hydrator_smoke.rs` at line 30, The
test's documentation/header in skr_hydrator_smoke.rs is stale (mentions DOLCE
inheritance) while the assertions check bundle.inherits_from ==
Some(OGIT::FIBOFND_V1.0); update the test header/comments to state that SKR
bundles use FIBOFND inheritance instead of DOLCE, and make the same comment
change for the other occurrence referenced around the second assertion (the
other bundle.inherits_from check).

@AdaWorldAPI AdaWorldAPI merged commit 607b94b into main May 27, 2026
6 of 7 checks passed
AdaWorldAPI pushed a commit that referenced this pull request May 28, 2026
…tion + E-CODEBOOK-INHERITS-FROM-OGIT

Per the 2026-05-28 user-given doctrine (distilled across four messages):
"every data is now LE-byte contract SoA in each mailbox / bitpacked is
also only a desperation bucket / normally LE SoA should have codebook
for everything including semantic ontology graph / inherited from OGIT
because the SoA doesn't guess."

Adds the canonical identity layer that supersedes the bitpacked RoleKey
form shipped in feaa587:

**New: crates/lance-graph-contract/src/callcenter/ogit_uris.rs (8 tests)**
- SAVANT_OGIT_BASE = "https://ogit.adaworldapi.com/callcenter/savants#"
- SAVANT_OGIT_URIS: LazyLock<[String; 25]> — one URI per savant, roster order
- savant_ogit_uri(id) / savant_ogit_uri_by_name(name) — lookup helpers
- 8 unit tests: uris_match_savant_count, uris_use_canonical_namespace,
  id_1_resolves_to_fiscal_position_resolver, id_16_is_absent,
  id_26_resolves_to_backorder_judge, id_lookup_matches_name_lookup,
  nonexistent_name_returns_none, every_savant_in_roster_has_a_uri

Resolves through `lance-graph-ontology::registry::OntologyRegistry`
(infrastructure already shipped — PR #407/#408 hydrators, PR #412 DOLCE
classifier, PR #416 FIBU/FIBO alignment, the canonical lingua-franca path).
The OntologyRegistry resolves the URI to a stable u32 codebook code; the
LE-byte mailbox SoA columns store the code. The Baton (u16, CausalEdge64)
carries the code across mailbox boundaries.

**Updated: contract::callcenter::role_keys (doc-only update)**
Module-level documentation now explicitly flags the bitpacked RoleKey
slices as the desperation-bucket fallback per the new doctrine; canonical
savant identity is via the OGIT URI in ogit_uris. Code unchanged (still
compiled, 7 tests still pass) — usable for ephemeral in-mailbox Hamming
compare where codebook lookup is unavailable.

**Updated: contract::callcenter::mod.rs**
Re-exports the new ogit_uris module + adds the two-identity-layer rationale
in the module doc (canonical OGIT URI + desperation-bucket RoleKey).

**Prepended: .claude/board/EPIPHANIES.md — E-CODEBOOK-INHERITS-FROM-OGIT**
Captures the full doctrine across all four 2026-05-28 messages:
Vsa16kF32 deprecated, LE-byte SoA per mailbox, codebook for everything,
inheritance from OGIT, Kontenerkennung-style multi-dim rich codebook
(parent chain + NARS confidence per link + business × transaction × form
× regulation × law × entity × product), audit query layer (episodic +
AriGraph SPO-G + regulation-ontology + NARS confidence threshold).

**Queued (separate D-ids, captured in the EPIPHANIES entry):**
- (a) data/ontologies/ogit/callcenter/savants.ttl + OntologyRegistry
  hydration for the 25 savants
- (b) Kontenerkennung-style inheritance struct with NARS confidence per
  parent link
- (c) regulation-ontology codebook (HGB / GoB / AO / UStG / IFRS / GoBD)
- (d) audit-threshold dispatch in cognitive-shader-driver (NARS confidence
  vs audit_floor → CausalEdge64 emission or escalation Baton)

Tests: 15 callcenter tests total (8 new ogit_uris + 7 existing role_keys);
454 prior contract lib tests unaffected.

https://claude.ai/code/session_017gZ6sPRXYPj5n7uJ7NBtRv
AdaWorldAPI pushed a commit that referenced this pull request May 28, 2026
…tion + E-CODEBOOK-INHERITS-FROM-OGIT

Per the 2026-05-28 user-given doctrine (distilled across four messages):
"every data is now LE-byte contract SoA in each mailbox / bitpacked is
also only a desperation bucket / normally LE SoA should have codebook
for everything including semantic ontology graph / inherited from OGIT
because the SoA doesn't guess."

Adds the canonical identity layer that supersedes the bitpacked RoleKey
form shipped in feaa587:

**New: crates/lance-graph-contract/src/callcenter/ogit_uris.rs (8 tests)**
- SAVANT_OGIT_BASE = "https://ogit.adaworldapi.com/callcenter/savants#"
- SAVANT_OGIT_URIS: LazyLock<[String; 25]> — one URI per savant, roster order
- savant_ogit_uri(id) / savant_ogit_uri_by_name(name) — lookup helpers
- 8 unit tests: uris_match_savant_count, uris_use_canonical_namespace,
  id_1_resolves_to_fiscal_position_resolver, id_16_is_absent,
  id_26_resolves_to_backorder_judge, id_lookup_matches_name_lookup,
  nonexistent_name_returns_none, every_savant_in_roster_has_a_uri

Resolves through `lance-graph-ontology::registry::OntologyRegistry`
(infrastructure already shipped — PR #407/#408 hydrators, PR #412 DOLCE
classifier, PR #416 FIBU/FIBO alignment, the canonical lingua-franca path).
The OntologyRegistry resolves the URI to a stable u32 codebook code; the
LE-byte mailbox SoA columns store the code. The Baton (u16, CausalEdge64)
carries the code across mailbox boundaries.

**Updated: contract::callcenter::role_keys (doc-only update)**
Module-level documentation now explicitly flags the bitpacked RoleKey
slices as the desperation-bucket fallback per the new doctrine; canonical
savant identity is via the OGIT URI in ogit_uris. Code unchanged (still
compiled, 7 tests still pass) — usable for ephemeral in-mailbox Hamming
compare where codebook lookup is unavailable.

**Updated: contract::callcenter::mod.rs**
Re-exports the new ogit_uris module + adds the two-identity-layer rationale
in the module doc (canonical OGIT URI + desperation-bucket RoleKey).

**Prepended: .claude/board/EPIPHANIES.md — E-CODEBOOK-INHERITS-FROM-OGIT**
Captures the full doctrine across all four 2026-05-28 messages:
Vsa16kF32 deprecated, LE-byte SoA per mailbox, codebook for everything,
inheritance from OGIT, Kontenerkennung-style multi-dim rich codebook
(parent chain + NARS confidence per link + business × transaction × form
× regulation × law × entity × product), audit query layer (episodic +
AriGraph SPO-G + regulation-ontology + NARS confidence threshold).

**Queued (separate D-ids, captured in the EPIPHANIES entry):**
- (a) data/ontologies/ogit/callcenter/savants.ttl + OntologyRegistry
  hydration for the 25 savants
- (b) Kontenerkennung-style inheritance struct with NARS confidence per
  parent link
- (c) regulation-ontology codebook (HGB / GoB / AO / UStG / IFRS / GoBD)
- (d) audit-threshold dispatch in cognitive-shader-driver (NARS confidence
  vs audit_floor → CausalEdge64 emission or escalation Baton)

Tests: 15 callcenter tests total (8 new ogit_uris + 7 existing role_keys);
454 prior contract lib tests unaffected.

https://claude.ai/code/session_017gZ6sPRXYPj5n7uJ7NBtRv
AdaWorldAPI pushed a commit that referenced this pull request May 28, 2026
…tion + E-CODEBOOK-INHERITS-FROM-OGIT

Per the 2026-05-28 user-given doctrine (distilled across four messages):
"every data is now LE-byte contract SoA in each mailbox / bitpacked is
also only a desperation bucket / normally LE SoA should have codebook
for everything including semantic ontology graph / inherited from OGIT
because the SoA doesn't guess."

Adds the canonical identity layer that supersedes the bitpacked RoleKey
form shipped in feaa587:

**New: crates/lance-graph-contract/src/callcenter/ogit_uris.rs (8 tests)**
- SAVANT_OGIT_BASE = "https://ogit.adaworldapi.com/callcenter/savants#"
- SAVANT_OGIT_URIS: LazyLock<[String; 25]> — one URI per savant, roster order
- savant_ogit_uri(id) / savant_ogit_uri_by_name(name) — lookup helpers
- 8 unit tests: uris_match_savant_count, uris_use_canonical_namespace,
  id_1_resolves_to_fiscal_position_resolver, id_16_is_absent,
  id_26_resolves_to_backorder_judge, id_lookup_matches_name_lookup,
  nonexistent_name_returns_none, every_savant_in_roster_has_a_uri

Resolves through `lance-graph-ontology::registry::OntologyRegistry`
(infrastructure already shipped — PR #407/#408 hydrators, PR #412 DOLCE
classifier, PR #416 FIBU/FIBO alignment, the canonical lingua-franca path).
The OntologyRegistry resolves the URI to a stable u32 codebook code; the
LE-byte mailbox SoA columns store the code. The Baton (u16, CausalEdge64)
carries the code across mailbox boundaries.

**Updated: contract::callcenter::role_keys (doc-only update)**
Module-level documentation now explicitly flags the bitpacked RoleKey
slices as the desperation-bucket fallback per the new doctrine; canonical
savant identity is via the OGIT URI in ogit_uris. Code unchanged (still
compiled, 7 tests still pass) — usable for ephemeral in-mailbox Hamming
compare where codebook lookup is unavailable.

**Updated: contract::callcenter::mod.rs**
Re-exports the new ogit_uris module + adds the two-identity-layer rationale
in the module doc (canonical OGIT URI + desperation-bucket RoleKey).

**Prepended: .claude/board/EPIPHANIES.md — E-CODEBOOK-INHERITS-FROM-OGIT**
Captures the full doctrine across all four 2026-05-28 messages:
Vsa16kF32 deprecated, LE-byte SoA per mailbox, codebook for everything,
inheritance from OGIT, Kontenerkennung-style multi-dim rich codebook
(parent chain + NARS confidence per link + business × transaction × form
× regulation × law × entity × product), audit query layer (episodic +
AriGraph SPO-G + regulation-ontology + NARS confidence threshold).

**Queued (separate D-ids, captured in the EPIPHANIES entry):**
- (a) data/ontologies/ogit/callcenter/savants.ttl + OntologyRegistry
  hydration for the 25 savants
- (b) Kontenerkennung-style inheritance struct with NARS confidence per
  parent link
- (c) regulation-ontology codebook (HGB / GoB / AO / UStG / IFRS / GoBD)
- (d) audit-threshold dispatch in cognitive-shader-driver (NARS confidence
  vs audit_floor → CausalEdge64 emission or escalation Baton)

Tests: 15 callcenter tests total (8 new ogit_uris + 7 existing role_keys);
454 prior contract lib tests unaffected.

https://claude.ai/code/session_017gZ6sPRXYPj5n7uJ7NBtRv
AdaWorldAPI pushed a commit that referenced this pull request May 28, 2026
…tion + E-CODEBOOK-INHERITS-FROM-OGIT

Per the 2026-05-28 user-given doctrine (distilled across four messages):
"every data is now LE-byte contract SoA in each mailbox / bitpacked is
also only a desperation bucket / normally LE SoA should have codebook
for everything including semantic ontology graph / inherited from OGIT
because the SoA doesn't guess."

Adds the canonical identity layer that supersedes the bitpacked RoleKey
form shipped in feaa587:

**New: crates/lance-graph-contract/src/callcenter/ogit_uris.rs (8 tests)**
- SAVANT_OGIT_BASE = "https://ogit.adaworldapi.com/callcenter/savants#"
- SAVANT_OGIT_URIS: LazyLock<[String; 25]> — one URI per savant, roster order
- savant_ogit_uri(id) / savant_ogit_uri_by_name(name) — lookup helpers
- 8 unit tests: uris_match_savant_count, uris_use_canonical_namespace,
  id_1_resolves_to_fiscal_position_resolver, id_16_is_absent,
  id_26_resolves_to_backorder_judge, id_lookup_matches_name_lookup,
  nonexistent_name_returns_none, every_savant_in_roster_has_a_uri

Resolves through `lance-graph-ontology::registry::OntologyRegistry`
(infrastructure already shipped — PR #407/#408 hydrators, PR #412 DOLCE
classifier, PR #416 FIBU/FIBO alignment, the canonical lingua-franca path).
The OntologyRegistry resolves the URI to a stable u32 codebook code; the
LE-byte mailbox SoA columns store the code. The Baton (u16, CausalEdge64)
carries the code across mailbox boundaries.

**Updated: contract::callcenter::role_keys (doc-only update)**
Module-level documentation now explicitly flags the bitpacked RoleKey
slices as the desperation-bucket fallback per the new doctrine; canonical
savant identity is via the OGIT URI in ogit_uris. Code unchanged (still
compiled, 7 tests still pass) — usable for ephemeral in-mailbox Hamming
compare where codebook lookup is unavailable.

**Updated: contract::callcenter::mod.rs**
Re-exports the new ogit_uris module + adds the two-identity-layer rationale
in the module doc (canonical OGIT URI + desperation-bucket RoleKey).

**Prepended: .claude/board/EPIPHANIES.md — E-CODEBOOK-INHERITS-FROM-OGIT**
Captures the full doctrine across all four 2026-05-28 messages:
Vsa16kF32 deprecated, LE-byte SoA per mailbox, codebook for everything,
inheritance from OGIT, Kontenerkennung-style multi-dim rich codebook
(parent chain + NARS confidence per link + business × transaction × form
× regulation × law × entity × product), audit query layer (episodic +
AriGraph SPO-G + regulation-ontology + NARS confidence threshold).

**Queued (separate D-ids, captured in the EPIPHANIES entry):**
- (a) data/ontologies/ogit/callcenter/savants.ttl + OntologyRegistry
  hydration for the 25 savants
- (b) Kontenerkennung-style inheritance struct with NARS confidence per
  parent link
- (c) regulation-ontology codebook (HGB / GoB / AO / UStG / IFRS / GoBD)
- (d) audit-threshold dispatch in cognitive-shader-driver (NARS confidence
  vs audit_floor → CausalEdge64 emission or escalation Baton)

Tests: 15 callcenter tests total (8 new ogit_uris + 7 existing role_keys);
454 prior contract lib tests unaffected.

https://claude.ai/code/session_017gZ6sPRXYPj5n7uJ7NBtRv
AdaWorldAPI pushed a commit that referenced this pull request May 28, 2026
- savants: PricelistAssignmentAgent family None → Some(0x64) (ProductCatalog,
  matches #414); drop dead other_kind::ANALYTIC_MODEL_MATCH const
- hydrators: complete the FIBU re-parent on the runtime side — fibo_be /
  skr03 / skr04 / zugferd inherits_from DOLCE → FIBOFND (FND stays DOLCE);
  update the three hydrator smoke tests' inheritance assertions to match
- cognitive_cycle example: rest message distinguishes FLOW vs round-cap
- scaffold + roster plan: 0x63 → 0x64 ProductCatalog; Induction(XorBundle) → Induction

https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
AdaWorldAPI added a commit that referenced this pull request May 28, 2026
…erer-MAOO0

Odoo savant roster (contract::savants) + FIBU/ZUGFeRD OGIT inheritance fix
AdaWorldAPI pushed a commit that referenced this pull request May 28, 2026
…tion + E-CODEBOOK-INHERITS-FROM-OGIT

Per the 2026-05-28 user-given doctrine (distilled across four messages):
"every data is now LE-byte contract SoA in each mailbox / bitpacked is
also only a desperation bucket / normally LE SoA should have codebook
for everything including semantic ontology graph / inherited from OGIT
because the SoA doesn't guess."

Adds the canonical identity layer that supersedes the bitpacked RoleKey
form shipped in feaa587:

**New: crates/lance-graph-contract/src/callcenter/ogit_uris.rs (8 tests)**
- SAVANT_OGIT_BASE = "https://ogit.adaworldapi.com/callcenter/savants#"
- SAVANT_OGIT_URIS: LazyLock<[String; 25]> — one URI per savant, roster order
- savant_ogit_uri(id) / savant_ogit_uri_by_name(name) — lookup helpers
- 8 unit tests: uris_match_savant_count, uris_use_canonical_namespace,
  id_1_resolves_to_fiscal_position_resolver, id_16_is_absent,
  id_26_resolves_to_backorder_judge, id_lookup_matches_name_lookup,
  nonexistent_name_returns_none, every_savant_in_roster_has_a_uri

Resolves through `lance-graph-ontology::registry::OntologyRegistry`
(infrastructure already shipped — PR #407/#408 hydrators, PR #412 DOLCE
classifier, PR #416 FIBU/FIBO alignment, the canonical lingua-franca path).
The OntologyRegistry resolves the URI to a stable u32 codebook code; the
LE-byte mailbox SoA columns store the code. The Baton (u16, CausalEdge64)
carries the code across mailbox boundaries.

**Updated: contract::callcenter::role_keys (doc-only update)**
Module-level documentation now explicitly flags the bitpacked RoleKey
slices as the desperation-bucket fallback per the new doctrine; canonical
savant identity is via the OGIT URI in ogit_uris. Code unchanged (still
compiled, 7 tests still pass) — usable for ephemeral in-mailbox Hamming
compare where codebook lookup is unavailable.

**Updated: contract::callcenter::mod.rs**
Re-exports the new ogit_uris module + adds the two-identity-layer rationale
in the module doc (canonical OGIT URI + desperation-bucket RoleKey).

**Prepended: .claude/board/EPIPHANIES.md — E-CODEBOOK-INHERITS-FROM-OGIT**
Captures the full doctrine across all four 2026-05-28 messages:
Vsa16kF32 deprecated, LE-byte SoA per mailbox, codebook for everything,
inheritance from OGIT, Kontenerkennung-style multi-dim rich codebook
(parent chain + NARS confidence per link + business × transaction × form
× regulation × law × entity × product), audit query layer (episodic +
AriGraph SPO-G + regulation-ontology + NARS confidence threshold).

**Queued (separate D-ids, captured in the EPIPHANIES entry):**
- (a) data/ontologies/ogit/callcenter/savants.ttl + OntologyRegistry
  hydration for the 25 savants
- (b) Kontenerkennung-style inheritance struct with NARS confidence per
  parent link
- (c) regulation-ontology codebook (HGB / GoB / AO / UStG / IFRS / GoBD)
- (d) audit-threshold dispatch in cognitive-shader-driver (NARS confidence
  vs audit_floor → CausalEdge64 emission or escalation Baton)

Tests: 15 callcenter tests total (8 new ogit_uris + 7 existing role_keys);
454 prior contract lib tests unaffected.

https://claude.ai/code/session_017gZ6sPRXYPj5n7uJ7NBtRv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants