madoo.attempts-report/v1
Madoo attempts report — What Repeat Until Accepted did: the body and its version, the policy, every attempt with its run, acceptance, score and feedback, and which attempt was delivered and why.
| Reference | madoo.attempts-report/v1 |
| Schema id | urn:madoo:schema:attempts-report:v1 |
| Version | 1.0.0 |
| Served at | GET /api/v1/json-schemas/madoo.attempts-report/v1 · MCP get_json_schema |
Where it appears
Section titled “Where it appears”- Produced by:
workflow/repeat→report
Fields
Section titled “Fields”| Field | Type | Required | Rules | Description |
|---|---|---|---|---|
schema |
"madoo.attempts-report/v1" |
yes | ||
body |
object | yes | no other fields | |
body.workflow |
string or null | yes | pattern “^wf_[0-9a-f]{32}$” | The wf_ ID of the body; null when it was deleted since. |
body.version |
integer | yes | ≥ 1 | The body version every attempt ran: fixed for the whole run. |
policy |
object | yes | no other fields | |
policy.max_attempts |
integer | yes | ≥ 1; ≤ 5 | |
policy.on_exhausted |
one of "best", "discard", "fail" |
yes | ||
policy.minimum_score_to_deliver |
number or null | yes | ≥ 0; ≤ 1 | |
item |
integer or null | ≥ 0 | The item of the iteration this report belongs to; null when the step is not repeated per item. | |
attempts |
array of objects | yes | min items 1; max items 5 | |
attempts[].attempt |
integer | yes | ≥ 1; ≤ 5 | |
attempts[].execution |
string | yes | pattern “^run_[0-9a-f]{32}$” | The run of this attempt: its trace shows every step of the body. |
attempts[].accepted |
boolean | yes | ||
attempts[].score |
number | yes | ≥ 0; ≤ 1 | |
attempts[].feedback |
string or null | yes | What the body asked the next attempt to correct; the next attempt received it as previous_feedback. | |
selected_attempt |
integer or null | yes | ≥ 1 | The attempt delivered as the candidate; null when the result was discarded. |
disposition |
one of "accepted", "best_unaccepted", "discarded" |
yes | accepted: an attempt was accepted. best_unaccepted: none was, the best one is delivered and stays marked as not accepted. discarded: none was and nothing is delivered. | |
reason |
string | yes | Why this attempt was delivered, or why none was. |
The complete schema
Section titled “The complete schema”madoo.attempts-report/v1 (JSON Schema)
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:madoo:schema:attempts-report:v1", "title": "Madoo attempts report", "description": "What Repeat Until Accepted (workflow/repeat) did: the body it ran, its policy, every attempt in order with the execution it was, whether its body accepted it, its score and its feedback, and which attempt was delivered and why. Derived from the attempts' own runs, never from text a model wrote. Public IDs only.", "type": "object", "required": [ "schema", "body", "policy", "attempts", "selected_attempt", "disposition", "reason" ], "additionalProperties": false, "properties": { "schema": { "const": "madoo.attempts-report/v1" }, "body": { "type": "object", "required": [ "workflow", "version" ], "additionalProperties": false, "properties": { "workflow": { "type": [ "string", "null" ], "pattern": "^wf_[0-9a-f]{32}$", "description": "The wf_ ID of the body; null when it was deleted since." }, "version": { "type": "integer", "minimum": 1, "description": "The body version every attempt ran: fixed for the whole run." } } }, "policy": { "type": "object", "required": [ "max_attempts", "on_exhausted", "minimum_score_to_deliver" ], "additionalProperties": false, "properties": { "max_attempts": { "type": "integer", "minimum": 1, "maximum": 5 }, "on_exhausted": { "enum": [ "best", "discard", "fail" ] }, "minimum_score_to_deliver": { "type": [ "number", "null" ], "minimum": 0, "maximum": 1 } } }, "item": { "type": [ "integer", "null" ], "minimum": 0, "description": "The item of the iteration this report belongs to; null when the step is not repeated per item." }, "attempts": { "type": "array", "minItems": 1, "maxItems": 5, "items": { "$ref": "#/$defs/attempt" } }, "selected_attempt": { "type": [ "integer", "null" ], "minimum": 1, "description": "The attempt delivered as the candidate; null when the result was discarded." }, "disposition": { "enum": [ "accepted", "best_unaccepted", "discarded" ], "description": "accepted: an attempt was accepted. best_unaccepted: none was, the best one is delivered and stays marked as not accepted. discarded: none was and nothing is delivered." }, "reason": { "type": "string", "description": "Why this attempt was delivered, or why none was." } }, "$defs": { "attempt": { "type": "object", "required": [ "attempt", "execution", "accepted", "score", "feedback" ], "additionalProperties": false, "properties": { "attempt": { "type": "integer", "minimum": 1, "maximum": 5 }, "execution": { "type": "string", "pattern": "^run_[0-9a-f]{32}$", "description": "The run of this attempt: its trace shows every step of the body." }, "accepted": { "type": "boolean" }, "score": { "type": "number", "minimum": 0, "maximum": 1 }, "feedback": { "type": [ "string", "null" ], "description": "What the body asked the next attempt to correct; the next attempt received it as previous_feedback." } } } }}