Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
## 2026-06-23 — E-OGAR-11-OF-11-CLOSURE — the cross-axis identity gap from odoo-rs #14 is fully closed (OGAR #111 + #126 + #127; lance-graph #597 + #606 + this D4)

**Status:** FINDING (milestone). odoo-rs PR #14 surfaced 11 missing
`OdooPort` aliases in the cross-axis identity check
`alignment_pin::seeded_classes_have_compatible_ogar_identity`. Three OGAR
PRs progressively closed the gap; three lance-graph PRs mirrored each in
turn (E-OGAR-AUTH-MIRROR-DRIFT discipline):

| OGAR PR | What | lance-graph mirror PR |
|---|---|---|
| #111 | PRODUCT + ACCOUNTING_ACCOUNT (commerce 0x02XX) | #597 (D2) |
| #126 | PRICELIST + PRICELIST_RULE + UNIT_OF_MEASURE (commerce 0x02XX) | #606 (D3) |
| #127 | HR domain mint (new 0x0DXX) + 4 entries (hr_employee/hr_department/hr_job/hr_employment_contract) | THIS PR (D4) |

After D4 merges: **11-of-11 closed**. odoo-rs's alignment_pin can flip its
"7 remaining" informational eprintln to "0 remaining" and tighten the hard
pin from "commerce-arm only" (3 classes) to "all 15 seeded classes have an
OGAR classid".

**The discipline that emerged this session:**
- `E-OGAR-AUTH-MIRROR-DRIFT` — mirror updates land in the SAME commit as
any OGAR `ALL`-list extension; the COUNT_FUSE is the guardrail when it
fires locally (matching pins).
- `E-OGAR-API-EDIT-PULL-FIRST` — API-based file edits MUST pull-then-splice;
uploading pre-edited local files regresses upstream main.

These two epiphanies are how the C2 #126 CI failure and the C3 #127 test
failure were caught and fixed without compounding drift.

**Closes:** the 11-class cross-axis gap. **Next:** odoo-rs alignment_pin
tighten + pin bump to OGAR main (5089c1e8 → 597ecb12 family).

## 2026-06-23 — E-OGAR-API-EDIT-PULL-FIRST — API-based file edits MUST pull-then-splice; uploading pre-edited local files regresses upstream main

**Status:** FINDING (caught in OGAR #126 CI failure mid-PR-life).
Expand Down
8 changes: 4 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 19 additions & 2 deletions crates/lance-graph-contract/src/ogar_codebook.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,14 @@ pub enum ConceptDomain {
/// `automation_trigger`). Infrastructure config, not PHI. Mirrors OGAR
/// `ogar_vocab::ConceptDomain::Automation`.
Automation,
/// Any high-byte slot not yet assigned a domain (`0x03XX`–`0x06XX`, `0x0DXX`+).
/// `0x0DXX` — HR (employment / org / contracts; `vcard:Individual` /
/// `org:OrganizationalUnit` / `org:Role` / `fibo:Contract` alignment).
/// Public master-data for person + organizational-unit + role +
/// employment-contract entities; distinct from `Auth` (the IdP→classid
/// bridge) and from `Health` PHI. Mirrors OGAR
/// `ogar_vocab::ConceptDomain::HR` (added in OGAR PR #127).
HR,
/// Any high-byte slot not yet assigned a domain (`0x03XX`–`0x06XX`, `0x0EXX`+).
Unassigned,
}

Expand All @@ -87,6 +94,7 @@ pub fn canonical_concept_domain(id: u16) -> ConceptDomain {
0x0A => ConceptDomain::Anatomy,
0x0B => ConceptDomain::Auth,
0x0C => ConceptDomain::Automation,
0x0D => ConceptDomain::HR,
_ => ConceptDomain::Unassigned,
}
}
Expand Down Expand Up @@ -334,6 +342,13 @@ pub const CODEBOOK: &[(&str, u16)] = &[
("auth_zitadel", 0x0B02),
("auth_zanzibar", 0x0B03),
("auth_ory_keto", 0x0B04),
// ── 0x0DXX — HR domain (employment / org / contracts; OGAR PR #127) ──
// Closes the final 4-of-11 cross-axis identity gap surfaced by odoo-rs
// PR #14: hr.employee / hr.department / hr.job / hr.contract.
("hr_employee", 0x0D01),
("hr_department", 0x0D02),
("hr_job", 0x0D03),
("hr_employment_contract", 0x0D04),
// ── 0x0CXX — Automation domain (HIRO IT-automation: MARS CMDB + DO-arm
// actuators; OGAR's 0x0C Automation domain). One domain spanning the MARS
// structural CMDB and the Automation behavioral vocabulary. ──
Expand Down Expand Up @@ -421,8 +436,10 @@ mod tests {
assert_eq!(canonical_concept_domain(0x0B01), ConceptDomain::Auth);
assert_eq!(canonical_concept_domain(0x0C01), ConceptDomain::Automation);
assert_eq!(canonical_concept_domain(0x0C09), ConceptDomain::Automation);
assert_eq!(canonical_concept_domain(0x0D01), ConceptDomain::HR);
assert_eq!(canonical_concept_domain(0x0D04), ConceptDomain::HR);
assert_eq!(canonical_concept_domain(0x0500), ConceptDomain::Unassigned);
assert_eq!(canonical_concept_domain(0x0D00), ConceptDomain::Unassigned);
assert_eq!(canonical_concept_domain(0x0E00), ConceptDomain::Unassigned);
}

#[test]
Expand Down
1 change: 1 addition & 0 deletions crates/lance-graph-ogar/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ pub mod parity {
| (O::Anatomy, C::Anatomy)
| (O::Auth, C::Auth)
| (O::Automation, C::Automation)
| (O::HR, C::HR)
| (O::Unassigned, C::Unassigned)
)
}
Expand Down
Loading