Repository navigation
contract: signed Register128 readings (32×i4, 16×i8) with a per-family law - #1410
Conversation
…y law Two new slab readings, RegisterI4x32 = 2 and RegisterI8x16 = 3, over the existing Register0/Register1 rails. The slab declares the carving; the binder declares the law (RelativeOffset, AxisPosition, Support) at ResolvedReading::bind_signed_register, once per population. Every read and write of SignedRegisterLanes checks rail, carving and law, and a refused write leaves the row unchanged. Out-of-range i4 values are refused, never saturated. bind_register128 (the unsigned 4xu32 words reading) is unchanged and refuses the signed carvings; bind_signed_register refuses Register128, Facet96 and undeclared slabs. EpistemicState5 has no law here: it stays on CE64 bits 59..63. I4x32 gains from_bytes/as_bytes so the i4 carving reuses its nibble layout. No layout change: the rails, NodeRow and ENVELOPE_LAYOUT_VERSION are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (7)
Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour. 📝 WalkthroughWalkthroughThe change adds signed i4 and i8 readings for Register128 rails. It adds slab declarations, law-checked binding, and validated read and write methods. Tests cover encoding, refusal cases, and rail isolation. Documentation records the contract and its current scope. ChangesSigned Register128 readings
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant ResolvedReading
participant SignedRegisterLanes
participant NodeRow
ResolvedReading->>SignedRegisterLanes: bind_signed_register(rails, law)
SignedRegisterLanes->>NodeRow: read or write the selected rail
NodeRow-->>SignedRegisterLanes: return rail bytes or updated row
Suggested reviewers: Merge Risk: ⚪ Minimal · up to This adds signed Register128 readings without changing existing storage layout or the unsigned reading path. Refused writes leave rows unchanged. No merge-blocking risk was found. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
A rabbit packs the nibble tight, Comment |
forward() now returns Result and refuses non-executable codes, so the fixture draws only the five executable mantissas and unwraps the result. Re-verified: the energy-3-bit disable still turns J red. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R
|
This PR does not touch that file. Generated by Claude Code |
…egister-readings # Conflicts: # .claude/board/entries/README.md
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 32a7ddf096
ℹ️ 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".
…binder Codex P2 on #1410: bind_signed_register took the law as a parameter, so a writer binding Support and a reader binding AxisPosition both succeeded over the same bytes. The binder no longer chooses a law. Two authorities must agree: - the slab records the law its bytes were written under, inside the reading: SlabReading::RegisterI4x32(law) / RegisterI8x16(law), tags 2..=7 (to_tag is the inverse of from_tag); - the Activation declares the law per concept (with_register_laws, register_law_for, fail-closed: NoRegisterLawFor). bind_signed_register(activation, rails) refuses a mismatch with RegisterLawMismatch. Activation::new is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R
…, tenants Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R
|
This is not caused by this PR.
All other checks on this head are green ( No fix exists yet. Two possible fixes, both outside this PR's scope:
Generated by Claude Code |
member-tests hit its 30-minute limit on main (run 37766947128) and on #1410, both cut off in the hydrate step. The time went to one binary: the crossword_real_words_probe example tests (D-PUZZLE-0, added 2026-10-07) ran 810 s at opt-level 0. The shader-driver test step now passes --config 'profile.dev.package.cognitive-shader-driver.opt-level=3'. Only that package is optimized; debug info stays 0 from the manifest and every other crate keeps the shared opt-level-0 cache. Measured locally: 184 s for that binary, 4m17 for the whole step including the compile, all green. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R
This PR adds signed readings to the existing
Register0/Register1rails. It has three layers:There is no layout change: the rails,
NodeRowandENVELOPE_LAYOUT_VERSIONare unchanged.Commits:
14831543: contract and tests.b98d4573: board.ed4459ee: merge ofmainafter planner: fix moore_tenant_isa_equivalence for the strict ISA (main build break) #1409 (only the generated board index conflicted; it was regenerated).96304b88: law authority, after the Codex P2 finding.4c8dc638: board.Carving and recorded law (declared by the slab)
SlabReadingRegisterI4x32(law)-8..=72k= low nibble of bytek(theatoms::I4x32layout)RegisterI8x16(law)-128..=127k= bytekWithin each triple, the tag order is
RelativeOffset,AxisPosition,Support.to_tagis the inverse offrom_tag. The recorded law is the law the writer actually wrote with.Law
RegisterLawhas three variants:RelativeOffset: a window address (-3= three positions back). It is not a strength, and anything outside the window goes through a basin or graph edge.AxisPosition: a position on a declared semantic axis. It never changesis_a.Support:+supports,0is unresolved,-falsifies.The binder chooses no law:
Activationdeclares the law per concept (with_register_laws/register_law_for). It fails closed withNoRegisterLawFor.ResolvedReading::bind_signed_register(&activation, rails)takes no law. It refusesRegisterLawMismatchwhen the slab's recorded law differs from the concept's law, so a writer and a reader of one population always hold the same law.Every
read_*/write_*onSignedRegisterLanesalso takes the law the caller expects. It refuses, in order, an absent rail, a different carving and a different law. An i4 outside-8..=7is refused, never saturated. A refused write leaves the row unchanged.The unsigned word reading stays separate:
bind_register128(4 × u32 words) is unchanged and refuses the signed carvings.bind_signed_registerrefusesRegister128,Facet96and undeclared slabs.EpistemicState5gets no law; it stays on CE64 bits 59..63.atoms::I4x32gainsfrom_bytes/as_bytes.Activation::newis unchanged.Inventory (in the board entry)
The only resident 24×i4 lane on
mainisCausalWitness(tenant 14, Facet96 read as G24N4). The others are:Support): probe only.AxisPosition): fixture only.EpisodicBasin: references, not i4.This PR does not move
CausalWitness.Tests and disable runs
a_different_law_is_refused_and_writes_nothinga_different_carving_is_refusedsigned_writes_stay_inside_their_railan_out_of_range_i4_is_refused_before_writingRegister128as i4signed_rails_need_a_signed_carving_and_an_agreeing_lawto_tagshifts the I8x16 tagsan_unsupported_physical_reading_fails_closedfrom_tagdrops the lawLocal results:
lance-graph-contractlib: 1458 passed.jcregister128_bounded_stats: 2 passed.lance-graph-ogar: builds.-D warningsand fmt: clean.Open
with_register_lawsyet, so in production every concept refuses to bind signed registers. That is fail-closed.🤖 Generated with Claude Code
https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R