Skip to content

pearl::hydrate: a binding counts only under the relation's own predicate - #1572

Closed
AdaWorldAPI wants to merge 2 commits into
mainfrom
ccr-c09987ed-cuk6r5
Closed

AdaWorldAPI wants to merge 2 commits into
mainfrom
ccr-c09987ed-cuk6r5

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

⊘ WITHDRAWN 2026-10-15 — closed unmerged, reverted in c48ad7f8; the tree equals main.

member-tests on d738638 turned tests/maturation_ladder.rs 12 of 19 red and tests/residue_fixed_point.rs 3 of 4 red. Both suites build their sealed chains as (0, edge): the ChainStep ordinal is not the relation's predicate in this substrate, and a chain handed to hydrate is already one relation's chain by construction. The "foreign-predicate binding" this PR guards against does not occur; the guard keyed on a field that does not carry that identity and broke the ladder.

The local gate ran --lib and the probe examples, not --tests, which is how it reached CI red. The body below is kept as written for the record; its "Red before, green after" and gate table describe the --lib run only.

Closeout: PR #1572 | STATUS: rejected | OUTCOME: premise false (step ordinal ≠ predicate); reverted, nothing landed | OPEN: none.


What

pearl::hydrate (crates/lance-graph-planner/src/pearl.rs) is the only runtime writer of the topology coordinate of EpistemicState5 (bits 59..63, #1381): it moves IndirectUnknown → IndirectKnown when the sealed chain holds both A → B and B → Y.

It matched those bindings by endpoints alone. Any step A → B plus any B → Y, under whatever predicate ordinal, counted as locating the intermediate of A -p-> Y. A chain recorded under another predicate is another chain and says nothing about where this relation's missing link sits.

Change

The binding match now requires the step's predicate ordinal (ChainStep.0, "the predicate ordinal it travels under") to equal the hydrated edge's p_idx before the endpoints are compared. Steps under a foreign predicate are not counted at all, not even as Partial. Certification is untouched, as before. Module and function docs updated to state the rule.

Falsifier

hydration_counts_only_bindings_under_the_relations_own_predicate:

  • both legs under a foreign predicate → ProposedOnly, edge unchanged;
  • one leg foreign → Partial, topology unchanged;
  • silence twin: same-predicate legs beside the foreign ones still hydrate to IndirectKnown.

Red before the change (the foreign chain returned Hydrated), green after.

Gates

gate result
cargo test -p lance-graph-planner --lib 462 passed, 3 ignored
pearl:: module 23 passed (22 + the new one)
self_orchestration_probe / staunen_scheduler_probe (hydrate callers) 15 / 23 passed
cognitive-shader-driver --features with-planner --example pearl_ladder_probe 4 passed
cargo clippy -p lance-graph-planner --lib --no-deps -- -D warnings clean

Every in-tree caller (the three probes above and givens_layer_probe, which has an unrelated hydrate) builds both chain legs and the hydrated edge under one predicate, so none changes behaviour.

Board

No new type, plan, deliverable or epiphany; a correction to a shipped function with its falsifier. Closeout: STATUS: fixed | OUTCOME: hydrate matches bindings under the relation's own predicate | OPEN: none.

🤖 Generated with Claude Code

https://claude.ai/code/session_017SNHxJYC1MeW3HsyhGZo1E


Generated by Claude Code


Generated by Claude Code

`hydrate` located the intermediate `B` of `A -p-> Y` by endpoints alone:
any sealed step `A -> B` plus any `B -> Y`, under whatever predicate,
moved the topology from `IndirectUnknown` to `IndirectKnown`. A chain
recorded under another predicate is another chain; it says nothing about
where this relation's missing link sits.

The match now requires the step's predicate ordinal to equal the hydrated
edge's `p_idx` before the endpoints are compared. Foreign-predicate steps
are not counted at all, not even as `Partial`.

Falsifier `hydration_counts_only_bindings_under_the_relations_own_predicate`:
both legs foreign -> `ProposedOnly`; one leg foreign -> `Partial`, topology
unchanged; silence twin: same-predicate legs beside foreign ones still
hydrate. Red before the change (returned `Hydrated`), green after.

Gates: planner lib 462 passed; `self_orchestration_probe` 15,
`staunen_scheduler_probe` 23, `pearl_ladder_probe` 4; clippy -D warnings
clean on the lib (pre-existing example lints untouched).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017SNHxJYC1MeW3HsyhGZo1E
@coderabbitai

coderabbitai Bot commented Oct 15, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · 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.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Owner Author

Withdrawn; closing.

member-tests failed on d738638: tests/maturation_ladder.rs 12 of 19 red, tests/residue_fixed_point.rs 3 of 4 red. Both suites build their sealed chains as (0, edge) — the step ordinal is not the relation's predicate in this substrate, and a chain handed to hydrate is already one relation's chain by construction. The premise of this PR (a "foreign-predicate binding") does not occur; the guard keyed on a field that does not carry that identity and broke the ladder.

My local gate ran --lib and the probe examples, not --tests; that is how it reached CI red. Reverted in c48ad7f8 (tree now identical to main; maturation_ladder 19/19, residue_fixed_point 4/4, pearl:: 22/22 locally).


Generated by Claude Code

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