Append-only honest receipts for Fleet Mode — logging kept/killed decisions with real metrics and reasoning
Single tool 'append_receipt' has a well-structured schema with all parameters typed and described. Description is clear and action-oriented (89 chars). However, the tool lacks error recovery guidance, output schema documentation, and idempotency hints. Parameter descriptions are adequate but could be more prescriptive about format constraints. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. The tool performs a write operation (append to file) but lacks confirmation/dry-run pattern.
Append one receipt row to killlog_path and return the row text. Raises ValueError if the verdict is unknown or any honesty-required field (why / metric / value) is blank.
Missing error recovery guidance. ValueError exceptions (invalid verdict, blank why/metric/value) are raised but tool description does not guide LLM on recovery actions (e.g., 'Call with one of: kept, killed, adopted, rejected').
No output schema documented. Tool returns a string (row text) but LLM cannot infer structure or downstream chaining. Should document: 'Returns markdown table row as string with fields: when, task, tried, verdict, why, metric, value.'
Missing tool annotations. Write operation lacks destructiveHint=true (modifies file system). Idempotency unclear, appending same row twice creates duplicates. Should declare idempotentHint=false and explain retry behavior.
Parameter 'value' description is vague: 'The real number or measured note (required)'. Should specify format: 'A numeric value or text note (e.g., 3, 62, "timeout"). No pipes or newlines.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No confirmation or dry-run pattern for irreversible file append. Agents cannot preview the row before committing. Should offer a dry_run parameter or separate preview_receipt tool.