Skip to content

dr-math-binding-probe: D-NFR-1 mapping replay and kept-result admission - #2023

Merged
AdaWorldAPI merged 1 commit into
mainfrom
ccr-ca0562e7-hudvlz-nfr1
Nov 11, 2026
Merged

AdaWorldAPI merged 1 commit into
mainfrom
ccr-ca0562e7-hudvlz-nfr1

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

This is D-NFR-1 (d-native-repr-contract-v1.md), read as mapping replay per the 2026-11-11 note and DECISION EXO-255.

What it adds

src/nfr1.rs. The library names lance-graph-dt64 only (Frame, MapTable, TileMap).

FramedBinding<Q>

  • seal pins a binding to one Frame. It refuses a binder resolved under another relation map.
  • replay reproduces the assignment through the sealed frame.
  • admit admits a table again only while three things hold: the bound tile still reads through the frame, the relation map is unchanged, and the tile's width and globals are unchanged. A content-only advance stays admitted and reads the new content. A pure extension still refuses in the lab.

Kept<P> holds a content-dependent result, such as a precomputed WHERE mask.

  • It refuses the result after a content change; read_or_recompute recomputes it instead.
  • It refuses the result for another binding.
  • It never survives a mapping advance, even by recomputing, because recomputing re-admits first.

Wiring

  • pub mod nfr1; in the crate's lib.rs.
  • lance-graph-dt64 as a dependency.
  • crates/lance-graph-dt64/** added to the workflow's path filters.

Evidence

  • cargo test --manifest-path crates/dr-math-binding-probe/Cargo.toml: every suite passes, including 14 in tests/nfr1.rs. clippy -D warnings and fmt are clean.
  • T14 checks that admission allocates nothing, with a counting allocator.

Disable runs. Each anchor was asserted to occur exactly once, each run turned its test red, and the file was restored afterwards.

Test Disable
T2 replay through table.seal()
T3 a source check added to admit
T4 coordinates check short-circuited
T5 relation-map check short-circuited
T6 coordinates check replaced by a whole-frame coordinates compare
T7 coordinates check replaced by extends
T8 bound-tile read through table.seal()
T9 seal's relation-map check short-circuited
T10 Kept's source check short-circuited
T11 Kept's source check replaced by same_issue
T13 Kept's binding check short-circuited
T14 globals compared through to_vec()

Not covered by a one-line disable

  • T12 (a kept mask never survives a mapping advance). read_or_recompute re-runs admit, which refuses with the same error, so the match arm and admit are redundant guards and no single line separates them. It would take two edits: widen the arm and bypass admit in the recompute branch. The redundancy was kept on purpose.
  • T1's disable is in the test fixture, not in the library.

Not verified

  • No ns-per-admit figure was taken.
  • The fixture is one class split with 200 rows.

Generated by Claude Code

FramedBinding seals a binding against one Frame, replays the mapping to
reproduce the assignment, and admits a table again only while the relation
map, the bound tile and the frame hold. A content-only advance stays
admitted and reads the new content. Kept<P> holds a content-dependent
result and refuses it after a content change unless recomputed, and never
across a mapping advance (EXO-255). Admission allocates nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMPJjVvasjwqhjJ6c9p
@coderabbitai

coderabbitai Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 07299cdb-becc-4776-accb-655c452ec825
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review November 11, 2026 19:57
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-11T19:59:27.933973Z 4a45cd4 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@AdaWorldAPI
AdaWorldAPI merged commit 7d55d1f into main Nov 11, 2026
10 checks 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.

2 participants