Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .claude/board/AGENT_LOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 2026-10-20 — D-TGB harvest and D-MPS-9 groundwork (Haiku)

- Five runs: `substrate-mapper` over MORK `kernel/src/space.rs` (47 items, six verb bodies verbatim), over `mork-pathmap-probe/src` (267 items), over `lance-graph-quack/src` (201 rows); `harvest-scout` for the write-path symbols (GadamerRevision, pearl, MUL gates, `advance_on_gate`, `LanceCycleWriter`, `EpistemicState5`); `census-counter` (`nal_inventory.tsv` 115 rows / 115 ids, `KanbanColumn` 6, `RevisionKind` 9, `EvidentialEffect` 3, probe tests 42).
- Checks on the main thread: `nal_inventory.tsv` count and the probe test counts re-run (equal); `add_sexpr` 900, `query_multi` 1116, `lower` 1383, `lower_group_by` 1407, `Refusal` at boundary.rs:41 and rmap.rs:84 read at the source (equal); `advance_on_gate` recount 58 against 59 lines in the harvest file (the extra line is the pattern header).
- Misses: one MORK mapper run returned BRIEF-INCOMPLETE (asked for a caller space; resumed with "none"); the quack mapper left a stray scratch file (removed) and self-reported one typo in a mentions column. Retired: none. Written by the orchestrating main thread only.

## 2026-10-20 — synergy map #1592–#1626 and board catch-up for #1621–#1626 (Haiku)

- Round 1 (#1592–#1624): seven substrate-mapper runs over about 8 700 lines of plans, research docs and probe code; one harvest of board rows. Four claims re-read at the source, all held. A few off-by-one line numbers and one stray placeholder, self-reported.
Expand Down
4 changes: 2 additions & 2 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -355,8 +355,8 @@ Plan: `.claude/plans/ce64-hypothesis-layers-v1.md`. Plateau: `.claude/knowledge/
| **D-TGA-4** | land through the revision gate into the next Lance version (D-HL-8) | Queued | landing a thought that is behind is refused |
| **D-TGA-5** | squash_into (partial squash) and blame | Queued | blame returns original sources after slot reuse |
| **D-TGA-6** | MergeQueue | Queued | independent thoughts == landed by hand in FIFO order; a thought reading another negated lands after it; a cycle through negation refused at enqueue |
| **D-TGB-0** | thought git basics: fixtures per write-intention outcome, squash-stack and anomaly fixtures, absent-not-zero fixture, from-scratch oracle (`thought-git-basics-v1.md`) | Queued (lab) | disables written before code |
| **D-TGB-1** | slot pool, autonomous: taken by `branch`, freed by `squash`/`discard`/`land` (the write is the Rubicon decision, 2026-10-20) | Queued (lab) | no slot held by a thought whose result was read; at 63 taken unremarkable thoughts squash first, else `branch` refused |
| **D-TGB-0** | thought git basics: fixtures per write-intention outcome, squash-stack and anomaly fixtures, absent-not-zero fixture, from-scratch oracle (`thought-git-basics-v1.md`) | In PR (lab probe `crates/thought-git-probe`, 19 tests; `PREREGISTRATION.md`) | 5 oracle disables verified red-then-green; every signal has a can-fire and a can-stay-silent case on real contract code; the pearl half on edges moves to D-TGB-3 |
| **D-TGB-1** | slot pool, autonomous: taken by `branch`, freed by `squash`/`discard`/`land` (the write is the Rubicon decision, 2026-10-20) | In PR (lab probe `crates/thought-git-probe/src/slots.rs`) | at 63 taken `branch` picks a FIFO or least-used candidate, squashes it along its dependency chain if it has one, else evicts it (DECISIONS 2026-10-20; was: squash unremarkable first, else refuse); stale handles refused; 6 tests |
| **D-TGB-2** | `w_slot` lane labels (W = thought layer, not a pointer) qualified by base version / slot generation | Queued (lab) | no live cell carries a landed slot; old-generation edge refused |
| **D-TGB-3** | `Commit` lands one sparse batch through `LanceCycleWriter`; `DurableRef` = dataset + `Ref::Version(branch, version)` | Queued (lab) | empty cycle writes nothing; re-submit reconciles; two branches at version 7 told apart |
| **D-TGB-4** | receipt (base ref, program id, seeds, slot generation) instead of history | Queued (lab) | replay from receipt reproduces writes cell for cell |
Expand Down
2 changes: 1 addition & 1 deletion .claude/board/SUPERSESSION-INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ coverage instead.
| `persist_cycle` | BLOCKED | — | 12 | 8 | 5 |
| `CognitiveMarkers` | REPURPOSE | `Commit` | 1 | 0 | 0 |
| `DominoCascade` | REPURPOSE | `Commit` | 7 | 1 | 0 |
| `GateDecision` | REPURPOSE | — | 25 | 30 | 26 |
| `GateDecision` | REPURPOSE | — | 26 | 30 | 26 |
| `GateState` | REPURPOSE | — | 14 | 1 | 1 |
| `MergeMode` | REPURPOSE | — | 8 | 14 | 13 |
| `ResonanceDto` | REPURPOSE | `PerturbationDto` | 2 | 12 | 7 |
Expand Down
21 changes: 21 additions & 0 deletions .claude/board/entries/2026-10-20-d-tgb-0-preregistration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 2026-10-20 — D-TGB-0: thought-git pre-registration

**Status:** MEASURED (lab probe `crates/thought-git-probe`, own workspace, excluded; depends on `lance-graph-contract` only). Operator approved lab code 2026-10-20 ("Lab-Code freigegeben, fang mit D-TGB-0 an").

## What landed

- Fixtures (`src/fixtures.rs`): one write intention per Rubicon outcome (Commit, Plan, Prune, pre-Rubicon veto), an unremarkable stack, a contradiction against a given, a divergent pair, a regression scanpath, a cold/hot surprise pair, an unwritten lane. Twelve rows of four lanes; givens on lane 0 of rows 0..4.
- Oracle (`src/oracle.rs`): the next version from scratch. Only Commit lands; a given is never overwritten (agreement not stored, a different value recorded as a contradiction); a divergence inside one version stores nothing and is recorded; an unwritten cell reads absent.
- `PREREGISTRATION.md`: falsifier, disable and fixture for D-TGB-1..10.

## Measured

- 19 tests: 9 oracle, 10 signal. Clippy `-D warnings` and fmt clean.
- Five oracle disables, each red at the named test, restored green: land every outcome (`only_commit_lands`); store agreement (`agreement_with_a_given_is_not_stored`); overwrite the given (`a_different_value_for_a_given_is_refused_and_recorded`); last writer wins (divergence test and the squash test); read missing as 0 (absence test, plus two that read an absent cell).
- Signals on real contract code, each with a can-fire and a can-stay-silent case: `AlphaOverlay::regressions`, `AlphaMask` cold/hot xor, the kanban route per outcome, the MUL gate at `Evaluation`, and `GadamerRevision` (replayed material is `Echo` and routes to `Plan` even with a `Necessary` counterfactual; a second landing has no new root; a preserved contradiction suspends and keeps its tension).
- Naive squash is safe on the unremarkable stack and hides the divergence on the divergent pair, which is the reason an anomaly stops a squash.

## OPEN

- Which anomaly signals stop a squash and at what threshold; which revision kinds besides a contradiction count; what "satisfactory" means; kanban card granularity.
- The 59..63 falsifiers on edges (`pearl::hydrate` / `pearl::revise`) need `lance-graph-planner`; they run with D-TGB-3.
3 changes: 2 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

387 entries, 2026-08-06 .. 2026-10-20.
388 entries, 2026-08-06 .. 2026-10-20.

| date | entry id | finding | file |
|---|---|---|---|
Expand All @@ -35,6 +35,7 @@ exactly one of them, never both.
| 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-TGB` | thought git basics planned from the ideal state | [2026-10-20-d-tgb-thought-git-basics.md](2026-10-20-d-tgb-thought-git-basics.md) |
| 2026-10-20 | `D-TGB-0` | | [2026-10-20-d-tgb-0-preregistration.md](2026-10-20-d-tgb-0-preregistration.md) |
| 2026-10-20 | `D-TGA-SLOT-AXIS` | thoughts are 64 slots, and the slot number is CE64's witness pointer | [2026-10-20-d-tga-slot-axis-witness-pointer.md](2026-10-20-d-tga-slot-axis-witness-pointer.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) |
Expand Down
13 changes: 10 additions & 3 deletions .claude/plans/thought-git-basics-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ A petgraph API is an optional usability layer on top, not a storage format or an
- re-reading inherited material (replaying the same receipt, another branch of the same sources) can never raise certification, because it carries no new root;
- a landed `ContradictionPreserved` lands the contradiction as structure, with certification unchanged; only a revision with a new root may feed `pearl::revise`.
- **Consequence for "satisfactory"** (correction item 7): the jc statistics compare strategy branches, but a branch is landable only if the MUL gate lets it through and its revision verdict is not `Echo` / `ClosedCycle`. Which verdicts may raise certification is fixed by `GadamerRevision`, not by jc.
- **Falsifiers (for D-TGB-0):** landing the same thought twice leaves 59..63 unchanged the second time (no new root); a thought whose only support is replayed inherited material lands with certification unchanged; a `Block` gate leaves the Lance version count unchanged; `pearl::hydrate` never changes certification and `pearl::revise` never changes topology on any fixture edge. Open: which revision kinds count as an anomaly that stops a squash, beside the contradiction record.
- **Falsifiers (registered in D-TGB-0; the Gadamer half runs there, the edge half with D-TGB-3):** landing the same thought twice leaves 59..63 unchanged the second time (no new root); a thought whose only support is replayed inherited material lands with certification unchanged; a `Block` gate leaves the Lance version count unchanged; `pearl::hydrate` never changes certification and `pearl::revise` never changes topology on any fixture edge. Open: which revision kinds count as an anomaly that stops a squash, beside the contradiction record.

**Optimizing `datafrog` through Quack and the folding polyfill** (operator, 2026-10-20: "Schau auch ob du datafrog> quack oder folding RISC simd Optimierung kannst"). What the repo already measured, and what it allows:

Expand All @@ -167,6 +167,11 @@ A petgraph API is an optional usability layer on top, not a storage format or an
- **Consequence for thought git:** a `datafrog` rule over the metadata table is optimized by laying its relations out at a shared coordinate (D-MPS-8 already does: presence planes per side over a shared-variable domain) and running the rule as stages 1–4. `datafrog` stays the exact oracle; the folded answer must equal its bag of tuples.
- **Not covered yet:** recursion. Stages 1–4 are non-recursive; a recursive rule needs relalg `μ` with the fixpoint outside mask-risc (D-MTP-3, not built). Until then a recursive rule runs on `datafrog` itself, under the polyfill rule only where it executes set operations.
- **Later, as a possibility** (operator, 2026-10-20: "Später ist auch mork MeTTa relalg Datalog denkbar"): Datalog written in MeTTa, run over MORK and lowered through relalg. Not scheduled; it waits for the same MORK licence clearance (D-MPS-7: MIT intent stated, PR #148 open) and would need the same `datafrog` oracle.
- **Two more Rust Datalog engines beside `datafrog`** (operator, 2026-10-20: "Crepe= souffle / Ascent,= datafrog+"). Both are cloned read-only into the session; nothing depends on them yet.
- `crepe` (AdaWorldAPI fork, b26a580, v0.2.0, MIT OR Apache-2.0): Datalog compiled by a proc macro, "heavily inspired by Souffle" (its README). Semi-naive evaluation, stratified negation, automatic index generation.
- `ascent` (AdaWorldAPI fork, e52c84b, v0.8.1, MIT): `datafrog` plus a rule language. Macro Datalog with stratified negation and aggregation (`sum`, `min`, `max`, `count`, `mean`), user-defined lattices whose last column is joined on conflict, parallel code through `ascent_par!` (rayon), and BYODS (bring your own data structures, OOPSLA).
- Relevance here: `ascent`'s lattice relations are the shape a revision needs, where two facts for one key join instead of both being kept; stratified negation covers "branches with no anomaly". `datafrog` has neither, so rules that need them would otherwise be written by hand.
- **OPEN:** whether either becomes an oracle beside `datafrog`, a rule front end whose relations still execute on the polyfill, or neither. Under "Polyfill, never legacy" neither may become a second executor of set operations. ⊘ Struck: "an `ascent_par!` path is a scheduler of its own and would be one" (operator, 2026-10-20: "Ascent supports rayon"). Rayon is not the problem: it is already a dependency in this workspace (`holograph`, `thinking-engine`), and parallelism is not a second executor. The rule bites on who executes the joins: ascent's own relations and indices would be one, rayon or not. BYODS is the open route around that, since the relation behind a rule can be a data structure we provide. Whether a polyfill-backed BYODS relation fits ascent's interface is unchecked.
- **Next step (D-TGB-10):** a pre-registered probe running the D-TGB-8 rules ("which branches are unremarkable", "which landed facts rest on source s") as H14d stages over the metadata table, against `datafrog`, answers identical as bags, costs reported, no threshold claimed before the run.

**Kanban gets a planning vocabulary later** (DECISION, operator, 2026-10-20: "Kanban sollte später planungs Vokabular mit einer schönen schnellen effektiven API erhalten. Was lasse ich gerne offen. Es muß aber auch quack shaped folding polyfill methods verstehen"):
Expand Down Expand Up @@ -211,10 +216,12 @@ Read in the crate sources (`lance-13.0.0/src/dataset.rs`, `dataset/refs.rs`, `da

## Work items (test-first; each lands with its falsifier first)

- [ ] **D-TGB-0 Pre-registration.** Fixtures: one write intention per Rubicon outcome (`Commit`, `Plan`, `Prune`, pre-Rubicon veto); a stack of unremarkable thoughts that squash and continue on a new branch; one thought per anomaly signal that must stop the squash; an unwritten lane that must read as absent, not zero. Oracle: a from-scratch run on main at the next version. Disables written before code. ⊘ Struck 2026-10-20: "three thoughts that reference each other through `w_slot`, one mutual pair" (W names a lane and points nowhere).
- [x] **D-TGB-0 Pre-registration.** Done in `crates/thought-git-probe` (fixtures, oracle, 19 tests, `PREREGISTRATION.md`); the 59..63 falsifiers on edges need `lance-graph-planner` (`pearl`) and move to D-TGB-3, their Gadamer half is pinned here. Fixtures: one write intention per Rubicon outcome (`Commit`, `Plan`, `Prune`, pre-Rubicon veto); a stack of unremarkable thoughts that squash and continue on a new branch; one thought per anomaly signal that must stop the squash; an unwritten lane that must read as absent, not zero. Oracle: a from-scratch run on main at the next version. Disables written before code. ⊘ Struck 2026-10-20: "three thoughts that reference each other through `w_slot`, one mutual pair" (W names a lane and points nowhere).
- [ ] **D-TGB-1 Slot pool, autonomous.** A slot is taken by `branch` and freed by `squash`, `discard` or `land`, without a decision.
- Falsifier: after a run, every slot is either live work or free; no slot is held by a thought whose result was already read.
- Edges: with 63 slots taken, unremarkable thoughts are squashed first; if none is, `branch` is refused, never given a 65th slot.
- ⊘ Struck 2026-10-20: "Edges: with 63 slots taken, unremarkable thoughts are squashed first; if none is, `branch` is refused". DECISION (operator, 2026-10-20: "Please focus on important stuff not on edge cases. The easiest way in the beginning is Fifo vs pruning the least used lanes"): at 63 slots `branch` evicts one live thought, by FIFO or by least use (ties to the oldest); the evicted thought's handle goes stale. Anomaly-aware squashing comes later, if the two simple policies prove insufficient.
- Before evicting, a candidate in a dependency chain is squashed (operator, 2026-10-20: "Squashing if the least used are in a dependency chain. That's probably covering already a lot of heuristics"): into its live parent, or its live child is squashed into it. Only a candidate with neither is evicted. The parent link lives in the pool's bookkeeping, never in W. The new thought's own parent is never the candidate.
- Built in `crates/thought-git-probe/src/slots.rs` (`SlotPool`, `Eviction::{Fifo, LeastUsed}`, `Pressure::{Squashed, Evicted}`), 6 tests.
- Disables: never free on squash; squash a thought that carries an anomaly.
- ⊘ Struck 2026-10-20: "slot pool on the Rubicon crossing … taken only at `Planning → CognitiveWork`" and its falsifier "no slot exists without a live card".
- [ ] **D-TGB-2 Lane labels.** `w_slot` (CE64 bits 53..58) names the thought a state belongs to, qualified by the frame's base version (0) or the slot's generation (1..=63); it is not a pointer between thoughts. The relabel rules are #1628's.
Expand Down
4 changes: 4 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,10 @@ exclude = [
# on the AdaWorldAPI forks, results only (D-ASM-10). Run from its directory
# so its `.cargo/config.toml` applies: `cd crates/mork-pathmap-probe && cargo test`.
"crates/mork-pathmap-probe",
# D-TGB-0 thought-git pre-registration: fixtures, the from-scratch oracle,
# and signal checks over lance-graph-contract only. Lab probe; run from
# its directory: `cd crates/thought-git-probe && cargo test`.
"crates/thought-git-probe",
# X-C2-1 injection harness (RP-SEAL Tier 0) — fault injection over a
# synthetic cycle; anti-vacuity gate reproduces the known in-tree
# false-accepts against the REAL live implementations. Verify via
Expand Down
13 changes: 13 additions & 0 deletions crates/thought-git-probe/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[package]
name = "thought-git-probe"
version = "0.0.0"
edition = "2024"
publish = false
description = "D-TGB-0 pre-registration: thought-git fixtures, the from-scratch oracle, and checks that the anomaly signals the plan relies on can fire and stay silent. Lab only; no Lance storage."

# Its own workspace root, excluded from the lance-graph workspace (lab probe).
# Run from THIS directory: `cd crates/thought-git-probe && cargo test`.
[workspace]

[dependencies]
lance-graph-contract = { path = "../lance-graph-contract" }
Loading
Loading