Repository navigation
gkat-probe: a K3 guard reads a leaf plus validity, never a NULL's payload; D-GKAT-0 board closeout - #1679
Conversation
Quack carries NULL as a validity plane and a three-valued verdict as the masks T(φ) and F(φ) (Filter::sql_where); UNKNOWN is neither, so there is no separate UNKNOWN bit. The probe invented one (is_t, is_u). A K3 observable is now the pair (T, F) with T ∧ F excluded; WHERE = T and CHECK = ¬F. Same three atoms per observable, same verdicts on every flow. a_k3_observable_is_quacks_t_f_pair failed before this change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
|
@codex review Generated by Claude Code |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. 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. Comment |
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. |
|
Codex Review: Didn't find any major issues. Keep it up! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
The previous commit encoded a K3 observable as a T/F verdict pair, which is not how the substrate stores it. Quack stores a nullable column as a value lane plus a validity bit; a cleared validity bit is NULL and its value is 0. A K3 observable is now exactly that: (value, valid) with value -> valid. WHERE = value, CHECK = value | !valid. a_k3_observable_is_a_value_bit_and_a_presence_bit failed before this. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
|
@codex review Head is now 4e062f2. A K3 guard is now a value bit plus a presence bit, replacing the earlier T/F pair, and main #1677 is merged in. Generated by Claude Code |
|
Codex Review: Didn't find any major issues. Breezy! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
A K3 observable is now two tests, the leaf and validity, with no constraint between them. The leaf is the Boolean read off the stored value: the bit itself for a BOOLEAN column, a comparison for a numeric or text one. Under a cleared validity bit the payload is arbitrary (Quack Filter::sql_where; PostgreSQL stores no value), so all four pairs are atoms and NULL is the two with valid = 0. The previous encoding forced the payload to 0 under NULL and lowered Where as the bare leaf, so it read the payload wherever that assumption failed. Where is now valid AND leaf, Check is NOT valid OR leaf, matching sql_where's T and NOT F. New test a_k3_guard_never_reads_the_payload_of_a_null failed before the fix. Rubicon has 64 atoms; every equivalence and safety verdict is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
|
@codex review Generated by Claude Code |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
Follow-up to #1676 (D-GKAT-0, PROBE). It also carries the board closeout.
K3 encoding
A K3 observable is a leaf over a nullable column, and it occupies two tests:
leafandvalid.BOOLEANcolumn, the stored bit itself (in Quack, a mask plane);rev = 5. There, 0 and 1 in the lane are ordinary numbers.valid = 0PostgreSQL stores no value, and Quack keeps an arbitrary payload that "never takes part in the answer" (crates/lance-graph-quack/src/lib.rs,Filter::sql_where).valid = 0.sql_where'sT(φ)and¬F(φ), and neither reads the leaf under a NULL:Where=valid ∧ leafCheck=¬valid ∨ leafHistory.
(is_t, is_u), an UNKNOWN bit the substrate does not have.Whereas the bare value bit. That assumption is false, so the guard read the payload of a NULL wherever it failed.Tests.
a_k3_guard_never_reads_the_payload_of_a_nullfailed before the fix. It checks that the atom set contains a NULL with either payload, and that flipping the leaf undervalid = 0changes neither guard.Disables, each red:
Whereungated. Only the payload test catches this one: the flow and the authorization share the lowering, so Rubicon safety stays green.Checklowered as the leaf.Wherelowered as validity.Checklowered asWhere.29 tests pass; clippy
-D warningsand fmt are clean. The branch contains main.Board closeout for #1676
6d7442c4).bccff823and two workspace jobs had finished. The re-review came back clean, and no job failed on main.🤖 Generated with Claude Code
https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f