Test-time cap: is 60s the new org-wide ceiling, or a dnswatcher divergence? #41

Open
opened 2026-08-10 13:18:17 +02:00 by clawbot · 2 comments
Collaborator

Needs a one-line answer from the owner; raised rather than assumed because guessing either way creates a real problem.

What happened

On sneak/dnswatcher#93 sneak ruled (2026-08-09):

make the cap 60s in both and never use mocking, always use live resolvers and assume the build and run environments have full unmodified unrestricted internet access.

"Both" refers to two documents that currently disagree in that repo: TESTING.md says a 30-second target, and REPO_POLICIES.md sets the make test ceiling at 20 seconds with a 30s timeout backstop.

The question

REPO_POLICIES.md is canonical here and vendored into every repo. So the ruling could mean either:

  1. The org-wide cap moves to 60s. Change it here, and every consuming repo picks it up on its next vendoring. Coherent, no drift — but it quadruples the sanctioned test budget for repos that have nothing to do with live DNS, and several have been actively tuning against the 20s number.
  2. dnswatcher gets an approved divergence. Canonical stays at 20s; dnswatcher's vendored copy carries 60s with the divergence recorded, because live DNS genuinely needs the headroom and no other repo does.

The ruling was given on a dnswatcher issue, which weakly suggests (2), but REPO_POLICIES.md was named explicitly, which suggests (1). Not a guess worth making silently in a file every repo inherits.

Why it matters beyond dnswatcher

Repos have been treating the 20s ceiling as a real constraint in live design decisions — for instance a -race change was weighed against it and parked, because the suite already took 18.7s without the detector. If the cap is now 60s, that calculus changes and a parked decision may unpark itself. If it is not, dnswatcher needs its divergence recorded so the next re-vendoring does not silently revert it.

Recommendation

Option 2, unless the intent really was org-wide. The 20s ceiling is doing useful work in repos with fast deterministic suites, and dnswatcher's need is specific to querying real nameservers over the network. Recording it as an approved divergence in dnswatcher's vendored copy keeps both facts true.

Either way this should be settled here rather than in dnswatcher, because a vendored file edited in one repo without a canonical decision is exactly the bidirectional drift already tracked in #31 .

Not blocking: the dnswatcher test work can proceed on the substance of the ruling (live resolvers, no mocking, no skip flags) while this is decided.

Needs a one-line answer from the owner; raised rather than assumed because guessing either way creates a real problem. ## What happened On https://git.eeqj.de/sneak/dnswatcher/issues/93 sneak ruled (2026-08-09): > make the cap 60s in both and never use mocking, always use live resolvers and assume the build and run environments have full unmodified unrestricted internet access. "Both" refers to two documents that currently disagree in that repo: `TESTING.md` says a 30-second target, and `REPO_POLICIES.md` sets the `make test` ceiling at 20 seconds with a 30s timeout backstop. ## The question `REPO_POLICIES.md` is **canonical here and vendored into every repo**. So the ruling could mean either: 1. **The org-wide cap moves to 60s.** Change it here, and every consuming repo picks it up on its next vendoring. Coherent, no drift — but it quadruples the sanctioned test budget for repos that have nothing to do with live DNS, and several have been actively tuning against the 20s number. 2. **dnswatcher gets an approved divergence.** Canonical stays at 20s; dnswatcher's vendored copy carries 60s with the divergence recorded, because live DNS genuinely needs the headroom and no other repo does. The ruling was given on a dnswatcher issue, which weakly suggests (2), but `REPO_POLICIES.md` was named explicitly, which suggests (1). Not a guess worth making silently in a file every repo inherits. ## Why it matters beyond dnswatcher Repos have been treating the 20s ceiling as a real constraint in live design decisions — for instance a `-race` change was weighed against it and parked, because the suite already took 18.7s without the detector. If the cap is now 60s, that calculus changes and a parked decision may unpark itself. If it is not, dnswatcher needs its divergence recorded so the next re-vendoring does not silently revert it. ## Recommendation Option 2, unless the intent really was org-wide. The 20s ceiling is doing useful work in repos with fast deterministic suites, and dnswatcher's need is specific to querying real nameservers over the network. Recording it as an approved divergence in dnswatcher's vendored copy keeps both facts true. Either way this should be settled here rather than in dnswatcher, because a vendored file edited in one repo without a canonical decision is exactly the bidirectional drift already tracked in https://git.eeqj.de/sneak/prompts/issues/31 . Not blocking: the dnswatcher test work can proceed on the substance of the ruling (live resolvers, no mocking, no skip flags) while this is decided.
Owner

org wide. the hard cap is 60 for ci/green, but over 20s should be filed as an improvement bug.

org wide. the hard cap is 60 for ci/green, but over 20s should be filed as an improvement bug.
sneak was assigned by clawbot 2026-08-10 14:29:52 +02:00
Author
Collaborator

Proposed answer implemented as #42 (branch org-wide-60s-test-cap).

It takes the org-wide option, encoding the two tiers from your comment above: 60 seconds hard cap, 20 seconds target, and anything between the two is green but must be filed as an improvement bug.

The backstop moves 30s to 90s, because a 60-second cap with a 30-second -timeout never lets the cap be the thing that fails. 90s keeps the same 1.5x backstop-to-cap ratio the old 20s/30s pair had.

Changed in prompts/REPO_POLICIES.md (prose ceiling, backstop prose, both lines of the Go example Makefile snippet), prompts/EXISTING_REPO_CHECKLIST.md, and prompts/NEW_REPO_CHECKLIST.md. The Python example snippet had no timeout flag before and still has none, since adding one would mean mandating pytest-timeout org-wide; called out in the PR body if you want that in scope.

The specific value of 90s is my proposal rather than anything ruled on, so send it back if you want a different number.

Proposed answer implemented as https://git.eeqj.de/sneak/prompts/pulls/42 (branch `org-wide-60s-test-cap`). It takes the org-wide option, encoding the two tiers from your comment above: 60 seconds hard cap, 20 seconds target, and anything between the two is green but must be filed as an improvement bug. The backstop moves `30s` to `90s`, because a 60-second cap with a 30-second `-timeout` never lets the cap be the thing that fails. `90s` keeps the same 1.5x backstop-to-cap ratio the old `20s`/`30s` pair had. Changed in `prompts/REPO_POLICIES.md` (prose ceiling, backstop prose, both lines of the Go example Makefile snippet), `prompts/EXISTING_REPO_CHECKLIST.md`, and `prompts/NEW_REPO_CHECKLIST.md`. The Python example snippet had no timeout flag before and still has none, since adding one would mean mandating `pytest-timeout` org-wide; called out in the PR body if you want that in scope. The specific value of `90s` is my proposal rather than anything ruled on, so send it back if you want a different number.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/prompts#41