MCP server integration for DaVinci Resolve Studio
This report presents the forensic synthetic code analysis of samuelgursky/davinci-resolve-mcp, a Python project with 2,045 GitHub stars. SynthScan v2.0 examined 171,882 lines of code across 497 source files, recording 4624 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 39.3 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 4624 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.py | 84 | def is_supported_python_version(version): | CODE |
| LOW | install.py | 89 | def is_abi_risk_python_version(version): | CODE |
| LOW | install.py | 290 | def windows_claude_desktop_config(): | CODE |
| LOW | install.py | 819 | def verify_resolve_connection(python_path, api_path, lib_path): | CODE |
| LOW | install.py | 1163 | def rollback_to_previous_build(project_dir, *, initiator="cli"): | CODE |
| LOW | install.py | 1268 | def _print_update_apply_result(result, *, restart_on_change=True): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 186 | def test_op_is_recorded_in_ledger(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 193 | def test_perform_audio_classification(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 198 | def test_analyze_for_intellisearch_passes_flags(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 203 | def test_analyze_for_slate_valid_color(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 208 | def test_analyze_for_slate_invalid_color_rejected(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 213 | def test_analyze_for_slate_default_color(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 218 | def test_transcribe_audio_speaker_detection_passthrough(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 222 | def test_transcribe_audio_no_arg_when_unset(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 226 | def test_remove_motion_blur_requires_confirm_then_runs(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 262 | def test_remove_motion_blur_records_clip_id_in_ledger(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 271 | def test_perform_audio_classification(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 276 | def test_analyze_for_slate_invalid_color_rejected(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 281 | def test_remove_motion_blur_confirm_flow(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 289 | def test_speaker_detection_passthrough(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 293 | def test_legacy_clip_version_guarded(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 416 | def test_ai_result_treats_string_as_failure(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 423 | def test_ai_result_payload_surfaces_the_reason(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 429 | def test_intellisearch_string_return_is_not_reported_as_success(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 436 | def test_generate_speech_string_return_does_not_raise(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 488 | def test_clip_string_return_does_not_raise_attributeerror(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 494 | def test_folder_string_return_is_not_reported_as_success(self): | CODE |
| LOW⚡ | tests/test_resolve21_actions.py | 503 | def test_a_working_extra_is_unaffected(self): | CODE |
| LOW | tests/test_resolve21_actions.py | 238 | def test_unknown_action_lists_new_actions(self): | CODE |
| LOW | tests/test_resolve21_actions.py | 308 | def test_disable_background_tasks(self): | CODE |
| LOW | tests/test_resolve21_actions.py | 315 | def test_disable_background_tasks_legacy_guarded(self): | CODE |
| LOW | tests/test_resolve21_actions.py | 342 | def test_confirm_flow_and_settings_passthrough(self): | CODE |
| LOW | tests/test_resolve21_actions.py | 355 | def test_legacy_project_guarded(self): | CODE |
| LOW | tests/test_resolve21_actions.py | 363 | def test_capability_block_reports_new_flags(self): | CODE |
| LOW | tests/test_resolve21_actions.py | 374 | def test_capability_block_false_for_legacy(self): | CODE |
| LOW | tests/test_bulk_match_to_hero.py | 124 | def test_copy_grade_dry_run_returns_proposals(self): | CODE |
| LOW | tests/test_bulk_match_to_hero.py | 137 | def test_missing_target_appears_in_blocked(self): | CODE |
| LOW | tests/test_bulk_match_to_hero.py | 151 | def test_dry_run_all_blocked_is_failure(self): | CODE |
| LOW | tests/test_bulk_match_to_hero.py | 162 | def test_cdl_delta_method_returns_unsupported_error(self): | CODE |
| LOW | tests/test_bulk_match_to_hero.py | 185 | def test_execute_without_token_returns_confirm_required(self): | CODE |
| LOW | tests/test_bulk_match_to_hero.py | 195 | def test_execute_with_token_mutates(self): | CODE |
| LOW | tests/test_destructive_decorator_coverage.py | 32 | def test_every_registered_tool_is_decorated(self) -> None: | CODE |
| LOW | tests/test_destructive_decorator_coverage.py | 53 | def test_decorator_pairs_with_mcp_tool(self) -> None: | CODE |
| LOW | tests/test_destructive_decorator_coverage.py | 70 | def test_destructive_op_only_on_registered_tools(self) -> None: | CODE |
| LOW | tests/test_validation_guards.py | 50 | def test_missing_path_rejected(self): | CODE |
| LOW | tests/test_validation_guards.py | 54 | def test_nonexistent_dir_rejected(self): | CODE |
| LOW | tests/test_custom_timeline.py | 51 | def test_basic_timeline_creation(): | CODE |
| LOW | tests/test_custom_timeline.py | 66 | def test_custom_timeline_creation(): | CODE |
| LOW | tests/test_import_from_drp.py | 94 | def test_import_prproj_is_refused_and_points_to_bridge(self): | CODE |
| LOW | tests/test_import_from_drp.py | 141 | def test_relink_calls_relinkclips_per_existing_root(self): | CODE |
| LOW | tests/test_import_from_drp.py | 153 | def test_relink_noops_without_existing_roots(self): | CODE |
| LOW | tests/test_import_from_drp.py | 160 | def test_aaf_skips_sanitize_and_notes_relink_na(self): | CODE |
| LOW | tests/test_import_from_drp.py | 182 | def test_enumerate_template_drp(self): | CODE |
| LOW | tests/test_import_from_drp.py | 189 | def test_extract_produces_minimal_drt(self): | CODE |
| LOW | tests/test_import_from_drp.py | 211 | def test_name_not_found_reports_available(self): | CODE |
| LOW | tests/test_import_from_drp.py | 226 | def test_full_extract_and_import_glue(self): | CODE |
| LOW | tests/test_import_from_drp.py | 266 | def test_refuses_on_the_never_saved_untitled_project(self): | CODE |
| LOW | tests/test_import_from_drp.py | 282 | def test_refusal_is_hard__no_override_flag_reopens_it(self): | CODE |
| LOW | tests/test_import_from_drp.py | 294 | def test_a_named_project_imports_with_nothing_else_changed(self): | CODE |
| LOW | tests/test_import_from_drp.py | 321 | def test_sanitize_is_na_for_otio_and_the_file_is_imported_as_is(self): | CODE |
| 2651 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_static_undefined_names.py | 41 | self.assertEqual(undefined, [], "undefined names found:\n" + "\n".join(undefined)) | CODE |
| HIGH⚡ | tests/test_media_analysis.py | 432 | self.assertIn(".filter(context => context.active || context.resolve_current)", HTML) | CODE |
| HIGH⚡ | tests/test_media_analysis.py | 433 | self.assertNotIn(".filter(context => context.can_load_resolve !== false || context.active || context.resolve_cur | CODE |
| HIGH | .claude/hooks/source_media_guard.py | 140 | """Split on shell separators so `ffprobe x && rm y` is checked as two.""" | STRING |
| HIGH⚡ | src/analysis_dashboard.py | 5052 | boot: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5053 | projects: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5054 | allProjects: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5055 | activeContext: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5056 | resolveMedia: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5058 | mediaETag: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5059 | mediaPollTimer: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5061 | mediaLastRefresh: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5062 | indexStatus: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5065 | setupDefaults: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5066 | setupSchema: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5067 | projectDialogCleanup: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5078 | clipList: null, // last /api/clips response | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5079 | currentClipId: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5080 | currentClipData: null, // last /api/clips/<id> response | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5081 | currentShotIndex: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5082 | currentShotData: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5083 | currentTranscriptData: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5084 | currentTranscriptSegmentIndex: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5087 | editingSegmentDraftIndex: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5090 | panelStateTimer: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5091 | lastPanelStateAt: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5093 | searchTimer: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5094 | searchResults: null, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5098 | selectionAnchor: null, // clip_id used as range-selection anchor | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5099 | contextMenu: null, // currently-open context menu element | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5253 | if (!pages) return null; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5254 | if (requested && pages[requested]) return requested; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5256 | if (current && pages[current]) return current; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5257 | return DEFAULT_SUBPAGES[panelName] || Object.keys(pages)[0] || null; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5262 | const subpage = subpageFor(next, options.subpage || options.subpageTarget); | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5366 | if (subpage && SUBPAGE_LABELS[next]?.[subpage]) { | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5373 | history.replaceState(null, '', hash); | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5379 | if (r.view === 'shot' && r.currentClipId && r.currentShotIndex != null) { | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5379 | if (r.view === 'shot' && r.currentClipId && r.currentShotIndex != null) { | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5473 | const clips = Number(status.counts?.clips || 0); | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5476 | detail: `${clipLabel(clips)} indexed · ${formatBytes(status.size_bytes || 0)}`, | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5486 | const hiddenRecords = Math.max(0, Number(counts.total || 0) - Number(counts.source_clips || clips.length)); | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5495 | const projectName = state.activeContext?.project_name || media?.project?.name || state.boot?.project_name || 'Reso | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5503 | resolveStatus = media?.status || media?.error || 'Resolve connected'; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5505 | resolveStatus = media?.status || bootResolve.error || 'Connection pending'; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5515 | : (inventoryPending ? 'Reading Media Pool inventory…' : (media?.error || media?.status || 'Resolve inventory pen | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5587 | const hiddenRecords = Math.max(0, Number(counts.total || 0) - Number(counts.source_clips || clips.length)); | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5593 | const resolveOnline = !!media?.resolve_available || handshake; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5595 | const offline = (media || resolveInfo.error) && !resolveOnline; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5702 | const install = tool.install || null; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5702 | const install = tool.install || null; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5703 | const cmd = install && install.command ? install.command : ''; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5704 | const note = install && (install.requirement_note || install.notes) ? (install.requirement_note || install.notes | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5707 | const installBlock = (!ready && install) ? ` | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5859 | state.mcpStatus = payload || null; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5859 | state.mcpStatus = payload || null; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5861 | state.mcpStatus = { success: false, error: error?.message || String(error) }; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 5942 | const roots = state.projects?.related_project_roots || state.boot?.related_project_roots || []; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 6084 | if (filters.bin && String(clip.bin_path || '') !== filters.bin) return false; | CODE |
| HIGH⚡ | src/analysis_dashboard.py | 6085 | if (filters.mediaType && String(clip.media_type || '') !== filters.mediaType) return false; | CODE |
| 431 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | install.py | 37 | # ─── Version ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.py | 48 | # ─── Colors (disabled on Windows cmd without ANSI support) ──────────────────── | COMMENT |
| MEDIUM | install.py | 69 | # ─── Platform Detection ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.py | 187 | # ─── Resolve Path Detection ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.py | 277 | # ─── MCP Client Definitions ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.py | 441 | # ─── Server Entry Builder ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.py | 535 | # ─── Config File Operations ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.py | 752 | # ─── Virtual Environment ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.py | 817 | # ─── Connection Verification ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.py | 1407 | # ─── Main Install Flow ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | install.py | 1703 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM⚡ | install.py | 1705 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 885 | # ─── Interactive UI ─────────────────────────────────────────────────────────── | STRING |
| MEDIUM | install.py | 1477 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1479 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1528 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1530 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1588 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1590 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1618 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1620 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1768 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | install.py | 1770 | # ══════════════════════════════════════════════════════════════════════ | STRING |
| MEDIUM | tests/test_resolve21_actions.py | 19 | # ── Stubs ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_resolve21_actions.py | 165 | # ── Tests ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_granular_2104_parity.py | 23 | # ── Stubs ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_granular_2104_parity.py | 143 | # ── resolve_control preset tools ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_granular_2104_parity.py | 213 | # ── project attributes ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_granular_2104_parity.py | 237 | # ── media_pool_item get_clip_timeline ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_granular_2104_parity.py | 281 | # ── timeline get_selected_timeline_items ───────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_fuse_dctl_authoring.py | 46 | # ─── Fuse template generators ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_fuse_dctl_authoring.py | 140 | # ─── DCTL template generators ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_fuse_dctl_authoring.py | 206 | # ─── Lua compilation of every Fuse template ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_fuse_dctl_authoring.py | 301 | # ─── MCP tool surface — fuse_plugin ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_fuse_dctl_authoring.py | 387 | # ─── MCP tool surface — dctl ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_fuse_dctl_authoring.py | 481 | # ─── Filesystem round-trip on a temp directory ─────────────────────────────── | COMMENT |
| MEDIUM | tests/test_spec_lint_wiring.py | 10 | # ── Fakes ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_spec_lint_wiring.py | 183 | # ── Tests ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_v233_helpers.py | 70 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_v233_helpers.py | 72 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_v233_helpers.py | 133 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_v233_helpers.py | 135 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_v233_helpers.py | 193 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_v233_helpers.py | 195 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_resolve_bridge.py | 826 | # ── Windows (issue #106) ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_resolve2104_actions.py | 17 | # ── Stubs ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_resolve2104_actions.py | 104 | # ── media_pool_item get_timeline ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_resolve2104_actions.py | 171 | # ── selection probe ordering ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_resolve2104_actions.py | 196 | # ── render set_settings warnings ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_resolve2104_preset_actions.py | 116 | # ── layout_presets list ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_resolve2104_preset_actions.py | 135 | # ── render_presets list_burnin / delete_burnin ─────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_resolve2104_preset_actions.py | 166 | # ── resolve_control user preferences presets ───────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_resolve2104_preset_actions.py | 267 | # ── capability advertisement ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_resolve2104_preset_actions.py | 22 | # ── Stubs ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_resolve2104_preset_actions.py | 241 | # ── project_manager list_attributes ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_analysis_store.py | 126 | # ── schema ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_analysis_store.py | 150 | # ── round-trip guard ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_analysis_store.py | 190 | # ── identity / lookup ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_analysis_store.py | 216 | # ── corrections ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_analysis_store.py | 285 | # ── project ingest (migration path) ───────────────────────────────────── | COMMENT |
| 219 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CHANGELOG.md | 1691 | except Exception as exc: | CODE |
| MEDIUM | install.py | 154 | def require_supported_python(python_path, label="Python"): | CODE |
| MEDIUM | install.py | 929 | def _run_git(project_dir, args, timeout=45): | CODE |
| LOW | install.py | 157 | except Exception as exc: | CODE |
| LOW | install.py | 274 | except Exception: | CODE |
| LOW | install.py | 456 | except Exception as exc: | CODE |
| LOW | install.py | 838 | except Exception: | CODE |
| LOW | install.py | 849 | except Exception as e: | CODE |
| LOW | install.py | 1122 | except Exception as exc: | CODE |
| LOW | install.py | 1226 | except Exception as exc: | CODE |
| LOW | install.py | 1231 | except Exception as exc: | CODE |
| LOW⚡ | install.py | 1714 | except Exception: | STRING |
| LOW | install.py | 882 | except Exception as e: | STRING |
| LOW | install.py | 1561 | except Exception: | STRING |
| LOW | tests/live_fuse_smoke.py | 46 | except Exception: | CODE |
| LOW | tests/live_fuse_smoke.py | 71 | except Exception: | CODE |
| LOW | tests/live_fuse_smoke.py | 83 | except Exception as exc: | CODE |
| LOW | tests/live_fuse_smoke.py | 118 | except Exception: | CODE |
| LOW | tests/live_fuse_smoke.py | 133 | except Exception: | CODE |
| LOW | tests/live_fuse_smoke.py | 204 | except Exception: | CODE |
| LOW | tests/live_fuse_smoke.py | 206 | except Exception as e: | CODE |
| LOW | tests/live_fuse_smoke.py | 229 | except Exception: | CODE |
| MEDIUM | tests/live_fuse_smoke.py | 41 | def _quit_resolve(): | CODE |
| LOW | tests/live_multicam_setup_validation.py | 111 | except Exception: | CODE |
| LOW | tests/live_multicam_setup_validation.py | 186 | except Exception as exc: | CODE |
| LOW | tests/live_script_smoke.py | 118 | except Exception: | CODE |
| LOW | tests/live_metadata_publish_validation.py | 78 | except Exception: | CODE |
| LOW | tests/live_metadata_publish_validation.py | 180 | except Exception as exc: | CODE |
| LOW | tests/live_edit_engine_validation.py | 307 | except Exception as exc: | CODE |
| LOW | tests/live_fusion_keyframe_validation.py | 66 | except Exception: | CODE |
| LOW | tests/live_fusion_keyframe_validation.py | 74 | except Exception: | CODE |
| LOW | tests/test_resolve20_api.py | 67 | except Exception as exc: | CODE |
| LOW | tests/test_resolve20_api.py | 102 | except Exception: | CODE |
| LOW | tests/test_resolve20_api.py | 125 | except Exception: | CODE |
| LOW | tests/live_path_probe.py | 40 | except Exception: | CODE |
| LOW | tests/live_path_probe.py | 53 | except Exception: | CODE |
| LOW | tests/live_path_probe.py | 63 | except Exception: | CODE |
| LOW | tests/live_path_probe.py | 91 | except Exception as e: | CODE |
| LOW | tests/live_path_probe.py | 112 | except Exception: | CODE |
| LOW | tests/live_metadata_field_inventory_validation.py | 149 | except Exception: | CODE |
| LOW | tests/live_metadata_field_inventory_validation.py | 201 | except Exception as exc: | CODE |
| LOW | tests/live_metadata_field_inventory_validation.py | 206 | except Exception as exc: | CODE |
| LOW | tests/live_metadata_field_inventory_validation.py | 361 | except Exception as exc: | CODE |
| LOW⚡ | tests/test_resolve_bridge.py | 2409 | except Exception: | CODE |
| LOW | tests/live_duplicate_clips_validation.py | 85 | except Exception: | CODE |
| LOW | tests/live_duplicate_clips_validation.py | 138 | except Exception as exc: | CODE |
| LOW | tests/live_duplicate_clips_validation.py | 146 | except Exception: | CODE |
| LOW | tests/test_tool_argument_validation.py | 143 | except Exception: | CODE |
| LOW⚡ | tests/test_tool_argument_validation.py | 171 | except Exception as exc: # noqa: BLE001 - the exception is the observation | CODE |
| LOW | tests/create_test_timeline.py | 80 | except Exception as e: | CODE |
| LOW | tests/live_sync_event_validation.py | 80 | except Exception: | CODE |
| LOW | tests/live_sync_event_validation.py | 152 | except Exception as exc: | CODE |
| LOW | tests/live_v233_validation.py | 270 | except Exception as exc: | CODE |
| LOW | tests/live_v233_validation.py | 277 | except Exception as exc: | CODE |
| LOW⚡ | tests/test_auto_run.py | 21 | except Exception: | CODE |
| LOW | tests/live_resolve21_validation.py | 115 | except Exception: | CODE |
| LOW | tests/live_resolve21_validation.py | 173 | except Exception as exc: | CODE |
| LOW | tests/live_resolve21_validation.py | 275 | except Exception: | CODE |
| LOW | tests/live_resolve21_validation.py | 296 | except Exception: | CODE |
| LOW | tests/live_resolve21_validation.py | 354 | except Exception as exc: | CODE |
| 476 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_destructive_decorator_coverage.py | 12 | CODE | |
| LOW | tests/live_fusion_mask_title_validation.py | 26 | CODE | |
| LOW | tests/test_timeline_versioning.py | 7 | CODE | |
| LOW | tests/test_contracts.py | 2 | CODE | |
| LOW | tests/test_update_history.py | 6 | CODE | |
| LOW | tests/test_strata_story.py | 3 | CODE | |
| LOW | tests/live_multicam_setup_validation.py | 11 | CODE | |
| LOW | tests/live_multicam_setup_validation.py | 13 | CODE | |
| LOW | tests/test_image_qc.py | 9 | CODE | |
| LOW | tests/test_static_undefined_names.py | 13 | CODE | |
| LOW | tests/test_update_hardening.py | 9 | CODE | |
| LOW | tests/test_update_hardening.py | 11 | CODE | |
| LOW | tests/conftest.py | 30 | CODE | |
| LOW | tests/live_script_smoke.py | 12 | CODE | |
| LOW | tests/live_script_smoke.py | 14 | CODE | |
| LOW | tests/test_get_version_build_block.py | 11 | CODE | |
| LOW | tests/live_fusion_composition_validation.py | 4 | CODE | |
| LOW | tests/live_metadata_publish_validation.py | 11 | CODE | |
| LOW | tests/live_metadata_publish_validation.py | 14 | CODE | |
| LOW | tests/live_edit_engine_validation.py | 19 | CODE | |
| LOW | tests/live_edit_engine_validation.py | 69 | CODE | |
| LOW | tests/test_take_ranking.py | 12 | CODE | |
| LOW | tests/test_headless_runtime.py | 10 | CODE | |
| LOW | tests/test_contact_sheet.py | 16 | CODE | |
| LOW | tests/test_panel_docs_drift.py | 11 | CODE | |
| LOW | tests/live_marker_validation.py | 21 | CODE | |
| LOW | tests/live_metadata_field_inventory_validation.py | 16 | CODE | |
| LOW | tests/live_metadata_field_inventory_validation.py | 21 | CODE | |
| LOW | tests/live_timeline_conform_validation.py | 4 | CODE | |
| LOW | tests/test_resolve_bridge.py | 9 | CODE | |
| LOW | tests/test_embeddings.py | 9 | CODE | |
| LOW | tests/test_bridge_differential.py | 18 | CODE | |
| LOW | tests/test_split_edits.py | 10 | CODE | |
| LOW | tests/live_render_deliver_validation.py | 4 | CODE | |
| LOW | tests/test_timeline_brain_db.py | 6 | CODE | |
| LOW | tests/test_media_pool_changes.py | 3 | CODE | |
| LOW | tests/_error_envelope_helpers.py | 10 | CODE | |
| LOW | tests/test_shot_relationships.py | 10 | CODE | |
| LOW | tests/__init__.py | 24 | CODE | |
| LOW | tests/test_shot_assembly.py | 9 | CODE | |
| LOW | tests/test_caps_integration.py | 12 | CODE | |
| LOW | tests/live_duplicate_clips_validation.py | 14 | CODE | |
| LOW | tests/live_audio_fairlight_validation.py | 4 | CODE | |
| LOW | tests/test_governance_identity.py | 2 | CODE | |
| LOW | tests/test_batch_cli.py | 7 | CODE | |
| LOW | tests/test_batch_cli.py | 14 | CODE | |
| LOW | tests/test_doctor_paths.py | 23 | CODE | |
| LOW | tests/live_review_annotation_validation.py | 9 | CODE | |
| LOW | tests/test_entities.py | 9 | CODE | |
| LOW | tests/test_entities.py | 11 | CODE | |
| LOW | tests/test_tool_argument_validation.py | 36 | CODE | |
| LOW | tests/test_attribution_drift.py | 44 | CODE | |
| LOW | tests/test_analysis_store.py | 9 | CODE | |
| LOW | tests/create_test_timeline.py | 23 | CODE | |
| LOW | tests/test_open_control_panel.py | 7 | CODE | |
| LOW | tests/test_reference_match.py | 9 | CODE | |
| LOW | tests/live_sync_event_validation.py | 11 | CODE | |
| LOW | tests/live_sync_event_validation.py | 15 | CODE | |
| LOW | tests/offline_guard.py | 23 | CODE | |
| LOW | tests/live_playhead_timecode_validation.py | 21 | CODE | |
| 229 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.py | 545 | CODE | |
| LOW | install.py | 819 | CODE | |
| LOW | install.py | 904 | CODE | |
| LOW | install.py | 987 | CODE | |
| LOW | install.py | 1285 | CODE | |
| LOW | install.py | 1355 | CODE | |
| LOW | install.py | 1409 | CODE | |
| LOW | tests/live_fuse_smoke.py | 59 | CODE | |
| LOW | tests/live_edit_engine_validation.py | 60 | CODE | |
| LOW | tests/live_path_probe.py | 33 | CODE | |
| LOW | tests/test_doc_tool_counts.py | 48 | CODE | |
| LOW | tests/live_metadata_field_inventory_validation.py | 154 | CODE | |
| LOW | tests/test_resolve_bridge.py | 1373 | CODE | |
| LOW | tests/test_resolve_bridge.py | 2199 | CODE | |
| LOW | tests/test_doctor_paths.py | 133 | CODE | |
| LOW | tests/test_import.py | 40 | CODE | |
| LOW | tests/test_optional_dependency_guards.py | 51 | CODE | |
| LOW | tests/test_optional_dependency_guards.py | 112 | CODE | |
| LOW | tests/test_optional_dependency_guards.py | 155 | CODE | |
| LOW | tests/test_optional_dependency_guards.py | 170 | CODE | |
| LOW | tests/test_resolve_connection.py | 48 | CODE | |
| LOW | tests/test_destructive_registry_drift.py | 23 | CODE | |
| LOW | tests/test_version_gate_drift.py | 68 | CODE | |
| LOW | tests/benchmark_server.py | 195 | CODE | |
| LOW | tests/live_resolve21_validation.py | 499 | CODE | |
| LOW | tests/test_live_api.py | 16 | CODE | |
| LOW | tests/live_fuse_diagnose.py | 54 | CODE | |
| LOW | tests/test_action_list_drift.py | 29 | CODE | |
| LOW | tests/test_action_list_drift.py | 50 | CODE | |
| LOW | tests/test_action_list_drift.py | 66 | CODE | |
| LOW | tests/test_action_list_drift.py | 120 | CODE | |
| LOW | resolve-advanced/server/aaf_probe.py | 438 | CODE | |
| LOW | resolve-advanced/server/aaf_probe.py | 569 | CODE | |
| LOW | resolve-advanced/server/aaf_probe.py | 633 | CODE | |
| LOW | resolve-advanced/server/aaf_probe.py | 850 | CODE | |
| LOW | resolve-advanced/server/aaf_probe.py | 971 | CODE | |
| LOW | scripts/audit_readwrite_symmetry.py | 44 | CODE | |
| LOW | scripts/resolve_bridge_probe.py | 36 | CODE | |
| LOW | scripts/roundtrip_matrix.py | 77 | CODE | |
| LOW | scripts/roundtrip_matrix.py | 321 | CODE | |
| LOW | scripts/resolve_headless.py | 73 | CODE | |
| LOW | scripts/roundtrip_rich.py | 62 | CODE | |
| LOW | scripts/roundtrip_rich.py | 103 | CODE | |
| LOW | scripts/roundtrip_rich.py | 342 | CODE | |
| LOW | scripts/pixel_equality.py | 66 | CODE | |
| LOW | scripts/pixel_equality.py | 88 | CODE | |
| LOW | scripts/audit_api_parity.py | 44 | CODE | |
| LOW | scripts/audit_api_parity.py | 95 | CODE | |
| LOW | scripts/audit_api_parity.py | 165 | CODE | |
| LOW | scripts/resolve_capability_probe.py | 126 | CODE | |
| LOW | scripts/resolve_capability_probe.py | 158 | CODE | |
| LOW | scripts/render_stress.py | 78 | CODE | |
| LOW | scripts/install_resolve_bridge.py | 136 | CODE | |
| LOW | scripts/mode_matrix_worker.py | 54 | CODE | |
| LOW | scripts/relink_moved_media.py | 61 | CODE | |
| LOW | src/analysis_dashboard.py | 11971 | CODE | |
| LOW | src/analysis_dashboard.py | 12406 | CODE | |
| LOW | src/analysis_dashboard.py | 13227 | CODE | |
| LOW | src/analysis_dashboard.py | 13294 | CODE | |
| LOW | src/analysis_dashboard.py | 13439 | CODE | |
| 117 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/bridge_differential.py | 87 | # which is a harness reporting a known trap as if it were a finding. | COMMENT |
| MEDIUM | scripts/headless_differential.py | 136 | # politeness, it is the only way this harness can be safe to point at a | COMMENT |
| MEDIUM | scripts/headless_differential.py | 152 | # already open. That is a destructive harness bug, not a probe result. | COMMENT |
| MEDIUM | scripts/pixel_equality.py | 198 | # bug in this harness, and it would have been written up as "a Fusion | COMMENT |
| MEDIUM | scripts/render_stress.py | 16 | # once production assets are available, same harness, real source | STRING |
| MEDIUM | scripts/render_stress.py | 266 | # harness looked like it was working and was testing almost nothing. | COMMENT |
| MEDIUM | scripts/render_stress.py | 348 | # is the crash, not an error in the harness. | COMMENT |
| MEDIUM | scripts/render_stress.py | 374 | # The whole point of the harness: a stack, attached to the iteration | COMMENT |
| MEDIUM | scripts/render_stress.py | 434 | # to clear. This harness did that to a live GUI session. | COMMENT |
| MEDIUM | scripts/bisect_headless_hang.py | 96 | # the first mutating call the harness makes, and it is documented to return | COMMENT |
| MEDIUM | scripts/bisect_headless_hang.py | 113 | # Teardown, itself instrumented — the harness's teardown is as likely a | COMMENT |
| MEDIUM | src/granular/timeline_item.py | 1253 | """Get comprehensive info about a timeline item. | STRING |
| MEDIUM⚡ | src/granular/project.py | 751 | """Get comprehensive information about the current project.""" | STRING |
| MEDIUM | src/utils/probe_catalogue.py | 131 | #: The probe this whole harness exists for — and it is `blocking`, so it never | COMMENT |
| MEDIUM | src/utils/bridge_differential.py | 64 | #: App-global state that **the harness's own probes move**, which is a different | COMMENT |
| MEDIUM | src/utils/bridge_differential.py | 75 | #: genuinely reported the wrong page is exactly the bug this harness is for. So | COMMENT |
| MEDIUM | src/utils/bridge_differential.py | 86 | #: Never invoked by the harness, whatever the enumeration says. These either | COMMENT |
| MEDIUM | src/utils/bridge_differential.py | 199 | #: How the harness reaches each object worth probing, as a chain of zero-argument | COMMENT |
| MEDIUM | src/utils/bridge_differential.py | 402 | continue # harness bookkeeping, not a probe result | CODE |
| MEDIUM | src/utils/bridge_differential.py | 419 | # The harness moved it mid-run, so the two readings are of different | COMMENT |
| MEDIUM | src/utils/headless_differential.py | 61 | #: because the harness or the clock moved them. Compared by type, not value. | COMMENT |
| MEDIUM | src/utils/headless_differential.py | 76 | # name and clip timestamps are stamped by this harness. Comparing them by | COMMENT |
| MEDIUM | src/utils/resolve_bridge_client.py | 111 | #: bridged from one process — the differential harness does exactly that. | COMMENT |
| MEDIUM | src/utils/mode_matrix.py | 220 | # only class of bug this harness was built to find. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/live_fusion_mask_title_validation.py | 0 | let us import src.server without installing mcp deps in this python. | STRING |
| HIGH | tests/live_marker_validation.py | 0 | let us import src.server without installing mcp deps in this python. | STRING |
| HIGH | tests/live_playhead_timecode_validation.py | 0 | let us import src.server without installing mcp deps in this python. | STRING |
| HIGH | tests/test_shot_relationships.py | 0 | insert or replace into embeddings (entity_type, entity_uuid, embedding_kind, model_name, dimension, vector, content_hash | STRING |
| HIGH | tests/test_edit_engine.py | 0 | insert or replace into embeddings (entity_type, entity_uuid, embedding_kind, model_name, dimension, vector, content_hash | STRING |
| HIGH | tests/test_entities.py | 0 | insert or replace into embeddings (entity_type, entity_uuid, embedding_kind, model_name, dimension, vector, content_hash | STRING |
| HIGH | tests/live_duplicate_clips_validation.py | 0 | allow importing src.server when mcp deps are absent from python 3.11. | STRING |
| HIGH | tests/live_review_annotation_validation.py | 0 | allow importing src.server when mcp deps are absent from python 3.11. | STRING |
| HIGH | tests/live_color_grade_validation.py | 0 | allow importing src.server when mcp deps are absent from python 3.11. | STRING |
| HIGH | tests/live_media_pool_ingest_validation.py | 0 | allow importing src.server when mcp deps are absent from python 3.11. | STRING |
| HIGH | src/utils/timeline_kernel_live_probe.py | 0 | allow importing src.server when mcp deps are absent from python 3.11. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.py | 1549 | # Check if deps are installed | STRING |
| LOW | tests/test-after-restart.sh | 13 | # Check if DaVinci Resolve is running | COMMENT |
| LOW⚡ | tests/test-after-restart.sh | 34 | # Check if restart was successful | COMMENT |
| LOW | tests/create_test_timeline.py | 66 | # Check if ffmpeg is available | COMMENT |
| LOW | tests/test_improvements.py | 119 | # Check if automatic clip selection messages are present | COMMENT |
| LOW | tests/test_improvements.py | 157 | # Check if our helpers are being used | COMMENT |
| LOW | src/granular/timeline_item.py | 637 | # Check if the item has audio capabilities | COMMENT |
| LOW | src/granular/timeline_item.py | 739 | # Check if it's a video item | COMMENT |
| LOW | src/granular/timeline_item.py | 760 | # Check if it has audio properties (could be video with audio or audio-only) | COMMENT |
| LOW | src/granular/timeline_item.py | 876 | # Check if the specified property is valid for this item type | COMMENT |
| LOW | src/granular/timeline_item.py | 957 | # Check if the property has keyframes | COMMENT |
| LOW | src/granular/timeline_item.py | 974 | # Check if new frame is within the item's range | COMMENT |
| LOW | src/granular/timeline_item.py | 1058 | # Check if the property has keyframes | COMMENT |
| LOW | src/granular/timeline_item.py | 1063 | # Check if there's a keyframe at the specified frame | COMMENT |
| LOW | src/granular/timeline_item.py | 1142 | # Check if the property has keyframes | COMMENT |
| LOW | src/granular/timeline_item.py | 1147 | # Check if there's a keyframe at the specified frame | COMMENT |
| LOW⚡ | src/granular/folder.py | 41 | # Check if directory exists, create if not | COMMENT |
| LOW | src/granular/resolve_control.py | 180 | # Check if it's a method call | COMMENT |
| LOW | src/granular/media_pool_item.py | 68 | # Check if file exists | COMMENT |
| LOW | src/granular/media_pool_item.py | 147 | # Check if file exists | COMMENT |
| LOW | src/granular/project.py | 83 | # Check if it's a number in string form | COMMENT |
| LOW | src/granular/project.py | 128 | # Check if project exists | COMMENT |
| LOW | src/granular/project.py | 159 | # Check if project already exists | COMMENT |
| LOW | src/granular/project.py | 462 | # Check if directory exists | COMMENT |
| LOW | src/utils/app_control.py | 72 | # Check if a project is open | COMMENT |
| LOW | src/utils/app_control.py | 194 | # Check if timeline is open | COMMENT |
| LOW | src/utils/app_control.py | 269 | # Check if UI Manager is available | COMMENT |
| LOW | src/utils/app_control.py | 304 | # Check if UI Manager is available | COMMENT |
| LOW⚡ | src/utils/project_properties.py | 76 | # Check if we got a valid response | COMMENT |
| LOW | src/utils/project_properties.py | 218 | # Check if it's a drop frame rate | COMMENT |
| LOW | src/utils/project_properties.py | 314 | # Check if SuperScale is enabled | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_custom_timeline.py | 55 | # Create a test timeline with default settings | COMMENT |
| MEDIUM | tests/test_custom_timeline.py | 70 | # Create a custom timeline with specific parameters | COMMENT |
| MEDIUM | tests/create_test_timeline.py | 68 | # Create a 5-second test video with the specified color | COMMENT |
| MEDIUM | tests/create_test_timeline.py | 92 | # Create a new project | COMMENT |
| MEDIUM | tests/live_v233_validation.py | 111 | # Create a timeline to append into | COMMENT |
| MEDIUM | tests/live_v233_validation.py | 207 | # Create a color group, then rename it. | COMMENT |
| MEDIUM⚡ | tests/test_script_plugin.py | 632 | # Create the Lua file | COMMENT |
| MEDIUM | tests/test_live_api.py | 241 | # Create a test timeline so we can test more | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # Python dependencies installed into the venv by install.py (after mcp[cli]). | COMMENT |
| LOW | tests/test_resolve_bridge.py | 821 | # Lua always enumerates, so the canary separates "Python not detected" | COMMENT |
| LOW | tests/offline_guard.py | 101 | def offline_get_resolve(): | COMMENT |
| LOW | resolve-advanced/server/aaf_probe.py | 161 | COMMENT | |
| LOW | resolve-advanced/server/aaf_probe.py | 501 | # AFX_SPATIAL_FRAMING_{WID,HEI}_{NUM,DEN} framing rectangle | COMMENT |
| LOW | resolve-advanced/server/aaf_probe.py | 681 | COMMENT | |
| LOW | resolve-advanced/server/aaf_probe.py | 701 | # on the way back out. Collapsing them to one field would silently drop a | COMMENT |
| LOW | resolve-advanced/server/aaf_probe.py | 821 | COMMENT | |
| LOW | docs/reference/resolve_scripting_api.txt | 381 | # the return value is one of {"mono", "stereo", | COMMENT |
| LOW | scripts/headless_differential.py | 201 | try: | COMMENT |
| LOW | scripts/install_resolve_bridge.py | 41 | #: it is **Fusion's standalone tree**, not Resolve's. Keying on "which | COMMENT |
| LOW | scripts/install_resolve_bridge.py | 61 | #: points at the folder — while the Fusion standalone tree listed all four files | COMMENT |
| LOW | scripts/install_resolve_bridge.py | 81 | #: Two traps, both live in those two lines: | COMMENT |
| LOW | .github/workflows/npm-publish.yml | 41 | with: | COMMENT |
| LOW | src/utils/bridge_differential.py | 61 | "IsPlayheadOnVideoFrame", | COMMENT |
| LOW | src/utils/bridge_differential.py | 201 | #: transport without the driver knowing which it holds. | COMMENT |
| LOW | src/utils/silence_ripple.py | 61 | COMMENT | |
| LOW | src/utils/silence_ripple.py | 81 | #: is a bit cut off" — an eaten onset, produced by a one-frame onset guard. | COMMENT |
| LOW | src/utils/silence_ripple.py | 101 | #: How aggressively to tighten. The default is deliberately the *loosest* one. | COMMENT |
| LOW | src/utils/media_analysis.py | 641 | # Cost is linear in footage length; content-blind. | COMMENT |
| LOW | src/utils/media_analysis.py | 4101 | "json", | COMMENT |
| LOW | src/utils/transcript_edit.py | 161 | #: | COMMENT |
| LOW | src/utils/resolve_bridge_ops.py | 421 | # ── the transparent proxy ──────────────────────────────────────────────────── | COMMENT |
| LOW | src/utils/destructive_hook.py | 41 | # default metric. | COMMENT |
| LOW | src/utils/destructive_hook.py | 201 | NO_ARCHIVE_ON_KEYS: Dict[Tuple[str, str], frozenset] = { | COMMENT |
| LOW | src/utils/resolve_bridge.py | 81 | COMMENT | |
| LOW | src/utils/resolve_versions.py | 181 | # call an agent is told to make answered `unknown` for surfaces this repo was | COMMENT |
| LOW | src/utils/timeline_brain_db.py | 61 | conn.execute(f"PRAGMA busy_timeout={BUSY_TIMEOUT_MS}") | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_custom_timeline.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/test_timeline_versioning.py | 63 | def set_tracks(self, tracks: dict) -> None: | CODE |
| LOW | tests/create_test_timeline.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/test_improvements.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/benchmark_server.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/granular/__init__.py | 17 | __all__ = ["VERSION", "mcp"] | CODE |
| LOW | src/granular/common.py | 785 | __all__ = [name for name in globals() if not name.startswith("__")] | CODE |
| LOW | src/utils/update_check.py | 652 | def _set_cached_status(result: Mapping[str, Any]) -> None: | CODE |
| LOW | src/utils/resolve_probe.py | 38 | __all__ = ["has_method", "api_constant", "MISSING"] | CODE |
| LOW | src/utils/object_inspection.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/utils/render_ids.py | 30 | __all__ = [ | CODE |
| LOW | src/utils/actor_identity.py | 30 | def set_instance(kind: str) -> None: | CODE |
| LOW | src/utils/media_analysis_jobs.py | 571 | def _set_job_status(conn: sqlite3.Connection, job_id: str, status: str, phase: str, **extra: Any) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_import.py | 177 | # F2 workflow prompts (agentic-flow improvement F2). | COMMENT |
| MEDIUM | docs/authoring/script-plugin-authoring.md | 26 | ### `scaffold` | COMMENT |
| MEDIUM | src/utils/reference_match.py | 140 | # Reuse the pre-balance guardrails rather than reimplementing them, so this | COMMENT |
| MEDIUM | src/utils/script_templates.py | 41 | # ─── scaffold template ──────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.py | 1000 | CODE | |
| LOW | src/granular/timeline.py | 70 | CODE | |
| LOW | src/granular/media_pool.py | 208 | CODE | |
| LOW | src/granular/project.py | 1617 | CODE | |
| LOW | src/utils/timeline_xml.py | 291 | CODE | |
| LOW | src/utils/media_analysis.py | 1211 | CODE | |
| LOW | src/utils/transcript_edit.py | 305 | CODE | |
| LOW | src/utils/resolve_ai_ledger.py | 56 | CODE | |
| LOW | src/utils/brain_edits.py | 187 | CODE | |
| LOW | src/utils/edit_engine.py | 1412 | CODE | |
| LOW | src/utils/analysis_caps.py | 405 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test-after-restart.sh | 29 | # Step 1: Restart the server using the restart script | COMMENT |
| LOW | tests/test-after-restart.sh | 48 | # Step 2: Create test timeline (optional) | COMMENT |
| LOW | tests/test-after-restart.sh | 66 | # Step 3: Run automated tests | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test-after-restart.sh | 29 | # Step 1: Restart the server using the restart script | COMMENT |
| LOW | tests/test-after-restart.sh | 48 | # Step 2: Create test timeline (optional) | COMMENT |
| LOW | tests/test-after-restart.sh | 66 | # Step 3: Run automated tests | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_media_analysis.py | 3140 | handle.write(b"placeholder") | CODE |
| LOW | tests/test_media_analysis.py | 3519 | handle.write(b"placeholder") | CODE |
| LOW | tests/test_media_analysis.py | 3605 | handle.write(b"placeholder") | CODE |
| LOW | tests/test_media_analysis.py | 4081 | handle.write(b"placeholder") | CODE |
| LOW | src/control_panel_i18n.py | 632 | const CONTROL_PANEL_LOCALIZED_ATTRIBUTES = ['aria-label', 'title', 'placeholder']; | CODE |