Repository navigation
D-GSO-AFF-0: recipe eligibility as a measurement over CausalEdge64 - #1370
Conversation
CausalEdge64 x RecipeLaw[0..63] -> EligibleRecipes: u64, as two const-table lookups and one AND. No scheduler, task, capability object, recipe list or allocation; the u64 is transient and never written back. Bits 59..63 are read as one EpistemicState5 code through the shipped accessors (spare() << 2 | truth_raw()): ten declared codes, ordered without regard to strength; undeclared codes refuse. Bits 40..42 keep their Pearl reading. Seven recipes declare requires/forbids facts and Pearl planes; the rules compile at build time into [u64; 32] and [u64; 8]. Falsifiers: same bits + same law generation give the same population and the generation matters (F1/F8); a relevant factor flips its bit (F2); S/P/O, F/C, bits 43..45, mantissa, plasticity and witness are swept over their full ranges with no change (F3); the tables match an independent re-derivation that names every refusal (F4/F5); preference only clears bits (F6/F7); zero allocations (F9). A half-field write to bits 59..60 turns code 17 into an undeclared 18, which refuses. 8 tests, 7 disable runs red. Board: D-GSO-AFF-0 row and inventory entry; D-GSO-7a marked Shipped (#1369). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T8w7Ucm7NhitfTduFKmhYx
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (6)
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 a probe that maps declared epistemic-state codes and Pearl projections to eligible recipes. It adds two recipe-law generations, measurement diagnostics, preference filtering, selection, tests, example documentation, and a measurement report. ChangesAffordance Measurement
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant Caller
participant Measure as measure
participant Edge as CausalEdge64
participant Tables as eligibility tables
Caller->>Measure: provide edge and law generation
Measure->>Edge: read provenance, state code, and Pearl projection
Edge-->>Measure: return encoded readings
Measure->>Tables: look up state and Pearl masks
Tables-->>Measure: return eligibility masks
Measure-->>Caller: return intersected eligibility or refusal
Suggested reviewers: Merge Risk: ⚪ Minimal · up to No actionable merge-blocking risk is established; the PR is mergeable after normal checks. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 64.52% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 31 functions across 1 files. (5 skipped: 5 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
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. A rabbit taps the recipe bits, Comment |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: da77e3c0-a1d5-4c7a-9e71-539afa6c4f56) |
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. |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: 6b3cc0bb-2193-442a-b7e8-73eceef20619) |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 078fa2d2b8
ℹ️ 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".
Codex review: measure read bits 59..63 from any edge. On a v1 row those are old temporal bits; temporal = 128 sets bit 59 and reads as code 1 (Causes), making COUNTERFACTUAL_PROBE eligible. measure and explain now take band_reading::EdgeProvenance and refuse V1Legacy and Unknown, the same rule band_reading applies to these bits. New test v1_and_unknown_provenance_refuse; dropping the gate turns it red. 9 tests, 8 disable runs red. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T8w7Ucm7NhitfTduFKmhYx
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: 742220ab-8734-44b2-8023-05bb061b41a5) |
A SPOG coordinate read from (classid, CausalEdge64) with no stored column: S/P/O are the resident bytes, G is graph_of(classid) (the existing "g via classid" rule), and the Witness slot is a sub-context inside G for classes that declare that reading. Slot 0 reads as no anchor. Undeclared classes, another reading of the slot, and v1/unknown provenance refuse. Compared with the real MailboxSoA::apply_edges routing: within one graph it accepts exactly the edges in the same SPOG context on all 64 x 64 slot pairs; across graphs it diverges, because routing reads no classid. Recorded as ISS-MAILBOX-ROUTES-WITNESS-WITHOUT-GRAPH; not fixed here. 7 tests, 6 disable runs red, 0 allocations. Board: D-SPOG-W-0 row and entry, ISSUES row; D-GSO-AFF-0 marked Shipped (#1370). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T8w7Ucm7NhitfTduFKmhYx
ce64_cycle_survival_probe: one MailboxSoA edges row (cycle-gated write_row + tick) is the only cross-cycle state. Each cycle folds observations with the shipped CausalEdge64::learn (NARS revision of F/C), counts distinct sources in a per-cycle SupportLedger (dropped at cycle end), settles the EpistemicState5 code and writes the register back. The next cycle measures eligibility with the #1370 law, moved unchanged to examples/shared/affordance_law.rs. Eligibility over cycles 0..3: OBS, OBS, OBS|STRATIFY, OBS: accumulation without certification, certification read by the next cycle, contradiction read by the next cycle. F1-F7 tests; 1000 folds from one source never certify; sources split across cycles never combine (missing state, pinned). 9 tests, 7 disable runs red. The EpistemicState5 step (code 3 <-> 7) is probe-declared: learn() never writes bits 59..63 and no production writer from evidence exists. Recorded as ISS-NO-EVIDENCE-WRITER-FOR-EPISTEMIC-STATE. Board: D-ALPHA-G-0 and D-WA-0 Shipped (#1372); D-CE64-TIME-0 row; ISSUES entry; inventory entry; entries index. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T8w7Ucm7NhitfTduFKmhYx
… mailbox D-CE64-NEXTSTATE-0 (ce64_nextstate_probe, 6 tests, 7 disable runs red): EpistemicState5 is a sparse 5-bit next-state mutation; the shipped with_spare + with_truth already compile to bzhi/shl/or, so no new writer. Adds CausalEdge64::to_le_bytes / from_le_bytes (mirroring EpisodicEdges64) and the register contract on the type. D-ANCESTRY-K1-0: from .claude/v3 first, then code (history is shallow at #1327). The v3 ladder StreamDto -> PerturbationDto -> BusDto was meant to close a loop: EmitMode::Persist names the row, persist_cycle writes emitted_edges[0], the mailbox-thoughtspace shim reads it next dispatch. It was never closed: the driver owned its mailbox read-only and run() is &self. Path B. D-STREAMDTO-0 (streamdto_circuit_probe, 6 tests, 6 disable runs red): adds ShaderDriver::mailbox_mut, the smallest completion. A real StreamDto goes through ingest, dispatch k, write-back via write_row, tick, and dispatch k+1, which reads the edge and changes. Measured limits: the edge steers k+1 only through s_idx / 4; the shader writes code 0, so #1370 eligibility is unchanged by the circuit; timestamp is not the cycle. Ingress into the mailbox has no production arm (new ISSUES entry). CI: adds a feature-gated step; w2_differential and the new probe were never run by the default-feature job. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T8w7Ucm7NhitfTduFKmhYx
…tate5 Addresses ISS-NO-EVIDENCE-WRITER-FOR-EPISTEMIC-STATE with one declared, versioned candidate; the production decision stays open. One MailboxSoA CE64 row tracks "pixel P is a material boundary". Each cycle reads the start-of-cycle copy through MailboxSoaView, presents its encounters to GadamerRevision, and settles the code by transition V1 (3 -> 7 on >= 2 admitted Differs roots, 7 -> 3 on ContradictionPreserved); the code is written in cycle k and read in k+1. Bits 59..63 are written as one joint code (the #1370 reading); every write is a code EPI_LAW declares. Rendered witnesses propose the claim but carry no root, so the revision never admits them and they never move the code. One source repeated is one root; cross-cycle corroboration is pinned as missing state. 11 tests, 7 disable runs red. Board: D-CTX-5 and D-CTX-6 -> Shipped (#1367); D-CTX-7 row and entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U5ZJLtEBxeLPKX1pLRkHhc
…esian V1) Replaces the hand-assigned ten-code #1370 codebook with the dense product the two old fields already formed: raw5 = topology | certification << 2, CausalTopology ordinals x P7a certification codes, 24 meaningful states, 8 reserved (certification 6/7). Validity is only certification < 6; IndirectUnknown x Causes and Unknown x Causes are meaningful (procedure is the affordance law's job). OBSERVED is dropped: observation is evidence, not a coordinate. - contract: Topology2, Certification3, per-factor facts, derived COMPILED_FACTS_V1, factor updates (with_topology/with_certification); the legacy translation table is gone (P7a + topology is identity packing). - causal-edge: with_topology is the canonical topology-factor writer (no longer deprecated); the TrustTexture / historical-band / untyped writers stay deprecated for bypassing the declared reading. - affordance law compiles per factor; state = topology & certification. - probes remapped: #1379/cycle/nextstate 3/7 -> 0/4 (Direct x Open / Direct x Associated), affordance fixtures 25/5/17 -> 10/9/21, streamdto 7 -> 4; P7a stamps every contract; entropy_topology migrated to the canonical projection. - #1378 probe: canonical == topology lens + P7a decode over all 32 codes (24 agree / 0 disagree / 8 reserved), derived table == rules, frontier cases 22/23, legacy-reading class refuses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
streamdto's main table printed retired #1370 sample codes (25 and 30 are now reserved); it now prints the 24 meaningful states by coordinate. S4 pins the reread's topology and certification as well as its raw code. The inventory entry records the storage / raw5-semantics / name-collision census: MUL's TrustTexture types have no bridge to the CE64 lens. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
The two resolved ISSUES Status lines still described the ten-code #1370 codebook, the 11/0/13 census and a test that no longer exists; they now state the Cartesian V1 contract and its 24/0/8 conformance. The D-EPI-CONFLICT-0 row is marked Superseded, its old pins labelled historical. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
Probe only. It adds no library code, persists nothing, moves no CE64 bits, and adds no scheduler, task, capability object or recipe list.
Claim
CausalEdge64 × RecipeLaw[0..63] → EligibleRecipes: u64comes out of the existing substrate as two const-table lookups and one AND. Theu64is measured fresh each time and never written back.spare() << 2 | truth_raw(), through the shipped accessors.COUNTERFACTUAL_PROBEreads them.requires/forbidsfacts and Pearl planes. These compile at build time into[u64; 32](per code) and[u64; 8](per Pearl projection).eligible & preference, so it can only clear bits.Falsifiers (8 tests, 7 disable runs red)
HYDRATE_INTERMEDIATEforMECHANISM_FOLD; SO → SPO moves onlyCOUNTERFACTUAL_PROBE.with_topologyturns code 17 into code 18, which refuses.Inventory findings
direction): no crate outsidecausal-edgereads them. Inside it, the pathology helpers,concern_level,CausalNetwork::detect_simpsons_paradox,composeand the V3 lift read them as the per-plane pathology triad.MailboxSoA::apply_edgesdrops any edge whosew_slotdiffers from the mailbox's. Reading the slot as an evidence class would drop edges there. Width 6 is assumed in four places.band_readingdeclares the two halves separately. A joint 5-bit reading needs its own declaration.composeuses the sameleft * 256 + rightpair orientation asPairAddress.StepMask(u64): already exists, but for template step positions, a different index space from recipe ordinals. So the probe uses a plainu64.Board: D-GSO-AFF-0 status row and entry
2026-10-06-affordance-measurement.md; D-GSO-7a marked Shipped (#1369).🤖 Generated with Claude Code
https://claude.ai/code/session_01T8w7Ucm7NhitfTduFKmhYx
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation