Skip to content

docs: move the open bug out of CLAUDE.md and into an issue - #57

Merged
anoop-narang merged 1 commit into
mainfrom
docs/bugs-belong-in-issues
Sep 28, 2026
Merged

anoop-narang merged 1 commit into
mainfrom
docs/bugs-belong-in-issues

Conversation

@anoop-narang

Copy link
Copy Markdown
Collaborator

CLAUDE.md had a "Known open issue" section describing the disk reclaim race. That is the same class of mistake as the pinned commit id this file already dropped — a fact that expires.

Whoever fixes the race will not think to edit a conventions document. The section then rots into a description of a bug that no longer exists, and the next agent either wastes time on a solved problem or trusts the workaround it implies.

Filed as #56 instead, with the sequence, the t4 LSN ordering that makes the stale delete win, the generation-key fix and its consequence for DiskResidue::superseded, and the deterministic test that would close it.

What replaces it does not expire:

Open an issue. Nothing in this file records a specific bug: a bug is by definition temporary, and this file goes stale the moment someone fixes one without remembering to edit it.

Check the open issues before reporting something — known gaps in the cache's accounting and reclamation are tracked there, and at least one has been re-discovered more than once.

Kept the one remaining mention of DiskResidue / reclaim_orphaned_disk / settle, in the upstream-PR section. That is not a bug report — it is the durable fact that they are fork-only, which is what makes a patch touching them unupstreamable. Re-checked against upstream: zero occurrences of each.

The file carried a "Known open issue" section describing the disk reclaim
race. That is the same kind of expiring fact as the pinned commit id this
file already dropped: whoever fixes the race will not think to edit a
conventions document, so the section rots into a description of a bug
that no longer exists, and an agent reading it wastes time on a solved
problem — or worse, trusts the workaround it implies.

A bug belongs in the tracker, where it can be assigned, discussed and
closed. Filed as #56, with the sequence, the
`t4` LSN ordering that makes the delete win, the generation-key fix and
its consequence for `DiskResidue::superseded`, and the test that would
close it.

Replaced with what does not expire: open an issue, and read the open ones
first, because this particular gap has been re-discovered more than once.

Kept the mention of `DiskResidue`, `reclaim_orphaned_disk` and `settle`
in the upstream-PR section. That is not a bug report — it is the durable
fact that they are fork-only, which is what makes patches touching them
unupstreamable. Re-checked against upstream: zero occurrences of each.
@anoop-narang
anoop-narang requested a review from a team as a code owner September 28, 2026 06:03
@anoop-narang
anoop-narang requested review from zfarrell and removed request for a team September 28, 2026 06:03
@anoop-narang
anoop-narang merged commit 51741de into main Sep 28, 2026
13 checks passed
@codecov

codecov Bot commented Sep 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions

Copy link
Copy Markdown

📊 Benchmark Comparison

Current: 03384de7 (Liquid) vs Baseline: 03384de7 (DataFusionDefault)

Query Cold Time Δ Warm Time Δ CPU Time Δ
Q1 2.0ms (2.0ms) +0.0% 0.000ms (0.000ms) +0.0% 0.000ms (0.000ms) +0.0%
Q2 8.0ms (6.0ms) +33.3% 4.0ms (4.5ms) -11.1% 7.5ms (6.0ms) +25.0%
Q3 14.0ms (11.0ms) +27.3% 5.5ms (12.0ms) -54.2% 3.0ms (22.5ms) -86.7%
Q4 14.0ms (12.0ms) +16.7% 3.0ms (11.5ms) -73.9% 3.0ms (23.5ms) -87.2%
Q5 54.0ms (52.0ms) +3.8% 48.0ms (56.0ms) -14.3% 5.0ms (27.0ms) -81.5%
Q6 227.0ms (108.0ms) +110.2% 88.0ms (107.0ms) -17.8% 29.5ms (79.0ms) -62.7%
Q7 1.0ms (1.0ms) +0.0% 0.000ms (0.000ms) +0.0% 0.000ms (0.000ms) +0.0%
Q8 8.0ms (6.0ms) +33.3% 8.0ms (6.0ms) +33.3% 10.5ms (7.0ms) +50.0%
Q9 116.0ms (98.0ms) +18.4% 93.5ms (90.0ms) +3.9% 7.5ms (43.5ms) -82.8%
Q10 108.0ms (96.0ms) +12.5% 87.0ms (96.5ms) -9.8% 9.5ms (62.0ms) -84.7%
Q11 53.0ms (29.0ms) +82.8% 23.5ms (25.0ms) -6.0% 44.5ms (36.0ms) +23.6%
Q12 57.0ms (29.0ms) +96.6% 25.5ms (29.0ms) -12.1% 49.0ms (42.0ms) +16.7%
Q13 254.0ms (117.0ms) +117.1% 108.5ms (114.0ms) -4.8% 56.5ms (81.0ms) -30.2%
Q14 626.0ms (146.0ms) +328.8% 142.5ms (141.0ms) +1.1% 80.0ms (108.0ms) -25.9%
Q15 428.0ms (99.0ms) +332.3% 114.5ms (105.5ms) +8.5% 75.5ms (98.5ms) -23.4%
Q16 140.0ms (107.0ms) +30.8% 120.0ms (101.0ms) +18.8% 6.5ms (26.0ms) -75.0%
Q17 674.0ms (210.0ms) +221.0% 263.5ms (218.5ms) +20.6% 83.0ms (104.5ms) -20.6%
Q18 667.0ms (216.0ms) +208.8% 264.0ms (213.5ms) +23.7% 80.0ms (106.0ms) -24.5%
Q19 893.0ms (406.0ms) +120.0% 358.5ms (411.0ms) -12.8% 95.0ms (161.0ms) -41.0%
Q20 14.0ms (11.0ms) +27.3% 3.0ms (11.5ms) -73.9% 8.0ms (24.0ms) -66.7%
Q21 542.0ms (177.0ms) +206.2% 477.5ms (174.5ms) +173.6% 294.5ms (273.5ms) +7.7%
Q22 889.0ms (168.0ms) +429.2% 608.0ms (170.5ms) +256.6% 171.0ms (344.5ms) -50.4%
Q23 1.94s (463.0ms) +319.4% 1.62s (468.5ms) +245.6% 555.0ms (739.5ms) -24.9%
Q24 25.93s (901.0ms) +2778.2% 988.5ms (912.5ms) +8.3% 627.5ms (2.52s) -75.1%
Q25 333.0ms (73.0ms) +356.2% 16.0ms (59.0ms) -72.9% 45.5ms (122.5ms) -62.9%
Q26 129.0ms (44.0ms) +193.2% 19.5ms (48.0ms) -59.4% 55.5ms (87.0ms) -36.2%
Q27 319.0ms (61.0ms) +423.0% 25.5ms (60.5ms) -57.9% 74.5ms (123.0ms) -39.4%
Q28 796.0ms (209.0ms) +280.9% 723.5ms (215.5ms) +235.7% 200.5ms (276.5ms) -27.5%
Q29 1.45s (992.0ms) +46.3% 958.0ms (1.00s) -4.5% 389.0ms (357.5ms) +8.8%
Q30 33.0ms (28.0ms) +17.9% 25.0ms (26.5ms) -5.7% 7.0ms (22.0ms) -68.2%
Q31 634.0ms (109.0ms) +481.7% 80.0ms (109.5ms) -26.9% 76.0ms (144.5ms) -47.4%
Q32 947.0ms (104.0ms) +810.6% 123.0ms (102.0ms) +20.6% 115.0ms (149.0ms) -22.8%
Q33 306.0ms (326.0ms) -6.1% 289.0ms (312.0ms) -7.4% 9.5ms (73.5ms) -87.1%
Q34 780.0ms (406.0ms) +92.1% 452.0ms (418.5ms) +8.0% 140.5ms (277.0ms) -49.3%
Q35 803.0ms (410.0ms) +95.9% 472.5ms (424.0ms) +11.4% 142.5ms (278.0ms) -48.7%
Q36 100.0ms (107.0ms) -6.5% 90.5ms (106.0ms) -14.6% 5.0ms (26.0ms) -80.8%
Q37 319.0ms (108.0ms) +195.4% 73.5ms (101.0ms) -27.2% 27.5ms (70.0ms) -60.7%
Q38 72.0ms (48.0ms) +50.0% 32.0ms (45.0ms) -28.9% 22.0ms (23.5ms) -6.4%
Q39 283.0ms (46.0ms) +515.2% 33.5ms (50.0ms) -33.0% 20.5ms (73.5ms) -72.1%
Q40 720.0ms (202.0ms) +256.4% 227.0ms (192.0ms) +18.2% 65.0ms (132.0ms) -50.8%
Q41 23.0ms (21.0ms) +9.5% 11.5ms (19.0ms) -39.5% 7.0ms (17.0ms) -58.8%
Q42 21.0ms (21.0ms) +0.0% 10.5ms (19.0ms) -44.7% 7.0ms (16.5ms) -57.6%
Q43 21.0ms (19.0ms) +10.5% 12.5ms (16.0ms) -21.9% 8.0ms (11.0ms) -27.3%

⚠️ LiquidCache is slower on 10 queries (warm)

  • Q22: warm +256.6% (608.0ms vs 170.5ms)
  • Q23: warm +245.6% (1.62s vs 468.5ms)
  • Q28: warm +235.7% (723.5ms vs 215.5ms)
  • Q21: warm +173.6% (477.5ms vs 174.5ms)
  • Q8: warm +33.3% (8.0ms vs 6.0ms)
  • Q18: warm +23.7% (264.0ms vs 213.5ms)
  • Q17: warm +20.6% (263.5ms vs 218.5ms)
  • Q32: warm +20.6% (123.0ms vs 102.0ms)
  • Q16: warm +18.8% (120.0ms vs 101.0ms)
  • Q40: warm +18.2% (227.0ms vs 192.0ms)

Compared Liquid vs DataFusionDefault on the same runner
Regressions: warm-time increases of at least 15%. Cold Time: first iteration; Warm Time: median of remaining iterations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant