:art: Diagram as Code for prototyping cloud system architectures
This report summarizes scanner evidence for mingrammer/diagrams, a Python project with 42,698 GitHub stars. SynthScan examined 49,553 lines of code across 379 source files, recording 290 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 16.2 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 277 finding(s).
Are imports declared and package/API names verified? 2 finding(s).
Are wrappers, guards, and repeated structures necessary? 47 finding(s).
Which changes need focused human review? 290 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 290 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | diagrams/openstack/containerservices.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/user.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/billing.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/sharedservices.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/deployment.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/workloadprovisioning.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/monitoring.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/lifecyclemanagement.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/baremetal.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/optimization.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/frontend.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/orchestration.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/operations.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/nfv.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/networking.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/packaging.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/storage.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/adjacentenablers.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/apiproxies.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/applicationlifecycle.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/multiregion.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/openstack/compute.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/outscale/security.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/outscale/storage.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/outscale/network.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/outscale/compute.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/elastic/elasticsearch.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/elastic/security.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/elastic/saas.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/elastic/observability.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/elastic/orchestration.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/elastic/beats.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/elastic/agent.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/elastic/enterprisesearch.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/intune.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/databases.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/web.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/monitor.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/containers.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/database.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/managementgovernance.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/security.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/mobile.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/other.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/hybridmulticloud.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/appservices.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/devops.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/aimachinelearning.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/integration.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/ml.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/menu.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/networking.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/storage.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/network.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/azureecosystem.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/blockchain.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/newicons.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/analytics.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/mixedreality.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| MEDIUM | diagrams/azure/migration.py | 1 | # This module is automatically generated by autogen.sh. DO NOT EDIT. | COMMENT |
| 174 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | diagrams/__init__.py | 25 | except OSError: # pragma: no cover - unreadable install location | CODE |
| HIGH | tests/test_diagram.py | 148 | except OSError: | CODE |
| HIGH | tests/test_diagram.py | 223 | except OSError: | CODE |
| HIGH | tests/test_diagram.py | 450 | except FileNotFoundError: | CODE |
| HIGH | tests/test_diagram.py | 23 | except FileNotFoundError: | CODE |
| HIGH | tests/test_c4.py | 20 | except FileNotFoundError: | CODE |
| HIGH | tests/test_cli.py | 37 | except FileNotFoundError: | CODE |
| HIGH | tests/test_cli.py | 49 | except FileNotFoundError: | CODE |
| HIGH | tests/test_cli.py | 75 | except FileNotFoundError: | CODE |
| HIGH | tests/test_cli.py | 70 | except FileNotFoundError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | playground/scripts/test_gen_catalog.py | 26 | def test_catalog_records_aliases(): | CODE |
| LOW⚡ | playground/scripts/test_gen_catalog.py | 33 | def test_catalog_signatures_have_core_classes(): | CODE |
| LOW⚡ | playground/scripts/test_gen_catalog.py | 40 | def test_all_catalog_icons_exist_on_disk(): | CODE |
| LOW | playground/scripts/test_gen_catalog.py | 51 | def test_slim_wheel_has_no_resources(tmp_path): | CODE |
| LOW⚡ | playground/scripts/test_shim.py | 53 | def test_no_output_files_written(tmp_path, monkeypatch): | STRING |
| LOW⚡ | playground/scripts/test_shim.py | 59 | def test_captures_multiple_diagrams(): | STRING |
| LOW⚡ | playground/scripts/test_shim.py | 65 | def test_explicit_render_call_not_duplicated(): | STRING |
| LOW | playground/scripts/test_shim.py | 77 | def test_error_returns_clean_traceback(): | STRING |
| LOW | playground/scripts/test_shim.py | 90 | def test_exception_inside_diagram_block_not_captured(): | STRING |
| LOW | playground/scripts/test_shim.py | 108 | def test_json_sabotage_still_returns_json(): | STRING |
| LOW | playground/scripts/test_shim.py | 115 | def test_json_encoder_sabotage_still_returns_json(): | STRING |
| LOW | tests/test_diagram.py | 246 | def test_nodes_to_node_with_additional_attributes(self): | CODE |
| LOW | tests/test_diagram.py | 260 | def test_node_to_node_with_attributes(self): | CODE |
| LOW | tests/test_diagram.py | 281 | def test_node_to_node_with_additional_attributes(self): | CODE |
| LOW | tests/test_diagram.py | 305 | def test_nodes_to_node_with_attributes_loop(self): | CODE |
| LOW | tests/test_diagram.py | 330 | def test_nodes_to_node_with_attributes_bothdirectional(self): | CODE |
| LOW | tests/test_diagram.py | 341 | def test_nodes_to_node_with_attributes_bidirectional(self): | CODE |
| LOW | tests/test_diagram.py | 352 | def test_nodes_to_node_with_attributes_onedirectional(self): | CODE |
| LOW | tests/test_diagram.py | 368 | def test_nodes_to_node_with_additional_attributes_directional(self): | CODE |
| LOW | tests/test_diagram.py | 407 | def test_resources_exist_and_render(self): | CODE |
| LOW⚡ | tests/test_check_release_version.py | 8 | def test_accepts_tag_matching_the_project_version(self): | CODE |
| LOW⚡ | tests/test_check_release_version.py | 11 | def test_accepts_tag_without_the_v_prefix(self): | CODE |
| LOW⚡ | tests/test_check_release_version.py | 14 | def test_rejects_tag_ahead_of_the_project_version(self): | CODE |
| LOW⚡ | tests/test_check_release_version.py | 21 | def test_rejects_tag_that_is_not_a_version(self): | CODE |
| LOW⚡ | tests/test_check_release_version.py | 28 | def test_reads_the_version_out_of_pyproject_toml(self): | CODE |
| LOW⚡ | tests/test_check_release_version.py | 32 | def test_tolerates_toml_the_stdlib_parser_accepts(self): | CODE |
| LOW⚡ | tests/test_check_release_version.py | 41 | def test_reports_a_missing_version_as_a_check_error_not_a_traceback(self): | CODE |
| LOW | tests/test_c4.py | 60 | def test_edge_without_constraint(self): | CODE |
| LOW | tests/test_packaging.py | 68 | def test_declared_console_scripts_are_importable(self): | CODE |
| LOW | tests/test_packaging.py | 85 | def test_every_node_icon_file_exists(self): | CODE |
| LOW | tests/test_packaging.py | 107 | def test_runtime_version_matches_distribution_metadata(self): | CODE |
| LOW | tests/test_cli.py | 52 | def test_run_with_multiple_files(self): | STRING |
| LOW⚡ | tests/test_cli.py | 78 | def test_run_with_no_arguments(self): | STRING |
| LOW⚡ | tests/test_cli.py | 85 | def test_run_with_nonexistent_file(self): | STRING |
| LOW⚡ | tests/test_cli.py | 90 | def test_run_with_invalid_python_code(self): | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/nodes/elastic.md | 131 | ## elastic.orchestration | COMMENT |
| MEDIUM | docs/nodes/openstack.md | 137 | ## openstack.orchestration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playground/src/components/ExportBar.tsx | 61 | <path d="M2.6 9V2.9a1 1 0 0 1 1-1H9" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" /> | COMMENT |
| LOW | playground/src/components/NodeSearch.tsx | 81 | // portal straight onto <body> — several ancestors (e.g. `.node-search`'s | COMMENT |
| LOW | .devcontainer/devcontainer.json | 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playground/scripts/gen_catalog.py | 26 | CODE | |
| LOW | diagrams/gis/cplusplus.py | 11 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playground/scripts/gen_catalog.py | 42 | # Check if icon file exists on disk | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playground/scripts/gen_catalog.py | 77 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playground/src/worker/shim.py | 63 | except Exception as exc: # json machinery sabotaged or payload non-serializable | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | diagrams/__init__.py | 133 | CODE |