docs(od-ontology): repatriation frame — lance-graph → (OGAR + odoo-rs + ruff)#12
Merged
Merged
Conversation
…atriation frame
Operator framing — captured AS the north star, not as a migration plan. The
problem is NOT the 14K LOC of Odoo-specific code in lance-graph; the problem is
that it landed in lance-graph and nothing in odoo-rs nor OGAR. Three altitudes:
identity → OGAR Class + codebook (already canonical via OdooPort)
empowerment → OGAR universal class shapes (reusable factories — the
patterns Odoo TAUGHT us, parameterised for any consumer)
muscle memory → odoo-rs (the .ndjson, the l1..l15 blueprints, alignment
table content, namespace strings)
generic spine → lance-graph (left over after subtraction; zero Odoo)
The "vastness in simplicity": once identity + empowerment land in OGAR, the
14K LOC of l1..l15 blueprints collapses to Class definitions × empowerment
instantiation. Same job, fraction of the LOC, because the shapes do the work
instead of the copy-pasted Odoo specifics.
Includes the ruff implication ("ogar class detection in ruff" — keystone for
shrinking every consumer crate to a thin lifter, the way ogar-from-rails is
986 LOC because ruff_ruby_spo does the heavy lift).
Pragmatic ordering (operator-named): pull from lance-graph INTO odoo-rs first
(bounded, reversible), separate empowerment-from-muscle IN odoo-rs, then push
empowerments to OGAR. Not a one-PR migration; phase-by-phase, each bounded.
ODOO teaches us to become better than Palantir Foundry — but the shapes need
to be universal, and the fact that it's odoo-rs lives in classes + codebook +
odoo-rs, not in lance-graph.
Doc-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This was referenced Jun 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The north star for the multi-PR repatriation of ~14 000 LOC of Odoo-specific
content currently misplaced in
lance-graph. Operator framing, captured AS theframe — not as a migration plan.
Three altitudes, four homes
Class+ codebookOdooPort::class_id("account.move") → 0x0202. Already canonical (#93/#94/#95/#97/#98).owl:equivalentClass, ORM lifecycle predicate vocabulary, MRO/inheritance, SPO→ActionDeflowering — parameterised so any consumer reuses them..ndjson, the l1..l15 blueprints, alignment-table content, namespace strings.The "vastness in simplicity": once identity + empowerment land in OGAR, the
14K LOC of
odoo_blueprint/l1..l15.rscollapses toClassdefinitions ×empowerment instantiation. Same job, fraction of the LOC, because the shapes do
the work instead of copy-pasted Odoo specifics.
Inventory re-sorted per shape, not per file
The doc enumerates every Odoo-specific file in lance-graph (
odoo_ontology.rs,odoo_blueprint/{l1..l15,…}.rs,odoo_alignment.rs,hydrators/{odoo, dolce_odoo}.rs) and identifies what each thing actually is (empowerment vsmuscle memory vs identity), then names the right home. No file-by-file
move-orders — those come per-phase.
Ruff implication (the keystone for shrinking everything)
If the harvester emits OGAR-class-shaped output natively, every
ogar-from-<lang>shrinks to a thin pass-through (the precedent:ogar-from-railsis 986 LOC becauseruff_ruby_spodoes the heavy lift).Filed as its own producer-side ask.
Pragmatic ordering (operator-named)
reversible — no architectural commitment yet about empowerment vs muscle).
content sits with its consumer).
Classshapes.Per-phase PRs are bounded; the whole effort is not one PR.
Why now
I noted the duplicated
ActionDefinlance-graph-contractand theOdoo-specific files in lance-graph earlier in the session and didn't act on
them. The operator's reminder corrected the altitude: not "migrate the code"
but "separate empowerment from muscle memory." This puts the frame on the
record before any per-phase PR, so the next session has the north star instead
of re-deriving it.
Doc-only. Builds on the consistent across-session governance:
SURREAL-AST-TRAP.md(#6),W3-BEHAVIORAL-ARM-SCOPE.md(#7),UPSTREAM_WISHLIST.md(#11). OGAR refs: #93/#94/#99/#100/#102. lance-graph:#587/#589/#591/#592.