drawspec 0.3.1__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (949) hide show
  1. {drawspec-0.3.1 → drawspec-0.3.2}/AGENTS.md +1 -1
  2. {drawspec-0.3.1 → drawspec-0.3.2}/CHANGELOG.md +18 -0
  3. {drawspec-0.3.1 → drawspec-0.3.2}/PKG-INFO +5 -2
  4. {drawspec-0.3.1 → drawspec-0.3.2}/README.md +4 -1
  5. {drawspec-0.3.1 → drawspec-0.3.2}/docs/guide.md +12 -7
  6. {drawspec-0.3.1 → drawspec-0.3.2}/pyproject.toml +1 -1
  7. {drawspec-0.3.1 → drawspec-0.3.2}/server.json +2 -2
  8. {drawspec-0.3.1 → drawspec-0.3.2}/skills/drawspec/SKILL.md +2 -1
  9. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/__init__.py +1 -1
  10. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/mcp.py +212 -45
  11. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_mcp.py +65 -18
  12. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_skill.py +2 -2
  13. {drawspec-0.3.1 → drawspec-0.3.2}/uv.lock +1 -1
  14. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/settings.json +0 -0
  15. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/continue/.arsenal-vendored +0 -0
  16. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/continue/SKILL.md +0 -0
  17. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/continue/evals/loading_verification.json +0 -0
  18. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/coverage-gaps/.arsenal-vendored +0 -0
  19. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/coverage-gaps/SKILL.md +0 -0
  20. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/coverage-gaps/evals/loading_verification.json +0 -0
  21. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/coverage-gaps/scripts/analyze_coverage.py +0 -0
  22. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/dep-upgrade/.arsenal-vendored +0 -0
  23. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/dep-upgrade/SKILL.md +0 -0
  24. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/dep-upgrade/evals/loading_verification.json +0 -0
  25. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/dep-upgrade/scripts/compare_lockfile.py +0 -0
  26. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/.arsenal-vendored +0 -0
  27. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/SKILL.md +0 -0
  28. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/evals/loading_verification.json +0 -0
  29. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/references/template-plan.md +0 -0
  30. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/references/template-specification-tail.md +0 -0
  31. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/scripts/validate_plan.py +0 -0
  32. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/execution/.arsenal-vendored +0 -0
  33. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/execution/SKILL.md +0 -0
  34. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/execution/evals/loading_verification.json +0 -0
  35. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/execution/references/template.md +0 -0
  36. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/.arsenal-vendored +0 -0
  37. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/SKILL.md +0 -0
  38. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/evals/loading_verification.json +0 -0
  39. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/references/gate-grammar.md +0 -0
  40. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/scripts/run_gate.py +0 -0
  41. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/.arsenal-vendored +0 -0
  42. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/SKILL.md +0 -0
  43. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/evals/loading_verification.json +0 -0
  44. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/references/pr-review-loop.md +0 -0
  45. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/references/projects-detection.md +0 -0
  46. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/scripts/query_pr_state.py +0 -0
  47. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/scripts/query_project_type.py +0 -0
  48. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/.arsenal-vendored +0 -0
  49. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/SKILL.md +0 -0
  50. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/.bundle-version +0 -0
  51. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/AGENTS.md +0 -0
  52. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/agents/worker.md +0 -0
  53. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/budget_check.sh +0 -0
  54. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/check_skill_workshop_loaded.sh +0 -0
  55. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/check_update.sh +0 -0
  56. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/claim_task.sh +0 -0
  57. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/detect_surface.sh +0 -0
  58. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/gate_run.sh +0 -0
  59. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/gate_target.py +0 -0
  60. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/github_channel.sh +0 -0
  61. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/mark_skill_workshop_loaded.sh +0 -0
  62. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/mark_skill_workshop_loaded_from_prompt.sh +0 -0
  63. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/open_task_pr.sh +0 -0
  64. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/outline.sh +0 -0
  65. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/rebase_stack.sh +0 -0
  66. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/rescue_snapshot.sh +0 -0
  67. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/statusline_capture.sh +0 -0
  68. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/worker_postcheck.sh +0 -0
  69. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/workspace_list.sh +0 -0
  70. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/worktree_probe.sh +0 -0
  71. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/claiming-internals.md +0 -0
  72. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/evidence-gates.md +0 -0
  73. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/github-automation.md +0 -0
  74. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/queue-seeding.md +0 -0
  75. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/quota-governance.md +0 -0
  76. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/state-layout.md +0 -0
  77. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/worker-loop.md +0 -0
  78. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/arsenal_config.py +0 -0
  79. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/arsenal_migrate.py +0 -0
  80. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/create_reader.py +0 -0
  81. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/gate_evidence.py +0 -0
  82. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/handle_sync.py +0 -0
  83. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/issue_for_task.py +0 -0
  84. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/issue_import.py +0 -0
  85. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/query_status.py +0 -0
  86. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/queue_hooks.py +0 -0
  87. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/task_select.py +0 -0
  88. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/session/handover.md +0 -0
  89. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/workflows/arsenal-queue.yml +0 -0
  90. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/evals/loading_verification.json +0 -0
  91. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/scripts/init.py +0 -0
  92. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/mutmut-report/.arsenal-vendored +0 -0
  93. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/mutmut-report/SKILL.md +0 -0
  94. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/mutmut-report/evals/loading_verification.json +0 -0
  95. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/mutmut-report/scripts/analyze_mutmut.py +0 -0
  96. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/pypi-release/.arsenal-vendored +0 -0
  97. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/pypi-release/SKILL.md +0 -0
  98. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/pypi-release/evals/loading_verification.json +0 -0
  99. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/pypi-release/scripts/validate_release.py +0 -0
  100. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/.arsenal-vendored +0 -0
  101. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/SKILL.md +0 -0
  102. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/evals/loading_verification.json +0 -0
  103. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/references/canonical-config.md +0 -0
  104. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/scripts/analyze_project.py +0 -0
  105. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/.arsenal-vendored +0 -0
  106. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/SKILL.md +0 -0
  107. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/evals/loading_verification.json +0 -0
  108. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/references/payload-template.md +0 -0
  109. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/scripts/new_task.py +0 -0
  110. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-status/.arsenal-vendored +0 -0
  111. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-status/SKILL.md +0 -0
  112. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-status/evals/loading_verification.json +0 -0
  113. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/review/.arsenal-vendored +0 -0
  114. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/review/SKILL.md +0 -0
  115. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/review/evals/loading_verification.json +0 -0
  116. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/review/references/template.md +0 -0
  117. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/.arsenal-vendored +0 -0
  118. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/SKILL.md +0 -0
  119. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/evals/loading_verification.json +0 -0
  120. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/references/auto-fire-setup.md +0 -0
  121. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/references/handoff-mode.md +0 -0
  122. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/references/retrospective-rubric.md +0 -0
  123. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/scripts/create_handoff.py +0 -0
  124. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/scripts/query_session_history.py +0 -0
  125. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/ship/.arsenal-vendored +0 -0
  126. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/ship/SKILL.md +0 -0
  127. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/ship/evals/loading_verification.json +0 -0
  128. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/ship/references/template.md +0 -0
  129. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/.arsenal-vendored +0 -0
  130. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/SKILL.md +0 -0
  131. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/evals/loading_verification.json +0 -0
  132. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/references/template.md +0 -0
  133. {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/scripts/validate_spec.py +0 -0
  134. {drawspec-0.3.1 → drawspec-0.3.2}/.dockerignore +0 -0
  135. {drawspec-0.3.1 → drawspec-0.3.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  136. {drawspec-0.3.1 → drawspec-0.3.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  137. {drawspec-0.3.1 → drawspec-0.3.2}/.github/ISSUE_TEMPLATE/kind_or_field_request.yml +0 -0
  138. {drawspec-0.3.1 → drawspec-0.3.2}/.github/dependabot.yml +0 -0
  139. {drawspec-0.3.1 → drawspec-0.3.2}/.github/pull_request_template.md +0 -0
  140. {drawspec-0.3.1 → drawspec-0.3.2}/.github/workflows/arsenal-queue.yml +0 -0
  141. {drawspec-0.3.1 → drawspec-0.3.2}/.github/workflows/ci.yml +0 -0
  142. {drawspec-0.3.1 → drawspec-0.3.2}/.github/workflows/release.yml +0 -0
  143. {drawspec-0.3.1 → drawspec-0.3.2}/.gitignore +0 -0
  144. {drawspec-0.3.1 → drawspec-0.3.2}/CLAUDE.md +0 -0
  145. {drawspec-0.3.1 → drawspec-0.3.2}/CONTRIBUTING.md +0 -0
  146. {drawspec-0.3.1 → drawspec-0.3.2}/Dockerfile +0 -0
  147. {drawspec-0.3.1 → drawspec-0.3.2}/LICENSE +0 -0
  148. {drawspec-0.3.1 → drawspec-0.3.2}/Makefile +0 -0
  149. {drawspec-0.3.1 → drawspec-0.3.2}/_config.yml +0 -0
  150. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/config.toml +0 -0
  151. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/session/handover.md +0 -0
  152. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-0727.md +0 -0
  153. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-0e20.md +0 -0
  154. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-0e91.md +0 -0
  155. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1270.md +0 -0
  156. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1291.md +0 -0
  157. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1b55.md +0 -0
  158. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1c11.md +0 -0
  159. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1c47.md +0 -0
  160. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1d28.md +0 -0
  161. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-2158.md +0 -0
  162. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-21c8.md +0 -0
  163. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-2382.md +0 -0
  164. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-2f7f.md +0 -0
  165. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-2f92.md +0 -0
  166. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-30b0.md +0 -0
  167. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-38d8.md +0 -0
  168. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-3b60.md +0 -0
  169. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-3ecf.md +0 -0
  170. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-4c51.md +0 -0
  171. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-4e89.md +0 -0
  172. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-4f9b.md +0 -0
  173. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-52fa.md +0 -0
  174. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-533d.md +0 -0
  175. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-666f.md +0 -0
  176. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-6e34.md +0 -0
  177. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-70ef.md +0 -0
  178. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-7bfe.md +0 -0
  179. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-825e.md +0 -0
  180. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-88b7.md +0 -0
  181. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-9dd6.md +0 -0
  182. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-a204.md +0 -0
  183. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-a63e.md +0 -0
  184. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-b569.md +0 -0
  185. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-b67b.md +0 -0
  186. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-b7a8.md +0 -0
  187. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-b94c.md +0 -0
  188. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-c107.md +0 -0
  189. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-dcd5.md +0 -0
  190. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-e854.md +0 -0
  191. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-e93c.md +0 -0
  192. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-ee92.md +0 -0
  193. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-f0f8.md +0 -0
  194. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-f75a.md +0 -0
  195. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-fbbb.md +0 -0
  196. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-1a23523c.md +0 -0
  197. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-2117d467.md +0 -0
  198. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-29944b23.md +0 -0
  199. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-2f4aa14a.md +0 -0
  200. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-36a712a2.md +0 -0
  201. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-4796518d.md +0 -0
  202. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-4a1b3b93.md +0 -0
  203. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-4b992703.md +0 -0
  204. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-5355943b.md +0 -0
  205. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-5641cbd3.md +0 -0
  206. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-5e82a719.md +0 -0
  207. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-629fc7cd.md +0 -0
  208. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-641a4cdc.md +0 -0
  209. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-7e3d313a.md +0 -0
  210. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-875d4d3f.md +0 -0
  211. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-99eb4b61.md +0 -0
  212. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-9b329b00.md +0 -0
  213. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-ae407597.md +0 -0
  214. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-caeb21fc.md +0 -0
  215. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-df2996f3.md +0 -0
  216. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-e783b178.md +0 -0
  217. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-f26679ad.md +0 -0
  218. {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_migrated-history.md +0 -0
  219. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/.bundle-version +0 -0
  220. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/AGENTS.md +0 -0
  221. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/agents/worker.md +0 -0
  222. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/budget_check.sh +0 -0
  223. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/check_skill_workshop_loaded.sh +0 -0
  224. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/check_update.sh +0 -0
  225. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/claim_task.sh +0 -0
  226. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/detect_surface.sh +0 -0
  227. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/gate_run.sh +0 -0
  228. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/gate_target.py +0 -0
  229. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/github_channel.sh +0 -0
  230. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/mark_skill_workshop_loaded.sh +0 -0
  231. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/mark_skill_workshop_loaded_from_prompt.sh +0 -0
  232. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/open_task_pr.sh +0 -0
  233. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/outline.sh +0 -0
  234. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/rebase_stack.sh +0 -0
  235. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/rescue_snapshot.sh +0 -0
  236. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/statusline_capture.sh +0 -0
  237. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/worker_postcheck.sh +0 -0
  238. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/workspace_list.sh +0 -0
  239. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/worktree_probe.sh +0 -0
  240. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/claiming-internals.md +0 -0
  241. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/evidence-gates.md +0 -0
  242. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/github-automation.md +0 -0
  243. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/queue-seeding.md +0 -0
  244. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/quota-governance.md +0 -0
  245. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/state-layout.md +0 -0
  246. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/worker-loop.md +0 -0
  247. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/arsenal_config.py +0 -0
  248. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/arsenal_migrate.py +0 -0
  249. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/create_reader.py +0 -0
  250. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/gate_evidence.py +0 -0
  251. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/handle_sync.py +0 -0
  252. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/issue_for_task.py +0 -0
  253. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/issue_import.py +0 -0
  254. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/query_status.py +0 -0
  255. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/queue_hooks.py +0 -0
  256. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/task_select.py +0 -0
  257. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/session/handover.md +0 -0
  258. {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/workflows/arsenal-queue.yml +0 -0
  259. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/README.md +0 -0
  260. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-001.svg +0 -0
  261. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-002.svg +0 -0
  262. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-003.svg +0 -0
  263. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-004.svg +0 -0
  264. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-005.svg +0 -0
  265. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-006.svg +0 -0
  266. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-007.svg +0 -0
  267. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-008.svg +0 -0
  268. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-009.svg +0 -0
  269. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-010.svg +0 -0
  270. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-011.svg +0 -0
  271. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-012.svg +0 -0
  272. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-013.svg +0 -0
  273. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-014.svg +0 -0
  274. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-015.svg +0 -0
  275. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-016.svg +0 -0
  276. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-017.svg +0 -0
  277. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-018.svg +0 -0
  278. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-019.svg +0 -0
  279. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-020.svg +0 -0
  280. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-021.svg +0 -0
  281. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-022.svg +0 -0
  282. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-023.svg +0 -0
  283. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-024.svg +0 -0
  284. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-025.svg +0 -0
  285. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-026.svg +0 -0
  286. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-027.svg +0 -0
  287. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-028.svg +0 -0
  288. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-029.svg +0 -0
  289. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-030.svg +0 -0
  290. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-031.svg +0 -0
  291. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-032.svg +0 -0
  292. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-033.svg +0 -0
  293. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-034.svg +0 -0
  294. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-035.svg +0 -0
  295. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-036.svg +0 -0
  296. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-037.svg +0 -0
  297. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-038.svg +0 -0
  298. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-039.svg +0 -0
  299. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-040.svg +0 -0
  300. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-041.svg +0 -0
  301. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-042.svg +0 -0
  302. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-043.svg +0 -0
  303. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-044.svg +0 -0
  304. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-045.svg +0 -0
  305. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-046.svg +0 -0
  306. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-047.svg +0 -0
  307. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-048.svg +0 -0
  308. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-049.svg +0 -0
  309. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-050.svg +0 -0
  310. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-051.svg +0 -0
  311. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-052.svg +0 -0
  312. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-053.svg +0 -0
  313. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-054.svg +0 -0
  314. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-055.svg +0 -0
  315. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-056.svg +0 -0
  316. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-057.svg +0 -0
  317. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-058.svg +0 -0
  318. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-059.svg +0 -0
  319. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-060.svg +0 -0
  320. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-061.svg +0 -0
  321. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-062.svg +0 -0
  322. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-063.svg +0 -0
  323. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-064.svg +0 -0
  324. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-065.svg +0 -0
  325. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-066.svg +0 -0
  326. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-067.svg +0 -0
  327. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-068.svg +0 -0
  328. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-069.svg +0 -0
  329. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-070.svg +0 -0
  330. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-071.svg +0 -0
  331. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-072.svg +0 -0
  332. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-073.svg +0 -0
  333. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-074.svg +0 -0
  334. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-075.svg +0 -0
  335. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-076.svg +0 -0
  336. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-077.svg +0 -0
  337. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-078.svg +0 -0
  338. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-079.svg +0 -0
  339. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-080.svg +0 -0
  340. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-081.svg +0 -0
  341. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-082.svg +0 -0
  342. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-083.svg +0 -0
  343. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-084.svg +0 -0
  344. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-085.svg +0 -0
  345. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-086.svg +0 -0
  346. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-087.svg +0 -0
  347. {drawspec-0.3.1 → drawspec-0.3.2}/corpus/metrics.json +0 -0
  348. {drawspec-0.3.1 → drawspec-0.3.2}/docs/brief.md +0 -0
  349. {drawspec-0.3.1 → drawspec-0.3.2}/docs/claude-arsenal-logo.svg +0 -0
  350. {drawspec-0.3.1 → drawspec-0.3.2}/docs/cli.md +0 -0
  351. {drawspec-0.3.1 → drawspec-0.3.2}/docs/format.md +0 -0
  352. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/argument-congestion.svg +0 -0
  353. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/argument-contract.svg +0 -0
  354. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/argument-homework.svg +0 -0
  355. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/argument-readmissions.svg +0 -0
  356. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-bus.svg +0 -0
  357. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-fraction.svg +0 -0
  358. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-pages.svg +0 -0
  359. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-ratio.svg +0 -0
  360. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-savings.svg +0 -0
  361. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/board-migration.svg +0 -0
  362. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/board-onboarding.svg +0 -0
  363. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/board-retrospective.svg +0 -0
  364. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/board-story-map.svg +0 -0
  365. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-accent.svg +0 -0
  366. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-across.svg +0 -0
  367. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-area.svg +0 -0
  368. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-bars.svg +0 -0
  369. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-brand-readings.svg +0 -0
  370. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-complaints.svg +0 -0
  371. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-responsibility.svg +0 -0
  372. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-stacked.svg +0 -0
  373. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/clock-journey.svg +0 -0
  374. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/clock-quarters.svg +0 -0
  375. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/clock-roman.svg +0 -0
  376. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/clock-worksheet.svg +0 -0
  377. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/columns-before-after.svg +0 -0
  378. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/columns-rise.svg +0 -0
  379. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/curve-burndown.svg +0 -0
  380. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/curve-hype.svg +0 -0
  381. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/curve-variance.svg +0 -0
  382. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-hub-flywheel.svg +0 -0
  383. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-hub-oncall.svg +0 -0
  384. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-hub-quality.svg +0 -0
  385. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-review.svg +0 -0
  386. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-wheel.svg +0 -0
  387. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-blueprint-parts.svg +0 -0
  388. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-enrolment.svg +0 -0
  389. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-library.svg +0 -0
  390. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-orders.svg +0 -0
  391. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-shapes.svg +0 -0
  392. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/familytree-clinic.svg +0 -0
  393. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/familytree-cousins.svg +0 -0
  394. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/familytree-reunion.svg +0 -0
  395. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/familytree-tudors.svg +0 -0
  396. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/files-project.svg +0 -0
  397. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/files-text.svg +0 -0
  398. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/fishbone-backup.svg +0 -0
  399. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/fishbone-flaky-ci.svg +0 -0
  400. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/fishbone-late-orders.svg +0 -0
  401. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/fishbone-signups.svg +0 -0
  402. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-accent.svg +0 -0
  403. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-actor-handover.svg +0 -0
  404. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-actors.svg +0 -0
  405. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-bands.svg +0 -0
  406. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-blueprint-pump.svg +0 -0
  407. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-brand-release.svg +0 -0
  408. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-classes-context.svg +0 -0
  409. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-classes-teams.svg +0 -0
  410. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-critical-path.svg +0 -0
  411. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-edge-roles.svg +0 -0
  412. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-groups.svg +0 -0
  413. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-hub.svg +0 -0
  414. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-inventory.svg +0 -0
  415. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-loops-adoption.svg +0 -0
  416. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-loops-predators.svg +0 -0
  417. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-loops-town.svg +0 -0
  418. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-loops-waiting.svg +0 -0
  419. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-mesh.svg +0 -0
  420. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-meter-readings.svg +0 -0
  421. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-node-roles.svg +0 -0
  422. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-person-helpdesk.svg +0 -0
  423. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-retry.svg +0 -0
  424. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-status-failover.svg +0 -0
  425. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-status-search.svg +0 -0
  426. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-triage.svg +0 -0
  427. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-validation.svg +0 -0
  428. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/funnel-applications.svg +0 -0
  429. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/funnel-innovation.svg +0 -0
  430. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-critical-path.svg +0 -0
  431. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-migration.svg +0 -0
  432. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-progress.svg +0 -0
  433. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-semester.svg +0 -0
  434. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-upgrade.svg +0 -0
  435. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/index.html +0 -0
  436. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/journey-bug-report.svg +0 -0
  437. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/journey-first-week.svg +0 -0
  438. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/journey-outpatient.svg +0 -0
  439. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/journey-parking-permit.svg +0 -0
  440. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-appointment.svg +0 -0
  441. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-classes-claim.svg +0 -0
  442. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-disclosure.svg +0 -0
  443. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-expense.svg +0 -0
  444. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-onboarding.svg +0 -0
  445. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-phases-loan.svg +0 -0
  446. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-phases-purchase.svg +0 -0
  447. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-phases-release.svg +0 -0
  448. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-tender.svg +0 -0
  449. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-process.svg +0 -0
  450. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-raid.svg +0 -0
  451. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-scale-ci.svg +0 -0
  452. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-scale-risk.svg +0 -0
  453. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-scale-skills.svg +0 -0
  454. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/meter-appeal.svg +0 -0
  455. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/meter-library.svg +0 -0
  456. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/meter-migration.svg +0 -0
  457. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/meter-ward.svg +0 -0
  458. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/mindmap-essay-plan.svg +0 -0
  459. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/mindmap-moving-house.svg +0 -0
  460. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/mindmap-offsite.svg +0 -0
  461. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/mindmap-photosynthesis.svg +0 -0
  462. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-inequality.svg +0 -0
  463. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-interval-us.svg +0 -0
  464. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-ph.svg +0 -0
  465. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-spectrum.svg +0 -0
  466. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-tense.svg +0 -0
  467. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pie-spending.svg +0 -0
  468. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pie-team-week.svg +0 -0
  469. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pie-travel.svg +0 -0
  470. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pie-trip.svg +0 -0
  471. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pyramid-evidence.svg +0 -0
  472. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pyramid-top-heavy.svg +0 -0
  473. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/quadrant-conflict.svg +0 -0
  474. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/quadrant-priorities.svg +0 -0
  475. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rag-confidence.svg +0 -0
  476. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rag-refit.svg +0 -0
  477. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rag-register.svg +0 -0
  478. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rag-school.svg +0 -0
  479. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rings-scope.svg +0 -0
  480. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sankey-budget.svg +0 -0
  481. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sankey-cores.svg +0 -0
  482. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sankey-energy.svg +0 -0
  483. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sankey-tickets.svg +0 -0
  484. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/scatter-pareto.svg +0 -0
  485. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-actor-handover.svg +0 -0
  486. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-actor-signin.svg +0 -0
  487. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-async-export.svg +0 -0
  488. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-checkout.svg +0 -0
  489. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-dns.svg +0 -0
  490. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-drain.svg +0 -0
  491. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-terminal.svg +0 -0
  492. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-upload.svg +0 -0
  493. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/stack-decisions.svg +0 -0
  494. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-blueprint-lift.svg +0 -0
  495. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-brand-station.svg +0 -0
  496. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-breaker.svg +0 -0
  497. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-fork-onboarding.svg +0 -0
  498. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-fork-order.svg +0 -0
  499. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-fork-release.svg +0 -0
  500. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-invoice.svg +0 -0
  501. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-process.svg +0 -0
  502. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-regions-keyboard.svg +0 -0
  503. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-regions-order.svg +0 -0
  504. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-regions-player.svg +0 -0
  505. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-ticket.svg +0 -0
  506. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/timeline-disaster.svg +0 -0
  507. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/timeline-rise.svg +0 -0
  508. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/timeline-work.svg +0 -0
  509. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-classes-board.svg +0 -0
  510. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-compartments.svg +0 -0
  511. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-decisions.svg +0 -0
  512. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-person-escalation.svg +0 -0
  513. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-status-reorg.svg +0 -0
  514. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/treemap-bundle.svg +0 -0
  515. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/treemap-disk.svg +0 -0
  516. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/treemap-latency.svg +0 -0
  517. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/treemap-oncall.svg +0 -0
  518. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-data-roles.svg +0 -0
  519. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-four-ikigai.svg +0 -0
  520. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-four-launch.svg +0 -0
  521. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-four-ponds.svg +0 -0
  522. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-frameworks.svg +0 -0
  523. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-parity.svg +0 -0
  524. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-telemetry.svg +0 -0
  525. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/waterfall-budget-gap.svg +0 -0
  526. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/waterfall-cash.svg +0 -0
  527. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/waterfall-deficit.svg +0 -0
  528. {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/waterfall-result.svg +0 -0
  529. {drawspec-0.3.1 → drawspec-0.3.2}/docs/hero.png +0 -0
  530. {drawspec-0.3.1 → drawspec-0.3.2}/docs/hero.svg +0 -0
  531. {drawspec-0.3.1 → drawspec-0.3.2}/docs/kinds-wanted.md +0 -0
  532. {drawspec-0.3.1 → drawspec-0.3.2}/docs/logo.png +0 -0
  533. {drawspec-0.3.1 → drawspec-0.3.2}/docs/logo.svg +0 -0
  534. {drawspec-0.3.1 → drawspec-0.3.2}/docs/plan-round-five.md +0 -0
  535. {drawspec-0.3.1 → drawspec-0.3.2}/docs/plan-round-three.md +0 -0
  536. {drawspec-0.3.1 → drawspec-0.3.2}/docs/plan-round-two.md +0 -0
  537. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/README.md +0 -0
  538. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/argument.md +0 -0
  539. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/barmodel.md +0 -0
  540. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/board.md +0 -0
  541. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/clock.md +0 -0
  542. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/coverage-vs-diagram-design.md +0 -0
  543. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/cycle-hub.md +0 -0
  544. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/entities.md +0 -0
  545. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/exports.md +0 -0
  546. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/familytree.md +0 -0
  547. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/filetree.md +0 -0
  548. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/fishbone.md +0 -0
  549. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/flow-loops.md +0 -0
  550. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/flow-status.md +0 -0
  551. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/gantt.md +0 -0
  552. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/journey.md +0 -0
  553. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/lanes.md +0 -0
  554. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/matrix-scale.md +0 -0
  555. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/meter.md +0 -0
  556. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/mindmap.md +0 -0
  557. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/numberline.md +0 -0
  558. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/pie.md +0 -0
  559. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/rag.md +0 -0
  560. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/sankey.md +0 -0
  561. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/sequence.md +0 -0
  562. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/states.md +0 -0
  563. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/text.md +0 -0
  564. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/theme-from.md +0 -0
  565. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/treemap.md +0 -0
  566. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/venn.md +0 -0
  567. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/venn4.md +0 -0
  568. {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/waterfall.md +0 -0
  569. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/argument-congestion.json +0 -0
  570. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/argument-contract.json +0 -0
  571. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/argument-homework.json +0 -0
  572. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/argument-readmissions.json +0 -0
  573. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-bus.json +0 -0
  574. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-fraction.json +0 -0
  575. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-pages.json +0 -0
  576. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-ratio.json +0 -0
  577. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-savings.json +0 -0
  578. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/board-migration.json +0 -0
  579. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/board-onboarding.json +0 -0
  580. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/board-retrospective.json +0 -0
  581. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/board-story-map.json +0 -0
  582. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/brand/tidemark.css +0 -0
  583. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/brand/tidemark.tokens.json +0 -0
  584. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/brand/tidemark.toml +0 -0
  585. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-accent.json +0 -0
  586. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-across.json +0 -0
  587. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-area.json +0 -0
  588. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-bars.json +0 -0
  589. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-brand-readings.json +0 -0
  590. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-complaints.json +0 -0
  591. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-responsibility.json +0 -0
  592. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-stacked.json +0 -0
  593. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/clock-journey.json +0 -0
  594. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/clock-quarters.json +0 -0
  595. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/clock-roman.json +0 -0
  596. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/clock-worksheet.json +0 -0
  597. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/columns-before-after.json +0 -0
  598. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/columns-rise.json +0 -0
  599. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/curve-burndown.json +0 -0
  600. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/curve-hype.json +0 -0
  601. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/curve-variance.json +0 -0
  602. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-hub-flywheel.json +0 -0
  603. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-hub-oncall.json +0 -0
  604. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-hub-quality.json +0 -0
  605. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-review.json +0 -0
  606. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-wheel.json +0 -0
  607. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-blueprint-parts.json +0 -0
  608. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-enrolment.json +0 -0
  609. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-library.json +0 -0
  610. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-orders.json +0 -0
  611. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-shapes.json +0 -0
  612. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/familytree-clinic.json +0 -0
  613. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/familytree-cousins.json +0 -0
  614. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/familytree-reunion.json +0 -0
  615. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/familytree-tudors.json +0 -0
  616. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/files-project.json +0 -0
  617. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/files-text.json +0 -0
  618. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/fishbone-backup.json +0 -0
  619. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/fishbone-flaky-ci.json +0 -0
  620. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/fishbone-late-orders.json +0 -0
  621. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/fishbone-signups.json +0 -0
  622. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-accent.json +0 -0
  623. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-actor-handover.json +0 -0
  624. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-actors.json +0 -0
  625. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-bands.json +0 -0
  626. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-blueprint-pump.json +0 -0
  627. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-brand-release.json +0 -0
  628. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-classes-context.json +0 -0
  629. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-classes-teams.json +0 -0
  630. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-critical-path.json +0 -0
  631. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-edge-roles.json +0 -0
  632. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-groups.json +0 -0
  633. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-hub.json +0 -0
  634. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-inventory.json +0 -0
  635. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-loops-adoption.json +0 -0
  636. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-loops-predators.json +0 -0
  637. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-loops-town.json +0 -0
  638. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-loops-waiting.json +0 -0
  639. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-mesh.json +0 -0
  640. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-meter-readings.json +0 -0
  641. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-node-roles.json +0 -0
  642. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-person-helpdesk.json +0 -0
  643. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-retry.json +0 -0
  644. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-status-failover.json +0 -0
  645. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-status-search.json +0 -0
  646. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-triage.json +0 -0
  647. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-validation.json +0 -0
  648. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/funnel-applications.json +0 -0
  649. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/funnel-innovation.json +0 -0
  650. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-critical-path.json +0 -0
  651. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-migration.json +0 -0
  652. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-progress.json +0 -0
  653. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-semester.json +0 -0
  654. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-upgrade.json +0 -0
  655. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/journey-bug-report.json +0 -0
  656. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/journey-first-week.json +0 -0
  657. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/journey-outpatient.json +0 -0
  658. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/journey-parking-permit.json +0 -0
  659. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-appointment.json +0 -0
  660. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-classes-claim.json +0 -0
  661. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-disclosure.json +0 -0
  662. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-expense.json +0 -0
  663. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-onboarding.json +0 -0
  664. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-phases-loan.json +0 -0
  665. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-phases-purchase.json +0 -0
  666. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-phases-release.json +0 -0
  667. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-tender.json +0 -0
  668. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-process.json +0 -0
  669. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-raid.json +0 -0
  670. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-scale-ci.json +0 -0
  671. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-scale-risk.json +0 -0
  672. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-scale-skills.json +0 -0
  673. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/meter-appeal.json +0 -0
  674. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/meter-library.json +0 -0
  675. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/meter-migration.json +0 -0
  676. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/meter-ward.json +0 -0
  677. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/mindmap-essay-plan.json +0 -0
  678. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/mindmap-moving-house.json +0 -0
  679. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/mindmap-offsite.json +0 -0
  680. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/mindmap-photosynthesis.json +0 -0
  681. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-inequality.json +0 -0
  682. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-interval-us.json +0 -0
  683. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-ph.json +0 -0
  684. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-spectrum.json +0 -0
  685. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-tense.json +0 -0
  686. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pie-spending.json +0 -0
  687. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pie-team-week.json +0 -0
  688. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pie-travel.json +0 -0
  689. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pie-trip.json +0 -0
  690. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pyramid-evidence.json +0 -0
  691. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pyramid-top-heavy.json +0 -0
  692. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/quadrant-conflict.json +0 -0
  693. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/quadrant-priorities.json +0 -0
  694. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rag-confidence.json +0 -0
  695. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rag-refit.json +0 -0
  696. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rag-register.json +0 -0
  697. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rag-school.json +0 -0
  698. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/cycle-review-grandalf-down.svg +0 -0
  699. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/cycle-review-grandalf-right.svg +0 -0
  700. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/cycle-review-layered-down.svg +0 -0
  701. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/cycle-review-layered-right.svg +0 -0
  702. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/flow-validation-grandalf-down.svg +0 -0
  703. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/flow-validation-grandalf-right.svg +0 -0
  704. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/flow-validation-layered-down.svg +0 -0
  705. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/flow-validation-layered-right.svg +0 -0
  706. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/tree-decisions-grandalf-down.svg +0 -0
  707. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/tree-decisions-grandalf-right.svg +0 -0
  708. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/tree-decisions-layered-down.svg +0 -0
  709. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/tree-decisions-layered-right.svg +0 -0
  710. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rings-scope.json +0 -0
  711. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sankey-budget.json +0 -0
  712. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sankey-cores.json +0 -0
  713. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sankey-energy.json +0 -0
  714. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sankey-tickets.json +0 -0
  715. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/scatter-pareto.json +0 -0
  716. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-actor-handover.json +0 -0
  717. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-actor-signin.json +0 -0
  718. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-async-export.json +0 -0
  719. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-checkout.json +0 -0
  720. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-dns.json +0 -0
  721. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-drain.json +0 -0
  722. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-terminal.json +0 -0
  723. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-upload.json +0 -0
  724. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/stack-decisions.json +0 -0
  725. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-blueprint-lift.json +0 -0
  726. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-brand-station.json +0 -0
  727. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-breaker.json +0 -0
  728. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-fork-onboarding.json +0 -0
  729. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-fork-order.json +0 -0
  730. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-fork-release.json +0 -0
  731. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-invoice.json +0 -0
  732. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-process.json +0 -0
  733. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-regions-keyboard.json +0 -0
  734. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-regions-order.json +0 -0
  735. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-regions-player.json +0 -0
  736. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-ticket.json +0 -0
  737. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/themes/algebra-us.toml +0 -0
  738. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/themes/donut.toml +0 -0
  739. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/themes/same-opposite.toml +0 -0
  740. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/timeline-disaster.json +0 -0
  741. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/timeline-rise.json +0 -0
  742. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/timeline-work.json +0 -0
  743. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-classes-board.json +0 -0
  744. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-compartments.json +0 -0
  745. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-decisions.json +0 -0
  746. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-person-escalation.json +0 -0
  747. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-status-reorg.json +0 -0
  748. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/treemap-bundle.json +0 -0
  749. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/treemap-disk.json +0 -0
  750. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/treemap-latency.json +0 -0
  751. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/treemap-oncall.json +0 -0
  752. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-data-roles.json +0 -0
  753. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-four-ikigai.json +0 -0
  754. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-four-launch.json +0 -0
  755. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-four-ponds.json +0 -0
  756. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-frameworks.json +0 -0
  757. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-parity.json +0 -0
  758. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-telemetry.json +0 -0
  759. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/waterfall-budget-gap.json +0 -0
  760. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/waterfall-cash.json +0 -0
  761. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/waterfall-deficit.json +0 -0
  762. {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/waterfall-result.json +0 -0
  763. {drawspec-0.3.1 → drawspec-0.3.2}/docs/research/corpus-round2.md +0 -0
  764. {drawspec-0.3.1 → drawspec-0.3.2}/docs/research/kind-audit.md +0 -0
  765. {drawspec-0.3.1 → drawspec-0.3.2}/docs/research/kinds-survey.md +0 -0
  766. {drawspec-0.3.1 → drawspec-0.3.2}/docs/review-2026-10.md +0 -0
  767. {drawspec-0.3.1 → drawspec-0.3.2}/docs/social-preview.png +0 -0
  768. {drawspec-0.3.1 → drawspec-0.3.2}/docs/social-preview.svg +0 -0
  769. {drawspec-0.3.1 → drawspec-0.3.2}/docs/theme-requirements.md +0 -0
  770. {drawspec-0.3.1 → drawspec-0.3.2}/docs/theme.md +0 -0
  771. {drawspec-0.3.1 → drawspec-0.3.2}/glama.json +0 -0
  772. {drawspec-0.3.1 → drawspec-0.3.2}/llms.txt +0 -0
  773. {drawspec-0.3.1 → drawspec-0.3.2}/schema/drawspec-v1.schema.json +0 -0
  774. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/brand.py +0 -0
  775. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/charts.py +0 -0
  776. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/clearance.py +0 -0
  777. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/cli.py +0 -0
  778. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/emit.py +0 -0
  779. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/errors.py +0 -0
  780. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/examples.py +0 -0
  781. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/export.py +0 -0
  782. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/filetree.py +0 -0
  783. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/LICENSE +0 -0
  784. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/mono-bold.ttf +0 -0
  785. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/mono.ttf +0 -0
  786. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/sans-bold.ttf +0 -0
  787. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/sans.ttf +0 -0
  788. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/serif-bold.ttf +0 -0
  789. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/serif.ttf +0 -0
  790. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/geometry.py +0 -0
  791. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/__init__.py +0 -0
  792. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/argument.py +0 -0
  793. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/barmodel.py +0 -0
  794. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/board.py +0 -0
  795. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/clock.py +0 -0
  796. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/common.py +0 -0
  797. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/containers.py +0 -0
  798. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/cycle.py +0 -0
  799. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/entities.py +0 -0
  800. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/familytree.py +0 -0
  801. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/files.py +0 -0
  802. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/fishbone.py +0 -0
  803. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/gantt.py +0 -0
  804. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/graph.py +0 -0
  805. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/graphtext.py +0 -0
  806. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/grid.py +0 -0
  807. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/journey.py +0 -0
  808. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/lanes.py +0 -0
  809. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/loops.py +0 -0
  810. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/meter.py +0 -0
  811. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/mindmap.py +0 -0
  812. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/numberline.py +0 -0
  813. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/pie.py +0 -0
  814. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/rag.py +0 -0
  815. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/sankey.py +0 -0
  816. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/sequence.py +0 -0
  817. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/shape.py +0 -0
  818. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/treemap.py +0 -0
  819. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/venn.py +0 -0
  820. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/waterfall.py +0 -0
  821. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/layout/__init__.py +0 -0
  822. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/layout/base.py +0 -0
  823. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/layout/grandalf_engine.py +0 -0
  824. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/layout/layered.py +0 -0
  825. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/legend.py +0 -0
  826. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/py.typed +0 -0
  827. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/render.py +0 -0
  828. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/routing.py +0 -0
  829. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/scene.py +0 -0
  830. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/schema.py +0 -0
  831. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/sheet.py +0 -0
  832. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/text/__init__.py +0 -0
  833. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/text/fontlib.py +0 -0
  834. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/text/measure.py +0 -0
  835. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/text/wrap.py +0 -0
  836. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/textgrid.py +0 -0
  837. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/theme.py +0 -0
  838. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/accent.toml +0 -0
  839. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/blueprint.toml +0 -0
  840. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/compartment.toml +0 -0
  841. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/default.toml +0 -0
  842. {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/wheel.toml +0 -0
  843. {drawspec-0.3.1 → drawspec-0.3.2}/status/plan.md +0 -0
  844. {drawspec-0.3.1 → drawspec-0.3.2}/status/spec-annotated.md +0 -0
  845. {drawspec-0.3.1 → drawspec-0.3.2}/status/spec-reader.html +0 -0
  846. {drawspec-0.3.1 → drawspec-0.3.2}/status/specification.md +0 -0
  847. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/board-story-map.ascii.txt +0 -0
  848. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/board-story-map.unicode.txt +0 -0
  849. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/files-project.ascii.txt +0 -0
  850. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/files-project.unicode.txt +0 -0
  851. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/flow-retry.ascii.txt +0 -0
  852. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/flow-retry.unicode.txt +0 -0
  853. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/gantt-semester.ascii.txt +0 -0
  854. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/gantt-semester.unicode.txt +0 -0
  855. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/lanes-phases-loan.ascii.txt +0 -0
  856. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/lanes-phases-loan.unicode.txt +0 -0
  857. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-appeal.ascii.txt +0 -0
  858. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-appeal.unicode.txt +0 -0
  859. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-library.ascii.txt +0 -0
  860. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-library.unicode.txt +0 -0
  861. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-migration.ascii.txt +0 -0
  862. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-migration.unicode.txt +0 -0
  863. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-ward.ascii.txt +0 -0
  864. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-ward.unicode.txt +0 -0
  865. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/rag-refit.ascii.txt +0 -0
  866. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/rag-refit.unicode.txt +0 -0
  867. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/sequence-upload.ascii.txt +0 -0
  868. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/sequence-upload.unicode.txt +0 -0
  869. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/stack-decisions.ascii.txt +0 -0
  870. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/stack-decisions.unicode.txt +0 -0
  871. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/states-process.ascii.txt +0 -0
  872. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/states-process.unicode.txt +0 -0
  873. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/timeline-disaster.ascii.txt +0 -0
  874. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/timeline-disaster.unicode.txt +0 -0
  875. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/tree-compartments.ascii.txt +0 -0
  876. {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/tree-compartments.unicode.txt +0 -0
  877. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_acceptance.py +0 -0
  878. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_actor.py +0 -0
  879. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_blueprint.py +0 -0
  880. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_box.py +0 -0
  881. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_brand.py +0 -0
  882. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_caption.py +0 -0
  883. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_clearance.py +0 -0
  884. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_cli.py +0 -0
  885. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_clipping.py +0 -0
  886. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_clock.py +0 -0
  887. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_docs.py +0 -0
  888. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_embedding.py +0 -0
  889. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_emit.py +0 -0
  890. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_export.py +0 -0
  891. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_failure_families.py +0 -0
  892. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_flow_loops.py +0 -0
  893. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_frame_crossings.py +0 -0
  894. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_gallery.py +0 -0
  895. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_argument.py +0 -0
  896. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_barmodel.py +0 -0
  897. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_board.py +0 -0
  898. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_chart.py +0 -0
  899. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_containers.py +0 -0
  900. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_cycle.py +0 -0
  901. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_entities.py +0 -0
  902. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_family.py +0 -0
  903. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_files.py +0 -0
  904. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_fishbone.py +0 -0
  905. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_gantt.py +0 -0
  906. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_graph.py +0 -0
  907. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_grid.py +0 -0
  908. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_journey.py +0 -0
  909. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_lanes.py +0 -0
  910. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_mindmap.py +0 -0
  911. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_numberline.py +0 -0
  912. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_pie.py +0 -0
  913. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_sankey.py +0 -0
  914. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_sequence.py +0 -0
  915. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_shape.py +0 -0
  916. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_states.py +0 -0
  917. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_treemap.py +0 -0
  918. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_venn.py +0 -0
  919. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_labels.py +0 -0
  920. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_layout.py +0 -0
  921. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_layout_spike.py +0 -0
  922. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_lead_rule.py +0 -0
  923. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_legend.py +0 -0
  924. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_margins.py +0 -0
  925. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_measure.py +0 -0
  926. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_meter.py +0 -0
  927. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_packaging.py +0 -0
  928. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_readability.py +0 -0
  929. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_routing.py +0 -0
  930. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_routing_crossings.py +0 -0
  931. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_schema.py +0 -0
  932. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_self_loops.py +0 -0
  933. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_status.py +0 -0
  934. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_status_rag.py +0 -0
  935. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_text_graph.py +0 -0
  936. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_text_output.py +0 -0
  937. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_theme.py +0 -0
  938. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_venn4.py +0 -0
  939. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_waterfall.py +0 -0
  940. {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_wrap.py +0 -0
  941. {drawspec-0.3.1 → drawspec-0.3.2}/tools/clipping.py +0 -0
  942. {drawspec-0.3.1 → drawspec-0.3.2}/tools/collisions.py +0 -0
  943. {drawspec-0.3.1 → drawspec-0.3.2}/tools/compare.py +0 -0
  944. {drawspec-0.3.1 → drawspec-0.3.2}/tools/docs.py +0 -0
  945. {drawspec-0.3.1 → drawspec-0.3.2}/tools/frames.py +0 -0
  946. {drawspec-0.3.1 → drawspec-0.3.2}/tools/gallery.py +0 -0
  947. {drawspec-0.3.1 → drawspec-0.3.2}/tools/hero.py +0 -0
  948. {drawspec-0.3.1 → drawspec-0.3.2}/tools/spike_layout.py +0 -0
  949. {drawspec-0.3.1 → drawspec-0.3.2}/tools/subset_fonts.py +0 -0
@@ -11,7 +11,7 @@ drawspec schema --out schema.json # the full JSON Schema
11
11
  drawspec theme from site.css -o house.toml # a theme from a brand's CSS or design tokens
12
12
  ```
13
13
 
14
- **If your client speaks MCP**, `drawspec-mcp` serves `validate`, `render` and `kinds` as tools,
14
+ **If your client speaks MCP**, `drawspec-mcp` serves `list_kinds`, `get_example`, `get_schema`, `validate_document` and `render_document` as tools,
15
15
  each violation a `{"pointer": "/edges/0/to", "message": …}` object: `pip install 'drawspec[mcp]'`, [`docs/guide.md`](docs/guide.md).
16
16
 
17
17
  ## The one rule
@@ -10,6 +10,24 @@ against it would stop working. Everything below is about the *package*.
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [0.3.2] — 2026-10-15
14
+
15
+ ### Changed
16
+
17
+ - **The MCP tools are renamed to one verb_noun convention**: `validate` →
18
+ `validate_document`, `render` → `render_document`, `kinds` → `list_kinds`. The CLI
19
+ commands keep their names.
20
+ - **Sharper tool descriptions**: when to validate and when to render, the shape of
21
+ every answer and of every refusal, and read-only annotations on all tools. JSON
22
+ answers also come back as structured content matching an output schema.
23
+
24
+ ### Added
25
+
26
+ - **`get_example`** and **`get_schema`** MCP tools: the smallest valid document of a
27
+ kind (what `drawspec example` prints), and that kind's slice of the published
28
+ schema with only the definitions it uses (a few thousand characters, not the whole
29
+ file's two hundred thousand).
30
+
13
31
  ## [0.3.1] — 2026-10-15
14
32
 
15
33
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: drawspec
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Declarative diagram spec to clean, themeable SVG — writable by an LLM with no coordinates.
5
5
  Project-URL: Homepage, https://github.com/nuncaeslupus/drawspec
6
6
  Project-URL: Documentation, https://github.com/nuncaeslupus/drawspec/blob/main/docs/guide.md
@@ -46,6 +46,8 @@ Description-Content-Type: text/markdown
46
46
  [![Built with claude-arsenal](https://img.shields.io/badge/built%20with-claude--arsenal-d97756)](https://github.com/nuncaeslupus/claude-arsenal)
47
47
  <!-- /claude-arsenal:attribution -->
48
48
 
49
+ [![drawspec MCP server – quality and maintenance score on Glama](https://glama.ai/mcp/servers/nuncaeslupus/drawspec/badges/score.svg)](https://glama.ai/mcp/servers/nuncaeslupus/drawspec)
50
+
49
51
  <p align="center">
50
52
  <img src="https://raw.githubusercontent.com/nuncaeslupus/drawspec/main/docs/hero.png" width="100%" alt="drawspec: a blueprint sheet with the wordmark, a JSON flow spec and the flow chart drawspec renders from it, with large faint venn and pie drawings behind the wordmark, a mind map and a project file tree drawn by drawspec, and beside them a small sequence diagram as drawspec's text output, once in box drawing and once in ASCII">
51
53
  </p>
@@ -401,7 +403,8 @@ what the guide and the references are for. [`llms.txt`](llms.txt) is the index
401
403
  that points at it.
402
404
 
403
405
  And if your client speaks **MCP**, `pip install 'drawspec[mcp]'` gives you
404
- `drawspec-mcp`: `validate`, `render` and `kinds` as tools, so a refusal arrives as
406
+ `drawspec-mcp`: `list_kinds`, `get_example`, `get_schema`, `validate_document` and
407
+ `render_document` as tools, so a refusal arrives as
405
408
  `{"pointer": "/edges/0/to", "message": …}` in the model's own loop instead of as
406
409
  prose on stderr it has to read. Same checks, same messages, no shell. See
407
410
  [the guide](docs/guide.md#using-it-from-an-agent-the-mcp-server).
@@ -6,6 +6,8 @@
6
6
  [![Built with claude-arsenal](https://img.shields.io/badge/built%20with-claude--arsenal-d97756)](https://github.com/nuncaeslupus/claude-arsenal)
7
7
  <!-- /claude-arsenal:attribution -->
8
8
 
9
+ [![drawspec MCP server – quality and maintenance score on Glama](https://glama.ai/mcp/servers/nuncaeslupus/drawspec/badges/score.svg)](https://glama.ai/mcp/servers/nuncaeslupus/drawspec)
10
+
9
11
  <p align="center">
10
12
  <img src="https://raw.githubusercontent.com/nuncaeslupus/drawspec/main/docs/hero.png" width="100%" alt="drawspec: a blueprint sheet with the wordmark, a JSON flow spec and the flow chart drawspec renders from it, with large faint venn and pie drawings behind the wordmark, a mind map and a project file tree drawn by drawspec, and beside them a small sequence diagram as drawspec's text output, once in box drawing and once in ASCII">
11
13
  </p>
@@ -361,7 +363,8 @@ what the guide and the references are for. [`llms.txt`](llms.txt) is the index
361
363
  that points at it.
362
364
 
363
365
  And if your client speaks **MCP**, `pip install 'drawspec[mcp]'` gives you
364
- `drawspec-mcp`: `validate`, `render` and `kinds` as tools, so a refusal arrives as
366
+ `drawspec-mcp`: `list_kinds`, `get_example`, `get_schema`, `validate_document` and
367
+ `render_document` as tools, so a refusal arrives as
365
368
  `{"pointer": "/edges/0/to", "message": …}` in the model's own loop instead of as
366
369
  prose on stderr it has to read. Same checks, same messages, no shell. See
367
370
  [the guide](docs/guide.md#using-it-from-an-agent-the-mcp-server).
@@ -466,7 +466,7 @@ cross-links or groups is drawn this way too; `bands` have no text form yet.
466
466
  side by side.
467
467
 
468
468
  From Python, `render_text(document, width=80, charset="unicode")` returns the
469
- string; the MCP `render` tool takes `"format": "text"` with the same `width` and
469
+ string; the MCP `render_document` tool takes `"format": "text"` with the same `width` and
470
470
  `charset`.
471
471
 
472
472
  ## Validating in a build
@@ -760,14 +760,19 @@ picking a winner would be drawspec deciding which of two things you meant.
760
760
  ## Using it from an agent: the MCP server
761
761
 
762
762
  If the thing writing your documents is a language model rather than a person,
763
- there is a third interface. `drawspec-mcp` serves the same work as three MCP
764
- tools over stdio:
763
+ there is a third interface. `drawspec-mcp` serves the same work as five MCP
764
+ tools over stdio, one per step of writing a document:
765
765
 
766
766
  | Tool | Answers |
767
767
  |---|---|
768
- | `validate` | would `render` refuse this, and **where** — every violation as `{"pointer", "message"}` |
769
- | `render` | the SVG, with the same optional `theme`, `width` and `height` — or, with `"format": "png"` (and optional `scale`, `background`), a base64 PNG image block, when the server has `drawspec[png]` |
770
- | `kinds` | every kind and what it is for, so a model chooses one instead of guessing |
768
+ | `list_kinds` | every kind and what it is for, so a model chooses one instead of guessing |
769
+ | `get_example` | the smallest valid document of one kind — what `drawspec example <kind>` prints |
770
+ | `get_schema` | one kind's fields, cut from the published schema with only the definitions it uses |
771
+ | `validate_document` | would `render_document` refuse this, and **where** — every violation as `{"pointer", "message"}` |
772
+ | `render_document` | the SVG, with the same optional `theme`, `width` and `height` — or, with `"format": "png"` (and optional `scale`, `background`), a base64 PNG image block, when the server has `drawspec[png]`; or with `"format": "text"`, the plain-text form |
773
+
774
+ All five are read-only; the JSON answers also come back as structured content
775
+ matching each tool's output schema.
771
776
 
772
777
  ```bash
773
778
  pip install 'drawspec[mcp]'
@@ -783,7 +788,7 @@ Then point a client at it. For anything that reads the conventional JSON config:
783
788
  }
784
789
  ```
785
790
 
786
- **`validate` is the one that earns the server.** Shelling out to the CLI works,
791
+ **`validate_document` is the one that earns the server.** Shelling out to the CLI works,
787
792
  and it hands a model prose on stderr that it has to read to discover that
788
793
  `/edges/2/to` names nothing. As a tool the same refusal comes back as data, in
789
794
  the model's own loop, and the write-validate-fix cycle closes without a shell in
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drawspec"
3
- version = "0.3.1"
3
+ version = "0.3.2"
4
4
  description = "Declarative diagram spec to clean, themeable SVG — writable by an LLM with no coordinates."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/nuncaeslupus/drawspec",
8
8
  "source": "github"
9
9
  },
10
- "version": "0.3.1",
10
+ "version": "0.3.2",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "drawspec",
15
- "version": "0.3.1",
15
+ "version": "0.3.2",
16
16
  "runtimeHint": "uvx",
17
17
  "runtimeArguments": [
18
18
  {
@@ -11,7 +11,8 @@ rather than guess at.
11
11
 
12
12
  1. **Install.** `pip install drawspec`. If your client speaks MCP and the
13
13
  `drawspec-mcp` server is available (`pip install 'drawspec[mcp]'`), use its
14
- `kinds`, `validate` and `render` tools instead of the shell commands below.
14
+ `list_kinds`, `get_example`, `get_schema`, `validate_document` and
15
+ `render_document` tools instead of the shell commands below.
15
16
  2. **Read the format.** `AGENTS.md` at
16
17
  https://github.com/nuncaeslupus/drawspec/blob/main/AGENTS.md — read it whole,
17
18
  once. Offline, `drawspec kinds` lists the kinds and `drawspec example <kind>`
@@ -19,7 +19,7 @@ from drawspec.scene import Ellipse, Path, Polygon, Rect, Scene, TextRun
19
19
  from drawspec.schema import Document, load_document, parse_document, validate_document
20
20
  from drawspec.theme import Theme, load_theme
21
21
 
22
- __version__ = "0.3.1"
22
+ __version__ = "0.3.2"
23
23
 
24
24
  __all__ = [
25
25
  "Box",
@@ -1,4 +1,4 @@
1
- """drawspec as three MCP tools, so an agent's refusals arrive as data.
1
+ """drawspec as five MCP tools, so an agent's refusals arrive as data.
2
2
 
3
3
  An agent writing a document today has to shell out to `drawspec validate`,
4
4
  capture stderr, and read prose to find out that `/edges/2/to` names nothing.
@@ -9,19 +9,23 @@ pass is one edit — and they arrive in the one shape a program cannot use.
9
9
  as `{"pointer": "/edges/0/to", "message": ...}` inside the agent's own loop, and
10
10
  the write-validate-fix cycle closes without a shell in it.
11
11
 
12
- Three tools and deliberately not more:
12
+ Five tools, one per step of writing a document, and deliberately not more:
13
13
 
14
14
  ====================== ====================================================
15
- :func:`_validate` would `render` refuse this, and where
16
- :func:`_render` the SVG, or a PNG as an image block
17
- :func:`_kinds` the thirteen kinds and what each is for
15
+ ``list_kinds`` every kind and what each is for
16
+ ``get_example`` the smallest valid document of one kind
17
+ ``get_schema`` one kind's fields, cut from the published schema
18
+ ``validate_document`` would ``render_document`` refuse this, and where
19
+ ``render_document`` the SVG, a PNG as an image block, or plain text
18
20
  ====================== ====================================================
19
21
 
20
22
  **Nothing here paraphrases drawspec.** Every tool takes the document the CLI
21
23
  takes and reports the violations :class:`~drawspec.schema.Violation` already
22
- carries; `kinds` is `drawspec.examples.PURPOSE` verbatim. A layer that reworded
23
- the refusals would be a third description of the format to keep in step with the
24
- schema and `AGENTS.md`, which is the drift this project keeps designing out.
24
+ carries; `list_kinds` is `drawspec.examples.PURPOSE` verbatim, `get_example`
25
+ is `drawspec.examples.EXAMPLES` and `get_schema` a slice of the generated
26
+ schema. A layer that reworded the refusals would be a third description of the
27
+ format to keep in step with the schema and `AGENTS.md`, which is the drift this
28
+ project keeps designing out.
25
29
 
26
30
  Run it with `python -m drawspec.mcp`, or as the `drawspec-mcp` script. It speaks
27
31
  stdio, which is what every client supports; there is no HTTP transport because
@@ -51,20 +55,21 @@ except ImportError as error: # pragma: no cover - the extra is installed in CI
51
55
 
52
56
  from drawspec import __version__
53
57
  from drawspec.errors import DrawspecError
54
- from drawspec.examples import PURPOSE
58
+ from drawspec.examples import EXAMPLES, PURPOSE
55
59
  from drawspec.export import BACKGROUNDS, DEFAULT_SCALE, MAX_SCALE, render_png
56
60
  from drawspec.kinds import TEXT_KINDS
57
61
  from drawspec.render import render_document, render_text
58
- from drawspec.schema import KINDS, SCHEMA_ID, Document, parse_document
62
+ from drawspec.schema import KINDS, SCHEMA_ID, Document, build_schema, parse_document
59
63
  from drawspec.textgrid import CHARSETS, DEFAULT_WIDTH, WIDE_WIDTH
60
64
 
61
- #: What every tool is handed. Spelled once because all three take the same
62
- #: thing: an agent that has learnt one call has learnt all of them.
65
+ #: What every tool is handed. Spelled once because the document tools all take
66
+ #: the same thing: an agent that has learnt one call has learnt all of them.
63
67
  _DOCUMENT: Final[dict[str, Any]] = {
64
68
  "type": "object",
65
69
  "description": (
66
- f"A drawspec document, as JSON. The full field list is published at {SCHEMA_ID}, "
67
- f"and `kinds` names the {len(KINDS)} values `kind` may take."
70
+ f"A drawspec document, as JSON. `list_kinds` names the {len(KINDS)} values `kind` "
71
+ "may take, `get_example` returns the smallest valid document of one, and "
72
+ f"`get_schema` returns its fields (the whole format is published at {SCHEMA_ID})."
68
73
  ),
69
74
  }
70
75
 
@@ -73,32 +78,132 @@ _THEME: Final[dict[str, Any]] = {
73
78
  "description": "A bundled theme name or a path to a theme file. Omit for the default.",
74
79
  }
75
80
 
81
+ _KIND: Final[dict[str, Any]] = {
82
+ "type": "string",
83
+ "enum": list(KINDS),
84
+ "description": "A diagram kind, as `list_kinds` names them.",
85
+ }
86
+
87
+ #: Every tool reads its arguments and writes nothing: calling one twice with the
88
+ #: same arguments returns the same answer and changes nothing anywhere.
89
+ _READ_ONLY: Final = types.ToolAnnotations(
90
+ read_only_hint=True, destructive_hint=False, idempotent_hint=True, open_world_hint=False
91
+ )
92
+
93
+ #: What a refused call returns, in the description's words. One shape for every
94
+ #: tool, so a caller has one error path.
95
+ _REFUSAL_SHAPE: Final[str] = (
96
+ "A refusal comes back as an error result whose text is JSON: "
97
+ '`{"ok": false, "error": "<type>", "message": "<text>", '
98
+ '"violations": [{"pointer": "/edges/0/to", "message": "<text>"}]}`, '
99
+ "where `pointer` is an RFC 6901 JSON pointer into the document (empty for the "
100
+ "document as a whole) and `violations` is never empty."
101
+ )
102
+
76
103
 
77
104
  TOOLS: Final[tuple[types.Tool, ...]] = (
78
105
  types.Tool(
79
- name="validate",
106
+ name="list_kinds",
107
+ title="List the diagram kinds",
108
+ description=(
109
+ "List the vocabulary: every value `kind` may take and what each one is for, as "
110
+ '`{"kinds": [{"kind": "flow", "purpose": "<text>"}]}`. Takes no arguments. Call '
111
+ "it first, before "
112
+ "choosing a kind — several kinds are not box-and-arrow diagrams and are easy to "
113
+ "miss; then `get_example` for a starting document."
114
+ ),
115
+ input_schema={"type": "object", "properties": {}},
116
+ output_schema={
117
+ "type": "object",
118
+ "properties": {
119
+ "kinds": {
120
+ "type": "array",
121
+ "items": {
122
+ "type": "object",
123
+ "properties": {"kind": {"type": "string"}, "purpose": {"type": "string"}},
124
+ "required": ["kind", "purpose"],
125
+ },
126
+ }
127
+ },
128
+ "required": ["kinds"],
129
+ },
130
+ annotations=_READ_ONLY,
131
+ ),
132
+ types.Tool(
133
+ name="get_example",
134
+ title="Get an example document of one kind",
135
+ description=(
136
+ "Get the smallest valid document of one kind, as JSON ready to edit: the fastest "
137
+ "way to the right field names. Use it after `list_kinds` has settled the kind, "
138
+ "and `get_schema` only when a field the example does not use is needed."
139
+ ),
140
+ input_schema={
141
+ "type": "object",
142
+ "properties": {"kind": _KIND},
143
+ "required": ["kind"],
144
+ },
145
+ output_schema={"type": "object", "description": "A drawspec document."},
146
+ annotations=_READ_ONLY,
147
+ ),
148
+ types.Tool(
149
+ name="get_schema",
150
+ title="Get the JSON Schema for one kind",
151
+ description=(
152
+ "Get the JSON Schema for one kind's documents: every field it accepts, with "
153
+ "types, limits and descriptions, plus the shared definitions it refers to. Use "
154
+ "it when `get_example` does not show a field you need. Referential rules "
155
+ "(unique ids, edges that land on real nodes) are beyond JSON Schema — "
156
+ "`validate_document` checks those."
157
+ ),
158
+ input_schema={
159
+ "type": "object",
160
+ "properties": {"kind": _KIND},
161
+ "required": ["kind"],
162
+ },
163
+ output_schema={"type": "object", "description": "A JSON Schema (draft 2020-12)."},
164
+ annotations=_READ_ONLY,
165
+ ),
166
+ types.Tool(
167
+ name="validate_document",
80
168
  title="Validate a drawspec document",
81
169
  description=(
82
- "Answer whether `render` would refuse this document, and if so exactly where. "
83
- "Returns every violation, not the first — each located by JSON pointer, so one "
84
- "pass is one edit. Call this before `render` while a document is being written."
170
+ "Check whether `render_document` would refuse this document, and if so exactly "
171
+ "where, without drawing anything for you to read. Returns every violation, not "
172
+ "the first, so one pass is one edit. Call it while a document is being written "
173
+ "or edited; skip it when you are about to render anyway, since "
174
+ "`render_document` refuses in the same shape. "
175
+ 'A valid document returns `{"ok": true, "kind": "flow", "message": "<text>"}`. '
176
+ + _REFUSAL_SHAPE
85
177
  ),
86
178
  input_schema={
87
179
  "type": "object",
88
180
  "properties": {"document": _DOCUMENT, "theme": _THEME},
89
181
  "required": ["document"],
90
182
  },
183
+ output_schema={
184
+ "type": "object",
185
+ "properties": {
186
+ "ok": {"type": "boolean"},
187
+ "kind": {"type": "string"},
188
+ "message": {"type": "string"},
189
+ },
190
+ "required": ["ok", "kind", "message"],
191
+ },
192
+ annotations=_READ_ONLY,
91
193
  ),
92
194
  types.Tool(
93
- name="render",
195
+ name="render_document",
94
196
  title="Render a drawspec document to SVG, PNG or text",
95
197
  description=(
96
- "Draw the document and return the SVG. The output is safe to paste inline into "
97
- "a Markdown page: no global styles, no colliding ids, and no meaning carried by "
98
- "colour alone. With format `png` it returns a PNG image instead, for a chat, a "
99
- "slide or an attachment (needs the server's `drawspec[png]` extra); with format "
100
- "`text`, the diagram as plain text, for the kinds that have a text form. Refuses "
101
- "with located violations exactly as `validate` does."
198
+ "Draw the document. Use it when the document is ready to show; while still "
199
+ "fixing errors, `validate_document` returns just the verdict instead of the drawing. "
200
+ "Returns one content "
201
+ "block: by default a text block holding the SVG markup, safe to paste inline "
202
+ "into a Markdown page (no global styles, no colliding ids, no meaning carried "
203
+ "by colour alone); with format `png`, an image block (base64 `image/png`) for "
204
+ "a chat, a slide or an attachment, which needs the server's `drawspec[png]` "
205
+ "extra; with format `text`, a text block with the diagram as plain text, for "
206
+ "the kinds that have a text form. Nothing is written to disk. " + _REFUSAL_SHAPE
102
207
  ),
103
208
  input_schema={
104
209
  "type": "object",
@@ -142,17 +247,7 @@ TOOLS: Final[tuple[types.Tool, ...]] = (
142
247
  },
143
248
  "required": ["document"],
144
249
  },
145
- ),
146
- types.Tool(
147
- name="kinds",
148
- title="List the diagram kinds",
149
- description=(
150
- "The vocabulary: every value `kind` may take and what each one is for. Takes no "
151
- "arguments. Read this before choosing a kind — several of them are not "
152
- "box-and-arrow diagrams and are easy to miss."
153
- ),
154
- input_schema={"type": "object", "properties": {}},
155
- annotations=types.ToolAnnotations(read_only_hint=True, idempotent_hint=True),
250
+ annotations=_READ_ONLY,
156
251
  ),
157
252
  )
158
253
 
@@ -240,6 +335,67 @@ def _kinds() -> dict[str, Any]:
240
335
  return {"kinds": [{"kind": kind, "purpose": PURPOSE[kind]} for kind in KINDS]}
241
336
 
242
337
 
338
+ def _kind(arguments: dict[str, Any]) -> str:
339
+ """The `kind` argument, checked: an unknown kind is the arguments' fault."""
340
+ kind = str(arguments["kind"])
341
+ if kind not in KINDS:
342
+ raise ValueError(f"unknown kind {kind!r}; `list_kinds` names the {len(KINDS)} kinds")
343
+ return kind
344
+
345
+
346
+ def _example(arguments: dict[str, Any]) -> dict[str, Any]:
347
+ """The smallest document of one kind — the same one `drawspec example` prints."""
348
+ return dict(EXAMPLES[_kind(arguments)])
349
+
350
+
351
+ def _schema(arguments: dict[str, Any]) -> dict[str, Any]:
352
+ """One kind's branch of the published schema, with only the definitions it uses.
353
+
354
+ The whole schema is some two hundred thousand characters, most of it about
355
+ kinds the caller is not writing. The branch is cut from the same generated
356
+ schema the file is, so the two cannot disagree; the `$defs` it needs are
357
+ followed transitively through `$ref`, since a definition may refer to another.
358
+ """
359
+ kind = _kind(arguments)
360
+ full = build_schema()
361
+ branch = next(v for v in full["oneOf"] if kind in v["properties"]["kind"]["enum"])
362
+ branch = {**branch, "properties": {**branch["properties"], "kind": {"const": kind}}}
363
+ branch.pop("title", None)
364
+ definitions: dict[str, Any] = full["$defs"]
365
+ needed: dict[str, Any] = {}
366
+ pending = _refs(branch)
367
+ while pending:
368
+ name = pending.pop()
369
+ if name not in needed:
370
+ needed[name] = definitions[name]
371
+ pending |= _refs(definitions[name])
372
+ schema = {
373
+ "$schema": full["$schema"],
374
+ "$id": SCHEMA_ID,
375
+ "title": f"drawspec {kind} document",
376
+ "description": full["description"],
377
+ **branch,
378
+ }
379
+ if needed:
380
+ schema["$defs"] = dict(sorted(needed.items()))
381
+ return schema
382
+
383
+
384
+ def _refs(node: object) -> set[str]:
385
+ """The `$defs` names a schema fragment refers to, directly."""
386
+ if isinstance(node, dict):
387
+ found = set()
388
+ ref = node.get("$ref")
389
+ if isinstance(ref, str) and ref.startswith("#/$defs/"):
390
+ found.add(ref.removeprefix("#/$defs/"))
391
+ for value in node.values():
392
+ found |= _refs(value)
393
+ return found
394
+ if isinstance(node, list):
395
+ return set().union(*(_refs(item) for item in node)) if node else set()
396
+ return set()
397
+
398
+
243
399
  def _image(png: bytes) -> types.CallToolResult:
244
400
  data = base64.b64encode(png).decode("ascii")
245
401
  return types.CallToolResult(
@@ -248,8 +404,14 @@ def _image(png: bytes) -> types.CallToolResult:
248
404
 
249
405
 
250
406
  def _text(payload: object) -> types.CallToolResult:
251
- body = payload if isinstance(payload, str) else json.dumps(payload, indent=2)
252
- return types.CallToolResult(content=[types.TextContent(type="text", text=body)])
407
+ if isinstance(payload, str):
408
+ return types.CallToolResult(content=[types.TextContent(type="text", text=payload)])
409
+ # A JSON answer goes out twice: as text for clients that read only content,
410
+ # and as structured content matching the tool's `output_schema`.
411
+ return types.CallToolResult(
412
+ content=[types.TextContent(type="text", text=json.dumps(payload, indent=2))],
413
+ structured_content=payload if isinstance(payload, dict) else None,
414
+ )
253
415
 
254
416
 
255
417
  async def _on_list_tools(
@@ -271,20 +433,24 @@ async def _on_call_tool(
271
433
  """
272
434
  arguments = dict(params.arguments or {})
273
435
  try:
274
- if params.name == "validate":
436
+ if params.name == "validate_document":
275
437
  return _text(_validate(arguments))
276
- if params.name == "render":
438
+ if params.name == "render_document":
277
439
  rendered = _render(arguments)
278
440
  return _image(rendered) if isinstance(rendered, bytes) else _text(rendered)
279
- if params.name == "kinds":
441
+ if params.name == "list_kinds":
280
442
  return _text(_kinds())
443
+ if params.name == "get_example":
444
+ return _text(_example(arguments))
445
+ if params.name == "get_schema":
446
+ return _text(_schema(arguments))
281
447
  except DrawspecError as error:
282
448
  return types.CallToolResult(
283
449
  content=[types.TextContent(type="text", text=json.dumps(_refusal(error), indent=2))],
284
450
  is_error=True,
285
451
  )
286
452
  except ValueError as error:
287
- # An out-of-range `scale` or an unknown `background`: the arguments,
453
+ # An out-of-range `scale`, an unknown `background` or `kind`: the arguments,
288
454
  # not the document, so there is nothing to locate.
289
455
  message = str(error)
290
456
  return types.CallToolResult(
@@ -344,9 +510,10 @@ def build_server() -> Server[None]:
344
510
  title="drawspec",
345
511
  instructions=(
346
512
  "Write what a diagram means — nodes, edges, labels, and a semantic role for each — "
347
- "and drawspec decides every coordinate. Call `kinds` to choose a kind, `validate` "
348
- "while writing (its violations are located by JSON pointer), and `render` for the "
349
- f"SVG. The document format is published at {SCHEMA_ID}."
513
+ "and drawspec decides every coordinate. Call `list_kinds` to choose a kind, "
514
+ "`get_example` for a starting document (`get_schema` for every field), "
515
+ "`validate_document` while writing (its violations are located by JSON pointer), "
516
+ f"and `render_document` for the SVG. The document format is published at {SCHEMA_ID}."
350
517
  ),
351
518
  on_list_tools=_on_list_tools,
352
519
  on_call_tool=_on_call_tool,