Skip to content

docs(adr): V3 as spine + polyglot transpiler (Rust/Python/C#)#130

Merged
AdaWorldAPI merged 3 commits into
mainfrom
claude/v3-transpiler-adr
Jun 28, 2026
Merged

docs(adr): V3 as spine + polyglot transpiler (Rust/Python/C#)#130
AdaWorldAPI merged 3 commits into
mainfrom
claude/v3-transpiler-adr

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Summary

Proposed ADR (docs/V3-TRANSPILER-ADR.md) that (1) makes V3 — the
content-addressed rail record — the spine
, demoting SurrealQL/ClickHouse/PG/
TTL DDL to peer adapters (closing the open question in
SURREAL-AST-AS-ADAPTER.md + SURREAL-AST-TRAP-PREFLIGHT.md); (2) specifies
the dual-mode facet (12 B = 6×16 cascade | 4×24 triplet, classid-tagged)
and the 512-byte record as 32 tenants with ClassView::tenant_schema
naming the Do/Think/Adapter planes; (3) names the polyglot transpiler
superpower — LangBackend adapters re-emit Rust/Python/C# source from the
shared IR, generalizing the existing ruff_cpp_codegen → Rust backend.

Includes the honest boundaries from the cross-repo verification: structure
transpiles, behaviour does not
; the rail is a CAM key not the content;
minting governance must be CI-enforced before scale; the substrate is ~11 K
nodes today (not the aspirational 2 M); capacity overflow is the
separation-of-concerns lint (the 256-cap-is-a-lint law already exists as a
falsifier and should be promoted to a real diagnostic).

Documentation only, authored via API without a build environment — it ships
the design contract for a typed follow-up, not unverified code. Companion
implementation plan lives in the ruff RFC PR.

Status

Proposed / RFC — seeking review on the spine-vs-adapter decision and the
dual-mode + tenant record contract before any code lands.


🤖 Generated with Claude Code

https://claude.ai/code/session_01Mwq1QKpw4zRd6oaGRoJhF2


Generated by Claude Code

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bf8402137e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/V3-TRANSPILER-ADR.md Outdated
Comment on lines +54 to +57
> Reconciliation with current code: today `NodeRow` = `key(16) | edges(16) |
> value(480)` with `value` **opaque**. The `[Facet; 32]` / `tenant_schema` is
> the typed schema this ADR imposes on those same bytes — `ClassView` is the
> missing brick that turns the 480-byte slab into 30 typed tenant slots.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep the ADR on the 16+496 node layout

If a follow-up implementation follows this reconciliation block, it will reserve a 16-byte EdgeBlock and expose only a 480-byte value slab, but the current P0 canon in CLAUDE.md:51-52 defines a 16-byte key plus a 496-byte value, and docs/NODEGUID-CANON-AUDIT.md:92-100 records the old 12+4 EdgeBlock as superseded. That makes this ADR a stale wire contract: tenant slots would be offset and sized against the wrong record layout, so generated tenant schemas would not match existing NodeGuid consumers.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed & merged: ADR now follows the key(16)+value(496) canon; 12+4 EdgeBlock recorded as superseded (F-5). Resolving.


Generated by Claude Code

Comment thread docs/V3-TRANSPILER-ADR.md Outdated
Comment on lines +47 to +48
`ClassView::tenant_schema(classid) -> [TenantRole; 32]`, **static per classid**
(keeps each tenant a homogeneous, SIMD-scannable GUID column). Roles:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not put typed tenant schemas on ClassView

This new ClassView::tenant_schema API contradicts the existing ClassView materialization contract: docs/integration/CLASSVIEW-MATERIALIZATION-PLAN.md:68-73 says Class carries types while ClassView is label-only, and docs/integration/CLASSVIEW-MATERIALIZATION-PLAN.md:269-278 calls adding type information to ClassView an anti-pattern because codegen should use Class. If the follow-up implements tenant typing on ClassView, render consumers that rely on the label-only field-mask contract will be coupled to storage/codegen semantics the repo explicitly keeps out of that trait.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed & merged: tenant typing moved onto Class (label-only ClassView untouched), per CLASSVIEW-MATERIALIZATION-PLAN §3 + AP#2. Resolving.


Generated by Claude Code

…+-only; extract() is todo!()) — mirrors ruff #32 Codex fixes
…ck superseded (F-5); tenant typing on Class not ClassView; cite ≤64/paginate-via-hierarchy canon

Copy link
Copy Markdown
Owner Author

Thanks @codex — both correct against canon; fixed in the commit above.

  • P1 node layout → ADR now follows the CLAUDE.md:51-52 canon key(16) + value(496) and drops the 12+4 EdgeBlock as superseded (NODEGUID-CANON-AUDIT.md F-5). 32 slots = self key + 31 value tenants; edges are GUID-reference tenants ('relations ARE the addressing'). The stale 16+16+480 in lance-graph canonical_node.rs is flagged as the F-5 canon-vs-code divergence to reconcile at the lance-graph level (and the contract expansion will do so in the same change).
  • P2 tenant typing → moved off ClassView onto Class (CLASSVIEW-MATERIALIZATION-PLAN.md §3 + anti-pattern Sprint 2: Odoo carve-out + 4 SKOS design principles + 5 vocab gaps closed #2); ClassView stays label-only. Implemented as an expansion of the existing lance_graph_contract::Class, not a new type.

Bonus: that same plan (§5, ≤64 / 'paginate via class hierarchy') is now cited as the existing-canon form of the capacity-as-SoC lint.


Generated by Claude Code

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create an environment for this repo.

@AdaWorldAPI AdaWorldAPI merged commit e02b911 into main Jun 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant