feat(mcp): hold a tool listing for an hour, and let something end that early #365
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!365
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/roster-hour-ttl-and-refresh"
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?
Kai chose a 1 hour TTL plus an agent-invokable refresh, over the boot-only
resolution recorded earlier on 163. This is the TTL half and the seam the
refresh needs.
The interval moves 5 minutes to an hour. Refresh marks every rostered server
stale so the next turn re-lists.
The reason an hour is safe is worth stating, because it is the thing I got
wrong when I argued against removing the TTL entirely. Expiry is not the only
trigger. dropSession nils tools, and needsTools returns true whenever tools is
nil, so a server that failed to list retries on every turn its backoff allows
regardless of the interval. The interval governs only servers that already
answered. Removing the TTL would have broken that; lengthening it does not.
Refresh dials nothing. It sets a flag the next Open reads, so twenty calls
collapse into one listing. That is why it carries no rate limit of its own,
which corrects what I said I would build when I claimed this.
The three tests bind those three claims rather than the implementation: an
unlisted server ignores the interval, a refresh re-lists inside it, and repeated
refreshes cost one listing. Mutation checked by making Refresh mark nothing.
The model-callable half is not here. Every tool Echo offers comes from an MCP
server today, so a refresh the agent can invoke needs the first harness-native
tool, which is a new seam rather than a wiring change. Filed separately.
closes #363
Co-authored-by: Kai Siren coilysiren@gmail.com
Co-authored-by: Claude noreply@anthropic.com
Co-authored-by: Kai Siren coilysiren@gmail.com
Co-authored-by: Claude noreply@anthropic.com