Land the stranded ABI minor 8 on main + board hygiene - #33
Merged
Conversation
…e times
The wire encoding of the §14 `carving` parameter lived in three places:
a Rust `match`, Java's `Carving` enum, and abi.md's own table. Each was
correct. Nothing would have failed if one had stopped agreeing with the
others — and the failure mode is silent: a grouping added or reordered
upstream re-maps one copy, a sweep then reads the same 12 bytes under the
wrong reading, and returns a plausible number.
One source, two derivations:
1. the contract owns the SET (CascadeShape::ROTATIONS);
2. kernels::CARVING_ORDER derives the ENCODING from it by a RULE
(group count, descending — never declaration position), as a const;
3. the manifest SERVES the result: carving_count + carvings[8], packed
(groups << 8) | group_bytes.
No new symbol. The manifest already exists so Java can discover the ABI's
shape rather than declare it, and a wire encoding is exactly such a shape.
Java keeps its ARITY and loses its ENCODING: RAILS_6X2 named anything but
6x2 would be a lie in its own name, so groups()/groupBytes() stay
declared, while wire()/ofWire() read the served table. The one literal
encoding left is CarvingTable.PRE_MINOR_8, whose name says it is history.
Also fixes a latent defect the change made reachable: Java's load gate
required the FULL manifest layout, so this — the first growth of the
manifest struct — would have made every older artifact fail to load, in
flat contradiction of §2's additive promise. The gate now requires only
the 104-byte base prefix; later fields are read when size_of_manifest
covers them AND the minor is high enough.
Gates: Rust 134 lib tests, fmt + clippy -D warnings clean; Java 304
checks (was 288); OldAbiCompatTest green against minors 1-4; no new javac
warnings.
Disable-runs, each red-then-green: swapped packed axes fail the serve
test; a reversed sort fails the order test and two others; a mismatched
Java arity fires BOTH membership directions; the restored full-layout
gate makes the minor-4 library fail to load outright.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DCfrD5y19cvFc4AoyydXYv
ABI minor 8 — the register groupings served as data, not copied three times
Two things, both about work being real rather than merely merged. **The stranded tail.** PR #32 (minor 8) was stacked on PR #30's branch, because two open PRs claiming the same ABI minor would have collided. #30 then merged to main FIRST, so #32 merged into a branch that had already been absorbed — and main sat at LGJ_ABI_MINOR = 7 while the minor-8 commit, CarvingTable/CarvingTableTest, the load-gate prefix fix, abi.md §17 and three board entries lived only on claude/layout-probe. Nothing lost, nothing broken, main a strict ancestor — but the reviewed work was absent from the branch anyone would build, and neither PR gave any signal. This carries it over. The failure is generic to stacked PRs, so it is written down twice: ISSUES.md ISS-LGJ-STACK-TAIL-STRANDED-MINOR-8, and a CLAUDE.md iron rule naming the check (`git log origin/main..origin/<base>` must be empty). **Board hygiene**, per the operator's ask to keep .claude/board closer to lance-graph's: - CROSS_REPO_PRS.md, NEW, modeled on lance-graph's. This repo is gated on three upstream PRs (ndarray #283 and #280, lance-graph #1025) by its own missing-capability STOP rule, and had no ledger of them at all — the gating relationship lived only in commit messages. Each entry names the capability that was missing and what the hand-rolled local version would have been. - README.md, NEW. What each board file answers, the one-writer rule and its base case, the non-recursion clause, measure-then-pin, and an explicit list of what is deliberately NOT carried from lance-graph's board — an empty ledger read as an authoritative one is worse than an absent file. - STATUS_BOARD.md gains the minors 5-8 sweep arc. It stopped at 2026-08-18 and carried nothing for the whole sweep. - ISSUES.md gains the stranded-tail entry (resolved) and ISS-LGJ-FACETSCHEMA-PAIR48 (open, upstream-owned) — verified at facet_schema.rs:34 and class_view.rs:1168 rather than asserted. - AGENT_LOG.md gains this session, including both owned mistakes. Gates re-run on this branch: Rust 134 lib tests, fmt + clippy -D warnings clean; Java 304 checks; OldAbiCompatTest green against minors 1 and 4. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DCfrD5y19cvFc4AoyydXYv
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 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 |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_bd1cb623-17b0-4956-80fd-e877040424fc) |
AdaWorldAPI
marked this pull request as ready for review
August 25, 2026 15:47
AdaWorldAPI
pushed a commit
that referenced
this pull request
Aug 27, 2026
PR_ARC_INVENTORY had entries for #1-#12, #14, #16, #18, #20 and #32, and nothing else. Missing: #13, #22-#31, #33-#41 — twenty PRs. (#15/#17/#19/#21 are also absent and correctly so: each is itself an arc-entry-only PR, exempt under the termination clause.) #32's own entry still read "(draft, opened …)" with no merge sha. Corrects this branch's first count, which said nineteen and read the gap as starting at #21. Both were wrong — it is twenty, and it starts at #13. The first count was a range subtraction over a file with holes; the enumeration is what found the difference. Method, which is the point rather than an aside: each entry drafted from that PR's own body and diff, five parallel agents over four PRs each, none permitted to work from a later session's recall. Every backfilled entry's Confidence bullet ends "Backfilled 2026-08-27 from the PR body and diff, not written at merge time", so reconstructed entries are distinguishable from ones written at merge time; several state which claims are the PR body's own and were not re-verified. Every cited sha, date and merge-vs- squash label machine-checked against git. Four things the backfill turned up, each recorded in the entry it belongs to: #25's body asserts "no code, no reproducer changes" and its own diff contradicts it; #39 left its lgj_hop doc comment describing the pre-change design; #34's banked evidence file did not identify its own JDK; and #41 is on main while its own title reads [DO NOT MERGE AS-IS], recorded as unresolved disposition rather than an endorsement. ISS-LGJ-ARC-INVENTORY-STOPPED-AT-32 moves to RESOLVED with the corrected count and the standing rule restated: the entry goes in at open, in the PR's own commit. The backfill is the repair, not the process. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DCfrD5y19cvFc4AoyydXYv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two things, both about work being real rather than merely merged.
1. The stranded tail — minor 8 never reached
mainPR #32 (minor 8) was stacked on PR #30's branch, because two open PRs claiming the same ABI minor would have been a real collision. #30 then merged to
mainfirst, so #32 merged into a branch that had already been absorbed.Net effect:
mainsat atLGJ_ABI_MINOR = 7while the minor-8 commit,CarvingTable/CarvingTableTest, the load-gate prefix fix,abi.md§17 and three board entries lived only onclaude/layout-probe— two commits ahead of main.Nothing was lost and nothing was broken (
mainwas a strict ancestor, no divergence), but the reviewed work was absent from the branch anyone would build, and neither PR gave any signal: both report "merged", both are green, GitHub says nothing. It surfaced only because a wake event prompted agit log origin/maincheck rather than trusting the merge notification.This PR carries those two commits over. The failure is generic to stacked PRs, so it is written down twice rather than quietly fixed:
ISSUES.md→ISS-LGJ-STACK-TAIL-STRANDED-MINOR-8(found + resolved, double-entry)CLAUDE.md→ a new iron rule naming the check, which must come back empty:2. Board hygiene
Per the ask to bring
.claude/boardcloser to lance-graph's.CROSS_REPO_PRS.md— NEW, modeled on lance-graph's file of the same name. This repo is gated on three upstream PRs by its own missing-capability STOP rule and had no ledger of them at all — the gating relationship lived only in commit messages:masked_strided_group_sumClassView::cascade_shapemask_andnotfamilyEach entry names the capability that was missing and what the hand-rolled local version would have been — which is the part that makes the STOP rule legible rather than a slogan. All three PR numbers verified against the upstream logs, not asserted from memory.
README.md— NEW. What each board file answers, when it is updated, the one-writer rule and its base case, the non-recursion clause, measure-then-pin, and an explicit section on what is deliberately not carried over from lance-graph's board (sprint-log-*/,agent-tags/, the entropy ledgers). That repo runs large worker fleets; this one has not. An empty ledger read as an authoritative one is worse than an absent file.STATUS_BOARD.mdgains the minors 5–8 sweep arc. It stopped at 2026-08-18 and carried nothing for the entire sweep, including the two operator corrections that shaped it.ISSUES.mdalso gainsISS-LGJ-FACETSCHEMA-PAIR48(open, upstream-owned) — verified atfacet_schema.rs:34andclass_view.rs:1168. Noted honestly as possibly not a defect:Pair48has real consumers (helixSigned360,cam_pq[u8; 6], both genuinely 48-bit), so the open question is whether it andCascadeShapeare one question asked twice or two questions that must both be answerable. This repo consumes the contract; it does not arbitrate it.AGENT_LOG.mdgains this session, including both owned mistakes: thegit checkoutthat destroyed uncommitted work inkernels.rs, and the stacked-PR tail above.Gates
Re-run on this branch, not inherited: Rust 134 lib tests,
fmt+clippy -D warningsclean; Java 304 checks;OldAbiCompatTestgreen against minors 1 and 4.🤖 Generated with Claude Code
https://claude.ai/code/session_01DCfrD5y19cvFc4AoyydXYv