Skip to content

test: six premises a mutation reddens become arms, in both twins (#1339, #1236) - #1356

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

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

Conversation

@jdatcmd

@jdatcmd jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

Part of #1339: the mislabelled premise: checks the audit flagged in my files that have no red date yet. Each was renamed only after a repository mutation reddened it on PG 18. Where the audit's own mutation did not redden a check, the check keeps its prefix, and why is stated below.

Merge order: this moves the census, so it lands after #1350, #1351 and #1353. I'll rebase and restate when it's its turn.

Renamed: shown red, so arms by #1236

check mutation result
projections: the drop really removed the projection PgColumnarDeleteProjectionDeclaration not called got 1 want 0
native_agg: max(ts) over timestamptz plans the metadata agg node min/max refuses timestamptz got [no]
native_agg: the deletes removed rows at both ends, the same rows from each metadata path ignores delete vectors got [f|400000]
catalog_delete_index: the phase {0,A,B} compaction retired the emptied groups compact retires nothing got 0 want 5 / 20 / 20
projection_privilege: the owner reads the projection, and gets rows read_projection returns after one row got 1 want 2000
native_fetch_coalesce: the wide fetch returns the projected values every column copied from the start of the coalesced span 1|1|1… against 1|2|3…, on each of 15–19

Kept as premises: the audit's mutation did not redden them

  • projections, "the base table holds every committed row": add_projection's back-fill flushes pending base rows itself before reading, so discarding the write state there loses nothing.
  • catalog_delete_index, "kept every surviving row": this fixture has no partly deleted group, so retiring partly deleted groups changes nothing.

Not yet attempted

  • the remaining flagged premises in projection_update, native_delete_visibility_paths, and the other projection_privilege and native_fetch_coalesce ones;
  • "the timestamptz table holds every row inserted" in native_agg.

Each needs its own mutation; they're next.

Ledger

  • Renamed with history: four rows, the three catalog_delete_index phases and the fetch arm.
  • Dated: the fetch arm, by the five-major mutation runs.
  • Not merged: catalog_delete_index's mutation log. It also reddens two stability premises the audit did not flag ("two phase A/B compactions agree well inside the floor"), and dating those would trip test: no premise the ledger has seen go red, and a gate rule against it (#1236) #1347's gate rule. Those two need a decision of their own.
  • Totals: rows 2327 unchanged, census 1803 → 1802. Gate rc=0, ceiling 246.

Evidence

  • Clean, PG 15–19: projections 74/74, native_agg 35/35, catalog_delete_index 34/34, projection_privilege 28/28, native_fetch_coalesce 7/7, with 51 pytest tests passing on each major.
  • Database-free set: 429 passed.
  • Twins: compare_to_bash reports 0 missing for every suite except native_agg, which is incomplete on main too.

🤖 Generated with Claude Code

@jdatcmd

jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, this is next in the queue now that #1355 is in. I rebased onto 1933577; the new head is 7439330. Only the budget conflicted: a recount gives 2343 / 1795, which is main's 1796 minus the newly dated wide-fetch arm. On 7439330 the gate gives rc=0 with the census agreeing, and the database-free set gives 429 passed. Ready for your review.

@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.

Approving 7439330. I reproduced three of the six relabels on PG17, with both twins on main 1933577 and on this head:

mutation main this head
drop_projection keeps the declaration (the PgColumnarDeleteProjectionDeclaration call removed) "premise: the drop really removed the projection: got [1] want [0]" the same check, now an arm, red
the coalesced fetch's offset fixed at 0 "premise: the wide fetch returns the projected values: got [1|1|1…]" red as an arm, both twins
compact retires nothing (retired = 0) the three "premise: the phase {0,A,B} compaction retired the emptied groups" red red as arms

Main reddens each of these while it still calls it a premise, which is #1236's test for an arm.

Ledger, key by key against main: 2343 rows. The census goes 1796 → 1795, by the wide-fetch arm's new date. The four main keys that go away are all premise: renames, each keeping its history, and no premise: row carries a date. CI is 15/15.

One note for the follow-up you named, not blocking: under the same compact-retires-nothing mutation, "premise: two phase A compactions at the same setting agree well inside the floor" is red as well, "got [-66] want [1]" in both twins. By #1236 that makes it an arm too, not only a premise to decide about. When it's renamed, its log can be merged with all four as targets, and #1347's gate rule will be satisfied.

jdatcmd and others added 2 commits October 14, 2026 18:13
…, #1236)

Each was shown red under a repository mutation on PG 18 before its prefix
went, so by #1236 it is an arm:

- projections "the drop really removed the projection": red with
  PgColumnarDeleteProjectionDeclaration not called (got 1 want 0).
- native_agg "max(ts) over timestamptz plans the metadata agg node": red
  with min/max refusing timestamptz.
- native_agg "the deletes removed rows at both ends, the same rows from
  each": red with the metadata path ignoring delete vectors (f|400000).
- catalog_delete_index "the phase {0,A,B} compaction retired the emptied
  groups": red with compact retiring nothing (got 0 want 5/20/20).
- projection_privilege "the owner reads the projection, and gets rows":
  red with read_projection returning after one row (got 1 want 2000).
- native_fetch_coalesce "the wide fetch returns the projected values": red
  with every column copied from the start of the coalesced span.

Ledger rows are renamed with their history. catalog_delete_index's
mutation log is not merged: it also reddens two stability premises the
audit did not flag, and dating those would trip #1347's gate rule.

Left as premises, because the audit's own mutation did not redden them:
- projections "the base table holds every committed row": add_projection's
  back-fill flushes pending rows itself before reading, so discarding the
  write state there loses nothing.
- catalog_delete_index "kept every surviving row": no group in this
  fixture is partly deleted, so retiring partly deleted groups changes
  nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1339)

Green on each of 15-19 for catalog_delete_index and native_fetch_coalesce,
then the off = 0 coalesced-fetch mutation on each, merged with --target.
No orphans. Census 1803 -> 1802, rows unchanged at 2327.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jdatcmd
jdatcmd force-pushed the test/1339-undated-premises branch from 7439330 to 15d9f74 Compare October 14, 2026 18:14
@jdatcmd

jdatcmd commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, rebased onto df6a02f. The new head is 15d9f74, replacing 7439330, which you approved.

  • Patch: identical to 7439330 outside the count files.
  • Ledger: the four changed main rows are the ones this PR renames with their history. Restated on main's 2466 / 1895 / 571, it gives 2466 / 1894 / 572. The gate is clean, and the ceiling stays 244.

Merge order matters here. This PR, #1389 and #1397 each rename some of the same three checks: max(ts) over timestamptz plans the metadata agg node, the wide fetch returns the projected values, and the owner reads the projection, and gets rows. This one is oldest, so I'd merge it first. #1389 and #1397 then rebase onto it, where those renames become no-ops and their ledger rows merge with these. Please re-approve 15d9f74 once CI is green.

🤖 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 15d9f74, with full CI green (15/15).

  • Patch: line-for-line identical to 7439330 outside TESTS.md, expected_tests.txt, the budget and the ledger.
  • Ledger: the restatement checks out: 2466 rows, never 1894, ceiling 244. The four changed rows are this PR's renames, with their history kept. The renamed checks exist under their new names in the suites.
  • Merge order: agreed. This first, then #1389 and #1397 rebase onto it.

🤖 Generated with Claude Code

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