Round-5 review findings.
The deployed-item check now runs before the drafts listing again, but a failed
probe is remembered rather than swallowed: it only matters once something is staged
under the name, and there the call stops instead of guessing which draft it means.
That keeps the cheap short-circuit for a path that is simply where something is
deployed — one indexed row, no listing — without the exposure that made the first
ordering unsafe for a delete or a deploy.
A kind no editor stages a name for skips the lookup entirely: those reach neither
the probe nor the listing, where before they always paid a workspace-wide read that
checks write access per row. The trigger test that pinned name routing for such a
kind now pins what the declaration is actually for — finding the path nested inside
`config` — since the state it set up, an http trigger draft carrying `draft_path`,
is one no editor or drawer produces.
An empty path reached `draftTargetOf`, whose message blamed the tool definition for
what is a malformed argument, and the model reads that string. It names the cause.
Measured on the running instance: a read of a deployed script makes 0 listings and
1 exists; a variable write makes 0 listings; a script write to a fresh path still
lists, since nothing is deployed there to settle it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>