Skip to content

Commit 925887a

Browse files
committed
docs(epiphany): E-OUTER-BOUNDARY-IS-ORM-1 — the tombstone is a boundary commit, not a cleanup
Reframes PR #487 correctly: removing CollapseGateEmission was not dead-code hygiene, it was a boundary-shape correction. The inner seam (mailbox-to- mailbox) does not exist as a typed crossing — it is ownership transfer under Rust move semantics (E-CE64-MB-4). The outer seam (SoA ↔ Lance) is ontology-mediated: OGAR class = table schema (label + fields + tools + templates) SoaEnvelope = column mapping (byte geometry) Lance I/O = SQL writer (LE bytes from in-place store) hand-DTO = ORM-bypass (CollapseGateEmission was the last) The class supplies semantics; the envelope supplies geometry; Lance does the writing. Any independent carrier struct at this seam is schema drift by definition (per #477's 'every DTO is a derived view of an OGAR class'). MailboxId / MergeMode / GateDecision survive because they are vocabulary *of* the ontology side (addressing, merge policy, gate decision), not parallel descriptions of row data. Consequences for future PRs: - inner seams are moves, never carrier types - the outer seam has exactly one description (class + envelope + Lance) - hand-rolled active records are ORM-bypass — reach for ClassView + FieldMask + class-template specialization instead Cross-refs: PR #477 three-tier model; PR #487 tombstone commit; soa-three-tier-model.md; E-OGAR-NORTHSTAR-1 (class spine); I-LEGACY-API-FEATURE-GATED (removal is the canonical path). https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
1 parent a35caa2 commit 925887a

1 file changed

Lines changed: 57 additions & 0 deletions

File tree

.claude/board/EPIPHANIES.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,60 @@
1+
## 2026-06-12 — E-OUTER-BOUNDARY-IS-ORM-1 — there is only one boundary, and it is ontology-mediated
2+
3+
**Status:** FINDING (PR #487 tombstone commit makes this source-true; OGAR class + `SoaEnvelope` + Lance columnar I/O is the realized triangle).
4+
**Confidence:** High — every prior candidate inner boundary has now been removed or recast as ownership transfer; no surviving call-site asserts otherwise.
5+
6+
**The reframing.** `CollapseGateEmission` looked like a wire format for an
7+
inter-mailbox seam. It was, in fact, the workspace's last hand-written DTO
8+
asserting an **inner** boundary that does not exist. Between mailboxes there is
9+
only ownership transfer (Rust move semantics — `E-CE64-MB-4` makes UB a compile
10+
error); within a mailbox there are only in-place bytes (`SoaEnvelope` geometry).
11+
The only real boundary is the **outer** one — where the SoA meets persistence
12+
and meaning — and that boundary is **ontology-mediated, not DTO-mediated**.
13+
14+
**This is exactly the ORM pattern.**
15+
16+
| ORM | This substrate |
17+
|---|---|
18+
| Table schema | OGAR class (label, fields, tools, templates) |
19+
| Column mapping | `SoaEnvelope` + `ColumnDescriptor` (byte geometry) |
20+
| Active record | register-bank slice wrapped by the class view |
21+
| SQL writer | Lance columnar I/O (writes LE bytes from the in-place store) |
22+
| Hand-rolled row DTO | `CollapseGateEmission` — **the anti-pattern** |
23+
24+
In an ORM you don't write a bespoke struct per table-crossing; the mapping
25+
derives the persisted shape from the schema. Here likewise: the OGAR class
26+
supplies the semantics, the envelope supplies the geometry, Lance does the
27+
writing — and any independent carrier struct at that seam is **schema drift by
28+
definition** (per #477's "every DTO is a derived view of an OGAR class"). The
29+
emission type was not just unused; it was a second, ontology-bypassing
30+
description of data the class layer already described.
31+
32+
**Why `MailboxId` / `MergeMode` / `GateDecision` survive.** They are vocabulary
33+
*of* the ontology side — addressing (which register bank), merge policy (how
34+
overlapping writes compose), gate decision (apply / block / hold). They are
35+
not parallel descriptions of row data; they are the operational verbs the
36+
ontology binds.
37+
38+
**Consequences (the test for any future PR):**
39+
40+
- **Inner seams are ownership transfers**, never carrier types. If a proposed
41+
type looks like "DTO crossing from mailbox A to mailbox B", it is wrong by
42+
construction — the SoA is the DTO; the move is the crossing.
43+
- **The outer seam has exactly one description.** OGAR class on one side,
44+
`SoaEnvelope` on the other, Lance in between. A new "wire format" at this
45+
seam is the same anti-pattern by a different name — propose a new column or
46+
a class-template specialization instead.
47+
- **Hand-rolled active-record structs are ORM-bypass.** If you find yourself
48+
serializing-then-deserializing fields the class already names, the class
49+
template + `ClassView` + `FieldMask` is the right reach.
50+
51+
**Cross-ref:** PR #477 (three-tier model + "what does NOT exist" table); PR
52+
#487 (tombstone commit — emission artifacts removed; `consume_firing` is the
53+
in-place ownership successor); `docs/architecture/soa-three-tier-model.md`
54+
(register-file analogy + ORM mapping); `E-OGAR-NORTHSTAR-1` (the class spine
55+
this boundary binds to); `I-LEGACY-API-FEATURE-GATED` (legacy carrier paths
56+
must route to the canonical mapping or be removed — the tombstone is removal).
57+
158
## 2026-06-09 — E-OGAR-NORTHSTAR-1 — ontology cache = OGAR mirror with a reusable north-star template spine (namespace specializes, entity_type is shared)
259

360
**Status:** DECISION (OGAR mirror RATIFIED via decision-gate; north-star template model RATIFIED 2026-06-09 "frugal it is"; `entity_type` = GLOBAL shared template id RATIFIED via decision-gate)

0 commit comments

Comments
 (0)