diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 9807f3dc5..ad0c55ac5 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,79 @@ +## 2026-09-06 — E-I-CITED-THE-RIGHTMOST-REGISTER-AND-CALLED-IT-THE-ADDRESS-1 — three corrections to one entry, each because I reasoned instead of measuring + +**Status:** OPERATOR CORRECTION ×3 of my own same-day entry, superseded before +merge. Recorded as one entry because the three are the same mistake at +increasing depth. +**Confidence:** High — every claim below is a `git log` date or a line read out +of `ogar-vocab`. + +**The rulings, in the operator's words:** *"It should always be classid, which +is the namespace"* · *"the old lockstep is deprecated, namespace might be even +older"* · *"First determine the age of your source. July or older is +automatically deprecated."* · *"0005 is old shit. New is Domain on the left +side — if that's not implemented it's not the new."* + +**Correction 1 — I dated nothing.** I built a "three layers" taxonomy out of +source-file doc comments, called `hotplug` current, and proposed migrating +`UnifiedBridge` onto it as future work. That migration was +operator-ruled and **shipped 2026-07-07** (OGAR #174/#175, lance-graph #658, +tesseract-rs #13/#14 as the template consumer; C# and Python mirrors already +generated). Every source I used was pre-August; a doc comment carries no date +at all. + +**Correction 2 — the top rung was stale too.** Under the dating rule `hotplug` +is itself July. The current canon is +`E-EVERYTHING-WIRES-TO-SOA-V3-CE64-IS-ALU-LEGACY-1` (2026-09-05, operator). + +**Correction 3 — the substantive one. I named the wrong register.** I published +this table and called it "the address the classid already carries": + +| port | `APP_PREFIX` | +|---|---| +| OpenProject | `0x0001` | +| Odoo | `0x0002` | +| Healthcare | `0x0005` | +| Redmine | `0x0007` | + +Those are **classview** values — the lo u16, the per-vendor render skin, the +RIGHTMOST register. The composed classid is `0xDDCCVVVV` = +`domain : appid : classview`, so the leading register is the **domain byte**, +and it is fully implemented: `ogar_vocab::ConceptDomain` with 29 arms and +`canonical_concept_domain(id) = id >> 8` — `0x01` ProjectMgmt, `0x02` Commerce, +`0x09` Health, `0x0F` Geo, `0x17` Blocks, and the C-band `0xC0` JavaRuntime / +`0xC1` Analytics / `0xC4` BinaryLifting (reserved 2026-08-18 — **August, the +newest source in this whole thread**). + +The collision proves the error on its own terms: **`0x0005` is Healthcare's +vendor skin; Health's domain is `0x09`.** Two registers, two numbers, one word +— and I quoted the one that carries the least. + +Worse, the "NAMESPACE ↔ APP_PREFIX 1:1" pairing I drew as evidence for the +ruling **is the deprecated lockstep** — a string paired with a vendor ordinal. +I used the old thing as proof of the new one. + +**The rule this leaves.** The domain byte's magnitude encodes ALTITUDE +(`0x00`–`0x0F` business ontology, `0x17` the substrate's own tier, `0xC0`+ the +foreign-host C-band), so the first nibble is a 16-way altitude selector — one +mask, no lookup, no value decode. A register that far left is not +interchangeable with one on the right, and "the classid is the address" is only +true read left-first. + +**Method, stated so it is mechanical.** Date the source (`git log -S`); read the +board top-down, not a source file middle-out; and when citing a bit layout, +name the register position, never just the value — a bare hex number cannot say +which of `DD`, `CC` or `VVVV` it came from, which is exactly how `0x0005` got +published as an address. + +**The code change this accompanies is unaffected.** Six `pub const NAMESPACE: +&str` mirrors in `lance-graph-ogar`'s bridge modules are removed: unreachable +since birth (private modules, never `pub mod` in any commit), zero consumers +anywhere in lance-graph / OGAR / q2, on a surface last touched 2026-07-24 for +five of the six files — by the same PR #844 that created them. A string +namespace belongs to the old lockstep; that is the whole reason, and it needs no +appeal to a prefix table. + +--- + ## 2026-09-05 — E-A-SWEEP-IS-COMPLETE-ONLY-WITHIN-THE-TARGET-KINDS-ITS-GATE-COMPILES-1 — #1194 swept the whole 1.98 delta and still left two sites, because "whole" was measured through six clippy steps **Status:** FINDING (measured on the pinned 1.98.1: `--tests` = 9 findings, `--all-targets` = 11; the two extra are in an example no CI step compiles). **Confidence:** High — both numbers come from running the two commands back to back on the same tree; the two extra sites are the same lint, in the same release, as the ten #1194 fixed. diff --git a/crates/lance-graph-ogar/src/bridges/medcare_bridge.rs b/crates/lance-graph-ogar/src/bridges/medcare_bridge.rs index 64a71f113..014aa43c9 100644 --- a/crates/lance-graph-ogar/src/bridges/medcare_bridge.rs +++ b/crates/lance-graph-ogar/src/bridges/medcare_bridge.rs @@ -32,7 +32,6 @@ use crate::bridges::unified::UnifiedBridge; // items — the trait must be in scope for the resolution to work (codex // P1 on PR #570). Same import in the test module below. pub use ogar_vocab::ports::HealthcarePort; -use ogar_vocab::ports::PortSpec; /// MedCare `NamespaceBridge` — alias over the generic harness, locked to /// the `Healthcare` namespace via [`HealthcarePort`]. @@ -45,10 +44,6 @@ use ogar_vocab::ports::PortSpec; )] pub type MedcareBridge = UnifiedBridge; -/// Canonical namespace name for MedCare / Healthcare. Mirrors -/// `HealthcarePort::NAMESPACE` so existing consumers that imported the -/// constant from this module keep building. -pub const NAMESPACE: &str = HealthcarePort::NAMESPACE; #[cfg(test)] #[allow(deprecated)] // exercises the deprecated bridge alias on purpose @@ -129,7 +124,7 @@ ogit.Healthcare:Patient #[test] fn g_lock_matches_registry_namespace_id() { let registry = registry_with_healthcare(); - let expected = registry.namespace_id(NAMESPACE).unwrap(); + let expected = registry.namespace_id(HealthcarePort::NAMESPACE).unwrap(); let bridge = MedcareBridge::new(registry).unwrap(); assert_eq!(bridge.g_lock(), expected); } diff --git a/crates/lance-graph-ogar/src/bridges/odoo_bridge.rs b/crates/lance-graph-ogar/src/bridges/odoo_bridge.rs index 6e125e842..7c1e3bd25 100644 --- a/crates/lance-graph-ogar/src/bridges/odoo_bridge.rs +++ b/crates/lance-graph-ogar/src/bridges/odoo_bridge.rs @@ -21,7 +21,6 @@ use crate::bridges::unified::UnifiedBridge; pub use ogar_vocab::ports::OdooPort; -use ogar_vocab::ports::PortSpec; /// Odoo `NamespaceBridge` — alias over the generic harness, locked to /// the `Odoo` namespace via [`OdooPort`]. @@ -34,8 +33,6 @@ use ogar_vocab::ports::PortSpec; )] pub type OdooBridge = UnifiedBridge; -/// Canonical namespace name for Odoo. Mirrors `OdooPort::NAMESPACE`. -pub const NAMESPACE: &str = OdooPort::NAMESPACE; #[cfg(test)] #[allow(deprecated)] // exercises the deprecated bridge alias on purpose diff --git a/crates/lance-graph-ogar/src/bridges/openproject_bridge.rs b/crates/lance-graph-ogar/src/bridges/openproject_bridge.rs index f7c3e5c1d..14f9b70e9 100644 --- a/crates/lance-graph-ogar/src/bridges/openproject_bridge.rs +++ b/crates/lance-graph-ogar/src/bridges/openproject_bridge.rs @@ -19,7 +19,6 @@ use crate::bridges::unified::UnifiedBridge; // associated items — the trait must be in scope for the resolution to // work (codex P1 on PR #570). Same import in the test module below. pub use ogar_vocab::ports::OpenProjectPort; -use ogar_vocab::ports::PortSpec; /// OpenProject `NamespaceBridge` — alias over the generic harness. /// @@ -32,10 +31,6 @@ use ogar_vocab::ports::PortSpec; )] pub type OpenProjectBridge = UnifiedBridge; -/// Canonical namespace name for OpenProject. Mirrors -/// `OpenProjectPort::NAMESPACE` so existing consumers that imported -/// the constant from this module keep building. -pub const NAMESPACE: &str = OpenProjectPort::NAMESPACE; /// Compatibility shim — re-exports `ogar_vocab::ports::OPENPROJECT_ALIASES` /// under the pre-migration name so consumers that imported the constant @@ -125,7 +120,7 @@ ogit.OpenProject:WorkPackage #[test] fn g_lock_matches_registry_namespace_id() { let registry = registry_with_openproject(); - let expected = registry.namespace_id(NAMESPACE).unwrap(); + let expected = registry.namespace_id(OpenProjectPort::NAMESPACE).unwrap(); let bridge = OpenProjectBridge::new(registry).unwrap(); assert_eq!(bridge.g_lock(), expected); } diff --git a/crates/lance-graph-ogar/src/bridges/redmine_bridge.rs b/crates/lance-graph-ogar/src/bridges/redmine_bridge.rs index e4ae957d0..71f9a072b 100644 --- a/crates/lance-graph-ogar/src/bridges/redmine_bridge.rs +++ b/crates/lance-graph-ogar/src/bridges/redmine_bridge.rs @@ -13,7 +13,6 @@ use crate::bridges::unified::UnifiedBridge; // `RedminePort::NAMESPACE` / `::aliases()` are `PortSpec` associated // items — the trait must be in scope for the resolution to work // (codex P1 on PR #570). -use ogar_vocab::ports::PortSpec; pub use ogar_vocab::ports::RedminePort; /// Redmine `NamespaceBridge` — alias over the generic harness. @@ -26,10 +25,6 @@ pub use ogar_vocab::ports::RedminePort; )] pub type RedmineBridge = UnifiedBridge; -/// Canonical namespace name for Redmine. Mirrors `RedminePort::NAMESPACE` -/// so existing consumers that imported the constant from this module -/// keep building. -pub const NAMESPACE: &str = RedminePort::NAMESPACE; /// Compatibility shim — re-exports `ogar_vocab::ports::REDMINE_ALIASES` /// under the pre-migration name (codex P2 on PR #570). New code should @@ -108,7 +103,7 @@ ogit.Redmine:Issue #[test] fn g_lock_matches_registry_namespace_id() { let registry = registry_with_redmine(); - let expected = registry.namespace_id(NAMESPACE).unwrap(); + let expected = registry.namespace_id(RedminePort::NAMESPACE).unwrap(); let bridge = RedmineBridge::new(registry).unwrap(); assert_eq!(bridge.g_lock(), expected); } diff --git a/crates/lance-graph-ogar/src/bridges/smb_bridge.rs b/crates/lance-graph-ogar/src/bridges/smb_bridge.rs index c9d726be7..673b8be7d 100644 --- a/crates/lance-graph-ogar/src/bridges/smb_bridge.rs +++ b/crates/lance-graph-ogar/src/bridges/smb_bridge.rs @@ -19,7 +19,6 @@ //! `ogar_vocab::ports::tests::time_entry_converges_across_planner_and_erp_ports`. use crate::bridges::unified::UnifiedBridge; -use ogar_vocab::ports::PortSpec; pub use ogar_vocab::ports::SmbPort; /// SMB `NamespaceBridge` — alias over the generic harness, locked to @@ -33,8 +32,6 @@ pub use ogar_vocab::ports::SmbPort; )] pub type SmbBridge = UnifiedBridge; -/// Canonical namespace name for SMB. Mirrors `SmbPort::NAMESPACE`. -pub const NAMESPACE: &str = SmbPort::NAMESPACE; #[cfg(test)] #[allow(deprecated)] // exercises the deprecated bridge alias on purpose diff --git a/crates/lance-graph-ogar/src/bridges/woa_bridge.rs b/crates/lance-graph-ogar/src/bridges/woa_bridge.rs index bef4fd34c..ecb8c56f4 100644 --- a/crates/lance-graph-ogar/src/bridges/woa_bridge.rs +++ b/crates/lance-graph-ogar/src/bridges/woa_bridge.rs @@ -26,7 +26,6 @@ use crate::bridges::unified::UnifiedBridge; // `WoaPort::NAMESPACE` / `::aliases()` are `PortSpec` associated items — // the trait must be in scope for the resolution to work (same codex P1 // fix as MedcareBridge). -use ogar_vocab::ports::PortSpec; pub use ogar_vocab::ports::WoaPort; /// WoA `NamespaceBridge` — alias over the generic harness, locked to @@ -40,8 +39,6 @@ pub use ogar_vocab::ports::WoaPort; )] pub type WoaBridge = UnifiedBridge; -/// Canonical namespace name for WoA. Mirrors `WoaPort::NAMESPACE`. -pub const NAMESPACE: &str = WoaPort::NAMESPACE; #[cfg(test)] #[allow(deprecated)] // exercises the deprecated bridge alias on purpose