aaronsb_obsidian-mcp-plugin/docs/architecture/tools
Aaron Bockelie 150cf5c071 docs(adr): amend ADR-203 — char-budget pagination with line bookends
Refined through design dialogue:
- paginate/no-paginate boundary is a CHARACTER budget (READ_PAGE_CHARS,
  default 50000), not a line count (line count is an invalid proxy for
  context cost — 1500 short vs 1500 long lines differ by orders of magnitude)
- bookends stay line-based (lineStart/lineEnd/totalLines) so edit.at_line
  on a large file still works; a page = longest whole-line run within the
  char budget
- fits budget → whole file verbatim, one load (common case, no ceremony)
- exceeds → bookended page 1 (single contiguous block, not chunk array) +
  nextPage hint; sequential paging via new `page` param
- returnFullFile:true RETAINED and repurposed as the explicit
  whole-large-file override (not retired)
- hard invariant recorded: a default read must never hand the agent a
  context-breaking raw dump
Alternatives added: no-guard full dump, line-count budget, chunk-array — all rejected with rationale.
2026-05-19 00:24:56 -05:00
..
ADR-200-close-cli-parity-gaps-add-daily-notes-tasks-templates-and-properties-operations.md feat: Add tree-based MCP tool visibility gating (ADR-101) 2026-03-26 11:08:27 -05:00
ADR-201-replace-new-function-with-a-sandboxed-expression-evaluator-for-bases.md docs(adr): ADR-201 replace new Function in Bases evaluator with sandboxed lib 2026-05-16 13:58:18 -05:00
ADR-202-split-semantic-router-monolith-into-per-operation-modules.md refactor(router): extract vault operation into operations/ module (ADR-202, #199 stage 1) 2026-05-18 23:07:40 -05:00
ADR-203-faithful-by-default-content-reads-concise-by-default-tool-results.md docs(adr): amend ADR-203 — char-budget pagination with line bookends 2026-05-19 00:24:56 -05:00