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.
- {anatomize-2.0.0 → anatomize-2.0.1}/CHANGELOG.md +20 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/CITATION.cff +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/CONTRIBUTING.md +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/PKG-INFO +15 -13
- {anatomize-2.0.0 → anatomize-2.0.1}/README.md +14 -12
- {anatomize-2.0.0 → anatomize-2.0.1}/SECURITY.md +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/ARTIFACTS.md +3 -3
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/AUTOMATION.md +3 -2
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/CONCEPTS.md +27 -6
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/PROVIDERS.md +39 -20
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/QUICKSTART.md +8 -7
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/REFERENCE.md +3 -3
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/TROUBLESHOOTING.md +13 -11
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/WORKFLOWS.md +9 -7
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/capabilities.md +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/python-api.md +5 -5
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/dossier.schema.json +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/dossier_exchange.schema.json +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/evidence.schema.json +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas.md +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/index.md +7 -6
- {anatomize-2.0.0 → anatomize-2.0.1}/mkdocs.yml +2 -2
- {anatomize-2.0.0 → anatomize-2.0.1}/scripts/evaluate_agentic_workflows.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/scripts/generate_documentation.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/scripts/verify_documentation.py +1 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/scripts/verify_documentation_site.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/diagnostics/io.py +2 -2
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/diagnostics/normalize.py +7 -7
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/__init__.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/engine.py +21 -15
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/models.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/evidence/models.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/repository.py +4 -4
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/overlays.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/similarity.py +9 -2
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/normalization.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/application.py +3 -3
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/cli.py +4 -4
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/imports.py +4 -5
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/render.py +91 -40
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/sessions/store.py +7 -2
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/version.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_documentation_examples.py +2 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/dossier-known-truth.json +5 -5
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_mixed_research_lifecycle.py +6 -6
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_identity_reconciliation.py +6 -2
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_lifecycle_similarity.py +11 -10
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_review_application.py +3 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_sarif_diagnostics.py +2 -2
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_temporal_models.py +1 -1
- {anatomize-2.0.0 → anatomize-2.0.1}/.github/workflows/ci.yml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/.github/workflows/docs.yml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/.github/workflows/publish-pypi.yml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/.github/workflows/publish-testpypi.yml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/.gitignore +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/LICENSE +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/SKILL.md +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/agents/openai.yaml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/MAINTAINERS.md +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/artifact_check.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/change_dossier.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/closure_report.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/consolidation_dossier.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/decision_overlay.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/implementation_intent.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/overlay_evaluation.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/session.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/similarity.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/generated/schemas/state_manifest.schema.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/docs/stylesheets/extra.css +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/examples/decision_overlay_consumer.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/pyproject.toml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/scripts/_verification.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/scripts/benchmark_dossiers.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/scripts/verify_consumer_install.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/_artifacts.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/_errors.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/_paths.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/_python_imports.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/cli.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/diagnostics/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/diagnostics/models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/context.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/io.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/dossiers/slicing.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/evidence/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/evidence/io.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/evidence/merge.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/identity/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/identity/coordinates.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/identity/keys.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/identity/reconcile.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/git.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/intelligence.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/index/models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/closure.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/lifecycle/testing.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/mcp_transport.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/baseline.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/conformance.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/index_projection.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/io.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/providers/models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/py.typed +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/graphs.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/notebooks.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/provenance.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/r.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/research/workflows.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/io.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/review/models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/semantic/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/semantic/io.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/semantic/models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/semantic/normalize.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/sessions/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/sessions/models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/temporal/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/temporal/compare.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/temporal/io.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/src/anatomize/temporal/models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/README.md +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/_git.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/conftest.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_decision_overlay_consumer.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_documentation_site.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_mcp_cli.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_mcp_packaging.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/e2e/test_review_cli.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/agentic_workflow/README.md +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/agentic_workflow/src/left.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/agentic_workflow/src/right.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/agentic_workflow/tests/left_check.py +0 -0
- /anatomize-2.0.0/tests/fixtures/diagnostics/specialist-tools.sarif → /anatomize-2.0.1/tests/fixtures/diagnostics/analysis-results.sarif +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/dossier-future-v2.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/dossier-legacy-v0.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/request-future-v2.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/dossiers/request-legacy-v0.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/additive-v1.1-minimal.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/corrupt-v1.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/current-v1-minimal.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/incompatible-v2.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/evidence/incomplete-v1.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/identity/coordinate-corpus.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/identity/identity-corpus.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/indexes/current-v2.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/indexes/future-v99.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/indexes/legacy-v1-complete.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/indexes/legacy-v1-incomplete.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/excluded/skip.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/ns_pkg/sub/mod.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/pkg/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/pkg/mod.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/project_src/src/top_level.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/DESCRIPTION +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/Dockerfile +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/NAMESPACE +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/R/estimate.R +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/README.md +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/analysis/run_analysis.R +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/analysis.ipynb +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/analysis.qmd +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/notebook-execution.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/pytest-junit.xml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/r-lsp.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/sbom.cdx.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/artifacts/testthat-junit.xml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/data/patients.metadata.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/data/public.csv +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/data/vendor-archive.metadata.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/derived/cohort.metadata.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/derived/effect.metadata.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/environment.yml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/pyproject.toml +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/renv.lock +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/reports/result.html +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/reports/stale.metadata.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/ro-crate-metadata.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/scripts/preprocess.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/src/trialtools/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/src/trialtools/legacy.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/src/trialtools/normalise.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/tests/normalise_checks.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/tests/testthat/test-estimate.R +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/workflow/snakemake-boundaries.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/workflow/snakemake-summary.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/workflow/targets-manifest.csv +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/research/mixed_project/workflow/targets-metadata.csv +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/sample_package/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/sample_package/models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/semantic/lsp-semantic-capture.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/sessions/session-manifest-golden.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/fixtures/temporal/two-state-corpus.json +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_dossier_evaluation.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_lifecycle_assurance.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_lifecycle_closure_workflow.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/integration/test_mcp_client.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/__init__.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_dossier_engine.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_evidence_composition.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_evidence_models.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_kernel_assurance.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_lifecycle_closure.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_lifecycle_overlays.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_lifecycle_testing.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_mcp_transport.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_provider_contract.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_public_contract.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_research_notebooks.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_research_r.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_research_workflows.py +0 -0
- {anatomize-2.0.0 → anatomize-2.0.1}/tests/unit/test_semantic_artifacts.py +0 -0
- {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.
|
|
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
|
|
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.
|
|
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
|
-
##
|
|
143
|
+
## Import results from tools you already use
|
|
144
144
|
|
|
145
|
-
`review start` always
|
|
146
|
-
|
|
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
|
|
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
|
|
163
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
- [
|
|
212
|
-
|
|
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
|
-
##
|
|
101
|
+
## Import results from tools you already use
|
|
102
102
|
|
|
103
|
-
`review start` always
|
|
104
|
-
|
|
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
|
|
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
|
|
121
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
- [
|
|
170
|
-
|
|
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
|
|
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` |
|
|
14
|
-
| Decision overlay | `review overlay-create` | Preserve
|
|
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. **
|
|
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
|
|
91
|
-
before optional context and preserve every reason an item
|
|
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
|
|
12
|
-
|
|
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
|
-
|
|
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.
|
|
97
|
-
design records, and other human hand-offs. Use
|
|
98
|
-
logs, but do not parse it as an interchange
|
|
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
|
-
#
|
|
1
|
+
# Import results from other tools
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
33
|
-
|
|
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
|
-
##
|
|
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
|
|
78
|
+
## What the advanced provider format records
|
|
61
79
|
|
|
62
|
-
The
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
|
126
|
-
normalisation layer. Add another native format only when neither route
|
|
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
|
|
40
|
-
ownership,
|
|
41
|
-
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
31
|
-
| `review overlay-create SESSION SIMILARITY CANDIDATE` | Record a portable
|
|
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` |
|
|
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
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
##
|
|
47
|
+
## Results from another tool are unavailable
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
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
|
|
59
|
-
|
|
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
|
|
94
|
-
the decision cannot yet close. Raising every budget is
|
|
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
|
|
46
|
-
|
|
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
|
|
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
|
|
92
|
-
|
|
93
|
-
|
|
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.
|
|
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.
|
|
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,
|
|
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 |
|
|
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] | None' = None, invocation: 'InvocationAuthority | 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
|
|
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'` —
|
|
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": "
|
|
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": "
|
|
667
|
+
"description": "Evidence items grouped by their purpose in reader order.",
|
|
668
668
|
"properties": {
|
|
669
669
|
"group_id": {
|
|
670
670
|
"minLength": 1,
|