Skip to content

probe: DAV × EWA × revision active-observation cycle - #1344

Merged
AdaWorldAPI merged 6 commits into
mainfrom
probe/dav-ewa-revision-cycle
Oct 6, 2026
Merged

AdaWorldAPI merged 6 commits into
mainfrom
probe/dav-ewa-revision-cycle

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

What

One diagnostic jc example that wires three existing pieces into a closed, replayable loop:

  1. lance-graph-contract::sigma_propagation::ewa_sandwich, the certified EWA kernel, defines local reach.
  2. jc::quorum::pairwise_agreement_u8, the quorum dispersion 1 − σ/σ_max(k), gives the route disagreement as its complement.
  3. GadamerRevision is the only way an observation changes what the probe believes.

There is no new pillar, primitive, 0..63 ordinal, production policy or write path.

The loop

epistemic hole -> EWA frontier -> route disagreement -> top-1
  -> reveal (only entry of hidden truth) -> GadamerRevision -> replay from delta.resulting -> collapse

The belief state is the revision horizon.

  • Bit i of independent_roots means site i was observed; bit i of projected_claims is what was observed there.
  • The routes read that horizon and nothing else.
  • A revealed observation is presented as a new independent root, and the result is adopted only if the verdict is EvidentialEffect::IncreaseEligible. Replay then reads delta.resulting.
  • The counterfactual docket (is_acceptable) is not walked: this updates the probe's working horizon, not actual-world state.

Falsifiers (runtime asserts in main; CI now runs the example)

  • Reach rule, at every aperture: the target is in the frontier iff a^10 >= floor, computed independently with powi. When it is reachable it ranks first. The floor 0.0025 puts the boundary between 0.50 and 0.55, so this demonstrates the rule, not that 0.55 is special.
  • Enumeration order cannot change the ranking. The check includes a real score tie, at a=0.65 between sites 6 and 13, with an anti-vacuity guard.
  • Before observation, the selected site has disagreement 255 (maximally split).
  • No laundering: DAV's own route consensus, presented as an inherited root, is refused by revision, the horizon is unchanged, and the hole stays open.
  • After observe, revise and replay: disagreement at the selected site is 0, and residual disagreement over all withheld sites goes from 255 to 0.
  • Ordinal baseline: k=1 picks site 6, which already had disagreement 0, and leaves the residual at 255.
  • Determinism: running the cycle twice gives an identical result, horizon included.

Disable runs, each red at its own assertion:

disable fails at
observe skips adopting the revision result replay did not collapse the selected hole
court-of-appeal gate removed route consensus changed the belief state
idx tie-break removed enumeration order changed the ranking (a=0.65)
disagreement forced to 0 reachable target must rank first
reveal sent as inherited instead of independent must enter as a new independent root

Changed from the first version

  • The revision call was decorative. Its delta was asserted on and discarded, and replay wrote the observation directly. Deleting the call left the probe green.
  • Disagreement re-implemented the quorum formula locally. It now calls the jc function.
  • The 0.45 misses / 0.55 hits asserts held only because of the chosen floor. They are replaced by the reach rule above.
  • Fixed rustfmt and a clippy map_or error, both CI failures.
  • CI: jc-proof.yml now runs the example and triggers on revision.rs and sigma_propagation.rs.

Known limits

  • The EWA field is isotropic (M = √a·I), so the kernel computes a^h. It is the real kernel, but its anisotropy, which is the part that would matter, is not exercised.
  • Below reach, top-1 is a zero-disagreement site. A scheduler should probably skip those; that is not changed here.

Follow-up question: can Option<bool> become an existing LG carrier?

Yes, without changing the control contract, because the contract already reads exactly two planes: observed and value. That is the NULL representation ruled in #1334: an ordinary value lane plus its resident validity plane (lance-graph-quack: Mask, Filter::is_null / is_not_null, Filter::sql_where).

The smallest follow-up slice:

  • Hold the sites as a quack population with one value lane and its validity Mask.
  • Select candidates as Filter::and([Filter::is_null(valid), frontier]). With an isotropic EWA field the frontier is a contiguous hop range, so Cmp::Range works.
  • Write back only from delta.resulting, by setting the validity bit and the value. On the revision side, EvidenceMask for [u64; N] already covers more than 64 sites.
  • The routes stay probe-local scans over the lanes.

One trap to avoid: do not list the frontier's column in sql_where's nullable. Cmp::Range is gated on its lane's validity there, so it would drop exactly the NULL rows that are the candidates.

This is not trivial, because it needs a mask-risc population fixture, so it is not in this PR.

Run

cargo run --manifest-path crates/jc/Cargo.toml --example dav_active_observation_probe

🤖 Generated with Claude Code

https://claude.ai/code/session_01DgxrCafsJuAahpBs7oC14R

Summary by CodeRabbit

  • Tests
    • Added an observation-probing example that evaluates how candidate observations are ranked and how new evidence affects revision results.
    • The automated pull-request checks now run this example and include additional revision and propagation changes in their trigger paths.

@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Pull request is closed - (🔄 Check again to try again)

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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 @coderabbitai help to get the list of available commands.

@cursor

cursor Bot commented Oct 6, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot 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: b2dff3cd-a090-4ee9-9c53-dd45ec6638c4)

claude added 3 commits October 6, 2026 05:34
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DgxrCafsJuAahpBs7oC14R
The belief state is now the revision horizon: routes read it, a revealed
observation changes it only when GadamerRevision admits it as a new
independent root, and replay reads delta.resulting. Before this, the
revision call was asserted on and discarded, and deleting it left the
probe green.

Disagreement now comes from jc::quorum::pairwise_agreement_u8 instead of
a local copy of its formula. Adds the anti-laundering negative (route
consensus as an inherited root is refused and changes nothing), the
enumeration-order check over a real score tie, the ordinal k=1 baseline
by residual disagreement, and the reach rule a^h >= floor at every
aperture in place of the hand-picked 0.45/0.55 asserts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DgxrCafsJuAahpBs7oC14R
AdaWorldAPI pushed a commit that referenced this pull request Oct 6, 2026
plan_dids.py rejected the added plan for carrying no D-id. One id per
§18 proof step (P0..P8), STATUS_BOARD rows (P0 #1345 and P1 #1344 in
PR, the rest queued), INTEGRATION_PLANS prepend. SUPERSESSION-INDEX
regenerated after the board writes; unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DgxrCafsJuAahpBs7oC14R
@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review October 6, 2026 08:24
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codex Review Summary

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-06T08:26:12.610829Z 943b430 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.

@cursor

cursor Bot commented Oct 6, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot 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: 40612ab4-f463-4c26-b8f9-201a9cab2f8f)

@AdaWorldAPI
AdaWorldAPI merged commit eead532 into main Oct 6, 2026
10 checks passed
AdaWorldAPI pushed a commit that referenced this pull request Oct 6, 2026
Four recipes as match arms, each calling one shipped primitive directly:
observe/fold (Quorum::observe), finite-product interrogation
(Quad8::fold_product), Moore interrogation (Morton8x8::checked_offset +
PalettePerturbation::hop over Register128), and counterfactual removal +
revision (GadamerRevision::revise, run twice).

A thread-local counting allocator shows every recipe runs with zero
allocations, so no instruction vector is built (plan §12). ProbeRecipe
is its own type and is never converted into a shipped recipes ID; the
ordinal meanings are a scaffold, not canon. No Pearl projection (P7) and
no selector (P6).

6 tests (zero allocation, per-primitive oracles incl. all 16 lanes / 84
visits, counterfactual runs or reports NotRun, input separation, replay,
namespace), 4 disable runs red.

Board: D-GSO-5 In PR; D-GSO-0/1/4 marked Shipped (#1345, #1344, #1351).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DgxrCafsJuAahpBs7oC14R
AdaWorldAPI pushed a commit that referenced this pull request Oct 6, 2026
Round 7 of the cognitive-shader-driver proof ladder closes the loop to
#1344 on the D-CTX surface. Belief is an InterpretiveHorizon over
[u64; 4], one bit per pixel. The D-CTX-4 rendered witness is presented
as an inherited interpretation with no root and is never adopted
(Reinterpretation / NoIncrease); an observation reads only the resident
palette and is one new independent root (HorizonExpansion or
IndependentConfirmation). delta.resulting is adopted only on
IncreaseEligible.

Measured: two Fisher-Z laws render different fields and give identical
final belief; replay is identical and re-presenting an observation is an
Echo; a loop step allocates 0 B. The steepest rendered pixel on the
split tile is one pixel off the material boundary, and render-guided
search is not reliably better than a row-major scan (24 vs 34 on the
split tile, 35 vs 34 on quadrants), so the order is pinned, not claimed
useful. 7 tests, 5 disable runs red.

strongest_boundary moves to support/boundary.rs with an
address-predicate variant; boundary_measure_probe imports it unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U5ZJLtEBxeLPKX1pLRkHhc
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