Repository navigation
lance-graph-dt64: the bind store for meaning and behaviour - #1869
Merged
Merged
Conversation
DT is the existing DTO binding store, addressed by ClassId (D-DRDT §1). This crate is that store as production code: a workspace member whose only dependency is the zero-dep contract. It holds bindings and their version log, never business data, and evaluates nothing. Closes the four D-DRDT §4 gaps: - MethodId + SigRev: identity independent of the source name; - Guard = set_algebra::SetExpr + Logic, the description Quack's WHERE evaluates; Guard::witness is its normal form (Kleene for K3); - ordered effects (field position + AlgebraRef, the D4 polyfill ref); - one lookup: resolve(view, classid, schema_rev), fields borrowed from the ClassView, methods from the store; resolve_at by DR position. D5: register is idempotent for an identical binding and refuses any other (BehaviourImmutable); an override is register_derived plus a re-route. Only routing is versioned: an append-only route log with routed_at(version, position). D-DRDT §5: admit(MethodRef) refuses a dropped, added or mismatched guard and a stale signature revision; resolve refuses another schema revision and a ClassView whose field basis moved. The first DR #4 falsifier passes: equal read/write sets, different effect order, both kept and distinct. 11 tests; clippy -D warnings and fmt clean. Board: STATUS_BOARD D-DT64-6-BS, plan Amendment A.5, entry 2026-10-30-d-dt64-6-bs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
A classid is a codebook lens, never one per item (operator). So:
- ClassSchema drops the declared view class; view_class(classid) is
ogar_codebook::classid_concept, the codebook's own split.
- Effect carries EffectOp::{Algebra(AlgebraRef), Call(MethodRef)}. A
Call reuses another lens's entry by reference, is admitted when the
caller registers (CallRefused wraps the reason), and callers_of(lens)
lists who reuses it.
Shaped by the XLOG session's critique: its per-Y count is three Calls
into one algebra lens (group-count twice, checked i64 Mul), two classes
bound in total. Route targets stay bare classids.
14 tests; clippy and fmt clean.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
…nature The XLOG session found that a Call recorded where a result goes but not what it reads: the binding could not tell counting R and S apart from counting R twice. Effect now carries ordered args (Field position or Const). MethodBinding::inputs is part of the signature, and a Call with another arity is refused at registration (ArityMismatch in CallRefused). Field args are checked against the caller's basis. 15 tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
Operator: the classid switches behaviour, labels and polyfill over otherwise agnostic addresses and algebra methods. The algebra lens classid and class-to-class Call were wrong and are removed. The store holds a classid-free algebra catalogue (AlgebraEntry: id, sig_rev, polyfill, inputs; immutable; D-DT64-6 D6). A consumer's effects bind an AlgebraRef with ordered operands, checked at registration (UnknownAlgebra, AlgebraRevisionMismatch, ArityMismatch). users_of lists the classids switching over an entry. XLOG's count and an ONNX Mul(int64) node reuse one entry; only the consumers carry classids. 15 tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
Operator: classid x WideFieldMask ergonomics is the ERB Redmine
fieldview pattern, as in OGAR ogar-render-askama::field_view.
Resolved::field_view(mask) yields FieldRow { position, label, predicate }
ascending, the position as layout address, labels borrowed late from the
ClassView (OGAR FieldView minus the value; the store holds none).
Resolved::action_ordinals() gives the methods as action addresses. 16 tests.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
DT owns field semantics; the contract carries them per predicate as PropertySpec (obligation, codec route, semantic type, marking). field_meaning joins fieldview rows to their spec; mask_where derives WideFieldMasks from meaning (risk: marking >= Pii; obligation: Required); unspecified surfaces fields with no spec, which never take the spec default. 17 tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
…ing masks register refuses UndeclaredRead: a step may read only declared reads or what an earlier step of the same method wrote, so a recipe's order is what it says. MethodBinding::footprint (ON, reads, writes) and Resolved::methods_touching(mask) let a risk or RBAC mask reach behaviour. 19 tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
#1862 merged at head 4707683, before the lance-graph-dt64 commits were pushed. PR_ARC_INVENTORY and LATEST_STATE record what landed and that the crate follows. Entries index regenerated after the rebase. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
AdaWorldAPI
marked this pull request as ready for review
October 30, 2026 16:09
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
AdaWorldAPI
pushed a commit
that referenced
this pull request
Oct 30, 2026
…-op classid question STATUS_BOARD: D-DT64-6-BS row is Shipped #1869; the D-TRACT-HARVEST-0 row still said "op signature -> classid", which #1870 corrected in the plans but not on the board. Plan D-DT64-6 Amendment A.5 addendum 7: one ONNX lens classid with op signatures as fields is the shape lance-graph-dt64 implements; the MethodKey vs MethodRef identity stays open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
AdaWorldAPI
pushed a commit
that referenced
this pull request
Oct 31, 2026
…1869 and #1871 PR_ARC_INVENTORY gains the #1869 and #1871 entries that were missing, LATEST_STATE records main after them, STATUS_BOARD moves the D-DT64-6-BS row, and a board entry records the dr module. Addendum 12 also records that #1871 merged without the thin-provisioned extent, which this branch restores. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPh2Seh2WLccCksAdY
This was referenced Oct 31, 2026
Merged
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.
Why a new PR
#1862 merged at head
4707683dc, before anylance-graph-dt64commit was pushed. The crate and its follow-ups were left on the branch. This PR rebases them onto currentmain.What
crates/lance-graph-dt64is the DT bind store for meaning and behaviour (D-DRDT §1/§4, D-DT64-6 §1/§3). It is a workspace member that depends only onlance-graph-contract, holds bindings and their version log (never business data), and evaluates nothing.Meaning (the classid is the lens)
view_class(classid)=ogar_codebook::classid_concept. Labels are resolved late through theClassView.field_view(&WideFieldMask)is the ERB/Redmine fieldview pattern, the same shape as OGARogar-render-askama::field_viewminus the value:FieldRow { position, label, predicate }.action_ordinals()lists the actions.field_meaning/mask_where/unspecifiedjoin each row to itsproperty::PropertySpec(obligation, semantic type, marking). A risk mask ismarking >= Pii. A field with no spec is UNKNOWN and never takes a default.Behaviour (the classid switches over agnostic algebra)
AlgebraEntry: id, sig_rev, polyfill, arity; immutable; D6).MethodBindings:MethodId+SigRev;WideFieldMask;Guard(SetExpr+Logic);Effect { target, algebra: AlgebraRef, args };Population/Truth/ value demand.registerrefuses: unknown algebra, revision or arity mismatch, out-of-basis positions, duplicate MethodIds, andUndeclaredRead(a step reading what no earlier step wrote).register_derivedplus a re-route. Only routes are versioned (routed_at).resolve/resolve_at/admitgive named refusals, never an empty answer.admitcovers a dropped, added or mismatched guard and a stale SigRev.footprint()/methods_touching(mask)let a meaning mask reach behaviour.The XLOG session shaped much of this. Its per-Y count (group-count twice, then checked i64 Mul) and an ONNX
Mul(int64)node reuse one catalogue entry, and only the two consumers carry classids.Board: PR_ARC_INVENTORY / LATEST_STATE records for #1862; plan Amendment A.5 and its addenda.
Tests
cargo test -p lance-graph-dt64: 19 pass.clippy --all-targets -D warningsand fmt are clean.Open, with the owners (EXO-50 27–29)
CapabilityAuthoritywiring (D6); persistence (EXO-55).Generated by Claude Code