sdr-visualizer 1.2.1__tar.gz → 1.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/CHANGELOG.md +13 -1
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/PKG-INFO +59 -41
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/README.md +58 -40
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/PRODUCT_CONTRACT.md +2 -2
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/pyproject.toml +1 -1
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/__init__.py +1 -1
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/aa.py +1 -1
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/cja.py +1 -1
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_adapters_cja.py +3 -3
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_release_documentation.py +4 -3
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/.gitignore +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/CODE_OF_CONDUCT.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/CONTRIBUTING.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/LICENSE +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/SECURITY.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/THIRD_PARTY_LICENSES +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/ADAPTER_CORRECTNESS_1.1.2.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/ADAPTER_GUIDE.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/ARCHITECTURE.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/EMBEDDED_DATA_FORMAT.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/LINEAGE.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/PERFORMANCE.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/RELEASE_EVIDENCE_TEMPLATE.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/RELEASING.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/WORKSPACE_USAGE.md +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/payload-schema.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/workspace-usage-schema.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/capture_screenshot.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/check_color_pack_parity.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/check_markdown_links.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/check_workflow_policy.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/corpus_check.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/generate_aa_large_fixture.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/generate_cja_lineage_poc.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/generate_examples.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/generate_large_fixture.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/mutate_fixture.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/package_smoke_check.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/perf_browser_check.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/perf_check.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/perf_lineage_poc.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/workspace_usage_fixture.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/__main__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/base.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/cja_lineage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/diff.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/formula_tree.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/lineage_layout.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/references.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/segment_tree.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/trend.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/exit_codes.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/lineage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/lineage_output.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/main.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/output_safety.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/exceptions.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/lineage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/models.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/structure_limits.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/visualizer.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/detect.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/lineage_discovery.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/loader.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/series.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/shell_out.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/color_packs.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/data_payload.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/lineage_payload.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/lineage_renderer.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/renderer.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage.css +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage.js +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage_graph.js +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage_roles.js +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/d3.min.js +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer.css +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer.js +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer_trend.js +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/catalog.html.j2 +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/changes.html.j2 +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/cja_lineage.html.j2 +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/graph.html.j2 +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/index.html.j2 +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/trend.html.j2 +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/trend_charts.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/aa_api.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/aa_sdk.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/auth.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/cja_api.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/cja_sdk.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/collector.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/normalize.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/sdk_worker.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/transport.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/adapter_cases.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/browser_support.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/conftest.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/__init__.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/aa_snapshot_clean.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/aa_snapshot_messy.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_degraded.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_enriched.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_hostile.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_shared.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_clean.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_hostile.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_messy.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_minimal.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/workspace_usage_aa_all_types.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/workspace_usage_cja_all_types.json +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_adapter_correctness.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_adapter_fuzz.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_adapters_aa.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_diff.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_formula_tree.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_references.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_segment_tree.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_trend.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_browser_functional.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_browser_support.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_cja_lineage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_cja_lineage_driver.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_cli.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_cli_flags.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_color_pack_parity.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_color_packs.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_corpus_check.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_data_payload.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_entrypoint.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_generate_examples.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_input_modes.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_input_series.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_browser.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_cli.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_discovery.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_performance.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_renderer.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_markdown_links.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_minimal_fixture.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_mutate_fixture.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_output_safety.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_package_smoke_check.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_payload_schema.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_perf.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_perf_browser_check.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_renderer.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_renderer_anatomy.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_renderer_graph.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_semantic_properties.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_structure_limits.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_trend_charts.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workflow_policy.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_aa_sdk.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_auth.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_cja_sdk.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_cli.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_collection.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_offline.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_payload.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_perf.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_sdk.py +0 -0
- {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_transport.py +0 -0
|
@@ -4,6 +4,17 @@ All notable changes to `sdr-visualizer` will be documented here. The format foll
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.2.2] - 2026-09-21
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Advance the tested-through generator markers to `cja_auto_sdr` 3.12.4 and
|
|
12
|
+
`aa_auto_sdr` 1.21.15. Both were qualified with a fresh production snapshot
|
|
13
|
+
and the full historical private corpus, so snapshots from those versions no
|
|
14
|
+
longer raise a newer-than-tested warning.
|
|
15
|
+
- Carry the streamlined README into the published package so the PyPI project
|
|
16
|
+
description matches the repository.
|
|
17
|
+
|
|
7
18
|
## [1.2.1] - 2026-09-21
|
|
8
19
|
|
|
9
20
|
### Fixed
|
|
@@ -702,7 +713,8 @@ The following are explicitly internal and may change without notice:
|
|
|
702
713
|
- Workspace project visualization (v0.4)
|
|
703
714
|
- Schema map view (v0.5)
|
|
704
715
|
|
|
705
|
-
[Unreleased]: https://github.com/brian-a-au/sdr-visualizer/compare/v1.2.
|
|
716
|
+
[Unreleased]: https://github.com/brian-a-au/sdr-visualizer/compare/v1.2.2...HEAD
|
|
717
|
+
[1.2.2]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.2
|
|
706
718
|
[1.2.1]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.1
|
|
707
719
|
[1.2.0]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.0
|
|
708
720
|
[1.1.7]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.1.7
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sdr-visualizer
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
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
|
|
@@ -45,10 +45,10 @@ Static-output visual catalog generator for Adobe Customer Journey Analytics (CJA
|
|
|
45
45
|
|
|
46
46
|
**Live examples:** [CJA report](https://brian-a-au.github.io/sdr-visualizer/cja-typical.html) · [AA report](https://brian-a-au.github.io/sdr-visualizer/aa-typical.html)
|
|
47
47
|
|
|
48
|
-
The output is one HTML file
|
|
49
|
-
CDN
|
|
50
|
-
opens in a modern browser
|
|
51
|
-
requests.
|
|
48
|
+
The output is one HTML file. There is no server, no consumer-side build step,
|
|
49
|
+
and no CDN dependency. Its JSON, CSS, JavaScript, and D3 runtime are all
|
|
50
|
+
embedded, so it opens in a modern browser with no internet connection and makes
|
|
51
|
+
no network requests.
|
|
52
52
|
|
|
53
53
|
Offline does not mean cleared for distribution. A report can contain
|
|
54
54
|
implementation and component names, descriptions, segment and
|
|
@@ -57,6 +57,22 @@ Treat it as derived from the source snapshot. Move, email, post, or attach it
|
|
|
57
57
|
only in authorized locations and in accordance with your organization's
|
|
58
58
|
confidentiality and data-handling policy.
|
|
59
59
|
|
|
60
|
+
## Public preview scope
|
|
61
|
+
|
|
62
|
+
This project is in public preview. A report describes what is configured in a
|
|
63
|
+
snapshot. It does not grade the implementation, and it does not confirm that a
|
|
64
|
+
configuration is correct, complete, or working at runtime. Review the details
|
|
65
|
+
against the source implementation before you act on them.
|
|
66
|
+
|
|
67
|
+
The report embeds the supported normalized component catalog, not every
|
|
68
|
+
platform-specific field. Optional Workspace project references are unverified
|
|
69
|
+
candidates, and an empty result never means a component is unused. Keep the
|
|
70
|
+
original generator snapshot for anything the report does not embed.
|
|
71
|
+
|
|
72
|
+
The tool is verified on Ubuntu with Python 3.11, 3.12, and 3.14. Other platforms
|
|
73
|
+
and later Python versions are not yet verified. The package installs on Python
|
|
74
|
+
3.11 or newer.
|
|
75
|
+
|
|
60
76
|
## Install
|
|
61
77
|
|
|
62
78
|
Install from PyPI with uv:
|
|
@@ -99,7 +115,7 @@ sdr-visualizer snapshot_new.json --compare-to snapshot_old.json
|
|
|
99
115
|
sdr-visualizer ./snapshots/ --trend
|
|
100
116
|
```
|
|
101
117
|
|
|
102
|
-
The output lands at `./visualize-{instance_id}-{timestamp}.html` by default. Open it in a browser
|
|
118
|
+
The output lands at `./visualize-{instance_id}-{timestamp}.html` by default. Open it in a browser. That is the whole experience.
|
|
103
119
|
|
|
104
120
|
Standard input is also supported when another process already emits a complete
|
|
105
121
|
compatible snapshot:
|
|
@@ -108,13 +124,16 @@ compatible snapshot:
|
|
|
108
124
|
some-snapshot-command | sdr-visualizer -
|
|
109
125
|
```
|
|
110
126
|
|
|
111
|
-
## Live
|
|
127
|
+
## Live modes
|
|
128
|
+
|
|
129
|
+
Both live modes call a separate generator that you install and authenticate
|
|
130
|
+
yourself. Follow that project's current setup, then confirm the executable is on
|
|
131
|
+
your `PATH`. Either generator may require a newer Python version than
|
|
132
|
+
sdr-visualizer's Python 3.11 minimum. The upstream repository is authoritative
|
|
133
|
+
for credentials, permissions, and generator compatibility.
|
|
112
134
|
|
|
113
|
-
Live CJA mode
|
|
114
|
-
[`cja_auto_sdr`](https://github.com/brian-a-au/cja_auto_sdr) executable
|
|
115
|
-
that project's current installation, configuration, and authentication
|
|
116
|
-
instructions, then confirm `cja_auto_sdr` is on your `PATH`. Its generator may
|
|
117
|
-
require a newer Python version than sdr-visualizer's Python 3.11 minimum.
|
|
135
|
+
Live CJA mode uses the
|
|
136
|
+
[`cja_auto_sdr`](https://github.com/brian-a-au/cja_auto_sdr) executable:
|
|
118
137
|
|
|
119
138
|
```bash
|
|
120
139
|
sdr-visualizer --dataview dv_prod_web
|
|
@@ -122,25 +141,20 @@ sdr-visualizer --dataview dv_prod_web
|
|
|
122
141
|
|
|
123
142
|
sdr-visualizer runs the generator with JSON output, a temporary output
|
|
124
143
|
directory, and `--include-all-inventory`, then selects the generated snapshot.
|
|
125
|
-
|
|
126
|
-
stdin pipeline
|
|
127
|
-
|
|
128
|
-
## Live AA
|
|
144
|
+
It removes the temporary source data after the report is built. This is not a
|
|
145
|
+
stdin pipeline. CJA's complete inventory comes from a directory of files.
|
|
129
146
|
|
|
130
|
-
Live AA mode
|
|
131
|
-
[`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable
|
|
132
|
-
its current setup and authentication steps, and confirm `aa_auto_sdr` is on your
|
|
133
|
-
`PATH`. The generator may require a newer Python version than sdr-visualizer.
|
|
147
|
+
Live AA mode uses the
|
|
148
|
+
[`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable:
|
|
134
149
|
|
|
135
150
|
```bash
|
|
136
151
|
sdr-visualizer --rsid prod_us
|
|
137
152
|
```
|
|
138
153
|
|
|
139
|
-
AA live mode reads the generator JSON snapshot from stdout and embeds the
|
|
140
|
-
supported normalized component catalog in the report.
|
|
154
|
+
AA live mode reads the generator's JSON snapshot from stdout and embeds the
|
|
155
|
+
supported normalized component catalog in the report. Keep the original
|
|
141
156
|
generator snapshot when you need platform-specific details that the visualizer
|
|
142
|
-
does not embed.
|
|
143
|
-
for credentials, permissions, and generator compatibility.
|
|
157
|
+
does not embed.
|
|
144
158
|
|
|
145
159
|
## Optional Workspace project usage
|
|
146
160
|
|
|
@@ -167,7 +181,8 @@ Each command automatically writes HTML and `<html-stem>.workspace-usage.json`.
|
|
|
167
181
|
Existing snapshots and live exporter modes work without exporter changes.
|
|
168
182
|
The catalog shows possible project references separately from component
|
|
169
183
|
dependencies, with check time and coverage limits. SDK matches remain
|
|
170
|
-
unverified candidates
|
|
184
|
+
unverified candidates. Empty results never mean a component is unused or safe
|
|
185
|
+
to delete.
|
|
171
186
|
Opening the HTML and replaying the saved usage file need no credentials or
|
|
172
187
|
network access. See the
|
|
173
188
|
[Workspace usage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/WORKSPACE_USAGE.md)
|
|
@@ -211,9 +226,9 @@ Color-pack selection changes HTML presentation only. It does not add to or
|
|
|
211
226
|
alter the embedded JSON or a `--json` sidecar. The pack CSS, report data, and
|
|
212
227
|
runtime remain embedded in the single offline HTML file.
|
|
213
228
|
|
|
214
|
-
The named packs are
|
|
215
|
-
|
|
216
|
-
|
|
229
|
+
The named packs are alternative palettes. They are not official brand assets or
|
|
230
|
+
claims of affiliation or endorsement, and they contain no company or product
|
|
231
|
+
logos. Each pack is checked against the project's declared WCAG text
|
|
217
232
|
and essential-graphics contrast pairs. Text labels and other non-color cues
|
|
218
233
|
continue to communicate state, and reviewed print colors keep reports legible
|
|
219
234
|
when printed.
|
|
@@ -227,9 +242,14 @@ Every report has two base top-level views:
|
|
|
227
242
|
|
|
228
243
|
Segment anatomy and calculated-metric anatomy are contextual detail content,
|
|
229
244
|
not separate navigation destinations. They open from the Catalog detail panel.
|
|
230
|
-
Segment anatomy renders nested containers and references
|
|
245
|
+
Segment anatomy renders nested containers and references. Calculated-metric
|
|
231
246
|
anatomy renders operations, operands, and metric references.
|
|
232
247
|
|
|
248
|
+
You can restore an exact view from its address. The catalog's filters, sort,
|
|
249
|
+
view, and open detail panel are encoded in the URL hash, so within an
|
|
250
|
+
authorized report location you can copy the address bar to reload the same
|
|
251
|
+
filtered view.
|
|
252
|
+
|
|
233
253
|
At most one conditional top-level view is added. With `--compare-to`, a
|
|
234
254
|
**Changes** view appears, listing components
|
|
235
255
|
added, removed, and modified relative to a baseline snapshot, with
|
|
@@ -242,18 +262,16 @@ per-interval change log. The window is capped at the 60 most recent
|
|
|
242
262
|
snapshots.
|
|
243
263
|
|
|
244
264
|
A trend directory must hold snapshots of a single implementation. If it mixes
|
|
245
|
-
CJA and AA snapshots, pass `--platform cja|aa` to select one
|
|
246
|
-
single-platform directory
|
|
247
|
-
mixes data views or report suites, the run stops
|
|
248
|
-
|
|
265
|
+
CJA and AA snapshots, pass `--platform cja|aa` to select one, or point at a
|
|
266
|
+
single-platform directory. Without that, the run stops rather than guess. If it
|
|
267
|
+
mixes data views or report suites, the run also stops. `--compare-to` behaves
|
|
268
|
+
the same way and refuses both a platform mismatch and an instance mismatch, so
|
|
249
269
|
neither view ever diffs unrelated inventories. To compare or chart across
|
|
250
|
-
different data views or report suites on purpose
|
|
251
|
-
prod drift
|
|
270
|
+
different data views or report suites on purpose, for example staging versus
|
|
271
|
+
prod drift, pass `--allow-instance-mismatch`. The run then proceeds with a
|
|
252
272
|
warning. Platform mismatches are always rejected. The report shown alongside
|
|
253
273
|
the trend is the newest usable snapshot in the directory.
|
|
254
274
|
|
|
255
|
-
- **Restorable report links** — the catalog's filters, sort, view, and open detail panel are encoded in the URL hash. Within an authorized report location, copy the address bar to restore the same filtered view.
|
|
256
|
-
|
|
257
275
|
## Performance budget
|
|
258
276
|
|
|
259
277
|
The output is CI-gated against the budgets in
|
|
@@ -262,8 +280,8 @@ Build time and HTML size are enforced at every published tier (100 / 500 / 1,000
|
|
|
262
280
|
components). Browser-measured budgets are enforced at the 1,000-component tier
|
|
263
281
|
(initial render < 1s, filter/search < 150ms) and the 2,000-component tier
|
|
264
282
|
(< 2s, < 300ms), plus a 700ms cap on the graph view's main-thread block.
|
|
265
|
-
These guarantees cover up to 8,000 reference edges
|
|
266
|
-
|
|
283
|
+
These guarantees cover up to 8,000 reference edges. Denser valid reports use an
|
|
284
|
+
explicit graph opt-in and sit outside the published size and latency limits.
|
|
267
285
|
Functional browser tests cover Chromium and WebKit. A separate Chromium-only
|
|
268
286
|
performance gate measures all four component tiers; this is not a timing
|
|
269
287
|
guarantee for every branded browser.
|
|
@@ -329,8 +347,8 @@ uv run ruff check # Lint
|
|
|
329
347
|
uv run ruff format # Auto-format
|
|
330
348
|
|
|
331
349
|
uv run python scripts/generate_examples.py # Regenerate examples/
|
|
332
|
-
uv run python scripts/check_color_pack_parity.py
|
|
333
|
-
--visualizer-sha <candidate-commit-sha>
|
|
350
|
+
uv run python scripts/check_color_pack_parity.py \
|
|
351
|
+
--visualizer-sha <candidate-commit-sha> \
|
|
334
352
|
--grader-root ../sdr-grader --grader-sha <linked-grader-commit-sha>
|
|
335
353
|
uv run python scripts/perf_check.py # Run the perf gate
|
|
336
354
|
uv run python scripts/check_markdown_links.py
|
|
@@ -22,10 +22,10 @@ Static-output visual catalog generator for Adobe Customer Journey Analytics (CJA
|
|
|
22
22
|
|
|
23
23
|
**Live examples:** [CJA report](https://brian-a-au.github.io/sdr-visualizer/cja-typical.html) · [AA report](https://brian-a-au.github.io/sdr-visualizer/aa-typical.html)
|
|
24
24
|
|
|
25
|
-
The output is one HTML file
|
|
26
|
-
CDN
|
|
27
|
-
opens in a modern browser
|
|
28
|
-
requests.
|
|
25
|
+
The output is one HTML file. There is no server, no consumer-side build step,
|
|
26
|
+
and no CDN dependency. Its JSON, CSS, JavaScript, and D3 runtime are all
|
|
27
|
+
embedded, so it opens in a modern browser with no internet connection and makes
|
|
28
|
+
no network requests.
|
|
29
29
|
|
|
30
30
|
Offline does not mean cleared for distribution. A report can contain
|
|
31
31
|
implementation and component names, descriptions, segment and
|
|
@@ -34,6 +34,22 @@ Treat it as derived from the source snapshot. Move, email, post, or attach it
|
|
|
34
34
|
only in authorized locations and in accordance with your organization's
|
|
35
35
|
confidentiality and data-handling policy.
|
|
36
36
|
|
|
37
|
+
## Public preview scope
|
|
38
|
+
|
|
39
|
+
This project is in public preview. A report describes what is configured in a
|
|
40
|
+
snapshot. It does not grade the implementation, and it does not confirm that a
|
|
41
|
+
configuration is correct, complete, or working at runtime. Review the details
|
|
42
|
+
against the source implementation before you act on them.
|
|
43
|
+
|
|
44
|
+
The report embeds the supported normalized component catalog, not every
|
|
45
|
+
platform-specific field. Optional Workspace project references are unverified
|
|
46
|
+
candidates, and an empty result never means a component is unused. Keep the
|
|
47
|
+
original generator snapshot for anything the report does not embed.
|
|
48
|
+
|
|
49
|
+
The tool is verified on Ubuntu with Python 3.11, 3.12, and 3.14. Other platforms
|
|
50
|
+
and later Python versions are not yet verified. The package installs on Python
|
|
51
|
+
3.11 or newer.
|
|
52
|
+
|
|
37
53
|
## Install
|
|
38
54
|
|
|
39
55
|
Install from PyPI with uv:
|
|
@@ -76,7 +92,7 @@ sdr-visualizer snapshot_new.json --compare-to snapshot_old.json
|
|
|
76
92
|
sdr-visualizer ./snapshots/ --trend
|
|
77
93
|
```
|
|
78
94
|
|
|
79
|
-
The output lands at `./visualize-{instance_id}-{timestamp}.html` by default. Open it in a browser
|
|
95
|
+
The output lands at `./visualize-{instance_id}-{timestamp}.html` by default. Open it in a browser. That is the whole experience.
|
|
80
96
|
|
|
81
97
|
Standard input is also supported when another process already emits a complete
|
|
82
98
|
compatible snapshot:
|
|
@@ -85,13 +101,16 @@ compatible snapshot:
|
|
|
85
101
|
some-snapshot-command | sdr-visualizer -
|
|
86
102
|
```
|
|
87
103
|
|
|
88
|
-
## Live
|
|
104
|
+
## Live modes
|
|
105
|
+
|
|
106
|
+
Both live modes call a separate generator that you install and authenticate
|
|
107
|
+
yourself. Follow that project's current setup, then confirm the executable is on
|
|
108
|
+
your `PATH`. Either generator may require a newer Python version than
|
|
109
|
+
sdr-visualizer's Python 3.11 minimum. The upstream repository is authoritative
|
|
110
|
+
for credentials, permissions, and generator compatibility.
|
|
89
111
|
|
|
90
|
-
Live CJA mode
|
|
91
|
-
[`cja_auto_sdr`](https://github.com/brian-a-au/cja_auto_sdr) executable
|
|
92
|
-
that project's current installation, configuration, and authentication
|
|
93
|
-
instructions, then confirm `cja_auto_sdr` is on your `PATH`. Its generator may
|
|
94
|
-
require a newer Python version than sdr-visualizer's Python 3.11 minimum.
|
|
112
|
+
Live CJA mode uses the
|
|
113
|
+
[`cja_auto_sdr`](https://github.com/brian-a-au/cja_auto_sdr) executable:
|
|
95
114
|
|
|
96
115
|
```bash
|
|
97
116
|
sdr-visualizer --dataview dv_prod_web
|
|
@@ -99,25 +118,20 @@ sdr-visualizer --dataview dv_prod_web
|
|
|
99
118
|
|
|
100
119
|
sdr-visualizer runs the generator with JSON output, a temporary output
|
|
101
120
|
directory, and `--include-all-inventory`, then selects the generated snapshot.
|
|
102
|
-
|
|
103
|
-
stdin pipeline
|
|
104
|
-
|
|
105
|
-
## Live AA
|
|
121
|
+
It removes the temporary source data after the report is built. This is not a
|
|
122
|
+
stdin pipeline. CJA's complete inventory comes from a directory of files.
|
|
106
123
|
|
|
107
|
-
Live AA mode
|
|
108
|
-
[`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable
|
|
109
|
-
its current setup and authentication steps, and confirm `aa_auto_sdr` is on your
|
|
110
|
-
`PATH`. The generator may require a newer Python version than sdr-visualizer.
|
|
124
|
+
Live AA mode uses the
|
|
125
|
+
[`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable:
|
|
111
126
|
|
|
112
127
|
```bash
|
|
113
128
|
sdr-visualizer --rsid prod_us
|
|
114
129
|
```
|
|
115
130
|
|
|
116
|
-
AA live mode reads the generator JSON snapshot from stdout and embeds the
|
|
117
|
-
supported normalized component catalog in the report.
|
|
131
|
+
AA live mode reads the generator's JSON snapshot from stdout and embeds the
|
|
132
|
+
supported normalized component catalog in the report. Keep the original
|
|
118
133
|
generator snapshot when you need platform-specific details that the visualizer
|
|
119
|
-
does not embed.
|
|
120
|
-
for credentials, permissions, and generator compatibility.
|
|
134
|
+
does not embed.
|
|
121
135
|
|
|
122
136
|
## Optional Workspace project usage
|
|
123
137
|
|
|
@@ -144,7 +158,8 @@ Each command automatically writes HTML and `<html-stem>.workspace-usage.json`.
|
|
|
144
158
|
Existing snapshots and live exporter modes work without exporter changes.
|
|
145
159
|
The catalog shows possible project references separately from component
|
|
146
160
|
dependencies, with check time and coverage limits. SDK matches remain
|
|
147
|
-
unverified candidates
|
|
161
|
+
unverified candidates. Empty results never mean a component is unused or safe
|
|
162
|
+
to delete.
|
|
148
163
|
Opening the HTML and replaying the saved usage file need no credentials or
|
|
149
164
|
network access. See the
|
|
150
165
|
[Workspace usage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/WORKSPACE_USAGE.md)
|
|
@@ -188,9 +203,9 @@ Color-pack selection changes HTML presentation only. It does not add to or
|
|
|
188
203
|
alter the embedded JSON or a `--json` sidecar. The pack CSS, report data, and
|
|
189
204
|
runtime remain embedded in the single offline HTML file.
|
|
190
205
|
|
|
191
|
-
The named packs are
|
|
192
|
-
|
|
193
|
-
|
|
206
|
+
The named packs are alternative palettes. They are not official brand assets or
|
|
207
|
+
claims of affiliation or endorsement, and they contain no company or product
|
|
208
|
+
logos. Each pack is checked against the project's declared WCAG text
|
|
194
209
|
and essential-graphics contrast pairs. Text labels and other non-color cues
|
|
195
210
|
continue to communicate state, and reviewed print colors keep reports legible
|
|
196
211
|
when printed.
|
|
@@ -204,9 +219,14 @@ Every report has two base top-level views:
|
|
|
204
219
|
|
|
205
220
|
Segment anatomy and calculated-metric anatomy are contextual detail content,
|
|
206
221
|
not separate navigation destinations. They open from the Catalog detail panel.
|
|
207
|
-
Segment anatomy renders nested containers and references
|
|
222
|
+
Segment anatomy renders nested containers and references. Calculated-metric
|
|
208
223
|
anatomy renders operations, operands, and metric references.
|
|
209
224
|
|
|
225
|
+
You can restore an exact view from its address. The catalog's filters, sort,
|
|
226
|
+
view, and open detail panel are encoded in the URL hash, so within an
|
|
227
|
+
authorized report location you can copy the address bar to reload the same
|
|
228
|
+
filtered view.
|
|
229
|
+
|
|
210
230
|
At most one conditional top-level view is added. With `--compare-to`, a
|
|
211
231
|
**Changes** view appears, listing components
|
|
212
232
|
added, removed, and modified relative to a baseline snapshot, with
|
|
@@ -219,18 +239,16 @@ per-interval change log. The window is capped at the 60 most recent
|
|
|
219
239
|
snapshots.
|
|
220
240
|
|
|
221
241
|
A trend directory must hold snapshots of a single implementation. If it mixes
|
|
222
|
-
CJA and AA snapshots, pass `--platform cja|aa` to select one
|
|
223
|
-
single-platform directory
|
|
224
|
-
mixes data views or report suites, the run stops
|
|
225
|
-
|
|
242
|
+
CJA and AA snapshots, pass `--platform cja|aa` to select one, or point at a
|
|
243
|
+
single-platform directory. Without that, the run stops rather than guess. If it
|
|
244
|
+
mixes data views or report suites, the run also stops. `--compare-to` behaves
|
|
245
|
+
the same way and refuses both a platform mismatch and an instance mismatch, so
|
|
226
246
|
neither view ever diffs unrelated inventories. To compare or chart across
|
|
227
|
-
different data views or report suites on purpose
|
|
228
|
-
prod drift
|
|
247
|
+
different data views or report suites on purpose, for example staging versus
|
|
248
|
+
prod drift, pass `--allow-instance-mismatch`. The run then proceeds with a
|
|
229
249
|
warning. Platform mismatches are always rejected. The report shown alongside
|
|
230
250
|
the trend is the newest usable snapshot in the directory.
|
|
231
251
|
|
|
232
|
-
- **Restorable report links** — the catalog's filters, sort, view, and open detail panel are encoded in the URL hash. Within an authorized report location, copy the address bar to restore the same filtered view.
|
|
233
|
-
|
|
234
252
|
## Performance budget
|
|
235
253
|
|
|
236
254
|
The output is CI-gated against the budgets in
|
|
@@ -239,8 +257,8 @@ Build time and HTML size are enforced at every published tier (100 / 500 / 1,000
|
|
|
239
257
|
components). Browser-measured budgets are enforced at the 1,000-component tier
|
|
240
258
|
(initial render < 1s, filter/search < 150ms) and the 2,000-component tier
|
|
241
259
|
(< 2s, < 300ms), plus a 700ms cap on the graph view's main-thread block.
|
|
242
|
-
These guarantees cover up to 8,000 reference edges
|
|
243
|
-
|
|
260
|
+
These guarantees cover up to 8,000 reference edges. Denser valid reports use an
|
|
261
|
+
explicit graph opt-in and sit outside the published size and latency limits.
|
|
244
262
|
Functional browser tests cover Chromium and WebKit. A separate Chromium-only
|
|
245
263
|
performance gate measures all four component tiers; this is not a timing
|
|
246
264
|
guarantee for every branded browser.
|
|
@@ -306,8 +324,8 @@ uv run ruff check # Lint
|
|
|
306
324
|
uv run ruff format # Auto-format
|
|
307
325
|
|
|
308
326
|
uv run python scripts/generate_examples.py # Regenerate examples/
|
|
309
|
-
uv run python scripts/check_color_pack_parity.py
|
|
310
|
-
--visualizer-sha <candidate-commit-sha>
|
|
327
|
+
uv run python scripts/check_color_pack_parity.py \
|
|
328
|
+
--visualizer-sha <candidate-commit-sha> \
|
|
311
329
|
--grader-root ../sdr-grader --grader-sha <linked-grader-commit-sha>
|
|
312
330
|
uv run python scripts/perf_check.py # Run the perf gate
|
|
313
331
|
uv run python scripts/check_markdown_links.py
|
|
@@ -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.
|
|
211
|
-
| AA (`aa_auto_sdr`) | 1.21.
|
|
210
|
+
| CJA (`cja_auto_sdr`) | 3.12.4 |
|
|
211
|
+
| AA (`aa_auto_sdr`) | 1.21.15 |
|
|
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
|
|
@@ -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.15"
|
|
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.
|
|
370
|
+
TESTED_THROUGH_GENERATOR_VERSION = "3.12.4"
|
|
371
371
|
|
|
372
372
|
|
|
373
373
|
def generator_version_warning(adapter_version: str) -> str | None:
|
|
@@ -858,12 +858,12 @@ def test_equal_older_or_unparseable_versions_do_not_warn():
|
|
|
858
858
|
|
|
859
859
|
|
|
860
860
|
def test_tuple_length_mismatch_versions_compare_correctly():
|
|
861
|
-
# (3,
|
|
861
|
+
# (3, 13) > (3, 12, 4), while the shorter (3, 12) sorts below the
|
|
862
862
|
# longer tested tuple. This pins Python tuple ordering as the contract.
|
|
863
863
|
from sdr_visualizer.adapters.cja import generator_version_warning
|
|
864
864
|
|
|
865
|
-
assert generator_version_warning("3.
|
|
866
|
-
assert generator_version_warning("3.
|
|
865
|
+
assert generator_version_warning("3.13") is not None
|
|
866
|
+
assert generator_version_warning("3.12") is None
|
|
867
867
|
|
|
868
868
|
|
|
869
869
|
# ---------------------------------------------------------------------------
|
|
@@ -39,11 +39,12 @@ def test_readme_distinguishes_saved_and_live_input_contracts():
|
|
|
39
39
|
|
|
40
40
|
def test_readme_scopes_aa_live_mode_to_the_normalized_catalog():
|
|
41
41
|
readme = (REPO / "README.md").read_text(encoding="utf-8")
|
|
42
|
-
|
|
42
|
+
live_modes = readme.split("## Live modes", 1)[1].split("## Optional Workspace", 1)[0]
|
|
43
|
+
live_aa = " ".join(live_modes.split("Live AA mode uses", 1)[1].split())
|
|
43
44
|
|
|
44
|
-
assert "reads the generator JSON snapshot from stdout" in live_aa
|
|
45
|
+
assert "reads the generator's JSON snapshot from stdout" in live_aa
|
|
45
46
|
assert "supported normalized component catalog" in live_aa
|
|
46
|
-
assert "
|
|
47
|
+
assert "Keep the original generator snapshot" in live_aa
|
|
47
48
|
assert "platform-specific details that the visualizer does not embed" in live_aa
|
|
48
49
|
assert "complete inventory" not in live_aa
|
|
49
50
|
|
|
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.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage.css
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage.js
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage_graph.js
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage_roles.js
RENAMED
|
File without changes
|
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer.css
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer.js
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer_trend.js
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/catalog.html.j2
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/changes.html.j2
RENAMED
|
File without changes
|
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/graph.html.j2
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/index.html.j2
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/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.1 → sdr_visualizer-1.2.2}/tests/fixtures/workspace_usage_aa_all_types.json
RENAMED
|
File without changes
|
{sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/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
|