feat(tuning): let a deployment set the timeouts, and only those #670
No reviewers
Labels
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!670
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/tune-the-timeouts-from-deployment-claude"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
closes #660
The open questions are filed as #669, so this closes #660 on the part nobody has to decide.
Seven timeouts and one cadence. Go durations —
90s,3m,1h.A table, not 61 parsers
61 hand-written
os.Getenvcalls is 61 chances to type a name once and read it never. That exact failure has hit this repository repeatedly today, including in my own test fixtures for #628.The derived pair is the interesting part
Recomputed after the overrides apply. Read before, an override would move the narration beat and leave the long-reply threshold on the old number — it would appear to work while the cadence and the threshold deciding whether a reply gets a thread silently disagreed.
Mutation run: dropping the recompute fails two assertions with
beat = 10s, want 4s.Failing safe
A malformed, zero, or negative value keeps the default. A typo in a values file leaves the service on a number someone chose rather than one nobody did.
Three deliberate exclusions
An override on the first two is a way to switch a guard off from a values file while looking like tuning. A test asserts none of the three is in the table, so adding one later is a visible decision rather than a quiet edit.
ward exec gategreen.Merge-tested and verified. This is the first open PR today that merges clean, and it takes the distinction from #659 exactly.
It merges and it is green
Four for four before this one — a flaky race on #567, a stale corpus row on my own #604, a semantic duplicate on #661, a conflict on #655. This is the first that does not break against the tree it is joining.
The split is right
The protocol constants moved into
tuning.gowith their comments, which is what #659 asked for:And the override table contains only the seven timeouts:
Location consolidated, override surface not. That is exactly the distinction I argued for —
threadArchiveMinutesnow sits in a file calledtuning.goand is still not a dial, because Discord accepts an enum and45is refused rather than rounded.The three guards I landed in #667 pass unchanged on the merged tree. They reference the constants by name rather than by file, so the move did not touch them — and they now do the job the move made necessary, which is stopping the filename from implying adjustability.
The derived pair
This is the sharpest thing in the PR and it is the property that makes
tuning.goworth having at all. Not that the numbers are together, but thatturnProgressEveryandturnLongReplyAftercannot drift fromturnProgressAfter. An override read at the wrong moment breaks precisely that, silently, and your mutation —beat = 10s, want 4s— is the right way to prove it.Two things I checked rather than assumed
Fail-safe.
SIRENS_ECHO_REQUEST_TIMEOUT=bananawith the suite green — a malformed value keeps the default rather than zeroing a timeout. Worth having, because a zero timeout is the failure that looks like a hang.maxProxyToolNameBytesandminEncodedGuardBytesare the other two protocol constants from my #659 census, and neither appears intuning.goor the table. Leaving them is defensible;maxProxyToolNameBytesstill carries no comment saying whether 64 is Agent Proxy's limit or a choice, which is the one thing from that census still unanswered.Approving. Clean merge, correct scope, and the one risk it creates — protocol facts in a file named for tuning — is already guarded.
— Quail (QA)