sdr-visualizer 1.2.0__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.0 → sdr_visualizer-1.2.2}/CHANGELOG.md +34 -1
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/CONTRIBUTING.md +4 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/PKG-INFO +74 -50
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/README.md +73 -49
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/LINEAGE.md +8 -3
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/PRODUCT_CONTRACT.md +2 -2
- sdr_visualizer-1.2.2/docs/RELEASE_EVIDENCE_TEMPLATE.md +363 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/RELEASING.md +4 -3
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/WORKSPACE_USAGE.md +110 -76
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/pyproject.toml +1 -1
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/__init__.py +1 -1
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/aa.py +1 -1
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/cja.py +1 -1
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/lineage.py +3 -1
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/lineage_discovery.py +1 -1
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/collector.py +13 -2
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_adapters_cja.py +3 -3
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_lineage_cli.py +4 -1
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_lineage_discovery.py +43 -2
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_release_documentation.py +4 -3
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_collection.py +36 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/.gitignore +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/CODE_OF_CONDUCT.md +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/LICENSE +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/SECURITY.md +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/THIRD_PARTY_LICENSES +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/ADAPTER_CORRECTNESS_1.1.2.md +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/ADAPTER_GUIDE.md +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/ARCHITECTURE.md +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/EMBEDDED_DATA_FORMAT.md +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/PERFORMANCE.md +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/payload-schema.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/docs/workspace-usage-schema.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/capture_screenshot.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/check_color_pack_parity.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/check_markdown_links.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/check_workflow_policy.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/corpus_check.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/generate_aa_large_fixture.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/generate_cja_lineage_poc.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/generate_examples.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/generate_large_fixture.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/mutate_fixture.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/package_smoke_check.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/perf_browser_check.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/perf_check.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/perf_lineage_poc.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/scripts/workspace_usage_fixture.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/__main__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/base.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/cja_lineage.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/diff.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/formula_tree.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/lineage_layout.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/references.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/segment_tree.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/trend.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/exit_codes.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/lineage_output.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/main.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/output_safety.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/exceptions.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/lineage.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/models.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/structure_limits.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/visualizer.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/detect.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/loader.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/series.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/shell_out.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/color_packs.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/data_payload.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/lineage_payload.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/lineage_renderer.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/renderer.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage.css +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage.js +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage_graph.js +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage_roles.js +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/d3.min.js +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer.css +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer.js +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer_trend.js +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/catalog.html.j2 +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/changes.html.j2 +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/cja_lineage.html.j2 +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/graph.html.j2 +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/index.html.j2 +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/trend.html.j2 +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/trend_charts.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/workspace_usage.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/aa_api.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/aa_sdk.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/auth.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/cja_api.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/cja_sdk.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/normalize.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/sdk_worker.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/transport.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/adapter_cases.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/browser_support.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/conftest.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/__init__.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/aa_snapshot_clean.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/aa_snapshot_messy.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_degraded.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_enriched.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_hostile.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_shared.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_clean.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_hostile.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_messy.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_minimal.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/workspace_usage_aa_all_types.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/fixtures/workspace_usage_cja_all_types.json +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_adapter_correctness.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_adapter_fuzz.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_adapters_aa.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_analysis_diff.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_analysis_formula_tree.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_analysis_references.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_analysis_segment_tree.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_analysis_trend.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_browser_functional.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_browser_support.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_cja_lineage.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_cja_lineage_driver.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_cli.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_cli_flags.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_color_pack_parity.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_color_packs.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_corpus_check.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_data_payload.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_entrypoint.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_generate_examples.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_input_modes.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_input_series.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_lineage_browser.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_lineage_performance.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_lineage_renderer.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_markdown_links.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_minimal_fixture.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_mutate_fixture.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_output_safety.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_package_smoke_check.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_payload_schema.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_perf.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_perf_browser_check.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_renderer.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_renderer_anatomy.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_renderer_graph.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_semantic_properties.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_structure_limits.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_trend_charts.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workflow_policy.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_aa_sdk.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_auth.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_cja_sdk.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_cli.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_offline.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_payload.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_perf.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_sdk.py +0 -0
- {sdr_visualizer-1.2.0 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_transport.py +0 -0
|
@@ -4,6 +4,37 @@ 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
|
+
|
|
18
|
+
## [1.2.1] - 2026-09-21
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Handle a Workspace worker exit race during process-group cleanup on macOS.
|
|
23
|
+
A rejected signal is accepted only after the child exits within the existing
|
|
24
|
+
two-second wait; a still-running child retains the original error.
|
|
25
|
+
- Accept the exactly qualified `cja_auto_sdr` 3.12.2 and 3.12.4 executables for
|
|
26
|
+
CJA lineage discovery. Other unqualified versions continue to fail closed
|
|
27
|
+
before live acquisition.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- Correct README and Workspace onboarding guidance for saved snapshots, live
|
|
32
|
+
collection, authentication, supported output, and safe sharing.
|
|
33
|
+
- Add a reusable release-evidence template for exact-candidate qualification,
|
|
34
|
+
publication authorization, public verification, and announcement decisions.
|
|
35
|
+
- Document the repository's current maintainer review model and preserve required
|
|
36
|
+
checks and pre-release settings inspection.
|
|
37
|
+
|
|
7
38
|
## [1.2.0] - 2026-09-12
|
|
8
39
|
|
|
9
40
|
### Added
|
|
@@ -682,7 +713,9 @@ The following are explicitly internal and may change without notice:
|
|
|
682
713
|
- Workspace project visualization (v0.4)
|
|
683
714
|
- Schema map view (v0.5)
|
|
684
715
|
|
|
685
|
-
[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
|
|
718
|
+
[1.2.1]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.1
|
|
686
719
|
[1.2.0]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.0
|
|
687
720
|
[1.1.7]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.1.7
|
|
688
721
|
[1.1.6]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.1.6
|
|
@@ -61,6 +61,10 @@ Every PR needs: tests for behavior changes, a green suite, clean
|
|
|
61
61
|
coverage from the non-browser Python suite, and green browser/perf gates when
|
|
62
62
|
the change could plausibly affect them.
|
|
63
63
|
|
|
64
|
+
Current repository settings permit maintainer self-review and require zero
|
|
65
|
+
independent approvals. Required checks still apply. Maintainers re-inspect these
|
|
66
|
+
settings before each release and record the result in the release evidence.
|
|
67
|
+
|
|
64
68
|
Release artifacts are not considered usable merely because `uv build`
|
|
65
69
|
succeeds. The package smoke check installs the wheel and source distribution
|
|
66
70
|
independently into temporary environments outside the checkout, then verifies
|
|
@@ -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,39 +141,37 @@ 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
|
|
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.
|
|
127
146
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
Live AA mode likewise requires the separate
|
|
131
|
-
[`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable. Complete
|
|
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
|
|
|
147
161
|
Add project-usage evidence while generating the HTML. Install the independent
|
|
148
|
-
extra for your platform, then opt in to collection using an existing
|
|
149
|
-
source
|
|
162
|
+
extra for your platform with uv, then opt in to collection using an existing
|
|
163
|
+
credential source. The CJA and AA extras are independent; use the one that
|
|
164
|
+
matches your snapshot:
|
|
150
165
|
|
|
151
166
|
```bash
|
|
152
|
-
|
|
167
|
+
uv tool install 'sdr-visualizer[workspace-cja]'
|
|
153
168
|
sdr-visualizer snapshots/cja.json --collect-workspace-usage \
|
|
154
169
|
--workspace-usage-org 'EXAMPLE@AdobeOrg' \
|
|
155
170
|
--workspace-usage-config ../credentials/adobe.json --output cja.html
|
|
171
|
+
```
|
|
156
172
|
|
|
157
|
-
|
|
173
|
+
```bash
|
|
174
|
+
uv tool install 'sdr-visualizer[workspace-aa]'
|
|
158
175
|
sdr-visualizer snapshots/aa.json --collect-workspace-usage \
|
|
159
176
|
--workspace-usage-org 'EXAMPLE@AdobeOrg' --workspace-usage-company example-company \
|
|
160
177
|
--workspace-usage-config ../credentials/adobe.json --output aa.html
|
|
@@ -164,7 +181,8 @@ Each command automatically writes HTML and `<html-stem>.workspace-usage.json`.
|
|
|
164
181
|
Existing snapshots and live exporter modes work without exporter changes.
|
|
165
182
|
The catalog shows possible project references separately from component
|
|
166
183
|
dependencies, with check time and coverage limits. SDK matches remain
|
|
167
|
-
unverified candidates
|
|
184
|
+
unverified candidates. Empty results never mean a component is unused or safe
|
|
185
|
+
to delete.
|
|
168
186
|
Opening the HTML and replaying the saved usage file need no credentials or
|
|
169
187
|
network access. See the
|
|
170
188
|
[Workspace usage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/WORKSPACE_USAGE.md)
|
|
@@ -176,6 +194,8 @@ for collection scopes, offline replay, identity binding, limits, and privacy.
|
|
|
176
194
|
|---|---|
|
|
177
195
|
| `--output PATH` | Write HTML somewhere specific. |
|
|
178
196
|
| `--json PATH` | Also emit the embedded payload as a separate JSON file (useful for downstream tooling). |
|
|
197
|
+
| `--collect-workspace-usage` | Collect optional Workspace project-usage evidence; see the [Workspace usage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/WORKSPACE_USAGE.md). |
|
|
198
|
+
| `--workspace-usage PATH` | Replay saved Workspace usage evidence with the original snapshot. |
|
|
179
199
|
| `--title TEXT` | Override the document title. |
|
|
180
200
|
| `--color-pack CODE` | Select `default`, `ADBE`, `OMTR`, or `BLUE` for HTML presentation (case-sensitive). |
|
|
181
201
|
| `--exclude-orphans` | Default the catalog's references filter to "Referenced" — hides components nothing depends on. |
|
|
@@ -206,9 +226,9 @@ Color-pack selection changes HTML presentation only. It does not add to or
|
|
|
206
226
|
alter the embedded JSON or a `--json` sidecar. The pack CSS, report data, and
|
|
207
227
|
runtime remain embedded in the single offline HTML file.
|
|
208
228
|
|
|
209
|
-
The named packs are
|
|
210
|
-
|
|
211
|
-
|
|
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
|
|
212
232
|
and essential-graphics contrast pairs. Text labels and other non-color cues
|
|
213
233
|
continue to communicate state, and reviewed print colors keep reports legible
|
|
214
234
|
when printed.
|
|
@@ -222,9 +242,14 @@ Every report has two base top-level views:
|
|
|
222
242
|
|
|
223
243
|
Segment anatomy and calculated-metric anatomy are contextual detail content,
|
|
224
244
|
not separate navigation destinations. They open from the Catalog detail panel.
|
|
225
|
-
Segment anatomy renders nested containers and references
|
|
245
|
+
Segment anatomy renders nested containers and references. Calculated-metric
|
|
226
246
|
anatomy renders operations, operands, and metric references.
|
|
227
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
|
+
|
|
228
253
|
At most one conditional top-level view is added. With `--compare-to`, a
|
|
229
254
|
**Changes** view appears, listing components
|
|
230
255
|
added, removed, and modified relative to a baseline snapshot, with
|
|
@@ -237,18 +262,16 @@ per-interval change log. The window is capped at the 60 most recent
|
|
|
237
262
|
snapshots.
|
|
238
263
|
|
|
239
264
|
A trend directory must hold snapshots of a single implementation. If it mixes
|
|
240
|
-
CJA and AA snapshots, pass `--platform cja|aa` to select one
|
|
241
|
-
single-platform directory
|
|
242
|
-
mixes data views or report suites, the run stops
|
|
243
|
-
|
|
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
|
|
244
269
|
neither view ever diffs unrelated inventories. To compare or chart across
|
|
245
|
-
different data views or report suites on purpose
|
|
246
|
-
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
|
|
247
272
|
warning. Platform mismatches are always rejected. The report shown alongside
|
|
248
273
|
the trend is the newest usable snapshot in the directory.
|
|
249
274
|
|
|
250
|
-
- **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.
|
|
251
|
-
|
|
252
275
|
## Performance budget
|
|
253
276
|
|
|
254
277
|
The output is CI-gated against the budgets in
|
|
@@ -257,8 +280,8 @@ Build time and HTML size are enforced at every published tier (100 / 500 / 1,000
|
|
|
257
280
|
components). Browser-measured budgets are enforced at the 1,000-component tier
|
|
258
281
|
(initial render < 1s, filter/search < 150ms) and the 2,000-component tier
|
|
259
282
|
(< 2s, < 300ms), plus a 700ms cap on the graph view's main-thread block.
|
|
260
|
-
These guarantees cover up to 8,000 reference edges
|
|
261
|
-
|
|
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.
|
|
262
285
|
Functional browser tests cover Chromium and WebKit. A separate Chromium-only
|
|
263
286
|
performance gate measures all four component tiers; this is not a timing
|
|
264
287
|
guarantee for every branded browser.
|
|
@@ -302,8 +325,8 @@ the schema as loosely specified. Current-generator and private-corpus
|
|
|
302
325
|
validation is a separate, recorded release gate; see
|
|
303
326
|
[`docs/RELEASING.md`](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/RELEASING.md).
|
|
304
327
|
|
|
305
|
-
**CJA lineage.**
|
|
306
|
-
|
|
328
|
+
**CJA lineage.** `cja-lineage` adds a separate CJA-only command. Its documented
|
|
329
|
+
arguments and exit codes are described in the
|
|
307
330
|
[lineage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/LINEAGE.md).
|
|
308
331
|
Its embedded payload and Python modules are internal and do not extend the
|
|
309
332
|
catalog schema or JSON sidecar contract.
|
|
@@ -317,14 +340,15 @@ Warnings (snapshot generator newer than the tested version; 5,000+ component rep
|
|
|
317
340
|
Requires Python 3.11+ and [uv](https://github.com/astral-sh/uv).
|
|
318
341
|
|
|
319
342
|
```bash
|
|
320
|
-
uv sync --all-extras
|
|
321
|
-
uv run
|
|
343
|
+
uv sync --all-extras --dev --group browser # Full test environment, including SDK tests
|
|
344
|
+
uv run playwright install chromium webkit
|
|
345
|
+
uv run pytest # Run tests (auto-generates the large fixture on first run)
|
|
322
346
|
uv run ruff check # Lint
|
|
323
347
|
uv run ruff format # Auto-format
|
|
324
348
|
|
|
325
349
|
uv run python scripts/generate_examples.py # Regenerate examples/
|
|
326
|
-
uv run python scripts/check_color_pack_parity.py
|
|
327
|
-
--visualizer-sha <candidate-commit-sha>
|
|
350
|
+
uv run python scripts/check_color_pack_parity.py \
|
|
351
|
+
--visualizer-sha <candidate-commit-sha> \
|
|
328
352
|
--grader-root ../sdr-grader --grader-sha <linked-grader-commit-sha>
|
|
329
353
|
uv run python scripts/perf_check.py # Run the perf gate
|
|
330
354
|
uv run python scripts/check_markdown_links.py
|
|
@@ -337,7 +361,7 @@ uv run python scripts/package_smoke_check.py dist/packages/
|
|
|
337
361
|
|
|
338
362
|
See which Adobe Experience Platform (AEP) datasets feed your CJA Connections
|
|
339
363
|
and which Data Views use those Connections. The **`cja-lineage`** command is
|
|
340
|
-
included when you install `sdr-visualizer
|
|
364
|
+
included when you install `sdr-visualizer`.
|
|
341
365
|
|
|
342
366
|
Start with a saved dataset discovery JSON file from
|
|
343
367
|
`cja_auto_sdr --list-datasets --format json --output -`. This file lists datasets
|
|
@@ -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,39 +118,37 @@ 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
|
|
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.
|
|
104
123
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
Live AA mode likewise requires the separate
|
|
108
|
-
[`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable. Complete
|
|
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
|
|
|
124
138
|
Add project-usage evidence while generating the HTML. Install the independent
|
|
125
|
-
extra for your platform, then opt in to collection using an existing
|
|
126
|
-
source
|
|
139
|
+
extra for your platform with uv, then opt in to collection using an existing
|
|
140
|
+
credential source. The CJA and AA extras are independent; use the one that
|
|
141
|
+
matches your snapshot:
|
|
127
142
|
|
|
128
143
|
```bash
|
|
129
|
-
|
|
144
|
+
uv tool install 'sdr-visualizer[workspace-cja]'
|
|
130
145
|
sdr-visualizer snapshots/cja.json --collect-workspace-usage \
|
|
131
146
|
--workspace-usage-org 'EXAMPLE@AdobeOrg' \
|
|
132
147
|
--workspace-usage-config ../credentials/adobe.json --output cja.html
|
|
148
|
+
```
|
|
133
149
|
|
|
134
|
-
|
|
150
|
+
```bash
|
|
151
|
+
uv tool install 'sdr-visualizer[workspace-aa]'
|
|
135
152
|
sdr-visualizer snapshots/aa.json --collect-workspace-usage \
|
|
136
153
|
--workspace-usage-org 'EXAMPLE@AdobeOrg' --workspace-usage-company example-company \
|
|
137
154
|
--workspace-usage-config ../credentials/adobe.json --output aa.html
|
|
@@ -141,7 +158,8 @@ Each command automatically writes HTML and `<html-stem>.workspace-usage.json`.
|
|
|
141
158
|
Existing snapshots and live exporter modes work without exporter changes.
|
|
142
159
|
The catalog shows possible project references separately from component
|
|
143
160
|
dependencies, with check time and coverage limits. SDK matches remain
|
|
144
|
-
unverified candidates
|
|
161
|
+
unverified candidates. Empty results never mean a component is unused or safe
|
|
162
|
+
to delete.
|
|
145
163
|
Opening the HTML and replaying the saved usage file need no credentials or
|
|
146
164
|
network access. See the
|
|
147
165
|
[Workspace usage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/WORKSPACE_USAGE.md)
|
|
@@ -153,6 +171,8 @@ for collection scopes, offline replay, identity binding, limits, and privacy.
|
|
|
153
171
|
|---|---|
|
|
154
172
|
| `--output PATH` | Write HTML somewhere specific. |
|
|
155
173
|
| `--json PATH` | Also emit the embedded payload as a separate JSON file (useful for downstream tooling). |
|
|
174
|
+
| `--collect-workspace-usage` | Collect optional Workspace project-usage evidence; see the [Workspace usage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/WORKSPACE_USAGE.md). |
|
|
175
|
+
| `--workspace-usage PATH` | Replay saved Workspace usage evidence with the original snapshot. |
|
|
156
176
|
| `--title TEXT` | Override the document title. |
|
|
157
177
|
| `--color-pack CODE` | Select `default`, `ADBE`, `OMTR`, or `BLUE` for HTML presentation (case-sensitive). |
|
|
158
178
|
| `--exclude-orphans` | Default the catalog's references filter to "Referenced" — hides components nothing depends on. |
|
|
@@ -183,9 +203,9 @@ Color-pack selection changes HTML presentation only. It does not add to or
|
|
|
183
203
|
alter the embedded JSON or a `--json` sidecar. The pack CSS, report data, and
|
|
184
204
|
runtime remain embedded in the single offline HTML file.
|
|
185
205
|
|
|
186
|
-
The named packs are
|
|
187
|
-
|
|
188
|
-
|
|
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
|
|
189
209
|
and essential-graphics contrast pairs. Text labels and other non-color cues
|
|
190
210
|
continue to communicate state, and reviewed print colors keep reports legible
|
|
191
211
|
when printed.
|
|
@@ -199,9 +219,14 @@ Every report has two base top-level views:
|
|
|
199
219
|
|
|
200
220
|
Segment anatomy and calculated-metric anatomy are contextual detail content,
|
|
201
221
|
not separate navigation destinations. They open from the Catalog detail panel.
|
|
202
|
-
Segment anatomy renders nested containers and references
|
|
222
|
+
Segment anatomy renders nested containers and references. Calculated-metric
|
|
203
223
|
anatomy renders operations, operands, and metric references.
|
|
204
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
|
+
|
|
205
230
|
At most one conditional top-level view is added. With `--compare-to`, a
|
|
206
231
|
**Changes** view appears, listing components
|
|
207
232
|
added, removed, and modified relative to a baseline snapshot, with
|
|
@@ -214,18 +239,16 @@ per-interval change log. The window is capped at the 60 most recent
|
|
|
214
239
|
snapshots.
|
|
215
240
|
|
|
216
241
|
A trend directory must hold snapshots of a single implementation. If it mixes
|
|
217
|
-
CJA and AA snapshots, pass `--platform cja|aa` to select one
|
|
218
|
-
single-platform directory
|
|
219
|
-
mixes data views or report suites, the run stops
|
|
220
|
-
|
|
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
|
|
221
246
|
neither view ever diffs unrelated inventories. To compare or chart across
|
|
222
|
-
different data views or report suites on purpose
|
|
223
|
-
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
|
|
224
249
|
warning. Platform mismatches are always rejected. The report shown alongside
|
|
225
250
|
the trend is the newest usable snapshot in the directory.
|
|
226
251
|
|
|
227
|
-
- **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.
|
|
228
|
-
|
|
229
252
|
## Performance budget
|
|
230
253
|
|
|
231
254
|
The output is CI-gated against the budgets in
|
|
@@ -234,8 +257,8 @@ Build time and HTML size are enforced at every published tier (100 / 500 / 1,000
|
|
|
234
257
|
components). Browser-measured budgets are enforced at the 1,000-component tier
|
|
235
258
|
(initial render < 1s, filter/search < 150ms) and the 2,000-component tier
|
|
236
259
|
(< 2s, < 300ms), plus a 700ms cap on the graph view's main-thread block.
|
|
237
|
-
These guarantees cover up to 8,000 reference edges
|
|
238
|
-
|
|
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.
|
|
239
262
|
Functional browser tests cover Chromium and WebKit. A separate Chromium-only
|
|
240
263
|
performance gate measures all four component tiers; this is not a timing
|
|
241
264
|
guarantee for every branded browser.
|
|
@@ -279,8 +302,8 @@ the schema as loosely specified. Current-generator and private-corpus
|
|
|
279
302
|
validation is a separate, recorded release gate; see
|
|
280
303
|
[`docs/RELEASING.md`](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/RELEASING.md).
|
|
281
304
|
|
|
282
|
-
**CJA lineage.**
|
|
283
|
-
|
|
305
|
+
**CJA lineage.** `cja-lineage` adds a separate CJA-only command. Its documented
|
|
306
|
+
arguments and exit codes are described in the
|
|
284
307
|
[lineage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/LINEAGE.md).
|
|
285
308
|
Its embedded payload and Python modules are internal and do not extend the
|
|
286
309
|
catalog schema or JSON sidecar contract.
|
|
@@ -294,14 +317,15 @@ Warnings (snapshot generator newer than the tested version; 5,000+ component rep
|
|
|
294
317
|
Requires Python 3.11+ and [uv](https://github.com/astral-sh/uv).
|
|
295
318
|
|
|
296
319
|
```bash
|
|
297
|
-
uv sync --all-extras
|
|
298
|
-
uv run
|
|
320
|
+
uv sync --all-extras --dev --group browser # Full test environment, including SDK tests
|
|
321
|
+
uv run playwright install chromium webkit
|
|
322
|
+
uv run pytest # Run tests (auto-generates the large fixture on first run)
|
|
299
323
|
uv run ruff check # Lint
|
|
300
324
|
uv run ruff format # Auto-format
|
|
301
325
|
|
|
302
326
|
uv run python scripts/generate_examples.py # Regenerate examples/
|
|
303
|
-
uv run python scripts/check_color_pack_parity.py
|
|
304
|
-
--visualizer-sha <candidate-commit-sha>
|
|
327
|
+
uv run python scripts/check_color_pack_parity.py \
|
|
328
|
+
--visualizer-sha <candidate-commit-sha> \
|
|
305
329
|
--grader-root ../sdr-grader --grader-sha <linked-grader-commit-sha>
|
|
306
330
|
uv run python scripts/perf_check.py # Run the perf gate
|
|
307
331
|
uv run python scripts/check_markdown_links.py
|
|
@@ -314,7 +338,7 @@ uv run python scripts/package_smoke_check.py dist/packages/
|
|
|
314
338
|
|
|
315
339
|
See which Adobe Experience Platform (AEP) datasets feed your CJA Connections
|
|
316
340
|
and which Data Views use those Connections. The **`cja-lineage`** command is
|
|
317
|
-
included when you install `sdr-visualizer
|
|
341
|
+
included when you install `sdr-visualizer`.
|
|
318
342
|
|
|
319
343
|
Start with a saved dataset discovery JSON file from
|
|
320
344
|
`cja_auto_sdr --list-datasets --format json --output -`. This file lists datasets
|
|
@@ -43,9 +43,14 @@ Alternatively use `--profile profile-name`, or omit both credential selectors
|
|
|
43
43
|
to use the upstream default credential route. `--profile` and `--config-file`
|
|
44
44
|
are mutually exclusive and apply only to `--live`. The executable and explicit
|
|
45
45
|
configuration paths must be absolute. Live discovery currently accepts exactly
|
|
46
|
-
`cja_auto_sdr` 3.11.8 and 3.12.
|
|
47
|
-
qualification; saved discovery is validated by shape rather than
|
|
48
|
-
version.
|
|
46
|
+
`cja_auto_sdr` 3.11.8, 3.12.0, 3.12.2, and 3.12.4. Other versions fail closed pending
|
|
47
|
+
compatibility qualification; saved discovery is validated by shape rather than
|
|
48
|
+
generator version. Version 3.12.2 was qualified against the offline discovery
|
|
49
|
+
contract with synthetic inventories and blocked network access. That compatibility
|
|
50
|
+
check does not qualify credentials, network behavior, or a live release. No
|
|
51
|
+
generator is installed automatically. Version 3.12.4 was qualified with fresh
|
|
52
|
+
read-only dataset discovery and saved-shape validation; this does not imply
|
|
53
|
+
complete visibility into every dataset or Connection.
|
|
49
54
|
|
|
50
55
|
The command currently targets macOS and Linux, using POSIX process and
|
|
51
56
|
owner-only output protections. Windows execution is not qualified. The generated
|
|
@@ -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
|