Repository navigation
D-TGB-0/1: thought-git fixtures, oracle, signal checks and the slot pool - #1630
Conversation
New lab probe crates/thought-git-probe (own workspace, excluded; depends on lance-graph-contract only). Fixtures: one write intention per Rubicon outcome, an unremarkable stack, a contradiction, a divergent pair, a regression scanpath, a cold/hot surprise and an unwritten lane. The oracle computes 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, and an unwritten cell reads as absent. Signal checks run on the real contract code, each with a can-fire and a can-stay-silent case: AlphaOverlay regressions, the AlphaMask cold/hot xor, the kanban routes per outcome, the MUL gate, and GadamerRevision (replayed material earns nothing; a second landing earns nothing; a preserved contradiction holds the cycle). 19 tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
PREREGISTRATION.md fixes the falsifier, disable and fixture for D-TGB-1..10 and lists what stays OPEN (anomaly thresholds, which revision kinds count, satisfactory, card granularity). The 59..63 falsifiers on edges need lance-graph-planner and move to D-TGB-3; their Gadamer half is pinned in this crate. Board: STATUS_BOARD D-TGB-0 In PR; plan item checked; entry 2026-10-20-d-tgb-0-preregistration; AGENT_LOG for today's Haiku runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Operator decision (2026-10-20): focus on the important cases; at the 63-slot ceiling start with FIFO versus pruning the least-used lanes. The earlier rule (squash unremarkable thoughts first, else refuse the branch) is struck. SlotPool in crates/thought-git-probe: branch takes a free slot or evicts by policy, free returns it, and a handle carries its generation so an evicted or freed handle is stale. Four tests: FIFO evicts the oldest, LeastUsed the idlest (the two differ on one workload), an evicted handle is stale, a freed slot is reused without eviction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
Operator (2026-10-20): squash if the least-used thoughts are in a dependency chain. The pool records which live thought a branch came from (its own bookkeeping, never W). At the ceiling the policy's candidate is squashed into its live parent, or absorbs its live child; only a chain-free candidate is evicted. The new thought's own parent is never the candidate. Six slot tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
…te Datalog engines Role (oracle, front end, or neither) stays OPEN; neither may execute set operations beside the polyfill. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Add Carrot credits or activate Agent usage billing to use Autofix |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 17537a323a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| } else if let Some(child) = self.oldest_child(c) { | ||
| (child, c) |
There was a problem hiding this comment.
Keep the branch parent out of chain squashing
When the pool is full and the policy selects a root whose oldest child is the from slot, this branch removes that very parent: for example, under FIFO with thought 1 parented to thought 0, branch(..., Some(thought_1_slot)) skips thought 1 as the candidate, selects thought 0, and then chooses thought 1 here as from and releases it. The call succeeds but unexpectedly makes the supplied parent handle stale, contrary to the registered invariant that a new thought's parent is never removed; child selection must also exclude keep, or a different candidate must be chosen.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Confirmed: reproduced with FIFO, thought 1 parented to thought 0, then branching from thought 1. The fix is 8b6b585, carried by #1631 because this PR was already merged.
When the candidate root's oldest child is the new thought's parent, the root is now squashed into that child. The child then takes the root's place in the tree, so its handle stays live.
Test: branching_from_the_candidates_child_keeps_the_child. It is red without the fix, and red again if the child does not take over the root's parent.
Generated by Claude Code
Under pressure with a full pool, a root candidate was squashed with its oldest child as the source. When that child was the new thought's parent, the branch succeeded but the caller's parent handle went stale. The root is now squashed into that child instead, and the child takes the root's place in the tree. Found by review on #1630. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
The full thought git API (thought-git-api-v1.md) is still a proposal. crates/thought-git-probe implements the slot pool, the oracle and the tests. It does not implement the production land, rebase or persistence pipeline; D-TGB-2..5 stay Queued. D-TGB-0 and D-TGB-1 merged with #1630/#1631, so their board rows now read Shipped (lab) instead of In PR. The module doc no longer says that no thought-git code exists. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
This adds the pre-registration for thought git (D-TGB-0) and the slot pool (D-TGB-1) from
thought-git-basics-v1.md(merged in #1629). Both live in a new lab probe,crates/thought-git-probe. It is its own workspace, excluded from the main one, and depends only onlance-graph-contract.D-TGB-0: fixtures, from-scratch oracle, signal checks
src/fixtures.rs):src/oracle.rs): computes the next version from scratch.Committhought lands.PREREGISTRATION.md: the falsifier, the disable and the fixture for D-TGB-1..10.D-TGB-1: slot pool (
src/slots.rs)Operator decisions, 2026-10-20: "The easiest way in the beginning is Fifo vs pruning the least used lanes", then "Squashing if the least used are in a dependency chain".
branchtakes a free slot. When all 63 are taken, the policy picks one candidate:Eviction::Fifopicks the oldest;Eviction::LeastUsedpicks the one used least, with ties going to the oldest.What happens to the candidate depends on its place in a dependency chain:
The parent the new thought branches from is never the candidate.
free(used for squash, discard and land) returns a slot, and any children it had move to its parent. A handle carries its generation, so a stale handle is refused.Tests (25)
only_commit_landsagreement_with_a_given_is_not_storeda_different_value_for_a_given_is_refused_and_recordedtests/slots.rsLeastUsedkeyed on age onlyleast_used_evicts_the_idlest_roota_least_used_thought_in_a_chain_is_squashed_into_its_parent,a_candidate_with_a_child_absorbs_itbranching_from_the_candidate_keeps_itcargo test,cargo clippy --all-targets -- -D warningsandcargo fmtare clean, run fromcrates/thought-git-probe.Plan notes added in this PR
datafrogthrough Quack (D-TGB-10).crepe(Soufflé-style) andascent(datafrog+, lattices, BYODS, rayon) as candidate Datalog engines. Their role is still OPEN.Not in this PR
The falsifiers for CE64 bits 59..63 on edges (
pearl::hydrate,pearl::revise) needlance-graph-planner. They move to D-TGB-3.Board
2026-10-20-d-tgb-0-preregistration.md.Cargo.tomladds the probe toexclude.🤖 Generated with Claude Code
https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f