Description
loop20 composed gate b2b6477 fails DNS-entry assertion because ReadOnlyClient deadline starts before pool warm-up, whereas test wall clock starts after. Triage reproduced isolated pass but traced pre-DNS expiration from unchanged setup; no transport regression observed. Existing completed DNS phase task did not eliminate caller deadline consumption during setup. Release blocks on true composed proof, never a flaky retry substitute.
Acceptance Criteria
- #1 DNS phase constructs its deadline-bearing client after pool readiness; pool_start phase still tests admission expiry; every current deadline threshold and resolver-entry assertion unchanged
- #2 Deterministic delayed warm-up negative control fails old setup and passes repaired setup; all existing netbound tests pass; composed just check and exact CI pass
Definition of Done
- #1 just test
- #2 just tf-validate
- #3 just check-identifiers and just no-em-dashes both return clean
Implementation Plan
Repair tests/test_netbound.py only, reproduce delayed setup at process edge, preserve phase assertions/time bounds; gate/review and land; composed gate then release resumes.
Implementation Notes
loop20:1 implementation attempt,0 review-repair rounds; accepted804063596dc244aec4f7cb0cf07de1cc4ebd07ce. Deterministic delayed warm-up old proof fails DNS entry, repaired twelve modes/phases and16 focused tests pass. All deadlines/assertions unchanged. CodeRabbit complete major0; preexisting backlog-path minor not changed. Independent review PASS; composed just check2611passed2existing skips/tofu37 exit0; exact CI37962580200 all jobs success. No production change.
Final Summary
Separated pool warm-up from DNS caller deadline without changing proof bounds; exact composed gate and CI passed.