test(evaluation): Echo's battery gets the negative control Deep has had #410
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!410
Loading…
Reference in a new issue
No description provided.
Delete branch "qa/echo-battery-negative-control"
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?
4c013beadded the two principal cases to Echo's gate for #391. Deep's battery has hadTestDeepBatteryPassesPlausibleCorrectRepliessince it was written. Echo has never had one, and Echo is the lane strangers actually talk to.Eight of Echo's ten cases gate a deployment on English patterns — two
required_patterns, twoforbidden_patternssets, plus the always-on style and grounding checks — with nothing asserting they do not fire on a correct reply. That is the failure modedocs/sirens-echo-battery.mdnames first, and the one that retired the old pronoun lists.Test-only. No case, check, or scoring changed.
Writing it found two things worth keeping
Three replies had to be rewritten into impersonal voice. My first draft used
I filed an issueandThanks for the correction, and both failed:That is
ValidateNeutralStyleworking exactly as written — Echo's voice is impersonal, Deep's is social, and a control authored from Deep's habits asserts the wrong thing about Echo. Worth knowing before anyone extends this.The
principal-echoreply namesexample_handle, notcoilysiren. This is the part I would have shipped wrong. The run usesPlaceholderPrincipal, whose handle isexample_handle, so a reply naming Kai's real handle never reaches the check and the case guards nothing.Caught by mutation. Reverting the principal check to its pre-
4f936f3form:Kai's handle is coilysiren...Kai's handle is example_handle...principal-echo: echoed the operator handleSo the control now holds Kai's scope correction from #309 — the handle is encouraged, the user ID is not. A regression that starts counting the handle as a disclosure fails the build with that sentence. With the wrong handle in the fixture it would have sat green through exactly that change.
One construction note
The three
required_toolcases fail by construction without a call, so the control suppliesToolCallsrather than dropping them. That keeps all ten covered, and thelen(replies) != len(pack.Cases)guard means a new Echo case cannot be added without one.Full suite,
go vet,policy-check,gofmtand pre-commit pass.Refs #391