Repository navigation
contract: Nars16x8, MoorePalettePairs, MooreNars16 value tenants (ordinals 18-20) - #1408
Conversation
Three append-only 16-byte value tenants after Register1: - Nars16x8 = 18, U16 x 8 at row [284,300) - MoorePalettePairs = 19, U8 x 16 at row [300,316) - MooreNars16 = 20, U16 x 8 at row [316,332) Layout-preserving: NodeRow stays 512, existing tenants and CE64 fields are unchanged, no ENVELOPE_LAYOUT_VERSION bump. ValueSchema::Full carries all three; narrower presets do not. The BoardAggregates reservation re-bases to 21. moore_tenant.rs adds the canonical slot order (NW,N,NE,W,E,SW,S,SE), zero-copy lane access through value_offset(), the MooreNars16 reading (Pearl3|Energy4|Plasticity3|Polarity1|Epi5), the direction refusal for sign-triple consumers, and a homogeneous-witness lift that refuses mixed W and reserved Epi5 codes without writing. Tests A-L: layout, preservation of tenants 0..17, lane isolation, LE round trip, slot identity, Palette256 pairs vs PairAddress (#1336), exhaustive field round trip, direction refusal, witness ownership, ISA observational equivalence through the shipped ops, zero fallback, codec mutations. Full byte total re-pinned 252 -> 300. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R
tenants.md gains rows for Register0/1 (shipped without a row) and the three new tenants; le-contract.md gains section 3c on non-facet Moore lanes; board entry records the byte table, refusals, tests A-L and the ten disable runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R
|
Warning Review limit reachedYour organization has reached its usage spending cap. Adjust your spending cap in the billing tab. Next included review available in 4 minutes. View limit detailsLimit details: You’ve used the included review currently available. Your 61 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (11)
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. 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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 75c83c45c7
ℹ️ 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".
| /// | ||
| /// [`MooreRefusal::ReservedEpi5`] for a code outside the canonical codebook. | ||
| pub const fn epistemic(self, slot: MooreSlot) -> Result<EpistemicState5, MooreRefusal> { | ||
| match EpistemicState5::decode(Epi5Gen::V1, self.epi5_raw()) { |
There was a problem hiding this comment.
Require declared provenance before decoding Epi5
When a lane is lifted from a legacy or otherwise undeclared CE64 source whose bits 59..63 happen to be in 0..23, this direct decode returns a plausible canonical EpistemicState5 instead of refusing it. The decoder itself explicitly says edge reads must go through Epi5Declarations::project_state5, which checks class, rail, generation, and provenance; because lift_ce64 exposes none of that context and calls this method for validation, legacy temporal bits can silently acquire current epistemic semantics. Accept and validate the declaration/provenance during lifting, or keep the field raw until a declared projection is available.
Useful? React with 👍 / 👎.
| fn set_u16(&mut self, tenant: ValueTenant, slot: MooreSlot, v: u16) { | ||
| let at = tenant.value_offset() + 2 * slot.index(); | ||
| self.value[at..at + 2].copy_from_slice(&v.to_le_bytes()); |
There was a problem hiding this comment.
Record Moore writes in the tenant counters
When the crate is built with tenant-counters, writes through set_nars16, set_moore_nars16, set_palette_pair, and successful lift_ce64 calls never invoke tenant_update, so snapshots report zero activity for all three new tenants even while their bytes are changing. This breaks the documented per-tenant write-cascade instrumentation used by census and wiring measurements; each public setter path should increment its corresponding tenant counter, as the existing Kanban, style-lane, and Register128 setters do.
Useful? React with 👍 / 👎.
Three append-only value tenants after
Register1. Layout-preserving:NodeRowstays 512 B, tenants 0..17 and all CE64 fields are unchanged, and there is noENVELOPE_LAYOUT_VERSIONbump. Commits:28ec7c0(code and tests),75c83c4(docs and board),0c280e4(merge ofmainwith #1407),d076a6a(J follows the strict ISA),7852ed4(board fix).Byte table
Nars16x8MoorePalettePairsMooreNars16iis Moore sloti, in the orderNW,N,NE,W,E,SW,S,SE(taken from the existing probes).2iis the first Palette256 operand and byte2i+1the second. The law address is(first << 8) | second, which is feat(shader): wire closed Palette256 perturbation kernel #1336'sPairAddress.MooreNars16=Pearl3 | Energy4 | Plasticity3 | Polarity1 | Epi5, the reading from Probe: MooreNars16 as a Moore-local representation of ISA-visible CE64 state #1406.ValueSchema::Fullcarries all three tenants. The narrower presets carry none. Full grows from 252 to 300 B.BoardAggregatesreservation re-bases to 21.New module
contract::moore_tenantMooreSlot,MooreNars16,MooreTenantViewandMooreTenantMut. All lane access goes throughValueTenant::value_offset(); there is no literal offset.DirectionReading::require_sign_triplerefuses a Moore-local direction.MooreTenantMut::lift_ce64refuses mixed witnesses and Epi5 codes 24..31. It checks all eight lanes before writing any, and returns the witness to the owner.Tests A–L
moore_tenant.rs, 11 tests. G is exhaustive over all 65536 lane values, plus a CE64 bit map.cognitive-shader-driver/tests/moore_palette_pairs_lut.rs. Checks the tenant pairs againstPairAddress,PaletteLutandQuad8.lance-graph-planner/tests/moore_tenant_isa_equivalence.rs. Lifts through the shipped tenant and runs the strict ISA from CE64 ISA: strict decoder, register methods, field contracts #1407:forwardandlearnin both operand positions, plussyllogize. Fixtures use only the five executable codes. Over 256 tenants × 8 lanes × 5 ops there are 0 divergences outside the sign triple. An anti-vacuity test restores the wrong witness and shows the result diverges.Disable runs (each one red, then restored)
ce64_upperdrops the witnessNars16x8descriptor changed to U8 × 16FulldropsMooreNars16Open
Nars16x8u16 reading is not declared anywhere.SlabReadingvariant gates these tenants yet.Docs:
.claude/v3/soa_layout/tenants.md(rows 16–20),le-contract.md§3c, board entryentries/2026-10-08-hhtl-nars-moore-value-tenants.md.🤖 Generated with Claude Code
https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R