{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-77ba25db8949464a", "name": "Possibly dead Python function: score", "shortDescription": {"text": "Possibly dead Python function: score"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-727b41a4f098e165", "name": "Possibly dead Python function: stage_card_template", "shortDescription": {"text": "Possibly dead Python function: stage_card_template"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6385eab1be16bd20", "name": "Possibly dead Python function: product_card_template", "shortDescription": {"text": "Possibly dead Python function: product_card_template"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d476a026ba55ef55", "name": "Possibly dead Python function: stat_card_template", "shortDescription": {"text": "Possibly dead Python function: stat_card_template"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5eb38c0a7194dd8", "name": "Possibly dead Python function: list_item_card_template", "shortDescription": {"text": "Possibly dead Python function: list_item_card_template"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8867165c389f34d9", "name": "Possibly dead Python function: hero_banner_template", "shortDescription": {"text": "Possibly dead Python function: hero_banner_template"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0250f0def6ee1a2c", "name": "Possibly dead Python function: phases", "shortDescription": {"text": "Possibly dead Python function: phases"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69223e404754d099", "name": "Possibly dead Python function: button_variant_props", "shortDescription": {"text": "Possibly dead Python function: button_variant_props"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b2e732d36f2c2bd", "name": "Possibly dead Python function: detect_input_shape", "shortDescription": {"text": "Possibly dead Python function: detect_input_shape"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8bd6746dfb2e416", "name": "Possibly dead Python function: detect_dropdown_shape", "shortDescription": {"text": "Possibly dead Python function: detect_dropdown_shape"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7aefdc8b90ce8a9", "name": "Possibly dead Python function: detect_toggle_shape", "shortDescription": {"text": "Possibly dead Python function: detect_toggle_shape"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ce33ad1e91c0b49", "name": "Possibly dead Python function: detect_checkbox_shape", "shortDescription": {"text": "Possibly dead Python function: detect_checkbox_shape"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f35ecc5396e6eb38", "name": "Possibly dead Python function: detect_radio_shape", "shortDescription": {"text": "Possibly dead Python function: detect_radio_shape"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92711b51feb55f4b", "name": "Possibly dead Python function: detect_slider_shape", "shortDescription": {"text": "Possibly dead Python function: detect_slider_shape"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52d6985aeea92de4", "name": "Possibly dead Python function: detect_progress_shape", "shortDescription": {"text": "Possibly dead Python function: detect_progress_shape"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64b7c1607b3c5707", "name": "Stray `console.log` in TS/JS \u2014 scripts/patch-hono-mcp.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/patch-hono-mcp.js:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84a9d9cce3fe92d7", "name": "Stray `console.log` in TS/JS \u2014 scripts/patch-sync-agent.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/patch-sync-agent.js:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f68652af780cb4c4", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-icons.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-icons.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f34d9d8192572e0", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape_uibowl.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape_uibowl.js:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-496de17294c65aa0", "name": "Stray `console.log` in TS/JS \u2014 src/shared/ds-data.ts:314", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/shared/ds-data.ts:314"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d624346a30b9527c", "name": "Stray `console.log` in TS/JS \u2014 src/figma-plugin/code.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/figma-plugin/code.js:104"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05088e46c7103fd4", "name": "Stray `console.log` in TS/JS \u2014 src/main/figma-ws-server.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/main/figma-ws-server.ts:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0cc122995bccb13e", "name": "Stray `console.log` in TS/JS \u2014 src/main/mcp-http-server.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/main/mcp-http-server.ts:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-614e9c317b93ec17", "name": "Stray `console.log` in TS/JS \u2014 src/main/figma-mcp-embedded.ts:606", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/main/figma-mcp-embedded.ts:606"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-def8cfe8e7d34515", "name": "Stray `console.log` in TS/JS \u2014 src/main/untitled-icons.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/main/untitled-icons.ts:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe91ad970182ff3a", "name": "Stray `console.log` in TS/JS \u2014 src/bridge/index.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/bridge/index.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29146c6d51708989", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/figma-design-agent-overview.html:535", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/figma-design-agent-overview.html:535"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2ce2c8947d54b0c2", "name": "Insecure pattern 'node_child_process' in src/shared/ds-data.ts:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/shared/ds-data.ts:10"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4013394f03aabefd", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7464a31ac8f300ac", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22afb54f6505ae10", "name": "Very large file: scripts/figma_mcp_client.py (14178 lines)", "shortDescription": {"text": "Very large file: scripts/figma_mcp_client.py (14178 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4dce45cc4e1c6200", "name": "Very large file: scripts/unified_blueprint.py (1491 lines)", "shortDescription": {"text": "Very large file: scripts/unified_blueprint.py (1491 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-078fab04ea143d33", "name": "Very large file: scripts/design_rules/ds_catalog.py (1198 lines)", "shortDescription": {"text": "Very large file: scripts/design_rules/ds_catalog.py (1198 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d59f4a884010b05", "name": "Very large file: src/figma-plugin/code.js (6612 lines)", "shortDescription": {"text": "Very large file: src/figma-plugin/code.js (6612 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c23cbdad954ea4e4", "name": "Very large file: src/main/figma-mcp-embedded.ts (2275 lines)", "shortDescription": {"text": "Very large file: src/main/figma-mcp-embedded.ts (2275 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01f96f71d9907a8c", "name": "README lacks setup or run instructions", "shortDescription": {"text": "README lacks setup or run instructions"}, "fullDescription": {"text": "A README exists, but it does not contain common install/setup/run markers. This matches a frequent generated-code pattern: UI is present, operational handoff is thin."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 312 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 81 placeholder/mock markers across 11 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, operator-readme. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, operator-readme. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-009994069da864bb", "name": "Legacy-named symbol `blueprint_home_schedule_v1` in scripts/transform_v32_to_home_schedule.py:293", "shortDescription": {"text": "Legacy-named symbol `blueprint_home_schedule_v1` in scripts/transform_v32_to_home_schedule.py:293"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5db4b25bd5cf7b1a", "name": "Commented-code block (6 lines) in scripts/build_v14_sections.py:580", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/build_v14_sections.py:580"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b7abe567a77d60e8", "name": "Legacy-named symbol `_collect_tree_legacy` in scripts/figma_mcp_client.py:5710", "shortDescription": {"text": "Legacy-named symbol `_collect_tree_legacy` in scripts/figma_mcp_client.py:5710"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67ac833384a6a3b5", "name": "Commented-code block (5 lines) in scripts/figma_mcp_client.py:553", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/figma_mcp_client.py:553"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f57dab03ef75e10", "name": "Commented-code block (14 lines) in scripts/unified_blueprint.py:47", "shortDescription": {"text": "Commented-code block (14 lines) in scripts/unified_blueprint.py:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ec382b962785e2f", "name": "Legacy-named symbol `imin_home_dashboard_v2` in scripts/tests/test_reference_archetype.py:33", "shortDescription": {"text": "Legacy-named symbol `imin_home_dashboard_v2` in scripts/tests/test_reference_archetype.py:33"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b14a857367fed79a", "name": "Legacy-named symbol `imin_brandnew_v1` in scripts/tests/test_creative_divergence_gates.py:128", "shortDescription": {"text": "Legacy-named symbol `imin_brandnew_v1` in scripts/tests/test_creative_divergence_gates.py:128"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99c92992b2edf8bb", "name": "Commented-code block (5 lines) in scripts/hooks/planning_read_hook.py:351", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/hooks/planning_read_hook.py:351"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2649fc59d671b5ad", "name": "Legacy-named symbol `feedback_underline_tab_v2` in scripts/design_rules/R29_segmented_control.py:3", "shortDescription": {"text": "Legacy-named symbol `feedback_underline_tab_v2` in scripts/design_rules/R29_segmented_control.py:3"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6d113e6e4f34c1f", "name": "Commented-code block (8 lines) in scripts/design_rules/R29_segmented_control.py:137", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/design_rules/R29_segmented_control.py:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-841b366c30eecbc9", "name": "Commented-code block (6 lines) in scripts/design_rules/R51_hero_scale.py:27", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/design_rules/R51_hero_scale.py:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91503e6460a12463", "name": "Commented-code block (5 lines) in scripts/design_rules/R36_carousel_peek.py:121", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/design_rules/R36_carousel_peek.py:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a8bc0434b5cbaad", "name": "Commented-code block (6 lines) in scripts/design_rules/ds_catalog.py:136", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/design_rules/ds_catalog.py:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7ae411e3031b2a4", "name": "Commented-code block (7 lines) in scripts/design_rules/R59_section_title_left_align.py:30", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/design_rules/R59_section_title_left_align.py:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3e505b35ea60f68", "name": "Legacy-named symbol `feedback_underline_tab_v2` in scripts/design_rules/R54_underline_width.py:7", "shortDescription": {"text": "Legacy-named symbol `feedback_underline_tab_v2` in scripts/design_rules/R54_underline_width.py:7"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-965241669453eb7f", "name": "Commented-code block (5 lines) in scripts/design_rules/R27_repetitive_groups.py:85", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/design_rules/R27_repetitive_groups.py:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd3ee2bd8e58ed54", "name": "Commented-code block (5 lines) in scripts/design_rules/R23_ds_first.py:82", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/design_rules/R23_ds_first.py:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8146e713a53952c9", "name": "Commented-code block (8 lines) in src/figma-plugin/code.js:174", "shortDescription": {"text": "Commented-code block (8 lines) in src/figma-plugin/code.js:174"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-128dc5bb71dd4a5b", "name": "Commented-code block (5 lines) in src/main/figma-mcp-embedded.ts:1027", "shortDescription": {"text": "Commented-code block (5 lines) in src/main/figma-mcp-embedded.ts:1027"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/transform_v32_to_home_schedule.py:find, scripts/transform_v32_to_imin_home_1.py:find\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1b175fd591e8077", "name": "Near-duplicate function bodies in 84 places", "shortDescription": {"text": "Near-duplicate function bodies in 84 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/figma_mcp_client.py:walk, scripts/figma_mcp_client.py:walk, scripts/figma_mcp_client.py:walk, scripts/figma_mcp_client.py:walk\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/figma_mcp_client.py:find_recommend, scripts/figma_mcp_client.py:find_recommend, scripts/figma_mcp_client.py:find, scripts/figma_mcp_client.py:find\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/design_rules/R61_no_emoji_in_text.py:walk, scripts/design_rules/R61_no_emoji_in_text.py:walk, scripts/design_rules/R61_no_emoji_in_text.py:walk\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21764"}, "properties": {"repository": "twavetech-frontend/figma-design-agent", "repoUrl": "https://github.com/twavetech-frontend/figma-design-agent", "branch": "main"}, "results": [{"ruleId": "scanner-77ba25db8949464a", "level": "note", "message": {"text": "Possibly dead Python function: score"}, "properties": {"repobilityId": "379227b163d3203e", "scanner": "scanner-primary", "fingerprint": "77ba25db8949464a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/gen_frontend_spec.py:68"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-727b41a4f098e165", "level": "note", "message": {"text": "Possibly dead Python function: stage_card_template"}, "properties": {"repobilityId": "a37c72a385cb13da", "scanner": "scanner-primary", "fingerprint": "727b41a4f098e165", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/archetype_catalog.py:60"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6385eab1be16bd20", "level": "note", "message": {"text": "Possibly dead Python function: product_card_template"}, "properties": {"repobilityId": "bb9b8909a2a2877e", "scanner": "scanner-primary", "fingerprint": "6385eab1be16bd20", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/archetype_catalog.py:151"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d476a026ba55ef55", "level": "note", "message": {"text": "Possibly dead Python function: stat_card_template"}, "properties": {"repobilityId": "df2dc0995f2d65e5", "scanner": "scanner-primary", "fingerprint": "d476a026ba55ef55", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/archetype_catalog.py:197"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d5eb38c0a7194dd8", "level": "note", "message": {"text": "Possibly dead Python function: list_item_card_template"}, "properties": {"repobilityId": "b3acda424a135f4a", "scanner": "scanner-primary", "fingerprint": "d5eb38c0a7194dd8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/archetype_catalog.py:241"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8867165c389f34d9", "level": "note", "message": {"text": "Possibly dead Python function: hero_banner_template"}, "properties": {"repobilityId": "b1e1e0013acc260f", "scanner": "scanner-primary", "fingerprint": "8867165c389f34d9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/archetype_catalog.py:291"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0250f0def6ee1a2c", "level": "note", "message": {"text": "Possibly dead Python function: phases"}, "properties": {"repobilityId": "edf51851305132a3", "scanner": "scanner-primary", "fingerprint": "0250f0def6ee1a2c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/base.py:71"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-69223e404754d099", "level": "note", "message": {"text": "Possibly dead Python function: button_variant_props"}, "properties": {"repobilityId": "01f7521f6d87793a", "scanner": "scanner-primary", "fingerprint": "69223e404754d099", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/ds_catalog.py:676"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0b2e732d36f2c2bd", "level": "note", "message": {"text": "Possibly dead Python function: detect_input_shape"}, "properties": {"repobilityId": "e9e091066fd1ad9f", "scanner": "scanner-primary", "fingerprint": "0b2e732d36f2c2bd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/ds_catalog.py:866"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b8bd6746dfb2e416", "level": "note", "message": {"text": "Possibly dead Python function: detect_dropdown_shape"}, "properties": {"repobilityId": "041994224f4d23be", "scanner": "scanner-primary", "fingerprint": "b8bd6746dfb2e416", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/ds_catalog.py:885"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d7aefdc8b90ce8a9", "level": "note", "message": {"text": "Possibly dead Python function: detect_toggle_shape"}, "properties": {"repobilityId": "1da33ce5b8ad7734", "scanner": "scanner-primary", "fingerprint": "d7aefdc8b90ce8a9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/ds_catalog.py:942"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ce33ad1e91c0b49", "level": "note", "message": {"text": "Possibly dead Python function: detect_checkbox_shape"}, "properties": {"repobilityId": "242d9676f43178a7", "scanner": "scanner-primary", "fingerprint": "3ce33ad1e91c0b49", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/ds_catalog.py:958"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f35ecc5396e6eb38", "level": "note", "message": {"text": "Possibly dead Python function: detect_radio_shape"}, "properties": {"repobilityId": "294fbb5d277c564d", "scanner": "scanner-primary", "fingerprint": "f35ecc5396e6eb38", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/ds_catalog.py:976"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92711b51feb55f4b", "level": "note", "message": {"text": "Possibly dead Python function: detect_slider_shape"}, "properties": {"repobilityId": "8523f4337fd567db", "scanner": "scanner-primary", "fingerprint": "92711b51feb55f4b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/ds_catalog.py:994"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-52d6985aeea92de4", "level": "note", "message": {"text": "Possibly dead Python function: detect_progress_shape"}, "properties": {"repobilityId": "5d2389f91e867705", "scanner": "scanner-primary", "fingerprint": "52d6985aeea92de4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/design_rules/ds_catalog.py:1016"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-64b7c1607b3c5707", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/patch-hono-mcp.js:25"}, "properties": {"repobilityId": "3a176246f6684400", "scanner": "scanner-primary", "fingerprint": "64b7c1607b3c5707", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84a9d9cce3fe92d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/patch-sync-agent.js:21"}, "properties": {"repobilityId": "07fc70c27f9e9d7f", "scanner": "scanner-primary", "fingerprint": "84a9d9cce3fe92d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f68652af780cb4c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-icons.ts:11"}, "properties": {"repobilityId": "1e640996e9626919", "scanner": "scanner-primary", "fingerprint": "f68652af780cb4c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f34d9d8192572e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape_uibowl.js:48"}, "properties": {"repobilityId": "48877a68bd8489a3", "scanner": "scanner-primary", "fingerprint": "3f34d9d8192572e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-496de17294c65aa0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/shared/ds-data.ts:314"}, "properties": {"repobilityId": "c51306f6461e79e2", "scanner": "scanner-primary", "fingerprint": "496de17294c65aa0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d624346a30b9527c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/figma-plugin/code.js:104"}, "properties": {"repobilityId": "5926ce796af4221a", "scanner": "scanner-primary", "fingerprint": "d624346a30b9527c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05088e46c7103fd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/main/figma-ws-server.ts:60"}, "properties": {"repobilityId": "1ce79d097c59b984", "scanner": "scanner-primary", "fingerprint": "05088e46c7103fd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0cc122995bccb13e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/main/mcp-http-server.ts:92"}, "properties": {"repobilityId": "54f515261731e455", "scanner": "scanner-primary", "fingerprint": "0cc122995bccb13e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-614e9c317b93ec17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/main/figma-mcp-embedded.ts:606"}, "properties": {"repobilityId": "71a899c1abc4c82e", "scanner": "scanner-primary", "fingerprint": "614e9c317b93ec17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-def8cfe8e7d34515", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/main/untitled-icons.ts:80"}, "properties": {"repobilityId": "edacbbcc4812fb69", "scanner": "scanner-primary", "fingerprint": "def8cfe8e7d34515", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe91ad970182ff3a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/bridge/index.ts:50"}, "properties": {"repobilityId": "73563fce9fcb5080", "scanner": "scanner-primary", "fingerprint": "fe91ad970182ff3a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29146c6d51708989", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/figma-design-agent-overview.html:535"}, "properties": {"repobilityId": "8152ce199da386ec", "scanner": "scanner-primary", "fingerprint": "29146c6d51708989", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/figma-design-agent-overview.html"}, "region": {"startLine": 535}}}]}, {"ruleId": "scanner-2ce2c8947d54b0c2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/shared/ds-data.ts:10"}, "properties": {"repobilityId": "7e3c41d8f5c71461", "scanner": "scanner-primary", "fingerprint": "2ce2c8947d54b0c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/ds-data.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-4013394f03aabefd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3157f0eba136defb", "scanner": "scanner-primary", "fingerprint": "4013394f03aabefd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sync-tokens.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-7464a31ac8f300ac", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "208a9dd7300e2c13", "scanner": "scanner-primary", "fingerprint": "7464a31ac8f300ac", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sync-tokens.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22afb54f6505ae10", "level": "note", "message": {"text": "Very large file: scripts/figma_mcp_client.py (14178 lines)"}, "properties": {"repobilityId": "a3eaa08bfc5d8204", "scanner": "scanner-primary", "fingerprint": "22afb54f6505ae10", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4dce45cc4e1c6200", "level": "note", "message": {"text": "Very large file: scripts/unified_blueprint.py (1491 lines)"}, "properties": {"repobilityId": "051acdfddbbe7b6d", "scanner": "scanner-primary", "fingerprint": "4dce45cc4e1c6200", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-078fab04ea143d33", "level": "note", "message": {"text": "Very large file: scripts/design_rules/ds_catalog.py (1198 lines)"}, "properties": {"repobilityId": "27533cc951f93f1b", "scanner": "scanner-primary", "fingerprint": "078fab04ea143d33", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6d59f4a884010b05", "level": "note", "message": {"text": "Very large file: src/figma-plugin/code.js (6612 lines)"}, "properties": {"repobilityId": "1e4f10979fd3da28", "scanner": "scanner-primary", "fingerprint": "6d59f4a884010b05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c23cbdad954ea4e4", "level": "note", "message": {"text": "Very large file: src/main/figma-mcp-embedded.ts (2275 lines)"}, "properties": {"repobilityId": "a67b2e108a56ad87", "scanner": "scanner-primary", "fingerprint": "c23cbdad954ea4e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "49f0fc69211f1209", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-01f96f71d9907a8c", "level": "note", "message": {"text": "README lacks setup or run instructions"}, "properties": {"repobilityId": "29e6aa12f04f2bd8", "scanner": "scanner-primary", "fingerprint": "01f96f71d9907a8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "cee65336285de985", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "59b26aa7e22cfe46", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "c4e84c64b2f92f6a", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "dccaa303c57a9903", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "2035b44ca6f5b183", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "5b75442a65fad7da", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "3204e5e6defb0097", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-009994069da864bb", "level": "note", "message": {"text": "Legacy-named symbol `blueprint_home_schedule_v1` in scripts/transform_v32_to_home_schedule.py:293"}, "properties": {"repobilityId": "d3d48e8924507008", "scanner": "scanner-primary", "fingerprint": "009994069da864bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5db4b25bd5cf7b1a", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/build_v14_sections.py:580"}, "properties": {"repobilityId": "b7ed5c5a36327c58", "scanner": "scanner-primary", "fingerprint": "5db4b25bd5cf7b1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7abe567a77d60e8", "level": "note", "message": {"text": "Legacy-named symbol `_collect_tree_legacy` in scripts/figma_mcp_client.py:5710"}, "properties": {"repobilityId": "8d662883c36c78b2", "scanner": "scanner-primary", "fingerprint": "b7abe567a77d60e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-67ac833384a6a3b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/figma_mcp_client.py:553"}, "properties": {"repobilityId": "6ed11cdc876d6e72", "scanner": "scanner-primary", "fingerprint": "67ac833384a6a3b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f57dab03ef75e10", "level": "none", "message": {"text": "Commented-code block (14 lines) in scripts/unified_blueprint.py:47"}, "properties": {"repobilityId": "9ca2bd1b1b7314b0", "scanner": "scanner-primary", "fingerprint": "0f57dab03ef75e10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ec382b962785e2f", "level": "note", "message": {"text": "Legacy-named symbol `imin_home_dashboard_v2` in scripts/tests/test_reference_archetype.py:33"}, "properties": {"repobilityId": "eeb8056a99c9d107", "scanner": "scanner-primary", "fingerprint": "7ec382b962785e2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b14a857367fed79a", "level": "note", "message": {"text": "Legacy-named symbol `imin_brandnew_v1` in scripts/tests/test_creative_divergence_gates.py:128"}, "properties": {"repobilityId": "a590fb11300abf0f", "scanner": "scanner-primary", "fingerprint": "b14a857367fed79a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-99c92992b2edf8bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/hooks/planning_read_hook.py:351"}, "properties": {"repobilityId": "c364b6cefd1d57f6", "scanner": "scanner-primary", "fingerprint": "99c92992b2edf8bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2649fc59d671b5ad", "level": "note", "message": {"text": "Legacy-named symbol `feedback_underline_tab_v2` in scripts/design_rules/R29_segmented_control.py:3"}, "properties": {"repobilityId": "46b346822a1ae6cc", "scanner": "scanner-primary", "fingerprint": "2649fc59d671b5ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b6d113e6e4f34c1f", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/design_rules/R29_segmented_control.py:137"}, "properties": {"repobilityId": "ffbe48d89276eff9", "scanner": "scanner-primary", "fingerprint": "b6d113e6e4f34c1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-841b366c30eecbc9", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/design_rules/R51_hero_scale.py:27"}, "properties": {"repobilityId": "1ab43f98e58b800d", "scanner": "scanner-primary", "fingerprint": "841b366c30eecbc9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91503e6460a12463", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/design_rules/R36_carousel_peek.py:121"}, "properties": {"repobilityId": "5f2e72512d773781", "scanner": "scanner-primary", "fingerprint": "91503e6460a12463", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a8bc0434b5cbaad", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/design_rules/ds_catalog.py:136"}, "properties": {"repobilityId": "0ed17faa6cdac6a5", "scanner": "scanner-primary", "fingerprint": "2a8bc0434b5cbaad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7ae411e3031b2a4", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/design_rules/R59_section_title_left_align.py:30"}, "properties": {"repobilityId": "f88b5c3b07431086", "scanner": "scanner-primary", "fingerprint": "c7ae411e3031b2a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3e505b35ea60f68", "level": "note", "message": {"text": "Legacy-named symbol `feedback_underline_tab_v2` in scripts/design_rules/R54_underline_width.py:7"}, "properties": {"repobilityId": "f6557dbfdb98d724", "scanner": "scanner-primary", "fingerprint": "b3e505b35ea60f68", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-965241669453eb7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/design_rules/R27_repetitive_groups.py:85"}, "properties": {"repobilityId": "860f998722303916", "scanner": "scanner-primary", "fingerprint": "965241669453eb7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd3ee2bd8e58ed54", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/design_rules/R23_ds_first.py:82"}, "properties": {"repobilityId": "d3e4ab762f07acd0", "scanner": "scanner-primary", "fingerprint": "dd3ee2bd8e58ed54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8146e713a53952c9", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/figma-plugin/code.js:174"}, "properties": {"repobilityId": "a5bfd137ba105581", "scanner": "scanner-primary", "fingerprint": "8146e713a53952c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-128dc5bb71dd4a5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/main/figma-mcp-embedded.ts:1027"}, "properties": {"repobilityId": "3836be9145aaa026", "scanner": "scanner-primary", "fingerprint": "128dc5bb71dd4a5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "dcb4e375e1fe4255", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-f1b175fd591e8077", "level": "note", "message": {"text": "Near-duplicate function bodies in 84 places"}, "properties": {"repobilityId": "3e38f2bc0a659e40", "scanner": "scanner-primary", "fingerprint": "f1b175fd591e8077", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "e27ae283ade8c2f6", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "5562fcdce67483bc", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "75edf5638b12626c", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "7fdffd8150b6a545", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0484d57aed801268", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}