feat: check a member's ticket for work and scope before filing it #928
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!928
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-852-filing-validity"
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?
Two stages, as decided. Validity then scope, each a model call answering from a closed list.
Built against #907, not #849
The validity stage asks "is there work in this?" rather than "is this an attack", because #907 is the cleaner example: polite, on topic, well formed, and a tracker entry with no actionable content duplicating two better issues filed the same day. A check tuned for hostile input passes that straight through.
work,placeholder,unclear. Refuses the last two.in-scope,out-of-scope. Refuses the second.Three properties borrowed from the content gate
A filing check that gets these wrong is worse than no check:
Placement
The check runs in the tool-call path, beside the label injection and before it, so a refused filing is never labelled as one that happened. That seam catches every filing regardless of how the turn got there, which is the same reason the label lives there.
The principal is exempt, and the checks are audited under a harness request id rather than the requester's, so a member identifier does not reach the proxy's audit metadata.
What is unchanged
SANDBOXED, including the property that the harness applies it before dispatch so the model never supplies it and cannot omit it. The two controls answer different questions and both still run.For #874
The two stages share one scaffolding,
filingVerdict, which takes a prompt and a closed vocabulary. The citation classifier can take it as is.Tests
The worked shape refused at stage one, an out-of-scope request refused at stage two with both stages asking different questions, a real request passing both, the principal skipping them entirely, a failed checker filing anyway, an invented verdict not refusing, and the refusal arriving as a tool result rather than failing the turn.
just gatePASS.closes #852