anatomize 2.0.0__tar.gz → 2.0.1__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 (221) hide show
  1. {anatomize-2.0.0 → anatomize-2.0.1}/CHANGELOG.md +20 -0
  2. {anatomize-2.0.0 → anatomize-2.0.1}/CITATION.cff +1 -1
  3. {anatomize-2.0.0 → anatomize-2.0.1}/CONTRIBUTING.md +1 -1
  4. {anatomize-2.0.0 → anatomize-2.0.1}/PKG-INFO +15 -13
  5. {anatomize-2.0.0 → anatomize-2.0.1}/README.md +14 -12
  6. {anatomize-2.0.0 → anatomize-2.0.1}/SECURITY.md +1 -1
  7. {anatomize-2.0.0 → anatomize-2.0.1}/docs/ARTIFACTS.md +3 -3
  8. {anatomize-2.0.0 → anatomize-2.0.1}/docs/AUTOMATION.md +3 -2
  9. {anatomize-2.0.0 → anatomize-2.0.1}/docs/CONCEPTS.md +27 -6
  10. {anatomize-2.0.0 → anatomize-2.0.1}/docs/PROVIDERS.md +39 -20
  11. {anatomize-2.0.0 → anatomize-2.0.1}/docs/QUICKSTART.md +8 -7
  12. {anatomize-2.0.0 → anatomize-2.0.1}/docs/REFERENCE.md +3 -3
  13. {anatomize-2.0.0 → anatomize-2.0.1}/docs/TROUBLESHOOTING.md +13 -11
  14. {anatomize-2.0.0 → anatomize-2.0.1}/docs/WORKFLOWS.md +9 -7
  15. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/capabilities.md +1 -1
  16. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/python-api.md +5 -5
  17. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/dossier.schema.json +1 -1
  18. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/dossier_exchange.schema.json +1 -1
  19. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/evidence.schema.json +1 -1
  20. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas.md +1 -1
  21. {anatomize-2.0.0 → anatomize-2.0.1}/docs/index.md +7 -6
  22. {anatomize-2.0.0 → anatomize-2.0.1}/mkdocs.yml +2 -2
  23. {anatomize-2.0.0 → anatomize-2.0.1}/scripts/evaluate_agentic_workflows.py +1 -1
  24. {anatomize-2.0.0 → anatomize-2.0.1}/scripts/generate_documentation.py +1 -1
  25. {anatomize-2.0.0 → anatomize-2.0.1}/scripts/verify_documentation.py +1 -0
  26. {anatomize-2.0.0 → anatomize-2.0.1}/scripts/verify_documentation_site.py +1 -1
  27. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/diagnostics/io.py +2 -2
  28. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/diagnostics/normalize.py +7 -7
  29. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/__init__.py +1 -1
  30. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/engine.py +21 -15
  31. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/models.py +1 -1
  32. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/evidence/models.py +1 -1
  33. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/repository.py +4 -4
  34. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/overlays.py +1 -1
  35. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/similarity.py +9 -2
  36. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/normalization.py +1 -1
  37. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/application.py +3 -3
  38. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/cli.py +4 -4
  39. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/imports.py +4 -5
  40. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/render.py +91 -40
  41. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/sessions/store.py +7 -2
  42. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/version.py +1 -1
  43. {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_documentation_examples.py +2 -0
  44. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/dossier-known-truth.json +5 -5
  45. {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_mixed_research_lifecycle.py +6 -6
  46. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_identity_reconciliation.py +6 -2
  47. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_lifecycle_similarity.py +11 -10
  48. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_review_application.py +3 -0
  49. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_sarif_diagnostics.py +2 -2
  50. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_temporal_models.py +1 -1
  51. {anatomize-2.0.0 → anatomize-2.0.1}/.github/workflows/ci.yml +0 -0
  52. {anatomize-2.0.0 → anatomize-2.0.1}/.github/workflows/docs.yml +0 -0
  53. {anatomize-2.0.0 → anatomize-2.0.1}/.github/workflows/publish-pypi.yml +0 -0
  54. {anatomize-2.0.0 → anatomize-2.0.1}/.github/workflows/publish-testpypi.yml +0 -0
  55. {anatomize-2.0.0 → anatomize-2.0.1}/.gitignore +0 -0
  56. {anatomize-2.0.0 → anatomize-2.0.1}/LICENSE +0 -0
  57. {anatomize-2.0.0 → anatomize-2.0.1}/SKILL.md +0 -0
  58. {anatomize-2.0.0 → anatomize-2.0.1}/agents/openai.yaml +0 -0
  59. {anatomize-2.0.0 → anatomize-2.0.1}/docs/MAINTAINERS.md +0 -0
  60. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/artifact_check.schema.json +0 -0
  61. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/change_dossier.schema.json +0 -0
  62. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/closure_report.schema.json +0 -0
  63. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/consolidation_dossier.schema.json +0 -0
  64. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/decision_overlay.schema.json +0 -0
  65. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/implementation_intent.schema.json +0 -0
  66. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/overlay_evaluation.schema.json +0 -0
  67. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/session.schema.json +0 -0
  68. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/similarity.schema.json +0 -0
  69. {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/state_manifest.schema.json +0 -0
  70. {anatomize-2.0.0 → anatomize-2.0.1}/docs/stylesheets/extra.css +0 -0
  71. {anatomize-2.0.0 → anatomize-2.0.1}/examples/decision_overlay_consumer.py +0 -0
  72. {anatomize-2.0.0 → anatomize-2.0.1}/pyproject.toml +0 -0
  73. {anatomize-2.0.0 → anatomize-2.0.1}/scripts/_verification.py +0 -0
  74. {anatomize-2.0.0 → anatomize-2.0.1}/scripts/benchmark_dossiers.py +0 -0
  75. {anatomize-2.0.0 → anatomize-2.0.1}/scripts/verify_consumer_install.py +0 -0
  76. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/__init__.py +0 -0
  77. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/_artifacts.py +0 -0
  78. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/_errors.py +0 -0
  79. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/_paths.py +0 -0
  80. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/_python_imports.py +0 -0
  81. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/cli.py +0 -0
  82. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/diagnostics/__init__.py +0 -0
  83. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/diagnostics/models.py +0 -0
  84. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/context.py +0 -0
  85. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/io.py +0 -0
  86. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/slicing.py +0 -0
  87. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/evidence/__init__.py +0 -0
  88. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/evidence/io.py +0 -0
  89. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/evidence/merge.py +0 -0
  90. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/identity/__init__.py +0 -0
  91. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/identity/coordinates.py +0 -0
  92. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/identity/keys.py +0 -0
  93. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/identity/reconcile.py +0 -0
  94. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/__init__.py +0 -0
  95. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/git.py +0 -0
  96. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/intelligence.py +0 -0
  97. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/models.py +0 -0
  98. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/__init__.py +0 -0
  99. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/closure.py +0 -0
  100. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/testing.py +0 -0
  101. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/mcp_transport.py +0 -0
  102. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/__init__.py +0 -0
  103. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/baseline.py +0 -0
  104. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/conformance.py +0 -0
  105. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/index_projection.py +0 -0
  106. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/io.py +0 -0
  107. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/models.py +0 -0
  108. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/py.typed +0 -0
  109. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/__init__.py +0 -0
  110. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/graphs.py +0 -0
  111. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/notebooks.py +0 -0
  112. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/provenance.py +0 -0
  113. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/r.py +0 -0
  114. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/workflows.py +0 -0
  115. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/__init__.py +0 -0
  116. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/io.py +0 -0
  117. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/models.py +0 -0
  118. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/semantic/__init__.py +0 -0
  119. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/semantic/io.py +0 -0
  120. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/semantic/models.py +0 -0
  121. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/semantic/normalize.py +0 -0
  122. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/sessions/__init__.py +0 -0
  123. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/sessions/models.py +0 -0
  124. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/temporal/__init__.py +0 -0
  125. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/temporal/compare.py +0 -0
  126. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/temporal/io.py +0 -0
  127. {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/temporal/models.py +0 -0
  128. {anatomize-2.0.0 → anatomize-2.0.1}/tests/README.md +0 -0
  129. {anatomize-2.0.0 → anatomize-2.0.1}/tests/__init__.py +0 -0
  130. {anatomize-2.0.0 → anatomize-2.0.1}/tests/_git.py +0 -0
  131. {anatomize-2.0.0 → anatomize-2.0.1}/tests/conftest.py +0 -0
  132. {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_decision_overlay_consumer.py +0 -0
  133. {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_documentation_site.py +0 -0
  134. {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_mcp_cli.py +0 -0
  135. {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_mcp_packaging.py +0 -0
  136. {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_review_cli.py +0 -0
  137. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/agentic_workflow/README.md +0 -0
  138. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/agentic_workflow/src/left.py +0 -0
  139. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/agentic_workflow/src/right.py +0 -0
  140. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/agentic_workflow/tests/left_check.py +0 -0
  141. /anatomize-2.0.0/tests/fixtures/diagnostics/specialist-tools.sarif → /anatomize-2.0.1/tests/fixtures/diagnostics/analysis-results.sarif +0 -0
  142. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/dossier-future-v2.json +0 -0
  143. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/dossier-legacy-v0.json +0 -0
  144. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/request-future-v2.json +0 -0
  145. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/request-legacy-v0.json +0 -0
  146. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/additive-v1.1-minimal.json +0 -0
  147. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/corrupt-v1.json +0 -0
  148. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/current-v1-minimal.json +0 -0
  149. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/incompatible-v2.json +0 -0
  150. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/incomplete-v1.json +0 -0
  151. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/identity/coordinate-corpus.json +0 -0
  152. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/identity/identity-corpus.json +0 -0
  153. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/indexes/current-v2.json +0 -0
  154. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/indexes/future-v99.json +0 -0
  155. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/indexes/legacy-v1-complete.json +0 -0
  156. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/indexes/legacy-v1-incomplete.json +0 -0
  157. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/excluded/skip.py +0 -0
  158. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/ns_pkg/sub/mod.py +0 -0
  159. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/pkg/__init__.py +0 -0
  160. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/pkg/mod.py +0 -0
  161. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/top_level.py +0 -0
  162. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/DESCRIPTION +0 -0
  163. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/Dockerfile +0 -0
  164. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/NAMESPACE +0 -0
  165. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/R/estimate.R +0 -0
  166. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/README.md +0 -0
  167. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/analysis/run_analysis.R +0 -0
  168. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/analysis.ipynb +0 -0
  169. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/analysis.qmd +0 -0
  170. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/notebook-execution.json +0 -0
  171. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/pytest-junit.xml +0 -0
  172. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/r-lsp.json +0 -0
  173. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/sbom.cdx.json +0 -0
  174. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/testthat-junit.xml +0 -0
  175. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/data/patients.metadata.json +0 -0
  176. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/data/public.csv +0 -0
  177. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/data/vendor-archive.metadata.json +0 -0
  178. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/derived/cohort.metadata.json +0 -0
  179. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/derived/effect.metadata.json +0 -0
  180. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/environment.yml +0 -0
  181. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/pyproject.toml +0 -0
  182. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/renv.lock +0 -0
  183. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/reports/result.html +0 -0
  184. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/reports/stale.metadata.json +0 -0
  185. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/ro-crate-metadata.json +0 -0
  186. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/scripts/preprocess.py +0 -0
  187. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/src/trialtools/__init__.py +0 -0
  188. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/src/trialtools/legacy.py +0 -0
  189. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/src/trialtools/normalise.py +0 -0
  190. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/tests/normalise_checks.py +0 -0
  191. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/tests/testthat/test-estimate.R +0 -0
  192. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/workflow/snakemake-boundaries.json +0 -0
  193. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/workflow/snakemake-summary.json +0 -0
  194. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/workflow/targets-manifest.csv +0 -0
  195. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/workflow/targets-metadata.csv +0 -0
  196. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/sample_package/__init__.py +0 -0
  197. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/sample_package/models.py +0 -0
  198. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/semantic/lsp-semantic-capture.json +0 -0
  199. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/sessions/session-manifest-golden.json +0 -0
  200. {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/temporal/two-state-corpus.json +0 -0
  201. {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/__init__.py +0 -0
  202. {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_dossier_evaluation.py +0 -0
  203. {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_lifecycle_assurance.py +0 -0
  204. {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_lifecycle_closure_workflow.py +0 -0
  205. {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_mcp_client.py +0 -0
  206. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/__init__.py +0 -0
  207. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_dossier_engine.py +0 -0
  208. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_evidence_composition.py +0 -0
  209. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_evidence_models.py +0 -0
  210. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_kernel_assurance.py +0 -0
  211. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_lifecycle_closure.py +0 -0
  212. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_lifecycle_overlays.py +0 -0
  213. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_lifecycle_testing.py +0 -0
  214. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_mcp_transport.py +0 -0
  215. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_provider_contract.py +0 -0
  216. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_public_contract.py +0 -0
  217. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_research_notebooks.py +0 -0
  218. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_research_r.py +0 -0
  219. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_research_workflows.py +0 -0
  220. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_semantic_artifacts.py +0 -0
  221. {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_sessions.py +0 -0
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## 2.0.1 - 2026-08-24
6
+
7
+ ### Changed
8
+
9
+ - Explain the review model in reader language before introducing machine terms,
10
+ and describe imported evidence as saved results from familiar tools.
11
+ - Make rendered dossiers and CLI help use task language while retaining stable
12
+ JSON field names for automation.
13
+
14
+ ### Fixed
15
+
16
+ - Make session-store lock typing portable across Windows and POSIX type
17
+ environments.
18
+ - Interpret imported POSIX and Windows absolute paths consistently on every
19
+ operating system, and read Unicode test fixtures explicitly as UTF-8.
20
+ - Force the documentation verifier to install the built wheel when its isolated
21
+ environment can see an editable checkout.
22
+ - Use an available `setup-uv` action and deploy the documentation site through
23
+ an enabled GitHub Pages environment.
24
+
5
25
  ## 2.0.0 - 2026-08-24
6
26
 
7
27
  ### Changed
@@ -5,7 +5,7 @@ title: "Anatomize: evidence-first repository review for agentic development"
5
5
  authors:
6
6
  - family-names: Segal
7
7
  given-names: Bradley Max
8
- version: 2.0.0
8
+ version: 2.0.1
9
9
  date-released: 2026-08-24
10
10
  license: MIT
11
11
  repository-code: "https://github.com/BradSegal/anatomize"
@@ -21,7 +21,7 @@ package metadata and do not require uv.
21
21
  presentation in their owning packages; do not make a lower-level package
22
22
  call the review application.
23
23
  - Reuse shared path, identity, serialization, import, and error contracts.
24
- - Integrate specialist tools through an existing interchange before adding a
24
+ - Integrate external analysis tools through an existing interchange before adding a
25
25
  vendor-specific adapter. Never add implicit tool execution or discovery.
26
26
  - Preserve provider provenance, conflicts, completeness, omissions, and
27
27
  limitations. Candidates must never encode an edit or deletion verdict.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: anatomize
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: Evidence-first repository review and lifecycle context for agents and humans
5
5
  Project-URL: Homepage, https://bradsegal.github.io/anatomize/
6
6
  Project-URL: Documentation, https://bradsegal.github.io/anatomize/
@@ -140,10 +140,11 @@ anatomize review change \
140
140
  Closure requires a fresh observation for every declared obligation. Anatomize
141
141
  accounts for the evidence but never fabricates a test, audit, or human approval.
142
142
 
143
- ## Bring specialist evidence
143
+ ## Import results from tools you already use
144
144
 
145
- `review start` always builds the deterministic baseline itself. It can also
146
- import data artifacts that another tool has already produced:
145
+ `review start` always maps the repository itself. It can also include saved
146
+ results from tools you ran separately—for example, linter findings, test
147
+ results, coverage, or a dependency inventory:
147
148
 
148
149
  ```bash
149
150
  anatomize review start . \
@@ -156,12 +157,12 @@ anatomize review start . \
156
157
  --output .anatomy/review/session.json
157
158
  ```
158
159
 
159
- Supported import kinds are `sarif`, `lsp`, `junit`, `coverage`, `mutation`,
160
+ Supported file kinds are `sarif`, `lsp`, `junit`, `coverage`, `mutation`,
160
161
  `jscpd`, `snakemake`, `targets`, `renv`, `cyclonedx`, and `ro-crate`. Use
161
162
  `KIND@VERSION=PATH` when a native format needs an explicit version. A caller can
162
- also pass an already-normalised `ProviderEnvelope` with `--provider`. Anatomize
163
- does not discover plugins, execute providers, run repository code, or use the
164
- network during review.
163
+ also pass a `ProviderEnvelope`: Anatomize's advanced, normalised format for
164
+ results from another tool. Anatomize does not run any of these tools, run
165
+ repository code, discover plugins, or use the network during review.
165
166
 
166
167
  ## Integrate an agent
167
168
 
@@ -190,26 +191,27 @@ as the CLI. It adds no second analysis path.
190
191
  - Artifacts bind repository identity, exact source state, producer evidence,
191
192
  configuration, and limitations.
192
193
  - Independent evidence is merged without last-writer-wins; explicit
193
- cross-provider contradictions become conflict records.
194
+ contradictions between evidence sources become conflict records.
194
195
  - Sessions omit source text by default. `--include-source` is exact and
195
196
  opt-in.
196
197
  - Outputs are deterministic and human-readable; Markdown and plain text do not
197
198
  require ANSI or colour.
198
199
  - The library does not execute code, prove semantic equivalence, approve a
199
- release, scan for secrets, or replace specialist compilers and test tools.
200
+ release, scan for secrets, or replace compilers, test runners, linters, or
201
+ security scanners.
200
202
 
201
203
  ## Documentation
202
204
 
203
205
  - [Documentation site](https://bradsegal.github.io/anatomize/): task-led paths
204
- for reviewers, agent integrators, and provider authors.
206
+ for reviewers, agent integrators, and authors of external-tool integrations.
205
207
  - [Quickstart](https://bradsegal.github.io/anatomize/QUICKSTART/): the complete
206
208
  design-to-closure workflow.
207
209
  - [Lifecycle workflows](https://bradsegal.github.io/anatomize/WORKFLOWS/):
208
210
  design, audit, consolidation, implementation, and human hand-off.
209
211
  - [Interpret review results](https://bradsegal.github.io/anatomize/CONCEPTS/): status, evidence groups,
210
212
  omissions, conflicts, consolidation decisions, and closure.
211
- - [Provider artifacts](https://bradsegal.github.io/anatomize/PROVIDERS/): importing and authoring bounded
212
- evidence.
213
+ - [Import tool results](https://bradsegal.github.io/anatomize/PROVIDERS/): add
214
+ linter, test, coverage, dependency, and research-workflow output.
213
215
  - [Public reference](https://bradsegal.github.io/anatomize/REFERENCE/): CLI, Python namespaces, schemas, and
214
216
  supported formats.
215
217
  - [Troubleshooting](https://bradsegal.github.io/anatomize/TROUBLESHOOTING/): recovery and visible failure
@@ -98,10 +98,11 @@ anatomize review change \
98
98
  Closure requires a fresh observation for every declared obligation. Anatomize
99
99
  accounts for the evidence but never fabricates a test, audit, or human approval.
100
100
 
101
- ## Bring specialist evidence
101
+ ## Import results from tools you already use
102
102
 
103
- `review start` always builds the deterministic baseline itself. It can also
104
- import data artifacts that another tool has already produced:
103
+ `review start` always maps the repository itself. It can also include saved
104
+ results from tools you ran separately—for example, linter findings, test
105
+ results, coverage, or a dependency inventory:
105
106
 
106
107
  ```bash
107
108
  anatomize review start . \
@@ -114,12 +115,12 @@ anatomize review start . \
114
115
  --output .anatomy/review/session.json
115
116
  ```
116
117
 
117
- Supported import kinds are `sarif`, `lsp`, `junit`, `coverage`, `mutation`,
118
+ Supported file kinds are `sarif`, `lsp`, `junit`, `coverage`, `mutation`,
118
119
  `jscpd`, `snakemake`, `targets`, `renv`, `cyclonedx`, and `ro-crate`. Use
119
120
  `KIND@VERSION=PATH` when a native format needs an explicit version. A caller can
120
- also pass an already-normalised `ProviderEnvelope` with `--provider`. Anatomize
121
- does not discover plugins, execute providers, run repository code, or use the
122
- network during review.
121
+ also pass a `ProviderEnvelope`: Anatomize's advanced, normalised format for
122
+ results from another tool. Anatomize does not run any of these tools, run
123
+ repository code, discover plugins, or use the network during review.
123
124
 
124
125
  ## Integrate an agent
125
126
 
@@ -148,26 +149,27 @@ as the CLI. It adds no second analysis path.
148
149
  - Artifacts bind repository identity, exact source state, producer evidence,
149
150
  configuration, and limitations.
150
151
  - Independent evidence is merged without last-writer-wins; explicit
151
- cross-provider contradictions become conflict records.
152
+ contradictions between evidence sources become conflict records.
152
153
  - Sessions omit source text by default. `--include-source` is exact and
153
154
  opt-in.
154
155
  - Outputs are deterministic and human-readable; Markdown and plain text do not
155
156
  require ANSI or colour.
156
157
  - The library does not execute code, prove semantic equivalence, approve a
157
- release, scan for secrets, or replace specialist compilers and test tools.
158
+ release, scan for secrets, or replace compilers, test runners, linters, or
159
+ security scanners.
158
160
 
159
161
  ## Documentation
160
162
 
161
163
  - [Documentation site](https://bradsegal.github.io/anatomize/): task-led paths
162
- for reviewers, agent integrators, and provider authors.
164
+ for reviewers, agent integrators, and authors of external-tool integrations.
163
165
  - [Quickstart](https://bradsegal.github.io/anatomize/QUICKSTART/): the complete
164
166
  design-to-closure workflow.
165
167
  - [Lifecycle workflows](https://bradsegal.github.io/anatomize/WORKFLOWS/):
166
168
  design, audit, consolidation, implementation, and human hand-off.
167
169
  - [Interpret review results](https://bradsegal.github.io/anatomize/CONCEPTS/): status, evidence groups,
168
170
  omissions, conflicts, consolidation decisions, and closure.
169
- - [Provider artifacts](https://bradsegal.github.io/anatomize/PROVIDERS/): importing and authoring bounded
170
- evidence.
171
+ - [Import tool results](https://bradsegal.github.io/anatomize/PROVIDERS/): add
172
+ linter, test, coverage, dependency, and research-workflow output.
171
173
  - [Public reference](https://bradsegal.github.io/anatomize/REFERENCE/): CLI, Python namespaces, schemas, and
172
174
  supported formats.
173
175
  - [Troubleshooting](https://bradsegal.github.io/anatomize/TROUBLESHOOTING/): recovery and visible failure
@@ -44,7 +44,7 @@ structure; they do not make embedded content safe to execute or obey.
44
44
  Anatomize is not a secret scanner, malware detector, vulnerability scanner,
45
45
  dependency resolver, package-signature verifier, authorization service,
46
46
  multi-user server, test runner, scientific-validity assessor, or release
47
- approval. Use the appropriate specialist tool and import its bounded result
47
+ approval. Use the appropriate test, analysis, or security tool and import its saved result
48
48
  when it contributes to review.
49
49
 
50
50
  Before publishing an Anatomize artifact, inspect explicitly included source and
@@ -10,8 +10,8 @@ validated object.
10
10
  | Review session | `review start` | Reuse one exact evidence state across questions | JSON |
11
11
  | Dossier exchange | `review dossier` / `expand` | Answer one bounded orientation, design, audit, localisation, implementation, change-review, or closure question | Markdown plus JSON when traceability matters |
12
12
  | Similarity artifact | `review similarity` | Discover conservative implementation, test, and documentation candidates | JSON |
13
- | Consolidation dossier | `review consolidate` | Adjudicate one candidate against differences and consequences | Markdown |
14
- | Decision overlay | `review overlay-create` | Preserve a consumer-owned disposition, owner, rationale, and review conditions | JSON or Markdown |
13
+ | Consolidation dossier | `review consolidate` | Decide whether one possible duplicate should be merged, kept, or investigated further | Markdown |
14
+ | Decision record (overlay) | `review overlay-create` | Preserve your disposition, owner, rationale, and review conditions separately from observed evidence | JSON or Markdown |
15
15
  | Overlay evaluation | `review overlay-check` | Determine whether relevant evidence changed after a decision | Markdown |
16
16
  | Implementation intent | `review intent` | Bind explicit obligations to the exact before-state | JSON |
17
17
  | Change dossier | `review change` | Compare canonical evidence across independent states | Markdown plus JSON |
@@ -24,7 +24,7 @@ Read in this order:
24
24
 
25
25
  1. **Status** — whether the evidence is complete, partial, or blocked.
26
26
  2. **Question and targets** — the exact decision boundary the dossier answers.
27
- 3. **Proof-role groups** — why each fact matters, not merely where it was found.
27
+ 3. **Evidence groups** — why each fact matters, not merely where it was found.
28
28
  4. **Conflicts** — incompatible source-bound claims preserved without ranking.
29
29
  5. **Omissions and limitations** — absent evidence and what the methods cannot
30
30
  establish.
@@ -87,8 +87,9 @@ source inclusion.
87
87
 
88
88
  Start with orientation, then ask one targeted question. Prefer a stable file,
89
89
  symbol, test, documentation section, workflow, data item, or diagnostic over a
90
- repository-wide implementation request. Dossiers select required proof roles
91
- before optional context and preserve every reason an item was selected.
90
+ repository-wide implementation request. Dossiers select the evidence purposes
91
+ required by the task before optional context and preserve every reason an item
92
+ was selected. The JSON field for an evidence purpose is `proof_role`.
92
93
 
93
94
  If a result is partial, choose an advertised action and preserve its opaque
94
95
  `action_id`. Actions support bounded budget increases, relationship traversal,
@@ -4,12 +4,32 @@ Anatomize outputs are designed to be read in a fixed order. Start with whether
4
4
  the question was answered, then inspect the selected evidence and anything that
5
5
  could change the decision.
6
6
 
7
+ ## A plain-language model
8
+
9
+ You do not need to learn Anatomize's internal data model to use it. Seven terms
10
+ appear in commands and output:
11
+
12
+ | Term | Meaning |
13
+ | --- | --- |
14
+ | **Session** | A saved map of one exact checkout. Create it once with `review start`. |
15
+ | **Dossier** | A short, task-focused selection from that map. It tells you what to inspect for one question. |
16
+ | **Evidence source** | Anatomize itself or a tool whose saved results were imported. JSON calls this a `provider`. |
17
+ | **Evidence group** | Items that serve the same purpose, such as definitions, callers, tests, or documentation. JSON calls this purpose a `proof_role`. |
18
+ | **Decision record** | Your merge, keep, or postpone decision with its owner and rationale. The command name is `overlay-create`. |
19
+ | **Implementation intent** | The requirements you record before editing. |
20
+ | **Closure report** | The after-change check showing which recorded requirements have current supporting evidence. |
21
+
22
+ An **artifact** is simply a saved input or output file, usually JSON, Markdown,
23
+ or a tool's native report. A **source state** identifies the exact checkout the
24
+ file describes. These names matter because a passing test report from yesterday
25
+ must not be used as evidence for code changed today.
26
+
7
27
  ## Start with the status
8
28
 
9
29
  Every dossier reports one of three states:
10
30
 
11
- - `complete`: all required proof roles were available within the requested
12
- boundary;
31
+ - `complete`: all required evidence categories were available within the
32
+ requested scope;
13
33
  - `partial`: the result is useful, but a budget, scope, or provider left a
14
34
  material omission; or
15
35
  - `blocked`: the current session cannot support a defensible answer.
@@ -42,7 +62,7 @@ diagnostic rather than increasing every budget.
42
62
 
43
63
  ## Read the evidence groups
44
64
 
45
- Proof-role groups explain why an item was selected. Definitions and contracts
65
+ Evidence groups explain why an item was selected. Definitions and contracts
46
66
  describe the target; consumers and relationships show what may be affected;
47
67
  tests, documentation, diagnostics, and runtime observations show where the
48
68
  change can be checked.
@@ -93,9 +113,10 @@ evidence and no declared unknown remains. Otherwise the report identifies an
93
113
 
94
114
  ## Choose the right output
95
115
 
96
- Use canonical JSON between tools and releases. Use Markdown for code review,
97
- design records, and other human hand-offs. Use plain text for terminals and
98
- logs, but do not parse it as an interchange format.
116
+ Use canonical JSON—the stable, versioned JSON form—between tools and releases.
117
+ Use Markdown for code review, design records, and other human hand-offs. Use
118
+ plain text for terminals and logs, but do not parse it as an interchange
119
+ format.
99
120
 
100
121
  You are ready to act when you can state the exact question, the evidence that
101
122
  supports the decision, the evidence that is absent or conflicting, and the
@@ -1,15 +1,24 @@
1
- # Provider artifacts and specialist integration
1
+ # Import results from other tools
2
2
 
3
- A specialist result is useful to a review only when the consumer can identify
4
- what produced it, which repository state it describes, what it covered, and
5
- what it cannot establish. Anatomize therefore integrates tools through
6
- captured data rather than executing installed plugins. Acquisition remains
7
- under the caller's authority, and the resulting session can be reproduced in a
8
- different process or release.
3
+ Anatomize maps source files, relationships, tests, documentation, and project
4
+ configuration by itself. It does not run your linter, test runner, coverage
5
+ tool, security scanner, dependency scanner, or research workflow. If you have
6
+ already run one of those tools, you can add its saved result to the review.
9
7
 
10
- ## Which import route should I use?
8
+ This lets a dossier connect a finding or test result to the relevant code while
9
+ keeping important limits visible. For example, an imported JUnit file describes
10
+ only the tests selected in that run, and an old coverage file must not be used
11
+ as evidence for a newer checkout.
11
12
 
12
- The normal route imports a supported native artifact:
13
+ Anatomize calls each source of imported evidence a **provider**. Most users do
14
+ not need to construct one: use `--artifact` with a supported result file. The
15
+ `ProviderEnvelope` described later on this page is for authors building a new
16
+ integration.
17
+
18
+ ## Import a supported result file
19
+
20
+ Pass each file as `KIND=PATH`. Add `@VERSION` only when the format requires an
21
+ explicit version:
13
22
 
14
23
  ```bash
15
24
  anatomize review start . \
@@ -21,7 +30,14 @@ anatomize review start . \
21
30
  --format json --output session.json
22
31
  ```
23
32
 
24
- The advanced route imports an already-normalised envelope:
33
+ Anatomize checks that each result belongs to the same repository state before
34
+ combining its evidence with the repository map.
35
+
36
+ ## Use the advanced integration format
37
+
38
+ If you are writing an adapter for a result format that Anatomize does not
39
+ support directly, normalise it to a `ProviderEnvelope` and pass that file with
40
+ `--provider`:
25
41
 
26
42
  ```bash
27
43
  anatomize review start . \
@@ -29,10 +45,12 @@ anatomize review start . \
29
45
  --format json --output session.json
30
46
  ```
31
47
 
32
- Both routes are explicit. Every artifact is bound to the baseline repository
33
- and state before its evidence is merged.
48
+ This route is intended for integration authors. It carries the tool name and
49
+ version, exact checkout, configuration, scope, completeness, limitations, and
50
+ normalised evidence in one validated file. Anatomize still does not execute the
51
+ external tool.
34
52
 
35
- ## Which artifact formats are maintained?
53
+ ## Supported result formats
36
54
 
37
55
  | Kind | Input | Evidence contributed |
38
56
  | --- | --- | --- |
@@ -57,9 +75,10 @@ A passing JUnit suite does not prove unselected tests passed. Coverage does not
57
75
  prove correctness. SARIF severity remains the producer's severity. A suggested
58
76
  fix remains untrusted input.
59
77
 
60
- ## What must every provider envelope establish?
78
+ ## What the advanced provider format records
61
79
 
62
- The public `anatomize.providers` namespace supplies `ProviderEnvelope`,
80
+ The rest of this page is API-level guidance for integration authors. The public
81
+ `anatomize.providers` namespace supplies `ProviderEnvelope`,
63
82
  `ProviderBatchBuilder`, `ProviderScope`, `ProviderToolIdentity`,
64
83
  `build_provider_envelope`, parsing/writing helpers, evidence normalisation, and
65
84
  `run_provider_conformance`.
@@ -83,7 +102,7 @@ state is not approximately current evidence. Validation rejects the state
83
102
  mismatch so that a later closure report cannot silently use pre-change coverage
84
103
  as proof of the changed implementation.
85
104
 
86
- ## How should a provider be authored?
105
+ ## Build a new integration
87
106
 
88
107
  A provider producer should:
89
108
 
@@ -107,7 +126,7 @@ contract are retained. When one explicitly conflicts and another supports or
107
126
  qualifies the target, evidence composition creates an unresolved
108
127
  `ConflictRecord`; it does not pick a winner.
109
128
 
110
- ## When does a new adapter belong?
129
+ ## Decide whether a new adapter belongs
111
130
 
112
131
  Add a native adapter only when it contributes evidence that changes a named
113
132
  design, audit, localisation, consolidation, or closure decision. Reuse SARIF,
@@ -122,6 +141,6 @@ limitations. Anatomize intentionally has no provider execution broker or
122
141
  plugin discovery layer.
123
142
 
124
143
  Choose a native adapter when a maintained interchange already carries the
125
- needed evidence. Choose `ProviderEnvelope` when a specialist result needs a new
126
- normalisation layer. Add another native format only when neither route can
127
- represent evidence that materially changes a supported review decision.
144
+ needed evidence. Choose `ProviderEnvelope` when an external tool's result needs
145
+ a new normalisation layer. Add another native format only when neither route
146
+ can represent evidence that materially changes a supported review decision.
@@ -36,9 +36,9 @@ anatomize review dossier .anatomy/review/before.json \
36
36
  --output .anatomy/review/orientation.md
37
37
  ```
38
38
 
39
- Read the status and proof-role groups first. They identify public surfaces,
40
- ownership, topology, tests, documentation, workflows, configuration, data, and
41
- available specialist evidence without dumping the repository.
39
+ Read the status and evidence groups first. They identify public entry points,
40
+ ownership, dependencies, tests, documentation, workflows, configuration, data,
41
+ and any imported tool results without dumping the repository.
42
42
 
43
43
  ## 3. Localise the decision
44
44
 
@@ -90,7 +90,8 @@ anatomize review similarity .anatomy/review/before.json \
90
90
  --output .anatomy/review/similarity.json
91
91
  ```
92
92
 
93
- If a candidate exists, build its complete adjudication surface:
93
+ If a candidate exists, collect the evidence needed to decide whether it should
94
+ be merged:
94
95
 
95
96
  ```bash
96
97
  anatomize review consolidate \
@@ -103,7 +104,7 @@ anatomize review consolidate \
103
104
 
104
105
  Inspect the consolidation dossier before choosing a disposition. A helper that
105
106
  looks redundant may preserve different input handling or serve a distinct
106
- caller. Record the consumer-owned decision separately:
107
+ caller. Record your decision separately from the observed similarity:
107
108
 
108
109
  ```bash
109
110
  anatomize review overlay-create \
@@ -154,8 +155,8 @@ anatomize review intent \
154
155
  ```
155
156
 
156
157
  Now edit. Run the repository's native tests, linters, documentation checks,
157
- security tools, and research validations. Anatomize imports their artifacts; it
158
- does not execute or impersonate them.
158
+ security tools, and research validations. Anatomize can import their saved
159
+ results; it does not execute or impersonate them.
159
160
 
160
161
  ## 6. Capture and compare the after-state
161
162
 
@@ -27,8 +27,8 @@ source, budgets, and output paths are explicit arguments.
27
27
  | `review expand SESSION EXCHANGE ACTION` | Apply one source-bound advertised expansion without mutating the base exchange. |
28
28
  | `review similarity SESSION` | Project conservative implementation, test, and documentation candidates. |
29
29
  | `review change BEFORE AFTER` | Compare two exact states of one repository. |
30
- | `review consolidate EXCHANGE SIMILARITY CANDIDATE` | Gather the full adjudication surface for one candidate. |
31
- | `review overlay-create SESSION SIMILARITY CANDIDATE` | Record a portable consumer-owned disposition and rationale. |
30
+ | `review consolidate EXCHANGE SIMILARITY CANDIDATE` | Gather the evidence needed to decide whether one candidate should be merged. |
31
+ | `review overlay-create SESSION SIMILARITY CANDIDATE` | Record a portable decision, owner, and rationale without changing the evidence. |
32
32
  | `review overlay-check OVERLAY SESSION SIMILARITY CANDIDATE` | Evaluate decision currency against relevant current evidence. |
33
33
  | `review intent SESSION EXCHANGE OBLIGATIONS` | Bind explicit implementation obligations to the before-state. |
34
34
  | `review verify INTENT AFTER OBSERVATIONS` | Account for every obligation against fresh after-state evidence. |
@@ -100,7 +100,7 @@ Lower-level public ownership is:
100
100
  | `anatomize.index` | Deterministic baseline `RepositoryIndex` and `build_repository_index`. |
101
101
  | `anatomize.evidence` | Canonical entities, edges, contracts, observations, candidates, conflicts, completeness, omissions, aliases, lineage, merge, parse, and write. |
102
102
  | `anatomize.identity` | Portable identity keys, coordinate conversion, and cross-provider claim reconciliation. |
103
- | `anatomize.providers` | Data-only provider ABI, envelope construction, normalisation, conformance, and baseline projection. |
103
+ | `anatomize.providers` | Advanced contract for normalising saved results from another analysis tool. |
104
104
  | `anatomize.sessions` | Portable session manifests/bundles and recoverable immutable stores. |
105
105
  | `anatomize.dossiers` | Targets, profiles, roles, requests, budgets, deterministic selection, slicing, cursors, and expansion. |
106
106
  | `anatomize.temporal` | Exact state manifests, evidence-wide comparisons, deltas, validation, and exact lineage. |
@@ -13,9 +13,9 @@ Only exact schemas advertised by this release are accepted:
13
13
  anatomize review capabilities --format json
14
14
  ```
15
15
 
16
- There is no migration layer. Regenerate a session from source or reacquire the
17
- specialist artifact with the current producer. Do not edit `schema_version`,
18
- IDs, or digests.
16
+ There is no migration layer. Regenerate a session from source or rerun the tool
17
+ that created the rejected result file. Do not edit `schema_version`, IDs, or
18
+ digests.
19
19
 
20
20
  ## An artifact is stale
21
21
 
@@ -44,10 +44,11 @@ If no generation validates, remove or archive only that derived store and run
44
44
  `review start` again. The checkout and portable artifacts are authoritative;
45
45
  the store is disposable acceleration.
46
46
 
47
- ## A provider is unavailable
47
+ ## Results from another tool are unavailable
48
48
 
49
- The baseline requires no optional tool. Run a specialist tool separately under
50
- your own authority, capture a supported artifact, and import it explicitly:
49
+ Anatomize can still map the repository without optional tools. Run the linter,
50
+ test runner, coverage tool, scanner, or workflow tool separately, save its
51
+ result in a supported format, and import that file explicitly:
51
52
 
52
53
  ```bash
53
54
  anatomize review start . \
@@ -55,8 +56,9 @@ anatomize review start . \
55
56
  --format json --output session.json
56
57
  ```
57
58
 
58
- If the provider cannot run, retain an unavailable or partial status. Do not
59
- turn absence into a complete empty result.
59
+ If the tool cannot run, retain an unavailable or partial status. Do not turn
60
+ absence into a complete empty result. In JSON, the tool and its imported result
61
+ are represented as a `provider`.
60
62
 
61
63
  ## A native artifact is rejected
62
64
 
@@ -90,9 +92,9 @@ anatomize review expand session.json exchange.json ACTION_ID \
90
92
  --format json --output expanded.json
91
93
  ```
92
94
 
93
- If a proof role is genuinely unavailable, acquire that evidence or record that
94
- the decision cannot yet close. Raising every budget is not a substitute for a
95
- precise target.
95
+ If a required evidence category is genuinely unavailable, acquire that
96
+ evidence or record that the decision cannot yet close. Raising every budget is
97
+ not a substitute for a precise target.
96
98
 
97
99
  ## An expansion is rejected
98
100
 
@@ -42,8 +42,8 @@ anatomize review dossier review/before.json \
42
42
 
43
43
  Read the dossier status before its items:
44
44
 
45
- - `complete` means every required proof role was available within the declared
46
- boundary.
45
+ - `complete` means every required evidence category was available within the
46
+ requested scope.
47
47
  - `partial` means useful evidence exists but a budget, provider, or scope left
48
48
  material omissions.
49
49
  - `blocked` means the question cannot be answered defensibly from the current
@@ -67,7 +67,7 @@ anatomize review dossier review/before.json src/anatomize/review/application.py
67
67
 
68
68
  The result groups the target definition, inbound and outbound relationships,
69
69
  consumers, tests, documentation, contracts, diagnostics, conflicts, and gaps
70
- by proof role. This is the context to inspect before editing, not a source dump.
70
+ by purpose. This is the context to inspect before editing, not a source dump.
71
71
 
72
72
  ## Deduplicate and consolidate
73
73
 
@@ -88,9 +88,11 @@ The similarity artifact can contain implementation, test, and documentation
88
88
  candidates. If two path-normalisation helpers match, a consolidation dossier
89
89
  tests that resemblance against their behaviour, differences, consumers, tests,
90
90
  documentation, runtime evidence, contracts, history, conflicts, and unknowns.
91
- The consumer then records `merge`, `keep`, or `postpone` in a decision overlay
92
- with an owner and rationale. Imported jscpd regions can improve discovery, but
93
- the decision still depends on the complete adjudication surface.
91
+ The reviewer then records `merge`, `keep`, or `postpone` with an owner and
92
+ rationale. The JSON decision record is called an overlay because it adds
93
+ judgement without changing the observed evidence. Imported jscpd regions can
94
+ improve discovery, but the decision still depends on behaviour, callers,
95
+ tests, documentation, contracts, history, conflicts, and remaining unknowns.
94
96
 
95
97
  ## Implement against explicit obligations
96
98
 
@@ -138,7 +140,7 @@ Keep canonical JSON for exact machine traceability. Export Markdown for the
138
140
  smallest set that materially helps a code reviewer:
139
141
 
140
142
  1. the targeted implementation or consolidation dossier;
141
- 2. the decision overlay and rationale;
143
+ 2. the decision record (overlay) and rationale;
142
144
  3. the evidence-wide change dossier;
143
145
  4. relevant native test or analysis evidence; and
144
146
  5. the closure report.
@@ -3,7 +3,7 @@
3
3
  <!-- Generated by scripts/generate_documentation.py. Do not edit by hand. -->
4
4
 
5
5
  This page is generated from `anatomize.review.review_capabilities` in
6
- Anatomize `2.0.0`. Regenerate it whenever the public application
6
+ Anatomize `2.0.1`. Regenerate it whenever the public application
7
7
  contract changes.
8
8
 
9
9
  | Contract | Value |
@@ -2,7 +2,7 @@
2
2
 
3
3
  <!-- Generated by scripts/generate_documentation.py. Do not edit by hand. -->
4
4
 
5
- This inventory is generated from each public namespace's `__all__` under Anatomize `2.0.0`.
5
+ This inventory is generated from each public namespace's `__all__` under Anatomize `2.0.1`.
6
6
  Names absent from `__all__` are implementation details.
7
7
 
8
8
  For most integrations, start with `anatomize.review.ReviewApplication` rather than lower-level builders.
@@ -247,7 +247,7 @@ Exported names: 29.
247
247
 
248
248
  ## `anatomize.dossiers`
249
249
 
250
- Task targets, proof roles, budgets, selection, and expansion.
250
+ Task targets, evidence groups, limits, selection, and expansion.
251
251
 
252
252
  Exported names: 68.
253
253
 
@@ -273,7 +273,7 @@ Exported names: 68.
273
273
  | `DossierEngine` | class | Reusable deterministic query maps over one immutable dossier context. |
274
274
  | `DossierExpansion` | class | One consumer-requested expansion over an immutable base dossier. |
275
275
  | `DossierFilters` | class | Conjunctive restrictions applied without changing source facts. |
276
- | `DossierGroup` | class | Stable proof-role grouping in reader order. |
276
+ | `DossierGroup` | class | Evidence items grouped by their purpose in reader order. |
277
277
  | `DossierItem` | class | One role-labelled evidence reference with every independent reason. |
278
278
  | `DossierLocator` | class | Structured portable target or evidence locator. |
279
279
  | `DossierObservation` | class | One independent provider observation retained without aggregation. |
@@ -528,9 +528,9 @@ Exported names: 37.
528
528
  | `canonical_sarif_bytes` | function | `(log: 'SarifLog') -> 'bytes'` — Serialize SARIF deterministically without reordering index-bearing arrays. |
529
529
  | `load_sarif_log` | function | `(path: 'Path', *, limits: 'SarifArtifactLimits' = SarifArtifactLimits(max_bytes=134217728, max_depth=96, max_values=1000000, max_string_bytes=2000000)) -> 'SarifLog'` — Load one SARIF log as untrusted bytes. |
530
530
  | `normalize_sarif_log` | function | `(log: 'SarifLog', *, binding: 'SarifArtifactBinding', expected_state: 'SourceStateRecord', expected_configuration_digest: 'str', baseline: 'RepositoryEvidence', sources: 'Mapping[str, str]', repository_uri_base_ids: 'Sequence[str]' = (), declared_contracts: 'Mapping[str, DeclaredDiagnosticContract] &#124; None' = None, invocation: 'InvocationAuthority &#124; None' = None) -> 'tuple[ProviderEnvelope, ...]'` — Normalize every SARIF run independently without comparing tool severities. |
531
- | `parse_sarif_log` | function | `(raw: 'bytes', *, limits: 'SarifArtifactLimits' = SarifArtifactLimits(max_bytes=134217728, max_depth=96, max_values=1000000, max_string_bytes=2000000)) -> 'SarifLog'` — Parse standard SARIF 2.1.0 without loading or executing a specialist tool. |
531
+ | `parse_sarif_log` | function | `(raw: 'bytes', *, limits: 'SarifArtifactLimits' = SarifArtifactLimits(max_bytes=134217728, max_depth=96, max_values=1000000, max_string_bytes=2000000)) -> 'SarifLog'` — Parse a saved SARIF 2.1.0 report without loading or running its producer. |
532
532
  | `sarif_digest` | function | `(log: 'SarifLog') -> 'str'` — Return the canonical content identity of one parsed SARIF log. |
533
- | `unavailable_diagnostic_envelope` | function | `(*, tool_name: 'str', expected_state: 'SourceStateRecord', expected_configuration_digest: 'str', baseline: 'RepositoryEvidence', reason: 'str') -> 'ProviderEnvelope'` — Return explicit unavailable coverage without loading a specialist executable. |
533
+ | `unavailable_diagnostic_envelope` | function | `(*, tool_name: 'str', expected_state: 'SourceStateRecord', expected_configuration_digest: 'str', baseline: 'RepositoryEvidence', reason: 'str') -> 'ProviderEnvelope'` — Record unavailable diagnostics without loading an external executable. |
534
534
  | `write_sarif_log` | function | `(log: 'SarifLog', path: 'Path') -> 'None'` — Atomically publish canonical SARIF while preserving array order. |
535
535
 
536
536
  ## `anatomize.research`
@@ -353,7 +353,7 @@
353
353
  },
354
354
  "DossierGroup": {
355
355
  "additionalProperties": false,
356
- "description": "Stable proof-role grouping in reader order.",
356
+ "description": "Evidence items grouped by their purpose in reader order.",
357
357
  "properties": {
358
358
  "group_id": {
359
359
  "minLength": 1,
@@ -664,7 +664,7 @@
664
664
  },
665
665
  "DossierGroup": {
666
666
  "additionalProperties": false,
667
- "description": "Stable proof-role grouping in reader order.",
667
+ "description": "Evidence items grouped by their purpose in reader order.",
668
668
  "properties": {
669
669
  "group_id": {
670
670
  "minLength": 1,