Repository navigation
test: objstore_crlf gets its pytest twin, every check by the shell's name; seeds the ledger (#1341) - #1380
Conversation
jdatcmd
left a comment
There was a problem hiding this comment.
Approving 98363af on content. Reproduced on PG18.
- Green: shell 5/5; pytest 1 passed;
compare_to_bash: 5 literal matches, 0 missing. - Red: with the request-path CR/LF guard disabled (
objstore/columnar_objstore_module.c:381), both twins fail the same three names, which are exactly the three rows the ledger dates:
FAIL a CR/LF in the URL path is rejected before the request is sent: got [0] want [1]
FAIL no injected line reached the listener (no request splitting): got [1] want [0]
FAIL a CR/LF in a REST catalog_uri is rejected too (objstore_http_request path): got [0] want [1]
A note, not blocking: the twin checks only the primary message for "CR or LF", where the shell greps all of stderr.
Before merge: a rebase. TESTS.md §105, expected_tests.txt and the budget conflict.
98363af to
d6ebf5d
Compare
|
Rebased onto 57f6e0e (#1401), on top of #1403. The new head is d6ebf5d. Only the count files changed, so this needs your re-approval.
🤖 Generated with Claude Code |
|
Re-run finished on the tree after #1403 (758039f or later). Everything is green, so the head above stands:
🤖 Generated with Claude Code |
d6ebf5d to
ddcb271
Compare
|
Rebased onto 7da848d (#1432, #1409). The new head is ddcb271; only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
ddcb271 to
dd083da
Compare
|
Rebased onto 1f7b5da (#1411, #1412, #1417, #1418). The new head is dd083da. Only the count files changed, plus TESTS.md section numbers where main took 115, so please re-approve this head.
🤖 Generated with Claude Code |
|
The PG18 re-run on this head (dd083da, on 1f7b5da with #1412's index-build change) is all green:
🤖 Generated with Claude Code |
|
Rebased onto 37ea557 (#1414, #1425). The new head is 364f99c. Only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
dd083da to
364f99c
Compare
|
Rebased onto f2bd5f1 (#1427). The new head is 1b6f282. Only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
364f99c to
1b6f282
Compare
|
Rebased onto d5c0a5e (#1391). The new head is b7487ad, so please re-approve this head.
🤖 Generated with Claude Code |
1b6f282 to
b7487ad
Compare
|
Rebased onto 2d1a77f (#1413–#1424). The new head is 431566c, so please re-approve this head.
🤖 Generated with Claude Code |
b7487ad to
431566c
Compare
jdatcmd
left a comment
There was a problem hiding this comment.
Re-approved at 431566c, the rebase onto 2d1a77f. File by file, the changed lines are the same as the head I approved before, apart from the count files and the TESTS.md section number.
🤖 Generated with Claude Code
…ws are reworded The mutation column is a ';'-separated set, written back sorted. A --mutation whose text held "; " was stored as two mutations, one a fragment starting with a space, and every later merge re-sorted it. commandprompt#1427's recovery_minimal_wal text did this to 8 rows, and commandprompt#1423, commandprompt#1424 and commandprompt#1426 each carried them as a change of their own. Four older harness_selftest rows were split the same way. - merge refuses a --mutation holding ';' (rc 2, ledger untouched). - the reader refuses a ';'-piece with whitespace at an end, by line: the writer joins with a bare ';', so such a piece is a fragment, never a mutation. - the 12 rows are reworded without ';', from their original text in history. Only field 6 changes; the census stays 3007 / 2282 / 725. Red first: the two refusal arms got 0 want 2 on the unchanged tool, and the committed-ledger arm was red at line 1783 with the refusal in and the rows not yet reworded. guard_tests 435 -> 438 by collection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rompt#1341 item 75) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…ment-mark mutation (commandprompt#1341 item 75) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…wn privileges, in both twins (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…d the refused tier writes no file, in both twins (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…ITY DEFINER (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
… back; both its branches echoed "ran" (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…ll's name (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…nd every owner arm reports a number when refused, in both twins (commandprompt#1341) A guard widened to refuse the owner stopped the fixture's own export, so a premise reddened for the product code and the pytest twin crashed in setup rather than failing an arm by name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…e mutations of the RLS guard (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
… in both twins (commandprompt#1341, commandprompt#1397 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…uals (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…x, and the twin fails it by name rather than raising (commandprompt#1383 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
commandprompt#1383 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…name (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Restated for the chain you asked for. The new head is ab6ae27, so please re-approve this head.
🤖 Generated with Claude Code |
431566c to
ab6ae27
Compare
jdatcmd
left a comment
There was a problem hiding this comment.
Re-approved at ab6ae27, its place in the chain on 17420be. This PR's own commits, measured from the link below it, change the same lines as the head I approved before, apart from the count files and the TESTS.md section number.
🤖 Generated with Claude Code
Part of #1341, the object-store twin-parity item:
objstore_crlf.shhad no pytest twin.The twin (
test_objstore_crlf.py)One test, all 5 shell checks by name, added to
COMPLETE.read_parquetwith a CR/LF in the URL path is refused naming "CR or LF", and a listener of the file's own (a socket in a thread, standing in for the shell's script) receives nothing carrying the injected line.catalog_uriwith a CR/LF is refused the same way.Twin proof. The request-line guard on the URL path removed, PG17, main 4027b8d against this branch:
Evidence
objstore_crlfhad no rows, so it is seeded with all 5, three dated by the mutation. 2361 → 2366 rows, the census 1801 → 1803, and suites_not_covered 246 → 245.cluster_tests534 → 535. Several open PRs of mine take section 105 and move these counts, so each restates and renumbers on rebase.🤖 Generated with Claude Code