From d873bbf833f642511cf98c7f6b874ce62ced566a Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 08:08:05 +0000 Subject: [PATCH 1/7] board: link the ChatGPT-authored PRs #1601-#1617 to their owning plans them arc rows and one shared recovery entry, but most of their docs and data named no plan or board file, and no plan named them. - 19 artifacts (13 .arxiv notes, 2 language-LEGO docs, the 34-recipes doc, 2 qualia readmes, the act-r README) gain a "Plan and board" line under their title, pointing at an existing owning plan. - 11 existing plans gain a "Connected sources from #1601-#1617" section listing what they own (3 docs that already linked their plan are listed plan-side only). - graph_hop.rs names .claude/board/ISSUES.md instead of a bare ISSUES.md. - Board: entry 2026-10-20-chatgpt-prs-1601-1617-plan-links.md, a STATUS_BOARD section, an INTEGRATION_PLANS entry, regenerated index. No content, plan or D-id is invented. Qualia verifiers still pass (the pinned digest covers the JSON data, not the readmes). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f --- ...y_bayesian_model_comparison_vs_ce64_mul.md | 2 + ...encog_hyperon_100_page_reading_bookmark.md | 2 + ...theorem_matches_must_preserve_witnesses.md | 2 + ...ibutes_structure_matching_gasm_bookmark.md | 2 + ...top_down_crosslinguistic_graph_bookmark.md | 2 + ...is_smash_mask_first_thought_coordinates.md | 2 + ..._score_decorative_cot_ablation_bookmark.md | 2 + ...terminations_excess_information_grounds.md | 2 + ...ition_capacity_breaks_two_hop_retrieval.md | 2 + ...ributed_datalog_wcoj_hypercube_bookmark.md | 2 + ...ectic_of_ai_hegel_geist_machine_freedom.md | 2 + ..._be_a_subject_like_us_hegelian_approach.md | 2 + ...phy_in_the_light_of_ai_hegel_or_leibniz.md | 2 + .claude/board/INTEGRATION_PLANS.md | 4 ++ .claude/board/STATUS_BOARD.md | 12 ++++++ ...-10-20-chatgpt-prs-1601-1617-plan-links.md | 42 +++++++++++++++++++ .claude/board/entries/README.md | 3 +- .../plans/alpha-channel-rung-overlay-v1.md | 6 +++ .claude/plans/ce64-grammar-wiring-v1.md | 11 +++++ .claude/plans/ce64-hypothesis-layers-v1.md | 6 +++ .../d-holo-address-indexed-algebra-v1.md | 7 ++++ .claude/plans/d-holo-h14c-thought-first-v1.md | 7 ++++ .../plans/d-holo-h14d-logic-mask-read-v1.md | 7 ++++ .claude/plans/dialectic-engine-v1.md | 9 ++++ .../jc-sbi-counterfactual-integration-v1.md | 6 +++ .../plans/metta-datalog-assimilation-v1.md | 6 +++ .claude/plans/octopus-causal-cot-audit-v1.md | 6 +++ .claude/plans/thought-git-api-v1.md | 8 ++++ crates/lance-graph-act-r/README.md | 2 + crates/lance-graph-mask-risc/src/graph_hop.rs | 4 +- data/qualia/MUSICAL_ANCHORS.md | 2 + data/qualia/MUSIC_ENRICHMENT.md | 2 + .../34-reasoning-recipes-lance-graph-plan.md | 2 + ...ic-lego-corpus-and-falsification-matrix.md | 2 + .../linguistic-lego-grammar-to-query-rfc.md | 2 + 35 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 .claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md diff --git a/.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md b/.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md index 49b89d52d..f1b94a025 100644 --- a/.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md +++ b/.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md @@ -1,5 +1,7 @@ # Meta-uncertainty in Bayesian model comparison: distinct from CE64 MUL +> **Plan and board (2026-10-20):** owned by [`jc-sbi-counterfactual-integration-v1`](../.claude/plans/jc-sbi-counterfactual-integration-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. + **Source:** Marvin Schmitt, Stefan T. Radev, Paul-Christian Bürkner, *Meta-Uncertainty in Bayesian Model Comparison*, AISTATS 2023 / PMLR 206. **Paper:** https://arxiv.org/abs/2210.07278 · [PDF](https://arxiv.org/pdf/2210.07278) (arXiv v3, 2023-02-21). **Read status:** Focused read of abstract, §§2–3.5, Proposition 2, minimum example and the overview of limitations; NOT an exhaustive reproducibility review. diff --git a/.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md b/.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md index 540881dcb..80e53b270 100644 --- a/.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md +++ b/.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md @@ -1,5 +1,7 @@ # READ LATER: OpenCog Hyperon (100-page background and introduction) +> **Plan and board (2026-10-20):** owned by [`metta-datalog-assimilation-v1`](../.claude/plans/metta-datalog-assimilation-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. + **Title:** *OpenCog Hyperon: A Framework for AGI at the Human Level and Beyond – High-Level Background & Introduction* **Primary author:** Ben Goertzel; with Vitaly Bogdanov, Michael Duncan, Deborah Duong, Zarathustra Goertzel, Jan Horlings, Matthew Ikle', Lucius Greg Meredith, Alexey Potapov, Andre Luiz de Senna, Hedra Seid, Andres Suarez, Adam Vandervorst and Robert Werko. **Source:** [arXiv:2310.18318v1](https://arxiv.org/abs/2310.18318) · [specific v1 PDF](https://arxiv.org/pdf/2310.18318v1). diff --git a/.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md b/.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md index eb97f4261..393dc40b9 100644 --- a/.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md +++ b/.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md @@ -1,5 +1,7 @@ # arXiv:2408.10592 — Hologram is a graph: theorems need matched witnesses +> **Plan and board (2026-10-20):** owned by [`d-holo-address-indexed-algebra-v1`](../.claude/plans/d-holo-address-indexed-algebra-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1601. + **Paper:** Litian Huang, Xinguo Yu, Feng Xiong, Bin He, Shengbing Tang, Jiawen Fu (2024), *Hologram Reasoning for Solving Algebra Problems with Geometry Diagrams* **Primary source:** https://arxiv.org/abs/2408.10592 **PDF:** https://arxiv.org/pdf/2408.10592 diff --git a/.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md b/.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md index 349028627..c81bc2d90 100644 --- a/.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md +++ b/.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md @@ -1,5 +1,7 @@ # READ LATER: Graph Attributes and Structure Matching (GASM) +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. + **Author:** Raphaël Candelier. **Paper:** *Graph matching based on similarities in structure and attributes*. **Primary source:** [arXiv:2409.20212v1](https://arxiv.org/abs/2409.20212v1) | [PDF](https://arxiv.org/pdf/2409.20212v1), submitted 2024-09-30. diff --git a/.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md b/.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md index f4e5bf7d5..cf791e864 100644 --- a/.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md +++ b/.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md @@ -1,5 +1,7 @@ # READ LATER: Top-down crosslinguistic semantic map graphs +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. + **Authors:** Zhu Liu, Cunliang Kong, Ying Liu, Maosong Sun. **Paper:** *A Top-down Graph-based Tool for Modeling Classical Semantic Maps: A Crosslinguistic Case Study of Supplementary Adverbs*. **Primary source:** [arXiv:2412.01423v3](https://arxiv.org/abs/2412.01423v3) | [PDF](https://arxiv.org/pdf/2412.01423v3); v3 2025-03-29, NAACL 2025. diff --git a/.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md b/.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md index 20fa827cb..36dfeaf9a 100644 --- a/.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md +++ b/.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md @@ -1,5 +1,7 @@ # Selective Yannakakis / SMASH: choose when to reduce before joining +> **Plan and board (2026-10-20):** owned by [`d-holo-h14d-logic-mask-read-v1`](../.claude/plans/d-holo-h14d-logic-mask-read-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. + **Paper:** Daniela Böhm, Georg Gottlob, Matthias Lanzinger, Davide Longo, Cem Okulmus, Reinhard Pichler, Alexander Selzer, *Selective Use of Yannakakis' Algorithm to Improve Query Performance: Machine Learning to the Rescue*. **Source:** [arXiv:2502.20233v2](https://arxiv.org/abs/2502.20233v2) | [PDF](https://arxiv.org/pdf/2502.20233v2) | [HTML](https://arxiv.org/html/2502.20233v2) (revised 2025-06-20). **Read status:** Source-grounded selective review of §§I–II, IV–VI, not independently replicated. **Date:** 2026-10-19. diff --git a/.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md b/.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md index 9824b1705..cfd790fcd 100644 --- a/.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md +++ b/.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md @@ -1,5 +1,7 @@ # READ LATER: Can Aha Moments Be Fake? True Thinking Score and decorative CoT +> **Plan and board (2026-10-20):** owned by [`octopus-causal-cot-audit-v1`](../.claude/plans/octopus-causal-cot-audit-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. + **Authors:** Jiachen Zhao, Yiyou Sun, Weiyan Shi, Dawn Song. **Paper:** *Can Aha Moments Be Fake? Towards Quantifying Decorative and True Thinking in Chain-of-Thought*. **Primary source:** [arXiv:2510.24941v4](https://arxiv.org/abs/2510.24941v4) | [PDF](https://arxiv.org/pdf/2510.24941v4); revised 2026-05-26. diff --git a/.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md b/.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md index d0165e27c..6c501380b 100644 --- a/.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md +++ b/.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md @@ -1,5 +1,7 @@ # Dialectics for Artificial Intelligence: reversible concepts, excess and grounds +> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md), [`thought-git-api-v1`](../.claude/plans/thought-git-api-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. + **Paper:** Zhengmian Hu, *Dialectics for Artificial Intelligence*. **Source:** [arXiv:2512.17373v2](https://arxiv.org/abs/2512.17373v2) | [PDF](https://arxiv.org/pdf/2512.17373v2) | [extended HTML](https://arxiv.org/html/2512.17373v2); revised 2025-12-23. **Related edition:** *Entropy*, DOI [10.3390/e28060611](https://doi.org/10.3390/e28060611). Different-length editions; use the cited version for equations/theorem numbers. diff --git a/.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md b/.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md index cf9d6066e..1ddcc8c5c 100644 --- a/.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md +++ b/.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md @@ -1,5 +1,7 @@ # arXiv:2606.24948 — Global superposition breaks two-hop retrieval before composition +> **Plan and board (2026-10-20):** owned by [`d-holo-address-indexed-algebra-v1`](../.claude/plans/d-holo-address-indexed-algebra-v1.md), [`d-holo-h14d-logic-mask-read-v1`](../.claude/plans/d-holo-h14d-logic-mask-read-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1601. + **Paper:** Randhir Kumar (2026), *Holographic Memory for Zero-Shot Compositional Reasoning in Knowledge Graphs: A Mechanistic Study of Where and Why It Fails* **Source:** https://arxiv.org/abs/2606.24948 **PDF:** https://arxiv.org/pdf/2606.24948 diff --git a/.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md b/.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md index 371f15b90..067ccddee 100644 --- a/.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md +++ b/.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md @@ -1,5 +1,7 @@ # READ LATER: Distributed Datalog at Scale with Worst-Case Optimal Joins +> **Plan and board (2026-10-20):** owned by [`d-holo-h14c-thought-first-v1`](../.claude/plans/d-holo-h14c-thought-first-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. + **Authors:** Kunting Qi, Yihao Sun, Kristopher Micinski, Thomas Gilray, Sidharth Kumar. **Paper:** *Distributed Datalog at Scale with Worst-Case Optimal Joins*. **Primary source:** [arXiv:2610.12692v1](https://arxiv.org/abs/2610.12692v1) | [PDF](https://arxiv.org/pdf/2610.12692v1), submitted 2026-10-08. diff --git a/.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md b/.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md index 0b49eb769..04175cbf1 100644 --- a/.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md +++ b/.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md @@ -1,5 +1,7 @@ # The Dialectic of AI: Hegel, Geist, and the Path to Machine Freedom +> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1610. + **Author:** Hung Vo **Published:** March 2025 https://hungvtm.medium.com/the-dialectic-of-ai-hegel-geist-and-the-path-to-machine-freedom-2432a0b75566 diff --git a/.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md b/.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md index 8b5475e6f..755e0623a 100644 --- a/.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md +++ b/.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md @@ -1,5 +1,7 @@ # Can AI be a subject like us? A Hegelian speculative-philosophical approach +> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1610. + **Author:** Ermylos Plevrakis **Journal:** Discover Computing 27, Article 46 (2024) **DOI:** https://doi.org/10.1007/s10791-024-09472-3 diff --git a/.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md b/.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md index 21b27f954..4d8d8fc6d 100644 --- a/.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md +++ b/.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md @@ -1,5 +1,7 @@ # Philosophy in the Light of AI: Hegel or Leibniz +> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1610. + **Author:** Sjoerd van Tuinen **Journal:** *Angelaki: Journal of the Theoretical Humanities*, 25(4), 97–109 (2020) **DOI:** https://doi.org/10.1080/0969725X.2020.1790838 diff --git a/.claude/board/INTEGRATION_PLANS.md b/.claude/board/INTEGRATION_PLANS.md index b01ccc921..96923db4f 100644 --- a/.claude/board/INTEGRATION_PLANS.md +++ b/.claude/board/INTEGRATION_PLANS.md @@ -26,6 +26,10 @@ - Finding: multi-hop over a large domain is blocked by scatter (push) as well as gather (pull); the tile is the only admitted shape (within a focus). Admissions A1 (global→local binding), A2 (large-domain multi-hop), A3 (scalar petgraph iteration) are open. - The existing petgraph `lance-fold-hop` experiment consumes the quarantined `OutgoingHop`; the plan does not build on it. +## 2026-10-20 — plan links for ChatGPT-authored #1601–#1617 (no new plan) + +**Status:** LINKS ONLY (entry `2026-10-20-chatgpt-prs-1601-1617-plan-links.md`). Eleven existing plans gained a `Connected sources from #1601–#1617` section: `d-holo-address-indexed-algebra-v1`, `d-holo-h14c-thought-first-v1`, `d-holo-h14d-logic-mask-read-v1`, `ce64-grammar-wiring-v1`, `ce64-hypothesis-layers-v1`, `thought-git-api-v1`, `alpha-channel-rung-overlay-v1`, `dialectic-engine-v1`, `metta-datalog-assimilation-v1`, `octopus-causal-cot-audit-v1`, `jc-sbi-counterfactual-integration-v1`. + ## 2026-10-19 — mork-pathmap-schnellverschluss-v1 — MORK / PathMap behind one replaceable boundary → `.claude/plans/mork-pathmap-schnellverschluss-v1.md` **Status:** D-MPS-0/1 MEASURED (probe, results only); D-MPS-2..5 upstream PROPOSALS; D-MPS-6 BLOCKED; D-MPS-7 OPEN. diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index 82db799dd..17590aaf0 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -13,6 +13,18 @@ Plan `mork-pathmap-schnellverschluss-v1.md`; entry `entries/2026-10-19-mork-path | D-MPS-6 | Lance-owned PathMap-trait cursor over a sealed `RelationOrder` | BLOCKED (`RelationOrder` not built) | no copy, or the copy stated | | D-MPS-7 | licence: no MORK source vendored until a licence is declared (#148 unmerged) | OPEN | probe vendors nothing | +## Plan links for ChatGPT-authored #1601–#1617 (2026-10-20) + +Entry `entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. Each docs or data artifact now names its owning plan, and each owning plan lists it. + +| Item | Scope | Status | Evidence | +|---|---|---|---| +| — | arXiv HGR / superposition notes (#1601) → D-HOLO plans; Cartesian self-model and Moore notes (#1602) → H14c, ce64-hypothesis-layers | LINKED | back-link under each title; `Connected sources` section in each plan | +| — | language LEGO (#1603), qualia anchors (#1607, #1608), GASM and semantic-map bookmarks (#1611) → `ce64-grammar-wiring-v1` | LINKED | as above | +| — | 34 recipes (#1609) → `alpha-channel-rung-overlay-v1`, `thought-git-api-v1`; Hegel / Leibniz / dialectics notes (#1610, #1611) → `dialectic-engine-v1` | LINKED | as above | +| — | Hyperon (#1611) → `metta-datalog-assimilation-v1`; SMASH → H14d; distributed WCOJ → H14c; decorative CoT → `octopus-causal-cot-audit-v1`; meta-uncertainty → `jc-sbi-counterfactual-integration-v1` | LINKED | as above | +| — | ACT-R crate (#1615) → D-JCSBI-3; `graph_hop.rs` (#1616) doc names `.claude/board/ISSUES.md` | LINKED | no plan owns the crate itself (open) | + ## Post-merge recovery for #1601–#1617 (2026-10-19) These PRs merged with no board rows. Every row below is a PROPOSAL (documents and fixtures) unless it says otherwise. Entry: `entries/2026-10-19-post-merge-recovery-1601-1617.md` (review-thread reconciliation). diff --git a/.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md b/.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md new file mode 100644 index 000000000..78fcabfc9 --- /dev/null +++ b/.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md @@ -0,0 +1,42 @@ +# ChatGPT-authored PRs #1601–#1617: plan and board links (2026-10-20) + +**Status:** DONE (links only). **Basis:** VERIFIED-IN-CODE. Every PR body in #1591–#1617 was read through the GitHub API. #1591–#1600 carry a Claude Code footer; #1601–#1617 do not, so they are treated as ChatGPT-authored. Their files were read in full before linking. No content, D-id or plan was invented: each artifact is attached to the existing plan whose subject it is. + +#1618 already gave all seventeen an arc entry and one shared recovery entry (`2026-10-19-post-merge-recovery-1601-1617.md`). What was missing: most artifacts named no plan or board file, and no plan named them. Measured before this change: of the 19 artifacts that now carry a back-link, 4 named a plan or board file (`2606.24948`, `2210.07278` and `2512.17373` a plan, the LEGO RFC a board entry), and their only incoming references were the arc and one lumped status row. + +## Links added + +Each artifact gains a `Plan and board (2026-10-20)` line under its title. Each owning plan gains a `Connected sources from #1601–#1617` section listing what it owns. + +| PR | artifact | owning plan | +|---|---|---| +| #1601 | `.arxiv/2408.10592_…witnesses.md` | `d-holo-address-indexed-algebra-v1` | +| #1601 | `.arxiv/2606.24948_…two_hop_retrieval.md` | `d-holo-address-indexed-algebra-v1`, `d-holo-h14d-logic-mask-read-v1` | +| #1602 | `.claude/architecture/cartesian-epistemic-self-model.md` (already linked H14c) | `d-holo-h14c-thought-first-v1` (plan side added) | +| #1602 | `.claude/architecture/neurofunctional-rubicon-moore-plasticity.md` (already linked) | `ce64-hypothesis-layers-v1` (plan side added) | +| #1603 | `docs/research/linguistic-lego-*.md` (2) | `ce64-grammar-wiring-v1` (case and agreement, D-CGW-2/3) | +| #1604 | `docs/research/versioned-semantic-candidates-64-thoughts-rfc.md` (already linked) | `thought-git-api-v1` (plan side added); also cited by causal-pickaxe and souffle plans | +| #1605 | `causal-pickaxe-resident-git-lance13-temporal-v1.md` | is a plan; on the index; CPG-0, CPG-1..6 rows exist | +| #1606 | `tools/semantic_ring_oracle/` | status row VSC-0; README links `thought-git-api-v1` | +| #1607 | `data/qualia/MUSICAL_ANCHORS.md` | `ce64-grammar-wiring-v1` (D-CGW-14, #1571 qualia device) | +| #1608 | `data/qualia/MUSIC_ENRICHMENT.md` | `ce64-grammar-wiring-v1` (D-CGW-14) | +| #1609 | `docs/research/34-reasoning-recipes-lance-graph-plan.md` | `alpha-channel-rung-overlay-v1`, `thought-git-api-v1` | +| #1610 | three Hegel / Leibniz `.arxiv` notes | `dialectic-engine-v1` | +| #1611 | `2512.17373` dialectics | `dialectic-engine-v1`, `thought-git-api-v1` | +| #1611 | `2210.07278` meta-uncertainty | `jc-sbi-counterfactual-integration-v1` (which already cites it) | +| #1611 | `2310.18318` Hyperon | `metta-datalog-assimilation-v1` | +| #1611 | `2409.20212` GASM, `2412.01423` semantic maps | `ce64-grammar-wiring-v1` | +| #1611 | `2502.20233` SMASH | `d-holo-h14d-logic-mask-read-v1` (mask first, then read) | +| #1611 | `2510.24941` decorative CoT | `octopus-causal-cot-audit-v1` | +| #1611 | `2610.12692` distributed WCOJ | `d-holo-h14c-thought-first-v1`; the WCOJ plans carry the gather-violation banner, so the bookmark is attached to the authority instead | +| #1612 | Soufflé plan | is a plan; on the index; D-SRAM-0..7 rows exist | +| #1613 | JC R API plan | is a plan; on the index; D-JCR rows exist | +| #1614 | JC SBI plan | is a plan; on the index; D-JCSBI rows exist | +| #1615 | `crates/lance-graph-act-r/README.md` | `jc-sbi-counterfactual-integration-v1` (D-JCSBI-3, the ACT-R recovery fixture); status row "ACT-R crate" exists | +| #1616 | `crates/lance-graph-mask-risc/src/graph_hop.rs` | `ISS-GATHER-HOP-1616`; its doc comment now names `.claude/board/ISSUES.md` instead of a bare `ISSUES.md` | +| #1617 | three D-RMAP plans | are plans; on the index; D-RMAP rows exist | + +## Open + +- No plan owns the ACT-R crate itself; D-JCSBI-3 consumes it. Typed buffers, Mask-RISC matching and learning stay future work (README "Next"). +- The `.arxiv` bookmarks marked READ LATER are unread sources; linking them claims nothing about their content. diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md index 434f88182..20204668a 100644 --- a/.claude/board/entries/README.md +++ b/.claude/board/entries/README.md @@ -25,7 +25,7 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately opposite directions; the stranding this convention prevents shows up in exactly one of them, never both. -378 entries, 2026-08-06 .. 2026-10-20. +379 entries, 2026-08-06 .. 2026-10-20. | date | entry id | finding | file | |---|---|---|---| @@ -33,6 +33,7 @@ exactly one of them, never both. | 2026-10-20 | `D-RST` | | [2026-10-20-relstore-geometry-not-graph-api.md](2026-10-20-relstore-geometry-not-graph-api.md) | | 2026-10-20 | `recursive-perspective-rebinding` | | [2026-10-20-recursive-perspective-rebinding.md](2026-10-20-recursive-perspective-rebinding.md) | | 2026-10-20 | `D-RMAP-2` | | [2026-10-20-d-rmap-2-tile-gemm-cell.md](2026-10-20-d-rmap-2-tile-gemm-cell.md) | +| 2026-10-20 | `chatgpt-prs-1601-1617-plan-links` | | [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](2026-10-20-chatgpt-prs-1601-1617-plan-links.md) | | 2026-10-19 | `post-merge-recovery-1601-1617` | | [2026-10-19-post-merge-recovery-1601-1617.md](2026-10-19-post-merge-recovery-1601-1617.md) | | 2026-10-19 | `native-join-relationship-table` | | [2026-10-19-native-join-relationship-table.md](2026-10-19-native-join-relationship-table.md) | | 2026-10-19 | `mork-pathmap-schnellverschluss` | | [2026-10-19-mork-pathmap-schnellverschluss.md](2026-10-19-mork-pathmap-schnellverschluss.md) | diff --git a/.claude/plans/alpha-channel-rung-overlay-v1.md b/.claude/plans/alpha-channel-rung-overlay-v1.md index 339876329..a443eac22 100644 --- a/.claude/plans/alpha-channel-rung-overlay-v1.md +++ b/.claude/plans/alpha-channel-rung-overlay-v1.md @@ -1219,3 +1219,9 @@ It does not claim the overlay improves recall, that eye-tracking residue finds needles, or that 64k rungs are reachable. It claims one thing: **the empty row in §2.3 has a design now, and six of its nine parts already exist.** Every number that would justify the rest has to be measured after D-ACR-1. + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`docs/research/34-reasoning-recipes-lance-graph-plan.md`](../../docs/research/34-reasoning-recipes-lance-graph-plan.md) (#1609): 34 reasoning tactics: source and Lance-graph wiring diff --git a/.claude/plans/ce64-grammar-wiring-v1.md b/.claude/plans/ce64-grammar-wiring-v1.md index 4498f405e..a8314ea80 100644 --- a/.claude/plans/ce64-grammar-wiring-v1.md +++ b/.claude/plans/ce64-grammar-wiring-v1.md @@ -295,3 +295,14 @@ D-CGW-13's OpenPSI runner. - No new opcode, interpreter or executor; the probe's rules run as quack filters. - No production write path for wire rows. - No change to `contract::revision` (G1–G7 are frozen). + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md`](../../.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md) (#1611): READ LATER: Graph Attributes and Structure Matching (GASM) +- [`.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md`](../../.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md) (#1611): READ LATER: Top-down crosslinguistic semantic map graphs +- [`docs/research/linguistic-lego-grammar-to-query-rfc.md`](../../docs/research/linguistic-lego-grammar-to-query-rfc.md) (#1603): Language LEGO: corpus-grounded grammar as executable graph-query algebra +- [`docs/research/linguistic-lego-corpus-and-falsification-matrix.md`](../../docs/research/linguistic-lego-corpus-and-falsification-matrix.md) (#1603): Language LEGO — repository harvest, legal gates and falsification matrix +- [`data/qualia/MUSICAL_ANCHORS.md`](../../data/qualia/MUSICAL_ANCHORS.md) (#1607): Calibrated 219: original musical-qualia annotations +- [`data/qualia/MUSIC_ENRICHMENT.md`](../../data/qualia/MUSIC_ENRICHMENT.md) (#1608): Musical enrichment of the calibrated 219 qualia diff --git a/.claude/plans/ce64-hypothesis-layers-v1.md b/.claude/plans/ce64-hypothesis-layers-v1.md index 7590c111a..d50275b61 100644 --- a/.claude/plans/ce64-hypothesis-layers-v1.md +++ b/.claude/plans/ce64-hypothesis-layers-v1.md @@ -789,3 +789,9 @@ two non-NARS revision laws (needs coresearch G2); R16 AriGraph evidence stamp - No new tenant until D-HL-4 picks an encoding. - No opcode added to the strict decoder by this plan. - No `.0.0` pins or new dependencies; probes use existing crates. + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.claude/architecture/neurofunctional-rubicon-moore-plasticity.md`](../architecture/neurofunctional-rubicon-moore-plasticity.md) (#1602): Neurofunctional crosswalk: OpenPsi/Rubikon control and Moore-local synaptic plasticity diff --git a/.claude/plans/d-holo-address-indexed-algebra-v1.md b/.claude/plans/d-holo-address-indexed-algebra-v1.md index 1c94bc2b6..decb25d18 100644 --- a/.claude/plans/d-holo-address-indexed-algebra-v1.md +++ b/.claude/plans/d-holo-address-indexed-algebra-v1.md @@ -1207,3 +1207,10 @@ operation. the tables its program selects. 7. The follow-up falsifier is **H14c** (thought-first positional reads, Hamming presence, Lance 13 masked I/O), run on its own branch and PR. + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md`](../../.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md) (#1601): arXiv:2408.10592 — Hologram is a graph: theorems need matched witnesses +- [`.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md`](../../.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md) (#1601): arXiv:2606.24948 — Global superposition breaks two-hop retrieval before composition diff --git a/.claude/plans/d-holo-h14c-thought-first-v1.md b/.claude/plans/d-holo-h14c-thought-first-v1.md index 80081483b..25ad43e52 100644 --- a/.claude/plans/d-holo-h14c-thought-first-v1.md +++ b/.claude/plans/d-holo-h14c-thought-first-v1.md @@ -599,3 +599,10 @@ payload, and Lance fetches whole pages for scattered masks. resident cost of positional tables without reintroducing traversal; whether to enable stable row ids for lane datasets; whether lane data that is read by scattered masks should be laid out so presence is page-local. + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md`](../../.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md) (#1611): READ LATER: Distributed Datalog at Scale with Worst-Case Optimal Joins +- [`.claude/architecture/cartesian-epistemic-self-model.md`](../architecture/cartesian-epistemic-self-model.md) (#1602): Cartesian Epistemic Self-Model: Presence, CE64, Datalog and Saccadic Understanding diff --git a/.claude/plans/d-holo-h14d-logic-mask-read-v1.md b/.claude/plans/d-holo-h14d-logic-mask-read-v1.md index e8490d175..341460358 100644 --- a/.claude/plans/d-holo-h14d-logic-mask-read-v1.md +++ b/.claude/plans/d-holo-h14d-logic-mask-read-v1.md @@ -239,3 +239,10 @@ Hardware counters (none on this VM). Lance decoded bytes, pages and allocations (not exposed). More than one tile. Quack's `lower_fused` path (another front end over the same mask-risc programs; relalg is used here because it carries the stage-1 reduction). + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md`](../../.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md) (#1601): arXiv:2606.24948 — Global superposition breaks two-hop retrieval before composition +- [`.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md`](../../.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md) (#1611): Selective Yannakakis / SMASH: choose when to reduce before joining diff --git a/.claude/plans/dialectic-engine-v1.md b/.claude/plans/dialectic-engine-v1.md index 9d13ba0aa..78711c999 100644 --- a/.claude/plans/dialectic-engine-v1.md +++ b/.claude/plans/dialectic-engine-v1.md @@ -330,3 +330,12 @@ stamps) and felt form (Datapath, texture) are one event read from two buckets. > lone-concept→shadow, size-matched, quarantine-caps-confidence. **Remaining V5:** > the S12 qualia-ablation FIELD-scale falsifier (doomscroll cycles, Staunen→Wisdom > conversion — texture-gated vs texture-ablated field must measurably differ). + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md`](../../.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md) (#1610): The Dialectic of AI: Hegel, Geist, and the Path to Machine Freedom +- [`.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md`](../../.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md) (#1610): Can AI be a subject like us? A Hegelian speculative-philosophical approach +- [`.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md`](../../.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md) (#1610): Philosophy in the Light of AI: Hegel or Leibniz +- [`.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md`](../../.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md) (#1611): Dialectics for Artificial Intelligence: reversible concepts, excess and grounds diff --git a/.claude/plans/jc-sbi-counterfactual-integration-v1.md b/.claude/plans/jc-sbi-counterfactual-integration-v1.md index 6d02a89c3..887547ea4 100644 --- a/.claude/plans/jc-sbi-counterfactual-integration-v1.md +++ b/.claude/plans/jc-sbi-counterfactual-integration-v1.md @@ -301,3 +301,9 @@ For all three, compare four schedulers with **matched total computation and iden **STOP** on: a generic power-grid algorithm masquerading as biology; the `dismech-rs` oracle acquiring OGAR/planner dependencies; a declared vocabulary operation assumed to be implemented; optimizer or coordinate layout bypass; unconstrained parameter and design dispatch; a stochastic posterior minted from deterministic reseeding; circular outcome validation; ACT-R utility/activation confused with NAL evidence; and simulator-derived results promoted to empirical observation. +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md`](../../.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md) (#1611): Meta-uncertainty in Bayesian model comparison: distinct from CE64 MUL +- [`crates/lance-graph-act-r/README.md`](../../crates/lance-graph-act-r/README.md) (#1615): lance-graph-act-r diff --git a/.claude/plans/metta-datalog-assimilation-v1.md b/.claude/plans/metta-datalog-assimilation-v1.md index d94875155..f0ee9c1f6 100644 --- a/.claude/plans/metta-datalog-assimilation-v1.md +++ b/.claude/plans/metta-datalog-assimilation-v1.md @@ -193,3 +193,9 @@ Rules of the doctrine: - **Enrichment never changes the original's answer on the original's inputs.** If an enriched reading disagrees with the oracle on an oracle fixture, the enrichment is wrong, not the oracle. - The status vocabulary is the repo's: `MEASURED` with its command, `VERIFIED-IN-CODE` with its location, `HYPOTHESIS`, `OPEN`. + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md`](../../.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md) (#1611): READ LATER: OpenCog Hyperon (100-page background and introduction) diff --git a/.claude/plans/octopus-causal-cot-audit-v1.md b/.claude/plans/octopus-causal-cot-audit-v1.md index f8702f708..0218c0997 100644 --- a/.claude/plans/octopus-causal-cot-audit-v1.md +++ b/.claude/plans/octopus-causal-cot-audit-v1.md @@ -1002,3 +1002,9 @@ Nine lines. Everything else in this file is the evidence for them. 13. No new plan, no new D-id. §17 is the lineage note itself; if a standalone `docs/` page is later wanted, it is §17.3 verbatim and nothing more. + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md`](../../.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md) (#1611): READ LATER: Can Aha Moments Be Fake? True Thinking Score and decorative CoT diff --git a/.claude/plans/thought-git-api-v1.md b/.claude/plans/thought-git-api-v1.md index 008f92265..6ba22e93f 100644 --- a/.claude/plans/thought-git-api-v1.md +++ b/.claude/plans/thought-git-api-v1.md @@ -248,3 +248,11 @@ specified here yet: The PR-record open item above also decides whether a landed thought that writes several datasets has one `DurableRef` per dataset (D-RMAP §7.6.3). + +## Connected sources from #1601–#1617 (2026-10-20) + +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. + +- [`.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md`](../../.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md) (#1611): Dialectics for Artificial Intelligence: reversible concepts, excess and grounds +- [`docs/research/34-reasoning-recipes-lance-graph-plan.md`](../../docs/research/34-reasoning-recipes-lance-graph-plan.md) (#1609): 34 reasoning tactics: source and Lance-graph wiring +- [`docs/research/versioned-semantic-candidates-64-thoughts-rfc.md`](../../docs/research/versioned-semantic-candidates-64-thoughts-rfc.md) (#1604): Versioned semantic candidates over 64 thoughts: admission, resolution, and replay diff --git a/crates/lance-graph-act-r/README.md b/crates/lance-graph-act-r/README.md index c6105218f..fa2f73c00 100644 --- a/crates/lance-graph-act-r/README.md +++ b/crates/lance-graph-act-r/README.md @@ -1,5 +1,7 @@ # lance-graph-act-r +> **Plan and board (2026-10-20):** owned by [`jc-sbi-counterfactual-integration-v1`](../../.claude/plans/jc-sbi-counterfactual-integration-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1615. + Experimental ACT-R cognitive **production arbitration kernel**, not a complete ACT-R cognitive architecture. ACT-R is *Adaptive Control of Thought, Rational*. This crate is not an actor, mailbox or `ractor` component. diff --git a/crates/lance-graph-mask-risc/src/graph_hop.rs b/crates/lance-graph-mask-risc/src/graph_hop.rs index 348d3f979..3e2cb03fb 100644 --- a/crates/lance-graph-mask-risc/src/graph_hop.rs +++ b/crates/lance-graph-mask-risc/src/graph_hop.rs @@ -1,7 +1,7 @@ //! Version-scoped one-hop graph fold over borrowed SoA edge lanes. //! -//! **QUARANTINED — gather shape (2026-10-19 remediation, ISSUES.md -//! ISS-GATHER-HOP-1616).** Both `Gather` ops below read a mask bit at a +//! **QUARANTINED — gather shape (2026-10-19 remediation, +//! `.claude/board/ISSUES.md` ISS-GATHER-HOP-1616).** Both `Gather` ops below read a mask bit at a //! position taken from another lane's values (`frontier[sources[i]]`, //! `visible[targets[i]]`), and the terminal scatters by `targets[i]`. That is //! the read the 2026-10-16 no-gather ruling marks as not to be built; the diff --git a/data/qualia/MUSICAL_ANCHORS.md b/data/qualia/MUSICAL_ANCHORS.md index b5c4b58b0..e26644e09 100644 --- a/data/qualia/MUSICAL_ANCHORS.md +++ b/data/qualia/MUSICAL_ANCHORS.md @@ -1,5 +1,7 @@ # Calibrated 219: original musical-qualia annotations +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1607. + This is an **additive, provenance-preserving** companion to the artifacts introduced by PR #1571. ## Files and boundaries diff --git a/data/qualia/MUSIC_ENRICHMENT.md b/data/qualia/MUSIC_ENRICHMENT.md index e2a32e584..aa94ff759 100644 --- a/data/qualia/MUSIC_ENRICHMENT.md +++ b/data/qualia/MUSIC_ENRICHMENT.md @@ -1,5 +1,7 @@ # Musical enrichment of the calibrated 219 qualia +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1608. + This is an **additive archival sidecar**, not a replacement for the #1571 ABI, palette, or binary Jina fixture. - Canonical/runtime: `calibrated_219.json` and `calibrated_219.bin1024` (**unchanged**). diff --git a/docs/research/34-reasoning-recipes-lance-graph-plan.md b/docs/research/34-reasoning-recipes-lance-graph-plan.md index 0b2ec2f64..536614ba6 100644 --- a/docs/research/34-reasoning-recipes-lance-graph-plan.md +++ b/docs/research/34-reasoning-recipes-lance-graph-plan.md @@ -1,5 +1,7 @@ # 34 reasoning tactics: source and Lance-graph wiring +> **Plan and board (2026-10-20):** owned by [`alpha-channel-rung-overlay-v1`](../../.claude/plans/alpha-channel-rung-overlay-v1.md), [`thought-git-api-v1`](../../.claude/plans/thought-git-api-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1609. + **Owner:** AdaWorldAPI/lance-graph **Status:** research and implementation plan, not a claim of complete execution **Source:** James Lee Stakelum, [Beyond Chain of Thought: 34 Next-Gen LLM Tactics Nobody's Talking About](https://medium.com/@JamesStakelum/beyond-chain-of-thought-34-next-gen-llm-tactics-nobodys-talking-about-43b644e1d951) diff --git a/docs/research/linguistic-lego-corpus-and-falsification-matrix.md b/docs/research/linguistic-lego-corpus-and-falsification-matrix.md index b13d9ba6c..d2e5088c9 100644 --- a/docs/research/linguistic-lego-corpus-and-falsification-matrix.md +++ b/docs/research/linguistic-lego-corpus-and-falsification-matrix.md @@ -1,5 +1,7 @@ # Language LEGO — repository harvest, legal gates and falsification matrix +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1603. + **Status:** source/integration inventory, not a dependency decision or measured result. **Captured:** 2026-10-18. Companion to [the grammar-to-query RFC](linguistic-lego-grammar-to-query-rfc.md). diff --git a/docs/research/linguistic-lego-grammar-to-query-rfc.md b/docs/research/linguistic-lego-grammar-to-query-rfc.md index 941f9ccae..31c87190a 100644 --- a/docs/research/linguistic-lego-grammar-to-query-rfc.md +++ b/docs/research/linguistic-lego-grammar-to-query-rfc.md @@ -1,5 +1,7 @@ # Language LEGO: corpus-grounded grammar as executable graph-query algebra +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1603. + **Status:** RESEARCH / RFC ONLY — not an implemented cross-language query compiler. **Captured:** 2026-10-18. **Target:** `lance-graph` SoA ABI, masked RelAlg/Datalog AST, R2IL/Quack, DeepNSM-v2, NAL, and the fixed CausalEdge64 ISA. From 79133f7a6b836133fea64d69b73bfa520c7bba01 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 08:31:01 +0000 Subject: [PATCH 2/7] D-RPR: fold #1624's missing contributions into the merged #1622 plan same-named entry and status rows D-RPR-0..6 are withdrawn (dropped in the rebase); what #1622 lacked is now plan section 11 under the existing ids: - D-RPR-1 sub-cases 1a-1f (kill condition + disable run each) - anti-vacuity rules, incl. the measured first-focus failure - independent oracles; green -> red -> green protocol - refusals by axis: version, focus, scope, ordering, thought identity, narrow frame, capacity - measured preparation/reuse costs (break-even 76/11/1.8, CSR vs tile, escape reporting, bytes, zero-copy tension) - two-variable and multiplicity limits Corrections: WORLD/ANGLE/THOUGHT are metaphors (pointer notes in sections 1 and 3); thought identity is #1605's ThoughtCommitId and DurableRef; the "D-RST resolves to no plan" claim is withdrawn; D-MTP-1's Semijoin path is gather-shaped; the two ThoughtMask meanings are OPEN. The draft chain probe is banked as a patch in .claude/harvest/d-rpr-1-chain-probe-draft/: it applies to main 4dbd085, 5 of 6 tests pass there, and it is not merged because D-RPR-1 is not authorized. Board: the D-RPR-1 evidence column, entry 2026-10-20-d-rpr-consolidation-1624.md, regenerated index. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f --- .claude/board/STATUS_BOARD.md | 2 +- .../2026-10-20-d-rpr-consolidation-1624.md | 29 ++ .claude/board/entries/README.md | 3 +- .../d-rpr-1-chain-probe-draft/README.md | 49 ++ .../chain-probe.patch | 473 ++++++++++++++++++ .../recursive-perspective-rebinding-v1.md | 101 ++++ 6 files changed, 655 insertions(+), 2 deletions(-) create mode 100644 .claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md create mode 100644 .claude/harvest/d-rpr-1-chain-probe-draft/README.md create mode 100644 .claude/harvest/d-rpr-1-chain-probe-draft/chain-probe.patch diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index 17590aaf0..3fd1dd9f1 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -48,7 +48,7 @@ These PRs merged with no board rows. Every row below is a PROPOSAL (documents an | D-RST-8 | multi-hop over a large domain | BLOCKED on admission A2 | — | | D-RST-9 | native borrowed relation views without petgraph: n-ary sorted permutations as ranges, pattern CSR/CSC as the binary case, stable fact ids, version pin, not `Copy`; starts from the planner's `AdjacencyStore`/`AdjacencyBatch` | LAB ONLY, not admitted to production; Queued (critical path, first) | F1: oracle equality, zero copies, compaction-stable ids, stale and out-of-domain refusals | | D-RPR-0 | recursive perspective rebinding: architectural distillation (`recursive-perspective-rebinding-v1.md`) | LAB ONLY, not admitted to production; PROPOSED; documentation only | claims graded IMPLEMENTED / MEASURED / PROBE / PROPOSED / OPEN against origin/main | -| D-RPR-1 | recursive question-chain probe over one corpus: escapes seed the next angle (H1), `rebind` vs full prepare vs no frame vs MORK oracle | LAB ONLY; not authorized (waits on admission A1 and an operator go) | exact parity; named refusal per failure case; marginal cost per angle with its crossover | +| D-RPR-1 | recursive question-chain probe over one corpus: escapes seed the next angle (H1), `rebind` vs full prepare vs no frame vs MORK oracle | LAB ONLY; not authorized (waits on admission A1 and an operator go) | exact parity; named refusal per failure case; marginal cost per angle with its crossover; sub-cases 1a–1f, anti-vacuity, oracles, disable protocol and refusal axes in plan §11 (folded from #1624); draft chain probe banked in `.claude/harvest/d-rpr-1-chain-probe-draft/` (5/6 tests green on `4dbd085`, not run as D-RPR-1) | | D-RPR-2 | premise revision with selective retraction | BLOCKED on D-TGA-3 (per-derived-cell provenance) | stale-premise refusal only, until then | | D-RPR-3 | MeTTa-facing parity of a chain's answers | BLOCKED on D-ASM-4 (not authorized) | — | | D-MPS-8 | native join over a versioned relationship table: R and S laid out by `y` slot, leapfrog intersection as one mask-risc `And`, per-side generations and reseal, per-thought filter planes (`mork-pathmap-schnellverschluss-v1.md` §7b; `crates/mork-pathmap-probe/src/join.rs`) | MEASURED, probe only; not admitted (D-RMAP-1 BIND membrane review) | 8 join tests + native arms in the differential suite vs the oracle; 7 guards disable-verified; cyclic bodies open | diff --git a/.claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md b/.claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md new file mode 100644 index 000000000..c80857f24 --- /dev/null +++ b/.claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md @@ -0,0 +1,29 @@ +# D-RPR consolidation: #1624 folded into the merged #1622 plan (2026-10-20) + +**Status:** DONE. **Basis:** VERIFIED-IN-CODE (plan diff) and MEASURED (the banked draft re-run on `main` at `4dbd085`). + +Two sessions distilled the same research brief. #1622 merged first and is canonical for D-RST and D-RPR. #1624 had defined a second `recursive-perspective-rebinding-v1.md`, an entry of the same name, and status rows D-RPR-0..6 whose numbers meant different things. Those are withdrawn. Their content that #1622 lacked is now `recursive-perspective-rebinding-v1.md` §11, under the existing D-RPR ids. + +## Folded in + +- D-RPR-1 sub-cases 1a–1f, each with a kill condition and a disable run (§11.2). They were D-RPR-1..6 in #1624. +- Anti-vacuity rules for the chain (§11.3), including one measured failure: a `discover`-seeded first focus already held the first answer. +- Independent oracles (§11.4); the green → red → green disable protocol (§11.5); refusals by axis: version, focus, scope, ordering, thought identity, narrow frame, capacity (§11.6). +- Preparation and reuse costs already measured: break-even 76 / 11 / 1.8; CSR against tile; escape reporting cost; bytes; the zero-copy tension (§11.7). +- Two-variable and multiplicity limits (§11.8). + +## Corrected + +- WORLD, ANGLE and THOUGHT are metaphors, not types or registers. There are pointer notes in §1 and §3. +- Thought identity is #1605's `ThoughtCommitId` / `DurableRef`. +- #1624's claim that D-RST resolved to no plan predates #1622 and is withdrawn. +- D-MTP-1's `Semijoin` path is gather-shaped. +- The two meanings of `ThoughtMask` are recorded as OPEN. + +## Preserved unchanged from #1624 + +The 19 artifact back-links, 11 plan forward-links and entry `2026-10-20-chatgpt-prs-1601-1617-plan-links.md`, rebased onto `main`. + +## Draft probe + +`.claude/harvest/d-rpr-1-chain-probe-draft/` (patch + README). 5 of 6 tests pass on `main`. The failure is the first-focus anti-vacuity case. It is not merged because D-RPR-1 is not authorized. diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md index 20204668a..43d3c6047 100644 --- a/.claude/board/entries/README.md +++ b/.claude/board/entries/README.md @@ -25,13 +25,14 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately opposite directions; the stranding this convention prevents shows up in exactly one of them, never both. -379 entries, 2026-08-06 .. 2026-10-20. +380 entries, 2026-08-06 .. 2026-10-20. | date | entry id | finding | file | |---|---|---|---| | 2026-10-20 | `relstore-quack-petgraph-plan` | | [2026-10-20-relstore-quack-petgraph-plan.md](2026-10-20-relstore-quack-petgraph-plan.md) | | 2026-10-20 | `D-RST` | | [2026-10-20-relstore-geometry-not-graph-api.md](2026-10-20-relstore-geometry-not-graph-api.md) | | 2026-10-20 | `recursive-perspective-rebinding` | | [2026-10-20-recursive-perspective-rebinding.md](2026-10-20-recursive-perspective-rebinding.md) | +| 2026-10-20 | `D-RPR` | | [2026-10-20-d-rpr-consolidation-1624.md](2026-10-20-d-rpr-consolidation-1624.md) | | 2026-10-20 | `D-RMAP-2` | | [2026-10-20-d-rmap-2-tile-gemm-cell.md](2026-10-20-d-rmap-2-tile-gemm-cell.md) | | 2026-10-20 | `chatgpt-prs-1601-1617-plan-links` | | [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](2026-10-20-chatgpt-prs-1601-1617-plan-links.md) | | 2026-10-19 | `post-merge-recovery-1601-1617` | | [2026-10-19-post-merge-recovery-1601-1617.md](2026-10-19-post-merge-recovery-1601-1617.md) | diff --git a/.claude/harvest/d-rpr-1-chain-probe-draft/README.md b/.claude/harvest/d-rpr-1-chain-probe-draft/README.md new file mode 100644 index 000000000..e2cc2f5ee --- /dev/null +++ b/.claude/harvest/d-rpr-1-chain-probe-draft/README.md @@ -0,0 +1,49 @@ +# D-RPR-1 chain probe: draft, banked as differential-test evidence (2026-10-20) + +**Status:** PROBE DRAFT, NOT MERGED, NOT RUN AS D-RPR-1. `chain-probe.patch` applies cleanly to `main` at `4dbd085` (`git apply --check`). It is kept here as a patch, not in the crate, for two reasons: D-RPR-1 is "not authorized; waits on A1 and an operator go" (`recursive-perspective-rebinding-v1.md` §10), and one of its six tests is red (below). + +Written by a second session from the instruction "use the existing substrate", before #1622 merged. It is an independent attempt at the chain D-RPR-1 describes, so it serves as a differential check of that design. + +## What the patch adds + +- `crates/mork-pathmap-probe/src/chain.rs` (171 lines): `ask` asks reachability on a prepared frame. While the answer has escapes, it brings those identities into the focus through `rebind` and asks again. A later question passes an earlier answer as its seeds. Slots are evicted only when they hold no identity an earlier answer still needs. +- `crates/mork-pathmap-probe/tests/chain.rs` (278 lines, 6 tests) and one `pub mod chain;` line in `src/lib.rs`. +- It calls only existing `rmap` functions: `Csr::prepare`, `rebind`, `Csr::reach`, `ScopedReach::global`, `Focus::replace`, `Tile::from_csr`, `TileExec::reach`, `ThoughtDelta`, `Witness`. It adds probe-local glue types (`Frame`, `Answer`, `Rebuild`, `ChainRefusal`), which the D-RPR-1 text ("adds no new types") does not allow for. That is a deviation to resolve before it could land. + +## Result, re-run on `main` at `4dbd085` (release, AVX-512 host) + +``` +cargo test --release --test chain (in crates/mork-pathmap-probe) +5 passed; 1 failed +``` + +| test | result | +|---|---| +| `incremental_frames_equal_full_preparation_and_reuse_rows`: rebind and full prepare give identical answers, focus, edge set, escape set and tile; rows both reused and newly resolved | ok | +| `a_changed_world_refuses_the_frame`: bumped facts witness gives `Stale(FactsChanged)` | ok | +| `a_focus_too_small_for_the_answer_is_refused`: `FocusExhausted{needed: 1, free: 0}`; silent twin with one evictable slot answers `{0,1,2}` | ok | +| `an_earlier_answer_survives_the_later_steps`: the first question re-asked at the end admits nothing, same answer | ok | +| `thoughts_run_over_the_frame_the_chain_produced`: 64 retraction thoughts equal an in-focus oracle over edited facts; `ThoughtMismatch` for another id; shared tile unchanged | ok | +| `every_step_of_the_chain_equals_the_global_oracle` | **FAILED** at the anti-vacuity assertion `answers[0].admitted.len() > 1` | + +In the failing test, the three per-step equalities with the global scan oracle pass, and the total admitted slots are above zero. Only the claim that the first question had to be re-asked fails. The cause is the fixture: the first focus is `discover` over all three predicates, 256 slots from the seed, and that already contains the 3-hop reach over predicate 0. So step 1 never escapes and tests nothing. The finding is recorded in the plan as sub-case D-RPR-1a's anti-vacuity rule. The fix is a narrower first focus, and nothing in the composition changes. + +## Compared with the D-RPR-1 design (plan §8) + +| D-RPR-1 element | draft | +|---|---| +| reuses `Focus`, `discover`, `Csr`, `rebind`, `ThoughtDelta`, `Witness`, `join.rs` | all except `join.rs`; adds glue types (above) | +| KJV corpus | not used; synthetic `rmap::graph(65 536, 3, 2, 512, 0.9)`, the plan's labelled fallback | +| escapes of angle k seed angle k+1 (H1) | escapes complete angle k (re-ask until global); the answer seeds angle k+1. H1 as worded is not tested | +| arms (c) full prepare, (d) rebind | both, pinned equal | +| arms (a) MORK / PathMap, (b) direct | not in the chain; they exist elsewhere in the crate | +| measures 1–10 | correctness only: reuse > 0 (3), 64 thoughts (7), changed premise (8), parity vs scan (10). No timings, no bags | +| refusals | `FactsChanged`, `IncompleteFocus` (loop condition), `ThoughtMismatch`; adds `FocusExhausted`. `OrderingMismatch`, `ScopeChanged`, `IndexResealed`, k = 256 not exercised; the dependency-cycle refusal stays OPEN | +| disable runs | not run | + +## To reproduce + +``` +git apply .claude/harvest/d-rpr-1-chain-probe-draft/chain-probe.patch +cd crates/mork-pathmap-probe && cargo test --release --test chain +``` diff --git a/.claude/harvest/d-rpr-1-chain-probe-draft/chain-probe.patch b/.claude/harvest/d-rpr-1-chain-probe-draft/chain-probe.patch new file mode 100644 index 000000000..f794d7e09 --- /dev/null +++ b/.claude/harvest/d-rpr-1-chain-probe-draft/chain-probe.patch @@ -0,0 +1,473 @@ +diff --git a/crates/mork-pathmap-probe/src/chain.rs b/crates/mork-pathmap-probe/src/chain.rs +new file mode 100644 +index 0000000..6772587 +--- /dev/null ++++ b/crates/mork-pathmap-probe/src/chain.rs +@@ -0,0 +1,171 @@ ++//! Composition probe: a question whose answer leaves the focus names the ++//! identities it still needs, those identities are brought into the frame the ++//! question was asked on, and the next question starts from that frame. ++//! ++//! STATUS: PROBE. No new store, executor, opcode or type of relationship: this ++//! module only calls what [`crate::rmap`] already has, in an order. ++//! ++//! - The question is [`Csr::reach`] over a prepared frame. ++//! - Its escape set ([`crate::rmap::ScopedReach::escaped`]) is what the answer still needs. ++//! - [`rebind`] brings those identities in, keeping every edge between slots ++//! that did not change, and the question is asked again, until nothing ++//! escapes. Only then is the answer global ([`crate::rmap::ScopedReach::global`]). ++//! - A later question passes an earlier answer as its seeds, over another ++//! predicate of the same prepared frame. ++//! ++//! Slots are evicted only if they hold no identity the chain still needs ++//! (`keep`); if the needed identities do not fit, the question is refused, ++//! never answered from an incomplete focus. Address translation happens only ++//! inside [`rebind`] and [`Csr::prepare`], in preparation, never in a fold. ++//! ++//! Semantics are Boolean reachability, as in [`crate::rmap`]: no bags, no ++//! path counts. ++ ++use std::collections::BTreeSet; ++ ++use crate::rmap::{Csr, Focus, Refusal, SlotSet, SortedRun, Tile, Witness, rebind, slot_set}; ++ ++/// Why a chain step did not answer. ++#[derive(Clone, Copy, Debug, PartialEq, Eq)] ++pub enum ChainRefusal { ++ /// The frame was built against another facts, seal or scope. ++ Stale(Refusal), ++ /// The identities the answer needs do not fit beside the ones it must keep. ++ FocusExhausted { needed: usize, free: usize }, ++} ++ ++/// How a focus change reaches the prepared operands. ++#[derive(Clone, Copy, Debug, PartialEq, Eq)] ++pub enum Rebuild { ++ /// [`rebind`]: unchanged slots keep their edges. ++ Incremental, ++ /// [`Csr::prepare`] and [`Tile::from_csr`] from scratch. ++ Full, ++} ++ ++/// A focus and the operands prepared for it, for every predicate the chain uses. ++pub struct Frame { ++ pub focus: Focus, ++ pub csr: Csr, ++ pub tile: Tile, ++ pub preds: Vec, ++} ++ ++impl Frame { ++ pub fn prepare(run: &SortedRun<'_>, focus: Focus, preds: &[u32], current: &Witness) -> Frame { ++ let csr = Csr::prepare(run, &focus, preds, at(current, &focus)); ++ let tile = Tile::from_csr(&csr); ++ Frame { ++ focus, ++ csr, ++ tile, ++ preds: preds.to_vec(), ++ } ++ } ++ ++ /// The slots of the given identities. `None` if one is not in the focus. ++ pub fn slots(&self, ids: &BTreeSet) -> Option { ++ let mut out = Vec::with_capacity(ids.len()); ++ for &g in ids { ++ out.push(self.focus.slot_of(g)?); ++ } ++ Some(slot_set(out)) ++ } ++ ++ /// Bring `ids` into the focus, evicting slots whose identity is not in ++ /// `keep`. Returns how many slots changed. ++ pub fn admit( ++ &mut self, ++ run: &SortedRun<'_>, ++ current: &Witness, ++ keep: &BTreeSet, ++ ids: &BTreeSet, ++ how: Rebuild, ++ ) -> Result { ++ let new: Vec = ids ++ .iter() ++ .copied() ++ .filter(|g| self.focus.slot_of(*g).is_none()) ++ .collect(); ++ if new.is_empty() { ++ return Ok(0); ++ } ++ let free: Vec = (0..self.focus.len()) ++ .rev() ++ .map(|s| s as u8) ++ .filter(|&s| !keep.contains(&self.focus.id(s)) && !ids.contains(&self.focus.id(s))) ++ .collect(); ++ if free.len() < new.len() { ++ return Err(ChainRefusal::FocusExhausted { ++ needed: new.len(), ++ free: free.len(), ++ }); ++ } ++ let changes: Vec<(u8, u32)> = free.into_iter().zip(new.iter().copied()).collect(); ++ let focus = self.focus.replace(&changes); ++ let w = at(current, &focus); ++ let (csr, tile) = match how { ++ Rebuild::Incremental => rebind(run, &self.focus, &focus, &self.csr, w), ++ Rebuild::Full => { ++ let csr = Csr::prepare(run, &focus, &self.preds, w); ++ let tile = Tile::from_csr(&csr); ++ (csr, tile) ++ } ++ }; ++ self.focus = focus; ++ self.csr = csr; ++ self.tile = tile; ++ Ok(changes.len()) ++ } ++} ++ ++/// The caller's witness, read at this focus's generation. ++fn at(current: &Witness, focus: &Focus) -> Witness { ++ Witness { ++ focus: focus.generation, ++ ..*current ++ } ++} ++ ++/// One answer and what it took. ++#[derive(Clone, Debug, PartialEq, Eq)] ++pub struct Answer { ++ /// Global identities reached within the hop budget, seeds included. ++ pub reached: BTreeSet, ++ /// Slots that changed before each re-ask (0 for an answer from the frame as it was). ++ pub admitted: Vec, ++} ++ ++/// Reachability from `seeds` over `preds` within `hops`, asked on `frame` and ++/// re-asked after each admission until nothing escapes. `keep` holds the ++/// identities earlier answers still need; this answer's are added to it. ++#[expect(clippy::too_many_arguments)] ++pub fn ask( ++ frame: &mut Frame, ++ run: &SortedRun<'_>, ++ current: &Witness, ++ preds: &[u32], ++ seeds: &BTreeSet, ++ hops: usize, ++ keep: &mut BTreeSet, ++ how: Rebuild, ++) -> Result { ++ keep.extend(seeds.iter().copied()); ++ let mut admitted = vec![frame.admit(run, current, keep, seeds, how)?]; ++ loop { ++ let seed_slots = frame.slots(seeds).expect("seeds were admitted"); ++ let r = frame ++ .csr ++ .reach(&at(current, &frame.focus), preds, &seed_slots, hops) ++ .map_err(ChainRefusal::Stale)?; ++ let reached: BTreeSet = crate::rmap::slots_of(&r.reached) ++ .into_iter() ++ .map(|s| frame.focus.id(s)) ++ .collect(); ++ keep.extend(reached.iter().copied()); ++ if r.global().is_ok() { ++ return Ok(Answer { reached, admitted }); ++ } ++ admitted.push(frame.admit(run, current, keep, &r.escaped, how)?); ++ } ++} +diff --git a/crates/mork-pathmap-probe/src/lib.rs b/crates/mork-pathmap-probe/src/lib.rs +index 14e5939..b76d3d3 100644 +--- a/crates/mork-pathmap-probe/src/lib.rs ++++ b/crates/mork-pathmap-probe/src/lib.rs +@@ -23,6 +23,7 @@ + use std::collections::BTreeMap; + + pub mod boundary; ++pub mod chain; + pub mod join; + pub mod reference; + pub mod rmap; +diff --git a/crates/mork-pathmap-probe/tests/chain.rs b/crates/mork-pathmap-probe/tests/chain.rs +new file mode 100644 +index 0000000..cf5263e +--- /dev/null ++++ b/crates/mork-pathmap-probe/tests/chain.rs +@@ -0,0 +1,278 @@ ++//! The composition probe (`chain`) against a global oracle that uses no index, ++//! no focus and no prepared operand: a breadth-first scan over the facts. ++ ++use std::collections::BTreeSet; ++ ++use mork_pathmap_probe::chain::{Answer, ChainRefusal, Frame, Rebuild, ask}; ++use mork_pathmap_probe::rmap::*; ++ ++const PREDS: [u32; 3] = [0, 1, 2]; ++ ++/// Global reachability from `seeds` over `preds` within `hops`, by scanning. ++fn oracle(facts: &[Fact], preds: &[u32], seeds: &BTreeSet, hops: usize) -> BTreeSet { ++ let mut reached = seeds.clone(); ++ let mut frontier = seeds.clone(); ++ for _ in 0..hops { ++ let next: BTreeSet = facts ++ .iter() ++ .filter(|f| frontier.contains(&f[0]) && preds.contains(&f[1])) ++ .map(|f| f[2]) ++ .filter(|o| !reached.contains(o)) ++ .collect(); ++ if next.is_empty() { ++ break; ++ } ++ reached.extend(next.iter().copied()); ++ frontier = next; ++ } ++ reached ++} ++ ++fn facts() -> Vec { ++ graph(65_536, 3, 2, 512, 0.9, 0x5EED) ++} ++ ++fn cur() -> Witness { ++ Witness { ++ facts: 1, ++ seal: 1, ++ focus: 0, ++ scope: 7, ++ } ++} ++ ++const SEED: u32 = 17; ++ ++/// Three questions, each over its own predicate, each seeded with the ++/// previous answer: what the first reaches, where those lead under the second ++/// predicate, and under the third. ++struct Chain { ++ answers: Vec, ++ frame: Frame, ++ initial_rows: BTreeSet, ++} ++ ++fn run_chain(facts: &[Fact], how: Rebuild) -> Chain { ++ let run = SortedRun::build(facts, false, 1); ++ // The first focus is what a breadth-first discovery over all predicates ++ // finds first, so a question over one predicate is not shaped to fit it. ++ let focus = discover(&run, &[SEED], &PREDS, SLOTS); ++ let mut frame = Frame::prepare(&run, focus, &PREDS, &cur()); ++ let initial_rows = frame.csr.edge_set().into_iter().map(|e| e.3).collect(); ++ let mut keep = BTreeSet::new(); ++ let mut seeds = BTreeSet::from([SEED]); ++ let mut answers = Vec::new(); ++ for (p, hops) in [(0u32, 3usize), (1, 1), (2, 1)] { ++ let a = ask(&mut frame, &run, &cur(), &[p], &seeds, hops, &mut keep, how).unwrap(); ++ seeds = a.reached.clone(); ++ answers.push(a); ++ } ++ Chain { ++ answers, ++ frame, ++ initial_rows, ++ } ++} ++ ++const QUESTIONS: [(u32, usize); 3] = [(0, 3), (1, 1), (2, 1)]; ++ ++#[test] ++fn every_step_of_the_chain_equals_the_global_oracle() { ++ let facts = facts(); ++ let c = run_chain(&facts, Rebuild::Incremental); ++ let mut seeds = BTreeSet::from([SEED]); ++ for (i, ((p, hops), a)) in QUESTIONS.iter().zip(&c.answers).enumerate() { ++ assert_eq!(a.reached, oracle(&facts, &[*p], &seeds, *hops), "step {i}"); ++ seeds = a.reached.clone(); ++ } ++ // Anti-vacuity: the first focus did not hold the first answer, so a step ++ // had to bring identities in; and every answer is more than its seeds. ++ let total: usize = c.answers.iter().flat_map(|a| &a.admitted).sum(); ++ assert!( ++ total > 0, ++ "no step admitted anything: the fixture tests nothing" ++ ); ++ assert!( ++ c.answers[0].admitted.len() > 1, ++ "the first question must have been re-asked" ++ ); ++ for a in &c.answers { ++ assert!(a.reached.len() > 1); ++ } ++} ++ ++/// Each answer still holds on the frame the whole chain left: a later step ++/// never evicts what an earlier answer needs, so re-asking the first question ++/// at the end admits nothing and gives the same answer. ++#[test] ++fn an_earlier_answer_survives_the_later_steps() { ++ let facts = facts(); ++ let mut c = run_chain(&facts, Rebuild::Incremental); ++ let run = SortedRun::build(&facts, false, 1); ++ let mut keep = BTreeSet::new(); ++ let again = ask( ++ &mut c.frame, ++ &run, ++ &cur(), ++ &[0], ++ &BTreeSet::from([SEED]), ++ 3, ++ &mut keep, ++ Rebuild::Incremental, ++ ) ++ .unwrap(); ++ assert_eq!(again.reached, c.answers[0].reached); ++ assert_eq!(again.admitted, vec![0], "nothing to admit, asked once"); ++} ++ ++/// The incremental frame equals a frame prepared from scratch at every step, ++/// and it keeps canonical rows from the first preparation (reuse is real, ++/// not a full rebuild under another name). ++#[test] ++fn incremental_frames_equal_full_preparation_and_reuse_rows() { ++ let facts = facts(); ++ let inc = run_chain(&facts, Rebuild::Incremental); ++ let full = run_chain(&facts, Rebuild::Full); ++ assert_eq!(inc.answers, full.answers); ++ assert_eq!(inc.frame.focus.ids(), full.frame.focus.ids()); ++ assert_eq!(inc.frame.csr.edge_set(), full.frame.csr.edge_set()); ++ assert_eq!(inc.frame.csr.escape_set(), full.frame.csr.escape_set()); ++ for &p in &PREDS { ++ assert_eq!(inc.frame.tile.plane(p), full.frame.tile.plane(p)); ++ } ++ let rows: BTreeSet = inc.frame.csr.edge_set().into_iter().map(|e| e.3).collect(); ++ let reused = rows.intersection(&inc.initial_rows).count(); ++ let resolved = rows.difference(&inc.initial_rows).count(); ++ assert!( ++ reused > 0 && resolved > 0, ++ "reused {reused}, resolved {resolved}" ++ ); ++} ++ ++/// A frame from before a change of the facts is refused, not answered. ++#[test] ++fn a_changed_world_refuses_the_frame() { ++ let facts = facts(); ++ let mut c = run_chain(&facts, Rebuild::Incremental); ++ let run = SortedRun::build(&facts, false, 1); ++ let changed = Witness { facts: 2, ..cur() }; ++ let r = ask( ++ &mut c.frame, ++ &run, ++ &changed, ++ &[0], ++ &BTreeSet::from([SEED]), ++ 3, ++ &mut BTreeSet::new(), ++ Rebuild::Incremental, ++ ); ++ assert_eq!(r, Err(ChainRefusal::Stale(Refusal::FactsChanged))); ++} ++ ++/// The needed identities must fit beside the kept ones; otherwise the question ++/// is refused. Silence twin: one evictable slot is enough for the same chain. ++#[test] ++fn a_focus_too_small_for_the_answer_is_refused() { ++ // 0 -> 1 -> 2: from 0, two hops need {0, 1, 2}. ++ let facts: Vec = vec![[0, 0, 1], [1, 0, 2]]; ++ let run = SortedRun::build(&facts, false, 1); ++ let mut frame = Frame::prepare(&run, Focus::bind(&[0, 1], 1), &[0], &cur()); ++ let r = ask( ++ &mut frame, ++ &run, ++ &cur(), ++ &[0], ++ &BTreeSet::from([0]), ++ 2, ++ &mut BTreeSet::new(), ++ Rebuild::Incremental, ++ ); ++ assert_eq!(r, Err(ChainRefusal::FocusExhausted { needed: 1, free: 0 })); ++ let mut frame = Frame::prepare(&run, Focus::bind(&[0, 1, 50], 1), &[0], &cur()); ++ let a = ask( ++ &mut frame, ++ &run, ++ &cur(), ++ &[0], ++ &BTreeSet::from([0]), ++ 2, ++ &mut BTreeSet::new(), ++ Rebuild::Incremental, ++ ) ++ .unwrap(); ++ assert_eq!(a.reached, BTreeSet::from([0, 1, 2])); ++ assert_eq!(a.admitted, vec![0, 1]); ++} ++ ++/// 64 thoughts over the frame the chain produced: each retracts the edges ++/// out of one slot the first answer reached. Each thought's answer equals the ++/// oracle over its edited facts (inside the focus), and the shared tile is ++/// not changed by any of them. ++#[test] ++fn thoughts_run_over_the_frame_the_chain_produced() { ++ let facts = facts(); ++ let c = run_chain(&facts, Rebuild::Incremental); ++ let f = &c.frame; ++ let w = Witness { ++ focus: f.focus.generation, ++ ..cur() ++ }; ++ let seeds = slot_set([f.focus.slot_of(SEED).unwrap()]); ++ let mut ex = TileExec::new(); ++ let base = ex ++ .reach(&f.tile, &f.csr, &w, None, None, &[0], &seeds, 3) ++ .unwrap(); ++ let reached: Vec = slots_of(&base.reached); ++ let inf: BTreeSet = f.focus.ids().iter().copied().collect(); ++ let mut changed = 0; ++ for t in 0..64u64 { ++ let victim = reached[t as usize % reached.len()]; ++ let del: Vec<(u8, u8)> = f ++ .csr ++ .edge_set() ++ .into_iter() ++ .filter(|e| e.0 == 0 && e.1 == victim) ++ .map(|e| (victim, e.2)) ++ .collect(); ++ let delta = ThoughtDelta::new(t, 0, &[], &del); ++ let got = ex ++ .reach(&f.tile, &f.csr, &w, Some(&delta), Some(t), &[0], &seeds, 3) ++ .unwrap(); ++ let g = f.focus.id(victim); ++ let edited: Vec = facts ++ .iter() ++ .copied() ++ .filter(|x| !(x[0] == g && x[1] == 0 && inf.contains(&x[2]))) ++ .filter(|x| inf.contains(&x[0]) && inf.contains(&x[2])) ++ .collect(); ++ let want = oracle(&edited, &[0], &BTreeSet::from([SEED]), 3); ++ let got_ids: BTreeSet = slots_of(&got.reached) ++ .into_iter() ++ .map(|s| f.focus.id(s)) ++ .collect(); ++ assert_eq!(got_ids, want, "thought {t}"); ++ changed += usize::from(got.reached != base.reached); ++ assert_eq!( ++ ex.reach( ++ &f.tile, ++ &f.csr, ++ &w, ++ Some(&delta), ++ Some(t + 1), ++ &[0], ++ &seeds, ++ 3 ++ ) ++ .err(), ++ Some(Refusal::ThoughtMismatch) ++ ); ++ } ++ assert!( ++ changed > 0, ++ "some retraction must change its thought's answer" ++ ); ++ let again = ex ++ .reach(&f.tile, &f.csr, &w, None, None, &[0], &seeds, 3) ++ .unwrap(); ++ assert_eq!(again.reached, base.reached, "the shared tile is unchanged"); ++} diff --git a/.claude/plans/recursive-perspective-rebinding-v1.md b/.claude/plans/recursive-perspective-rebinding-v1.md index 6d10739f4..cd2c75623 100644 --- a/.claude/plans/recursive-perspective-rebinding-v1.md +++ b/.claude/plans/recursive-perspective-rebinding-v1.md @@ -27,6 +27,8 @@ So the brief does not need new nouns. What it adds is a **relation between successive angles** (§4), which nothing on `main` names yet. +> **Correction (2026-10-20, §11.1):** WORLD, ANGLE and THOUGHT are metaphors for thought. They name no type, register, field or modification. Thought identity is #1605's `ThoughtCommitId` (speculative) and `DurableRef` (durable). + ## 2. The addressing operation is the H14c/H14d canon The brief's `TableA[i] : TableB[i]` is the measured canonical expression `Thought(t)[T_a[i] : T_b[i]]` (H14c, MEASURED 2026-10-15; H14d, MEASURED 2026-10-16). `i` is a shared coordinate, presence says whether a value is there and never where, and "the join is the layout". The council v3 header of the MeTTa assimilation plan names these two plans as the correct path and marks the preimage-join design (D-ASM-2, D-ASM-11/11A/11B) as a gather violation. @@ -47,6 +49,8 @@ H14d runs four stages, each shrinking what the next touches: logic reduced symbo Nothing is a three-dimensional tensor. The world's values are never copied into an angle, and an angle is never copied into a thought. +> **Reading note (2026-10-20, §11.1):** the first column above uses the metaphors as labels. The registers are `Focus`, `CsrPred` and its tile, and `ThoughtDelta`, and nothing should be renamed after the metaphors. + **Arity.** The probe's facts are `[u32; 3]` (subject, predicate, object), so its angles are predicate-indexed binary relations; `join.rs` co-addresses one shared variable. General n-ary binding over several shared variables, with repeated variables inside one pattern, has **no design on `main`** (OPEN). The triangle needs two variables co-addressed at once; only the 256 × 256 tile gives that, inside one focus (Schnellverschluss §7b). ## 4. Recursive rebinding, built from existing pieces @@ -221,3 +225,100 @@ Also measured: the distribution of k per rebind and the number of ownership hand | D-RPR-1 | recursive chain probe | not authorized; waits on A1 and an operator go | | D-RPR-2 | premise revision with retraction | BLOCKED on D-TGA-3 | | D-RPR-3 | MeTTa-facing parity | BLOCKED on D-ASM-4 | + +## 11. Folded in from #1624 (2026-10-20) + +#1624 distilled the same brief independently, before this plan merged. This plan is the canonical one. This section adds only what #1624 had and this plan lacked. Its falsifiers are sub-cases of D-RPR-1, not new D-ids. #1624's own plan file and board rows are withdrawn. A draft of the chain it describes is banked, not merged, in `.claude/harvest/d-rpr-1-chain-probe-draft/` (§11.9). + +### 11.1 Corrections + +- **WORLD, ANGLE, THOUGHT are metaphors.** Operator, 2026-10-20: "angle is a metaphor for thought and does not allow any modifications". No type, register, field, opcode or refactor follows from these words. The tables in §1 and §3 map them to existing components and nothing more. +- **Thought identity is #1605's.** A speculative thought is a `ThoughtCommitId` with parent ids, held in CE64 W slots 0..63 (0 = givens, 1..=63 = branches); "an in-RAM thought commit is not a Lance commit". Durable state is `DurableRef{dataset, branch, version}`. In the probe, `ThoughtDelta.thought: u64` and `Witness.facts` stand for these (their doc comments in `rmap.rs` say so). A chain step that reads the previous step's answer reads resident speculative output, which #1605 §5 point 4 admits only through a declared dependency. +- **D-RST.** #1624 said D-RST resolved to no plan. That was written before this merge added `relstore-quack-petgraph-traversal-v1.md`, and it is withdrawn. +- **Two meanings of `ThoughtMask`.** `lance-graph-contract::recipe_kernels::ThoughtMask` is the set of thought fields known before a recipe wave (`rung_schedule.rs`). #1605's `ThoughtMask::selected(&[24, 48])` selects thought slots. Recorded, not resolved: OPEN. +- **The Hyperon class-2 path.** The measured D-MTP-1 two-hop lowering runs `MaskOp::Gather` behind quack `Filter::Semijoin` (D-ASM council v3), so under the 2026-10-16 ruling it is gather-shaped and cannot be the class-2 route. + +### 11.2 D-RPR-1 sub-cases + +Each sub-case has a kill condition and a disable run that must turn its test red. + +| sub-case | probe | kill condition | disable run | +|---|---|---|---| +| 1a | the chain fixture and its oracles, before any timing | any arm's `reached` or `escaped` differs from the scan oracle at any depth; or a step never escapes | stop seeding the next focus from the escapes; the anti-vacuity check (§11.3) goes red | +| 1b | marginal cost: arm (d) against (c) and (b), at the natural k of each step | (d) is not below (c) at the measured k on the dense fixture | make `rebind` treat every slot as changed; the "rows reused > 0" assertion goes red | +| 1c | invalidation: facts, seal, scope or ordering changed between steps | a retained CSR or tile answers after the change, or the rebuild is not reported | remove `Witness::check` from `reach`; a stale frame answers | +| 1d | the narrow-frame guard under the chain | a depth whose answer depends on escapes is reported as global | remove the `escaped.is_empty()` test in `global()` | +| 1e | a two-variable step: a closing atom that needs `a` and `c` together | a silent answer from a one-variable domain; the expected outcome today is a refusal | none; the row records the boundary, not a mechanism | +| 1f | thought rejection: a parent hypothesis is discarded between steps | a child frame built under the discarded thought's `ThoughtDelta` still folds | reuse the old thought id; `ThoughtMismatch` must fire, and disabling it is red | + +### 11.3 Anti-vacuity + +- Every step must escape at least once, or it tests nothing. Assert escapes > 0 at every depth. +- The first focus must not already contain the first answer. The banked draft measured this failure: `discover` over all predicates to 256 slots contained the 3-hop reach over one predicate, so step 1 never escaped. Seed the first focus narrower than the first question's reach. +- Reuse must be real. Some canonical rows kept from the first preparation must remain, and some must be newly resolved. +- A thought must change at least one answer, and the shared tile must be unchanged afterwards. +- Every guard gets a firing case and a silent twin. Example: an exhausted focus refuses when no slot is evictable, and answers when one is. + +### 11.4 Independent oracles + +- Global reachability by a full scan over all facts, with no index and no focus, per step, compared on `reached` and on `escaped`. +- For each thought, an in-focus scan over the edited facts. +- For any join-shaped step, the nested-loop bag oracle in `reference.rs`. MORK and PathMap are oracles for sets only. +- Incremental against full preparation: equal edge set, escape set and tile plane for every predicate. + +### 11.5 Protocol + +- Oracles and disable runs go green → red → green before any timing. +- Commit before disabling, assert that each disable patch applied exactly once, and restore from the committed file. +- The program prints the tier. Release, debug 0, medians of 5. +- Differences inside the ~40 % run-to-run noise of this VM (H14c) are not read. +- Fixtures are frozen after the first measurement. FALSIFIED and BOUNDED are valid outcomes. Timings go to a dated entry as CSV. + +### 11.6 Refusals the chain must show, by axis + +| axis | refusal | exercised by the draft | +|---|---|---| +| version | `FactsChanged`, `IndexResealed`; `JoinRefusal::Stale` in `join.rs` | `FactsChanged` only | +| focus | `FocusChanged` | no | +| scope | `ScopeChanged` | no | +| ordering | `OrderingMismatch` | no | +| thought identity | `ThoughtMismatch`; the `ThoughtCommitId` never-reuse rule is OPEN (§10 item 7) | `ThoughtMismatch` | +| narrow frame | `IncompleteFocus` | yes, as the re-ask condition | +| capacity | the needed identities do not fit beside the kept ones: refuse, never answer from an incomplete focus | yes; a probe-local refusal, not in `rmap.rs` | +| no shared slots | full prepare, reported as k = 256 | no | +| dependency cycle | none exists | OPEN | + +### 11.7 Preparation and reuse costs already measured + +Copied from D-RMAP-1A §8 and Schnellverschluss §7b, not re-measured: + +| quantity | sparse d2 | sparse d8 | dense | +|---|---|---|---| +| CSR break-even reuses (arithmetic from medians) | 76 | 11 | 1.8 | +| 3-hop per-eval, CSR | 3.33 µs | 5.58 µs | 12.38 µs | +| 3-hop per-eval, tile | 5.08 µs | 5.74 µs | 4.53 µs | + +- **The tile wins only on the dense relation.** Neither layout is a default. +- **Report escapes as source slots when the next step allows it.** At degree 8, escapes reported as identities cost 50.4 µs per eval, and as source slots 5.6 µs. The chain's next step consumes identities, so it pays the higher figure. +- **Bytes:** binding 3 072 B; CSR 18–66 KB; tile 8 KiB per predicate. At n = 50 000, the join table is 403 KB, and a thought's filter plane is 1 568 B and costs 5.2 µs per thought for a bag count. +- **Zero-copy against register copy is an open tension (§8.7).** A count over canonical lanes takes 20–24 µs with 0 B copied. Loading a 3 072 B register first takes 0.78 µs, and counting in it 0.38–1.27 µs. + +### 11.8 Two-variable and multiplicity limits + +- `join.rs` co-addresses one shared variable, plus a star of relations on that variable (`prepare_star`). A cyclic body needs two variables at once, "which a one-variable domain cannot give" (§7b). OPEN. +- "Stepping from `y` results to `z` slots over a large domain would need a scatter, which stays forbidden" (§7b). A deeper step takes that shape when its question lands on a relation the parent did not co-address. OPEN. +- The focus register answers Boolean reachability only: "Bag counts and path counts are not answered here" (`rmap.rs:40–44`). A chain over `rmap` therefore preserves no multiplicity. Carrying bags through a step needs `join.rs` at that step, and that is untested. +- 256 slots is the probe constant `SLOTS`, not a decided register width. + +### 11.9 Banked draft probe + +`.claude/harvest/d-rpr-1-chain-probe-draft/` holds `chain-probe.patch` and a README. The patch applies to `main` at `4dbd085`. + +- **Result on `main`:** 5 of 6 tests pass. The failing test is the §11.3 first-focus case. Its per-step parity with the global scan oracle passes. +- **Deviations from D-RPR-1:** + - it adds probe-local glue types; + - it uses the synthetic fixture, not KJV; + - the escapes of a question complete that question, and its answer, not its escapes, seeds the next one, so H1 as worded is not tested; + - it takes no timings. +- **Why it is not merged:** D-RPR-1 is not authorized. + From af3cb0f70411fa016605702c1612d83395ab27bf Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 08:32:56 +0000 Subject: [PATCH 3/7] D-RPR: record that the banked chain probe re-runs unchanged on main after #1623 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f --- .claude/board/STATUS_BOARD.md | 2 +- .claude/harvest/d-rpr-1-chain-probe-draft/README.md | 4 ++-- .claude/plans/recursive-perspective-rebinding-v1.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index 3fd1dd9f1..5fbdb2c50 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -48,7 +48,7 @@ These PRs merged with no board rows. Every row below is a PROPOSAL (documents an | D-RST-8 | multi-hop over a large domain | BLOCKED on admission A2 | — | | D-RST-9 | native borrowed relation views without petgraph: n-ary sorted permutations as ranges, pattern CSR/CSC as the binary case, stable fact ids, version pin, not `Copy`; starts from the planner's `AdjacencyStore`/`AdjacencyBatch` | LAB ONLY, not admitted to production; Queued (critical path, first) | F1: oracle equality, zero copies, compaction-stable ids, stale and out-of-domain refusals | | D-RPR-0 | recursive perspective rebinding: architectural distillation (`recursive-perspective-rebinding-v1.md`) | LAB ONLY, not admitted to production; PROPOSED; documentation only | claims graded IMPLEMENTED / MEASURED / PROBE / PROPOSED / OPEN against origin/main | -| D-RPR-1 | recursive question-chain probe over one corpus: escapes seed the next angle (H1), `rebind` vs full prepare vs no frame vs MORK oracle | LAB ONLY; not authorized (waits on admission A1 and an operator go) | exact parity; named refusal per failure case; marginal cost per angle with its crossover; sub-cases 1a–1f, anti-vacuity, oracles, disable protocol and refusal axes in plan §11 (folded from #1624); draft chain probe banked in `.claude/harvest/d-rpr-1-chain-probe-draft/` (5/6 tests green on `4dbd085`, not run as D-RPR-1) | +| D-RPR-1 | recursive question-chain probe over one corpus: escapes seed the next angle (H1), `rebind` vs full prepare vs no frame vs MORK oracle | LAB ONLY; not authorized (waits on admission A1 and an operator go) | exact parity; named refusal per failure case; marginal cost per angle with its crossover; sub-cases 1a–1f, anti-vacuity, oracles, disable protocol and refusal axes in plan §11 (folded from #1624); draft chain probe banked in `.claude/harvest/d-rpr-1-chain-probe-draft/` (5/6 tests green on `4dbd085` and `8b570ed`, not run as D-RPR-1) | | D-RPR-2 | premise revision with selective retraction | BLOCKED on D-TGA-3 (per-derived-cell provenance) | stale-premise refusal only, until then | | D-RPR-3 | MeTTa-facing parity of a chain's answers | BLOCKED on D-ASM-4 (not authorized) | — | | D-MPS-8 | native join over a versioned relationship table: R and S laid out by `y` slot, leapfrog intersection as one mask-risc `And`, per-side generations and reseal, per-thought filter planes (`mork-pathmap-schnellverschluss-v1.md` §7b; `crates/mork-pathmap-probe/src/join.rs`) | MEASURED, probe only; not admitted (D-RMAP-1 BIND membrane review) | 8 join tests + native arms in the differential suite vs the oracle; 7 guards disable-verified; cyclic bodies open | diff --git a/.claude/harvest/d-rpr-1-chain-probe-draft/README.md b/.claude/harvest/d-rpr-1-chain-probe-draft/README.md index e2cc2f5ee..8eedf7324 100644 --- a/.claude/harvest/d-rpr-1-chain-probe-draft/README.md +++ b/.claude/harvest/d-rpr-1-chain-probe-draft/README.md @@ -1,6 +1,6 @@ # D-RPR-1 chain probe: draft, banked as differential-test evidence (2026-10-20) -**Status:** PROBE DRAFT, NOT MERGED, NOT RUN AS D-RPR-1. `chain-probe.patch` applies cleanly to `main` at `4dbd085` (`git apply --check`). It is kept here as a patch, not in the crate, for two reasons: D-RPR-1 is "not authorized; waits on A1 and an operator go" (`recursive-perspective-rebinding-v1.md` §10), and one of its six tests is red (below). +**Status:** PROBE DRAFT, NOT MERGED, NOT RUN AS D-RPR-1. `chain-probe.patch` applies cleanly to `main` at `4dbd085` and, after #1623, at `8b570ed` (`git apply --check`). It is kept here as a patch, not in the crate, for two reasons: D-RPR-1 is "not authorized; waits on A1 and an operator go" (`recursive-perspective-rebinding-v1.md` §10), and one of its six tests is red (below). Written by a second session from the instruction "use the existing substrate", before #1622 merged. It is an independent attempt at the chain D-RPR-1 describes, so it serves as a differential check of that design. @@ -10,7 +10,7 @@ Written by a second session from the instruction "use the existing substrate", b - `crates/mork-pathmap-probe/tests/chain.rs` (278 lines, 6 tests) and one `pub mod chain;` line in `src/lib.rs`. - It calls only existing `rmap` functions: `Csr::prepare`, `rebind`, `Csr::reach`, `ScopedReach::global`, `Focus::replace`, `Tile::from_csr`, `TileExec::reach`, `ThoughtDelta`, `Witness`. It adds probe-local glue types (`Frame`, `Answer`, `Rebuild`, `ChainRefusal`), which the D-RPR-1 text ("adds no new types") does not allow for. That is a deviation to resolve before it could land. -## Result, re-run on `main` at `4dbd085` (release, AVX-512 host) +## Result, run on `main` at `4dbd085` and re-run at `8b570ed` (release, AVX-512 host; same result both times) ``` cargo test --release --test chain (in crates/mork-pathmap-probe) diff --git a/.claude/plans/recursive-perspective-rebinding-v1.md b/.claude/plans/recursive-perspective-rebinding-v1.md index cd2c75623..df978dd3d 100644 --- a/.claude/plans/recursive-perspective-rebinding-v1.md +++ b/.claude/plans/recursive-perspective-rebinding-v1.md @@ -312,7 +312,7 @@ Copied from D-RMAP-1A §8 and Schnellverschluss §7b, not re-measured: ### 11.9 Banked draft probe -`.claude/harvest/d-rpr-1-chain-probe-draft/` holds `chain-probe.patch` and a README. The patch applies to `main` at `4dbd085`. +`.claude/harvest/d-rpr-1-chain-probe-draft/` holds `chain-probe.patch` and a README. The patch applies to `main` at `4dbd085` and at `8b570ed`, after #1623. - **Result on `main`:** 5 of 6 tests pass. The failing test is the §11.3 first-focus case. Its per-step parity with the global scan oracle passes. - **Deviations from D-RPR-1:** From 2aaf6e734ff3cbd9062abc6c3586e971426bcc42 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 08:42:20 +0000 Subject: [PATCH 4/7] D-RPR-1: chain probe restored as a lab handoff over legal folds One fold's escapes drive the next counted preparation lookup (rebind's neighbours seeks); the mask-risc fold stays co-addressed (no Gather, no scatter). Eight tests against a full-scan oracle; chain_cost example times each transition against direct and full-rebuild arms. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f --- .../mork-pathmap-probe/examples/chain_cost.rs | 354 ++++++++++++++++ crates/mork-pathmap-probe/src/chain.rs | 295 ++++++++++++++ crates/mork-pathmap-probe/src/lib.rs | 1 + crates/mork-pathmap-probe/src/rmap.rs | 2 +- crates/mork-pathmap-probe/tests/chain.rs | 383 ++++++++++++++++++ 5 files changed, 1034 insertions(+), 1 deletion(-) create mode 100644 crates/mork-pathmap-probe/examples/chain_cost.rs create mode 100644 crates/mork-pathmap-probe/src/chain.rs create mode 100644 crates/mork-pathmap-probe/tests/chain.rs diff --git a/crates/mork-pathmap-probe/examples/chain_cost.rs b/crates/mork-pathmap-probe/examples/chain_cost.rs new file mode 100644 index 000000000..6a1c6c482 --- /dev/null +++ b/crates/mork-pathmap-probe/examples/chain_cost.rs @@ -0,0 +1,354 @@ +//! Cost of the D-RPR-1 handoff, transition by transition. +//! +//! `cargo run --release --example chain_cost` +//! +//! Three arms answer the same three-question chain (predicate 0 for 3 hops +//! from one seed, then predicate 1 for 1 hop from that answer, then predicate +//! 2 for 1 hop): +//! +//! - **direct**: every question walks the sorted run from scratch, one seek +//! per visited identity and hop; no frame; +//! - **full**: a frame whose focus changes are rebuilt with `Csr::prepare` + +//! `Tile::from_csr`; +//! - **incremental**: the same frame, focus changes applied with `rebind`. +//! +//! Every answer is checked against a full-scan oracle. Times are medians of 5 +//! runs of the whole chain, in µs. Lab measurement only. + +use std::collections::BTreeSet; +use std::time::Instant; + +use mork_pathmap_probe::chain::*; +use mork_pathmap_probe::rmap::*; + +const PREDS: [u32; 3] = [0, 1, 2]; +const QUESTIONS: [(u32, usize); 3] = [(0, 3), (1, 1), (2, 1)]; +const SEED: u32 = 17; +const FAR: u32 = 40_000; +const REPS: usize = 5; + +fn median(mut v: Vec) -> f64 { + v.sort_by(|a, b| a.partial_cmp(b).unwrap()); + v[v.len() / 2] +} + +fn oracle(facts: &[Fact], p: u32, seeds: &BTreeSet, hops: usize) -> BTreeSet { + let mut reached = seeds.clone(); + let mut frontier = seeds.clone(); + for _ in 0..hops { + let next: BTreeSet = facts + .iter() + .filter(|f| frontier.contains(&f[0]) && f[1] == p) + .map(|f| f[2]) + .filter(|o| !reached.contains(o)) + .collect(); + if next.is_empty() { + break; + } + reached.extend(next.iter().copied()); + frontier = next; + } + reached +} + +/// The direct arm: breadth-first over the sorted run, counting seeks. +fn direct( + run: &SortedRun<'_>, + p: u32, + seeds: &BTreeSet, + hops: usize, +) -> (BTreeSet, usize) { + let mut reached = seeds.clone(); + let mut frontier: Vec = seeds.iter().copied().collect(); + let mut seeks = 0; + for _ in 0..hops { + let mut next = Vec::new(); + for &s in &frontier { + seeks += 1; + run.neighbours(p, s, |o, _| { + if reached.insert(o) { + next.push(o); + } + }); + } + if next.is_empty() { + break; + } + frontier = next; + } + (reached, seeks) +} + +fn first_focus(run: &SortedRun<'_>) -> Focus { + let filler = discover(run, &[FAR], &PREDS, SLOTS); + let mut ids = vec![SEED]; + ids.extend( + filler + .ids() + .iter() + .copied() + .filter(|&g| g != SEED) + .take(SLOTS - 1), + ); + Focus::bind(&ids, 1) +} + +fn cur() -> Witness { + Witness { + facts: 1, + seal: 1, + focus: 0, + scope: 7, + } +} + +/// One transition of a framed arm: an admission (lookup + translation + tile +/// rebuild) or a fold. +#[derive(Clone, Debug)] +enum Event { + Admit { + step: usize, + demanded: usize, + changed: usize, + seeks: usize, + full_seeks: usize, + us: f64, + tile_us: f64, + }, + Fold { + step: usize, + escapes: usize, + us: f64, + }, + /// The whole chain asked again on the final frame: folds only, 0 seeks. + Reask { us: f64 }, +} + +fn event_us(e: &Event) -> f64 { + match e { + Event::Admit { us, .. } | Event::Fold { us, .. } | Event::Reask { us } => *us, + } +} + +/// The chain, inlined from `chain::ask` so each transition can be timed. +fn framed(facts: &[Fact], how: Rebuild) -> (Vec>, Vec, usize, f64) { + let run = SortedRun::build(facts, false, 1); + let t = Instant::now(); + let mut frame = Frame::prepare(&run, first_focus(&run), &PREDS, &cur()); + let prep_us = t.elapsed().as_secs_f64() * 1e6; + let prep_seeks = frame.prepare_seeks; + let mut exec = TileExec::new(); + let mut keep = BTreeSet::new(); + let mut seeds = BTreeSet::from([SEED]); + let mut answers = Vec::new(); + let mut ev = Vec::new(); + for (step, (p, hops)) in QUESTIONS.into_iter().enumerate() { + keep.extend(seeds.iter().copied()); + let mut pending: BTreeSet = seeds.clone(); + loop { + let t = Instant::now(); + let adm = frame.admit(&run, &cur(), &keep, &pending, how).unwrap(); + let us = t.elapsed().as_secs_f64() * 1e6; + if let Some(a) = adm { + let t = Instant::now(); + let _ = Tile::from_csr(&frame.csr); + let tile_us = t.elapsed().as_secs_f64() * 1e6; + ev.push(Event::Admit { + step, + demanded: a.demanded.len(), + changed: a.changed, + seeks: a.seeks, + full_seeks: a.full_seeks, + us, + tile_us, + }); + } + let w = Witness { + focus: frame.focus.generation, + ..cur() + }; + let ss = frame.slots(&seeds).unwrap(); + let t = Instant::now(); + let r = exec + .reach(&frame.tile, &frame.csr, &w, None, None, &[p], &ss, hops) + .unwrap(); + let us = t.elapsed().as_secs_f64() * 1e6; + ev.push(Event::Fold { + step, + escapes: r.escaped.len(), + us, + }); + let reached: BTreeSet = slots_of(&r.reached) + .into_iter() + .map(|s| frame.focus.id(s)) + .collect(); + keep.extend(reached.iter().copied()); + if r.global().is_ok() { + answers.push(reached.clone()); + seeds = reached; + break; + } + pending = r.escaped.clone(); + } + } + // Ask the whole chain again on the retained frame: no admission may happen. + let mut reask = 0.0; + let mut seeds = BTreeSet::from([SEED]); + for (i, (p, hops)) in QUESTIONS.into_iter().enumerate() { + let w = Witness { + focus: frame.focus.generation, + ..cur() + }; + let ss = frame.slots(&seeds).expect("re-ask seeds are focused"); + let t = Instant::now(); + let r = exec + .reach(&frame.tile, &frame.csr, &w, None, None, &[p], &ss, hops) + .unwrap(); + reask += t.elapsed().as_secs_f64() * 1e6; + assert!(r.global().is_ok(), "re-ask of step {i} escaped"); + let got: BTreeSet = slots_of(&r.reached) + .into_iter() + .map(|s| frame.focus.id(s)) + .collect(); + assert_eq!(got, answers[i], "re-ask of step {i}"); + seeds = got; + } + ev.push(Event::Reask { us: reask }); + (answers, ev, prep_seeks, prep_us) +} + +fn main() { + let tier = if cfg!(target_feature = "avx512f") { + "avx512f" + } else if cfg!(target_feature = "avx2") { + "avx2" + } else { + "scalar" + }; + let facts = graph(65_536, 3, 2, 512, 0.9, 0x5EED); + println!( + "tier: {tier}; facts: {}; questions: {QUESTIONS:?}; reps: {REPS}", + facts.len() + ); + + // Oracle and direct arm. + let run = SortedRun::build(&facts, false, 1); + let mut want = Vec::new(); + let mut seeds = BTreeSet::from([SEED]); + let mut direct_seeks = Vec::new(); + let mut direct_us = vec![Vec::new(); QUESTIONS.len()]; + for (i, (p, hops)) in QUESTIONS.into_iter().enumerate() { + let w = oracle(&facts, p, &seeds, hops); + let (got, s) = direct(&run, p, &seeds, hops); + assert_eq!(got, w, "direct, step {i}"); + for _ in 0..REPS { + let t = Instant::now(); + let _ = direct(&run, p, &seeds, hops); + direct_us[i].push(t.elapsed().as_secs_f64() * 1e6); + } + direct_seeks.push(s); + seeds = w.clone(); + want.push(w); + } + + let mut totals = Vec::new(); + for how in [Rebuild::Incremental, Rebuild::Full] { + let mut runs = Vec::new(); + for _ in 0..REPS { + runs.push(framed(&facts, how)); + } + let (answers, events, prep_seeks, _) = &runs[0]; + assert_eq!(answers, &want, "{how:?} answers differ from the oracle"); + let prep_us = median(runs.iter().map(|r| r.3).collect()); + println!( + "\n== {how:?}: initial prepare {prep_us:.1} us, {prep_seeks} seeks (256 slots x 3 preds)" + ); + for (k, e) in events.iter().enumerate() { + let us_med = median(runs.iter().map(|r| event_us(&r.1[k])).collect()); + match e { + Event::Admit { + step, + demanded, + changed, + seeks, + full_seeks, + .. + } => { + let tile = median( + runs.iter() + .map(|r| match &r.1[k] { + Event::Admit { tile_us, .. } => *tile_us, + _ => 0.0, + }) + .collect(), + ); + println!( + " step {step} admit: demanded {demanded}, slots changed {changed}, seeks {seeks} (full would seek {full_seeks}), {us_med:.1} us incl. tile rebuild ~{tile:.1} us" + ); + } + Event::Fold { step, escapes, .. } => { + println!(" step {step} fold : {us_med:.1} us, escapes {escapes}"); + } + Event::Reask { .. } => { + println!( + " re-ask of all {} steps on the final frame: {us_med:.1} us, 0 seeks, answers equal", + QUESTIONS.len() + ); + } + } + } + let seeks: usize = events + .iter() + .map(|e| match e { + Event::Admit { seeks, .. } => *seeks, + _ => 0, + }) + .sum(); + let full: usize = events + .iter() + .map(|e| match e { + Event::Admit { full_seeks, .. } => *full_seeks, + _ => 0, + }) + .sum(); + println!( + " chain seeks after the initial prepare: {seeks} (a full rebuild per admission would seek {full}; avoided {})", + full - seeks + ); + let n = events.len(); + let first: f64 = prep_us + + (0..n - 1) + .map(|k| median(runs.iter().map(|r| event_us(&r.1[k])).collect())) + .sum::(); + let reask = median(runs.iter().map(|r| event_us(&r.1[n - 1])).collect()); + totals.push((how, first, reask)); + } + + println!("\n== direct (no frame, every question from scratch)"); + for (i, s) in direct_seeks.iter().enumerate() { + println!( + " step {i}: {s} seeks, {:.1} us, answer {} ids", + median(direct_us[i].clone()), + want[i].len() + ); + } + println!( + " direct seeks total: {}", + direct_seeks.iter().sum::() + ); + + // Arithmetic, not a measurement: how many re-asks of the chain repay the + // first framed pass against asking directly every time. + let direct_pass: f64 = direct_us.iter().map(|v| median(v.clone())).sum(); + println!("\n== whole chain, first pass vs re-ask (us)"); + println!(" direct: {direct_pass:.1} every pass"); + for (how, first, reask) in totals { + let saving = direct_pass - reask; + let note = if saving > 0.0 { + format!("repaid after {:.0} re-asks (arithmetic)", first / saving) + } else { + "a re-ask is not cheaper than asking directly: never repaid".to_string() + }; + println!(" {how:?}: first pass {first:.1}, re-ask {reask:.1}; {note}"); + } +} diff --git a/crates/mork-pathmap-probe/src/chain.rs b/crates/mork-pathmap-probe/src/chain.rs new file mode 100644 index 000000000..0f12d68f9 --- /dev/null +++ b/crates/mork-pathmap-probe/src/chain.rs @@ -0,0 +1,295 @@ +//! Composition probe: one question's answer supplies the addresses the next +//! question needs, and the relational geometry prepared for the first is +//! reused by the second wherever its witness still holds. +//! +//! STATUS: PROBE, lab only. This is the D-RPR-1 handoff of +//! `.claude/plans/recursive-perspective-rebinding-v1.md`, not an admission of +//! anything. No store, executor, opcode or relationship type is added: this +//! module calls what [`crate::rmap`] already has, in an order, and counts. +//! +//! The handoff, step by step: +//! +//! 1. **Fold.** A question is reachability from seeds over its own predicates, +//! run by [`TileExec::reach`]: a mask-risc program over tile planes that +//! all share one `(target, source)` address space. No operand is indexed by +//! another operand's values ([`fold_program_is_co_addressed`]). +//! 2. **Addresses out.** The fold returns the slots it reached and, from the +//! prepared CSR's escape list, the global identities its own predicates +//! lead to outside the focus within the hop budget. Only those are +//! demanded; other escapes of the CSR are not. +//! 3. **Lookup.** While escapes exist the answer is not global +//! ([`crate::rmap::ScopedReach::global`] refuses `IncompleteFocus`). The +//! escaped identities are bound into evictable slots and [`rebind`] seeks +//! each new identity's outgoing edges on the sorted run. That seek, keyed by +//! values the previous fold produced, is the gather-shaped step. It runs in +//! preparation, counted, outside the fold (H14c §1 rule 6); whether that +//! placement is admitted is D-RMAP-1 §6's open review. +//! 4. **Translation.** Inside `rebind` (and [`Csr::prepare`]) each target is +//! translated once from a global identity to a slot ([`Focus::slot_of`]). +//! 5. **Reuse.** Unchanged slots keep their prepared edges for every +//! predicate; a later question over another predicate of the same frame +//! starts from that geometry and pays a lookup only for what it adds. +//! +//! Slots are evicted only if they hold no identity an answer still needs +//! (`keep`); if the demanded identities do not fit, the question is refused, +//! never answered from an incomplete focus. +//! +//! Semantics are Boolean reachability, as in [`crate::rmap`]: no bags, no +//! path counts. + +use std::cell::Cell; +use std::collections::BTreeSet; + +use crate::rmap::{ + Csr, Focus, Navigate, Refusal, SlotSet, SortedRun, Tile, TileExec, Witness, rebind, slot_set, + slots_of, +}; + +/// Counts the seeks a preparation makes through [`Navigate`]: one per +/// `objects(p, s)` call, plus every `(o, row)` it yields. Behaviour is the +/// wrapped index's. +pub struct CountingIndex<'a, 'f> { + pub inner: &'a SortedRun<'f>, + pub seeks: Cell, + pub yielded: Cell, +} + +impl<'a, 'f> CountingIndex<'a, 'f> { + pub fn new(inner: &'a SortedRun<'f>) -> Self { + CountingIndex { + inner, + seeks: Cell::new(0), + yielded: Cell::new(0), + } + } +} + +impl Navigate for CountingIndex<'_, '_> { + fn objects(&self, p: u32, s: u32, f: &mut dyn FnMut(u32, u32)) { + self.seeks.set(self.seeks.get() + 1); + let y = &self.yielded; + self.inner.objects(p, s, &mut |o, r| { + y.set(y.get() + 1); + f(o, r) + }); + } +} + +/// True if the tile fold's mask-risc program for `n` predicate planes (and an +/// optional thought delta) reads only planes of one address space: no +/// [`lance_graph_mask_risc::MaskOp::Gather`], no foreign group key, no +/// scatter terminal. +pub fn fold_program_is_co_addressed(n: usize, delta: bool) -> bool { + is_co_addressed(&TileExec::program(n, delta)) +} + +/// True if `p` reads only planes of one address space: no +/// [`lance_graph_mask_risc::MaskOp::Gather`], and a `Keep`, `Count`, `Any` or +/// `All` terminal (no scatter, no foreign group key). +pub fn is_co_addressed(p: &lance_graph_mask_risc::Program) -> bool { + use lance_graph_mask_risc::{MaskOp, Terminal}; + !p.ops.iter().any(|op| matches!(op, MaskOp::Gather { .. })) + && matches!( + p.terminal, + Terminal::Keep { .. } + | Terminal::Count { .. } + | Terminal::Any { .. } + | Terminal::All { .. } + ) +} + +/// Why a chain step did not answer. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum ChainRefusal { + /// The frame was built against other facts, seal, focus or scope. + Stale(Refusal), + /// The demanded identities do not fit beside the ones that must be kept. + FocusExhausted { needed: usize, free: usize }, +} + +/// How a focus change reaches the prepared operands. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum Rebuild { + /// [`rebind`]: unchanged slots keep their edges; only changed slots seek. + Incremental, + /// [`Csr::prepare`] and [`Tile::from_csr`] from scratch: every slot seeks. + Full, +} + +/// A focus and the operands prepared for it, for every predicate the chain uses. +pub struct Frame { + pub focus: Focus, + pub csr: Csr, + pub tile: Tile, + pub preds: Vec, + /// Seeks made by the initial preparation. + pub prepare_seeks: usize, +} + +/// One admission: the demanded identities that were outside the focus, and +/// what bringing them in cost in index seeks. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Admission { + /// Global identities produced by the previous fold (or the step's seeds) + /// that were not in the focus: the addresses that drove the lookup. + pub demanded: BTreeSet, + /// Slots whose identity changed. + pub changed: usize, + /// Index seeks performed. Incremental: `changed × preds`, one + /// `neighbours` per changed slot and predicate (the loop in [`rebind`]). + /// Full: counted through [`CountingIndex`]. + pub seeks: usize, + /// Seeks a full preparation of the new focus would have made. + pub full_seeks: usize, +} + +impl Frame { + pub fn prepare(run: &SortedRun<'_>, focus: Focus, preds: &[u32], current: &Witness) -> Frame { + let idx = CountingIndex::new(run); + let csr = Csr::prepare(&idx, &focus, preds, at(current, &focus)); + let tile = Tile::from_csr(&csr); + Frame { + focus, + csr, + tile, + preds: preds.to_vec(), + prepare_seeks: idx.seeks.get(), + } + } + + /// The slots of the given identities. `None` if one is not in the focus. + pub fn slots(&self, ids: &BTreeSet) -> Option { + let mut out = Vec::with_capacity(ids.len()); + for &g in ids { + out.push(self.focus.slot_of(g)?); + } + Some(slot_set(out)) + } + + /// Bring `ids` into the focus, evicting slots whose identity is not in + /// `keep`. `None` if every id was already focused (no lookup made). + pub fn admit( + &mut self, + run: &SortedRun<'_>, + current: &Witness, + keep: &BTreeSet, + ids: &BTreeSet, + how: Rebuild, + ) -> Result, ChainRefusal> { + let demanded: BTreeSet = ids + .iter() + .copied() + .filter(|g| self.focus.slot_of(*g).is_none()) + .collect(); + if demanded.is_empty() { + return Ok(None); + } + let free: Vec = (0..self.focus.len()) + .rev() + .map(|s| s as u8) + .filter(|&s| !keep.contains(&self.focus.id(s)) && !ids.contains(&self.focus.id(s))) + .collect(); + if free.len() < demanded.len() { + return Err(ChainRefusal::FocusExhausted { + needed: demanded.len(), + free: free.len(), + }); + } + let changes: Vec<(u8, u32)> = free.into_iter().zip(demanded.iter().copied()).collect(); + let focus = self.focus.replace(&changes); + let w = at(current, &focus); + let full_seeks = focus.len() * self.preds.len(); + let (csr, tile, seeks) = match how { + Rebuild::Incremental => { + let (csr, tile) = rebind(run, &self.focus, &focus, &self.csr, w); + (csr, tile, changes.len() * self.preds.len()) + } + Rebuild::Full => { + let idx = CountingIndex::new(run); + let csr = Csr::prepare(&idx, &focus, &self.preds, w); + let tile = Tile::from_csr(&csr); + (csr, tile, idx.seeks.get()) + } + }; + self.focus = focus; + self.csr = csr; + self.tile = tile; + Ok(Some(Admission { + demanded, + changed: changes.len(), + seeks, + full_seeks, + })) + } +} + +/// The caller's witness, read at this focus's generation. +fn at(current: &Witness, focus: &Focus) -> Witness { + Witness { + focus: focus.generation, + ..*current + } +} + +/// One answer and the admissions it took. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Answer { + /// Global identities reached within the hop budget, seeds included. + pub reached: BTreeSet, + /// Each admission before the answer became global; empty if the frame + /// already held everything the question demanded. + pub admissions: Vec, + /// Folds run (one per ask; each refused-as-incomplete fold is one of them). + pub folds: usize, +} + +/// Reachability from `seeds` over `preds` within `hops`: fold on the frame, +/// and while the fold's answer has escapes, admit them and fold again. `keep` +/// holds the identities earlier answers still need; this answer's are added. +#[expect(clippy::too_many_arguments)] +pub fn ask( + frame: &mut Frame, + exec: &mut TileExec, + run: &SortedRun<'_>, + current: &Witness, + preds: &[u32], + seeds: &BTreeSet, + hops: usize, + keep: &mut BTreeSet, + how: Rebuild, +) -> Result { + keep.extend(seeds.iter().copied()); + let mut admissions = Vec::new(); + admissions.extend(frame.admit(run, current, keep, seeds, how)?); + let mut folds = 0; + loop { + let seed_slots = frame.slots(seeds).expect("seeds were admitted"); + let w = at(current, &frame.focus); + let r = exec + .reach( + &frame.tile, + &frame.csr, + &w, + None, + None, + preds, + &seed_slots, + hops, + ) + .map_err(ChainRefusal::Stale)?; + folds += 1; + let reached: BTreeSet = slots_of(&r.reached) + .into_iter() + .map(|s| frame.focus.id(s)) + .collect(); + keep.extend(reached.iter().copied()); + if r.global().is_ok() { + return Ok(Answer { + reached, + admissions, + folds, + }); + } + admissions.extend(frame.admit(run, current, keep, &r.escaped, how)?); + } +} diff --git a/crates/mork-pathmap-probe/src/lib.rs b/crates/mork-pathmap-probe/src/lib.rs index 4101bd14f..79d301ae9 100644 --- a/crates/mork-pathmap-probe/src/lib.rs +++ b/crates/mork-pathmap-probe/src/lib.rs @@ -23,6 +23,7 @@ use std::collections::BTreeMap; pub mod boundary; +pub mod chain; pub mod join; pub mod reference; pub mod rmap; diff --git a/crates/mork-pathmap-probe/src/rmap.rs b/crates/mork-pathmap-probe/src/rmap.rs index ee715e721..cdea1ddf5 100644 --- a/crates/mork-pathmap-probe/src/rmap.rs +++ b/crates/mork-pathmap-probe/src/rmap.rs @@ -752,7 +752,7 @@ impl TileExec { /// thought delta (masks `n` = add, `n + 1` = del) and the broadcast /// frontier (the last mask). Every operand is a plane over the same /// `(target, source)` address space. - fn program(n: usize, delta: bool) -> Program { + pub fn program(n: usize, delta: bool) -> Program { let f = Operand::Plane((n + if delta { 2 } else { 0 }) as u16); let mut ops = Vec::new(); let mut acc = Operand::Plane(0); diff --git a/crates/mork-pathmap-probe/tests/chain.rs b/crates/mork-pathmap-probe/tests/chain.rs new file mode 100644 index 000000000..f017938cd --- /dev/null +++ b/crates/mork-pathmap-probe/tests/chain.rs @@ -0,0 +1,383 @@ +//! The D-RPR-1 handoff probe (`chain`) against oracles that use no index, no +//! focus and no prepared operand. + +use std::collections::BTreeSet; + +use lance_graph_mask_risc::{MaskOp, Operand, Program, Terminal}; +use mork_pathmap_probe::chain::*; +use mork_pathmap_probe::rmap::*; + +const PREDS: [u32; 3] = [0, 1, 2]; +/// The three questions: predicate and hop budget. Each is seeded with the +/// previous answer. +const QUESTIONS: [(u32, usize); 3] = [(0, 3), (1, 1), (2, 1)]; +const SEED: u32 = 17; +/// A seed in another community (communities are 512 identities wide). The +/// filler around it holds nothing the chain needs, so every question must +/// bring in what it asks about. +const FAR: u32 = 40_000; + +/// Global reachability from `seeds` over `preds` within `hops`, by scanning +/// every fact. +fn oracle(facts: &[Fact], preds: &[u32], seeds: &BTreeSet, hops: usize) -> BTreeSet { + let mut reached = seeds.clone(); + let mut frontier = seeds.clone(); + for _ in 0..hops { + let next: BTreeSet = facts + .iter() + .filter(|f| frontier.contains(&f[0]) && preds.contains(&f[1])) + .map(|f| f[2]) + .filter(|o| !reached.contains(o)) + .collect(); + if next.is_empty() { + break; + } + reached.extend(next.iter().copied()); + frontier = next; + } + reached +} + +fn facts() -> Vec { + graph(65_536, 3, 2, 512, 0.9, 0x5EED) +} + +fn cur() -> Witness { + Witness { + facts: 1, + seal: 1, + focus: 0, + scope: 7, + } +} + +/// The seed plus 255 identities around `FAR`. +fn first_focus(run: &SortedRun<'_>) -> Focus { + let filler = discover(run, &[FAR], &PREDS, SLOTS); + let mut ids = vec![SEED]; + ids.extend( + filler + .ids() + .iter() + .copied() + .filter(|&g| g != SEED) + .take(SLOTS - 1), + ); + Focus::bind(&ids, 1) +} + +struct Chain { + answers: Vec, + frame: Frame, + initial_rows: BTreeSet, +} + +fn run_chain(facts: &[Fact], how: Rebuild) -> Chain { + let run = SortedRun::build(facts, false, 1); + let mut frame = Frame::prepare(&run, first_focus(&run), &PREDS, &cur()); + let initial_rows = frame.csr.edge_set().into_iter().map(|e| e.3).collect(); + let mut exec = TileExec::new(); + let mut keep = BTreeSet::new(); + let mut seeds = BTreeSet::from([SEED]); + let mut answers = Vec::new(); + for (p, hops) in QUESTIONS { + let a = ask( + &mut frame, + &mut exec, + &run, + &cur(), + &[p], + &seeds, + hops, + &mut keep, + how, + ) + .unwrap(); + seeds = a.reached.clone(); + answers.push(a); + } + Chain { + answers, + frame, + initial_rows, + } +} + +#[test] +fn every_step_equals_the_global_oracle_and_needed_a_lookup() { + let facts = facts(); + let c = run_chain(&facts, Rebuild::Incremental); + let mut seeds = BTreeSet::from([SEED]); + for (i, ((p, hops), a)) in QUESTIONS.iter().zip(&c.answers).enumerate() { + assert_eq!(a.reached, oracle(&facts, &[*p], &seeds, *hops), "step {i}"); + // Anti-vacuity, per step: the frame did not already hold the answer. + // At least one fold was refused as incomplete, and every admission + // brought in identities the frame lacked. + assert!(!a.admissions.is_empty(), "step {i} needed no lookup"); + assert!(a.folds >= 2, "step {i} was never refused as incomplete"); + assert!(a.admissions.iter().all(|x| !x.demanded.is_empty())); + assert!( + a.reached.len() > seeds.len(), + "step {i} reached nothing new" + ); + seeds = a.reached.clone(); + } +} + +/// The previous answer's addresses are the next question's seeds, and they +/// are already co-addressed: no lookup is made for them. Every lookup a later +/// step makes is for identities its own fold produced as escapes, never for +/// its seeds. +#[test] +fn the_previous_answer_seeds_the_next_step_without_a_lookup() { + let facts = facts(); + let c = run_chain(&facts, Rebuild::Incremental); + for i in 1..c.answers.len() { + let seeds = &c.answers[i - 1].reached; + for x in &c.answers[i].admissions { + assert!( + x.demanded.is_disjoint(seeds), + "step {i} looked up one of its own seeds" + ); + } + } +} + +/// Incremental and full rebuilds give the same answers and the same prepared +/// geometry; the incremental one keeps canonical rows from the first +/// preparation and seeks less. +#[test] +fn incremental_equals_full_preparation_and_seeks_less() { + let facts = facts(); + let inc = run_chain(&facts, Rebuild::Incremental); + let full = run_chain(&facts, Rebuild::Full); + assert_eq!( + inc.answers.iter().map(|a| &a.reached).collect::>(), + full.answers.iter().map(|a| &a.reached).collect::>() + ); + assert_eq!(inc.frame.focus.ids(), full.frame.focus.ids()); + assert_eq!(inc.frame.csr.edge_set(), full.frame.csr.edge_set()); + assert_eq!(inc.frame.csr.escape_set(), full.frame.csr.escape_set()); + for &p in &PREDS { + assert_eq!(inc.frame.tile.plane(p), full.frame.tile.plane(p)); + } + let rows: BTreeSet = inc.frame.csr.edge_set().into_iter().map(|e| e.3).collect(); + let reused = rows.intersection(&inc.initial_rows).count(); + let resolved = rows.difference(&inc.initial_rows).count(); + assert!( + reused > 0 && resolved > 0, + "reused {reused}, resolved {resolved}" + ); + let seeks = |c: &Chain| -> usize { + c.answers + .iter() + .flat_map(|a| &a.admissions) + .map(|x| x.seeks) + .sum() + }; + // Full counts its seeks through the index; incremental's are the + // documented `changed × preds`. Equal changes, so the ratio is exact. + assert!( + seeks(&inc) < seeks(&full), + "{} vs {}", + seeks(&inc), + seeks(&full) + ); + for a in &full.answers { + for x in &a.admissions { + assert_eq!(x.seeks, x.full_seeks, "a full prepare seeks every slot"); + } + } +} + +/// Each answer still holds on the frame the whole chain left: re-asking the +/// first question at the end admits nothing and folds once. +#[test] +fn an_earlier_answer_survives_the_later_steps() { + let facts = facts(); + let mut c = run_chain(&facts, Rebuild::Incremental); + let run = SortedRun::build(&facts, false, 1); + let mut exec = TileExec::new(); + let again = ask( + &mut c.frame, + &mut exec, + &run, + &cur(), + &[0], + &BTreeSet::from([SEED]), + 3, + &mut BTreeSet::new(), + Rebuild::Incremental, + ) + .unwrap(); + assert_eq!(again.reached, c.answers[0].reached); + assert!(again.admissions.is_empty()); + assert_eq!(again.folds, 1); +} + +/// The fold is co-addressed: every program the tile executor runs reads planes +/// of one `(target, source)` address space. Silence twin: the check fires on +/// a program with a `Gather`. +#[test] +fn the_fold_program_has_no_gather_and_no_scatter() { + for n in 1..=PREDS.len() { + for delta in [false, true] { + assert!( + fold_program_is_co_addressed(n, delta), + "n {n} delta {delta}" + ); + } + } + let gather = Program::new( + vec![MaskOp::Gather { + lane: 0, + foreign: 0, + under: None, + dst: 0, + }], + Terminal::Keep { + mask: Operand::Scratch(0), + }, + ); + assert!(!is_co_addressed(&gather), "the check must see a Gather"); +} + +/// A frame built before a change of the facts or the scope is refused, not +/// answered. +#[test] +fn a_changed_world_or_scope_refuses_the_frame() { + let facts = facts(); + let run = SortedRun::build(&facts, false, 1); + for (changed, want) in [ + (Witness { facts: 2, ..cur() }, Refusal::FactsChanged), + (Witness { seal: 2, ..cur() }, Refusal::IndexResealed), + (Witness { scope: 8, ..cur() }, Refusal::ScopeChanged), + ] { + let mut c = run_chain(&facts, Rebuild::Incremental); + let mut exec = TileExec::new(); + let r = ask( + &mut c.frame, + &mut exec, + &run, + &changed, + &[0], + &BTreeSet::from([SEED]), + 3, + &mut BTreeSet::new(), + Rebuild::Incremental, + ); + assert_eq!(r, Err(ChainRefusal::Stale(want))); + } +} + +/// The demanded identities must fit beside the kept ones; otherwise the +/// question is refused. Silence twin: one evictable slot is enough. +#[test] +fn a_focus_too_small_for_the_answer_is_refused() { + // 0 -> 1 -> 2: from 0, two hops need {0, 1, 2}. + let facts: Vec = vec![[0, 0, 1], [1, 0, 2]]; + let run = SortedRun::build(&facts, false, 1); + let mut exec = TileExec::new(); + let mut frame = Frame::prepare(&run, Focus::bind(&[0, 1], 1), &[0], &cur()); + let r = ask( + &mut frame, + &mut exec, + &run, + &cur(), + &[0], + &BTreeSet::from([0]), + 2, + &mut BTreeSet::new(), + Rebuild::Incremental, + ); + assert_eq!(r, Err(ChainRefusal::FocusExhausted { needed: 1, free: 0 })); + let mut frame = Frame::prepare(&run, Focus::bind(&[0, 1, 50], 1), &[0], &cur()); + let a = ask( + &mut frame, + &mut exec, + &run, + &cur(), + &[0], + &BTreeSet::from([0]), + 2, + &mut BTreeSet::new(), + Rebuild::Incremental, + ) + .unwrap(); + assert_eq!(a.reached, BTreeSet::from([0, 1, 2])); + assert_eq!(a.admissions.len(), 1); + assert_eq!(a.admissions[0].demanded, BTreeSet::from([2])); +} + +/// 64 thoughts over the frame the chain produced: each retracts the edges out +/// of one slot the first answer reached. Each answer equals the oracle over +/// its edited facts inside the focus; another thought id is refused; the +/// shared tile is unchanged. +#[test] +fn thoughts_run_over_the_frame_the_chain_produced() { + let facts = facts(); + let c = run_chain(&facts, Rebuild::Incremental); + let f = &c.frame; + let w = Witness { + focus: f.focus.generation, + ..cur() + }; + let seeds = slot_set([f.focus.slot_of(SEED).unwrap()]); + let mut ex = TileExec::new(); + let base = ex + .reach(&f.tile, &f.csr, &w, None, None, &[0], &seeds, 3) + .unwrap(); + let reached: Vec = slots_of(&base.reached); + let inf: BTreeSet = f.focus.ids().iter().copied().collect(); + let mut changed = 0; + for t in 0..64u64 { + let victim = reached[t as usize % reached.len()]; + let del: Vec<(u8, u8)> = f + .csr + .edge_set() + .into_iter() + .filter(|e| e.0 == 0 && e.1 == victim) + .map(|e| (victim, e.2)) + .collect(); + let delta = ThoughtDelta::new(t, 0, &[], &del); + let got = ex + .reach(&f.tile, &f.csr, &w, Some(&delta), Some(t), &[0], &seeds, 3) + .unwrap(); + let g = f.focus.id(victim); + let edited: Vec = facts + .iter() + .copied() + .filter(|x| !(x[0] == g && x[1] == 0 && inf.contains(&x[2]))) + .filter(|x| inf.contains(&x[0]) && inf.contains(&x[2])) + .collect(); + let want = oracle(&edited, &[0], &BTreeSet::from([SEED]), 3); + let got_ids: BTreeSet = slots_of(&got.reached) + .into_iter() + .map(|s| f.focus.id(s)) + .collect(); + assert_eq!(got_ids, want, "thought {t}"); + changed += usize::from(got.reached != base.reached); + assert_eq!( + ex.reach( + &f.tile, + &f.csr, + &w, + Some(&delta), + Some(t + 1), + &[0], + &seeds, + 3 + ) + .err(), + Some(Refusal::ThoughtMismatch) + ); + } + assert!( + changed > 0, + "some retraction must change its thought's answer" + ); + let again = ex + .reach(&f.tile, &f.csr, &w, None, None, &[0], &seeds, 3) + .unwrap(); + assert_eq!(again.reached, base.reached, "the shared tile is unchanged"); +} From b702f0acd469625951b2577c31b783f45a99071b Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 08:57:59 +0000 Subject: [PATCH 5/7] D-RPR-1: record the restored handoff probe and its per-transition costs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plan §11.10 names the operation chain (fold escapes -> rebind seeks -> slot_of translation), the disable runs and the measured costs; the banked patch is marked superseded; board row and a dated entry carry the result. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f --- .claude/board/STATUS_BOARD.md | 2 +- .../2026-10-20-d-rpr-1-handoff-lab-demo.md | 15 ++++++ .claude/board/entries/README.md | 3 +- .../d-rpr-1-chain-probe-draft/README.md | 4 +- .../recursive-perspective-rebinding-v1.md | 49 +++++++++++++++++++ 5 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 .claude/board/entries/2026-10-20-d-rpr-1-handoff-lab-demo.md diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index 5fbdb2c50..48d251bf5 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -48,7 +48,7 @@ These PRs merged with no board rows. Every row below is a PROPOSAL (documents an | D-RST-8 | multi-hop over a large domain | BLOCKED on admission A2 | — | | D-RST-9 | native borrowed relation views without petgraph: n-ary sorted permutations as ranges, pattern CSR/CSC as the binary case, stable fact ids, version pin, not `Copy`; starts from the planner's `AdjacencyStore`/`AdjacencyBatch` | LAB ONLY, not admitted to production; Queued (critical path, first) | F1: oracle equality, zero copies, compaction-stable ids, stale and out-of-domain refusals | | D-RPR-0 | recursive perspective rebinding: architectural distillation (`recursive-perspective-rebinding-v1.md`) | LAB ONLY, not admitted to production; PROPOSED; documentation only | claims graded IMPLEMENTED / MEASURED / PROBE / PROPOSED / OPEN against origin/main | -| D-RPR-1 | recursive question-chain probe over one corpus: escapes seed the next angle (H1), `rebind` vs full prepare vs no frame vs MORK oracle | LAB ONLY; not authorized (waits on admission A1 and an operator go) | exact parity; named refusal per failure case; marginal cost per angle with its crossover; sub-cases 1a–1f, anti-vacuity, oracles, disable protocol and refusal axes in plan §11 (folded from #1624); draft chain probe banked in `.claude/harvest/d-rpr-1-chain-probe-draft/` (5/6 tests green on `4dbd085` and `8b570ed`, not run as D-RPR-1) | +| D-RPR-1 | recursive question-chain probe over one corpus: escapes seed the next angle (H1), `rebind` vs full prepare vs no frame vs MORK oracle | LAB ONLY; not authorized (waits on admission A1 and an operator go) | exact parity; named refusal per failure case; marginal cost per angle with its crossover; sub-cases 1a–1f, anti-vacuity, oracles, disable protocol and refusal axes in plan §11 (folded from #1624); draft chain probe banked in `.claude/harvest/d-rpr-1-chain-probe-draft/` (5/6 green; superseded); handoff restored in-crate as a lab demonstration, 8/8 green, per-transition costs in plan §11.10 (escape-driven lookups 360 seeks vs 3 840 full; direct arm cheaper per pass, repaid after ~85 re-asks) — not D-RPR-1 as written, no admission claimed | | D-RPR-2 | premise revision with selective retraction | BLOCKED on D-TGA-3 (per-derived-cell provenance) | stale-premise refusal only, until then | | D-RPR-3 | MeTTa-facing parity of a chain's answers | BLOCKED on D-ASM-4 (not authorized) | — | | D-MPS-8 | native join over a versioned relationship table: R and S laid out by `y` slot, leapfrog intersection as one mask-risc `And`, per-side generations and reseal, per-thought filter planes (`mork-pathmap-schnellverschluss-v1.md` §7b; `crates/mork-pathmap-probe/src/join.rs`) | MEASURED, probe only; not admitted (D-RMAP-1 BIND membrane review) | 8 join tests + native arms in the differential suite vs the oracle; 7 guards disable-verified; cyclic bodies open | diff --git a/.claude/board/entries/2026-10-20-d-rpr-1-handoff-lab-demo.md b/.claude/board/entries/2026-10-20-d-rpr-1-handoff-lab-demo.md new file mode 100644 index 000000000..6f7829dd1 --- /dev/null +++ b/.claude/board/entries/2026-10-20-d-rpr-1-handoff-lab-demo.md @@ -0,0 +1,15 @@ +# D-RPR-1 handoff: escape-driven lookup in preparation, legal fold (2026-10-20) + +**Status:** MEASURED, lab only. **Basis:** `crates/mork-pathmap-probe` at `2aaf6e7`: `tests/chain.rs` 8/8, `examples/chain_cost.rs`. Details are in `recursive-perspective-rebinding-v1.md` §11.10. + +- **Operation chain:** + - the escapes of the `TileExec::reach` fold (values from the CSR escape list) are the next addresses; + - `rebind` consumes them as `SortedRun::neighbours` seeks, one per changed slot and predicate; + - `Focus::slot_of` translates them inside preparation. +- **The fold:** it contains no Gather, no scatter and no foreign key. Its co-addressing is checked on the program itself. +- **Oracle:** every answer equals the full-scan oracle. Incremental and full preparation give equal frames. +- **Costs:** 360 incremental seeks against 3 840 for a full rebuild per admission, so 3 480 avoided. An incremental admission takes about 90–290 µs; the tile part of that is 2–4 µs, and the rest is mostly `rebind`'s CSR copy, not seeks. Folds take 2–6 µs. +- **Direct arm:** 66 seeks and 23.6 µs per pass, against 1 509 µs for the first framed pass; framing is repaid after about 85 re-asks. On this small chain it is BOUNDED, not a win. +- **Disable runs:** 3 of 4 red. Disabling `keep` makes `ask` livelock, so it hangs instead of failing. + +OPEN: A1 / D-RMAP-1 §6 (is a counted preparation lookup admitted?); D-RPR-1 authorization; the `rebind` copy floor; the KJV fixture. diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md index 43d3c6047..058e469fe 100644 --- a/.claude/board/entries/README.md +++ b/.claude/board/entries/README.md @@ -25,7 +25,7 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately opposite directions; the stranding this convention prevents shows up in exactly one of them, never both. -380 entries, 2026-08-06 .. 2026-10-20. +381 entries, 2026-08-06 .. 2026-10-20. | date | entry id | finding | file | |---|---|---|---| @@ -33,6 +33,7 @@ exactly one of them, never both. | 2026-10-20 | `D-RST` | | [2026-10-20-relstore-geometry-not-graph-api.md](2026-10-20-relstore-geometry-not-graph-api.md) | | 2026-10-20 | `recursive-perspective-rebinding` | | [2026-10-20-recursive-perspective-rebinding.md](2026-10-20-recursive-perspective-rebinding.md) | | 2026-10-20 | `D-RPR` | | [2026-10-20-d-rpr-consolidation-1624.md](2026-10-20-d-rpr-consolidation-1624.md) | +| 2026-10-20 | `D-RPR-1` | | [2026-10-20-d-rpr-1-handoff-lab-demo.md](2026-10-20-d-rpr-1-handoff-lab-demo.md) | | 2026-10-20 | `D-RMAP-2` | | [2026-10-20-d-rmap-2-tile-gemm-cell.md](2026-10-20-d-rmap-2-tile-gemm-cell.md) | | 2026-10-20 | `chatgpt-prs-1601-1617-plan-links` | | [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](2026-10-20-chatgpt-prs-1601-1617-plan-links.md) | | 2026-10-19 | `post-merge-recovery-1601-1617` | | [2026-10-19-post-merge-recovery-1601-1617.md](2026-10-19-post-merge-recovery-1601-1617.md) | diff --git a/.claude/harvest/d-rpr-1-chain-probe-draft/README.md b/.claude/harvest/d-rpr-1-chain-probe-draft/README.md index 8eedf7324..de9595515 100644 --- a/.claude/harvest/d-rpr-1-chain-probe-draft/README.md +++ b/.claude/harvest/d-rpr-1-chain-probe-draft/README.md @@ -1,6 +1,8 @@ # D-RPR-1 chain probe: draft, banked as differential-test evidence (2026-10-20) -**Status:** PROBE DRAFT, NOT MERGED, NOT RUN AS D-RPR-1. `chain-probe.patch` applies cleanly to `main` at `4dbd085` and, after #1623, at `8b570ed` (`git apply --check`). It is kept here as a patch, not in the crate, for two reasons: D-RPR-1 is "not authorized; waits on A1 and an operator go" (`recursive-perspective-rebinding-v1.md` §10), and one of its six tests is red (below). +**Status:** SUPERSEDED 2026-10-20 by the restored probe in `crates/mork-pathmap-probe` (`src/chain.rs`, 8/8 green, plan §11.10). Kept as history; do not apply. The text below was the status before that. + +~~**Status:** PROBE DRAFT, NOT MERGED, NOT RUN AS D-RPR-1.~~ `chain-probe.patch` applies cleanly to `main` at `4dbd085` and, after #1623, at `8b570ed` (`git apply --check`). It is kept here as a patch, not in the crate, for two reasons: D-RPR-1 is "not authorized; waits on A1 and an operator go" (`recursive-perspective-rebinding-v1.md` §10), and one of its six tests is red (below). Written by a second session from the instruction "use the existing substrate", before #1622 merged. It is an independent attempt at the chain D-RPR-1 describes, so it serves as a differential check of that design. diff --git a/.claude/plans/recursive-perspective-rebinding-v1.md b/.claude/plans/recursive-perspective-rebinding-v1.md index df978dd3d..d76483a7f 100644 --- a/.claude/plans/recursive-perspective-rebinding-v1.md +++ b/.claude/plans/recursive-perspective-rebinding-v1.md @@ -322,3 +322,52 @@ Copied from D-RMAP-1A §8 and Schnellverschluss §7b, not re-measured: - it takes no timings. - **Why it is not merged:** D-RPR-1 is not authorized. + +### 11.10 The handoff, restored in the crate as a lab demonstration (2026-10-20) + +The operator asked for the §11.9 draft to be restored and fixed, to show one fold's output addresses driving the next indexed lookup. The lookup runs as counted preparation, and the in-fold Gather stays forbidden (the 2026-10-16 ruling). This is a lab demonstration and claims no admission: D-RPR-1 stays "not authorized; waits on A1", and A1 / D-RMAP-1 §6 stay open. The code is in `mork-pathmap-probe`: `src/chain.rs`, `tests/chain.rs` (8 tests) and `examples/chain_cost.rs`. It supersedes the banked patch. + +**One handoff, as the code does it:** + +1. **Fold.** `TileExec::reach` runs a mask-risc program. Its operands are tile planes in one `(target, source)` space plus the broadcast frontier, run with `Foreign::NONE`. +2. **Addresses out.** The fold returns the slots it reached. It also returns, from the prepared CSR's escape list, the global identities its own predicates lead to outside the focus within the hop budget. Those are values in an index that preparation built; the fold only selects them. +3. **Lookup.** `ScopedReach::global` refuses `IncompleteFocus`. `Frame::admit` binds the escapes into evictable slots, and `rebind` makes one `SortedRun::neighbours` seek per changed slot and predicate. This is the gather-shaped step: keyed by the previous fold's values, it runs in preparation, counted, outside the fold. +4. **Translation.** `Focus::slot_of` maps each target from global to local once, inside `rebind` / `Csr::prepare`. +5. **Reuse.** Unchanged slots keep their edges for every predicate. The next question's seeds are the previous answer, already admitted with all three predicates, so they cost no lookup. + +**What the tests pin** (each disable is red; commit `2aaf6e7`): + +| guard | disable | result | +|---|---|---| +| the fold program has no `Gather` and no scatter terminal (n = 1..3, ± delta), and a Gather program is detected | the check returns `true` | 1 red | +| every step escaped, was admitted, and then equalled the full-scan oracle | `ask` returns after the first fold | 4 red | +| incremental seeks fewer than a full rebuild, with an equal frame | incremental reports full seeks | 1 red | +| identities an earlier answer needs are never evicted | eviction ignores `keep` | **hangs**: `ask` re-admits what it just evicted, so the test never finishes. The disable is caught by timeout, not by a red assertion. | + +The fixture fix (§11.3) seeds the first focus with the seed plus 255 identities from a far community (`discover` from 40 000). Each of the three questions then needs at least one lookup, and each lookup's demanded set is disjoint from its seeds. + +**Measured** (`cargo run --release --example chain_cost`, avx512f, 392 238 facts, medians of 5). The chain is `(pred 0, 3 hops) → (pred 1, 1) → (pred 2, 1)`, from seed 17. + +| transition | escapes → demanded | seeks (incremental / full) | admit µs (incremental / full) | next fold µs | +|---|---|---|---|---| +| initial prepare | — | 768 / 768 | 749 / 768 | — | +| step 0, hop 1 | 2 | 6 / 768 | 92 / 377 | 3.0 | +| step 0, hop 2 | 4 | 12 / 768 | 90 / 342 | 3.8 | +| step 0, hop 3 | 8 | 24 / 768 | 102 / 308 | 3.2 | +| step 1 | 29 | 87 / 768 | 156 / 334 | 1.7 | +| step 2 | 77 | 231 / 768 | 288 / 392 | 2.2 | + +- **Seeks after the initial prepare:** 360 incremental against 3 840 full, so reuse avoided 3 480 seeks. +- **Tile rebuild:** about 2–4 µs of each admission. The remaining roughly 90 µs floor of an incremental admission is not seeks (6 seeks cost far less). It is `rebind` copying the 256-slot CSR. That is a cost of `rebind`'s shape, measured but not investigated here. +- **Direct arm:** breadth-first over `SortedRun::neighbours`, no frame. 66 seeks and 23.6 µs for the whole chain; answers of 15 / 44 / 121 ids. +- **Re-ask:** the whole chain on the final frame takes 5.8 µs and 0 seeks, with equal answers. +- **Arithmetic:** the first framed pass costs 1 509 µs incremental (2 551 full). It is repaid after about 85 re-asks of the chain (141 full). This is consistent with the sparse-graph break-even of 76 in §11.7. On a single pass, the direct arm is cheaper. + +**Status of the §11.9 deviations:** + +- Probe-local glue types (`Frame`, `Admission`, `Answer`, `Rebuild`, `ChainRefusal`, `CountingIndex`) remain. They are probe types, so this is not D-RPR-1 as written. +- The fixture is still synthetic. +- H1 is now tested as worded. Escapes drive admission inside a question, and the answer seeds the next question. +- Timings are taken. + +`rmap::TileExec::program` became `pub` so the co-addressing check can read the program the fold runs. That is the only change outside the new files. From 14f8ba17ecfcc7e289a1c3a63fc294a687359289 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 09:05:35 +0000 Subject: [PATCH 6/7] board: drop authorship labels from the #1601-#1617 plan-link entry The entry describes what the PRs lacked (plan and board links), not who wrote them. Renamed the entry file and updated every link to it. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f --- .claude/board/INTEGRATION_PLANS.md | 4 ++-- .claude/board/STATUS_BOARD.md | 4 ++-- .claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md | 2 +- ...7-plan-links.md => 2026-10-20-prs-1601-1617-plan-links.md} | 4 ++-- .claude/board/entries/README.md | 2 +- .claude/plans/alpha-channel-rung-overlay-v1.md | 2 +- .claude/plans/ce64-grammar-wiring-v1.md | 2 +- .claude/plans/ce64-hypothesis-layers-v1.md | 2 +- .claude/plans/d-holo-address-indexed-algebra-v1.md | 2 +- .claude/plans/d-holo-h14c-thought-first-v1.md | 2 +- .claude/plans/d-holo-h14d-logic-mask-read-v1.md | 2 +- .claude/plans/dialectic-engine-v1.md | 2 +- .claude/plans/jc-sbi-counterfactual-integration-v1.md | 2 +- .claude/plans/metta-datalog-assimilation-v1.md | 2 +- .claude/plans/octopus-causal-cot-audit-v1.md | 2 +- .claude/plans/thought-git-api-v1.md | 2 +- crates/lance-graph-act-r/README.md | 2 +- docs/research/34-reasoning-recipes-lance-graph-plan.md | 2 +- .../linguistic-lego-corpus-and-falsification-matrix.md | 2 +- docs/research/linguistic-lego-grammar-to-query-rfc.md | 2 +- 20 files changed, 23 insertions(+), 23 deletions(-) rename .claude/board/entries/{2026-10-20-chatgpt-prs-1601-1617-plan-links.md => 2026-10-20-prs-1601-1617-plan-links.md} (90%) diff --git a/.claude/board/INTEGRATION_PLANS.md b/.claude/board/INTEGRATION_PLANS.md index 96923db4f..94793b052 100644 --- a/.claude/board/INTEGRATION_PLANS.md +++ b/.claude/board/INTEGRATION_PLANS.md @@ -26,9 +26,9 @@ - Finding: multi-hop over a large domain is blocked by scatter (push) as well as gather (pull); the tile is the only admitted shape (within a focus). Admissions A1 (global→local binding), A2 (large-domain multi-hop), A3 (scalar petgraph iteration) are open. - The existing petgraph `lance-fold-hop` experiment consumes the quarantined `OutgoingHop`; the plan does not build on it. -## 2026-10-20 — plan links for ChatGPT-authored #1601–#1617 (no new plan) +## 2026-10-20 — plan links for #1601–#1617 (no new plan) -**Status:** LINKS ONLY (entry `2026-10-20-chatgpt-prs-1601-1617-plan-links.md`). Eleven existing plans gained a `Connected sources from #1601–#1617` section: `d-holo-address-indexed-algebra-v1`, `d-holo-h14c-thought-first-v1`, `d-holo-h14d-logic-mask-read-v1`, `ce64-grammar-wiring-v1`, `ce64-hypothesis-layers-v1`, `thought-git-api-v1`, `alpha-channel-rung-overlay-v1`, `dialectic-engine-v1`, `metta-datalog-assimilation-v1`, `octopus-causal-cot-audit-v1`, `jc-sbi-counterfactual-integration-v1`. +**Status:** LINKS ONLY (entry `2026-10-20-prs-1601-1617-plan-links.md`). Eleven existing plans gained a `Connected sources from #1601–#1617` section: `d-holo-address-indexed-algebra-v1`, `d-holo-h14c-thought-first-v1`, `d-holo-h14d-logic-mask-read-v1`, `ce64-grammar-wiring-v1`, `ce64-hypothesis-layers-v1`, `thought-git-api-v1`, `alpha-channel-rung-overlay-v1`, `dialectic-engine-v1`, `metta-datalog-assimilation-v1`, `octopus-causal-cot-audit-v1`, `jc-sbi-counterfactual-integration-v1`. ## 2026-10-19 — mork-pathmap-schnellverschluss-v1 — MORK / PathMap behind one replaceable boundary → `.claude/plans/mork-pathmap-schnellverschluss-v1.md` diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index 48d251bf5..2f5a594f8 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -13,9 +13,9 @@ Plan `mork-pathmap-schnellverschluss-v1.md`; entry `entries/2026-10-19-mork-path | D-MPS-6 | Lance-owned PathMap-trait cursor over a sealed `RelationOrder` | BLOCKED (`RelationOrder` not built) | no copy, or the copy stated | | D-MPS-7 | licence: no MORK source vendored until a licence is declared (#148 unmerged) | OPEN | probe vendors nothing | -## Plan links for ChatGPT-authored #1601–#1617 (2026-10-20) +## Plan links for #1601–#1617 (2026-10-20) -Entry `entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. Each docs or data artifact now names its owning plan, and each owning plan lists it. +Entry `entries/2026-10-20-prs-1601-1617-plan-links.md`. Each docs or data artifact now names its owning plan, and each owning plan lists it. | Item | Scope | Status | Evidence | |---|---|---|---| diff --git a/.claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md b/.claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md index c80857f24..fa4d10a6d 100644 --- a/.claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md +++ b/.claude/board/entries/2026-10-20-d-rpr-consolidation-1624.md @@ -22,7 +22,7 @@ Two sessions distilled the same research brief. #1622 merged first and is canoni ## Preserved unchanged from #1624 -The 19 artifact back-links, 11 plan forward-links and entry `2026-10-20-chatgpt-prs-1601-1617-plan-links.md`, rebased onto `main`. +The 19 artifact back-links, 11 plan forward-links and entry `2026-10-20-prs-1601-1617-plan-links.md`, rebased onto `main`. ## Draft probe diff --git a/.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md b/.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md similarity index 90% rename from .claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md rename to .claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md index 78fcabfc9..879f30b9c 100644 --- a/.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md +++ b/.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md @@ -1,6 +1,6 @@ -# ChatGPT-authored PRs #1601–#1617: plan and board links (2026-10-20) +# PRs #1601–#1617: plan and board links (2026-10-20) -**Status:** DONE (links only). **Basis:** VERIFIED-IN-CODE. Every PR body in #1591–#1617 was read through the GitHub API. #1591–#1600 carry a Claude Code footer; #1601–#1617 do not, so they are treated as ChatGPT-authored. Their files were read in full before linking. No content, D-id or plan was invented: each artifact is attached to the existing plan whose subject it is. +**Status:** DONE (links only). **Basis:** VERIFIED-IN-CODE. Every PR in #1591–#1617 was read through the GitHub API. #1591–#1600 already linked their plans; #1601–#1617 merged docs and data that named no plan, and no plan named them. Their files were read in full before linking. No content, D-id or plan was invented: each artifact is attached to the existing plan whose subject it is. #1618 already gave all seventeen an arc entry and one shared recovery entry (`2026-10-19-post-merge-recovery-1601-1617.md`). What was missing: most artifacts named no plan or board file, and no plan named them. Measured before this change: of the 19 artifacts that now carry a back-link, 4 named a plan or board file (`2606.24948`, `2210.07278` and `2512.17373` a plan, the LEGO RFC a board entry), and their only incoming references were the arc and one lumped status row. diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md index 058e469fe..02ff34e96 100644 --- a/.claude/board/entries/README.md +++ b/.claude/board/entries/README.md @@ -32,10 +32,10 @@ exactly one of them, never both. | 2026-10-20 | `relstore-quack-petgraph-plan` | | [2026-10-20-relstore-quack-petgraph-plan.md](2026-10-20-relstore-quack-petgraph-plan.md) | | 2026-10-20 | `D-RST` | | [2026-10-20-relstore-geometry-not-graph-api.md](2026-10-20-relstore-geometry-not-graph-api.md) | | 2026-10-20 | `recursive-perspective-rebinding` | | [2026-10-20-recursive-perspective-rebinding.md](2026-10-20-recursive-perspective-rebinding.md) | +| 2026-10-20 | `prs-1601-1617-plan-links` | | [2026-10-20-prs-1601-1617-plan-links.md](2026-10-20-prs-1601-1617-plan-links.md) | | 2026-10-20 | `D-RPR` | | [2026-10-20-d-rpr-consolidation-1624.md](2026-10-20-d-rpr-consolidation-1624.md) | | 2026-10-20 | `D-RPR-1` | | [2026-10-20-d-rpr-1-handoff-lab-demo.md](2026-10-20-d-rpr-1-handoff-lab-demo.md) | | 2026-10-20 | `D-RMAP-2` | | [2026-10-20-d-rmap-2-tile-gemm-cell.md](2026-10-20-d-rmap-2-tile-gemm-cell.md) | -| 2026-10-20 | `chatgpt-prs-1601-1617-plan-links` | | [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](2026-10-20-chatgpt-prs-1601-1617-plan-links.md) | | 2026-10-19 | `post-merge-recovery-1601-1617` | | [2026-10-19-post-merge-recovery-1601-1617.md](2026-10-19-post-merge-recovery-1601-1617.md) | | 2026-10-19 | `native-join-relationship-table` | | [2026-10-19-native-join-relationship-table.md](2026-10-19-native-join-relationship-table.md) | | 2026-10-19 | `mork-pathmap-schnellverschluss` | | [2026-10-19-mork-pathmap-schnellverschluss.md](2026-10-19-mork-pathmap-schnellverschluss.md) | diff --git a/.claude/plans/alpha-channel-rung-overlay-v1.md b/.claude/plans/alpha-channel-rung-overlay-v1.md index a443eac22..390e34432 100644 --- a/.claude/plans/alpha-channel-rung-overlay-v1.md +++ b/.claude/plans/alpha-channel-rung-overlay-v1.md @@ -1222,6 +1222,6 @@ number that would justify the rest has to be measured after D-ACR-1. ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`docs/research/34-reasoning-recipes-lance-graph-plan.md`](../../docs/research/34-reasoning-recipes-lance-graph-plan.md) (#1609): 34 reasoning tactics: source and Lance-graph wiring diff --git a/.claude/plans/ce64-grammar-wiring-v1.md b/.claude/plans/ce64-grammar-wiring-v1.md index a8314ea80..e4f4b02bd 100644 --- a/.claude/plans/ce64-grammar-wiring-v1.md +++ b/.claude/plans/ce64-grammar-wiring-v1.md @@ -298,7 +298,7 @@ D-CGW-13's OpenPSI runner. ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md`](../../.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md) (#1611): READ LATER: Graph Attributes and Structure Matching (GASM) - [`.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md`](../../.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md) (#1611): READ LATER: Top-down crosslinguistic semantic map graphs diff --git a/.claude/plans/ce64-hypothesis-layers-v1.md b/.claude/plans/ce64-hypothesis-layers-v1.md index d50275b61..bc51dfb0f 100644 --- a/.claude/plans/ce64-hypothesis-layers-v1.md +++ b/.claude/plans/ce64-hypothesis-layers-v1.md @@ -792,6 +792,6 @@ two non-NARS revision laws (needs coresearch G2); R16 AriGraph evidence stamp ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.claude/architecture/neurofunctional-rubicon-moore-plasticity.md`](../architecture/neurofunctional-rubicon-moore-plasticity.md) (#1602): Neurofunctional crosswalk: OpenPsi/Rubikon control and Moore-local synaptic plasticity diff --git a/.claude/plans/d-holo-address-indexed-algebra-v1.md b/.claude/plans/d-holo-address-indexed-algebra-v1.md index decb25d18..f41baf0af 100644 --- a/.claude/plans/d-holo-address-indexed-algebra-v1.md +++ b/.claude/plans/d-holo-address-indexed-algebra-v1.md @@ -1210,7 +1210,7 @@ operation. ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md`](../../.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md) (#1601): arXiv:2408.10592 — Hologram is a graph: theorems need matched witnesses - [`.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md`](../../.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md) (#1601): arXiv:2606.24948 — Global superposition breaks two-hop retrieval before composition diff --git a/.claude/plans/d-holo-h14c-thought-first-v1.md b/.claude/plans/d-holo-h14c-thought-first-v1.md index 25ad43e52..30c349ea2 100644 --- a/.claude/plans/d-holo-h14c-thought-first-v1.md +++ b/.claude/plans/d-holo-h14c-thought-first-v1.md @@ -602,7 +602,7 @@ scattered masks should be laid out so presence is page-local. ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md`](../../.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md) (#1611): READ LATER: Distributed Datalog at Scale with Worst-Case Optimal Joins - [`.claude/architecture/cartesian-epistemic-self-model.md`](../architecture/cartesian-epistemic-self-model.md) (#1602): Cartesian Epistemic Self-Model: Presence, CE64, Datalog and Saccadic Understanding diff --git a/.claude/plans/d-holo-h14d-logic-mask-read-v1.md b/.claude/plans/d-holo-h14d-logic-mask-read-v1.md index 341460358..d5fb634da 100644 --- a/.claude/plans/d-holo-h14d-logic-mask-read-v1.md +++ b/.claude/plans/d-holo-h14d-logic-mask-read-v1.md @@ -242,7 +242,7 @@ because it carries the stage-1 reduction). ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md`](../../.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md) (#1601): arXiv:2606.24948 — Global superposition breaks two-hop retrieval before composition - [`.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md`](../../.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md) (#1611): Selective Yannakakis / SMASH: choose when to reduce before joining diff --git a/.claude/plans/dialectic-engine-v1.md b/.claude/plans/dialectic-engine-v1.md index 78711c999..f749c8706 100644 --- a/.claude/plans/dialectic-engine-v1.md +++ b/.claude/plans/dialectic-engine-v1.md @@ -333,7 +333,7 @@ stamps) and felt form (Datapath, texture) are one event read from two buckets. ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md`](../../.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md) (#1610): The Dialectic of AI: Hegel, Geist, and the Path to Machine Freedom - [`.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md`](../../.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md) (#1610): Can AI be a subject like us? A Hegelian speculative-philosophical approach diff --git a/.claude/plans/jc-sbi-counterfactual-integration-v1.md b/.claude/plans/jc-sbi-counterfactual-integration-v1.md index 887547ea4..3b6b73138 100644 --- a/.claude/plans/jc-sbi-counterfactual-integration-v1.md +++ b/.claude/plans/jc-sbi-counterfactual-integration-v1.md @@ -303,7 +303,7 @@ For all three, compare four schedulers with **matched total computation and iden ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md`](../../.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md) (#1611): Meta-uncertainty in Bayesian model comparison: distinct from CE64 MUL - [`crates/lance-graph-act-r/README.md`](../../crates/lance-graph-act-r/README.md) (#1615): lance-graph-act-r diff --git a/.claude/plans/metta-datalog-assimilation-v1.md b/.claude/plans/metta-datalog-assimilation-v1.md index f0ee9c1f6..6f171eeda 100644 --- a/.claude/plans/metta-datalog-assimilation-v1.md +++ b/.claude/plans/metta-datalog-assimilation-v1.md @@ -196,6 +196,6 @@ Rules of the doctrine: ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md`](../../.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md) (#1611): READ LATER: OpenCog Hyperon (100-page background and introduction) diff --git a/.claude/plans/octopus-causal-cot-audit-v1.md b/.claude/plans/octopus-causal-cot-audit-v1.md index 0218c0997..aeeef0748 100644 --- a/.claude/plans/octopus-causal-cot-audit-v1.md +++ b/.claude/plans/octopus-causal-cot-audit-v1.md @@ -1005,6 +1005,6 @@ Nine lines. Everything else in this file is the evidence for them. ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md`](../../.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md) (#1611): READ LATER: Can Aha Moments Be Fake? True Thinking Score and decorative CoT diff --git a/.claude/plans/thought-git-api-v1.md b/.claude/plans/thought-git-api-v1.md index 6ba22e93f..2f9054d35 100644 --- a/.claude/plans/thought-git-api-v1.md +++ b/.claude/plans/thought-git-api-v1.md @@ -251,7 +251,7 @@ writes several datasets has one `DurableRef` per dataset (D-RMAP §7.6.3). ## Connected sources from #1601–#1617 (2026-10-20) -Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md`. +Docs and data merged in #1601–#1617 that this plan owns. They are reading notes or reference data, not implementation; each now links back here. Board: `.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md`. - [`.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md`](../../.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md) (#1611): Dialectics for Artificial Intelligence: reversible concepts, excess and grounds - [`docs/research/34-reasoning-recipes-lance-graph-plan.md`](../../docs/research/34-reasoning-recipes-lance-graph-plan.md) (#1609): 34 reasoning tactics: source and Lance-graph wiring diff --git a/crates/lance-graph-act-r/README.md b/crates/lance-graph-act-r/README.md index fa2f73c00..0f65d48d3 100644 --- a/crates/lance-graph-act-r/README.md +++ b/crates/lance-graph-act-r/README.md @@ -1,6 +1,6 @@ # lance-graph-act-r -> **Plan and board (2026-10-20):** owned by [`jc-sbi-counterfactual-integration-v1`](../../.claude/plans/jc-sbi-counterfactual-integration-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1615. +> **Plan and board (2026-10-20):** owned by [`jc-sbi-counterfactual-integration-v1`](../../.claude/plans/jc-sbi-counterfactual-integration-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1615. Experimental ACT-R cognitive **production arbitration kernel**, not a complete ACT-R cognitive architecture. diff --git a/docs/research/34-reasoning-recipes-lance-graph-plan.md b/docs/research/34-reasoning-recipes-lance-graph-plan.md index 536614ba6..d2c18f418 100644 --- a/docs/research/34-reasoning-recipes-lance-graph-plan.md +++ b/docs/research/34-reasoning-recipes-lance-graph-plan.md @@ -1,6 +1,6 @@ # 34 reasoning tactics: source and Lance-graph wiring -> **Plan and board (2026-10-20):** owned by [`alpha-channel-rung-overlay-v1`](../../.claude/plans/alpha-channel-rung-overlay-v1.md), [`thought-git-api-v1`](../../.claude/plans/thought-git-api-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1609. +> **Plan and board (2026-10-20):** owned by [`alpha-channel-rung-overlay-v1`](../../.claude/plans/alpha-channel-rung-overlay-v1.md), [`thought-git-api-v1`](../../.claude/plans/thought-git-api-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1609. **Owner:** AdaWorldAPI/lance-graph **Status:** research and implementation plan, not a claim of complete execution diff --git a/docs/research/linguistic-lego-corpus-and-falsification-matrix.md b/docs/research/linguistic-lego-corpus-and-falsification-matrix.md index d2e5088c9..3578765d4 100644 --- a/docs/research/linguistic-lego-corpus-and-falsification-matrix.md +++ b/docs/research/linguistic-lego-corpus-and-falsification-matrix.md @@ -1,6 +1,6 @@ # Language LEGO — repository harvest, legal gates and falsification matrix -> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1603. +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1603. **Status:** source/integration inventory, not a dependency decision or measured result. **Captured:** 2026-10-18. Companion to [the grammar-to-query RFC](linguistic-lego-grammar-to-query-rfc.md). diff --git a/docs/research/linguistic-lego-grammar-to-query-rfc.md b/docs/research/linguistic-lego-grammar-to-query-rfc.md index 31c87190a..a97e97ead 100644 --- a/docs/research/linguistic-lego-grammar-to-query-rfc.md +++ b/docs/research/linguistic-lego-grammar-to-query-rfc.md @@ -1,6 +1,6 @@ # Language LEGO: corpus-grounded grammar as executable graph-query algebra -> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1603. +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1603. **Status:** RESEARCH / RFC ONLY — not an implemented cross-language query compiler. **Captured:** 2026-10-18. From f9ab46a195eef4973b63d414eac5a40a60b06fbb Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 09:05:50 +0000 Subject: [PATCH 7/7] board: point the #1601-#1617 back-links at the renamed entry Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f --- ...78_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md | 2 +- .../2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md | 2 +- ...logram_is_a_graph_theorem_matches_must_preserve_witnesses.md | 2 +- ...9.20212_graph_attributes_structure_matching_gasm_bookmark.md | 2 +- ...423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md | 2 +- ...selective_yannakakis_smash_mask_first_thought_coordinates.md | 2 +- ...4941_true_thinking_score_decorative_cot_ablation_bookmark.md | 2 +- ...ics_algorithmic_determinations_excess_information_grounds.md | 2 +- ...606.24948_superposition_capacity_breaks_two_hop_retrieval.md | 2 +- .../2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md | 2 +- ...g_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md | 2 +- ...vrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md | 2 +- ...uinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md | 2 +- data/qualia/MUSICAL_ANCHORS.md | 2 +- data/qualia/MUSIC_ENRICHMENT.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md b/.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md index f1b94a025..374870662 100644 --- a/.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md +++ b/.arxiv/2210.07278_meta_uncertainty_bayesian_model_comparison_vs_ce64_mul.md @@ -1,6 +1,6 @@ # Meta-uncertainty in Bayesian model comparison: distinct from CE64 MUL -> **Plan and board (2026-10-20):** owned by [`jc-sbi-counterfactual-integration-v1`](../.claude/plans/jc-sbi-counterfactual-integration-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. +> **Plan and board (2026-10-20):** owned by [`jc-sbi-counterfactual-integration-v1`](../.claude/plans/jc-sbi-counterfactual-integration-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1611. **Source:** Marvin Schmitt, Stefan T. Radev, Paul-Christian Bürkner, *Meta-Uncertainty in Bayesian Model Comparison*, AISTATS 2023 / PMLR 206. **Paper:** https://arxiv.org/abs/2210.07278 · [PDF](https://arxiv.org/pdf/2210.07278) (arXiv v3, 2023-02-21). diff --git a/.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md b/.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md index 80e53b270..ab88eb73f 100644 --- a/.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md +++ b/.arxiv/2310.18318v1_opencog_hyperon_100_page_reading_bookmark.md @@ -1,6 +1,6 @@ # READ LATER: OpenCog Hyperon (100-page background and introduction) -> **Plan and board (2026-10-20):** owned by [`metta-datalog-assimilation-v1`](../.claude/plans/metta-datalog-assimilation-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. +> **Plan and board (2026-10-20):** owned by [`metta-datalog-assimilation-v1`](../.claude/plans/metta-datalog-assimilation-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1611. **Title:** *OpenCog Hyperon: A Framework for AGI at the Human Level and Beyond – High-Level Background & Introduction* **Primary author:** Ben Goertzel; with Vitaly Bogdanov, Michael Duncan, Deborah Duong, Zarathustra Goertzel, Jan Horlings, Matthew Ikle', Lucius Greg Meredith, Alexey Potapov, Andre Luiz de Senna, Hedra Seid, Andres Suarez, Adam Vandervorst and Robert Werko. diff --git a/.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md b/.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md index 393dc40b9..d3427ac95 100644 --- a/.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md +++ b/.arxiv/2408.10592_hologram_is_a_graph_theorem_matches_must_preserve_witnesses.md @@ -1,6 +1,6 @@ # arXiv:2408.10592 — Hologram is a graph: theorems need matched witnesses -> **Plan and board (2026-10-20):** owned by [`d-holo-address-indexed-algebra-v1`](../.claude/plans/d-holo-address-indexed-algebra-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1601. +> **Plan and board (2026-10-20):** owned by [`d-holo-address-indexed-algebra-v1`](../.claude/plans/d-holo-address-indexed-algebra-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1601. **Paper:** Litian Huang, Xinguo Yu, Feng Xiong, Bin He, Shengbing Tang, Jiawen Fu (2024), *Hologram Reasoning for Solving Algebra Problems with Geometry Diagrams* **Primary source:** https://arxiv.org/abs/2408.10592 diff --git a/.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md b/.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md index c81bc2d90..5913a35bb 100644 --- a/.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md +++ b/.arxiv/2409.20212_graph_attributes_structure_matching_gasm_bookmark.md @@ -1,6 +1,6 @@ # READ LATER: Graph Attributes and Structure Matching (GASM) -> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1611. **Author:** Raphaël Candelier. **Paper:** *Graph matching based on similarities in structure and attributes*. diff --git a/.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md b/.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md index cf791e864..e6fdff928 100644 --- a/.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md +++ b/.arxiv/2412.01423_semantic_maps_top_down_crosslinguistic_graph_bookmark.md @@ -1,6 +1,6 @@ # READ LATER: Top-down crosslinguistic semantic map graphs -> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1611. **Authors:** Zhu Liu, Cunliang Kong, Ying Liu, Maosong Sun. **Paper:** *A Top-down Graph-based Tool for Modeling Classical Semantic Maps: A Crosslinguistic Case Study of Supplementary Adverbs*. diff --git a/.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md b/.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md index 36dfeaf9a..260768872 100644 --- a/.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md +++ b/.arxiv/2502.20233_selective_yannakakis_smash_mask_first_thought_coordinates.md @@ -1,6 +1,6 @@ # Selective Yannakakis / SMASH: choose when to reduce before joining -> **Plan and board (2026-10-20):** owned by [`d-holo-h14d-logic-mask-read-v1`](../.claude/plans/d-holo-h14d-logic-mask-read-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. +> **Plan and board (2026-10-20):** owned by [`d-holo-h14d-logic-mask-read-v1`](../.claude/plans/d-holo-h14d-logic-mask-read-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1611. **Paper:** Daniela Böhm, Georg Gottlob, Matthias Lanzinger, Davide Longo, Cem Okulmus, Reinhard Pichler, Alexander Selzer, *Selective Use of Yannakakis' Algorithm to Improve Query Performance: Machine Learning to the Rescue*. **Source:** [arXiv:2502.20233v2](https://arxiv.org/abs/2502.20233v2) | [PDF](https://arxiv.org/pdf/2502.20233v2) | [HTML](https://arxiv.org/html/2502.20233v2) (revised 2025-06-20). diff --git a/.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md b/.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md index cfd790fcd..fba4261bc 100644 --- a/.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md +++ b/.arxiv/2510.24941_true_thinking_score_decorative_cot_ablation_bookmark.md @@ -1,6 +1,6 @@ # READ LATER: Can Aha Moments Be Fake? True Thinking Score and decorative CoT -> **Plan and board (2026-10-20):** owned by [`octopus-causal-cot-audit-v1`](../.claude/plans/octopus-causal-cot-audit-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. +> **Plan and board (2026-10-20):** owned by [`octopus-causal-cot-audit-v1`](../.claude/plans/octopus-causal-cot-audit-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1611. **Authors:** Jiachen Zhao, Yiyou Sun, Weiyan Shi, Dawn Song. **Paper:** *Can Aha Moments Be Fake? Towards Quantifying Decorative and True Thinking in Chain-of-Thought*. diff --git a/.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md b/.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md index 6c501380b..26cf7c88c 100644 --- a/.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md +++ b/.arxiv/2512.17373_dialectics_algorithmic_determinations_excess_information_grounds.md @@ -1,6 +1,6 @@ # Dialectics for Artificial Intelligence: reversible concepts, excess and grounds -> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md), [`thought-git-api-v1`](../.claude/plans/thought-git-api-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. +> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md), [`thought-git-api-v1`](../.claude/plans/thought-git-api-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1611. **Paper:** Zhengmian Hu, *Dialectics for Artificial Intelligence*. **Source:** [arXiv:2512.17373v2](https://arxiv.org/abs/2512.17373v2) | [PDF](https://arxiv.org/pdf/2512.17373v2) | [extended HTML](https://arxiv.org/html/2512.17373v2); revised 2025-12-23. diff --git a/.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md b/.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md index 1ddcc8c5c..2ff9fbda0 100644 --- a/.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md +++ b/.arxiv/2606.24948_superposition_capacity_breaks_two_hop_retrieval.md @@ -1,6 +1,6 @@ # arXiv:2606.24948 — Global superposition breaks two-hop retrieval before composition -> **Plan and board (2026-10-20):** owned by [`d-holo-address-indexed-algebra-v1`](../.claude/plans/d-holo-address-indexed-algebra-v1.md), [`d-holo-h14d-logic-mask-read-v1`](../.claude/plans/d-holo-h14d-logic-mask-read-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1601. +> **Plan and board (2026-10-20):** owned by [`d-holo-address-indexed-algebra-v1`](../.claude/plans/d-holo-address-indexed-algebra-v1.md), [`d-holo-h14d-logic-mask-read-v1`](../.claude/plans/d-holo-h14d-logic-mask-read-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1601. **Paper:** Randhir Kumar (2026), *Holographic Memory for Zero-Shot Compositional Reasoning in Knowledge Graphs: A Mechanistic Study of Where and Why It Fails* **Source:** https://arxiv.org/abs/2606.24948 diff --git a/.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md b/.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md index 067ccddee..6941e0b92 100644 --- a/.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md +++ b/.arxiv/2610.12692_distributed_datalog_wcoj_hypercube_bookmark.md @@ -1,6 +1,6 @@ # READ LATER: Distributed Datalog at Scale with Worst-Case Optimal Joins -> **Plan and board (2026-10-20):** owned by [`d-holo-h14c-thought-first-v1`](../.claude/plans/d-holo-h14c-thought-first-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1611. +> **Plan and board (2026-10-20):** owned by [`d-holo-h14c-thought-first-v1`](../.claude/plans/d-holo-h14c-thought-first-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1611. **Authors:** Kunting Qi, Yihao Sun, Kristopher Micinski, Thomas Gilray, Sidharth Kumar. **Paper:** *Distributed Datalog at Scale with Worst-Case Optimal Joins*. diff --git a/.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md b/.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md index 04175cbf1..77838eae7 100644 --- a/.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md +++ b/.arxiv/hung_vo_2025_the_dialectic_of_ai_hegel_geist_machine_freedom.md @@ -1,6 +1,6 @@ # The Dialectic of AI: Hegel, Geist, and the Path to Machine Freedom -> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1610. +> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1610. **Author:** Hung Vo **Published:** March 2025 https://hungvtm.medium.com/the-dialectic-of-ai-hegel-geist-and-the-path-to-machine-freedom-2432a0b75566 diff --git a/.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md b/.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md index 755e0623a..2c62381b7 100644 --- a/.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md +++ b/.arxiv/plevrakis_2024_can_ai_be_a_subject_like_us_hegelian_approach.md @@ -1,6 +1,6 @@ # Can AI be a subject like us? A Hegelian speculative-philosophical approach -> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1610. +> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1610. **Author:** Ermylos Plevrakis **Journal:** Discover Computing 27, Article 46 (2024) diff --git a/.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md b/.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md index 4d8d8fc6d..6205b5239 100644 --- a/.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md +++ b/.arxiv/van_tuinen_2020_philosophy_in_the_light_of_ai_hegel_or_leibniz.md @@ -1,6 +1,6 @@ # Philosophy in the Light of AI: Hegel or Leibniz -> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1610. +> **Plan and board (2026-10-20):** owned by [`dialectic-engine-v1`](../.claude/plans/dialectic-engine-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1610. **Author:** Sjoerd van Tuinen **Journal:** *Angelaki: Journal of the Theoretical Humanities*, 25(4), 97–109 (2020) diff --git a/data/qualia/MUSICAL_ANCHORS.md b/data/qualia/MUSICAL_ANCHORS.md index e26644e09..b13ed59c6 100644 --- a/data/qualia/MUSICAL_ANCHORS.md +++ b/data/qualia/MUSICAL_ANCHORS.md @@ -1,6 +1,6 @@ # Calibrated 219: original musical-qualia annotations -> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1607. +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1607. This is an **additive, provenance-preserving** companion to the artifacts introduced by PR #1571. diff --git a/data/qualia/MUSIC_ENRICHMENT.md b/data/qualia/MUSIC_ENRICHMENT.md index aa94ff759..ef62cc962 100644 --- a/data/qualia/MUSIC_ENRICHMENT.md +++ b/data/qualia/MUSIC_ENRICHMENT.md @@ -1,6 +1,6 @@ # Musical enrichment of the calibrated 219 qualia -> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-chatgpt-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-chatgpt-prs-1601-1617-plan-links.md). Merged in #1608. +> **Plan and board (2026-10-20):** owned by [`ce64-grammar-wiring-v1`](../../.claude/plans/ce64-grammar-wiring-v1.md). Board: [2026-10-20-prs-1601-1617-plan-links.md](../../.claude/board/entries/2026-10-20-prs-1601-1617-plan-links.md). Merged in #1608. This is an **additive archival sidecar**, not a replacement for the #1571 ABI, palette, or binary Jina fixture.