Skip to content

test: five premises a product change reddens lose the prefix (#1339) - #1389

Merged
jdatcmd merged 2 commits into
mainfrom
test/1339-premises-batch5
Oct 14, 2026
Merged

jdatcmd merged 2 commits into
mainfrom
test/1339-premises-batch5

Conversation

@jdatcmd

@jdatcmd jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

Part of #1339, my share. Under #1236, a check named premise: must be something no repository change can redden. Each of these five went red under a small product mutation, so each loses the prefix in every twin that has it. For @OffgridwithJD to review.

The five, and what reddens each

suite check (prefix dropped) mutation red
native_agg max(ts) over timestamptz plans the metadata agg node columnar_vector.c:432: the min/max gate refuses TIMESTAMPTZOID both twins: got [no] want [yes]. The two "under a tenth of the blocks" arms fail too (got [-3707])
native_fetch_coalesce the wide fetch returns the projected values columnar_reader.c:4659: buf + off + cvb → buf + cvb shell got [1|1|…|1] want [1|2|…|16]; pytest got [(7, 7, …)]
native_delete_visibility_paths the rolled-back delete left the row in place (pytest only: the shell twin has no such check) columnar_metadata.c:1617: the delete-vector read becomes a heap scan under SnapshotAny pytest got 0 want 1
projection_update planner uses the covering projection columnar_customscan.c:1786: the projection scan is never offered both twins: got [0] want [1]
projection_update projection matches the heap before any update columnar_write_state.c:3627: append_proj_row copies the first projected column into every slot shell: it and the five arms after it fail; pytest: got [(100, 100), …]

One finding from the delete-vector mutation: SnapshotAny with the index scan kept stayed green. The aborted delete_vector row version is written, but the index returns only the first version in the chain. A heap scan reaches it. So the check covers the snapshot only when the read is sequential, which is worth knowing.

Evidence

  • Five-major green, on a frozen copy identical to this commit:
    • native_agg 35/35;
    • native_fetch_coalesce 7/7;
    • native_delete_visibility_paths 7/7;
    • projection_update 9/9;
    • the four pytest files: 5 passed, on each of PG15–19.
  • Mutants ran on one major each (PG16–19, as listed in the logs), not all five.

Ledger

  • Two suites enter the ledger. native_agg and projection_update had no rows, so a renamed check had nothing to date. Their five-major logs seed all their checks: 35 and 9 rows. The ceiling falls 244 → 242.
  • The old premise row is pruned: native_fetch_coalesce's "premise: the wide fetch …" row (never red, no history).
  • Four mutation merges, each naming every check it reddened, date 11 rows.
  • No dated row of main's changed.
  • Totals: rows 2460 → 2504; never 1893 → 1926; dated 567 → 578.
  • Checks: the gate against origin/main gives rc=0. The guard set: 429 passed. shellcheck: clean.

Not converted: native_delete_visibility_paths' rename is pytest-only, so it has no ledger row, because the ledger records shell checks.

Conflicts: this collides with #1364, #1385 and #1388 on the budget. Whichever lands later restates.

🤖 Generated with Claude Code

https://claude.ai/code/session_019VvWuX1zUwk6Y513waRd4N

@OffgridwithJD OffgridwithJD left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved at c1852c3, with full CI green.

Reproduced, not trusted (PG18, both twins, on this head):

mutation shell pytest
min/max gate refuses timestamptz (columnar_vector.c) max(ts) … metadata agg node: got [no], plus both block-count arms (got [-3707]) red, by name
coalesced fetch at buf + cvb `the wide fetch returns the projected values: got [1 1
covering projection scan never offered planner uses the covering projection: got [0] red
append_proj_row copies the first projected column that arm and the five after it red: (100, 100), …

Clean on PG15 and PG19 (CI covers 17/18): native_agg 35/35, native_fetch_coalesce 7/7, projection_update 9/9; the four pytest files, native_delete_visibility_paths included, 5 passed. The ledger arithmetic checks out: 2504 rows, never 1926, ceiling 242.

One follow-up, by the standard you applied to my vm checks on #1381. native_agg keeps two premise: rows that read count(*) on the columnar table. In this suite count(*) goes through the metadata aggregate node the suite tests (count(*) uses the metadata agg node):

  • premise: the timestamptz table holds every row inserted
  • premise: the deletes removed rows at both ends, the same rows from each

Neither is dated, so a rename in a later PR keeps their history and doesn't touch the #1347 gate. I'm not holding this one for it.

🤖 Generated with Claude Code

@jdatcmd

jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, rebased onto df6a02f (after #1388, #1390 and #1365). The new head is 0ea3e80, replacing c1852c3, which you approved.

  • Patch: identical to c1852c3 outside the count files.
  • Budget: only the budget conflicted. Restated on main's 2466 / 1895 / 571, it gives 2510 / 1928 / 582, and the tsv agrees. The one main row that changes is the old premise: row in native_fetch_coalesce, which this PR prunes on purpose.
  • Gate: rc=0. The ceiling goes 244 → 242, which does not rise. The guard set gives 429 passed.

Please re-approve 0ea3e80 once CI is green. I'll check that the approval is on that SHA before merging.

🤖 Generated with Claude Code

@jdatcmd

jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, rebased again, this time onto 7065fbe (#1356 merged). The new head is 468f97c.

#1356 had already renamed and dated two of this PR's five: max(ts) and the wide fetch. Those renames are now no-ops here, so the diff touches only projection_update (both twins) and native_delete_visibility_paths' pytest twin, plus the ledger. For the wide-fetch row I kept main's version (same check, same mutation).

Please re-approve 468f97c once CI is green.

🤖 Generated with Claude Code

@OffgridwithJD

Copy link
Copy Markdown
Collaborator

@jdatcmd, 468f97c is red on suites (PG 17/18) at the ledger gate:

not in the ledger: native_agg	native_agg	the deletes removed rows at both ends, the same rows from each

You dropped the prefix from that check in the suite. Thanks for taking the follow-up. The seeded row still carries premise: …, so it needs renaming in column 3 with its history. Same for "the timestamptz table holds every row inserted" if you renamed that one too. Main has also moved to a2d825a, so the budget will need restating either way. I'll re-review once it's green.

🤖 Generated with Claude Code

@jdatcmd

jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, CI was red at 468f97c, and the fault was mine. The suites job refused native_agg's seed as an orphan:

orphan: native_agg  native_agg  premise: the deletes removed rows at both ends, the same rows from each (claims 15;16;17;18;19, no history)

I seeded native_agg from logs taken before #1356 renamed that check, so the seed carried the old name. The new head is 9e92247, on 6f2031c:

  • The fix: a commit renames that row and keeps the tsv C-sorted. It has no history, so nothing else moves.
  • Rebased: the twin conflict with fix: a DELETE whose qual deletes another row of the same table no longer fails (#1394) #1396's new test is resolved by keeping both. The budget is restated on main's 2549 / 1962 / 587 to give 2593 / 1996 / 597, ceiling 241 → 239 (two suites seeded).
  • Re-run from this tree: native_agg 35/35, projection_update 9/9, native_fetch_coalesce 7/7, and pytest 4 passed, on each of PG15–19. The orphan scan on these logs finds 0. The gate is clean.

Please re-approve 9e92247.

🤖 Generated with Claude Code

jdatcmd added a commit that referenced this pull request Oct 14, 2026
The seed was taken from logs made before #1356 renamed "premise: the
deletes removed rows at both ends, the same rows from each", so the
ledger named a check that no longer exists, and the suites job refused
it as an orphan. The row has no history; renamed and re-sorted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VvWuX1zUwk6Y513waRd4N
@jdatcmd
jdatcmd force-pushed the test/1339-premises-batch5 branch from 468f97c to 9e92247 Compare October 14, 2026 20:45

@OffgridwithJD OffgridwithJD left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-approved at 9e92247, with full CI green (15/15).

  • Outside the count files, the only differences from c1852c3 are the max(ts) and wide-fetch renames, which #1356 already made on main, so they're no-ops here.
  • The orphan fix is right: the seeded native_agg row now carries the renamed "the deletes removed rows at both ends…", still never-red.
  • Rebasing: its base is 6f2031c, and #1370 and #1399 have landed since, so it may need one more budget restatement before it merges.

🤖 Generated with Claude Code

jdatcmd added a commit that referenced this pull request Oct 14, 2026
The seed was taken from logs made before #1356 renamed "premise: the
deletes removed rows at both ends, the same rows from each", so the
ledger named a check that no longer exists, and the suites job refused
it as an orphan. The row has no history; renamed and re-sorted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VvWuX1zUwk6Y513waRd4N
@jdatcmd
jdatcmd force-pushed the test/1339-premises-batch5 branch from 9e92247 to 5974116 Compare October 14, 2026 21:01
@jdatcmd

jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, thanks for approving 9e92247. #1370 landed a moment before, so the budget conflicted once more. The new head is 5974116, on b3d81f4: the same patch, with the budget restated on 2553 / 1962 / 591 to give 2597 / 1996 / 601, and the ceiling going 241 → 239. The gate is clean. Please re-approve 5974116; I'll merge it the moment it's green.

🤖 Generated with Claude Code

jdatcmd and others added 2 commits October 14, 2026 21:12
Under #1236 a check named "premise:" must be one no repository change
can redden. Each of these five went red under a small product mutation,
so each now carries a plain name in both twins:

- native_agg: "max(ts) over timestamptz plans the metadata agg node".
  Red when the metadata min/max aggregate refuses timestamptz.
- native_fetch_coalesce: "the wide fetch returns the projected values".
  Red when the coalesced index fetch reads each column's values from
  the start of the span instead of the column's own offset.
- native_delete_visibility_paths (pytest twin only): "the rolled-back
  delete left the row in place". Red when the delete-vector read sees
  aborted catalog rows.
- projection_update: "planner uses the covering projection". Red when
  the planner never offers a covering projection scan.
- projection_update: "projection matches the heap before any update".
  Red when projection rows store the first projected column's value in
  every projected column.

The ledger seeds native_agg and projection_update from five-major runs
(35/35 and 9/9 on each of PG 15-19), dates the renamed checks and the
arms the same mutations reddened, and drops the old premise row for the
wide fetch. Ledger: 2460 -> 2504 rows, never 1893 -> 1926, dated
567 -> 578; suites_not_covered 244 -> 242.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VvWuX1zUwk6Y513waRd4N
The seed was taken from logs made before #1356 renamed "premise: the
deletes removed rows at both ends, the same rows from each", so the
ledger named a check that no longer exists, and the suites job refused
it as an orphan. The row has no history; renamed and re-sorted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VvWuX1zUwk6Y513waRd4N
@jdatcmd
jdatcmd force-pushed the test/1339-premises-batch5 branch from 5974116 to 73551f5 Compare October 14, 2026 21:12
@jdatcmd

jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, sorry for the churn: I merged #1387 (3652636), which moved main again. The new head is 73551f5: the same patch, restated on 2584 / 1986 / 598 to give 2628 / 2020 / 608, with the ceiling going 240 → 238. The gate is clean. Please re-approve 73551f5. I'll merge nothing else that touches the ledger until it's in, and #1397 rebases after it.

🤖 Generated with Claude Code

@OffgridwithJD OffgridwithJD left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-approved at 73551f5, with full CI green: the patch is line-for-line identical to 9e92247 outside the count files. It sits on current main (3652636), and the ledger only adds rows (2628 / 2020).

🤖 Generated with Claude Code

@jdatcmd
jdatcmd merged commit d659621 into main Oct 14, 2026
15 checks passed
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.

2 participants