sdr-visualizer 1.2.3__tar.gz → 1.2.4__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.
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/CHANGELOG.md +15 -1
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/PKG-INFO +1 -1
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/PRODUCT_CONTRACT.md +2 -2
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/RELEASE_EVIDENCE_TEMPLATE.md +17 -6
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/RELEASING.md +38 -5
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/pyproject.toml +1 -1
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/__init__.py +1 -1
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/adapters/aa.py +1 -1
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/adapters/cja.py +1 -1
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/cja_lineage.html.j2 +1 -1
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_cli.py +30 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_lineage_renderer.py +2 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/.gitignore +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/AGENTS.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/CODE_OF_CONDUCT.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/CONTRIBUTING.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/LICENSE +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/README.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/SECURITY.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/THIRD_PARTY_LICENSES +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/ADAPTER_CORRECTNESS_1.1.2.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/ADAPTER_GUIDE.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/ARCHITECTURE.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/DEPENDABOT_AUTOMATION.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/EMBEDDED_DATA_FORMAT.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/LINEAGE.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/PERFORMANCE.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/SHOWCASE.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/WORKSPACE_USAGE.md +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/payload-schema.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/docs/workspace-usage-schema.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/capture_screenshot.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/check_color_pack_parity.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/check_markdown_links.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/check_workflow_policy.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/corpus_check.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/dependabot_review.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/generate_aa_large_fixture.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/generate_cja_lineage_poc.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/generate_examples.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/generate_large_fixture.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/mutate_fixture.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/package_smoke_check.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/perf_browser_check.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/perf_check.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/perf_lineage_poc.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/scripts/workspace_usage_fixture.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/__main__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/adapters/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/adapters/base.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/adapters/cja_lineage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/analysis/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/analysis/diff.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/analysis/formula_tree.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/analysis/lineage_layout.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/analysis/references.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/analysis/segment_tree.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/analysis/trend.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/cli/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/cli/exit_codes.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/cli/lineage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/cli/lineage_output.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/cli/main.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/cli/output_safety.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/cli/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/core/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/core/exceptions.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/core/lineage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/core/models.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/core/structure_limits.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/core/visualizer.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/core/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/input/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/input/detect.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/input/lineage_discovery.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/input/loader.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/input/series.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/input/shell_out.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/input/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/color_packs.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/data_payload.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/lineage_payload.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/lineage_renderer.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/renderer.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/cja_lineage.css +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/cja_lineage.js +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/cja_lineage_graph.js +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/cja_lineage_roles.js +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/d3.min.js +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/visualizer.css +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/visualizer.js +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/visualizer_trend.js +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/catalog.html.j2 +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/changes.html.j2 +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/graph.html.j2 +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/index.html.j2 +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/trend.html.j2 +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/trend_charts.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/aa_api.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/aa_sdk.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/auth.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/cja_api.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/cja_sdk.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/collector.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/normalize.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/sdk_worker.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/usage/transport.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/adapter_cases.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/browser_support.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/conftest.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/__init__.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/aa_snapshot_clean.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/aa_snapshot_messy.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/cja_lineage_degraded.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/cja_lineage_enriched.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/cja_lineage_hostile.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/cja_lineage_shared.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/cja_snapshot_clean.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/cja_snapshot_hostile.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/cja_snapshot_messy.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/cja_snapshot_minimal.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/workspace_usage_aa_all_types.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/workspace_usage_cja_all_types.json +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_adapter_correctness.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_adapter_fuzz.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_adapters_aa.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_adapters_cja.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_analysis_diff.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_analysis_formula_tree.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_analysis_references.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_analysis_segment_tree.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_analysis_trend.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_browser_functional.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_browser_support.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_cja_lineage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_cja_lineage_driver.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_cli_flags.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_color_pack_parity.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_color_packs.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_corpus_check.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_data_payload.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_dependabot_review.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_entrypoint.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_generate_examples.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_input_modes.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_input_series.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_lineage_browser.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_lineage_cli.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_lineage_discovery.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_lineage_performance.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_markdown_links.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_minimal_fixture.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_mutate_fixture.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_output_safety.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_package_smoke_check.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_payload_schema.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_perf.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_perf_browser_check.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_release_documentation.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_renderer.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_renderer_anatomy.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_renderer_graph.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_semantic_properties.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_structure_limits.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_trend_charts.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workflow_policy.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_aa_sdk.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_auth.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_cja_sdk.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_cli.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_collection.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_offline.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_payload.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_perf.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_sdk.py +0 -0
- {sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/test_workspace_usage_transport.py +0 -0
|
@@ -4,6 +4,19 @@ All notable changes to `sdr-visualizer` will be documented here. The format foll
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.2.4] - 2026-10-17
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Advance the catalog tested-through generator markers to `cja_auto_sdr`
|
|
12
|
+
3.12.12 and `aa_auto_sdr` 1.21.24. Snapshots declaring those versions no
|
|
13
|
+
longer raise a newer-than-tested warning; later versions remain accepted
|
|
14
|
+
with a compatibility warning. The separate lineage allowlist is unchanged.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Label the lineage report footer “CJA lineage” instead of “Private CJA lineage POC”.
|
|
19
|
+
|
|
7
20
|
## [1.2.3] - 2026-10-16
|
|
8
21
|
|
|
9
22
|
### Fixed
|
|
@@ -739,7 +752,8 @@ The following are explicitly internal and may change without notice:
|
|
|
739
752
|
- Workspace project visualization (v0.4)
|
|
740
753
|
- Schema map view (v0.5)
|
|
741
754
|
|
|
742
|
-
[Unreleased]: https://github.com/brian-a-au/sdr-visualizer/compare/v1.2.
|
|
755
|
+
[Unreleased]: https://github.com/brian-a-au/sdr-visualizer/compare/v1.2.4...HEAD
|
|
756
|
+
[1.2.4]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.4
|
|
743
757
|
[1.2.3]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.3
|
|
744
758
|
[1.2.2]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.2
|
|
745
759
|
[1.2.1]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sdr-visualizer
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.4
|
|
4
4
|
Summary: Static-output visual catalog generator for Adobe Customer Journey Analytics and Adobe Analytics implementations.
|
|
5
5
|
Project-URL: Homepage, https://brian-a-au.github.io/sdr-visualizer/
|
|
6
6
|
Project-URL: Documentation, https://github.com/brian-a-au/sdr-visualizer#documentation
|
|
@@ -207,8 +207,8 @@ unusable, and capped-out members do not warn. The current markers are:
|
|
|
207
207
|
|
|
208
208
|
| Platform | Warning threshold |
|
|
209
209
|
|---|---:|
|
|
210
|
-
| CJA (`cja_auto_sdr`) | 3.12.
|
|
211
|
-
| AA (`aa_auto_sdr`) | 1.21.
|
|
210
|
+
| CJA (`cja_auto_sdr`) | 3.12.12 |
|
|
211
|
+
| AA (`aa_auto_sdr`) | 1.21.24 |
|
|
212
212
|
|
|
213
213
|
A marker is evidence of exercised compatibility, not a promise about every
|
|
214
214
|
possible snapshot produced by that version. It may advance only after a
|
|
@@ -200,7 +200,9 @@ cannot be closed by recording the current delta as diff-backed N/A.
|
|
|
200
200
|
| Candidate SHA | pending |
|
|
201
201
|
| Complete changed-path output permalink | pending |
|
|
202
202
|
| Shared runtime paths changed | pending |
|
|
203
|
-
| Full parity or diff-backed N/A evidence | pending |
|
|
203
|
+
| Full parity review, marker-only disposition, or diff-backed N/A evidence | pending |
|
|
204
|
+
| Marker-only: both projects' marker values and explicit-SHA adapter/helper review | pending |
|
|
205
|
+
| Marker-only: fresh candidate qualification and literal warning-boundary evidence | pending |
|
|
204
206
|
| Current sibling PR and commit permalinks, if applicable | pending |
|
|
205
207
|
| Shared-contract comparator result, if applicable | pending |
|
|
206
208
|
| Reviewer / reviewed UTC / result | pending |
|
|
@@ -252,7 +254,7 @@ renumber these requirements.
|
|
|
252
254
|
| R15 shipped, consistent docs | Markdown links + source-distribution check | pending |
|
|
253
255
|
| R16 safe sharing guidance | README review | pending |
|
|
254
256
|
| R17 current compatibility | privacy-safe fresh/corpus record | pending |
|
|
255
|
-
| R18 sibling parity | linked green sibling PR/commit
|
|
257
|
+
| R18 sibling parity | full sibling review; linked green merged sibling PR/commit unless the marker-only disposition applies; shared-contract comparator when color packs change | pending |
|
|
256
258
|
| R19 protected/monitored `main` | settings/API inspection | pending |
|
|
257
259
|
| R20 complete community surface | community profile + advertised public-link resolution | pending |
|
|
258
260
|
| R21 one traced candidate | this matrix + final go/no-go | pending |
|
|
@@ -312,20 +314,29 @@ renumber these requirements.
|
|
|
312
314
|
## Authoritative artifact and retention
|
|
313
315
|
|
|
314
316
|
Use one artifact set throughout. Record every retry separately; never combine
|
|
315
|
-
evidence from different attempts or manifests.
|
|
317
|
+
evidence from different attempts or manifests. Inspect retention settings before
|
|
318
|
+
tagging; inspect the created artifact's actual expiry before PyPI publication
|
|
319
|
+
approval. A configured duration does not establish the actual recovery deadline.
|
|
320
|
+
The actual expiry must cover the recorded full 90-day policy window; stop if it
|
|
321
|
+
falls short. Record the window start and its basis rather than inferring them
|
|
322
|
+
from a previous release's retention behavior.
|
|
316
323
|
|
|
317
324
|
| Field | Value |
|
|
318
325
|
|---|---|
|
|
319
326
|
| Release workflow URL | pending |
|
|
320
327
|
| Workflow run ID | pending |
|
|
321
328
|
| Attempt | pending |
|
|
329
|
+
| Workflow creation UTC | pending |
|
|
322
330
|
| Event / tag / `headSha` | pending |
|
|
323
331
|
| Job conclusions | pending |
|
|
324
332
|
| Retained artifact ID | pending |
|
|
325
333
|
| Artifact URL | pending |
|
|
326
|
-
| Artifact
|
|
327
|
-
|
|
|
328
|
-
|
|
|
334
|
+
| Artifact creation UTC | pending |
|
|
335
|
+
| Actual artifact expiry UTC and inspection URL | pending |
|
|
336
|
+
| Repository retention setting / workflow retention request / pre-tag inspection URL | pending |
|
|
337
|
+
| Policy-window start UTC and basis | pending |
|
|
338
|
+
| 90-day recovery deadline UTC | pending |
|
|
339
|
+
| Actual expiry covers the full policy window / post-build inspection UTC | pending |
|
|
329
340
|
| Wheel filename / SHA-256 | pending |
|
|
330
341
|
| Source-distribution filename / SHA-256 | pending |
|
|
331
342
|
| Authoritative `SHA256SUMS` manifest URL | pending |
|
|
@@ -238,6 +238,24 @@ Review changes to `core/models.py`, `adapters/`,
|
|
|
238
238
|
Missing access or an unreviewed sibling change blocks release; it does not turn
|
|
239
239
|
parity into an optional follow-up.
|
|
240
240
|
|
|
241
|
+
A candidate whose changes to shared runtime paths are limited to
|
|
242
|
+
`TESTED_THROUGH_GENERATOR_VERSION` values in the catalog adapters still requires
|
|
243
|
+
full sibling review. Record the visualizer base and candidate SHAs, the sibling
|
|
244
|
+
full SHA, complete candidate changed paths, exact adapter diff, and each project's
|
|
245
|
+
marker values. Prove that the shared-path delta changes only those constant
|
|
246
|
+
values, and compare the warning and version-parser helpers at those SHAs. Retain
|
|
247
|
+
the documented intentional differences. Fresh exact-version snapshots, the full
|
|
248
|
+
historical private corpus, supported catalog modes, and literal target/next-patch
|
|
249
|
+
warning tests must pass for the visualizer candidate.
|
|
250
|
+
|
|
251
|
+
Marker values are project-specific qualification evidence. Do not copy them to
|
|
252
|
+
the sibling without that project's own qualification. When the review establishes
|
|
253
|
+
that no shared implementation change needs mirroring, record **full review — no
|
|
254
|
+
sibling code change required**; a new sibling PR and merge are not required for
|
|
255
|
+
this limited case. This is not diff-backed N/A. Any other shared-runtime change
|
|
256
|
+
follows the linked green, merged sibling requirement above. Color-pack comparator
|
|
257
|
+
requirements remain unchanged.
|
|
258
|
+
|
|
241
259
|
For `render/color_packs.py`, both repositories must export the same shared
|
|
242
260
|
contract snapshot: `catalog` (`default`, `ADBE`, `OMTR`, `BLUE` in
|
|
243
261
|
that order), ordered `source_swatches` for all four entries, and ordered
|
|
@@ -262,7 +280,8 @@ parity may be recorded as a **diff-backed N/A**. The record must include the
|
|
|
262
280
|
base and candidate SHAs, the complete changed-path output, and a reviewer
|
|
263
281
|
confirmation that no shared runtime surface changed. A documentation-only
|
|
264
282
|
label or commit message is not sufficient evidence. Any shared-path change
|
|
265
|
-
requires
|
|
283
|
+
requires full sibling review; marker-only review may use the limited disposition
|
|
284
|
+
above.
|
|
266
285
|
|
|
267
286
|
## GitHub and community controls
|
|
268
287
|
|
|
@@ -337,7 +356,7 @@ checklist remains authoritative.
|
|
|
337
356
|
| R15 shipped, consistent docs | Markdown links + source-distribution check | pending |
|
|
338
357
|
| R16 safe sharing guidance | README review | pending |
|
|
339
358
|
| R17 current compatibility | privacy-safe fresh/corpus record | pending |
|
|
340
|
-
| R18 sibling parity | linked green sibling PR/commit
|
|
359
|
+
| R18 sibling parity | full sibling review; linked green merged sibling PR/commit unless the marker-only disposition applies; shared-contract comparator when color packs change | pending |
|
|
341
360
|
| R19 protected/monitored `main` | settings/API inspection | pending |
|
|
342
361
|
| R20 complete community surface | community profile + advertised public-link resolution | pending |
|
|
343
362
|
| R21 one traced candidate | this matrix + final go/no-go | pending |
|
|
@@ -446,9 +465,23 @@ deploys again before announcement GO, repeat those checks against the newer
|
|
|
446
465
|
deployment SHA.
|
|
447
466
|
|
|
448
467
|
The authoritative workflow artifact must remain available throughout a
|
|
449
|
-
90-day recovery window.
|
|
450
|
-
|
|
451
|
-
path before tagging.
|
|
468
|
+
90-day recovery window. Before tagging, inspect the repository retention setting
|
|
469
|
+
and workflow retention request; if either cannot support that window, stop and
|
|
470
|
+
repair the recovery path before tagging. The artifact does not exist at this
|
|
471
|
+
stage, so its actual expiry cannot yet be verified.
|
|
472
|
+
|
|
473
|
+
After the build creates the authoritative artifact and before PyPI publication
|
|
474
|
+
approval, record the workflow creation time, artifact creation time, policy-window
|
|
475
|
+
start and its basis, actual artifact expiry, and recovery deadline. Verify that
|
|
476
|
+
the actual expiry covers the full recorded 90-day window; if it falls short, stop
|
|
477
|
+
publication approval and repair the recovery path. Retain the same artifact and
|
|
478
|
+
manifest under the recovery rules below.
|
|
479
|
+
|
|
480
|
+
In the [1.2.3 publication record](https://github.com/brian-a-au/sdr-visualizer/pull/89),
|
|
481
|
+
the inspected artifact expired 90 days after workflow creation, rather than
|
|
482
|
+
90 days after artifact creation. That is an observation about that release,
|
|
483
|
+
not a guarantee about GitHub retention behavior or a universal policy-window
|
|
484
|
+
anchor. Record and inspect these timestamps for every release.
|
|
452
485
|
|
|
453
486
|
Every retry records its run ID, attempt, artifact ID, and manifest. Evidence
|
|
454
487
|
from different artifact sets may never be combined.
|
|
@@ -355,7 +355,7 @@ def _walk_segment_definition(definition: Any) -> tuple[int, list[str]]:
|
|
|
355
355
|
# (bundled fixtures + the private real corpus; re-derive at each release:
|
|
356
356
|
# grep -rho '"Tool Version": "[^"]*"|"tool_version": "[^"]*"' over corpus
|
|
357
357
|
# and fixtures, take the max). The compatibility policy warns — never refuses.
|
|
358
|
-
TESTED_THROUGH_GENERATOR_VERSION = "1.21.
|
|
358
|
+
TESTED_THROUGH_GENERATOR_VERSION = "1.21.24"
|
|
359
359
|
|
|
360
360
|
|
|
361
361
|
def generator_version_warning(adapter_version: str) -> str | None:
|
|
@@ -367,7 +367,7 @@ def _walk_for_contexts(node: Any, out: list[str]) -> None:
|
|
|
367
367
|
# (bundled fixtures + the private real corpus; re-derive at each release:
|
|
368
368
|
# grep -rho '"Tool Version": "[^"]*"|"tool_version": "[^"]*"' over corpus
|
|
369
369
|
# and fixtures, take the max). The compatibility policy warns — never refuses.
|
|
370
|
-
TESTED_THROUGH_GENERATOR_VERSION = "3.12.
|
|
370
|
+
TESTED_THROUGH_GENERATOR_VERSION = "3.12.12"
|
|
371
371
|
|
|
372
372
|
|
|
373
373
|
def generator_version_warning(adapter_version: str) -> str | None:
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
<span class="separator">·</span>
|
|
177
177
|
<span>Color pack: {{ color_pack }}</span>
|
|
178
178
|
<span class="separator">·</span>
|
|
179
|
-
<span>
|
|
179
|
+
<span>CJA lineage</span>
|
|
180
180
|
</footer>
|
|
181
181
|
|
|
182
182
|
<script id="sdr-lineage-data" type="application/json">{{ payload_json | safe }}</script>
|
|
@@ -1096,3 +1096,33 @@ def test_tested_generator_version_does_not_warn(tmp_path, capsys):
|
|
|
1096
1096
|
)
|
|
1097
1097
|
assert rc == 0
|
|
1098
1098
|
assert "generator version" not in capsys.readouterr().err
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
@pytest.mark.parametrize(
|
|
1102
|
+
("platform", "version", "warns"),
|
|
1103
|
+
[
|
|
1104
|
+
("cja", "3.12.12", False),
|
|
1105
|
+
("cja", "3.12.13", True),
|
|
1106
|
+
("aa", "1.21.24", False),
|
|
1107
|
+
("aa", "1.21.25", True),
|
|
1108
|
+
],
|
|
1109
|
+
)
|
|
1110
|
+
def test_catalog_generator_warning_boundary(platform, version, warns, tmp_path, capsys):
|
|
1111
|
+
snapshot = json.loads(
|
|
1112
|
+
(FIXTURES / f"{platform}_snapshot_clean.json").read_text(encoding="utf-8")
|
|
1113
|
+
)
|
|
1114
|
+
if platform == "cja":
|
|
1115
|
+
snapshot["metadata"]["Tool Version"] = version
|
|
1116
|
+
else:
|
|
1117
|
+
snapshot["tool_version"] = version
|
|
1118
|
+
source = _write_json(tmp_path / "snapshot.json", snapshot)
|
|
1119
|
+
output = tmp_path / "report.html"
|
|
1120
|
+
|
|
1121
|
+
assert main([str(source), "--output", str(output), "--quiet"]) == 0
|
|
1122
|
+
assert output.is_file()
|
|
1123
|
+
stderr = capsys.readouterr().err
|
|
1124
|
+
if warns:
|
|
1125
|
+
assert f"snapshot generator version {version}" in stderr
|
|
1126
|
+
assert "newer" in stderr
|
|
1127
|
+
else:
|
|
1128
|
+
assert "generator version" not in stderr
|
|
@@ -399,6 +399,8 @@ def test_lineage_renderer_uses_visualizer_shell_and_color_pack_contract(code: st
|
|
|
399
399
|
assert 'class="meta-strip ui"' in html
|
|
400
400
|
assert 'class="view-nav ui"' in html
|
|
401
401
|
assert 'class="footer ui"' in html
|
|
402
|
+
assert "<span>CJA lineage</span>" in html
|
|
403
|
+
assert "Private CJA lineage POC" not in html
|
|
402
404
|
assert html.index("/* ---------- Reset & base ---------- */") < html.index(css)
|
|
403
405
|
assert html.index(css) < html.index("</style>")
|
|
404
406
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/cja_lineage.css
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/cja_lineage.js
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/cja_lineage_graph.js
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/cja_lineage_roles.js
RENAMED
|
File without changes
|
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/visualizer.css
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/visualizer.js
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/static/visualizer_trend.js
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/catalog.html.j2
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/changes.html.j2
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/graph.html.j2
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/index.html.j2
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/src/sdr_visualizer/render/templates/trend.html.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/workspace_usage_aa_all_types.json
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.3 → sdr_visualizer-1.2.4}/tests/fixtures/workspace_usage_cja_all_types.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|