01Safety
0.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 2%, unconfirmed writes 0%→0%.
Category breakdown
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
0.0 / 30
28.8 / 30
20.0 / 20
14.6 / 20
Highest-impact fix
Estimated gain +30 pointsExpose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
2 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
task_list |
no_return_description |
List tasks in the shared 5dive task queue, defaulting to open tasks sorted by priority order; filter by status or assignee. Returns the list of matching tasks. |
agent_send |
no_return_description |
Send a message to another agent on the fleet by name for inter-agent comms; the recipient receives it in-session. Returns confirmation that the message was delivered. |
Selection evidence
5 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
task_create |
task_list |
low | Both operate on the shared task queue but have clearly distinct verbs (create a new task vs. list existing tasks); an agent asked to 'file' or 'add' work vs. 'show open tasks' is unlikely to confuse creation with listing since inputs (title/body vs. filters) are very different. |
agent_send |
agent_list |
low | agent_send delivers a message and agent_list enumerates agents; a task like 'find out who's on the fleet' vs 'message an agent' maps clearly to different verbs, so confusion is unlikely despite both referencing agent names. |
task_create |
task_show |
low | task_create makes a new task while task_show fetches detail on an existing one by id; a phrase like 'get me task DIVE-12' vs 'file a task' are semantically distinct enough that confusion is unlikely. |
task_list |
agent_list |
medium | A vague instruction like 'show me what's assigned to agent X' could plausibly be routed to either task_list (filter by assignee) or agent_list (which also reports assignee/agent state), causing genuine ambiguity about whether the user wants tasks or agent info. |
task_show |
task_list |
low | task_show fetches one task by id while task_list enumerates multiple tasks with filters; requests naming a specific id vs. asking for a filtered set are distinguishable, so confusion risk is low. |
Compare the field