From 058e013012086d33c6161a053e15819e76a5a9d1 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 09:20:57 +0000 Subject: [PATCH] docs(integration): reframe plan to single ownership (no Core session) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no separate 'OGAR Core session' — this session owns the whole OP-shaped -> agnostic transformation: producer scrape AND canonical layer. Correct the merged plan's framing: - Status: NEGOTIATED -> ACTIVE single-owner roadmap; drop 'OGAR Core has accepted' / 'contracts the OP arm needs'. - §3: 'Once Core lands the slots' -> 'this session owns landing them'. - §4: 'Division of labor (negotiated)' -> 'Division of concerns (one owner)'; clarify 'OGAR Core' names the canonical LAYER, not an agent; 4a/4b headings retitled; 4c is curator-local scrape (still this session). - §9: 'Phase 0/A/B are Core-side' -> all phases are this session's; Phase 5 gating is sequencing, not ownership. 'OGAR Core' is retained only as the name of the canonical compiler/registry layer (defined in §4), never as a separate session. --- .../AR-OGAR-MAILBOX-INTEGRATION-PLAN.md | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/docs/integration/AR-OGAR-MAILBOX-INTEGRATION-PLAN.md b/docs/integration/AR-OGAR-MAILBOX-INTEGRATION-PLAN.md index 168addb..ef492f1 100644 --- a/docs/integration/AR-OGAR-MAILBOX-INTEGRATION-PLAN.md +++ b/docs/integration/AR-OGAR-MAILBOX-INTEGRATION-PLAN.md @@ -1,16 +1,17 @@ # AR → OGAR → SurrealQL — OP-Arm Canonical-Contract Plan -> **Status**: NEGOTIATED. Doctrine [lance-graph#546] is merged (OGAR IS the -> AR-shaped THINK/DO compiler — curators feed it, it does not adapt to them). -> #546 landed **doctrine only — no code**. This plan is the *contract layer* -> downstream of it: it turns the OpenProject curator-arm feedback into concrete -> OGAR Core contract requirements. OGAR Core has accepted the split — -> **items 1–5 are flip blockers (Phase A), items 6–12 are promotion candidates +> **Status**: ACTIVE — single-owner roadmap. Doctrine [lance-graph#546] is merged +> (OGAR IS the AR-shaped THINK/DO compiler — curators feed it, it does not adapt +> to them). #546 landed **doctrine only — no code**. This plan is the *contract +> layer* downstream of it: it turns the OpenProject curator-arm experience into +> concrete canonical-vocab requirements. **This session owns the whole +> OP-shaped → agnostic transformation** — both the producer scrape *and* the +> canonical layer; there is **no separate "OGAR Core session"** to hand work to. +> The split is **items 1–5 flip blockers (Phase A), items 6–12 promotions > (Phase B)**. The 5+3 council (consolidate + brutal critique) has run; findings -> are folded in (§11). -> **Subordinate to**: #546 defines the doctrine; this defines the stable OGAR Core -> contracts the OpenProject arm needs. Not to be smuggled into lance-graph -> Inc 1 / Inc 2 — it is its own plan. +> folded in (§11). +> **Subordinate to**: #546 defines the doctrine; this defines the canonical-vocab +> contracts the agnostic flip needs. > **Audience**: OGAR Core + the consumer repos (`openproject-nexgen-rs`, > `AdaWorldAPI/surrealdb`). > **Reads from**: `lance-graph/docs/OGAR_CONSUMER_API.md` (the iron rules) + #546. @@ -112,24 +113,29 @@ three things Rails conflates (STI / abstract / concern). Grounded against the | *(dropped today)* | `state_machines: Vec` | 9 | | *(dropped today)* | `audit_trail: Option` | 10 | -Once Core lands the slots, `ogar-from-rails` becomes a pure rename/reslot pass. +Once these canonical slots land (this session owns landing them), +`ogar-from-rails` becomes a pure rename/reslot pass. **No new producer IR.** That is the whole point — the producer never grows a parallel object model. -## 4. Division of labor (negotiated) +## 4. Division of concerns (one owner — this session) -### 4a. OGAR Core owns — Phase A flip blockers (1–5) +This session owns **both** layers below; the split is by *concern* (canonical +vocab vs curator-local scrape), not by session. "OGAR Core" names the canonical +**layer**, not a separate agent. + +### 4a. The canonical layer (OGAR Core) — Phase A flip blockers (1–5) 1. Canonical slot rename (deprecated aliases for one cycle, not a hard break). 2. `lance-graph-contract::action`: `predicate: PredicateName(Cow<'static, str>)`. 3. `OntologyRegistry::register_actions(class_id, &[ActionDef]) -> Result<(), RegistryError>`. 4. `OntologyRegistry::mint_classid(&ClassFingerprint) -> ClassId` — content-addressed. 5. Cargo feature isolation: `lance-graph-contract` stays substrate-free. -### 4b. OGAR Core promotes — Phase B canonical wave (6–12) +### 4b. The canonical layer — Phase B promotions (6–12) `Relation`, `Constraint`, `Inheritance`, `StateMachineDecl`, `AuditTrailDecl`, `Authorization`, `OntologyRegistry::resolve_mro`. Shapes in §6. -### 4c. OP session owns locally — dies at the extraction boundary +### 4c. Curator-local scrape (still this session) — dies at the extraction boundary `belongs_to`/`has_many` token parsing · `validates_*` class-name dispatch · `acts_as_*` family filtering · `class_name:` namespace stripping · block-callback `target_method: None` normalization · ApplicationRecord-rooted STI detection · @@ -296,9 +302,9 @@ Phase B Promotion slots 6 Relation · 7 Constraint · 8 Inheritance · Phase 5 OP flip ogar-from-rails emits only canonical slots; op-surreal-ast proves invariant projection ``` -Phase 0/A/B are Core-side. Phase 5 is this session — it cannot start before the -rename + promotion slots land (starting earlier = the speculative rework the -council warned against). +All phases are this session's. Phase 5 (the producer flip) still cannot start +before the rename + promotion slots land — that's **sequencing, not ownership** +(starting earlier = the speculative rework the council warned against). ## 10. Test surface (corrected)