kingmadoc 0.3.0.dev13__tar.gz → 0.3.0.dev15__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 (194) hide show
  1. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/PKG-INFO +1 -1
  2. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/codex.md +24 -14
  3. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/copilot.md +24 -14
  4. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/cursor.md +24 -14
  5. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/reference/diagram-rules.md +22 -12
  6. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/reference/formats.md +1 -1
  7. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/.featuredoc.yml +0 -0
  8. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  9. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  10. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/.github/workflows/ci.yml +0 -0
  11. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/.github/workflows/release.yml +0 -0
  12. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/.gitignore +0 -0
  13. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/CHANGELOG.md +0 -0
  14. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/CLAUDE.md +0 -0
  15. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/CONTRIBUTING.md +0 -0
  16. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/LICENSE +0 -0
  17. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/README.md +0 -0
  18. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/docs/conventions.md +0 -0
  19. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/docs/index.md +0 -0
  20. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/docs/releasing.md +0 -0
  21. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/docs/roadmap.md +0 -0
  22. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/docs/test-plan.md +0 -0
  23. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/README.md +0 -0
  24. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop/manage.py +0 -0
  25. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop/requirements.txt +0 -0
  26. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop/shop/__init__.py +0 -0
  27. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop/shop/models.py +0 -0
  28. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop/shop/services.py +0 -0
  29. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop/shop/settings.py +0 -0
  30. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop/shop/urls.py +0 -0
  31. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop/shop/views.py +0 -0
  32. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop-discount/shop/discounts.py +0 -0
  33. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/fixtures/shop-discount/shop/services.py +0 -0
  34. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/results/2026-09-27T111837Z.json +0 -0
  35. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/results/2026-09-27T112600Z.json +0 -0
  36. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/results/2026-09-27T162715Z.json +0 -0
  37. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/results/2026-09-28T064505Z.json +0 -0
  38. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/results/2026-09-28T092643Z.json +0 -0
  39. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/results/2026-09-28T093046Z.json +0 -0
  40. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/scenarios/explain-branch.yml +0 -0
  41. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/scenarios/explain-feature.yml +0 -0
  42. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/scenarios/explain-fo-to.yml +0 -0
  43. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/evals/scenarios/plan-feature.yml +0 -0
  44. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/examples/verify-mode-plan.md +0 -0
  45. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/pyproject.toml +0 -0
  46. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/scripts/build_skill_variants.py +0 -0
  47. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/scripts/build_threat_reference.py +0 -0
  48. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/scripts/import_tmt_knowledge_base.py +0 -0
  49. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/scripts/run_evals.py +0 -0
  50. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/SKILL.md +0 -0
  51. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/SKILL.md +0 -0
  52. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/reference/arc42.md +0 -0
  53. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/reference/c4-model.md +0 -0
  54. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/reference/c4.md +0 -0
  55. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/reference/models.md +0 -0
  56. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/reference/split.md +0 -0
  57. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/reference/stories.md +0 -0
  58. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/reference/threat-model.md +0 -0
  59. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/skill/explaining-code/reference/threats.md +0 -0
  60. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/__init__.py +0 -0
  61. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/about.py +0 -0
  62. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/adr.py +0 -0
  63. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/cli.py +0 -0
  64. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/config.py +0 -0
  65. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/d2_binary.py +0 -0
  66. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/diagrams/__init__.py +0 -0
  67. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/diagrams/base.py +0 -0
  68. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/diagrams/d2.py +0 -0
  69. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/diagrams/mermaid.py +0 -0
  70. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/diagrams/plantuml.py +0 -0
  71. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/documents.py +0 -0
  72. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/exceptions.py +0 -0
  73. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/explain.py +0 -0
  74. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/__init__.py +0 -0
  75. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/branch.py +0 -0
  76. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/collect.py +0 -0
  77. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/data_model.py +0 -0
  78. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/dominators.py +0 -0
  79. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/js_modules.py +0 -0
  80. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/projects.py +0 -0
  81. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/routes.py +0 -0
  82. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/facts/services.py +0 -0
  83. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/git.py +0 -0
  84. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/naming.py +0 -0
  85. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/plan/__init__.py +0 -0
  86. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/plan/analyzer.py +0 -0
  87. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/plan/dependencies.py +0 -0
  88. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/plan/generator.py +0 -0
  89. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/plan/models.py +0 -0
  90. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/plandoc.py +0 -0
  91. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/raster.py +0 -0
  92. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/render.py +0 -0
  93. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/scaffold.py +0 -0
  94. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/screenshots.py +0 -0
  95. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/skills.py +0 -0
  96. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/templates/adr.md.j2 +0 -0
  97. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/templates/domain_design.md.j2 +0 -0
  98. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/templates/functional_design.md.j2 +0 -0
  99. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/templates/plan_default.md.j2 +0 -0
  100. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/templates/security_design.md.j2 +0 -0
  101. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/templates/technical_design.md.j2 +0 -0
  102. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/templating.py +0 -0
  103. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/threats/__init__.py +0 -0
  104. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/threats/filters.py +0 -0
  105. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/threats/knowledge_base.py +0 -0
  106. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/threats/model.py +0 -0
  107. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/threats/report.py +0 -0
  108. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/threats/sdl_knowledge_base.json +0 -0
  109. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/verify/__init__.py +0 -0
  110. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/verify/changes.py +0 -0
  111. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/verify/commands.py +0 -0
  112. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/verify/deviations.py +0 -0
  113. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/verify/locate.py +0 -0
  114. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/verify/report.py +0 -0
  115. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/src/kingmadoc/vscode.py +0 -0
  116. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/conftest.py +0 -0
  117. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/data/d2-sample.svg +0 -0
  118. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/d2/class.d2 +0 -0
  119. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/d2/component.d2 +0 -0
  120. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/d2/container.d2 +0 -0
  121. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/d2/context.d2 +0 -0
  122. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/d2/sequence.d2 +0 -0
  123. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/mermaid/class.mmd +0 -0
  124. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/mermaid/component.mmd +0 -0
  125. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/mermaid/container.mmd +0 -0
  126. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/mermaid/context.mmd +0 -0
  127. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/mermaid/sequence.mmd +0 -0
  128. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/plantuml/class.puml +0 -0
  129. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/plantuml/component.puml +0 -0
  130. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/plantuml/container.puml +0 -0
  131. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/plantuml/context.puml +0 -0
  132. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/backends/plantuml/sequence.puml +0 -0
  133. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/mermaid/component.mmd +0 -0
  134. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/mermaid/container.mmd +0 -0
  135. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/fixtures/mermaid/context.mmd +0 -0
  136. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_adr.py +0 -0
  137. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_adr_numbering.py +0 -0
  138. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_analyzer.py +0 -0
  139. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_cli.py +0 -0
  140. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_cli_encoding.py +0 -0
  141. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_cli_init.py +0 -0
  142. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_cli_plan_custom_template.py +0 -0
  143. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_cli_sigint.py +0 -0
  144. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_cli_verify_config.py +0 -0
  145. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_config.py +0 -0
  146. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_config_poetry.py +0 -0
  147. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_config_shape.py +0 -0
  148. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_d2_download.py +0 -0
  149. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_dependencies.py +0 -0
  150. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_dependency_graph_model.py +0 -0
  151. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_design_diagrams_compile.py +0 -0
  152. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_design_models.py +0 -0
  153. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_diagram_backends.py +0 -0
  154. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_diagrams_mermaid.py +0 -0
  155. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_documents.py +0 -0
  156. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_duplicate_names.py +0 -0
  157. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_evals.py +0 -0
  158. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_explain.py +0 -0
  159. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_explain_check.py +0 -0
  160. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_explain_config.py +0 -0
  161. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_explain_status.py +0 -0
  162. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_extra_designs_coverage.py +0 -0
  163. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_facts.py +0 -0
  164. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_facts_code.py +0 -0
  165. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_facts_data_model.py +0 -0
  166. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_facts_dominators.py +0 -0
  167. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_functional_design.py +0 -0
  168. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_generator.py +0 -0
  169. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_grep_performance.py +0 -0
  170. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_manifests.py +0 -0
  171. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_max_lines_per_file.py +0 -0
  172. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_output_dir.py +0 -0
  173. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_plan_e2e.py +0 -0
  174. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_plandoc.py +0 -0
  175. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_properties.py +0 -0
  176. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_raster.py +0 -0
  177. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_render.py +0 -0
  178. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_scaffold.py +0 -0
  179. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_screenshots.py +0 -0
  180. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_security_domain_designs.py +0 -0
  181. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_skill.py +0 -0
  182. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_skill_explaining_code.py +0 -0
  183. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_skill_models.py +0 -0
  184. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_skills_install.py +0 -0
  185. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_source_dirs.py +0 -0
  186. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_summary_slug_diagram_defaults.py +0 -0
  187. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_technical_design.py +0 -0
  188. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_templating_security.py +0 -0
  189. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_threats.py +0 -0
  190. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_verify.py +0 -0
  191. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_verify_locate.py +0 -0
  192. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_version.py +0 -0
  193. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/tests/test_vscode_preview.py +0 -0
  194. {kingmadoc-0.3.0.dev13 → kingmadoc-0.3.0.dev15}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: kingmadoc
3
- Version: 0.3.0.dev13
3
+ Version: 0.3.0.dev15
4
4
  Summary: Feature docs for AI coding agents: a plan with C4 diagrams before the code, a verification doc after.
5
5
  Project-URL: Homepage, https://github.com/ATkingma/KingmaDoc
6
6
  Project-URL: Issues, https://github.com/ATkingma/KingmaDoc/issues
@@ -233,8 +233,8 @@ Show the user the path, the number of deviations, and any failing check.
233
233
  - **Always Mermaid** (ignore `diagram_format`; PlantUML/D2 are CLI-only). Mermaid is
234
234
  the source of truth; every diagram is also rendered to a PNG and embedded in the
235
235
  Markdown (see [Rendering](#rendering)).
236
- - **Always fenced**: every diagram is a complete ` ```mermaid ` … ` ``` `
237
- block, with nothing else inside it.
236
+ - **Always complete**: every diagram is a complete Mermaid diagram (a ` ```mermaid `
237
+ block, or its `.mmd` file once rendered), with nothing else in it.
238
238
  - **Always labeled**:
239
239
  - C4 and `sequenceDiagram`: the first line after the diagram type is `title <text>`
240
240
  (`System Context: <project>`, `Containers: <project>`);
@@ -252,6 +252,9 @@ Show the user the path, the number of deviations, and any failing check.
252
252
  `System_Boundary` alias ends in `_boundary` and is never used in `Rel`.
253
253
  - **Escaping**: inside quoted labels write `"` as `#quot;`. In titles, leave quotes as
254
254
  they are and drop `#` and `;` (they end a C4 title). Put everything on one line.
255
+ - **Colour**: the normal Mermaid theme. No `style`, `classDef` or `%%{init}%%` colours in
256
+ UML (class, sequence) diagrams; colour only to make one thing stand out, such as the
257
+ changed containers below.
255
258
  - **Short labels**: about 50 characters at most; split a long message in two.
256
259
  - **Sequence aliases**: never `x`, `X`, `o` or `O` (they clash with the `-x` and `-o`
257
260
  arrows); use abbreviations of two or more letters (`ct`, `svc`).
@@ -289,7 +292,7 @@ this line: _Disabled in `.featuredoc.yml` (`diagrams`)._
289
292
 
290
293
  `diagrams_png` in `.featuredoc.yml` [`embed`]: `embed` (below), `file` (the PNG goes to
291
294
  `<output_dir>/img/<slug>-<diagram>.png`, linked with `![<title>](img/<slug>-<diagram>.png)`)
292
- or `off` (no image, only the Mermaid block).
295
+ or `off` (no image; the ` ```mermaid ` block stays in the document).
293
296
 
294
297
  - **Mode comes only from `.featuredoc.yml`.** No file or no `diagrams_png` key → `embed`.
295
298
  Never infer the mode from existing files (an `img/` folder, how an earlier doc did it).
@@ -297,25 +300,32 @@ or `off` (no image, only the Mermaid block).
297
300
  `![...](data:image/png;base64,`. A relative path such as `](img/` is an error: embed it and
298
301
  delete the loose PNG.
299
302
  - Embed the PNG with a script (read file → base64 → replace the line), never by hand.
300
-
301
- 1. Write each ` ```mermaid ` block to a temporary `.mmd` file outside the repo and run:
302
- `npx -y @mermaid-js/mermaid-cli -i <tmp>.mmd -o <tmp>.png -s 2 -b white -p <puppeteer.json>`
303
+ - **No Mermaid source in the document** once its PNG is there: no ` ```mermaid ` block
304
+ and no `<details>` with the source. The source lives in
305
+ `<output_dir>/diagrams/<slug>-<diagram>.mmd`.
306
+
307
+ 1. Write each diagram to `<output_dir>/diagrams/<slug>-<diagram>.mmd` (`<diagram>`:
308
+ `c4-context`, `c4-container`, `class`, `sequence-current`, `sequence-new`) and run:
309
+ `npx -y @mermaid-js/mermaid-cli -i <that>.mmd -o <tmp>.png -s 2 -b white -t default -p <puppeteer.json>`
310
+ (`-t default`: Mermaid's normal theme; newer versions otherwise colour every shape).
303
311
  2. Set `PUPPETEER_SKIP_DOWNLOAD=true`, and let `puppeteer.json` point at an installed
304
312
  browser, so no Chromium is downloaded:
305
313
  `{"executablePath": "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}`
306
314
  (or Chrome). Ask the user once before the first npm download: package
307
315
  `@mermaid-js/mermaid-cli`, from the npm registry, about 50 MB with dependencies.
308
- 3. Directly below the block, after one empty line:
316
+ 3. In the document, in place of the block, two lines:
317
+ `<!-- kingmadoc:diagram diagrams/<slug>-<diagram>.mmd -->` and
309
318
  `![<diagram title>](data:image/png;base64,<base64 of the PNG>)`.
310
- No separate image files go into the repo.
311
- 4. The ` ```mermaid ` block always stays (GitHub shows no data URIs; the block is the
312
- source for the next render). On a new render, replace only the image line below
313
- the same block.
319
+ No separate image files go into the repo (`file` mode aside).
320
+ 4. To change a diagram, edit its `.mmd` file and render again; replace only the image
321
+ line below its comment. (GitHub shows no data-URI images; there the `.mmd` file is
322
+ the readable version.)
314
323
  5. Look at every PNG after rendering (Read): not empty, no labels cut off at the edge,
315
324
  no unexpected extra participants. If needed, fix the Mermaid (split or shorten a
316
325
  label) and render again.
317
- 6. If rendering fails, write `_TODO: PNG not generated: <reason>._` below the block
318
- (in `language`) and carry on; the document stays valid.
326
+ 6. If rendering fails, keep the ` ```mermaid ` block in the document, write
327
+ `_TODO: PNG not generated: <reason>._` below it (in `language`) and carry on; the
328
+ document stays valid.
319
329
 
320
330
  ## Output format
321
331
 
@@ -445,7 +455,7 @@ The classes this feature touches and their direct collaborators.
445
455
 
446
456
  Omit "**Answered while planning**" when nothing was answered.
447
457
 
448
- - Every diagram is a ` ```mermaid ` block with its PNG below it (see
458
+ - Every diagram is its PNG, with the Mermaid source in a `.mmd` file (see
449
459
  [Rendering](diagram-rules.md#rendering)); a disabled diagram keeps its section with
450
460
  _Disabled in `.featuredoc.yml` (`diagrams`)._
451
461
  - **Generated** is the real system time (`date -Iminutes`), never a guess.
@@ -233,8 +233,8 @@ Show the user the path, the number of deviations, and any failing check.
233
233
  - **Always Mermaid** (ignore `diagram_format`; PlantUML/D2 are CLI-only). Mermaid is
234
234
  the source of truth; every diagram is also rendered to a PNG and embedded in the
235
235
  Markdown (see [Rendering](#rendering)).
236
- - **Always fenced**: every diagram is a complete ` ```mermaid ` … ` ``` `
237
- block, with nothing else inside it.
236
+ - **Always complete**: every diagram is a complete Mermaid diagram (a ` ```mermaid `
237
+ block, or its `.mmd` file once rendered), with nothing else in it.
238
238
  - **Always labeled**:
239
239
  - C4 and `sequenceDiagram`: the first line after the diagram type is `title <text>`
240
240
  (`System Context: <project>`, `Containers: <project>`);
@@ -252,6 +252,9 @@ Show the user the path, the number of deviations, and any failing check.
252
252
  `System_Boundary` alias ends in `_boundary` and is never used in `Rel`.
253
253
  - **Escaping**: inside quoted labels write `"` as `#quot;`. In titles, leave quotes as
254
254
  they are and drop `#` and `;` (they end a C4 title). Put everything on one line.
255
+ - **Colour**: the normal Mermaid theme. No `style`, `classDef` or `%%{init}%%` colours in
256
+ UML (class, sequence) diagrams; colour only to make one thing stand out, such as the
257
+ changed containers below.
255
258
  - **Short labels**: about 50 characters at most; split a long message in two.
256
259
  - **Sequence aliases**: never `x`, `X`, `o` or `O` (they clash with the `-x` and `-o`
257
260
  arrows); use abbreviations of two or more letters (`ct`, `svc`).
@@ -289,7 +292,7 @@ this line: _Disabled in `.featuredoc.yml` (`diagrams`)._
289
292
 
290
293
  `diagrams_png` in `.featuredoc.yml` [`embed`]: `embed` (below), `file` (the PNG goes to
291
294
  `<output_dir>/img/<slug>-<diagram>.png`, linked with `![<title>](img/<slug>-<diagram>.png)`)
292
- or `off` (no image, only the Mermaid block).
295
+ or `off` (no image; the ` ```mermaid ` block stays in the document).
293
296
 
294
297
  - **Mode comes only from `.featuredoc.yml`.** No file or no `diagrams_png` key → `embed`.
295
298
  Never infer the mode from existing files (an `img/` folder, how an earlier doc did it).
@@ -297,25 +300,32 @@ or `off` (no image, only the Mermaid block).
297
300
  `![...](data:image/png;base64,`. A relative path such as `](img/` is an error: embed it and
298
301
  delete the loose PNG.
299
302
  - Embed the PNG with a script (read file → base64 → replace the line), never by hand.
300
-
301
- 1. Write each ` ```mermaid ` block to a temporary `.mmd` file outside the repo and run:
302
- `npx -y @mermaid-js/mermaid-cli -i <tmp>.mmd -o <tmp>.png -s 2 -b white -p <puppeteer.json>`
303
+ - **No Mermaid source in the document** once its PNG is there: no ` ```mermaid ` block
304
+ and no `<details>` with the source. The source lives in
305
+ `<output_dir>/diagrams/<slug>-<diagram>.mmd`.
306
+
307
+ 1. Write each diagram to `<output_dir>/diagrams/<slug>-<diagram>.mmd` (`<diagram>`:
308
+ `c4-context`, `c4-container`, `class`, `sequence-current`, `sequence-new`) and run:
309
+ `npx -y @mermaid-js/mermaid-cli -i <that>.mmd -o <tmp>.png -s 2 -b white -t default -p <puppeteer.json>`
310
+ (`-t default`: Mermaid's normal theme; newer versions otherwise colour every shape).
303
311
  2. Set `PUPPETEER_SKIP_DOWNLOAD=true`, and let `puppeteer.json` point at an installed
304
312
  browser, so no Chromium is downloaded:
305
313
  `{"executablePath": "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}`
306
314
  (or Chrome). Ask the user once before the first npm download: package
307
315
  `@mermaid-js/mermaid-cli`, from the npm registry, about 50 MB with dependencies.
308
- 3. Directly below the block, after one empty line:
316
+ 3. In the document, in place of the block, two lines:
317
+ `<!-- kingmadoc:diagram diagrams/<slug>-<diagram>.mmd -->` and
309
318
  `![<diagram title>](data:image/png;base64,<base64 of the PNG>)`.
310
- No separate image files go into the repo.
311
- 4. The ` ```mermaid ` block always stays (GitHub shows no data URIs; the block is the
312
- source for the next render). On a new render, replace only the image line below
313
- the same block.
319
+ No separate image files go into the repo (`file` mode aside).
320
+ 4. To change a diagram, edit its `.mmd` file and render again; replace only the image
321
+ line below its comment. (GitHub shows no data-URI images; there the `.mmd` file is
322
+ the readable version.)
314
323
  5. Look at every PNG after rendering (Read): not empty, no labels cut off at the edge,
315
324
  no unexpected extra participants. If needed, fix the Mermaid (split or shorten a
316
325
  label) and render again.
317
- 6. If rendering fails, write `_TODO: PNG not generated: <reason>._` below the block
318
- (in `language`) and carry on; the document stays valid.
326
+ 6. If rendering fails, keep the ` ```mermaid ` block in the document, write
327
+ `_TODO: PNG not generated: <reason>._` below it (in `language`) and carry on; the
328
+ document stays valid.
319
329
 
320
330
  ## Output format
321
331
 
@@ -445,7 +455,7 @@ The classes this feature touches and their direct collaborators.
445
455
 
446
456
  Omit "**Answered while planning**" when nothing was answered.
447
457
 
448
- - Every diagram is a ` ```mermaid ` block with its PNG below it (see
458
+ - Every diagram is its PNG, with the Mermaid source in a `.mmd` file (see
449
459
  [Rendering](diagram-rules.md#rendering)); a disabled diagram keeps its section with
450
460
  _Disabled in `.featuredoc.yml` (`diagrams`)._
451
461
  - **Generated** is the real system time (`date -Iminutes`), never a guess.
@@ -234,8 +234,8 @@ Show the user the path, the number of deviations, and any failing check.
234
234
  - **Always Mermaid** (ignore `diagram_format`; PlantUML/D2 are CLI-only). Mermaid is
235
235
  the source of truth; every diagram is also rendered to a PNG and embedded in the
236
236
  Markdown (see [Rendering](#rendering)).
237
- - **Always fenced**: every diagram is a complete ` ```mermaid ` … ` ``` `
238
- block, with nothing else inside it.
237
+ - **Always complete**: every diagram is a complete Mermaid diagram (a ` ```mermaid `
238
+ block, or its `.mmd` file once rendered), with nothing else in it.
239
239
  - **Always labeled**:
240
240
  - C4 and `sequenceDiagram`: the first line after the diagram type is `title <text>`
241
241
  (`System Context: <project>`, `Containers: <project>`);
@@ -253,6 +253,9 @@ Show the user the path, the number of deviations, and any failing check.
253
253
  `System_Boundary` alias ends in `_boundary` and is never used in `Rel`.
254
254
  - **Escaping**: inside quoted labels write `"` as `#quot;`. In titles, leave quotes as
255
255
  they are and drop `#` and `;` (they end a C4 title). Put everything on one line.
256
+ - **Colour**: the normal Mermaid theme. No `style`, `classDef` or `%%{init}%%` colours in
257
+ UML (class, sequence) diagrams; colour only to make one thing stand out, such as the
258
+ changed containers below.
256
259
  - **Short labels**: about 50 characters at most; split a long message in two.
257
260
  - **Sequence aliases**: never `x`, `X`, `o` or `O` (they clash with the `-x` and `-o`
258
261
  arrows); use abbreviations of two or more letters (`ct`, `svc`).
@@ -290,7 +293,7 @@ this line: _Disabled in `.featuredoc.yml` (`diagrams`)._
290
293
 
291
294
  `diagrams_png` in `.featuredoc.yml` [`embed`]: `embed` (below), `file` (the PNG goes to
292
295
  `<output_dir>/img/<slug>-<diagram>.png`, linked with `![<title>](img/<slug>-<diagram>.png)`)
293
- or `off` (no image, only the Mermaid block).
296
+ or `off` (no image; the ` ```mermaid ` block stays in the document).
294
297
 
295
298
  - **Mode comes only from `.featuredoc.yml`.** No file or no `diagrams_png` key → `embed`.
296
299
  Never infer the mode from existing files (an `img/` folder, how an earlier doc did it).
@@ -298,25 +301,32 @@ or `off` (no image, only the Mermaid block).
298
301
  `![...](data:image/png;base64,`. A relative path such as `](img/` is an error: embed it and
299
302
  delete the loose PNG.
300
303
  - Embed the PNG with a script (read file → base64 → replace the line), never by hand.
301
-
302
- 1. Write each ` ```mermaid ` block to a temporary `.mmd` file outside the repo and run:
303
- `npx -y @mermaid-js/mermaid-cli -i <tmp>.mmd -o <tmp>.png -s 2 -b white -p <puppeteer.json>`
304
+ - **No Mermaid source in the document** once its PNG is there: no ` ```mermaid ` block
305
+ and no `<details>` with the source. The source lives in
306
+ `<output_dir>/diagrams/<slug>-<diagram>.mmd`.
307
+
308
+ 1. Write each diagram to `<output_dir>/diagrams/<slug>-<diagram>.mmd` (`<diagram>`:
309
+ `c4-context`, `c4-container`, `class`, `sequence-current`, `sequence-new`) and run:
310
+ `npx -y @mermaid-js/mermaid-cli -i <that>.mmd -o <tmp>.png -s 2 -b white -t default -p <puppeteer.json>`
311
+ (`-t default`: Mermaid's normal theme; newer versions otherwise colour every shape).
304
312
  2. Set `PUPPETEER_SKIP_DOWNLOAD=true`, and let `puppeteer.json` point at an installed
305
313
  browser, so no Chromium is downloaded:
306
314
  `{"executablePath": "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}`
307
315
  (or Chrome). Ask the user once before the first npm download: package
308
316
  `@mermaid-js/mermaid-cli`, from the npm registry, about 50 MB with dependencies.
309
- 3. Directly below the block, after one empty line:
317
+ 3. In the document, in place of the block, two lines:
318
+ `<!-- kingmadoc:diagram diagrams/<slug>-<diagram>.mmd -->` and
310
319
  `![<diagram title>](data:image/png;base64,<base64 of the PNG>)`.
311
- No separate image files go into the repo.
312
- 4. The ` ```mermaid ` block always stays (GitHub shows no data URIs; the block is the
313
- source for the next render). On a new render, replace only the image line below
314
- the same block.
320
+ No separate image files go into the repo (`file` mode aside).
321
+ 4. To change a diagram, edit its `.mmd` file and render again; replace only the image
322
+ line below its comment. (GitHub shows no data-URI images; there the `.mmd` file is
323
+ the readable version.)
315
324
  5. Look at every PNG after rendering (Read): not empty, no labels cut off at the edge,
316
325
  no unexpected extra participants. If needed, fix the Mermaid (split or shorten a
317
326
  label) and render again.
318
- 6. If rendering fails, write `_TODO: PNG not generated: <reason>._` below the block
319
- (in `language`) and carry on; the document stays valid.
327
+ 6. If rendering fails, keep the ` ```mermaid ` block in the document, write
328
+ `_TODO: PNG not generated: <reason>._` below it (in `language`) and carry on; the
329
+ document stays valid.
320
330
 
321
331
  ## Output format
322
332
 
@@ -446,7 +456,7 @@ The classes this feature touches and their direct collaborators.
446
456
 
447
457
  Omit "**Answered while planning**" when nothing was answered.
448
458
 
449
- - Every diagram is a ` ```mermaid ` block with its PNG below it (see
459
+ - Every diagram is its PNG, with the Mermaid source in a `.mmd` file (see
450
460
  [Rendering](diagram-rules.md#rendering)); a disabled diagram keeps its section with
451
461
  _Disabled in `.featuredoc.yml` (`diagrams`)._
452
462
  - **Generated** is the real system time (`date -Iminutes`), never a guess.
@@ -3,8 +3,8 @@
3
3
  - **Always Mermaid** (ignore `diagram_format`; PlantUML/D2 are CLI-only). Mermaid is
4
4
  the source of truth; every diagram is also rendered to a PNG and embedded in the
5
5
  Markdown (see [Rendering](#rendering)).
6
- - **Always fenced**: every diagram is a complete ` ```mermaid ` … ` ``` `
7
- block, with nothing else inside it.
6
+ - **Always complete**: every diagram is a complete Mermaid diagram (a ` ```mermaid `
7
+ block, or its `.mmd` file once rendered), with nothing else in it.
8
8
  - **Always labeled**:
9
9
  - C4 and `sequenceDiagram`: the first line after the diagram type is `title <text>`
10
10
  (`System Context: <project>`, `Containers: <project>`);
@@ -22,6 +22,9 @@
22
22
  `System_Boundary` alias ends in `_boundary` and is never used in `Rel`.
23
23
  - **Escaping**: inside quoted labels write `"` as `#quot;`. In titles, leave quotes as
24
24
  they are and drop `#` and `;` (they end a C4 title). Put everything on one line.
25
+ - **Colour**: the normal Mermaid theme. No `style`, `classDef` or `%%{init}%%` colours in
26
+ UML (class, sequence) diagrams; colour only to make one thing stand out, such as the
27
+ changed containers below.
25
28
  - **Short labels**: about 50 characters at most; split a long message in two.
26
29
  - **Sequence aliases**: never `x`, `X`, `o` or `O` (they clash with the `-x` and `-o`
27
30
  arrows); use abbreviations of two or more letters (`ct`, `svc`).
@@ -59,7 +62,7 @@ this line: _Disabled in `.featuredoc.yml` (`diagrams`)._
59
62
 
60
63
  `diagrams_png` in `.featuredoc.yml` [`embed`]: `embed` (below), `file` (the PNG goes to
61
64
  `<output_dir>/img/<slug>-<diagram>.png`, linked with `![<title>](img/<slug>-<diagram>.png)`)
62
- or `off` (no image, only the Mermaid block).
65
+ or `off` (no image; the ` ```mermaid ` block stays in the document).
63
66
 
64
67
  - **Mode comes only from `.featuredoc.yml`.** No file or no `diagrams_png` key → `embed`.
65
68
  Never infer the mode from existing files (an `img/` folder, how an earlier doc did it).
@@ -67,22 +70,29 @@ or `off` (no image, only the Mermaid block).
67
70
  `![...](data:image/png;base64,`. A relative path such as `](img/` is an error: embed it and
68
71
  delete the loose PNG.
69
72
  - Embed the PNG with a script (read file → base64 → replace the line), never by hand.
73
+ - **No Mermaid source in the document** once its PNG is there: no ` ```mermaid ` block
74
+ and no `<details>` with the source. The source lives in
75
+ `<output_dir>/diagrams/<slug>-<diagram>.mmd`.
70
76
 
71
- 1. Write each ` ```mermaid ` block to a temporary `.mmd` file outside the repo and run:
72
- `npx -y @mermaid-js/mermaid-cli -i <tmp>.mmd -o <tmp>.png -s 2 -b white -p <puppeteer.json>`
77
+ 1. Write each diagram to `<output_dir>/diagrams/<slug>-<diagram>.mmd` (`<diagram>`:
78
+ `c4-context`, `c4-container`, `class`, `sequence-current`, `sequence-new`) and run:
79
+ `npx -y @mermaid-js/mermaid-cli -i <that>.mmd -o <tmp>.png -s 2 -b white -t default -p <puppeteer.json>`
80
+ (`-t default`: Mermaid's normal theme; newer versions otherwise colour every shape).
73
81
  2. Set `PUPPETEER_SKIP_DOWNLOAD=true`, and let `puppeteer.json` point at an installed
74
82
  browser, so no Chromium is downloaded:
75
83
  `{"executablePath": "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}`
76
84
  (or Chrome). Ask the user once before the first npm download: package
77
85
  `@mermaid-js/mermaid-cli`, from the npm registry, about 50 MB with dependencies.
78
- 3. Directly below the block, after one empty line:
86
+ 3. In the document, in place of the block, two lines:
87
+ `<!-- kingmadoc:diagram diagrams/<slug>-<diagram>.mmd -->` and
79
88
  `![<diagram title>](data:image/png;base64,<base64 of the PNG>)`.
80
- No separate image files go into the repo.
81
- 4. The ` ```mermaid ` block always stays (GitHub shows no data URIs; the block is the
82
- source for the next render). On a new render, replace only the image line below
83
- the same block.
89
+ No separate image files go into the repo (`file` mode aside).
90
+ 4. To change a diagram, edit its `.mmd` file and render again; replace only the image
91
+ line below its comment. (GitHub shows no data-URI images; there the `.mmd` file is
92
+ the readable version.)
84
93
  5. Look at every PNG after rendering (Read): not empty, no labels cut off at the edge,
85
94
  no unexpected extra participants. If needed, fix the Mermaid (split or shorten a
86
95
  label) and render again.
87
- 6. If rendering fails, write `_TODO: PNG not generated: <reason>._` below the block
88
- (in `language`) and carry on; the document stays valid.
96
+ 6. If rendering fails, keep the ` ```mermaid ` block in the document, write
97
+ `_TODO: PNG not generated: <reason>._` below it (in `language`) and carry on; the
98
+ document stays valid.
@@ -126,7 +126,7 @@ The classes this feature touches and their direct collaborators.
126
126
 
127
127
  Omit "**Answered while planning**" when nothing was answered.
128
128
 
129
- - Every diagram is a ` ```mermaid ` block with its PNG below it (see
129
+ - Every diagram is its PNG, with the Mermaid source in a `.mmd` file (see
130
130
  [Rendering](diagram-rules.md#rendering)); a disabled diagram keeps its section with
131
131
  _Disabled in `.featuredoc.yml` (`diagrams`)._
132
132
  - **Generated** is the real system time (`date -Iminutes`), never a guess.
File without changes
File without changes