0.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 6%, unconfirmed writes 0%→0%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
28.0 / 30
03Economics
19.7 / 20
04Discoverability
11.9 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
5 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 |
|---|---|---|
saihm_forget |
no_return_description |
Cryptographically erase a memory (GDPR Art. 17 erasure) by its hex cell id from the SAIHM store. Use this only to permanently and irreversibly delete a stored memory; this cannot be undone. Returns the erased cellId and a confirmation that the memory has been destroyed. |
saihm_share |
no_return_description |
Create a sharing contract (TEMPORARY/PERMANENT/SYNDICATE) over one or more shards to grant another agent (by hex agent ID hashes) a read/write scope on specific memories, with an optional expiryEpoch. Use this to share memories with another agent. Returns the created contract's contractId, which can later be passed to saihm_revoke_share to withdraw access. |
saihm_revoke_share |
no_return_description |
Revoke an existing sharing contract by its contractId, withdrawing the grantee's access previously granted with saihm_share. Use this to end a sharing relationship. Returns a confirmation that the contract has been revoked and the grantee's access removed. |
saihm_governance_propose |
params_unexplained no_return_description |
Submit a gSAIHM-governance proposal with scope 'emission_param' or 'protocol_upgrade' to open a protocol governance vote. When scope is emission_param, set paramKey to the parameter being changed and proposedValue to the new value as a string. Returns the hex proposalId, which others use to cast votes via saihm_governance_vote. |
saihm_governance_vote |
no_return_description |
Cast a vote on an open gSAIHM-governance proposal by its hex proposalId, with approve=true to approve or false to reject. Vote weight is derived from gSAIHM balance at proposal.snapshotEpoch. Returns a confirmation that the vote was recorded against the proposal. |
Selection evidence
Confusable tool pairs.
3 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
saihm_remember |
saihm_recall |
medium | The verb 'remember' covers both storing ('remember this for me') and retrieving ('do you remember my name?'). A retrieval phrased as 'do you remember...' matches the saihm_remember tool name, yet recall is needed; the definitions ('persist across sessions' vs 'retrieve past context') do not fully disambiguate such phrasing. |
saihm_share |
saihm_revoke_share |
low | Both concern the same sharing-contract concept and share a name prefix plus tokens (contract, share, sharing). A task like 'stop/undo the sharing with agent X' could surface saihm_share, but the definitions clearly map grant-access vs withdraw-by-contractId, so wrong selection is only mildly plausible. |
saihm_governance_propose |
saihm_governance_vote |
low | The verbs are distinct in the definitions (submit vs cast vote), but a task like 'open/create a vote on a protocol change' could point to either: propose's usage note says 'open a protocol governance vote' while vote requires an existing proposalId, leaving mild ambiguity for mixed propose-and-vote phrasings. |
Compare the field