Skip to content

Commit d148543

Browse files
committed
docs(epiphany): fold E-AR-DO-WIRING into the arc — the consumer-landing frame the click epiphanies reference
E-AR-DO-WIRING (ruff static + ARM dynamic meet at SPO; AR Class splits along DOLCE into THINK+DO; consumers land off the harvest) was stranded on a stale branch (claude/ar-do-wiring-epiphany) cut from a pre-#538 main — its diff against current main showed #538's files as deletions. The only real content was this single docs-only epiphany (+53 on EPIPHANIES.md), which the particle/wave click epiphanies in this PR cross-reference 5 times. Placed after E-OGAR-ROUTER-ENCODER (chronological: it is the prior-art frame the router/encoder + Excel + chess + perturbation entries build on). Makes this PR's arc self-contained — no dangling refs to an abandoned branch. The stale branch can be deleted. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
1 parent 9749c9c commit d148543

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

.claude/board/EPIPHANIES.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,45 @@ The **bit-partition identity:** the base-4 depth-4 centroid-tree decomposition (
114114

115115
---
116116

117+
## 2026-06-18 — E-AR-DO-WIRING — ruff (static) + ARM (dynamic) meet at SPO; AR Class splits along DOLCE into THINK+DO; consumers land off the harvest
118+
119+
**Status:** FINDING (cross-session converged: odoo-rs + OGAR-contract + openproject-nexgen-rs blast-radius surveys all confirm additive convergence onto the #534 keystone). Landing recipe: `docs/OGAR_CONSUMER_API.md`.
120+
121+
**One frame — how a domain becomes an OGAR node, and where each consumer plugs in:**
122+
123+
```
124+
ruff_cpp_spo / ruff-Rails harvest (STATIC: has_function, reads_field, inherits_from, validation_kind)
125+
+ lance-graph-arm-discovery / ARM (DYNAMIC: runtime (X→Y) rules, codebook-deterministic)
126+
└──────────────► MEET at SPO {s,p,o,f,c} ──► the OGAR Core (classid → ClassView)
127+
128+
AR Class splits along DOLCE (one node, two arms): │
129+
• fields → Endurant → THINK : ValueTenant cols + MethodSig (ClassMethods/methods_for)
130+
• methods → Perdurant → DO : ActionDef (ClassActions/actions_for) + ActionInvocation
131+
• inheritance → classid → ClassView (one mechanism, both arms; child overrides parent by key)
132+
• relations → EdgeBlock (12 in-family + 4 out)
133+
134+
consumer generates `const ClassMethods` (THINK) + `const ClassActions` (DO) from ITS harvest,
135+
binds classid OGAR-side, writes THIN classid-keyed adapters that ASSUME the Core,
136+
commits through the gate: def-match → RBAC (ActorContext) → state-guard → MUL (GateDecision)
137+
→ ExecTarget::SurrealQl (the AR-shaped API surface; NOT a per-crate endpoint).
138+
```
139+
140+
**The three claims that let a consumer land NOW (no waiting):**
141+
1. **The harvest IS the manifest.** Don't hand-author the object model — generate the `const` tables. `has_function`→`ActionDef.predicate`; `inherits_from`→`overrides` (filled at codegen by `mro::resolve_overrides`); `reads_field`→`ValueSchema`/`FieldMask`. (odoo-rs: `mro` gains a downstream consumer, no change.)
142+
2. **Static + dynamic are one SPO.** ruff = the static skeleton; ARM = dynamic enrichment; both emit `{s,p,o,f,c}`. A consumer with only a static harvest lands the full THINK+DO shape today; ARM refines `(f,c)` later.
143+
3. **DOLCE draws the THINK/DO line, not the consumer.** Perdurant (methods/events) = DO; Endurant/Quality (fields/state) = THINK. `aerial/ontology.rs` already emits the `dolce_id`.
144+
145+
**Per-consumer entry points (from the 3 blast-radius surveys):**
146+
- **odoo-rs:** `od-posting::_post` IS an `ActionInvocation` (ExecTarget::SurrealQl) — the runtime DO consumer. `od-ontology` stays zero-dep (NO `RegistryClassView` dep without a council). `mro::resolve_overrides` = the `overrides` source at codegen.
147+
- **openproject-nexgen-rs:** `op-surreal-ast` imports only `codegen_spine::Triple` (unchanged). Two net-new lifts: `ogar-from-ruff` `Model::functions → ClassActions/ActionDef` (DO producer); a registration hop `Class → register_class_path` + classid bind (THINK next-hop).
148+
- **tesseract-rs:** the cheapest existence proof — its pipeline is already byte-parity green; generate one class's `ClassActions` from `has_function`.
149+
150+
**Convergence flagged (3 instances now → unify):** override-resolution appears as `effective_actions` (DO, per-class) + `mro::resolve_overrides` (whole-manifest) + `ClassView` inherit — same child-overrides-parent-by-key relation. Crosses the abstraction threshold → an `Overridable`/keyed-merge primitive (council-gated).
151+
152+
**Guards (every consumer holds):** ENVELOPE_LAYOUT_VERSION=2 / NODE_ROW_STRIDE=512 must not move; `from_guid_prefix` high-classid-u16→None refusal + 16M-per-basin ceiling are now addressing-load-bearing; `ClassView::{compute_dag, constraints}` (computed-field recompute/validation) grows the EXISTING ClassView, never a new layer.
153+
154+
---
155+
117156
## 2026-06-18 — E-SOA-CYCLE-OWNERSHIP — cycle is per-mailbox + per-cycle, LE-contract-enforced; multi-mailbox interlaces; non-fitting consumers get OGAR classid→schema
118157

119158
**Status:** FINDING (operator-ratified architecture sync; the wiring itself is 5+3-gated before code). Repo brought in sync via the `bindspace-singleton-to-mailbox-soa-v1` ERRATA ADDENDUM 2026-06-18c.

0 commit comments

Comments
 (0)