feat(brains): teach cutoff_strength and the cut verdict in brains-read [BRNS-DQ-049] — HOLD until #1577 is in prod - #34
Conversation
…d [BRNS-DQ-049] The four arm tools gained `cutoff_strength` and now report `cut` and `visible_at_most` (ssvlabs/brains#1577). Two things in this skill are wrong as a result, and one was wrong in a way that matters. WRONG NOW: "don't send `cutoff` with a keyword-only call — `query_pages` rejects it, the other arms ignore it." After #1577 the other arms do not ignore a non-default `cutoff_strength`, they reject it, and none of them emit a `cut` for a call with nothing to gate on. Keyword hits carry no similarity, so there is no statistic to judge — which is the reason, and worth stating rather than listing the behaviour. MISSING: the response contract. `count: 0` alone cannot say whether nothing matched or the gate threw away everything it found, and that ambiguity is what made agents retry the same text instead of relaxing the gate. `cut` answers it: `admitted: false` with a non-zero `candidates` means retrieved and discarded, so relax rather than rewrite. It is ABSENT when no gate ran, and absence is not a passing verdict — an agent that reads a missing field as "the gate approved this" would draw exactly the wrong conclusion. Also states the surface is closed. The arms now reject an undeclared argument instead of dropping it silently, so a skill that leaves the reader guessing is a skill that produces 400s. Version 2.10.1 -> 2.11.0 on both manifests: content that ships to users reaches nobody without a bump, and this is a minor feature per the repo's convention. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Hold released — the release gate is open, verified against production, not against the git ref.
And the four behaviours this skill now teaches, exercised live against Line 1 is the reason this change exists. That exact query returned a bare Line 2 is BRNS-DQ-046's lenient setting reachable for the first time. Worth noting for whoever picks that ticket up: lenient does not recover this section, so "the cutoff over-rejects at lenient" now has its first real datapoint rather than an inferred one. Ready for review. Still not merging — merging here publishes, and that call is the maintainers'. |
Important
Draft on purpose. Do not merge until ssvlabs/brains#1577 is deployed to production.
Merging
mainhere publishes, and the marketplace has auto-update on, so this reaches users immediately.Why it must wait
#1577 is merged to
stage(c26d36d3) and not yet onmain—mainis 8 commits behind, with no promotion PR open at time of writing.Publishing this early would teach every agent a parameter the live server does not implement. Production would accept
cutoff_strengthand silently discard it, because the enforcement that rejects unknown arguments is on stage too. That is precisely the defect #1577 exists to remove — a guide teaching a parameter the server quietly ignores — recreated by our own hand, and invisible because nothing errors.Measured against production a few minutes ago, for the record:
Fifty candidates retrieved, none returned, and no
cutto say whether the gate discarded them or nothing matched. That is the state this skill still correctly describes today.What changes
One statement is now false. The skill says: "Don't send
cutoff(orentity) with [a keyword-only call] —query_pagesrejects them, the other arms ignore them." After #1577 the other arms do not ignore a non-defaultcutoff_strength, they reject it, and none of the four emit acutfor a call with nothing to gate on. Restated with the reason rather than the behaviour: keyword hits carry no similarity, so there is no statistic for the gate to judge.cutoff_strengthadded next to the knob it modifies —lenientafter a scoped call comes back thin,strictfor a last narrowing step, and not accepted alongsidecutoff: false.The response contract gains
cutandvisible_at_most, which is the half that changes agent behaviour.count: 0alone cannot distinguish "nothing matched" from "the gate threw away everything it found", and that ambiguity is what had agents retrying the same text instead of relaxing the gate. Stated with the trap named:cutis absent when no gate ran, and an agent reading a missing field as "the gate approved this" would conclude the opposite of the truth.The surface is stated as closed. The arms now reject an undeclared argument rather than dropping it, so leaving a reader to guess produces 400s.
Version 2.10.1 → 2.11.0 on both manifests. Published content reaches nobody without a bump; minor, per the repo's convention for
feat(...).Verified
scripts/generated-artifact-guard.sh origin/main→guard: OK, both bumps detected.brains-read/SKILL.mdis hand-authored, not a generated artifact — checked againstplugins/brains/generated/capability-catalog.json, which does not name it. Worth stating because editing a build output here would be silently reverted by the next regeneration.Merge sequence
stage→mainpromotion in ssvlabs/brains, carrying #1577.query_rowscall returnscut/visible_at_most).Related and still blocked on access: the brains-desktop prompt must teach the same three additions, and its CI fails until it does. Patch for the harness guide is on #1577; neither that nor the prompt can be pushed from this account.
🤖 Generated with Claude Code