AI Slop Code RIsk Monitor

darrenburns/posting

The modern API client that lives in your terminal.

16.3 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for darrenburns/posting, a Python project with 12,499 GitHub stars. SynthScan examined 25,891 lines of code across 166 source files, recording 373 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 16.3 (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.

16.3
Adjusted Signal
16.3
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
12.5K
Stars
Python
Language
25.9K
Lines of Code
166
Files
373
Pattern Hits
2026-10-12
Scan Date
0.07
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 41.5/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 8.3/100 · LOW

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

Agent Over-Engineering Ratio 47.4/100 · MEDIUM

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

PR Review Velocity Impact 57.1/100 · HIGH

Which changes need focused human review? 373 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

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

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 11MEDIUM 5LOW 357

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 373 distinct pattern matches across 14 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 Identifiers230 hits · 229 pts
SeverityFileLineSnippetContext
LOWtests/test_request_model.py4def test_apply_template_absorbs_url_query_params():CODE
LOWtests/test_request_model.py11def test_apply_template_fills_empty_table_value_from_url():CODE
LOWtests/test_request_model.py22def test_apply_template_resolves_variables_in_url_query():CODE
LOW⚡tests/test_request_model.py34def test_query_variables_keep_reserved_characters_in_one_value():CODE
LOW⚡tests/test_request_model.py41def test_variable_containing_entire_url_preserves_repeated_query():CODE
LOW⚡tests/test_request_model.py51def test_percent_encoded_dollar_is_literal_not_a_variable():CODE
LOWtests/test_request_search.py23def test_request_search_matches_visible_text(tmp_path, monkeypatch, query, expected):CODE
LOWtests/test_history_ui.py108 def test_replay_restores_request(self, spacing, snap_compare):CODE
LOWtests/test_history_ui.py141 def test_send_then_replay_and_send_again(self, snap_compare):CODE
LOWtests/test_history_ui.py178 def test_clear_confirmation_and_delete(self, snap_compare):CODE
LOWtests/test_history_ui.py201 def test_persisted_history_on_startup(self, tmp_path, snap_compare):CODE
LOWtests/test_history_ui.py260 def test_narrow_right_sidebar(self, snap_compare):CODE
LOWtests/test_history_ui.py281 def test_storage_failure_keeps_live_response(self, snap_compare):CODE
LOWtests/test_history_ui.py304 def test_deleted_elsewhere_does_not_replay(self, snap_compare):CODE
LOWtests/test_history_ui.py323 def test_jump_mode_and_keyboard_navigation(self, spacing, snap_compare):CODE
LOWtests/test_history_ui.py364 def test_send_captures_configuration_before_scripts_and_inflight_edits(CODE
LOWtests/test_history_ui.py459 def test_restore_body_clears_previous_content(self, body, kind):CODE
LOWtests/test_history_ui.py489 def test_history_load_integrates_with_query_sync(self, query_in_url):CODE
LOWtests/test_history_ui.py544 def test_legacy_entry_keeps_editor_and_explains_limitation(self, snap_compare):CODE
LOWtests/test_history_ui.py565 def test_restore_detaches_previously_open_collection_request(self):CODE
LOWtests/test_history_ui.py594 def test_missing_script_restores_then_reports_error_on_resend(self):CODE
LOWtests/test_session_variables.py7def test_undo_preserves_script_value(value):CODE
LOWtests/test_session_variables.py18def test_add_revert_and_repeated_undo_redo():CODE
LOWtests/test_session_variables.py36def test_new_edit_invalidates_redo_and_history_is_bounded():CODE
LOWtests/test_clipboard.py16def test_copy_uses_native_clipboard_when_available(monkeypatch) -> None:CODE
LOWtests/test_clipboard.py30def test_copy_falls_back_to_textual_clipboard(monkeypatch) -> None:CODE
LOW⚡tests/test_variables_modal.py4def test_sensitive_names_are_recognised() -> None:CODE
LOW⚡tests/test_variables_modal.py13def test_secrets_are_masked_by_default() -> None:CODE
LOW⚡tests/test_variables_modal.py21def test_masking_does_not_leak_secret_length() -> None:CODE
LOW⚡tests/test_variables_modal.py27def test_secrets_shown_when_revealed() -> None:CODE
LOW⚡tests/test_variables_modal.py34def test_source_distinguishes_session_from_env_file() -> None:CODE
LOW⚡tests/test_variables_modal.py44def test_filter_matches_on_name_case_insensitively() -> None:CODE
LOW⚡tests/test_variables_modal.py52def test_rows_are_sorted_by_name() -> None:CODE
LOW⚡tests/test_variables_modal.py57def test_non_string_values_are_rendered() -> None:CODE
LOWtests/test_query_sync.py47def test_query_sync_preserves_duplicates(query_app, second_value):CODE
LOWtests/test_query_sync.py60def test_query_sync_loads_saved_url(query_app, params):CODE
LOWtests/test_query_sync.py74def test_query_sync_preserves_disabled_duplicate_on_url_edit(query_app, second_value):CODE
LOWtests/test_query_sync.py94def test_query_sync_does_not_rewrite_while_typing(query_app):CODE
LOWtests/test_query_sync.py107def test_query_sync_follows_table_edits(query_app):CODE
LOWtests/test_query_sync.py156def test_query_sync_survives_save_reload(query_app, tmp_path):CODE
LOWtests/test_query_sync.py178def test_query_sync_preserves_variables_and_reserved_characters(query_app):CODE
LOWtests/test_body_completion_options.py16def test_body_completion_follows_substitution_option(body_type, snap_compare, tmp_path):CODE
LOWtests/test_environment_palette.py61def test_switch_environment_restarts_watcher(tmp_path):CODE
LOWtests/test_files.py44def test_is_valid_filename_with_none():CODE
LOWtests/test_files.py57def test_is_valid_filename_os_specific(os_specific_filename, expected):CODE
LOWtests/test_ssl.py146def assert_client_certificate(response):CODE
LOWtests/test_ssl.py159def test_client_certificate_with_custom_ca(CODE
LOWtests/test_ssl.py179def test_custom_ca_without_client_certificate(tmp_path, certificates, tls_server):CODE
LOWtests/test_ssl.py185def test_client_certificate_with_verification_disabled(tmp_path, certificates, tls_server):CODE
LOWtests/test_ssl.py197def test_client_certificate_with_environment_ca(CODE
LOWtests/test_ssl.py210def test_untrusted_server_is_rejected(tmp_path, tls_server, monkeypatch):CODE
LOWtests/test_ssl.py218def test_encrypted_combined_certificate_with_environment_ca(CODE
LOWtests/test_ssl.py233def test_custom_ca_still_checks_hostname(tmp_path, certificates, tls_server):CODE
LOWtests/test_variables_editor.py27def test_add_first_variable_and_replace_duplicate_name(app):CODE
LOWtests/test_variables_editor.py60def test_secret_edit_cancel_copy_and_save_use_real_value(app):CODE
LOWtests/test_variables_editor.py93def test_invalid_name_keeps_the_draft_without_adding_a_row(app):CODE
LOWtests/test_variables_editor.py107def test_reload_updates_filtered_table_and_keeps_an_edit_draft(app):CODE
LOWtests/test_variables_editor.py132def test_undo_preserves_type_and_survives_reopening(app):CODE
LOWtests/test_variables_editor.py148def test_revert_uses_the_current_environment_file(app, tmp_path):CODE
LOWtests/test_variables_editor.py168def test_switching_rows_keeps_the_new_row_in_edit_mode(app):CODE
170 more matches not shown…
Empty Error Handlers9 hits · 45 pts
SeverityFileLineSnippetContext
HIGHsrc/posting/app.py965except NoMatches:CODE
HIGHsrc/posting/app.py1413except NoMatches:CODE
HIGHsrc/posting/app.py659except NoMatches:CODE
HIGHsrc/posting/app.py667except Exception:CODE
HIGHsrc/posting/__main__.py28except OSError:CODE
HIGHsrc/posting/__main__.py39except OSError:CODE
HIGHsrc/posting/widgets/datatable.py216except CellDoesNotExist:CODE
HIGHsrc/posting/widgets/datatable.py224except CellDoesNotExist:CODE
HIGHsrc/posting/widgets/response/response_area.py119except json.JSONDecodeError:CODE
Unused Imports38 hits · 38 pts
SeverityFileLineSnippetContext
LOWsrc/posting/variables.py1CODE
LOWsrc/posting/method_styles.py10CODE
LOWsrc/posting/__init__.py3CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py10CODE
LOWsrc/posting/__init__.py21CODE
LOWsrc/posting/yaml.py1CODE
LOWsrc/posting/yaml.py1CODE
LOWsrc/posting/yaml.py5CODE
LOWsrc/posting/yaml.py7CODE
LOWsrc/posting/tuple_to_multidict.py1CODE
LOWsrc/posting/environments.py9CODE
LOWsrc/posting/collection.py1CODE
LOWsrc/posting/scripts.py1CODE
LOWsrc/posting/save_request.py1CODE
LOWsrc/posting/commands.py12CODE
LOWsrc/posting/widgets/load_env_file_dialog.py3CODE
LOWsrc/posting/widgets/load_env_file_dialog.py22CODE
LOWsrc/posting/widgets/datatable.py12CODE
LOWsrc/posting/widgets/variables_editor.py1CODE
LOWsrc/posting/widgets/collection/new_request_modal.py18CODE
LOWsrc/posting/widgets/response/script_output.py9CODE
LOWsrc/posting/widgets/request/request_auth.py7CODE
LOWsrc/posting/widgets/request/request_editor.py2CODE
LOWsrc/posting/widgets/request/request_editor.py3CODE
LOWsrc/posting/widgets/request/request_editor.py4CODE
LOWsrc/posting/widgets/request/request_editor.py19CODE
LOWsrc/posting/widgets/request/request_editor.py21CODE
LOWsrc/posting/widgets/request/request_editor.py26CODE
LOWsrc/posting/importing/open_api.py1CODE
LOWsrc/posting/importing/postman.py1CODE
Excessive Try-Catch Wrapping33 hits · 34 pts
SeverityFileLineSnippetContext
LOW⚡src/posting/themes.py335 except Exception as e:CODE
LOW⚡src/posting/themes.py345 except Exception as e:CODE
LOW⚡src/posting/themes.py350 except Exception:CODE
LOWsrc/posting/user_host.py14 except Exception:CODE
MEDIUMsrc/posting/user_host.py9def get_user_host_string() -> Text:CODE
LOWsrc/posting/collection.py542 except Exception as e:CODE
MEDIUMsrc/posting/app.py370def send_request(self) -> None:CODE
LOWsrc/posting/app.py315 except Exception as e:CODE
LOWsrc/posting/app.py353 except Exception as e:CODE
LOWsrc/posting/app.py415 except Exception:CODE
LOWsrc/posting/app.py462 except Exception:CODE
LOWsrc/posting/app.py496 except Exception:CODE
LOWsrc/posting/app.py525 except Exception as e:CODE
LOWsrc/posting/app.py667 except Exception:CODE
LOWsrc/posting/app.py704 except Exception:CODE
LOWsrc/posting/app.py1081 except Exception:CODE
LOWsrc/posting/app.py1491 except Exception as e:CODE
LOWsrc/posting/app.py1499 except Exception as e:CODE
LOWsrc/posting/app.py1601 except Exception:CODE
LOWsrc/posting/app.py1631 except Exception as exc:CODE
LOWsrc/posting/app.py1674 except Exception as exc:CODE
LOWsrc/posting/urls.py37 except Exception:CODE
LOWsrc/posting/urls.py65 except Exception:CODE
LOWsrc/posting/urls.py101 except Exception:CODE
LOWsrc/posting/urls.py113 except Exception:CODE
LOWsrc/posting/__main__.py161 except Exception:CODE
MEDIUMsrc/posting/__main__.py162 console.print("An error occurred during the import process.", style="red")CODE
LOWsrc/posting/history.py96 except Exception:CODE
LOWsrc/posting/widgets/collection/browser.py422 except Exception as e:CODE
LOWsrc/posting/widgets/collection/browser.py526 except Exception:CODE
LOWsrc/posting/importing/curl.py233 except Exception:CODE
LOWsrc/posting/importing/curl.py254 except Exception:CODE
LOWsrc/posting/importing/curl.py262 except Exception:CODE
Modern Structural Boilerplate19 hits · 21 pts
SeverityFileLineSnippetContext
LOWsrc/posting/variables.py73def update_variables(new_variables: dict[str, object]) -> None:CODE
LOWsrc/posting/__init__.py24__all__ = [CODE
LOWsrc/posting/yaml.py23__all__ = ["load", "dump", "Loader", "Dumper"]CODE
LOWsrc/posting/highlighters.py79 def set_path_params(self, params: dict[str, str]) -> None:CODE
LOWsrc/posting/scripts.py59 def set_variable(self, name: str, value: object) -> None:CODE
LOWsrc/posting/widgets/text_area.py116 def update_language(self, event: Select.Changed) -> None:CODE
LOWsrc/posting/widgets/text_area.py124 def update_soft_wrap(self, event: Checkbox.Changed) -> None:CODE
LOW⚡src/posting/widgets/text_area.py635 def update_selection(self, event: TextArea.SelectionChanged) -> None:CODE
LOW⚡src/posting/widgets/text_area.py639 def update_visual_mode(self, event: ReadOnlyTextArea.VisualModeToggled) -> None:CODE
LOW⚡src/posting/widgets/text_area.py643 def update_language(self, event: TextAreaFooter.LanguageChanged) -> None:CODE
LOW⚡src/posting/widgets/text_area.py647 def update_soft_wrap(self, event: TextAreaFooter.SoftWrapChanged) -> None:CODE
LOWsrc/posting/widgets/collection/browser.py645 def update_currently_open_node(self, request_model: RequestModel) -> None:CODE
LOWsrc/posting/widgets/collection/history.py159 def update_detail(self) -> None:STRING
LOW⚡src/posting/widgets/response/script_output.py50 def set_setup_status(self, status: ScriptStatus) -> None:STRING
LOW⚡src/posting/widgets/response/script_output.py55 def set_request_status(self, status: ScriptStatus) -> None:CODE
LOW⚡src/posting/widgets/response/script_output.py60 def set_response_status(self, status: ScriptStatus) -> None:CODE
LOW⚡src/posting/widgets/response/script_output.py65 def set_label_status(self, label_id: str, status: ScriptStatus) -> None:CODE
LOWsrc/posting/widgets/request/request_auth.py47 def set_values(self, username: str, password: str) -> None:STRING
LOWsrc/posting/widgets/request/request_auth.py101 def set_values(self, token: str) -> None:STRING
Deep Nesting23 hits · 20 pts
SeverityFileLineSnippetContext
LOWtests/test_text_area_completion.py26CODE
LOWtests/test_text_area_completion.py29CODE
LOWsrc/posting/themes.py314CODE
LOWsrc/posting/help_screen.py127CODE
LOWsrc/posting/collection.py218CODE
LOWsrc/posting/collection.py500CODE
LOWsrc/posting/app.py287CODE
LOWsrc/posting/app.py635CODE
LOWsrc/posting/app.py745CODE
LOWsrc/posting/app.py1172CODE
LOWsrc/posting/app.py1474CODE
LOWsrc/posting/app.py1180CODE
LOWsrc/posting/__main__.py108CODE
LOWsrc/posting/history.py55CODE
LOWsrc/posting/widgets/key_value.py87CODE
LOWsrc/posting/widgets/text_area.py264CODE
LOWsrc/posting/widgets/response/response_trace.py50CODE
LOWsrc/posting/widgets/response/script_output.py65CODE
LOWsrc/posting/widgets/response/response_area.py179CODE
LOWsrc/posting/importing/curl.py27CODE
LOWsrc/posting/importing/curl.py196CODE
LOWsrc/posting/importing/open_api.py382CODE
LOWsrc/posting/importing/open_api.py360CODE
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHsrc/posting/variables.py135 Extract the variable name from a variable reference. Args: variable_text: The text containing the variSTRING
HIGHsrc/posting/scripts.py124 Execute a Python script from the given path and extract a specified function. Uses caching to prevent multiple STRING
Fake / Example Data6 hits · 7 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_curl_export.py38 body=RequestBody(content='{"name": "John Doe", "email": "john@example.com"}'),CODE
LOW⚡tests/test_curl_export.py41 expected = 'curl \\\n -X POST \\\n -d \'{"name": "John Doe", "email": "john@example.com"}\' \\\n \'https://examplCODE
LOWtests/test_curl_export.py163 FormItem(name="name", value="John Doe"),CODE
LOWtests/test_curl_export.py206 body=RequestBody(content='{"name": "John Doe", "email": "john@example.com"}'),CODE
LOW…-collections/jsonplaceholder/users/create.posting.yaml8 "name": "John Doe",CODE
LOWdocs/guide/index.md141 "name": "John Doe",CODE
Redundant / Tautological Comments5 hits · 6 pts
SeverityFileLineSnippetContext
LOWsrc/posting/files.py11 # Check if the filename is empty or NoneCOMMENT
LOWsrc/posting/files.py19 # Check if the filename is too long (255 characters is a common limit)COMMENT
LOWsrc/posting/scripts.py143 # Check if the script is within the collection rootCOMMENT
LOWsrc/posting/widgets/collection/browser.py522 # Check if the scheme and netloc are presentCOMMENT
LOWsrc/posting/widgets/collection/new_request_modal.py278 # Check if a request with the same name already exists in the collection.STRING
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMsrc/posting/__main__.py149 # Create the environment file in the collection directory.COMMENT
MEDIUMsrc/posting/importing/curl.py47 # Define the arguments to parseCOMMENT
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWsrc/posting/widgets/confirmation.py39CODE
LOWsrc/posting/widgets/variable_autocomplete.py19CODE
LOWsrc/posting/widgets/text_area.py422CODE
Verbosity Indicators1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…e-importable-collections/Fixer.postman_collection.json5 "description": "Powered by 15+ exchange rate data sources, the Fixer API is capable of delivering real-time exchange rCODE
Structural Annotation Overuse1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…e-importable-collections/Fixer.postman_collection.json5 "description": "Powered by 15+ exchange rate data sources, the Fixer API is capable of delivering real-time exchange rCODE
AI Slop Vocabulary1 hit · 0 pts
SeverityFileLineSnippetContext
LOWsrc/posting/widgets/confirmation.py83 # It's enough to just call focus_next here as there are only two buttons.STRING