From f093211a96f90e277e7a182165b9fabb22acfc52 Mon Sep 17 00:00:00 2001 From: "codeboarding-review[bot]" Date: Tue, 28 Jul 2026 17:25:46 +0000 Subject: [PATCH] chore(codeboarding): sync architecture baseline --- .codeboarding/Analysis_Orchestrator.md | 123 - .codeboarding/Documentation_CTA_Generator.md | 82 - .codeboarding/Telemetry_Feedback_Provider.md | 75 - .../Visual_Diffing_Rendering_Engine.md | 108 - .codeboarding/analysis.json | 4178 ++--------------- .codeboarding/fingerprint.json | 16 +- .codeboarding/health/health_report.json | 32 +- .codeboarding/overview.md | 130 +- .codeboarding/static_analysis.pkl | Bin 56795 -> 49053 bytes .codeboarding/static_analysis.sha | 2 +- docs/development/architecture.md | 490 +- 11 files changed, 479 insertions(+), 4757 deletions(-) delete mode 100644 .codeboarding/Analysis_Orchestrator.md delete mode 100644 .codeboarding/Documentation_CTA_Generator.md delete mode 100644 .codeboarding/Telemetry_Feedback_Provider.md delete mode 100644 .codeboarding/Visual_Diffing_Rendering_Engine.md diff --git a/.codeboarding/Analysis_Orchestrator.md b/.codeboarding/Analysis_Orchestrator.md deleted file mode 100644 index 8e9fbb7..0000000 --- a/.codeboarding/Analysis_Orchestrator.md +++ /dev/null @@ -1,123 +0,0 @@ -```mermaid -graph LR - Lifecycle_Dispatcher["Lifecycle Dispatcher"] - Strategy_Scope_Resolver["Strategy & Scope Resolver"] - State_Delta_Manager["State & Delta Manager"] - Post_Analysis_Auditor["Post-Analysis Auditor"] - Lifecycle_Dispatcher -- "orchestrates analysis strategy selection" --> Strategy_Scope_Resolver - Lifecycle_Dispatcher -- "manages execution context and state validation" --> State_Delta_Manager - Lifecycle_Dispatcher -- "triggers quality and health reporting" --> Post_Analysis_Auditor - Strategy_Scope_Resolver -- "queries state for incremental change detection" --> State_Delta_Manager - State_Delta_Manager -- "retrieves configuration defaults for state transitions" --> Strategy_Scope_Resolver - Post_Analysis_Auditor -- "consumes persisted analysis artifacts" --> State_Delta_Manager -``` - -[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) - -## Details - -Acts as the central controller and entry point for the Python execution environment. It manages the analysis lifecycle, determines whether to perform a full or incremental scan based on existing metadata, and coordinates the execution of the static analysis engine. - -### Lifecycle Dispatcher -The primary entry point and command-line interface handler that interprets execution modes and manages the high-level sequence of operations. - - -**Related Classes/Methods**: - -- `scripts.engine_adapter.main`:658-764 -- `scripts.engine_adapter.run_base`:398-401 -- `scripts.engine_adapter.run_seed`:404-433 -- `scripts.engine_adapter.run_render`:572-583 - - - -**Source Files:** - -- [`scripts/engine_adapter.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py) - - `scripts.engine_adapter._require_engine` ([L113-L129](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L113-L129)) - Function - - `scripts.engine_adapter._is_quota_exhausted` ([L156-L171](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L156-L171)) - Function - - `scripts.engine_adapter._flag_quota_exhausted` ([L174-L183](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L174-L183)) - Function - - `scripts.engine_adapter._metadata_commit` ([L271-L273](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L271-L273)) - Function - - `scripts.engine_adapter.baseline_info` ([L299-L309](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L299-L309)) - Function - - `scripts.engine_adapter.run_base` ([L398-L401](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L398-L401)) - Function - - `scripts.engine_adapter.run_seed` ([L404-L433](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L404-L433)) - Function - - `scripts.engine_adapter.run_render` ([L572-L583](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L572-L583)) - Function - - `scripts.engine_adapter.run_concat` ([L586-L599](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L586-L599)) - Function - - `scripts.engine_adapter.main` ([L658-L764](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L658-L764)) - Function - - -### Strategy & Scope Resolver -Responsible for determining technical parameters of the analysis by loading metadata and calculating analysis depth based on configuration and history. - - -**Related Classes/Methods**: - -- `scripts.engine_adapter.run_analyze`:520-569 -- `scripts.engine_adapter._load_metadata`:217-222 -- `scripts.engine_adapter._resolve_depth`:232-261 -- `scripts.engine_adapter.baseline_depth`:312-327 - - - -**Source Files:** - -- [`scripts/engine_adapter.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py) - - `scripts.engine_adapter._max_depth` ([L146-L147](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L146-L147)) - Function - - `scripts.engine_adapter._load_metadata` ([L217-L222](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L217-L222)) - Function - - `scripts.engine_adapter._resolve_depth` ([L232-L261](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L232-L261)) - Function - - `scripts.engine_adapter._analysis_depth_or_default` ([L264-L268](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L264-L268)) - Function - - `scripts.engine_adapter.baseline_depth` ([L312-L327](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L312-L327)) - Function - - `scripts.engine_adapter.run_analyze` ([L520-L569](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L520-L569)) - Function - - -### State & Delta Manager -Manages stateful incremental logic, comparing commits against baselines, validating analysis integrity, and providing filesystem context. - - -**Related Classes/Methods**: - -- `scripts.engine_adapter._incremental_or_full`:436-480 -- `scripts.engine_adapter.run_head`:483-517 -- `scripts.engine_adapter.validate_base_analysis`:330-395 -- `scripts.engine_adapter._run_ctx`:190-195 - - - -**Source Files:** - -- [`scripts/engine_adapter.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py) - - `scripts.engine_adapter._log_path` ([L186-L187](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L186-L187)) - Function - - `scripts.engine_adapter._run_ctx` ([L190-L195](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L190-L195)) - Function - - `scripts.engine_adapter._clear_dir` ([L198-L204](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L198-L204)) - Function - - `scripts.engine_adapter._load_analysis` ([L207-L214](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L207-L214)) - Function - - `scripts.engine_adapter._metadata_depth` ([L225-L229](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L225-L229)) - Function - - `scripts.engine_adapter._analysis_model_error` ([L276-L296](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L276-L296)) - Function - - `scripts.engine_adapter.validate_base_analysis` ([L330-L395](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L330-L395)) - Function - - `scripts.engine_adapter._incremental_or_full` ([L436-L480](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L436-L480)) - Function - - `scripts.engine_adapter.run_head` ([L483-L517](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L483-L517)) - Function - - `scripts.engine_adapter.run_analyze.full` ([L541-L548](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L541-L548)) - Function - - -### Post-Analysis Auditor -A diagnostic component that parses generated metadata to produce health reports and identify architectural violations. - - -**Related Classes/Methods**: - -- `scripts.engine_adapter.run_health`:629-655 -- `scripts.engine_adapter._count_health_report`:618-626 -- `scripts.engine_adapter._count_report_issues`:602-615 - - - -**Source Files:** - -- [`scripts/engine_adapter.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py) - - `scripts.engine_adapter._count_report_issues` ([L602-L615](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L602-L615)) - Function - - `scripts.engine_adapter._count_health_report` ([L618-L626](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L618-L626)) - Function - - `scripts.engine_adapter.run_health` ([L629-L655](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L629-L655)) - Function - - - - -### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) \ No newline at end of file diff --git a/.codeboarding/Documentation_CTA_Generator.md b/.codeboarding/Documentation_CTA_Generator.md deleted file mode 100644 index d30cf46..0000000 --- a/.codeboarding/Documentation_CTA_Generator.md +++ /dev/null @@ -1,82 +0,0 @@ -```mermaid -graph LR - Documentation_Workflow_Orchestrator["Documentation Workflow Orchestrator"] - Architectural_Diff_Engine["Architectural Diff Engine"] - Markdown_Diagram_Renderer["Markdown & Diagram Renderer"] - Navigation_Linkage_Provider["Navigation & Linkage Provider"] - Documentation_Workflow_Orchestrator -- "Orchestrates state-aware component filtering" --> Architectural_Diff_Engine - Documentation_Workflow_Orchestrator -- "Triggers documentation synthesis" --> Markdown_Diagram_Renderer - Architectural_Diff_Engine -- "Persists filtered architectural state" --> Documentation_Workflow_Orchestrator - Markdown_Diagram_Renderer -- "Queries structural deltas for visual highlighting" --> Architectural_Diff_Engine - Markdown_Diagram_Renderer -- "Resolves interactive navigation paths" --> Navigation_Linkage_Provider - Navigation_Linkage_Provider -- "Provides CLI-driven content updates" --> Markdown_Diagram_Renderer -``` - -[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) - -## Details - -Maps the analyzed code structure back to the physical file system to generate developer-centric documentation. It creates markdown files for components and "Call-to-Action" (CTA) links that facilitate navigation between the code and the architectural view. - -### Documentation Workflow Orchestrator -Manages the end-to-end lifecycle of documentation generation, coordinating analysis artifacts, change detection, and the rendering process. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_component_files.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py) - - `scripts.build_component_files._subtree_files` ([L65-L74](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L65-L74)) - Function - - `scripts.build_component_files._changed_files_for` ([L88-L101](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L88-L101)) - Function - - -### Architectural Diff Engine -Analyzes the delta between architectural states to identify modified components and structural shifts for incremental updates. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_component_files.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py) - - `scripts.build_component_files._walk` ([L56-L62](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L56-L62)) - Function - - `scripts.build_component_files._subtree_methods` ([L77-L85](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L77-L85)) - Function -- [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) - - `scripts.build_cta._join_or` ([L84-L90](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L84-L90)) - Function - - -### Markdown & Diagram Renderer -Translates component tree and diff data into structured Markdown and Mermaid.js diagrams. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) - - `scripts.build_cta.detect_editors` ([L37-L49](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L37-L49)) - Function - - `scripts.build_cta.build_cta` ([L93-L152](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L93-L152)) - Function - - `scripts.build_cta.build_cta.link` ([L126-L127](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L126-L127)) - Function - - -### Navigation & Linkage Provider -Generates interactive CTA links and sanitizes identifiers for documentation navigation. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) - - `scripts.build_cta.webview_url` ([L63-L81](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L63-L81)) - Function - - `scripts.build_cta.main` ([L155-L189](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L155-L189)) - Function - - - - -### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) \ No newline at end of file diff --git a/.codeboarding/Telemetry_Feedback_Provider.md b/.codeboarding/Telemetry_Feedback_Provider.md deleted file mode 100644 index 54a7f44..0000000 --- a/.codeboarding/Telemetry_Feedback_Provider.md +++ /dev/null @@ -1,75 +0,0 @@ -```mermaid -graph LR - Contextual_Metadata_Extractor["Contextual Metadata Extractor"] - Feedback_Assembler["Feedback Assembler"] - Remote_Dispatcher["Remote Dispatcher"] - Feedback_Assembler -- "queries architectural context" --> Contextual_Metadata_Extractor - Feedback_Assembler -- "utilizes identity and sanitization utilities" --> Remote_Dispatcher - Remote_Dispatcher -- "verifies transmission policy" --> Contextual_Metadata_Extractor - Remote_Dispatcher -- "orchestrates payload construction" --> Feedback_Assembler -``` - -[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) - -## Details - -A specialized component that handles the collection and transmission of execution metrics and user feedback. It ensures data is anonymized and transmitted securely to the remote backend for service improvement. - -### Contextual Metadata Extractor -Responsible for mining the results of the architectural analysis to provide context for the telemetry by identifying impacted components and calculating metrics. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/submit_feedback.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py) - - `scripts.submit_feedback.telemetry_disabled` ([L27-L31](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L27-L31)) - Function - - `scripts.submit_feedback.resolve_key` ([L34-L35](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L34-L35)) - Function - - `scripts.submit_feedback.resolve_host` ([L38-L40](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L38-L40)) - Function - - `scripts.submit_feedback.resolve_command` ([L43-L44](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L43-L44)) - Function - - `scripts.submit_feedback.resolve_max_chars` ([L47-L52](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L47-L52)) - Function - - `scripts.submit_feedback.post` ([L135-L144](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L135-L144)) - Function - - -### Feedback Assembler -Acts as the data transformation layer that aggregates environment variables, user feedback, and architectural context into a standardized JSON schema. - - -**Related Classes/Methods**: - -- `scripts.submit_feedback.build_payload`:119-132 - - - -**Source Files:** - -- [`scripts/submit_feedback.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py) - - `scripts.submit_feedback._first` ([L79-L84](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L79-L84)) - Function - - `scripts.submit_feedback.build_properties` ([L94-L116](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L94-L116)) - Function - - `scripts.submit_feedback.build_payload` ([L119-L132](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L119-L132)) - Function - - -### Remote Dispatcher -Manages the egress of data to the external service, handling HTTP authentication, POST requests, and response management. - - -**Related Classes/Methods**: - -- `scripts.submit_feedback.main`:147-172 - - - -**Source Files:** - -- [`scripts/submit_feedback.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py) - - `scripts.submit_feedback.extract_feedback` ([L55-L69](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L55-L69)) - Function - - `scripts.submit_feedback.cap_feedback` ([L72-L76](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L72-L76)) - Function - - `scripts.submit_feedback.distinct_id` ([L87-L91](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L87-L91)) - Function - - `scripts.submit_feedback.main` ([L147-L172](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L147-L172)) - Function - - - - -### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) \ No newline at end of file diff --git a/.codeboarding/Visual_Diffing_Rendering_Engine.md b/.codeboarding/Visual_Diffing_Rendering_Engine.md deleted file mode 100644 index ea135d2..0000000 --- a/.codeboarding/Visual_Diffing_Rendering_Engine.md +++ /dev/null @@ -1,108 +0,0 @@ -```mermaid -graph LR - Diff_Analysis_Change_Detection["Diff Analysis & Change Detection"] - Mermaid_Syntax_Generation_Structural_Rendering["Mermaid Syntax Generation & Structural Rendering"] - UI_Enhancement_CTA_Integration["UI Enhancement & CTA Integration"] - Rendering_Orchestration["Rendering Orchestration"] - Diff_Analysis_Change_Detection -- "Provides filtered architectural delta for visualization" --> Mermaid_Syntax_Generation_Structural_Rendering - Diff_Analysis_Change_Detection -- "Supplies metadata for interactive elements" --> UI_Enhancement_CTA_Integration - Mermaid_Syntax_Generation_Structural_Rendering -- "calls" --> Diff_Analysis_Change_Detection - Mermaid_Syntax_Generation_Structural_Rendering -- "Delegates visual styling and metadata enrichment" --> UI_Enhancement_CTA_Integration - Mermaid_Syntax_Generation_Structural_Rendering -- "calls" --> Rendering_Orchestration - UI_Enhancement_CTA_Integration -- "Queries change status for visual highlighting" --> Diff_Analysis_Change_Detection - UI_Enhancement_CTA_Integration -- "calls" --> Mermaid_Syntax_Generation_Structural_Rendering - UI_Enhancement_CTA_Integration -- "calls" --> Rendering_Orchestration - Rendering_Orchestration -- "Triggers structural delta computation" --> Diff_Analysis_Change_Detection - Rendering_Orchestration -- "Orchestrates diagram generation lifecycle" --> Mermaid_Syntax_Generation_Structural_Rendering -``` - -[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) - -## Details - -Responsible for the structural comparison between the current code state and the baseline. It identifies modified components, relations, and methods, then transforms these differences into Mermaid.js syntax for visual representation within GitHub. - -### Diff Analysis & Change Detection -Identifies the structural delta between the current code state and the baseline, filtering for architecturally significant modifications. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_component_files.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py) - - `scripts.build_component_files._block` ([L104-L121](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L104-L121)) - Function - - `scripts.build_component_files.render_component_files` ([L124-L175](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L124-L175)) - Function - - `scripts.build_component_files.main` ([L178-L216](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L178-L216)) - Function -- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid._comp_id` ([L111-L112](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L111-L112)) - Function - - `scripts.diff_to_mermaid._Scope` ([L316-L360](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L316-L360)) - Class - - `scripts.diff_to_mermaid._Scope.__init__` ([L327-L349](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L327-L349)) - Method - - `scripts.diff_to_mermaid._Scope.resolve` ([L351-L360](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L351-L360)) - Method - - -### Mermaid Syntax Generation & Structural Rendering -Maps architectural entities and their relationships to Mermaid.js syntax, managing hierarchical scoping and visual styling. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid._comp_name` ([L115-L116](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L115-L116)) - Function - - `scripts.diff_to_mermaid._file_methods` ([L119-L120](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L119-L120)) - Function - - `scripts.diff_to_mermaid._diff_relations` ([L153-L199](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L153-L199)) - Function - - `scripts.diff_to_mermaid._diff_components` ([L213-L258](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L213-L258)) - Function - - `scripts.diff_to_mermaid._esc` ([L298-L304](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L298-L304)) - Function - - `scripts.diff_to_mermaid._display_status` ([L312-L313](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L312-L313)) - Function - - `scripts.diff_to_mermaid._filter_changed` ([L363-L405](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L363-L405)) - Function - - `scripts.diff_to_mermaid._filter_changed.touches` ([L396-L398](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L396-L398)) - Function - - `scripts.diff_to_mermaid._count_changed_components` ([L430-L437](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L430-L437)) - Function - - `scripts.diff_to_mermaid._has_changed_relations` ([L440-L444](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L440-L444)) - Function - - -### UI Enhancement & CTA Integration -Enriches rendered diagrams with interactive elements, generating deep links for IDEs and webview URLs. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid.load_analysis` ([L87-L105](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L87-L105)) - Function - - `scripts.diff_to_mermaid._rel_key` ([L147-L150](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L147-L150)) - Function - - `scripts.diff_to_mermaid.build_diff` ([L261-L268](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L261-L268)) - Function - - `scripts.diff_to_mermaid._sanitize` ([L274-L276](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L274-L276)) - Function - - `scripts.diff_to_mermaid._truncate` ([L307-L309](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L307-L309)) - Function - - `scripts.diff_to_mermaid.render_mermaid` ([L447-L572](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L447-L572)) - Function - - `scripts.diff_to_mermaid.render_mermaid.build` ([L475-L548](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L475-L548)) - Function - - `scripts.diff_to_mermaid.render_mermaid.build.emit_edges` ([L486-L498](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L486-L498)) - Function - - `scripts.diff_to_mermaid.render_mermaid.build.emit_level` ([L500-L517](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L500-L517)) - Function - - `scripts.diff_to_mermaid.main` ([L578-L619](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L578-L619)) - Function - - -### Rendering Orchestration -Acts as the controller for the subsystem, managing the execution lifecycle and sequencing the flow from diff detection to final output. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid._methods_by_file` ([L123-L130](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L123-L130)) - Function - - `scripts.diff_to_mermaid._has_structural_changes` ([L133-L136](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L133-L136)) - Function - - `scripts.diff_to_mermaid._has_method_changes` ([L139-L144](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L139-L144)) - Function - - `scripts.diff_to_mermaid._has_changes` ([L202-L210](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L202-L210)) - Function - - `scripts.diff_to_mermaid._init_directive` ([L408-L427](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L408-L427)) - Function - - - - -### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) \ No newline at end of file diff --git a/.codeboarding/analysis.json b/.codeboarding/analysis.json index 719002d..be05731 100644 --- a/.codeboarding/analysis.json +++ b/.codeboarding/analysis.json @@ -1,9 +1,10 @@ { "metadata": { - "generated_at": "2026-07-15T21:01:11.753824+00:00", - "source_tree_hash": "91cb52b60803e355538740ffa10839c03c064d55782ee856b735690c07c0aea0", + "generated_at": "2026-07-28T17:25:26.552878+00:00", + "source_tree_hash": "9e7b2fa37f8057e5169529023cc8b5410604019d755e7b5b745702d4018e9e47", "repo_name": "CodeBoarding-action", - "depth_level": 2, + "depth_level": 1, + "depth_cap": 2, "file_coverage_summary": { "total_files": 20, "analyzed": 5, @@ -14,7 +15,7 @@ } } }, - "description": "A stateful pipeline architecture for a CI/CD governance tool, orchestrating static analysis, visual diffing, documentation generation, and telemetry feedback loops to provide architectural insights.", + "description": "The CodeBoarding GitHub Action functions as a post-processing pipeline for static analysis in CI/CD environments. It manages analysis state, performs structural diffing to identify architectural changes, renders visual documentation via Mermaid.js, generates interactive developer call-to-actions, and handles telemetry and feedback collection to provide actionable architectural insights.", "files": { "scripts/engine_adapter.py": { "method_keys": [ @@ -48,7 +49,8 @@ "scripts/engine_adapter.py|scripts.engine_adapter.run_health", "scripts/engine_adapter.py|scripts.engine_adapter.main" ], - "content_hash": "b84ea0daacfb2846" + "content_hash": "b84ea0daacfb2846", + "module_hash": "a8917ac75ea9eb87" }, "scripts/build_component_files.py": { "method_keys": [ @@ -60,7 +62,8 @@ "scripts/build_component_files.py|scripts.build_component_files.render_component_files", "scripts/build_component_files.py|scripts.build_component_files.main" ], - "content_hash": "aec54432fc8adf81" + "content_hash": "aec54432fc8adf81", + "module_hash": "965c24aafcb191a4" }, "scripts/diff_to_mermaid.py": { "method_keys": [ @@ -98,18 +101,8 @@ "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main" ], - "content_hash": "5ce398438ebca41e" - }, - "scripts/build_cta.py": { - "method_keys": [ - "scripts/build_cta.py|scripts.build_cta.detect_editors", - "scripts/build_cta.py|scripts.build_cta.webview_url", - "scripts/build_cta.py|scripts.build_cta._join_or", - "scripts/build_cta.py|scripts.build_cta.build_cta", - "scripts/build_cta.py|scripts.build_cta.build_cta.link", - "scripts/build_cta.py|scripts.build_cta.main" - ], - "content_hash": "8b2953156606caab" + "content_hash": "5ce398438ebca41e", + "module_hash": "bffccaa0e4c9a71a" }, "scripts/submit_feedback.py": { "method_keys": [ @@ -127,7 +120,20 @@ "scripts/submit_feedback.py|scripts.submit_feedback.post", "scripts/submit_feedback.py|scripts.submit_feedback.main" ], - "content_hash": "71ccef667b21feda" + "content_hash": "71ccef667b21feda", + "module_hash": "a45384a4b629d0a1" + }, + "scripts/build_cta.py": { + "method_keys": [ + "scripts/build_cta.py|scripts.build_cta.detect_editors", + "scripts/build_cta.py|scripts.build_cta.webview_url", + "scripts/build_cta.py|scripts.build_cta._join_or", + "scripts/build_cta.py|scripts.build_cta.build_cta", + "scripts/build_cta.py|scripts.build_cta.build_cta.link", + "scripts/build_cta.py|scripts.build_cta.main" + ], + "content_hash": "8b2953156606caab", + "module_hash": "ece0241a15adac56" } }, "methods_index": { @@ -683,54 +689,6 @@ "type": "FUNCTION", "content_hash": "fbbd7d2293c174c9" }, - "scripts/build_cta.py|scripts.build_cta.detect_editors": { - "file_path": "scripts/build_cta.py", - "qualified_name": "scripts.build_cta.detect_editors", - "start_line": 37, - "end_line": 49, - "type": "FUNCTION", - "content_hash": "fe14c8fd463db78d" - }, - "scripts/build_cta.py|scripts.build_cta.webview_url": { - "file_path": "scripts/build_cta.py", - "qualified_name": "scripts.build_cta.webview_url", - "start_line": 63, - "end_line": 81, - "type": "FUNCTION", - "content_hash": "2176a1e7cfb729b5" - }, - "scripts/build_cta.py|scripts.build_cta._join_or": { - "file_path": "scripts/build_cta.py", - "qualified_name": "scripts.build_cta._join_or", - "start_line": 84, - "end_line": 90, - "type": "FUNCTION", - "content_hash": "a0c0b40b4c2adc89" - }, - "scripts/build_cta.py|scripts.build_cta.build_cta": { - "file_path": "scripts/build_cta.py", - "qualified_name": "scripts.build_cta.build_cta", - "start_line": 93, - "end_line": 152, - "type": "FUNCTION", - "content_hash": "4a7e2ef5efd4b5ea" - }, - "scripts/build_cta.py|scripts.build_cta.build_cta.link": { - "file_path": "scripts/build_cta.py", - "qualified_name": "scripts.build_cta.build_cta.link", - "start_line": 126, - "end_line": 127, - "type": "FUNCTION", - "content_hash": "023fa6697850117d" - }, - "scripts/build_cta.py|scripts.build_cta.main": { - "file_path": "scripts/build_cta.py", - "qualified_name": "scripts.build_cta.main", - "start_line": 155, - "end_line": 189, - "type": "FUNCTION", - "content_hash": "01d3957be0275043" - }, "scripts/submit_feedback.py|scripts.submit_feedback.telemetry_disabled": { "file_path": "scripts/submit_feedback.py", "qualified_name": "scripts.submit_feedback.telemetry_disabled", @@ -834,41 +792,89 @@ "end_line": 172, "type": "FUNCTION", "content_hash": "43d11ddcfec41b9c" + }, + "scripts/build_cta.py|scripts.build_cta.detect_editors": { + "file_path": "scripts/build_cta.py", + "qualified_name": "scripts.build_cta.detect_editors", + "start_line": 37, + "end_line": 49, + "type": "FUNCTION", + "content_hash": "fe14c8fd463db78d" + }, + "scripts/build_cta.py|scripts.build_cta.webview_url": { + "file_path": "scripts/build_cta.py", + "qualified_name": "scripts.build_cta.webview_url", + "start_line": 63, + "end_line": 81, + "type": "FUNCTION", + "content_hash": "2176a1e7cfb729b5" + }, + "scripts/build_cta.py|scripts.build_cta._join_or": { + "file_path": "scripts/build_cta.py", + "qualified_name": "scripts.build_cta._join_or", + "start_line": 84, + "end_line": 90, + "type": "FUNCTION", + "content_hash": "a0c0b40b4c2adc89" + }, + "scripts/build_cta.py|scripts.build_cta.build_cta": { + "file_path": "scripts/build_cta.py", + "qualified_name": "scripts.build_cta.build_cta", + "start_line": 93, + "end_line": 152, + "type": "FUNCTION", + "content_hash": "4a7e2ef5efd4b5ea" + }, + "scripts/build_cta.py|scripts.build_cta.build_cta.link": { + "file_path": "scripts/build_cta.py", + "qualified_name": "scripts.build_cta.build_cta.link", + "start_line": 126, + "end_line": 127, + "type": "FUNCTION", + "content_hash": "023fa6697850117d" + }, + "scripts/build_cta.py|scripts.build_cta.main": { + "file_path": "scripts/build_cta.py", + "qualified_name": "scripts.build_cta.main", + "start_line": 155, + "end_line": 189, + "type": "FUNCTION", + "content_hash": "01d3957be0275043" } }, "components": [ { - "name": "Analysis Orchestrator", - "description": "Acts as the central controller and entry point for the Python execution environment. It manages the analysis lifecycle, determines whether to perform a full or incremental scan based on existing metadata, and coordinates the execution of the static analysis engine.", + "name": "Analysis State Manager", + "description": "Manages the lifecycle of static analysis data, including loading metadata, tracking quota usage, and handling incremental vs. full analysis states.", "key_entities": [ { - "qualified_name": "scripts.engine_adapter.main", + "qualified_name": "scripts.engine_adapter._load_analysis", "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 658, - "reference_end_line": 764 + "reference_start_line": 207, + "reference_end_line": 214 }, { - "qualified_name": "scripts.engine_adapter.run_analyze", + "qualified_name": "scripts.engine_adapter._is_quota_exhausted", "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 520, - "reference_end_line": 569 + "reference_start_line": 156, + "reference_end_line": 171 }, { - "qualified_name": "scripts.engine_adapter._load_metadata", + "qualified_name": "scripts.engine_adapter._incremental_or_full", "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 217, - "reference_end_line": 222 + "reference_start_line": 436, + "reference_end_line": 480 }, { - "qualified_name": "scripts.engine_adapter.run_base", + "qualified_name": "scripts.engine_adapter._count_health_report", "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 398, - "reference_end_line": 401 + "reference_start_line": 618, + "reference_end_line": 626 } ], "source_cluster_ids": [ "1", - "3" + "8" ], "file_methods": [ { @@ -907,601 +913,57 @@ } ], "component_id": "1", - "can_expand": true, - "components": [ - { - "name": "Lifecycle Dispatcher", - "description": "The primary entry point and command-line interface handler that interprets execution modes and manages the high-level sequence of operations.", - "key_entities": [ - { - "qualified_name": "scripts.engine_adapter.main", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 658, - "reference_end_line": 764 - }, - { - "qualified_name": "scripts.engine_adapter.run_base", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 398, - "reference_end_line": 401 - }, - { - "qualified_name": "scripts.engine_adapter.run_seed", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 404, - "reference_end_line": 433 - }, - { - "qualified_name": "scripts.engine_adapter.run_render", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 572, - "reference_end_line": 583 - } - ], - "source_cluster_ids": [ - "1.1" - ], - "file_methods": [ - { - "file_path": "scripts/engine_adapter.py", - "methods": [ - "scripts.engine_adapter._require_engine", - "scripts.engine_adapter._is_quota_exhausted", - "scripts.engine_adapter._flag_quota_exhausted", - "scripts.engine_adapter._metadata_commit", - "scripts.engine_adapter.baseline_info", - "scripts.engine_adapter.run_base", - "scripts.engine_adapter.run_seed", - "scripts.engine_adapter.run_render", - "scripts.engine_adapter.run_concat", - "scripts.engine_adapter.main" - ] - } - ], - "component_id": "1.1", - "can_expand": true, - "components": [], - "components_relations": [] - }, - { - "name": "Strategy & Scope Resolver", - "description": "Responsible for determining technical parameters of the analysis by loading metadata and calculating analysis depth based on configuration and history.", - "key_entities": [ - { - "qualified_name": "scripts.engine_adapter.run_analyze", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 520, - "reference_end_line": 569 - }, - { - "qualified_name": "scripts.engine_adapter._load_metadata", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 217, - "reference_end_line": 222 - }, - { - "qualified_name": "scripts.engine_adapter._resolve_depth", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 232, - "reference_end_line": 261 - }, - { - "qualified_name": "scripts.engine_adapter.baseline_depth", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 312, - "reference_end_line": 327 - } - ], - "source_cluster_ids": [ - "1.3" - ], - "file_methods": [ - { - "file_path": "scripts/engine_adapter.py", - "methods": [ - "scripts.engine_adapter._max_depth", - "scripts.engine_adapter._load_metadata", - "scripts.engine_adapter._resolve_depth", - "scripts.engine_adapter._analysis_depth_or_default", - "scripts.engine_adapter.baseline_depth", - "scripts.engine_adapter.run_analyze" - ] - } - ], - "component_id": "1.2", - "can_expand": true, - "components": [], - "components_relations": [] - }, - { - "name": "State & Delta Manager", - "description": "Manages stateful incremental logic, comparing commits against baselines, validating analysis integrity, and providing filesystem context.", - "key_entities": [ - { - "qualified_name": "scripts.engine_adapter._incremental_or_full", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 436, - "reference_end_line": 480 - }, - { - "qualified_name": "scripts.engine_adapter.run_head", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 483, - "reference_end_line": 517 - }, - { - "qualified_name": "scripts.engine_adapter.validate_base_analysis", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 330, - "reference_end_line": 395 - }, - { - "qualified_name": "scripts.engine_adapter._run_ctx", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 190, - "reference_end_line": 195 - } - ], - "source_cluster_ids": [ - "1.2", - "1.4" - ], - "file_methods": [ - { - "file_path": "scripts/engine_adapter.py", - "methods": [ - "scripts.engine_adapter._log_path", - "scripts.engine_adapter._run_ctx", - "scripts.engine_adapter._clear_dir", - "scripts.engine_adapter._load_analysis", - "scripts.engine_adapter._metadata_depth", - "scripts.engine_adapter._analysis_model_error", - "scripts.engine_adapter.validate_base_analysis", - "scripts.engine_adapter._incremental_or_full", - "scripts.engine_adapter.run_head", - "scripts.engine_adapter.run_analyze.full" - ] - } - ], - "component_id": "1.3", - "can_expand": true, - "components": [], - "components_relations": [] - }, - { - "name": "Post-Analysis Auditor", - "description": "A diagnostic component that parses generated metadata to produce health reports and identify architectural violations.", - "key_entities": [ - { - "qualified_name": "scripts.engine_adapter.run_health", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 629, - "reference_end_line": 655 - }, - { - "qualified_name": "scripts.engine_adapter._count_health_report", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 618, - "reference_end_line": 626 - }, - { - "qualified_name": "scripts.engine_adapter._count_report_issues", - "reference_file": "scripts/engine_adapter.py", - "reference_start_line": 602, - "reference_end_line": 615 - } - ], - "source_cluster_ids": [ - "1.5" - ], - "file_methods": [ - { - "file_path": "scripts/engine_adapter.py", - "methods": [ - "scripts.engine_adapter._count_report_issues", - "scripts.engine_adapter._count_health_report", - "scripts.engine_adapter.run_health" - ] - } - ], - "component_id": "1.4", - "can_expand": true, - "components": [], - "components_relations": [] - } - ], - "components_relations": [ - { - "relation": "orchestrates analysis strategy selection", - "src_name": "Lifecycle Dispatcher", - "dst_name": "Strategy & Scope Resolver", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "call_sites": [ - { - "line": 750, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.baseline_depth", - "call_sites": [ - { - "line": 747, - "column": 21 - } - ], - "description": "" - } - ], - "src_id": "1.1", - "dst_id": "1.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.baseline_info", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "call_sites": [ - { - "line": 305, - "column": 16 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.baseline_depth", - "call_sites": [ - { - "line": 747, - "column": 21 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "call_sites": [ - { - "line": 750, - "column": 13 - } - ], - "description": "" - } - ] - }, - { - "relation": "manages execution context and state validation", - "src_name": "Lifecycle Dispatcher", - "dst_name": "State & Delta Manager", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.validate_base_analysis", - "call_sites": [ - { - "line": 741, - "column": 27 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_head", - "call_sites": [ - { - "line": 727, - "column": 13 - } - ], - "description": "" - } - ], - "src_id": "1.1", - "dst_id": "1.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_head", - "call_sites": [ - { - "line": 727, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.validate_base_analysis", - "call_sites": [ - { - "line": 741, - "column": 27 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_base", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._run_ctx", - "call_sites": [ - { - "line": 399, - "column": 30 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_render", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._clear_dir", - "call_sites": [ - { - "line": 574, - "column": 5 - } - ], - "description": "" - } - ] - }, - { - "relation": "triggers quality and health reporting", - "src_name": "Lifecycle Dispatcher", - "dst_name": "Post-Analysis Auditor", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_health", - "call_sites": [ - { - "line": 739, - "column": 50 - } - ], - "description": "" - } - ], - "src_id": "1.1", - "dst_id": "1.4", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_health", - "call_sites": [ - { - "line": 739, - "column": 50 - } - ], - "description": "" - } - ] - }, - { - "relation": "queries state for incremental change detection", - "src_name": "Strategy & Scope Resolver", - "dst_name": "State & Delta Manager", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "call_sites": [ - { - "line": 558, - "column": 12 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._load_analysis", - "call_sites": [ - { - "line": 218, - "column": 12 - } - ], - "description": "" - } - ], - "src_id": "1.2", - "dst_id": "1.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._load_analysis", - "call_sites": [ - { - "line": 218, - "column": 12 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._resolve_depth", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._metadata_depth", - "call_sites": [ - { - "line": 245, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "call_sites": [ - { - "line": 558, - "column": 12 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze.full", - "call_sites": [ - { - "line": 551, - "column": 16 - }, - { - "line": 555, - "column": 16 - } - ], - "description": "" - } - ] - }, - { - "relation": "retrieves configuration defaults for state transitions", - "src_name": "State & Delta Manager", - "dst_name": "Strategy & Scope Resolver", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._analysis_depth_or_default", - "call_sites": [ - { - "line": 464, - "column": 26 - }, - { - "line": 476, - "column": 26 - } - ], - "description": "" - } - ], - "src_id": "1.3", - "dst_id": "1.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._analysis_depth_or_default", - "call_sites": [ - { - "line": 464, - "column": 26 - }, - { - "line": 476, - "column": 26 - } - ], - "description": "" - } - ] - }, - { - "relation": "consumes persisted analysis artifacts", - "src_name": "Post-Analysis Auditor", - "dst_name": "State & Delta Manager", - "evidence": "Runtime dependency on analysis artifacts (Pickle/JSON) managed by State & Delta Manager within the .codeboarding directory.", - "key_edges": [], - "src_id": "1.4", - "dst_id": "1.3", - "is_static": false, - "all_edges": [] - } - ] + "can_expand": false, + "components": [], + "components_relations": [] }, { - "name": "Visual Diffing & Rendering Engine", - "description": "Responsible for the structural comparison between the current code state and the baseline. It identifies modified components, relations, and methods, then transforms these differences into Mermaid.js syntax for visual representation within GitHub.", + "name": "Visual Documentation Renderer", + "description": "Responsible for generating the visual representation of components and their change status using Mermaid.js syntax and Markdown formatting.", "key_entities": [ { - "qualified_name": "scripts.diff_to_mermaid.main", - "reference_file": "scripts/diff_to_mermaid.py", - "reference_start_line": 578, - "reference_end_line": 619 - }, - { - "qualified_name": "scripts.diff_to_mermaid.build_diff", + "qualified_name": "scripts.diff_to_mermaid._display_status", "reference_file": "scripts/diff_to_mermaid.py", - "reference_start_line": 261, - "reference_end_line": 268 + "reference_start_line": 312, + "reference_end_line": 313 }, { - "qualified_name": "scripts.diff_to_mermaid._project_analysis", - "reference_file": "scripts/diff_to_mermaid.py", - "reference_start_line": 61, - "reference_end_line": 77 + "qualified_name": "scripts.build_component_files.render_component_files", + "reference_file": "scripts/build_component_files.py", + "reference_start_line": 124, + "reference_end_line": 175 }, { - "qualified_name": "scripts.diff_to_mermaid._Scope.resolve", + "qualified_name": "scripts.diff_to_mermaid._init_directive", "reference_file": "scripts/diff_to_mermaid.py", - "reference_start_line": 351, - "reference_end_line": 360 + "reference_start_line": 408, + "reference_end_line": 427 }, { - "qualified_name": "scripts.diff_to_mermaid.read_analysis_json", - "reference_file": "scripts/diff_to_mermaid.py", - "reference_start_line": 80, - "reference_end_line": 84 + "qualified_name": "scripts.build_component_files._block", + "reference_file": "scripts/build_component_files.py", + "reference_start_line": 104, + "reference_end_line": 121 } ], "source_cluster_ids": [ - "2", - "5", - "7", - "9", - "10" + "4", + "5" ], "file_methods": [ { "file_path": "scripts/build_component_files.py", "methods": [ "scripts.build_component_files._block", - "scripts.build_component_files.render_component_files", - "scripts.build_component_files.main" + "scripts.build_component_files.render_component_files" ] }, { "file_path": "scripts/diff_to_mermaid.py", "methods": [ - "scripts.diff_to_mermaid._relation_dict", - "scripts.diff_to_mermaid._project_analysis", - "scripts.diff_to_mermaid._project_analysis.project_level", - "scripts.diff_to_mermaid.read_analysis_json", - "scripts.diff_to_mermaid.load_analysis", "scripts.diff_to_mermaid._comp_id", "scripts.diff_to_mermaid._comp_name", - "scripts.diff_to_mermaid._file_methods", - "scripts.diff_to_mermaid._methods_by_file", - "scripts.diff_to_mermaid._has_structural_changes", - "scripts.diff_to_mermaid._has_method_changes", - "scripts.diff_to_mermaid._rel_key", - "scripts.diff_to_mermaid._diff_relations", "scripts.diff_to_mermaid._has_changes", - "scripts.diff_to_mermaid._diff_components", - "scripts.diff_to_mermaid.build_diff", "scripts.diff_to_mermaid._sanitize", "scripts.diff_to_mermaid._esc", "scripts.diff_to_mermaid._truncate", @@ -1517,797 +979,144 @@ "scripts.diff_to_mermaid.render_mermaid", "scripts.diff_to_mermaid.render_mermaid.build", "scripts.diff_to_mermaid.render_mermaid.build.emit_edges", - "scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "scripts.diff_to_mermaid.main" + "scripts.diff_to_mermaid.render_mermaid.build.emit_level" ] } ], "component_id": "2", - "can_expand": true, - "components": [ + "can_expand": false, + "components": [], + "components_relations": [] + }, + { + "name": "Change Impact Analyzer", + "description": "Performs structural diffing between analysis snapshots to identify changed files, methods, and architectural relations.", + "key_entities": [ { - "name": "Diff Analysis & Change Detection", - "description": "Identifies the structural delta between the current code state and the baseline, filtering for architecturally significant modifications.", - "key_entities": [], - "source_cluster_ids": [ - "2.0", - "2.1", - "2.2", - "2.3", - "2.4", - "2.5" - ], - "file_methods": [ - { - "file_path": "scripts/build_component_files.py", - "methods": [ - "scripts.build_component_files._block", - "scripts.build_component_files.render_component_files", - "scripts.build_component_files.main" - ] - }, - { - "file_path": "scripts/diff_to_mermaid.py", - "methods": [ - "scripts.diff_to_mermaid._comp_id", - "scripts.diff_to_mermaid._Scope", - "scripts.diff_to_mermaid._Scope.__init__", - "scripts.diff_to_mermaid._Scope.resolve" - ] - } - ], - "component_id": "2.1", - "can_expand": true, - "components": [], - "components_relations": [] + "qualified_name": "scripts.diff_to_mermaid._diff_components", + "reference_file": "scripts/diff_to_mermaid.py", + "reference_start_line": 213, + "reference_end_line": 258 }, { - "name": "Mermaid Syntax Generation & Structural Rendering", - "description": "Maps architectural entities and their relationships to Mermaid.js syntax, managing hierarchical scoping and visual styling.", - "key_entities": [], - "source_cluster_ids": [ - "2.6", - "2.7", - "2.8", - "2.9", - "2.10", - "2.11", - "2.12", - "2.13", - "2.14", - "2.15" - ], - "file_methods": [ - { - "file_path": "scripts/diff_to_mermaid.py", - "methods": [ - "scripts.diff_to_mermaid._comp_name", - "scripts.diff_to_mermaid._file_methods", - "scripts.diff_to_mermaid._diff_relations", - "scripts.diff_to_mermaid._diff_components", - "scripts.diff_to_mermaid._esc", - "scripts.diff_to_mermaid._display_status", - "scripts.diff_to_mermaid._filter_changed", - "scripts.diff_to_mermaid._filter_changed.touches", - "scripts.diff_to_mermaid._count_changed_components", - "scripts.diff_to_mermaid._has_changed_relations" - ] - } - ], - "component_id": "2.2", - "can_expand": true, - "components": [], - "components_relations": [] + "qualified_name": "scripts.diff_to_mermaid._has_structural_changes", + "reference_file": "scripts/diff_to_mermaid.py", + "reference_start_line": 133, + "reference_end_line": 136 }, { - "name": "UI Enhancement & CTA Integration", - "description": "Enriches rendered diagrams with interactive elements, generating deep links for IDEs and webview URLs.", - "key_entities": [], - "source_cluster_ids": [ - "2.21", - "2.22", - "2.23", - "2.24", - "2.25", - "2.26", - "2.27", - "2.28", - "2.29", - "2.30" - ], - "file_methods": [ - { - "file_path": "scripts/diff_to_mermaid.py", - "methods": [ - "scripts.diff_to_mermaid.load_analysis", - "scripts.diff_to_mermaid._rel_key", - "scripts.diff_to_mermaid.build_diff", - "scripts.diff_to_mermaid._sanitize", - "scripts.diff_to_mermaid._truncate", - "scripts.diff_to_mermaid.render_mermaid", - "scripts.diff_to_mermaid.render_mermaid.build", - "scripts.diff_to_mermaid.render_mermaid.build.emit_edges", - "scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "scripts.diff_to_mermaid.main" - ] - } - ], - "component_id": "2.3", - "can_expand": true, - "components": [], - "components_relations": [] + "qualified_name": "scripts.build_component_files._subtree_methods", + "reference_file": "scripts/build_component_files.py", + "reference_start_line": 77, + "reference_end_line": 85 }, { - "name": "Rendering Orchestration", - "description": "Acts as the controller for the subsystem, managing the execution lifecycle and sequencing the flow from diff detection to final output.", - "key_entities": [], - "source_cluster_ids": [ - "2.16", - "2.17", - "2.18", - "2.19", - "2.20" - ], - "file_methods": [ - { - "file_path": "scripts/diff_to_mermaid.py", - "methods": [ - "scripts.diff_to_mermaid._methods_by_file", - "scripts.diff_to_mermaid._has_structural_changes", - "scripts.diff_to_mermaid._has_method_changes", - "scripts.diff_to_mermaid._has_changes", - "scripts.diff_to_mermaid._init_directive" - ] - } - ], - "component_id": "2.4", - "can_expand": true, - "components": [], - "components_relations": [] + "qualified_name": "scripts.build_component_files._changed_files_for", + "reference_file": "scripts/build_component_files.py", + "reference_start_line": 88, + "reference_end_line": 101 } ], - "components_relations": [ - { - "relation": "Triggers structural delta computation", - "src_name": "Rendering Orchestration", - "dst_name": "Diff Analysis & Change Detection", - "evidence": "The orchestration layer initiates the analysis by loading serialized analysis data and invoking the diff builder to identify architectural shifts.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", - "call_sites": [ - { - "line": 551, - "column": 23 - }, - { - "line": 551, - "column": 49 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "call_sites": [ - { - "line": 551, - "column": 12 - } - ], - "description": "" - } - ], - "src_id": "2.4", - "dst_id": "2.1", - "is_static": false, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", - "call_sites": [ - { - "line": 551, - "column": 23 - }, - { - "line": 551, - "column": 49 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "call_sites": [ - { - "line": 551, - "column": 12 - } - ], - "description": "" - } - ] - }, - { - "relation": "Orchestrates diagram generation lifecycle", - "src_name": "Rendering Orchestration", - "dst_name": "Mermaid Syntax Generation & Structural Rendering", - "evidence": "The main controller manages the sequencing of the rendering process, passing the computed diff data to the Mermaid generator.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "call_sites": [ - { - "line": 552, - "column": 21 - } - ], - "description": "" - } - ], - "src_id": "2.4", - "dst_id": "2.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_structural_changes", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._file_methods", - "call_sites": [ - { - "line": 83, - "column": 53 - }, - { - "line": 84, - "column": 56 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._methods_by_file", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._file_methods", - "call_sites": [ - { - "line": 74, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "call_sites": [ - { - "line": 552, - "column": 21 - } - ], - "description": "" - } - ] - }, - { - "relation": "Provides filtered architectural delta for visualization", - "src_name": "Diff Analysis & Change Detection", - "dst_name": "Mermaid Syntax Generation & Structural Rendering", - "evidence": "The rendering logic consumes the filtered component and relation sets produced by the diff analysis to determine which nodes and edges to include in the final diagram.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._filter_changed", - "call_sites": [], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._count_changed_components", - "call_sites": [ - { - "line": 420, - "column": 17 - } - ], - "description": "" - } - ], - "src_id": "2.1", - "dst_id": "2.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_name", - "call_sites": [ - { - "line": 131, - "column": 24 - }, - { - "line": 141, - "column": 92 - }, - { - "line": 153, - "column": 27 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._count_changed_components", - "call_sites": [ - { - "line": 147, - "column": 16 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._display_status", - "call_sites": [ - { - "line": 135, - "column": 21 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope.__init__", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_name", - "call_sites": [ - { - "line": 285, - "column": 42 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope.__init__", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._display_status", - "call_sites": [ - { - "line": 283, - "column": 22 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._filter_changed", - "call_sites": [], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._count_changed_components", - "call_sites": [ - { - "line": 420, - "column": 17 - } - ], - "description": "" - } - ] - }, + "source_cluster_ids": [ + "2", + "7" + ], + "file_methods": [ { - "relation": "Delegates visual styling and metadata enrichment", - "src_name": "Mermaid Syntax Generation & Structural Rendering", - "dst_name": "UI Enhancement & CTA Integration", - "evidence": "During the recursive emission of Mermaid levels, the generator calls UI utilities to sanitize names, apply CSS classes for change status, and inject interactive directives.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._esc", - "call_sites": [ - { - "line": 455, - "column": 57 - }, - { - "line": 462, - "column": 48 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._init_directive", - "call_sites": [ - { - "line": 422, - "column": 17 - } - ], - "description": "" - } - ], - "src_id": "2.2", - "dst_id": "2.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_relations", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._rel_key", - "call_sites": [ - { - "line": 106, - "column": 26 - }, - { - "line": 108, - "column": 29 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._esc", - "call_sites": [ - { - "line": 455, - "column": 57 - }, - { - "line": 462, - "column": 48 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._init_directive", - "call_sites": [ - { - "line": 422, - "column": 17 - } - ], - "description": "" - } + "file_path": "scripts/build_component_files.py", + "methods": [ + "scripts.build_component_files._walk", + "scripts.build_component_files._subtree_files", + "scripts.build_component_files._subtree_methods", + "scripts.build_component_files._changed_files_for", + "scripts.build_component_files.main" ] }, { - "relation": "Queries change status for visual highlighting", - "src_name": "UI Enhancement & CTA Integration", - "dst_name": "Diff Analysis & Change Detection", - "evidence": "UI components query the diff state to determine the appropriate visual representation (e.g., color-coding for additions vs. modifications) for specific architectural scopes.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope", - "call_sites": [ - { - "line": 451, - "column": 21 - } - ], - "description": "" - } - ], - "src_id": "2.3", - "dst_id": "2.1", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope", - "call_sites": [ - { - "line": 451, - "column": 21 - } - ], - "description": "" - } + "file_path": "scripts/diff_to_mermaid.py", + "methods": [ + "scripts.diff_to_mermaid._relation_dict", + "scripts.diff_to_mermaid._project_analysis", + "scripts.diff_to_mermaid._project_analysis.project_level", + "scripts.diff_to_mermaid.read_analysis_json", + "scripts.diff_to_mermaid.load_analysis", + "scripts.diff_to_mermaid._file_methods", + "scripts.diff_to_mermaid._methods_by_file", + "scripts.diff_to_mermaid._has_structural_changes", + "scripts.diff_to_mermaid._has_method_changes", + "scripts.diff_to_mermaid._rel_key", + "scripts.diff_to_mermaid._diff_relations", + "scripts.diff_to_mermaid._diff_components", + "scripts.diff_to_mermaid.build_diff", + "scripts.diff_to_mermaid.main" ] - }, + } + ], + "component_id": "3", + "can_expand": false, + "components": [], + "components_relations": [] + }, + { + "name": "Telemetry & Feedback Handler", + "description": "Collects execution metadata and user feedback to package and transmit as payloads to external monitoring or feedback services.", + "key_entities": [ { - "relation": "Supplies metadata for interactive elements", - "src_name": "Diff Analysis & Change Detection", - "dst_name": "UI Enhancement & CTA Integration", - "evidence": "The diff analysis phase prepares the context (like component IDs and names) used by the UI layer to generate deep links and tooltips.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_id", - "call_sites": [], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._sanitize", - "call_sites": [], - "description": "" - } - ], - "src_id": "2.1", - "dst_id": "2.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "call_sites": [ - { - "line": 205, - "column": 44 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", - "call_sites": [ - { - "line": 203, - "column": 15 - }, - { - "line": 204, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope.__init__", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._sanitize", - "call_sites": [ - { - "line": 286, - "column": 52 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_id", - "call_sites": [], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._sanitize", - "call_sites": [], - "description": "" - } - ] + "qualified_name": "scripts.submit_feedback.build_payload", + "reference_file": "scripts/submit_feedback.py", + "reference_start_line": 119, + "reference_end_line": 132 }, { - "relation": "calls", - "src_name": "Mermaid Syntax Generation & Structural Rendering", - "dst_name": "Diff Analysis & Change Detection", - "evidence": "", - "key_edges": [], - "src_id": "2.2", - "dst_id": "2.1", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._filter_changed", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_id", - "call_sites": [ - { - "line": 325, - "column": 26 - }, - { - "line": 335, - "column": 18 - }, - { - "line": 335, - "column": 34 - }, - { - "line": 342, - "column": 17 - }, - { - "line": 342, - "column": 46 - } - ], - "description": "" - } - ] + "qualified_name": "scripts.submit_feedback.post", + "reference_file": "scripts/submit_feedback.py", + "reference_start_line": 135, + "reference_end_line": 144 }, { - "relation": "calls", - "src_name": "Mermaid Syntax Generation & Structural Rendering", - "dst_name": "Rendering Orchestration", - "evidence": "", - "key_edges": [], - "src_id": "2.2", - "dst_id": "2.4", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changes", - "call_sites": [ - { - "line": 190, - "column": 43 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_method_changes", - "call_sites": [ - { - "line": 176, - "column": 52 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_structural_changes", - "call_sites": [ - { - "line": 175, - "column": 22 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changed_relations", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changes", - "call_sites": [ - { - "line": 391, - "column": 12 - } - ], - "description": "" - } - ] + "qualified_name": "scripts.submit_feedback.extract_feedback", + "reference_file": "scripts/submit_feedback.py", + "reference_start_line": 55, + "reference_end_line": 69 }, { - "relation": "calls", - "src_name": "UI Enhancement & CTA Integration", - "dst_name": "Mermaid Syntax Generation & Structural Rendering", - "evidence": "", - "key_edges": [], - "src_id": "2.3", - "dst_id": "2.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", - "call_sites": [ - { - "line": 212, - "column": 23 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_relations", - "call_sites": [ - { - "line": 213, - "column": 33 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._count_changed_components", - "call_sites": [ - { - "line": 420, - "column": 17 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changed_relations", - "call_sites": [ - { - "line": 421, - "column": 32 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._filter_changed", - "call_sites": [ - { - "line": 426, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_edges", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._esc", - "call_sites": [ - { - "line": 443, - "column": 25 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._esc", - "call_sites": [ - { - "line": 455, - "column": 57 - }, - { - "line": 462, - "column": 48 - } - ], - "description": "" - } - ] - }, + "qualified_name": "scripts.submit_feedback.resolve_command", + "reference_file": "scripts/submit_feedback.py", + "reference_start_line": 43, + "reference_end_line": 44 + } + ], + "source_cluster_ids": [ + "3" + ], + "file_methods": [ { - "relation": "calls", - "src_name": "UI Enhancement & CTA Integration", - "dst_name": "Rendering Orchestration", - "evidence": "", - "key_edges": [], - "src_id": "2.3", - "dst_id": "2.4", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._init_directive", - "call_sites": [ - { - "line": 422, - "column": 17 - } - ], - "description": "" - } + "file_path": "scripts/submit_feedback.py", + "methods": [ + "scripts.submit_feedback.telemetry_disabled", + "scripts.submit_feedback.resolve_key", + "scripts.submit_feedback.resolve_host", + "scripts.submit_feedback.resolve_command", + "scripts.submit_feedback.resolve_max_chars", + "scripts.submit_feedback.extract_feedback", + "scripts.submit_feedback.cap_feedback", + "scripts.submit_feedback._first", + "scripts.submit_feedback.distinct_id", + "scripts.submit_feedback.build_properties", + "scripts.submit_feedback.build_payload", + "scripts.submit_feedback.post", + "scripts.submit_feedback.main" ] } - ] + ], + "component_id": "4", + "can_expand": false, + "components": [], + "components_relations": [] }, { - "name": "Documentation & CTA Generator", - "description": "Maps the analyzed code structure back to the physical file system to generate developer-centric documentation. It creates markdown files for components and \"Call-to-Action\" (CTA) links that facilitate navigation between the code and the architectural view.", + "name": "Call-to-Action Generator", + "description": "Constructs interactive links and webview URLs to guide developers from the CI environment back to the CodeBoarding dashboard or IDE editors.", "key_entities": [ { "qualified_name": "scripts.build_cta.build_cta", @@ -2316,26 +1125,22 @@ "reference_end_line": 152 }, { - "qualified_name": "scripts.build_component_files._walk", - "reference_file": "scripts/build_component_files.py", - "reference_start_line": 56, - "reference_end_line": 62 + "qualified_name": "scripts.build_cta.webview_url", + "reference_file": "scripts/build_cta.py", + "reference_start_line": 63, + "reference_end_line": 81 + }, + { + "qualified_name": "scripts.build_cta.detect_editors", + "reference_file": "scripts/build_cta.py", + "reference_start_line": 37, + "reference_end_line": 49 } ], "source_cluster_ids": [ - "6", - "8" + "6" ], "file_methods": [ - { - "file_path": "scripts/build_component_files.py", - "methods": [ - "scripts.build_component_files._walk", - "scripts.build_component_files._subtree_files", - "scripts.build_component_files._subtree_methods", - "scripts.build_component_files._changed_files_for" - ] - }, { "file_path": "scripts/build_cta.py", "methods": [ @@ -2347,2170 +1152,81 @@ "scripts.build_cta.main" ] } - ], - "component_id": "3", - "can_expand": true, - "components": [ - { - "name": "Documentation Workflow Orchestrator", - "description": "Manages the end-to-end lifecycle of documentation generation, coordinating analysis artifacts, change detection, and the rendering process.", - "key_entities": [], - "source_cluster_ids": [ - "3.0", - "3.1" - ], - "file_methods": [ - { - "file_path": "scripts/build_component_files.py", - "methods": [ - "scripts.build_component_files._subtree_files", - "scripts.build_component_files._changed_files_for" - ] - } - ], - "component_id": "3.1", - "can_expand": true, - "components": [], - "components_relations": [] - }, - { - "name": "Architectural Diff Engine", - "description": "Analyzes the delta between architectural states to identify modified components and structural shifts for incremental updates.", - "key_entities": [], - "source_cluster_ids": [ - "3.2", - "3.3", - "3.4" - ], - "file_methods": [ - { - "file_path": "scripts/build_component_files.py", - "methods": [ - "scripts.build_component_files._walk", - "scripts.build_component_files._subtree_methods" - ] - }, - { - "file_path": "scripts/build_cta.py", - "methods": [ - "scripts.build_cta._join_or" - ] - } - ], - "component_id": "3.2", - "can_expand": true, - "components": [], - "components_relations": [] - }, - { - "name": "Markdown & Diagram Renderer", - "description": "Translates component tree and diff data into structured Markdown and Mermaid.js diagrams.", - "key_entities": [], - "source_cluster_ids": [ - "3.5", - "3.6", - "3.7" - ], - "file_methods": [ - { - "file_path": "scripts/build_cta.py", - "methods": [ - "scripts.build_cta.detect_editors", - "scripts.build_cta.build_cta", - "scripts.build_cta.build_cta.link" - ] - } - ], - "component_id": "3.3", - "can_expand": true, - "components": [], - "components_relations": [] - }, - { - "name": "Navigation & Linkage Provider", - "description": "Generates interactive CTA links and sanitizes identifiers for documentation navigation.", - "key_entities": [], - "source_cluster_ids": [ - "3.8", - "3.9" - ], - "file_methods": [ - { - "file_path": "scripts/build_cta.py", - "methods": [ - "scripts.build_cta.webview_url", - "scripts.build_cta.main" - ] - } - ], - "component_id": "3.4", - "can_expand": true, - "components": [], - "components_relations": [] - } - ], - "components_relations": [ - { - "relation": "Orchestrates state-aware component filtering", - "src_name": "Documentation Workflow Orchestrator", - "dst_name": "Architectural Diff Engine", - "evidence": "The orchestrator uses diffing logic to identify which files and subtrees require documentation updates based on the current change set.", - "key_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files._changed_files_for", - "target": "scripts/build_component_files.py|scripts.build_component_files._subtree_methods", - "call_sites": [ - { - "line": 96, - "column": 20 - }, - { - "line": 97, - "column": 20 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files._subtree_files", - "target": "scripts/build_component_files.py|scripts.build_component_files._walk", - "call_sites": [ - { - "line": 69, - "column": 14 - } - ], - "description": "" - } - ], - "src_id": "3.1", - "dst_id": "3.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files._changed_files_for", - "target": "scripts/build_component_files.py|scripts.build_component_files._subtree_methods", - "call_sites": [ - { - "line": 96, - "column": 20 - }, - { - "line": 97, - "column": 20 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files._subtree_files", - "target": "scripts/build_component_files.py|scripts.build_component_files._walk", - "call_sites": [ - { - "line": 69, - "column": 14 - } - ], - "description": "" - } - ] - }, - { - "relation": "Triggers documentation synthesis", - "src_name": "Documentation Workflow Orchestrator", - "dst_name": "Markdown & Diagram Renderer", - "evidence": "Direct invocation of the rendering process once the scope of changes has been determined by the orchestrator.", - "key_edges": [], - "src_id": "3.1", - "dst_id": "3.3", - "is_static": false, - "all_edges": [] - }, - { - "relation": "Queries structural deltas for visual highlighting", - "src_name": "Markdown & Diagram Renderer", - "dst_name": "Architectural Diff Engine", - "evidence": "The renderer utilizes diff utilities to determine how to represent modified components within diagrams and text.", - "key_edges": [ - { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta._join_or", - "call_sites": [ - { - "line": 145, - "column": 55 - } - ], - "description": "" - } - ], - "src_id": "3.3", - "dst_id": "3.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta._join_or", - "call_sites": [ - { - "line": 145, - "column": 55 - } - ], - "description": "" - } - ] - }, - { - "relation": "Resolves interactive navigation paths", - "src_name": "Markdown & Diagram Renderer", - "dst_name": "Navigation & Linkage Provider", - "evidence": "The renderer delegates URL sanitization and CTA string construction to the provider to maintain consistent link structures.", - "key_edges": [ - { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta.webview_url", - "call_sites": [ - { - "line": 141, - "column": 14 - } - ], - "description": "" - } - ], - "src_id": "3.3", - "dst_id": "3.4", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta.webview_url", - "call_sites": [ - { - "line": 141, - "column": 14 - } - ], - "description": "" - } - ] - }, - { - "relation": "Provides CLI-driven content updates", - "src_name": "Navigation & Linkage Provider", - "dst_name": "Markdown & Diagram Renderer", - "evidence": "The provider includes a CLI entry point that can trigger specific rendering tasks for CTA updates.", - "key_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files.main", - "target": "scripts/build_cta.py|scripts.build_cta.build_cta", - "call_sites": [], - "description": "" - } - ], - "src_id": "3.4", - "dst_id": "3.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_cta.py|scripts.build_cta.main", - "target": "scripts/build_cta.py|scripts.build_cta.build_cta", - "call_sites": [ - { - "line": 177, - "column": 9 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files.main", - "target": "scripts/build_cta.py|scripts.build_cta.build_cta", - "call_sites": [], - "description": "" - } - ] - }, - { - "relation": "Persists filtered architectural state", - "src_name": "Architectural Diff Engine", - "dst_name": "Documentation Workflow Orchestrator", - "evidence": "The engine provides the filtered data structures that the orchestrator manages as the \"State Management\" layer for the current run.", - "key_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files._walk", - "target": "|State Management", - "call_sites": [], - "description": "" - } - ], - "src_id": "3.2", - "dst_id": "3.1", - "is_static": false, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files._walk", - "target": "|State Management", - "call_sites": [], - "description": "" - } - ] - } - ] - }, - { - "name": "Telemetry & Feedback Provider", - "description": "A specialized component that handles the collection and transmission of execution metrics and user feedback. It ensures data is anonymized and transmitted securely to the remote backend for service improvement.", - "key_entities": [ - { - "qualified_name": "scripts.submit_feedback.main", - "reference_file": "scripts/submit_feedback.py", - "reference_start_line": 147, - "reference_end_line": 172 - }, - { - "qualified_name": "scripts.submit_feedback.post", - "reference_file": "scripts/submit_feedback.py", - "reference_start_line": 135, - "reference_end_line": 144 - }, - { - "qualified_name": "scripts.submit_feedback.build_payload", - "reference_file": "scripts/submit_feedback.py", - "reference_start_line": 119, - "reference_end_line": 132 - } - ], - "source_cluster_ids": [ - "4" - ], - "file_methods": [ - { - "file_path": "scripts/submit_feedback.py", - "methods": [ - "scripts.submit_feedback.telemetry_disabled", - "scripts.submit_feedback.resolve_key", - "scripts.submit_feedback.resolve_host", - "scripts.submit_feedback.resolve_command", - "scripts.submit_feedback.resolve_max_chars", - "scripts.submit_feedback.extract_feedback", - "scripts.submit_feedback.cap_feedback", - "scripts.submit_feedback._first", - "scripts.submit_feedback.distinct_id", - "scripts.submit_feedback.build_properties", - "scripts.submit_feedback.build_payload", - "scripts.submit_feedback.post", - "scripts.submit_feedback.main" - ] - } - ], - "component_id": "4", - "can_expand": true, - "components": [ - { - "name": "Contextual Metadata Extractor", - "description": "Responsible for mining the results of the architectural analysis to provide context for the telemetry by identifying impacted components and calculating metrics.", - "key_entities": [], - "source_cluster_ids": [ - "4.7", - "4.8", - "4.9", - "4.10", - "4.11", - "4.12" - ], - "file_methods": [ - { - "file_path": "scripts/submit_feedback.py", - "methods": [ - "scripts.submit_feedback.telemetry_disabled", - "scripts.submit_feedback.resolve_key", - "scripts.submit_feedback.resolve_host", - "scripts.submit_feedback.resolve_command", - "scripts.submit_feedback.resolve_max_chars", - "scripts.submit_feedback.post" - ] - } - ], - "component_id": "4.1", - "can_expand": true, - "components": [], - "components_relations": [] - }, - { - "name": "Feedback Assembler", - "description": "Acts as the data transformation layer that aggregates environment variables, user feedback, and architectural context into a standardized JSON schema.", - "key_entities": [ - { - "qualified_name": "scripts.submit_feedback.build_payload", - "reference_file": "scripts/submit_feedback.py", - "reference_start_line": 119, - "reference_end_line": 132 - } - ], - "source_cluster_ids": [ - "4.0", - "4.1", - "4.2" - ], - "file_methods": [ - { - "file_path": "scripts/submit_feedback.py", - "methods": [ - "scripts.submit_feedback._first", - "scripts.submit_feedback.build_properties", - "scripts.submit_feedback.build_payload" - ] - } - ], - "component_id": "4.2", - "can_expand": true, - "components": [], - "components_relations": [] - }, - { - "name": "Remote Dispatcher", - "description": "Manages the egress of data to the external service, handling HTTP authentication, POST requests, and response management.", - "key_entities": [ - { - "qualified_name": "scripts.submit_feedback.main", - "reference_file": "scripts/submit_feedback.py", - "reference_start_line": 147, - "reference_end_line": 172 - } - ], - "source_cluster_ids": [ - "4.3", - "4.4", - "4.5", - "4.6" - ], - "file_methods": [ - { - "file_path": "scripts/submit_feedback.py", - "methods": [ - "scripts.submit_feedback.extract_feedback", - "scripts.submit_feedback.cap_feedback", - "scripts.submit_feedback.distinct_id", - "scripts.submit_feedback.main" - ] - } - ], - "component_id": "4.3", - "can_expand": true, - "components": [], - "components_relations": [] - } - ], - "components_relations": [ - { - "relation": "orchestrates payload construction", - "src_name": "Remote Dispatcher", - "dst_name": "Feedback Assembler", - "evidence": "The main execution loop in the Dispatcher triggers the assembly process to transform internal state into a structured JSON payload.", - "key_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "call_sites": [ - { - "line": 154, - "column": 15 - } - ], - "description": "" - } - ], - "src_id": "4.3", - "dst_id": "4.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.distinct_id", - "target": "scripts/submit_feedback.py|scripts.submit_feedback._first", - "call_sites": [ - { - "line": 88, - "column": 17 - }, - { - "line": 91, - "column": 26 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "call_sites": [ - { - "line": 154, - "column": 15 - } - ], - "description": "" - } - ] - }, - { - "relation": "verifies transmission policy", - "src_name": "Remote Dispatcher", - "dst_name": "Contextual Metadata Extractor", - "evidence": "The Dispatcher queries the Extractor to determine if telemetry is globally disabled or to resolve the target host before initiating network egress.", - "key_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.telemetry_disabled", - "call_sites": [ - { - "line": 150, - "column": 8 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_host", - "call_sites": [ - { - "line": 164, - "column": 32 - } - ], - "description": "" - } - ], - "src_id": "4.3", - "dst_id": "4.1", - "is_static": true, - "all_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.post", - "call_sites": [ - { - "line": 164, - "column": 18 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_host", - "call_sites": [ - { - "line": 164, - "column": 32 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.telemetry_disabled", - "call_sites": [ - { - "line": 150, - "column": 8 - } - ], - "description": "" - } - ] - }, - { - "relation": "queries architectural context", - "src_name": "Feedback Assembler", - "dst_name": "Contextual Metadata Extractor", - "evidence": "The Assembler pulls specific metadata (commands, keys, and character limits) from the Extractor to populate the telemetry schema.", - "key_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_command", - "call_sites": [ - { - "line": 121, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_key", - "call_sites": [ - { - "line": 128, - "column": 20 - } - ], - "description": "" - } - ], - "src_id": "4.2", - "dst_id": "4.1", - "is_static": true, - "all_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_command", - "call_sites": [ - { - "line": 121, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_key", - "call_sites": [ - { - "line": 128, - "column": 20 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_max_chars", - "call_sites": [ - { - "line": 123, - "column": 65 - } - ], - "description": "" - } - ] - }, - { - "relation": "utilizes identity and sanitization utilities", - "src_name": "Feedback Assembler", - "dst_name": "Remote Dispatcher", - "evidence": "The Assembler relies on utility functions co-located in the Dispatcher component for generating distinct IDs and capping feedback length.", - "key_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.distinct_id", - "call_sites": [ - { - "line": 130, - "column": 24 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.cap_feedback", - "call_sites": [ - { - "line": 122, - "column": 49 - } - ], - "description": "" - } - ], - "src_id": "4.2", - "dst_id": "4.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.cap_feedback", - "call_sites": [ - { - "line": 122, - "column": 49 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.distinct_id", - "call_sites": [ - { - "line": 130, - "column": 24 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.extract_feedback", - "call_sites": [ - { - "line": 123, - "column": 9 - } - ], - "description": "" - } - ] - } - ] - } - ], - "components_relations": [ - { - "relation": "Orchestrates structural comparison and visualization", - "src_name": "Analysis Orchestrator", - "dst_name": "Visual Diffing & Rendering Engine", - "evidence": "The Orchestrator executes the analysis engine to produce the analysis.json file, which serves as the primary data input for the Rendering Engine's diffing logic.", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.read_analysis_json", - "call_sites": [], - "description": "Orchestrator produces the structural analysis consumed by the rendering engine." - } - ], - "src_id": "1", - "dst_id": "2", - "is_static": false, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.read_analysis_json", - "call_sites": [], - "description": "Orchestrator produces the structural analysis consumed by the rendering engine." - } - ] - }, - { - "relation": "Provides health metrics for navigation context", - "src_name": "Analysis Orchestrator", - "dst_name": "Documentation & CTA Generator", - "evidence": "The Orchestrator manages the environment variables and metadata (like project health and analysis status) that the CTA generator uses to determine which documentation links to prioritize.", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "target": "scripts/build_cta.py|scripts.build_cta.build_cta", - "call_sites": [], - "description": "Metadata loaded by the orchestrator informs the generation of Call-to-Action links." - } - ], - "src_id": "1", - "dst_id": "3", - "is_static": false, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "target": "scripts/build_cta.py|scripts.build_cta.build_cta", - "call_sites": [], - "description": "Metadata loaded by the orchestrator informs the generation of Call-to-Action links." - } - ] - }, - { - "relation": "Reports execution status and quota metrics", - "src_name": "Analysis Orchestrator", - "dst_name": "Telemetry & Feedback Provider", - "evidence": "The Orchestrator captures the final exit codes, execution duration, and quota usage from the analysis run to be bundled into the telemetry payload.", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "call_sites": [], - "description": "Orchestrator lifecycle completion triggers the telemetry submission process." - } - ], - "src_id": "1", - "dst_id": "4", - "is_static": false, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "call_sites": [], - "description": "Orchestrator lifecycle completion triggers the telemetry submission process." - } - ] - }, - { - "relation": "orchestrates analysis strategy selection", - "src_name": "Lifecycle Dispatcher", - "dst_name": "Strategy & Scope Resolver", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "call_sites": [ - { - "line": 750, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.baseline_depth", - "call_sites": [ - { - "line": 747, - "column": 21 - } - ], - "description": "" - } - ], - "src_id": "1.1", - "dst_id": "1.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.baseline_info", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "call_sites": [ - { - "line": 305, - "column": 16 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.baseline_depth", - "call_sites": [ - { - "line": 747, - "column": 21 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "call_sites": [ - { - "line": 750, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "call_sites": [ - { - "line": 750, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.baseline_depth", - "call_sites": [ - { - "line": 747, - "column": 21 - } - ], - "description": "" - } - ] - }, - { - "relation": "manages execution context and state validation", - "src_name": "Lifecycle Dispatcher", - "dst_name": "State & Delta Manager", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.validate_base_analysis", - "call_sites": [ - { - "line": 741, - "column": 27 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_head", - "call_sites": [ - { - "line": 727, - "column": 13 - } - ], - "description": "" - } - ], - "src_id": "1.1", - "dst_id": "1.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_head", - "call_sites": [ - { - "line": 727, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.validate_base_analysis", - "call_sites": [ - { - "line": 741, - "column": 27 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_base", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._run_ctx", - "call_sites": [ - { - "line": 399, - "column": 30 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_render", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._clear_dir", - "call_sites": [ - { - "line": 574, - "column": 5 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.validate_base_analysis", - "call_sites": [ - { - "line": 741, - "column": 27 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_head", - "call_sites": [ - { - "line": 727, - "column": 13 - } - ], - "description": "" - } - ] - }, - { - "relation": "triggers quality and health reporting", - "src_name": "Lifecycle Dispatcher", - "dst_name": "Post-Analysis Auditor", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_health", - "call_sites": [ - { - "line": 739, - "column": 50 - } - ], - "description": "" - } - ], - "src_id": "1.1", - "dst_id": "1.4", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_health", - "call_sites": [ - { - "line": 739, - "column": 50 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.main", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_health", - "call_sites": [ - { - "line": 739, - "column": 50 - } - ], - "description": "" - } - ] - }, - { - "relation": "queries state for incremental change detection", - "src_name": "Strategy & Scope Resolver", - "dst_name": "State & Delta Manager", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "call_sites": [ - { - "line": 558, - "column": 12 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._load_analysis", - "call_sites": [ - { - "line": 218, - "column": 12 - } - ], - "description": "" - } - ], - "src_id": "1.2", - "dst_id": "1.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._load_analysis", - "call_sites": [ - { - "line": 218, - "column": 12 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._resolve_depth", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._metadata_depth", - "call_sites": [ - { - "line": 245, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "call_sites": [ - { - "line": 558, - "column": 12 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze.full", - "call_sites": [ - { - "line": 551, - "column": 16 - }, - { - "line": 555, - "column": 16 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter.run_analyze", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "call_sites": [ - { - "line": 558, - "column": 12 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._load_metadata", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._load_analysis", - "call_sites": [ - { - "line": 218, - "column": 12 - } - ], - "description": "" - } - ] - }, - { - "relation": "retrieves configuration defaults for state transitions", - "src_name": "State & Delta Manager", - "dst_name": "Strategy & Scope Resolver", - "evidence": "", - "key_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._analysis_depth_or_default", - "call_sites": [ - { - "line": 464, - "column": 26 - }, - { - "line": 476, - "column": 26 - } - ], - "description": "" - } - ], - "src_id": "1.3", - "dst_id": "1.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._analysis_depth_or_default", - "call_sites": [ - { - "line": 464, - "column": 26 - }, - { - "line": 476, - "column": 26 - } - ], - "description": "" - }, - { - "source": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", - "target": "scripts/engine_adapter.py|scripts.engine_adapter._analysis_depth_or_default", - "call_sites": [ - { - "line": 464, - "column": 26 - }, - { - "line": 476, - "column": 26 - } - ], - "description": "" - } - ] - }, - { - "relation": "consumes persisted analysis artifacts", - "src_name": "Post-Analysis Auditor", - "dst_name": "State & Delta Manager", - "evidence": "Runtime dependency on analysis artifacts (Pickle/JSON) managed by State & Delta Manager within the .codeboarding directory.", - "key_edges": [], - "src_id": "1.4", - "dst_id": "1.3", - "is_static": false, - "all_edges": [] - }, - { - "relation": "Provides filtered architectural delta for visualization", - "src_name": "Diff Analysis & Change Detection", - "dst_name": "Mermaid Syntax Generation & Structural Rendering", - "evidence": "The rendering logic consumes the filtered component and relation sets produced by the diff analysis to determine which nodes and edges to include in the final diagram.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._filter_changed", - "call_sites": [], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._count_changed_components", - "call_sites": [ - { - "line": 420, - "column": 17 - } - ], - "description": "" - } - ], - "src_id": "2.1", - "dst_id": "2.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_name", - "call_sites": [ - { - "line": 131, - "column": 24 - }, - { - "line": 141, - "column": 92 - }, - { - "line": 153, - "column": 27 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._count_changed_components", - "call_sites": [ - { - "line": 147, - "column": 16 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._display_status", - "call_sites": [ - { - "line": 135, - "column": 21 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope.__init__", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_name", - "call_sites": [ - { - "line": 336, - "column": 42 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope.__init__", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._display_status", - "call_sites": [ - { - "line": 334, - "column": 22 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._filter_changed", - "call_sites": [], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._count_changed_components", - "call_sites": [ - { - "line": 420, - "column": 17 - } - ], - "description": "" - } - ] - }, - { - "relation": "Supplies metadata for interactive elements", - "src_name": "Diff Analysis & Change Detection", - "dst_name": "UI Enhancement & CTA Integration", - "evidence": "The diff analysis phase prepares the context (like component IDs and names) used by the UI layer to generate deep links and tooltips.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_id", - "call_sites": [], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._sanitize", - "call_sites": [], - "description": "" - } - ], - "src_id": "2.1", - "dst_id": "2.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "call_sites": [ - { - "line": 208, - "column": 44 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", - "call_sites": [ - { - "line": 206, - "column": 15 - }, - { - "line": 207, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope.__init__", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._sanitize", - "call_sites": [ - { - "line": 337, - "column": 52 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_id", - "call_sites": [], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._sanitize", - "call_sites": [], - "description": "" - } - ] - }, - { - "relation": "Supplies visual context for component documentation", - "src_name": "Diff Analysis & Change Detection", - "dst_name": "Documentation Workflow Orchestrator", - "evidence": "The Rendering Engine provides the Mermaid.js diagrams and method-level diffs that are embedded into the markdown files generated for each component.", - "key_edges": [], - "src_id": "2.1", - "dst_id": "3.1", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", - "target": "scripts/build_component_files.py|scripts.build_component_files._changed_files_for", - "call_sites": [ - { - "line": 142, - "column": 17 - } - ], - "description": "" - } - ] - }, - { - "relation": "calls", - "src_name": "Mermaid Syntax Generation & Structural Rendering", - "dst_name": "Diff Analysis & Change Detection", - "evidence": "", - "key_edges": [], - "src_id": "2.2", - "dst_id": "2.1", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._filter_changed", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_id", - "call_sites": [ - { - "line": 376, - "column": 26 - }, - { - "line": 386, - "column": 18 - }, - { - "line": 386, - "column": 34 - }, - { - "line": 393, - "column": 17 - }, - { - "line": 393, - "column": 46 - } - ], - "description": "" - } - ] - }, - { - "relation": "Delegates visual styling and metadata enrichment", - "src_name": "Mermaid Syntax Generation & Structural Rendering", - "dst_name": "UI Enhancement & CTA Integration", - "evidence": "During the recursive emission of Mermaid levels, the generator calls UI utilities to sanitize names, apply CSS classes for change status, and inject interactive directives.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._esc", - "call_sites": [ - { - "line": 455, - "column": 57 - }, - { - "line": 462, - "column": 48 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._init_directive", - "call_sites": [ - { - "line": 422, - "column": 17 - } - ], - "description": "" - } - ], - "src_id": "2.2", - "dst_id": "2.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_relations", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._rel_key", - "call_sites": [ - { - "line": 157, - "column": 26 - }, - { - "line": 159, - "column": 29 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._esc", - "call_sites": [ - { - "line": 455, - "column": 57 - }, - { - "line": 462, - "column": 48 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._init_directive", - "call_sites": [ - { - "line": 422, - "column": 17 - } - ], - "description": "" - } - ] - }, - { - "relation": "calls", - "src_name": "Mermaid Syntax Generation & Structural Rendering", - "dst_name": "Rendering Orchestration", - "evidence": "", - "key_edges": [], - "src_id": "2.2", - "dst_id": "2.4", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changes", - "call_sites": [ - { - "line": 241, - "column": 43 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_method_changes", - "call_sites": [ - { - "line": 227, - "column": 52 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_structural_changes", - "call_sites": [ - { - "line": 226, - "column": 22 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changed_relations", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changes", - "call_sites": [ - { - "line": 442, - "column": 12 - } - ], - "description": "" - } - ] - }, - { - "relation": "calls", - "src_name": "UI Enhancement & CTA Integration", - "dst_name": "Visual Diffing & Rendering Engine", - "evidence": "", - "key_edges": [], - "src_id": "2.3", - "dst_id": "2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._project_analysis", - "call_sites": [ - { - "line": 99, - "column": 12 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.read_analysis_json", - "call_sites": [ - { - "line": 88, - "column": 12 - } - ], - "description": "" - } - ] - }, - { - "relation": "Queries change status for visual highlighting", - "src_name": "UI Enhancement & CTA Integration", - "dst_name": "Diff Analysis & Change Detection", - "evidence": "UI components query the diff state to determine the appropriate visual representation (e.g., color-coding for additions vs. modifications) for specific architectural scopes.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope", - "call_sites": [ - { - "line": 451, - "column": 21 - } - ], - "description": "" - } - ], - "src_id": "2.3", - "dst_id": "2.1", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope", - "call_sites": [ - { - "line": 502, - "column": 21 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._Scope", - "call_sites": [ - { - "line": 451, - "column": 21 - } - ], - "description": "" - } - ] - }, - { - "relation": "calls", - "src_name": "UI Enhancement & CTA Integration", - "dst_name": "Mermaid Syntax Generation & Structural Rendering", - "evidence": "", - "key_edges": [], - "src_id": "2.3", - "dst_id": "2.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", - "call_sites": [ - { - "line": 263, - "column": 23 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_relations", - "call_sites": [ - { - "line": 264, - "column": 33 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._count_changed_components", - "call_sites": [ - { - "line": 471, - "column": 17 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changed_relations", - "call_sites": [ - { - "line": 472, - "column": 32 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._filter_changed", - "call_sites": [ - { - "line": 477, - "column": 13 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_edges", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._esc", - "call_sites": [ - { - "line": 494, - "column": 25 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid.build.emit_level", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._esc", - "call_sites": [ - { - "line": 506, - "column": 57 - }, - { - "line": 513, - "column": 48 - } - ], - "description": "" - } - ] - }, - { - "relation": "calls", - "src_name": "UI Enhancement & CTA Integration", - "dst_name": "Rendering Orchestration", - "evidence": "", - "key_edges": [], - "src_id": "2.3", - "dst_id": "2.4", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._init_directive", - "call_sites": [ - { - "line": 473, - "column": 17 - } - ], - "description": "" - } - ] - }, - { - "relation": "Triggers structural delta computation", - "src_name": "Rendering Orchestration", - "dst_name": "Diff Analysis & Change Detection", - "evidence": "The orchestration layer initiates the analysis by loading serialized analysis data and invoking the diff builder to identify architectural shifts.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", - "call_sites": [ - { - "line": 551, - "column": 23 - }, - { - "line": 551, - "column": 49 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "call_sites": [ - { - "line": 551, - "column": 12 - } - ], - "description": "" - } - ], - "src_id": "2.4", - "dst_id": "2.1", - "is_static": false, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", - "call_sites": [ - { - "line": 551, - "column": 23 - }, - { - "line": 551, - "column": 49 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.build_diff", - "call_sites": [ - { - "line": 551, - "column": 12 - } - ], - "description": "" - } - ] - }, - { - "relation": "Orchestrates diagram generation lifecycle", - "src_name": "Rendering Orchestration", - "dst_name": "Mermaid Syntax Generation & Structural Rendering", - "evidence": "The main controller manages the sequencing of the rendering process, passing the computed diff data to the Mermaid generator.", - "key_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "call_sites": [ - { - "line": 552, - "column": 21 - } - ], - "description": "" - } - ], - "src_id": "2.4", - "dst_id": "2.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_structural_changes", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._file_methods", - "call_sites": [ - { - "line": 134, - "column": 53 - }, - { - "line": 135, - "column": 56 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._methods_by_file", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._file_methods", - "call_sites": [ - { - "line": 125, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", - "call_sites": [ - { - "line": 552, - "column": 21 - } - ], - "description": "" - } - ] - }, - { - "relation": "Orchestrates state-aware component filtering", - "src_name": "Documentation Workflow Orchestrator", - "dst_name": "Architectural Diff Engine", - "evidence": "The orchestrator uses diffing logic to identify which files and subtrees require documentation updates based on the current change set.", - "key_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files._changed_files_for", - "target": "scripts/build_component_files.py|scripts.build_component_files._subtree_methods", - "call_sites": [ - { - "line": 96, - "column": 20 - }, - { - "line": 97, - "column": 20 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files._subtree_files", - "target": "scripts/build_component_files.py|scripts.build_component_files._walk", - "call_sites": [ - { - "line": 69, - "column": 14 - } - ], - "description": "" - } - ], - "src_id": "3.1", - "dst_id": "3.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files._changed_files_for", - "target": "scripts/build_component_files.py|scripts.build_component_files._subtree_methods", - "call_sites": [ - { - "line": 96, - "column": 20 - }, - { - "line": 97, - "column": 20 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files._subtree_files", - "target": "scripts/build_component_files.py|scripts.build_component_files._walk", - "call_sites": [ - { - "line": 69, - "column": 14 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files._changed_files_for", - "target": "scripts/build_component_files.py|scripts.build_component_files._subtree_methods", - "call_sites": [ - { - "line": 96, - "column": 20 - }, - { - "line": 97, - "column": 20 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files._subtree_files", - "target": "scripts/build_component_files.py|scripts.build_component_files._walk", - "call_sites": [ - { - "line": 69, - "column": 14 - } - ], - "description": "" - } - ] - }, - { - "relation": "Triggers documentation synthesis", - "src_name": "Documentation Workflow Orchestrator", - "dst_name": "Markdown & Diagram Renderer", - "evidence": "Direct invocation of the rendering process once the scope of changes has been determined by the orchestrator.", - "key_edges": [], - "src_id": "3.1", - "dst_id": "3.3", - "is_static": false, - "all_edges": [] - }, - { - "relation": "Resolves symbol-to-file mappings for deep-linking", - "src_name": "Architectural Diff Engine", - "dst_name": "Rendering Orchestration", - "evidence": "The Documentation generator maps logical symbols back to physical file paths, allowing the Rendering Engine to create interactive links within the Mermaid diagrams.", - "key_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files._subtree_methods", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._methods_by_file", - "call_sites": [ - { - "line": 82, - "column": 29 - } - ], - "description": "Documentation logic provides the file-to-method mapping required for visual diffing." - } - ], - "src_id": "3.2", - "dst_id": "2.4", - "is_static": true, - "all_edges": [ - { - "source": "scripts/build_component_files.py|scripts.build_component_files._subtree_methods", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._methods_by_file", - "call_sites": [ - { - "line": 82, - "column": 29 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files._subtree_methods", - "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._methods_by_file", - "call_sites": [ - { - "line": 82, - "column": 29 - } - ], - "description": "Documentation logic provides the file-to-method mapping required for visual diffing." - } - ] - }, + ], + "component_id": "5", + "can_expand": false, + "components": [], + "components_relations": [] + } + ], + "components_relations": [ { - "relation": "Persists filtered architectural state", - "src_name": "Architectural Diff Engine", - "dst_name": "Documentation Workflow Orchestrator", - "evidence": "The engine provides the filtered data structures that the orchestrator manages as the \"State Management\" layer for the current run.", + "relation": "Provides Base/Head JSON", + "src_name": "Analysis State Manager", + "dst_name": "Change Impact Analyzer", + "evidence": "File-system handoff via analysis.json snapshots.", "key_edges": [ { - "source": "scripts/build_component_files.py|scripts.build_component_files._walk", - "target": "|State Management", + "source": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", + "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", "call_sites": [], "description": "" } ], - "src_id": "3.2", - "dst_id": "3.1", + "src_id": "1", + "dst_id": "3", "is_static": false, "all_edges": [ { - "source": "scripts/build_component_files.py|scripts.build_component_files._walk", - "target": "|State Management", + "source": "scripts/engine_adapter.py|scripts.engine_adapter._incremental_or_full", + "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.load_analysis", "call_sites": [], "description": "" } ] }, { - "relation": "Queries structural deltas for visual highlighting", - "src_name": "Markdown & Diagram Renderer", - "dst_name": "Architectural Diff Engine", - "evidence": "The renderer utilizes diff utilities to determine how to represent modified components within diagrams and text.", + "relation": "Telemetry env setup", + "src_name": "Analysis State Manager", + "dst_name": "Telemetry & Feedback Handler", + "evidence": "Environment variables captured in telemetry payload.", "key_edges": [ { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta._join_or", - "call_sites": [ - { - "line": 145, - "column": 55 - } - ], + "source": "scripts/engine_adapter.py|engine_adapter.py", + "target": "scripts/submit_feedback.py|submit_feedback.py", + "call_sites": [], "description": "" } ], - "src_id": "3.3", - "dst_id": "3.2", - "is_static": true, + "src_id": "1", + "dst_id": "4", + "is_static": false, "all_edges": [ { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta._join_or", - "call_sites": [ - { - "line": 145, - "column": 55 - } - ], - "description": "" - }, - { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta._join_or", - "call_sites": [ - { - "line": 145, - "column": 55 - } - ], + "source": "scripts/engine_adapter.py|engine_adapter.py", + "target": "scripts/submit_feedback.py|submit_feedback.py", + "call_sites": [], "description": "" } ] }, { - "relation": "Resolves interactive navigation paths", - "src_name": "Markdown & Diagram Renderer", - "dst_name": "Navigation & Linkage Provider", - "evidence": "The renderer delegates URL sanitization and CTA string construction to the provider to maintain consistent link structures.", - "key_edges": [ - { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta.webview_url", - "call_sites": [ - { - "line": 141, - "column": 14 - } - ], - "description": "" - } - ], - "src_id": "3.3", - "dst_id": "3.4", + "relation": "Functional composition", + "src_name": "Visual Documentation Renderer", + "dst_name": "Change Impact Analyzer", + "evidence": "", + "key_edges": [], + "src_id": "2", + "dst_id": "3", "is_static": true, "all_edges": [ { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta.webview_url", - "call_sites": [ - { - "line": 141, - "column": 14 - } - ], - "description": "" - }, - { - "source": "scripts/build_cta.py|scripts.build_cta.build_cta", - "target": "scripts/build_cta.py|scripts.build_cta.webview_url", + "source": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", + "target": "scripts/build_component_files.py|scripts.build_component_files._changed_files_for", "call_sites": [ { - "line": 141, - "column": 14 + "line": 142, + "column": 17 } ], "description": "" @@ -4518,35 +1234,24 @@ ] }, { - "relation": "Provides CLI-driven content updates", - "src_name": "Navigation & Linkage Provider", - "dst_name": "Markdown & Diagram Renderer", - "evidence": "The provider includes a CLI entry point that can trigger specific rendering tasks for CTA updates.", + "relation": "Data flow (Issue Count)", + "src_name": "Visual Documentation Renderer", + "dst_name": "Call-to-Action Generator", + "evidence": "", "key_edges": [ { - "source": "scripts/build_component_files.py|scripts.build_component_files.main", + "source": "scripts/build_component_files.py|scripts/build_component_files.py", "target": "scripts/build_cta.py|scripts.build_cta.build_cta", "call_sites": [], "description": "" } ], - "src_id": "3.4", - "dst_id": "3.3", - "is_static": true, + "src_id": "2", + "dst_id": "5", + "is_static": false, "all_edges": [ { - "source": "scripts/build_cta.py|scripts.build_cta.main", - "target": "scripts/build_cta.py|scripts.build_cta.build_cta", - "call_sites": [ - { - "line": 177, - "column": 9 - } - ], - "description": "" - }, - { - "source": "scripts/build_component_files.py|scripts.build_component_files.main", + "source": "scripts/build_component_files.py|scripts/build_component_files.py", "target": "scripts/build_cta.py|scripts.build_cta.build_cta", "call_sites": [], "description": "" @@ -4554,330 +1259,67 @@ ] }, { - "relation": "queries architectural context", - "src_name": "Feedback Assembler", - "dst_name": "Contextual Metadata Extractor", - "evidence": "The Assembler pulls specific metadata (commands, keys, and character limits) from the Extractor to populate the telemetry schema.", - "key_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_command", - "call_sites": [ - { - "line": 121, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_key", - "call_sites": [ - { - "line": 128, - "column": 20 - } - ], - "description": "" - } - ], - "src_id": "4.2", - "dst_id": "4.1", - "is_static": true, - "all_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_command", - "call_sites": [ - { - "line": 121, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_key", - "call_sites": [ - { - "line": 128, - "column": 20 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_max_chars", - "call_sites": [ - { - "line": 123, - "column": 65 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_command", - "call_sites": [ - { - "line": 121, - "column": 15 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_key", - "call_sites": [ - { - "line": 128, - "column": 20 - } - ], - "description": "" - } - ] - }, - { - "relation": "utilizes identity and sanitization utilities", - "src_name": "Feedback Assembler", - "dst_name": "Remote Dispatcher", - "evidence": "The Assembler relies on utility functions co-located in the Dispatcher component for generating distinct IDs and capping feedback length.", - "key_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.distinct_id", - "call_sites": [ - { - "line": 130, - "column": 24 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.cap_feedback", - "call_sites": [ - { - "line": 122, - "column": 49 - } - ], - "description": "" - } - ], - "src_id": "4.2", - "dst_id": "4.3", - "is_static": true, - "all_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.cap_feedback", - "call_sites": [ - { - "line": 122, - "column": 49 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.distinct_id", - "call_sites": [ - { - "line": 130, - "column": 24 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.extract_feedback", - "call_sites": [ - { - "line": 123, - "column": 9 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.distinct_id", - "call_sites": [ - { - "line": 130, - "column": 24 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.cap_feedback", - "call_sites": [ - { - "line": 122, - "column": 49 - } - ], - "description": "" - } - ] - }, - { - "relation": "verifies transmission policy", - "src_name": "Remote Dispatcher", - "dst_name": "Contextual Metadata Extractor", - "evidence": "The Dispatcher queries the Extractor to determine if telemetry is globally disabled or to resolve the target host before initiating network egress.", - "key_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.telemetry_disabled", - "call_sites": [ - { - "line": 150, - "column": 8 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_host", - "call_sites": [ - { - "line": 164, - "column": 32 - } - ], - "description": "" - } - ], - "src_id": "4.3", - "dst_id": "4.1", + "relation": "calls", + "src_name": "Change Impact Analyzer", + "dst_name": "Visual Documentation Renderer", + "evidence": "", + "key_edges": [], + "src_id": "3", + "dst_id": "2", "is_static": true, "all_edges": [ { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.post", + "source": "scripts/build_component_files.py|scripts.build_component_files.main", + "target": "scripts/build_component_files.py|scripts.build_component_files.render_component_files", "call_sites": [ { - "line": 164, + "line": 208, "column": 18 } ], "description": "" }, { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_host", - "call_sites": [ - { - "line": 164, - "column": 32 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.telemetry_disabled", - "call_sites": [ - { - "line": 150, - "column": 8 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.telemetry_disabled", - "call_sites": [ - { - "line": 150, - "column": 8 - } - ], - "description": "" - }, - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.resolve_host", + "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", + "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._comp_name", "call_sites": [ { - "line": 164, - "column": 32 - } - ], - "description": "" - } - ] - }, - { - "relation": "orchestrates payload construction", - "src_name": "Remote Dispatcher", - "dst_name": "Feedback Assembler", - "evidence": "The main execution loop in the Dispatcher triggers the assembly process to transform internal state into a structured JSON payload.", - "key_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", - "call_sites": [ + "line": 216, + "column": 21 + }, { - "line": 154, - "column": 15 - } - ], - "description": "" - } - ], - "src_id": "4.3", - "dst_id": "4.2", - "is_static": true, - "all_edges": [ - { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.distinct_id", - "target": "scripts/submit_feedback.py|scripts.submit_feedback._first", - "call_sites": [ + "line": 221, + "column": 39 + }, { - "line": 88, - "column": 17 + "line": 225, + "column": 27 }, { - "line": 91, - "column": 26 + "line": 250, + "column": 12 } ], "description": "" }, { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", + "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._diff_components", + "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid._has_changes", "call_sites": [ { - "line": 154, - "column": 15 + "line": 241, + "column": 43 } ], "description": "" }, { - "source": "scripts/submit_feedback.py|scripts.submit_feedback.main", - "target": "scripts/submit_feedback.py|scripts.submit_feedback.build_payload", + "source": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.main", + "target": "scripts/diff_to_mermaid.py|scripts.diff_to_mermaid.render_mermaid", "call_sites": [ { - "line": 154, - "column": 15 + "line": 603, + "column": 21 } ], "description": "" diff --git a/.codeboarding/fingerprint.json b/.codeboarding/fingerprint.json index 3da90e2..7d64be0 100644 --- a/.codeboarding/fingerprint.json +++ b/.codeboarding/fingerprint.json @@ -1,19 +1,19 @@ { "files": { - "release-please-config.json": "e1ea6dfc5a9fa8bd", - "AGENT.md": "6f89daa8e2f2a3b5", - "README.md": "437c1d5c6c71abc9", - "action.yml": "54f7bc53deb8e326", "CHANGELOG.md": "4de893d27b60954e", "pyproject.toml": "d2f78b9c7f0b5865", + "AGENT.md": "6f89daa8e2f2a3b5", + "action.yml": "73815702b10b208b", "LICENSE": "356a3402bd47e108", - "assets/icon.svg": "1f5885e35bb4798e", + "README.md": "5e0dd319911d0d56", + "release-please-config.json": "e1ea6dfc5a9fa8bd", + "scripts/build_component_files.py": "aec54432fc8adf81", + "scripts/engine_adapter.py": "b84ea0daacfb2846", "scripts/build_cta.py": "8b2953156606caab", "scripts/submit_feedback.py": "71ccef667b21feda", "scripts/diff_to_mermaid.py": "5ce398438ebca41e", - "scripts/build_component_files.py": "aec54432fc8adf81", - "scripts/engine_adapter.py": "b84ea0daacfb2846", "scripts/run_local.sh": "e67093b7cb812e1c", - "docs/COMMIT_STRATEGY.md": "07bb1c3c7d08ac3e" + "docs/COMMIT_STRATEGY.md": "705ad60319f2c7fb", + "assets/icon.svg": "1f5885e35bb4798e" } } \ No newline at end of file diff --git a/.codeboarding/health/health_report.json b/.codeboarding/health/health_report.json index 70a4377..fc5439d 100644 --- a/.codeboarding/health/health_report.json +++ b/.codeboarding/health/health_report.json @@ -1,7 +1,7 @@ { "repository_name": "CodeBoarding-action", - "timestamp": "2026-07-15T21:01:11.536856+00:00", - "overall_score": 0.9954545454545455, + "timestamp": "2026-07-28T17:24:30.123933+00:00", + "overall_score": 0.9954716981132076, "check_summaries": [ { "check_name": "function_size", @@ -58,6 +58,34 @@ "score": 1.0, "finding_groups": [] }, + { + "check_name": "inheritance_depth", + "description": "Checks that class inheritance hierarchies do not exceed depth thresholds", + "check_type": "standard", + "total_entities_checked": 1, + "findings_count": 0, + "warning_count": 0, + "score": 1.0, + "finding_groups": [] + }, + { + "check_name": "circular_dependencies", + "description": "Detects circular dependencies between packages", + "check_type": "circular_dependencies", + "cycles": [], + "packages_checked": 1, + "packages_in_cycles": 0 + }, + { + "check_name": "package_instability", + "description": "Computes Martin's instability metric (I = Ce / (Ca + Ce)) per package", + "check_type": "standard", + "total_entities_checked": 0, + "findings_count": 0, + "warning_count": 0, + "score": 1.0, + "finding_groups": [] + }, { "check_name": "unused_code_diagnostics", "description": "Detects unused imports, variables, functions, and dead code via LSP diagnostics", diff --git a/.codeboarding/overview.md b/.codeboarding/overview.md index 9f89cf9..5f1c212 100644 --- a/.codeboarding/overview.md +++ b/.codeboarding/overview.md @@ -1,36 +1,33 @@ ```mermaid graph LR - Analysis_Orchestrator["Analysis Orchestrator"] - Visual_Diffing_Rendering_Engine["Visual Diffing & Rendering Engine"] - Documentation_CTA_Generator["Documentation & CTA Generator"] - Telemetry_Feedback_Provider["Telemetry & Feedback Provider"] - Analysis_Orchestrator -- "Orchestrates structural comparison and visualization" --> Visual_Diffing_Rendering_Engine - Analysis_Orchestrator -- "Provides health metrics for navigation context" --> Documentation_CTA_Generator - Analysis_Orchestrator -- "Reports execution status and quota metrics" --> Telemetry_Feedback_Provider - Visual_Diffing_Rendering_Engine -- "Supplies visual context for component documentation" --> Documentation_CTA_Generator - Documentation_CTA_Generator -- "Resolves symbol-to-file mappings for deep-linking" --> Visual_Diffing_Rendering_Engine - click Analysis_Orchestrator href "https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboarding/Analysis_Orchestrator.md" "Details" - click Visual_Diffing_Rendering_Engine href "https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboarding/Visual_Diffing_Rendering_Engine.md" "Details" - click Documentation_CTA_Generator href "https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboarding/Documentation_CTA_Generator.md" "Details" - click Telemetry_Feedback_Provider href "https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboarding/Telemetry_Feedback_Provider.md" "Details" + Analysis_State_Manager["Analysis State Manager"] + Visual_Documentation_Renderer["Visual Documentation Renderer"] + Change_Impact_Analyzer["Change Impact Analyzer"] + Telemetry_Feedback_Handler["Telemetry & Feedback Handler"] + Call_to_Action_Generator["Call-to-Action Generator"] + Analysis_State_Manager -- "Provides Base/Head JSON" --> Change_Impact_Analyzer + Analysis_State_Manager -- "Telemetry env setup" --> Telemetry_Feedback_Handler + Visual_Documentation_Renderer -- "Functional composition" --> Change_Impact_Analyzer + Visual_Documentation_Renderer -- "Data flow (Issue Count)" --> Call_to_Action_Generator + Change_Impact_Analyzer -- "calls" --> Visual_Documentation_Renderer ``` [![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) ## Details -A stateful pipeline architecture for a CI/CD governance tool, orchestrating static analysis, visual diffing, documentation generation, and telemetry feedback loops to provide architectural insights. +The CodeBoarding GitHub Action functions as a post-processing pipeline for static analysis in CI/CD environments. It manages analysis state, performs structural diffing to identify architectural changes, renders visual documentation via Mermaid.js, generates interactive developer call-to-actions, and handles telemetry and feedback collection to provide actionable architectural insights. -### Analysis Orchestrator [[Expand]](./Analysis_Orchestrator.md) -Acts as the central controller and entry point for the Python execution environment. It manages the analysis lifecycle, determines whether to perform a full or incremental scan based on existing metadata, and coordinates the execution of the static analysis engine. +### Analysis State Manager +Manages the lifecycle of static analysis data, including loading metadata, tracking quota usage, and handling incremental vs. full analysis states. **Related Classes/Methods**: -- `scripts.engine_adapter.main`:658-764 -- `scripts.engine_adapter.run_analyze`:520-569 -- `scripts.engine_adapter._load_metadata`:217-222 -- `scripts.engine_adapter.run_base`:398-401 +- `scripts.engine_adapter._load_analysis`:207-214 +- `scripts.engine_adapter._is_quota_exhausted`:156-171 +- `scripts.engine_adapter._incremental_or_full`:436-480 +- `scripts.engine_adapter._count_health_report`:618-626 @@ -68,17 +65,16 @@ Acts as the central controller and entry point for the Python execution environm - `scripts.engine_adapter.main` ([L658-L764](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L658-L764)) - Function -### Visual Diffing & Rendering Engine [[Expand]](./Visual_Diffing_Rendering_Engine.md) -Responsible for the structural comparison between the current code state and the baseline. It identifies modified components, relations, and methods, then transforms these differences into Mermaid.js syntax for visual representation within GitHub. +### Visual Documentation Renderer +Responsible for generating the visual representation of components and their change status using Mermaid.js syntax and Markdown formatting. **Related Classes/Methods**: -- `scripts.diff_to_mermaid.main`:578-619 -- `scripts.diff_to_mermaid.build_diff`:261-268 -- `scripts.diff_to_mermaid._project_analysis`:61-77 -- `scripts.diff_to_mermaid._Scope.resolve`:351-360 -- `scripts.diff_to_mermaid.read_analysis_json`:80-84 +- `scripts.diff_to_mermaid._display_status`:312-313 +- `scripts.build_component_files.render_component_files`:124-175 +- `scripts.diff_to_mermaid._init_directive`:408-427 +- `scripts.build_component_files._block`:104-121 @@ -87,24 +83,10 @@ Responsible for the structural comparison between the current code state and the - [`scripts/build_component_files.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py) - `scripts.build_component_files._block` ([L104-L121](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L104-L121)) - Function - `scripts.build_component_files.render_component_files` ([L124-L175](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L124-L175)) - Function - - `scripts.build_component_files.main` ([L178-L216](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L178-L216)) - Function - [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid._relation_dict` ([L50-L58](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L50-L58)) - Function - - `scripts.diff_to_mermaid._project_analysis` ([L61-L77](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L61-L77)) - Function - - `scripts.diff_to_mermaid._project_analysis.project_level` ([L65-L74](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L65-L74)) - Function - - `scripts.diff_to_mermaid.read_analysis_json` ([L80-L84](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L80-L84)) - Function - - `scripts.diff_to_mermaid.load_analysis` ([L87-L105](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L87-L105)) - Function - `scripts.diff_to_mermaid._comp_id` ([L111-L112](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L111-L112)) - Function - `scripts.diff_to_mermaid._comp_name` ([L115-L116](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L115-L116)) - Function - - `scripts.diff_to_mermaid._file_methods` ([L119-L120](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L119-L120)) - Function - - `scripts.diff_to_mermaid._methods_by_file` ([L123-L130](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L123-L130)) - Function - - `scripts.diff_to_mermaid._has_structural_changes` ([L133-L136](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L133-L136)) - Function - - `scripts.diff_to_mermaid._has_method_changes` ([L139-L144](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L139-L144)) - Function - - `scripts.diff_to_mermaid._rel_key` ([L147-L150](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L147-L150)) - Function - - `scripts.diff_to_mermaid._diff_relations` ([L153-L199](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L153-L199)) - Function - `scripts.diff_to_mermaid._has_changes` ([L202-L210](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L202-L210)) - Function - - `scripts.diff_to_mermaid._diff_components` ([L213-L258](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L213-L258)) - Function - - `scripts.diff_to_mermaid.build_diff` ([L261-L268](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L261-L268)) - Function - `scripts.diff_to_mermaid._sanitize` ([L274-L276](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L274-L276)) - Function - `scripts.diff_to_mermaid._esc` ([L298-L304](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L298-L304)) - Function - `scripts.diff_to_mermaid._truncate` ([L307-L309](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L307-L309)) - Function @@ -121,17 +103,18 @@ Responsible for the structural comparison between the current code state and the - `scripts.diff_to_mermaid.render_mermaid.build` ([L475-L548](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L475-L548)) - Function - `scripts.diff_to_mermaid.render_mermaid.build.emit_edges` ([L486-L498](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L486-L498)) - Function - `scripts.diff_to_mermaid.render_mermaid.build.emit_level` ([L500-L517](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L500-L517)) - Function - - `scripts.diff_to_mermaid.main` ([L578-L619](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L578-L619)) - Function -### Documentation & CTA Generator [[Expand]](./Documentation_CTA_Generator.md) -Maps the analyzed code structure back to the physical file system to generate developer-centric documentation. It creates markdown files for components and "Call-to-Action" (CTA) links that facilitate navigation between the code and the architectural view. +### Change Impact Analyzer +Performs structural diffing between analysis snapshots to identify changed files, methods, and architectural relations. **Related Classes/Methods**: -- `scripts.build_cta.build_cta`:93-152 -- `scripts.build_component_files._walk`:56-62 +- `scripts.diff_to_mermaid._diff_components`:213-258 +- `scripts.diff_to_mermaid._has_structural_changes`:133-136 +- `scripts.build_component_files._subtree_methods`:77-85 +- `scripts.build_component_files._changed_files_for`:88-101 @@ -142,24 +125,34 @@ Maps the analyzed code structure back to the physical file system to generate de - `scripts.build_component_files._subtree_files` ([L65-L74](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L65-L74)) - Function - `scripts.build_component_files._subtree_methods` ([L77-L85](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L77-L85)) - Function - `scripts.build_component_files._changed_files_for` ([L88-L101](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L88-L101)) - Function -- [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) - - `scripts.build_cta.detect_editors` ([L37-L49](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L37-L49)) - Function - - `scripts.build_cta.webview_url` ([L63-L81](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L63-L81)) - Function - - `scripts.build_cta._join_or` ([L84-L90](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L84-L90)) - Function - - `scripts.build_cta.build_cta` ([L93-L152](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L93-L152)) - Function - - `scripts.build_cta.build_cta.link` ([L126-L127](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L126-L127)) - Function - - `scripts.build_cta.main` ([L155-L189](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L155-L189)) - Function + - `scripts.build_component_files.main` ([L178-L216](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L178-L216)) - Function +- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) + - `scripts.diff_to_mermaid._relation_dict` ([L50-L58](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L50-L58)) - Function + - `scripts.diff_to_mermaid._project_analysis` ([L61-L77](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L61-L77)) - Function + - `scripts.diff_to_mermaid._project_analysis.project_level` ([L65-L74](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L65-L74)) - Function + - `scripts.diff_to_mermaid.read_analysis_json` ([L80-L84](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L80-L84)) - Function + - `scripts.diff_to_mermaid.load_analysis` ([L87-L105](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L87-L105)) - Function + - `scripts.diff_to_mermaid._file_methods` ([L119-L120](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L119-L120)) - Function + - `scripts.diff_to_mermaid._methods_by_file` ([L123-L130](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L123-L130)) - Function + - `scripts.diff_to_mermaid._has_structural_changes` ([L133-L136](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L133-L136)) - Function + - `scripts.diff_to_mermaid._has_method_changes` ([L139-L144](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L139-L144)) - Function + - `scripts.diff_to_mermaid._rel_key` ([L147-L150](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L147-L150)) - Function + - `scripts.diff_to_mermaid._diff_relations` ([L153-L199](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L153-L199)) - Function + - `scripts.diff_to_mermaid._diff_components` ([L213-L258](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L213-L258)) - Function + - `scripts.diff_to_mermaid.build_diff` ([L261-L268](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L261-L268)) - Function + - `scripts.diff_to_mermaid.main` ([L578-L619](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L578-L619)) - Function -### Telemetry & Feedback Provider [[Expand]](./Telemetry_Feedback_Provider.md) -A specialized component that handles the collection and transmission of execution metrics and user feedback. It ensures data is anonymized and transmitted securely to the remote backend for service improvement. +### Telemetry & Feedback Handler +Collects execution metadata and user feedback to package and transmit as payloads to external monitoring or feedback services. **Related Classes/Methods**: -- `scripts.submit_feedback.main`:147-172 -- `scripts.submit_feedback.post`:135-144 - `scripts.submit_feedback.build_payload`:119-132 +- `scripts.submit_feedback.post`:135-144 +- `scripts.submit_feedback.extract_feedback`:55-69 +- `scripts.submit_feedback.resolve_command`:43-44 @@ -181,6 +174,29 @@ A specialized component that handles the collection and transmission of executio - `scripts.submit_feedback.main` ([L147-L172](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L147-L172)) - Function +### Call-to-Action Generator +Constructs interactive links and webview URLs to guide developers from the CI environment back to the CodeBoarding dashboard or IDE editors. + + +**Related Classes/Methods**: + +- `scripts.build_cta.build_cta`:93-152 +- `scripts.build_cta.webview_url`:63-81 +- `scripts.build_cta.detect_editors`:37-49 + + + +**Source Files:** + +- [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) + - `scripts.build_cta.detect_editors` ([L37-L49](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L37-L49)) - Function + - `scripts.build_cta.webview_url` ([L63-L81](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L63-L81)) - Function + - `scripts.build_cta._join_or` ([L84-L90](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L84-L90)) - Function + - `scripts.build_cta.build_cta` ([L93-L152](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L93-L152)) - Function + - `scripts.build_cta.build_cta.link` ([L126-L127](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L126-L127)) - Function + - `scripts.build_cta.main` ([L155-L189](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L155-L189)) - Function + + ### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) \ No newline at end of file diff --git a/.codeboarding/static_analysis.pkl b/.codeboarding/static_analysis.pkl index f603afa9fbe84f8db50615002c6dc7736493d30a..a2d90dde162e3a6bc8898ef0bfc101ebf301efb8 100644 GIT binary patch literal 49053 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 literal 56795 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 W;&t>*T1pRth%>QtDp#Lrs{UU9s Visual_Diffing_Rendering_Engine - Analysis_Orchestrator -- "Provides health metrics for navigation context" --> Documentation_CTA_Generator - Analysis_Orchestrator -- "Reports execution status and quota metrics" --> Telemetry_Feedback_Provider - Visual_Diffing_Rendering_Engine -- "Supplies visual context for component documentation" --> Documentation_CTA_Generator - Documentation_CTA_Generator -- "Resolves symbol-to-file mappings for deep-linking" --> Visual_Diffing_Rendering_Engine - click Analysis_Orchestrator href "https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboarding/Analysis_Orchestrator.md" "Details" - click Visual_Diffing_Rendering_Engine href "https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboarding/Visual_Diffing_Rendering_Engine.md" "Details" - click Documentation_CTA_Generator href "https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboarding/Documentation_CTA_Generator.md" "Details" - click Telemetry_Feedback_Provider href "https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboarding/Telemetry_Feedback_Provider.md" "Details" + Analysis_State_Manager["Analysis State Manager"] + Visual_Documentation_Renderer["Visual Documentation Renderer"] + Change_Impact_Analyzer["Change Impact Analyzer"] + Telemetry_Feedback_Handler["Telemetry & Feedback Handler"] + Call_to_Action_Generator["Call-to-Action Generator"] + Analysis_State_Manager -- "Provides Base/Head JSON" --> Change_Impact_Analyzer + Analysis_State_Manager -- "Telemetry env setup" --> Telemetry_Feedback_Handler + Visual_Documentation_Renderer -- "Functional composition" --> Change_Impact_Analyzer + Visual_Documentation_Renderer -- "Data flow (Issue Count)" --> Call_to_Action_Generator + Change_Impact_Analyzer -- "calls" --> Visual_Documentation_Renderer ``` [![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) ## Details -A stateful pipeline architecture for a CI/CD governance tool, orchestrating static analysis, visual diffing, documentation generation, and telemetry feedback loops to provide architectural insights. +The CodeBoarding GitHub Action functions as a post-processing pipeline for static analysis in CI/CD environments. It manages analysis state, performs structural diffing to identify architectural changes, renders visual documentation via Mermaid.js, generates interactive developer call-to-actions, and handles telemetry and feedback collection to provide actionable architectural insights. -### Analysis Orchestrator [[Expand]](./Analysis_Orchestrator.md) -Acts as the central controller and entry point for the Python execution environment. It manages the analysis lifecycle, determines whether to perform a full or incremental scan based on existing metadata, and coordinates the execution of the static analysis engine. +### Analysis State Manager +Manages the lifecycle of static analysis data, including loading metadata, tracking quota usage, and handling incremental vs. full analysis states. **Related Classes/Methods**: -- `scripts.engine_adapter.main`:658-764 -- `scripts.engine_adapter.run_analyze`:520-569 -- `scripts.engine_adapter._load_metadata`:217-222 -- `scripts.engine_adapter.run_base`:398-401 +- `scripts.engine_adapter._load_analysis`:207-214 +- `scripts.engine_adapter._is_quota_exhausted`:156-171 +- `scripts.engine_adapter._incremental_or_full`:436-480 +- `scripts.engine_adapter._count_health_report`:618-626 @@ -68,17 +65,16 @@ Acts as the central controller and entry point for the Python execution environm - `scripts.engine_adapter.main` ([L658-L764](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L658-L764)) - Function -### Visual Diffing & Rendering Engine [[Expand]](./Visual_Diffing_Rendering_Engine.md) -Responsible for the structural comparison between the current code state and the baseline. It identifies modified components, relations, and methods, then transforms these differences into Mermaid.js syntax for visual representation within GitHub. +### Visual Documentation Renderer +Responsible for generating the visual representation of components and their change status using Mermaid.js syntax and Markdown formatting. **Related Classes/Methods**: -- `scripts.diff_to_mermaid.main`:578-619 -- `scripts.diff_to_mermaid.build_diff`:261-268 -- `scripts.diff_to_mermaid._project_analysis`:61-77 -- `scripts.diff_to_mermaid._Scope.resolve`:351-360 -- `scripts.diff_to_mermaid.read_analysis_json`:80-84 +- `scripts.diff_to_mermaid._display_status`:312-313 +- `scripts.build_component_files.render_component_files`:124-175 +- `scripts.diff_to_mermaid._init_directive`:408-427 +- `scripts.build_component_files._block`:104-121 @@ -87,24 +83,10 @@ Responsible for the structural comparison between the current code state and the - [`scripts/build_component_files.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py) - `scripts.build_component_files._block` ([L104-L121](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L104-L121)) - Function - `scripts.build_component_files.render_component_files` ([L124-L175](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L124-L175)) - Function - - `scripts.build_component_files.main` ([L178-L216](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L178-L216)) - Function - [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid._relation_dict` ([L50-L58](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L50-L58)) - Function - - `scripts.diff_to_mermaid._project_analysis` ([L61-L77](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L61-L77)) - Function - - `scripts.diff_to_mermaid._project_analysis.project_level` ([L65-L74](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L65-L74)) - Function - - `scripts.diff_to_mermaid.read_analysis_json` ([L80-L84](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L80-L84)) - Function - - `scripts.diff_to_mermaid.load_analysis` ([L87-L105](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L87-L105)) - Function - `scripts.diff_to_mermaid._comp_id` ([L111-L112](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L111-L112)) - Function - `scripts.diff_to_mermaid._comp_name` ([L115-L116](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L115-L116)) - Function - - `scripts.diff_to_mermaid._file_methods` ([L119-L120](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L119-L120)) - Function - - `scripts.diff_to_mermaid._methods_by_file` ([L123-L130](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L123-L130)) - Function - - `scripts.diff_to_mermaid._has_structural_changes` ([L133-L136](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L133-L136)) - Function - - `scripts.diff_to_mermaid._has_method_changes` ([L139-L144](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L139-L144)) - Function - - `scripts.diff_to_mermaid._rel_key` ([L147-L150](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L147-L150)) - Function - - `scripts.diff_to_mermaid._diff_relations` ([L153-L199](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L153-L199)) - Function - `scripts.diff_to_mermaid._has_changes` ([L202-L210](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L202-L210)) - Function - - `scripts.diff_to_mermaid._diff_components` ([L213-L258](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L213-L258)) - Function - - `scripts.diff_to_mermaid.build_diff` ([L261-L268](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L261-L268)) - Function - `scripts.diff_to_mermaid._sanitize` ([L274-L276](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L274-L276)) - Function - `scripts.diff_to_mermaid._esc` ([L298-L304](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L298-L304)) - Function - `scripts.diff_to_mermaid._truncate` ([L307-L309](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L307-L309)) - Function @@ -121,17 +103,18 @@ Responsible for the structural comparison between the current code state and the - `scripts.diff_to_mermaid.render_mermaid.build` ([L475-L548](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L475-L548)) - Function - `scripts.diff_to_mermaid.render_mermaid.build.emit_edges` ([L486-L498](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L486-L498)) - Function - `scripts.diff_to_mermaid.render_mermaid.build.emit_level` ([L500-L517](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L500-L517)) - Function - - `scripts.diff_to_mermaid.main` ([L578-L619](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L578-L619)) - Function -### Documentation & CTA Generator [[Expand]](./Documentation_CTA_Generator.md) -Maps the analyzed code structure back to the physical file system to generate developer-centric documentation. It creates markdown files for components and "Call-to-Action" (CTA) links that facilitate navigation between the code and the architectural view. +### Change Impact Analyzer +Performs structural diffing between analysis snapshots to identify changed files, methods, and architectural relations. **Related Classes/Methods**: -- `scripts.build_cta.build_cta`:93-152 -- `scripts.build_component_files._walk`:56-62 +- `scripts.diff_to_mermaid._diff_components`:213-258 +- `scripts.diff_to_mermaid._has_structural_changes`:133-136 +- `scripts.build_component_files._subtree_methods`:77-85 +- `scripts.build_component_files._changed_files_for`:88-101 @@ -142,24 +125,34 @@ Maps the analyzed code structure back to the physical file system to generate de - `scripts.build_component_files._subtree_files` ([L65-L74](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L65-L74)) - Function - `scripts.build_component_files._subtree_methods` ([L77-L85](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L77-L85)) - Function - `scripts.build_component_files._changed_files_for` ([L88-L101](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L88-L101)) - Function -- [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) - - `scripts.build_cta.detect_editors` ([L37-L49](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L37-L49)) - Function - - `scripts.build_cta.webview_url` ([L63-L81](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L63-L81)) - Function - - `scripts.build_cta._join_or` ([L84-L90](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L84-L90)) - Function - - `scripts.build_cta.build_cta` ([L93-L152](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L93-L152)) - Function - - `scripts.build_cta.build_cta.link` ([L126-L127](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L126-L127)) - Function - - `scripts.build_cta.main` ([L155-L189](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L155-L189)) - Function + - `scripts.build_component_files.main` ([L178-L216](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L178-L216)) - Function +- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) + - `scripts.diff_to_mermaid._relation_dict` ([L50-L58](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L50-L58)) - Function + - `scripts.diff_to_mermaid._project_analysis` ([L61-L77](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L61-L77)) - Function + - `scripts.diff_to_mermaid._project_analysis.project_level` ([L65-L74](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L65-L74)) - Function + - `scripts.diff_to_mermaid.read_analysis_json` ([L80-L84](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L80-L84)) - Function + - `scripts.diff_to_mermaid.load_analysis` ([L87-L105](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L87-L105)) - Function + - `scripts.diff_to_mermaid._file_methods` ([L119-L120](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L119-L120)) - Function + - `scripts.diff_to_mermaid._methods_by_file` ([L123-L130](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L123-L130)) - Function + - `scripts.diff_to_mermaid._has_structural_changes` ([L133-L136](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L133-L136)) - Function + - `scripts.diff_to_mermaid._has_method_changes` ([L139-L144](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L139-L144)) - Function + - `scripts.diff_to_mermaid._rel_key` ([L147-L150](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L147-L150)) - Function + - `scripts.diff_to_mermaid._diff_relations` ([L153-L199](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L153-L199)) - Function + - `scripts.diff_to_mermaid._diff_components` ([L213-L258](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L213-L258)) - Function + - `scripts.diff_to_mermaid.build_diff` ([L261-L268](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L261-L268)) - Function + - `scripts.diff_to_mermaid.main` ([L578-L619](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L578-L619)) - Function -### Telemetry & Feedback Provider [[Expand]](./Telemetry_Feedback_Provider.md) -A specialized component that handles the collection and transmission of execution metrics and user feedback. It ensures data is anonymized and transmitted securely to the remote backend for service improvement. +### Telemetry & Feedback Handler +Collects execution metadata and user feedback to package and transmit as payloads to external monitoring or feedback services. **Related Classes/Methods**: -- `scripts.submit_feedback.main`:147-172 -- `scripts.submit_feedback.post`:135-144 - `scripts.submit_feedback.build_payload`:119-132 +- `scripts.submit_feedback.post`:135-144 +- `scripts.submit_feedback.extract_feedback`:55-69 +- `scripts.submit_feedback.resolve_command`:43-44 @@ -181,398 +174,29 @@ A specialized component that handles the collection and transmission of executio - `scripts.submit_feedback.main` ([L147-L172](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L147-L172)) - Function - - -### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) - -```mermaid -graph LR - Lifecycle_Dispatcher["Lifecycle Dispatcher"] - Strategy_Scope_Resolver["Strategy & Scope Resolver"] - State_Delta_Manager["State & Delta Manager"] - Post_Analysis_Auditor["Post-Analysis Auditor"] - Lifecycle_Dispatcher -- "orchestrates analysis strategy selection" --> Strategy_Scope_Resolver - Lifecycle_Dispatcher -- "manages execution context and state validation" --> State_Delta_Manager - Lifecycle_Dispatcher -- "triggers quality and health reporting" --> Post_Analysis_Auditor - Strategy_Scope_Resolver -- "queries state for incremental change detection" --> State_Delta_Manager - State_Delta_Manager -- "retrieves configuration defaults for state transitions" --> Strategy_Scope_Resolver - Post_Analysis_Auditor -- "consumes persisted analysis artifacts" --> State_Delta_Manager -``` - -[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) - -## Details - -Acts as the central controller and entry point for the Python execution environment. It manages the analysis lifecycle, determines whether to perform a full or incremental scan based on existing metadata, and coordinates the execution of the static analysis engine. - -### Lifecycle Dispatcher -The primary entry point and command-line interface handler that interprets execution modes and manages the high-level sequence of operations. - - -**Related Classes/Methods**: - -- `scripts.engine_adapter.main`:658-764 -- `scripts.engine_adapter.run_base`:398-401 -- `scripts.engine_adapter.run_seed`:404-433 -- `scripts.engine_adapter.run_render`:572-583 - - - -**Source Files:** - -- [`scripts/engine_adapter.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py) - - `scripts.engine_adapter._require_engine` ([L113-L129](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L113-L129)) - Function - - `scripts.engine_adapter._is_quota_exhausted` ([L156-L171](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L156-L171)) - Function - - `scripts.engine_adapter._flag_quota_exhausted` ([L174-L183](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L174-L183)) - Function - - `scripts.engine_adapter._metadata_commit` ([L271-L273](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L271-L273)) - Function - - `scripts.engine_adapter.baseline_info` ([L299-L309](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L299-L309)) - Function - - `scripts.engine_adapter.run_base` ([L398-L401](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L398-L401)) - Function - - `scripts.engine_adapter.run_seed` ([L404-L433](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L404-L433)) - Function - - `scripts.engine_adapter.run_render` ([L572-L583](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L572-L583)) - Function - - `scripts.engine_adapter.run_concat` ([L586-L599](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L586-L599)) - Function - - `scripts.engine_adapter.main` ([L658-L764](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L658-L764)) - Function - - -### Strategy & Scope Resolver -Responsible for determining technical parameters of the analysis by loading metadata and calculating analysis depth based on configuration and history. - - -**Related Classes/Methods**: - -- `scripts.engine_adapter.run_analyze`:520-569 -- `scripts.engine_adapter._load_metadata`:217-222 -- `scripts.engine_adapter._resolve_depth`:232-261 -- `scripts.engine_adapter.baseline_depth`:312-327 - - - -**Source Files:** - -- [`scripts/engine_adapter.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py) - - `scripts.engine_adapter._max_depth` ([L146-L147](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L146-L147)) - Function - - `scripts.engine_adapter._load_metadata` ([L217-L222](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L217-L222)) - Function - - `scripts.engine_adapter._resolve_depth` ([L232-L261](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L232-L261)) - Function - - `scripts.engine_adapter._analysis_depth_or_default` ([L264-L268](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L264-L268)) - Function - - `scripts.engine_adapter.baseline_depth` ([L312-L327](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L312-L327)) - Function - - `scripts.engine_adapter.run_analyze` ([L520-L569](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L520-L569)) - Function - - -### State & Delta Manager -Manages stateful incremental logic, comparing commits against baselines, validating analysis integrity, and providing filesystem context. +### Call-to-Action Generator +Constructs interactive links and webview URLs to guide developers from the CI environment back to the CodeBoarding dashboard or IDE editors. **Related Classes/Methods**: -- `scripts.engine_adapter._incremental_or_full`:436-480 -- `scripts.engine_adapter.run_head`:483-517 -- `scripts.engine_adapter.validate_base_analysis`:330-395 -- `scripts.engine_adapter._run_ctx`:190-195 - - - -**Source Files:** - -- [`scripts/engine_adapter.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py) - - `scripts.engine_adapter._log_path` ([L186-L187](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L186-L187)) - Function - - `scripts.engine_adapter._run_ctx` ([L190-L195](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L190-L195)) - Function - - `scripts.engine_adapter._clear_dir` ([L198-L204](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L198-L204)) - Function - - `scripts.engine_adapter._load_analysis` ([L207-L214](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L207-L214)) - Function - - `scripts.engine_adapter._metadata_depth` ([L225-L229](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L225-L229)) - Function - - `scripts.engine_adapter._analysis_model_error` ([L276-L296](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L276-L296)) - Function - - `scripts.engine_adapter.validate_base_analysis` ([L330-L395](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L330-L395)) - Function - - `scripts.engine_adapter._incremental_or_full` ([L436-L480](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L436-L480)) - Function - - `scripts.engine_adapter.run_head` ([L483-L517](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L483-L517)) - Function - - `scripts.engine_adapter.run_analyze.full` ([L541-L548](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L541-L548)) - Function - - -### Post-Analysis Auditor -A diagnostic component that parses generated metadata to produce health reports and identify architectural violations. - - -**Related Classes/Methods**: - -- `scripts.engine_adapter.run_health`:629-655 -- `scripts.engine_adapter._count_health_report`:618-626 -- `scripts.engine_adapter._count_report_issues`:602-615 - - - -**Source Files:** - -- [`scripts/engine_adapter.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py) - - `scripts.engine_adapter._count_report_issues` ([L602-L615](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L602-L615)) - Function - - `scripts.engine_adapter._count_health_report` ([L618-L626](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L618-L626)) - Function - - `scripts.engine_adapter.run_health` ([L629-L655](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/engine_adapter.py#L629-L655)) - Function - - - - -### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) - -```mermaid -graph LR - Documentation_Workflow_Orchestrator["Documentation Workflow Orchestrator"] - Architectural_Diff_Engine["Architectural Diff Engine"] - Markdown_Diagram_Renderer["Markdown & Diagram Renderer"] - Navigation_Linkage_Provider["Navigation & Linkage Provider"] - Documentation_Workflow_Orchestrator -- "Orchestrates state-aware component filtering" --> Architectural_Diff_Engine - Documentation_Workflow_Orchestrator -- "Triggers documentation synthesis" --> Markdown_Diagram_Renderer - Architectural_Diff_Engine -- "Persists filtered architectural state" --> Documentation_Workflow_Orchestrator - Markdown_Diagram_Renderer -- "Queries structural deltas for visual highlighting" --> Architectural_Diff_Engine - Markdown_Diagram_Renderer -- "Resolves interactive navigation paths" --> Navigation_Linkage_Provider - Navigation_Linkage_Provider -- "Provides CLI-driven content updates" --> Markdown_Diagram_Renderer -``` - -[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) - -## Details - -Maps the analyzed code structure back to the physical file system to generate developer-centric documentation. It creates markdown files for components and "Call-to-Action" (CTA) links that facilitate navigation between the code and the architectural view. - -### Documentation Workflow Orchestrator -Manages the end-to-end lifecycle of documentation generation, coordinating analysis artifacts, change detection, and the rendering process. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_component_files.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py) - - `scripts.build_component_files._subtree_files` ([L65-L74](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L65-L74)) - Function - - `scripts.build_component_files._changed_files_for` ([L88-L101](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L88-L101)) - Function - - -### Architectural Diff Engine -Analyzes the delta between architectural states to identify modified components and structural shifts for incremental updates. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_component_files.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py) - - `scripts.build_component_files._walk` ([L56-L62](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L56-L62)) - Function - - `scripts.build_component_files._subtree_methods` ([L77-L85](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L77-L85)) - Function -- [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) - - `scripts.build_cta._join_or` ([L84-L90](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L84-L90)) - Function - - -### Markdown & Diagram Renderer -Translates component tree and diff data into structured Markdown and Mermaid.js diagrams. - +- `scripts.build_cta.build_cta`:93-152 +- `scripts.build_cta.webview_url`:63-81 +- `scripts.build_cta.detect_editors`:37-49 -**Related Classes/Methods**: _None_ **Source Files:** - [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) - `scripts.build_cta.detect_editors` ([L37-L49](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L37-L49)) - Function + - `scripts.build_cta.webview_url` ([L63-L81](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L63-L81)) - Function + - `scripts.build_cta._join_or` ([L84-L90](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L84-L90)) - Function - `scripts.build_cta.build_cta` ([L93-L152](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L93-L152)) - Function - `scripts.build_cta.build_cta.link` ([L126-L127](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L126-L127)) - Function - - -### Navigation & Linkage Provider -Generates interactive CTA links and sanitizes identifiers for documentation navigation. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_cta.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py) - - `scripts.build_cta.webview_url` ([L63-L81](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L63-L81)) - Function - `scripts.build_cta.main` ([L155-L189](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_cta.py#L155-L189)) - Function -### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) - -```mermaid -graph LR - Contextual_Metadata_Extractor["Contextual Metadata Extractor"] - Feedback_Assembler["Feedback Assembler"] - Remote_Dispatcher["Remote Dispatcher"] - Feedback_Assembler -- "queries architectural context" --> Contextual_Metadata_Extractor - Feedback_Assembler -- "utilizes identity and sanitization utilities" --> Remote_Dispatcher - Remote_Dispatcher -- "verifies transmission policy" --> Contextual_Metadata_Extractor - Remote_Dispatcher -- "orchestrates payload construction" --> Feedback_Assembler -``` - -[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) - -## Details - -A specialized component that handles the collection and transmission of execution metrics and user feedback. It ensures data is anonymized and transmitted securely to the remote backend for service improvement. - -### Contextual Metadata Extractor -Responsible for mining the results of the architectural analysis to provide context for the telemetry by identifying impacted components and calculating metrics. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/submit_feedback.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py) - - `scripts.submit_feedback.telemetry_disabled` ([L27-L31](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L27-L31)) - Function - - `scripts.submit_feedback.resolve_key` ([L34-L35](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L34-L35)) - Function - - `scripts.submit_feedback.resolve_host` ([L38-L40](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L38-L40)) - Function - - `scripts.submit_feedback.resolve_command` ([L43-L44](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L43-L44)) - Function - - `scripts.submit_feedback.resolve_max_chars` ([L47-L52](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L47-L52)) - Function - - `scripts.submit_feedback.post` ([L135-L144](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L135-L144)) - Function - - -### Feedback Assembler -Acts as the data transformation layer that aggregates environment variables, user feedback, and architectural context into a standardized JSON schema. - - -**Related Classes/Methods**: - -- `scripts.submit_feedback.build_payload`:119-132 - - - -**Source Files:** - -- [`scripts/submit_feedback.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py) - - `scripts.submit_feedback._first` ([L79-L84](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L79-L84)) - Function - - `scripts.submit_feedback.build_properties` ([L94-L116](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L94-L116)) - Function - - `scripts.submit_feedback.build_payload` ([L119-L132](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L119-L132)) - Function - - -### Remote Dispatcher -Manages the egress of data to the external service, handling HTTP authentication, POST requests, and response management. - - -**Related Classes/Methods**: - -- `scripts.submit_feedback.main`:147-172 - - - -**Source Files:** - -- [`scripts/submit_feedback.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py) - - `scripts.submit_feedback.extract_feedback` ([L55-L69](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L55-L69)) - Function - - `scripts.submit_feedback.cap_feedback` ([L72-L76](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L72-L76)) - Function - - `scripts.submit_feedback.distinct_id` ([L87-L91](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L87-L91)) - Function - - `scripts.submit_feedback.main` ([L147-L172](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/submit_feedback.py#L147-L172)) - Function - - - - -### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq) - -```mermaid -graph LR - Diff_Analysis_Change_Detection["Diff Analysis & Change Detection"] - Mermaid_Syntax_Generation_Structural_Rendering["Mermaid Syntax Generation & Structural Rendering"] - UI_Enhancement_CTA_Integration["UI Enhancement & CTA Integration"] - Rendering_Orchestration["Rendering Orchestration"] - Diff_Analysis_Change_Detection -- "Provides filtered architectural delta for visualization" --> Mermaid_Syntax_Generation_Structural_Rendering - Diff_Analysis_Change_Detection -- "Supplies metadata for interactive elements" --> UI_Enhancement_CTA_Integration - Mermaid_Syntax_Generation_Structural_Rendering -- "calls" --> Diff_Analysis_Change_Detection - Mermaid_Syntax_Generation_Structural_Rendering -- "Delegates visual styling and metadata enrichment" --> UI_Enhancement_CTA_Integration - Mermaid_Syntax_Generation_Structural_Rendering -- "calls" --> Rendering_Orchestration - UI_Enhancement_CTA_Integration -- "Queries change status for visual highlighting" --> Diff_Analysis_Change_Detection - UI_Enhancement_CTA_Integration -- "calls" --> Mermaid_Syntax_Generation_Structural_Rendering - UI_Enhancement_CTA_Integration -- "calls" --> Rendering_Orchestration - Rendering_Orchestration -- "Triggers structural delta computation" --> Diff_Analysis_Change_Detection - Rendering_Orchestration -- "Orchestrates diagram generation lifecycle" --> Mermaid_Syntax_Generation_Structural_Rendering -``` - -[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/CodeBoarding)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/diagrams)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) - -## Details - -Responsible for the structural comparison between the current code state and the baseline. It identifies modified components, relations, and methods, then transforms these differences into Mermaid.js syntax for visual representation within GitHub. - -### Diff Analysis & Change Detection -Identifies the structural delta between the current code state and the baseline, filtering for architecturally significant modifications. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/build_component_files.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py) - - `scripts.build_component_files._block` ([L104-L121](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L104-L121)) - Function - - `scripts.build_component_files.render_component_files` ([L124-L175](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L124-L175)) - Function - - `scripts.build_component_files.main` ([L178-L216](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/build_component_files.py#L178-L216)) - Function -- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid._comp_id` ([L111-L112](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L111-L112)) - Function - - `scripts.diff_to_mermaid._Scope` ([L316-L360](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L316-L360)) - Class - - `scripts.diff_to_mermaid._Scope.__init__` ([L327-L349](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L327-L349)) - Method - - `scripts.diff_to_mermaid._Scope.resolve` ([L351-L360](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L351-L360)) - Method - - -### Mermaid Syntax Generation & Structural Rendering -Maps architectural entities and their relationships to Mermaid.js syntax, managing hierarchical scoping and visual styling. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid._comp_name` ([L115-L116](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L115-L116)) - Function - - `scripts.diff_to_mermaid._file_methods` ([L119-L120](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L119-L120)) - Function - - `scripts.diff_to_mermaid._diff_relations` ([L153-L199](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L153-L199)) - Function - - `scripts.diff_to_mermaid._diff_components` ([L213-L258](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L213-L258)) - Function - - `scripts.diff_to_mermaid._esc` ([L298-L304](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L298-L304)) - Function - - `scripts.diff_to_mermaid._display_status` ([L312-L313](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L312-L313)) - Function - - `scripts.diff_to_mermaid._filter_changed` ([L363-L405](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L363-L405)) - Function - - `scripts.diff_to_mermaid._filter_changed.touches` ([L396-L398](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L396-L398)) - Function - - `scripts.diff_to_mermaid._count_changed_components` ([L430-L437](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L430-L437)) - Function - - `scripts.diff_to_mermaid._has_changed_relations` ([L440-L444](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L440-L444)) - Function - - -### UI Enhancement & CTA Integration -Enriches rendered diagrams with interactive elements, generating deep links for IDEs and webview URLs. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid.load_analysis` ([L87-L105](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L87-L105)) - Function - - `scripts.diff_to_mermaid._rel_key` ([L147-L150](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L147-L150)) - Function - - `scripts.diff_to_mermaid.build_diff` ([L261-L268](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L261-L268)) - Function - - `scripts.diff_to_mermaid._sanitize` ([L274-L276](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L274-L276)) - Function - - `scripts.diff_to_mermaid._truncate` ([L307-L309](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L307-L309)) - Function - - `scripts.diff_to_mermaid.render_mermaid` ([L447-L572](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L447-L572)) - Function - - `scripts.diff_to_mermaid.render_mermaid.build` ([L475-L548](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L475-L548)) - Function - - `scripts.diff_to_mermaid.render_mermaid.build.emit_edges` ([L486-L498](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L486-L498)) - Function - - `scripts.diff_to_mermaid.render_mermaid.build.emit_level` ([L500-L517](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L500-L517)) - Function - - `scripts.diff_to_mermaid.main` ([L578-L619](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L578-L619)) - Function - - -### Rendering Orchestration -Acts as the controller for the subsystem, managing the execution lifecycle and sequencing the flow from diff detection to final output. - - -**Related Classes/Methods**: _None_ - - -**Source Files:** - -- [`scripts/diff_to_mermaid.py`](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py) - - `scripts.diff_to_mermaid._methods_by_file` ([L123-L130](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L123-L130)) - Function - - `scripts.diff_to_mermaid._has_structural_changes` ([L133-L136](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L133-L136)) - Function - - `scripts.diff_to_mermaid._has_method_changes` ([L139-L144](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L139-L144)) - Function - - `scripts.diff_to_mermaid._has_changes` ([L202-L210](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L202-L210)) - Function - - `scripts.diff_to_mermaid._init_directive` ([L408-L427](https://github.com/CodeBoarding/CodeBoarding-action/blob/main/.codeboardingscripts/diff_to_mermaid.py#L408-L427)) - Function - - - - ### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq)