One issue as an executable development task
Identity, title, intent, status, milestone, acceptance criteria, dependencies, blockers, the commits its own evidence names and the commits git found, its branches, the sessions that worked on it, its readiness and everything wrong with its records — each field carrying whether a person authored it (`explicit`), a machine worked it out by a rule that cannot be wrong (`derived`), a machine worked it out by a rule that can (`inferred`, with the rule stated), or it is not available at all (`unknown`, with the reason). A key the record does not carry is `unknown`, never an empty string: `objective: ""` and a record with no objective are the same string and different facts. An id the model does not declare is answered, not refused. `git: false` answers from the records alone, which is what a comparison across machines wants.
- query
- behaviorally_verified
- benchmark required
- cache disabled
- MCP tool majordomus_devtask
- $ devtask issue
Query parameters
| name | type | required | description | examples |
|---|---|---|---|---|
| issue | string | yes | The issue id, as the canonical model spells it (`I0901`). An id the model does not declare is answered with `declared: false` and every canonical field `unknown`, never refused and never answered with empty strings that read as authored. | records-only: "I0001"with-git: "I0001" |
| git | boolean | no | Consult git for the branches and commits that realised it. Default: yes. Set it to false for a deterministic answer that depends on the records alone — which is what a generated document or a comparison across machines wants. | records-only: falsewith-git: true |
Try it
The port is whatever the server logged; 8741 is the one it asks for first. The values are the operation's first example.
curl -s "http://127.0.0.1:8741/api/v1/devtask/issue?issue=I0001&git=false"
Tested by apps/majordomus-cli/tests/http_serve.rs, which replays the route with these values against a server on a real socket.
Responses
| status | body | meaning |
|---|---|---|
| 200 | DevTask | One issue as an executable development task: the result. |
| 400 | ErrorBody | invalid_input: The input does not fit the schema: a parameter of the wrong type, an unknown one, or a value the capability rejects. |
| 404 | ErrorBody | not_found: The input names something the repository does not hold. |
| 500 | ErrorBody | internal: The capability failed for a reason of its own; the message names it. |
| default | ErrorBody | Any other failure the transport reports: 405 method_not_allowed for another method on this path, 400 invalid_input for a body that is not a JSON object. |