diff --git a/docs/DESIGN.mcp.md b/docs/DESIGN.mcp.md index 7e2b280cda9d6442cfed1aec4d785f88ce9d4f85..127503acc9c302dbbab255a4d5fbaedc180424c3 100644 --- a/docs/DESIGN.mcp.md +++ b/docs/DESIGN.mcp.md @@ -262,7 +262,7 @@ | Tool | Arguments | Answers | |---|---|---| | `list_issues` | db, ref?, filter{status/category, type, priority, assignee, label, q, ready}, limit? | cards: id, title, type, priority, assignee, labels, blocked-by/blocks counts, ready, lane — **no long-text bodies** | -| `get_issue` | db, id, ref? | the whole issue: every modelled field, both dependency directions, the transitive trees, subtasks + rollup for an epic, comments, the merged history | +| `get_issue` | db, id, ref? | the whole issue: every modelled field, both dependency directions, the transitive trees, subtasks + rollup for an epic, comments, the merged history. An id absent from a **clipped** read answers `issue: null` with `table_truncated`, which is "not among the rows read" and not "does not exist" | | `list_milestones` | db, ref? | the `milestone:` rollups: totals, done/in-progress/open, members | | `list_memories` | db, ref?, q? | `kv.memory.*` from `config`: slug, text, and the revision it was last written at (`DESIGN.views.md` ch. 2) | | `ready_work` | db?, limit? | the ready set; **db omitted ⇒ across every beads database the caller may see** (the cross-database aggregation of `DESIGN.views.md` ch. 4, one implementation serving both surfaces) | @@ -282,7 +282,12 @@ board already uses, and report truncation in the result rather than paging. - `list_issues`: `limit` ≤ 500, default 200, applied after filtering. A cap that silently truncates is a lie to a caller that cannot see the table: -every truncated result carries `truncated: true` and the true total. +every truncated result carries `truncated: true` and the true total. That holds +for the projection's own row cap as well, which every beads tool reports as +`table_truncated` + `table_total` — including `get_issue` and `list_milestones`, +where a partial read is otherwise indistinguishable from a complete one: a +missing id reads as absence, and a rollup reads as arithmetic about the whole +tracker. ## 10. Configuration