AI Slop Code RIsk Monitor

gnome-terminator/terminator

multiple GNOME terminals in one window

17.8 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for gnome-terminator/terminator, a Python project with 2,684 GitHub stars. SynthScan examined 18,823 lines of code across 82 source files, recording 289 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 17.8 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

17.8
Adjusted Signal
17.8
Raw Pattern Score
100%
Time Factor
2026-09-07
Last Push
2.7K
Stars
Python
Language
18.8K
Lines of Code
82
Files
289
Pattern Hits
2026-10-12
Scan Date
0.18
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 38.2/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 203 finding(s).

Hallucinated Dependency & Supply Chain Risk 7.0/100 · LOW

Are imports declared and package/API names verified? 28 finding(s).

Agent Over-Engineering Ratio 46.8/100 · MEDIUM

Are wrappers, guards, and repeated structures necessary? 193 finding(s).

PR Review Velocity Impact 64.3/100 · HIGH

Which changes need focused human review? 289 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 15MEDIUM 12LOW 262

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 289 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers134 hits · 111 pts
SeverityFileLineSnippetContext
LOWtests/test_window_title.py44def test_background_terminal_cannot_override_window_title():CODE
LOWtests/test_prefseditor_keybindings.py21def detect_close_message_dialog(prefs_editor, message_dialog_token):CODE
LOWtests/test_prefseditor_keybindings.py51def test_non_empty_default_keybinding_accels_are_distinct():CODE
LOWtests/test_prefseditor_keybindings.py84def test_message_dialog_is_shown_on_duplicate_accel_assignment(CODE
LOWtests/test_prefseditor_keybindings.py132def test_duplicate_accels_not_possible_to_set(accel_params):CODE
LOWtests/test_prefseditor_keybindings.py222def test_keybinding_edit_produce_expected_accels(CODE
LOWtests/test_prefseditor_keybindings.py271def test_keybinding_successfully_reassigned_after_clearing(accel_params):CODE
LOWtests/test_terminal_popup_menu.py66def test_close_terminal_closes_after_confirmation_accepts():CODE
LOWtests/test_terminal_popup_menu.py78def test_close_terminal_keeps_terminal_open_when_confirmation_rejects():CODE
LOWtests/test_terminal_popup_menu.py89def test_close_terminal_finds_confirmation_container_above_parent_widget():CODE
LOWterminatorlib/config.py394 def connect_gsetting_callbacks(self):CODE
LOWterminatorlib/config.py451 def on_gsettings_change_event(self, settings, key):CODE
LOWterminatorlib/config.py777 def restore_config_with_suffix(self, suffix):CODE
LOW⚡terminatorlib/config.py796 def remove_config_with_suffix(self, suffix):CODE
LOWterminatorlib/window.py388 def apply_window_decoration_style(self, style):CODE
LOWterminatorlib/window.py824 def deferred_set_rough_geometry_hints(self):CODE
LOWterminatorlib/window.py832 def do_deferred_set_rough_geometry_hints(self):CODE
LOWterminatorlib/terminal.py247 def switch_to_previous_profile(self):CODE
LOWterminatorlib/terminal.py705 def do_autocleangroups_toggle(self):CODE
LOWterminatorlib/terminal.py1485 def ensure_visible_and_focussed(self):CODE
LOWterminatorlib/terminal.py1550 def deferred_on_vte_size_allocate(self, widget, allocation):CODE
LOWterminatorlib/terminal.py1558 def do_deferred_on_vte_size_allocate(self, widget, allocation):CODE
LOWterminatorlib/terminal.py2305 def key_preferences_keybindings(self):CODE
LOWterminatorlib/terminator.py149 def deregister_launcher_window(self, window):CODE
LOWterminatorlib/ipc.py102 def toggle_visibility_cmdline(self,options=dbus.Dictionary):CODE
LOWterminatorlib/ipc.py357def toggle_visibility_cmdline(session,options):CODE
LOWterminatorlib/util.py375def update_config_to_cell_height(filename):CODE
LOW⚡terminatorlib/prefseditor.py904 def on_detachable_tabs_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py908 def on_disable_mousewheel_zoom_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py913 def on_winbordercheck_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py918 def on_extrastylingcheck_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py923 def on_window_decoration_style_combo_changed(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py938 def on_hidefromtaskbcheck_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py943 def on_alwaysontopcheck_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py948 def on_hideonlosefocuscheck_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py958 def on_title_hide_sizetextcheck_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py963 def on_title_at_bottom_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py968 def on_new_tab_after_current_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py973 def on_always_split_with_profile_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py978 def on_allow_bold_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py988 def on_copy_on_selection_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py993 def on_putty_paste_style_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py998 def on_putty_paste_style_source_clipboard_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1010 def on_clear_select_on_copy_toggled(self,widget):CODE
LOW⚡terminatorlib/prefseditor.py1015 def on_disable_mouse_paste_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1025 def on_icon_bell_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1030 def on_visual_bell_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1035 def on_audible_bell_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1040 def on_urgent_bell_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1045 def on_login_shell_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1050 def on_scroll_on_keystroke_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1055 def on_scroll_on_output_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1060 def on_delete_binding_combobox_changed(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1160 def on_darken_background_scale_value_changed(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1168 def on_background_blur_checkbutton_toggled(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1173 def on_palette_combobox_changed(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1356 def on_custom_url_handler_entry_changed(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1361 def on_custom_command_entry_changed(self, widget):CODE
LOW⚡terminatorlib/prefseditor.py1366 def on_cursor_color_default_checkbutton_toggled(self, checkbutton):CODE
LOW⚡terminatorlib/prefseditor.py1382 def on_cursor_fg_color_color_set(self, widget):CODE
74 more matches not shown…
Empty Error Handlers11 hits · 55 pts
SeverityFileLineSnippetContext
HIGHterminatorlib/debugserver.py163except:CODE
HIGHterminatorlib/searchbar.py144except TypeError:CODE
HIGHterminatorlib/window.py141except (KeyError, NameError):CODE
HIGHterminatorlib/terminal.py1719except AttributeError:CODE
HIGHterminatorlib/terminal.py264except:CODE
HIGHterminatorlib/terminal.py357except GLib.Error:CODE
HIGHterminatorlib/terminal.py781except:CODE
HIGHterminatorlib/util.py80except IOError:CODE
HIGHterminatorlib/util.py73except IOError:CODE
HIGHterminatorlib/prefseditor.py533except KeymapError:CODE
HIGHterminatorlib/container.py131except TypeError:CODE
Excessive Try-Catch Wrapping42 hits · 49 pts
SeverityFileLineSnippetContext
LOWsetup.py61 except Exception as e:CODE
LOWterminatorlib/config.py678 except Exception as ex:CODE
LOWterminatorlib/config.py691 except Exception as ex:CODE
LOWterminatorlib/config.py773 except Exception as ex:CODE
LOW⚡terminatorlib/config.py792 except Exception as ex:CODE
LOW⚡terminatorlib/config.py803 except Exception as ex:CODE
LOWterminatorlib/config.py879 except Exception as ex:CODE
MEDIUMterminatorlib/config.py756def save_config_with_suffix(self, suffix):CODE
MEDIUMterminatorlib/config.py777def restore_config_with_suffix(self, suffix):CODE
MEDIUMterminatorlib/config.py796def remove_config_with_suffix(self, suffix):CODE
LOWterminatorlib/configjson.py126 except Exception as ex:CODE
LOWterminatorlib/configjson.py138 except Exception as ex:CODE
LOWterminatorlib/configjson.py154 except Exception as ex:CODE
MEDIUMterminatorlib/configjson.py111def get_layout(self, layoutjson):CODE
MEDIUMterminatorlib/configjson.py130def get_profile(self, profilejson, baseprofile):CODE
LOWterminatorlib/window.py474 except Exception as e:CODE
LOWterminatorlib/window.py551 except Exception as e:CODE
MEDIUMterminatorlib/terminal.py208def set_background_image(self,image):CODE
LOWterminatorlib/terminal.py214 except Exception as e:CODE
LOWterminatorlib/terminal.py279 except Exception as ex:CODE
LOWterminatorlib/terminal.py434 except Exception as ex:CODE
LOWterminatorlib/terminal.py1799 except Exception as ex:CODE
LOWterminatorlib/ipc.py55 except Exception as e:CODE
LOWterminatorlib/util.py404 except Exception as ex:CODE
LOWterminatorlib/layoutlauncher.py41 except Exception as ex:CODE
LOWterminatorlib/prefseditor.py215 except Exception as ex:CODE
LOWterminatorlib/prefseditor.py238 except Exception as e:CODE
LOWterminatorlib/terminal_popup_menu.py128 except Exception:CODE
LOWterminatorlib/terminal_popup_menu.py401 except Exception as ex:CODE
LOWterminatorlib/plugin.py115 except Exception as ex:CODE
LOWterminatorlib/plugins/remote.py175 except Exception as e:CODE
LOWterminatorlib/plugins/remote.py212 except Exception as e:CODE
LOWterminatorlib/plugins/remote.py243 except Exception as e:CODE
LOWterminatorlib/plugins/remote.py259 except Exception as e:CODE
LOWterminatorlib/plugins/remote.py388 except Exception as e:CODE
LOWterminatorlib/plugins/remote.py502 except Exception as e:CODE
LOWterminatorlib/plugins/remote.py642 except Exception as e:CODE
MEDIUMterminatorlib/plugins/remote.py499def get_as_bool(config, key):CODE
LOWterminatorlib/plugins/custom_commands.py135 except Exception as ex:CODE
LOWterminatorlib/plugins/run_cmd_on_match.py41 except Exception as e:CODE
LOWterminatorlib/plugins/run_cmd_on_match.py52 except Exception as e:CODE
LOWterminatorlib/plugins/run_cmd_on_match.py63 except Exception as e:CODE
Deep Nesting51 hits · 46 pts
SeverityFileLineSnippetContext
LOWsetup.py41CODE
LOWsetup.py106CODE
LOWterminatorlib/config.py660CODE
LOWterminatorlib/config.py882CODE
LOWterminatorlib/config.py907CODE
LOWterminatorlib/window.py209CODE
LOWterminatorlib/window.py1053CODE
LOWterminatorlib/window.py1139CODE
LOWterminatorlib/terminal.py369CODE
LOWterminatorlib/terminal.py709CODE
LOWterminatorlib/terminal.py1018CODE
LOWterminatorlib/terminal.py1065CODE
LOWterminatorlib/terminal.py1108CODE
LOWterminatorlib/terminal.py1178CODE
LOWterminatorlib/terminal.py1245CODE
LOWterminatorlib/terminal.py1378CODE
LOWterminatorlib/terminal.py1654CODE
LOWterminatorlib/terminal.py1771CODE
LOWterminatorlib/terminator.py216CODE
LOWterminatorlib/terminator.py311CODE
LOWterminatorlib/terminator.py368CODE
LOWterminatorlib/terminator.py546CODE
LOWterminatorlib/ipc.py166CODE
LOWterminatorlib/ipc.py213CODE
LOWterminatorlib/keybindings.py64CODE
LOWterminatorlib/util.py100CODE
LOWterminatorlib/util.py148CODE
LOWterminatorlib/util.py243CODE
LOWterminatorlib/util.py263CODE
LOWterminatorlib/util.py279CODE
LOWterminatorlib/util.py303CODE
LOWterminatorlib/paned.py160CODE
LOWterminatorlib/paned.py203CODE
LOWterminatorlib/paned.py275CODE
LOWterminatorlib/paned.py365CODE
LOWterminatorlib/prefseditor.py269CODE
LOWterminatorlib/prefseditor.py1519CODE
LOWterminatorlib/titlebar.py102CODE
LOWterminatorlib/terminal_popup_menu.py104CODE
LOWterminatorlib/plugin.py72CODE
LOWterminatorlib/notebook.py115CODE
LOWterminatorlib/notebook.py375CODE
LOWterminatorlib/notebook.py545CODE
LOWterminatorlib/plugins/remote.py197CODE
LOWterminatorlib/plugins/remote.py350CODE
LOWterminatorlib/plugins/custom_commands.py176CODE
LOWterminatorlib/plugins/custom_commands.py480CODE
LOWterminatorlib/plugins/custom_commands.py602CODE
LOWterminatorlib/plugins/run_cmd_on_match.py378CODE
LOWterminatorlib/plugins/run_cmd_on_match.py477CODE
LOWterminatorlib/plugins/maven.py44CODE
Unused Imports28 hits · 28 pts
SeverityFileLineSnippetContext
LOWtests/test_signalman.py36CODE
LOWterminatorlib/debugserver.py6CODE
LOWterminatorlib/debugserver.py9CODE
LOWterminatorlib/debugserver.py17CODE
LOWterminatorlib/debugserver.py18CODE
LOWterminatorlib/keybindings.py25CODE
LOWterminatorlib/util.py18CODE
LOWterminatorlib/layoutlauncher.py8CODE
LOWterminatorlib/layoutlauncher.py10CODE
LOWterminatorlib/layoutlauncher.py12CODE
LOWterminatorlib/layoutlauncher.py14CODE
LOWterminatorlib/layoutlauncher.py106CODE
LOWterminatorlib/prefseditor.py11CODE
LOWterminatorlib/plugin.py219CODE
LOWterminatorlib/plugin.py220CODE
LOWterminatorlib/editablelabel.py20CODE
LOWterminatorlib/plugins/command_notify.py21CODE
LOWterminatorlib/plugins/save_user_session_layout.py13CODE
LOWterminatorlib/plugins/save_user_session_layout.py13CODE
LOWterminatorlib/plugins/save_last_session_layout.py11CODE
LOWterminatorlib/plugins/save_last_session_layout.py11CODE
LOWterminatorlib/plugins/custom_commands.py19CODE
LOWterminatorlib/plugins/run_cmd_on_match.py7CODE
LOWterminatorlib/plugins/auto_theme.py18CODE
LOWterminatorlib/plugins/auto_theme.py19CODE
LOWterminatorlib/plugins/mousefree_url_handler.py19CODE
LOWterminatorlib/plugins/mousefree_url_handler.py19CODE
LOWterminatorlib/plugins/mousefree_url_handler.py19CODE
Cross-File Repetition4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHterminatorlib/window.py0handle a keyboard event requesting a terminal resizeSTRING
HIGHterminatorlib/paned.py0handle a keyboard event requesting a terminal resizeSTRING
HIGHterminatorlib/container.py0handle a keyboard event requesting a terminal resizeSTRING
HIGHterminatorlib/notebook.py0handle a keyboard event requesting a terminal resizeSTRING
Over-Commented Block11 hits · 10 pts
SeverityFileLineSnippetContext
LOWterminatorlib/config.py1# TerminatorConfig - layered config classesCOMMENT
LOWterminatorlib/version.py1# TerminatorVersion - version numberCOMMENT
LOWterminatorlib/terminal.py281 # not what we should be doing.COMMENT
LOWterminatorlib/keybindings.py1# Terminator - multiple gnome terminals in one windowCOMMENT
LOWterminatorlib/util.py1# Terminator.util - misc utility functionsCOMMENT
LOWterminatorlib/prefseditor.py81 'gruvbox_dark': 7,COMMENT
LOWterminatorlib/__init__.py1# Terminator - multiple gnome terminals in one windowCOMMENT
LOWterminatorlib/optionparse.py1# Terminator.optionparse - Parse commandline optionsCOMMENT
LOWterminatorlib/translation.py1# Terminator - multiple gnome terminals in one windowCOMMENT
LOWterminatorlib/editablelabel.py1# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtabCOMMENT
LOWterminatorlib/plugins/maven.py1# Copyright (c) 2010 Julien Nicoulaud <julien.nicoulaud@gmail.com>COMMENT
Self-Referential Comments4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMterminatorlib/terminal.py1037 # Create a new group and assign currently focusedCOMMENT
MEDIUMterminatorlib/terminator.py414 # Create a dummy window/vte and realise it so it has correctSTRING
MEDIUMterminatorlib/prefseditor.py1324 # Create the dialog to choose a custom colorCOMMENT
MEDIUMterminatorlib/plugins/run_cmd_on_match.py23# This class is not useful as is, it needs to be forged through MetaRCOM metaclass to be usefulCOMMENT
AI Slop Vocabulary2 hits · 3 pts
SeverityFileLineSnippetContext
LOWterminatorlib/window.py866 # FIXME: I don't think we should just use whatever font size info is onCOMMENT
LOWterminatorlib/terminal.py2049 # bindings that should be moved to Terminator as they all just callCOMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMterminatorlib/debugserver.py24CODE
AI Structural Patterns1 hit · 0 pts
SeverityFileLineSnippetContext
LOWterminatorlib/terminal.py1594CODE