Skip to content

fix: re-check topology per sample, quote --useafter, unbuffer stdout - #10

Merged
lesandie merged 3 commits into
masterfrom
fix/remaining-hardening
Aug 24, 2026
Merged

fix: re-check topology per sample, quote --useafter, unbuffer stdout#10
lesandie merged 3 commits into
masterfrom
fix/remaining-hardening

Conversation

@lesandie

@lesandie lesandie commented Aug 22, 2026

Copy link
Copy Markdown
Member

Summary

  • Re-checks cluster topology before every delete sample.
  • Quotes --useafter safely in SQL.
  • Enables unbuffered Python stdout in the image.

Validation

  • CI: passed
  • Local: 112 tests passed; rendered manifest validates
  • Live dev Job: four isolated fixtures were collected, dry-run, deleted in two checkpoints, and a final dry-run found zero candidates.

Rebased onto the #9 fix.

lesandie and others added 3 commits August 24, 2026 16:45
Clears the three hardening items left over from the deletion-scope audit.

Topology is re-checked before every sample rather than once per run. The
preflight was a point-in-time check while the anti-join loop can run for hours;
a replica that dropped out mid-run took its references with it, so blobs it
alone held started looking orphaned and nothing noticed. ch_client is free at
that point -- the previous sample's stream has closed. Removing both preflight
call sites now fails two tests; removing either one alone is covered by the
other, so the old M7 mutation is obsolete rather than surviving.

--useafter is quoted as a SQL string literal. It was interpolated bare, so an
operator-supplied value landed as an identifier -- the only unquoted value in
the anti-join WHERE clause. The strict xfail recorded for it flipped to XPASS
and became a real test, which is what strict xfail is for.

The image sets PYTHONUNBUFFERED=1. stdout is a pipe under Kubernetes so print()
was block-buffered, and Python's default SIGTERM handling exits without
flushing: a Job killed at activeDeadlineSeconds lost its buffered tail,
including the closing "s3gc: OK", and the dev-automation shell echoes
interleaved wrongly against it. Logger records were never affected --
StreamHandler.emit() flushes per record.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Since the per-sample topology re-check landed, do_use() has two
preflight_cluster() call sites and the top-level one is redundant. That makes
the M7 mutation survive the suite -- removing either site alone is covered by
the other. Not a defect: removing both still fails two tests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@lesandie
lesandie force-pushed the fix/remaining-hardening branch from 64d3abb to b395a5c Compare August 24, 2026 15:21
@lesandie
lesandie changed the base branch from fix/useage-floor to master August 24, 2026 15:31
@lesandie
lesandie merged commit b14b8d2 into master Aug 24, 2026
2 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.

1 participant