Feedback¶
The feedback feature lets agents report two classes of quality issues found while working with daimyo rules. Entries are appended to a JSON Lines file for later review and rules improvement.
Feedback Types¶
contradictory_rules¶
Two or more rules that conflict with each other. Provide:
task— what work was being done when the contradiction was foundrules— the conflicting rules, each with itscategoryandruletext
missed_categories¶
Categories that were not included in the initial fetch but should have been. Provide:
task— what the task was aboutcategories— list of missed category namesreason— why the categories were not fetched initially
JSONL Format¶
Each entry is a single JSON object on its own line:
{"timestamp":"2026-04-22T15:30:00+00:00","type":"contradictory_rules","task":"Adding REST endpoint","rules":[{"category":"python.testing","rule":"Use pytest"},{"category":"development.coding.testing","rule":"Avoid mocking internals"}]}
{"timestamp":"2026-04-22T15:31:00+00:00","type":"missed_categories","task":"Adding a REST endpoint","categories":["development.domain_specific.apis.rest"],"reason":"Focused on Python rules and overlooked the REST API category"}
Timestamps are always UTC ISO-8601.
MCP Tool¶
contradictory_rules — pass rules_json as a JSON array:
submit_feedback(
type="contradictory_rules",
task="Writing integration tests for the REST endpoint",
rules_json='[{"category":"python.testing","rule":"Use pytest"},{"category":"development.coding.testing","rule":"Avoid mocking internals"}]'
)
missed_categories — pass categories as a comma-separated string and reason:
submit_feedback(
type="missed_categories",
task="Adding a REST endpoint for rule feedback",
categories="development.domain_specific.apis.rest",
reason="Focused on Python rules initially"
)
REST API¶
POST /api/v1/feedback — returns HTTP 201 on success.
contradictory_rules:
curl -X POST http://localhost:8000/api/v1/feedback \
-H "Content-Type: application/json" \
-d '{
"type": "contradictory_rules",
"task": "Writing integration tests for the REST endpoint",
"rules": [
{"category": "python.testing", "rule": "Use pytest"},
{"category": "development.coding.testing", "rule": "Avoid mocking internals"}
]
}'
missed_categories:
curl -X POST http://localhost:8000/api/v1/feedback \
-H "Content-Type: application/json" \
-d '{
"type": "missed_categories",
"task": "Adding a REST endpoint for rule feedback",
"categories": ["development.domain_specific.apis.rest"],
"reason": "Focused on Python rules initially"
}'
CLI¶
contradictory-rules — use --rule (repeatable) with category::rule text format:
daimyo feedback contradictory-rules \
--task "Writing integration tests for the REST endpoint" \
--rule "python.testing::Use pytest" \
--rule "development.coding.testing::Avoid mocking internals"
missed-categories — use --category (repeatable) and --reason:
daimyo feedback missed-categories \
--task "Adding a REST endpoint for rule feedback" \
--category "development.domain_specific.apis.rest" \
--reason "Focused on Python rules initially"
Configuration¶
The feedback file path is configurable via settings.toml:
Or via environment variable:
The default is .daimyo/feedback.jsonl relative to the working directory. Parent directories are created automatically if they do not exist.