Repository Analysis

ArchiveBox/ArchiveBox

🗃 Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more...

17.0 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of ArchiveBox/ArchiveBox, a Python project with 27,925 GitHub stars. SynthScan v2.0 examined 190,101 lines of code across 626 source files, recording 2297 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 17.0 places this repository in the Moderate 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).

17.0
Adjusted Score
17.0
Raw Score
100%
Time Factor
2026-07-01
Last Push
27.9K
Stars
Python
Language
190.1K
Lines of Code
626
Files
2.3K
Pattern Hits
2026-07-14
Scan Date
0.20
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

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.

CRITICAL 8HIGH 117MEDIUM 208LOW 1964

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 2297 distinct pattern matches across 22 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.

Hyper-Verbose Identifiers1381 hits · 1309 pts
SeverityFileLineSnippetContext
LOWold/TODO_hook_statemachine_cleanup.md127 def has_running_background_hooks(self) -> bool:CODE
LOWold/TODO_fs_migrations.md305def reconcile_with_index_json(self):CODE
LOWold/TODO_fs_migrations.md465def move_directory_to_invalid(snapshot_dir: Path):CODE
LOWold/TODO_fs_migrations.md113def get_storage_path_for_version(self, version: str) -> Path:CODE
LOWold/TODO_fs_migrations.md284def _detect_fs_version_from_index(data: dict) -> str:CODE
LOWold/TODO_fs_migrations.md368def _merge_archive_results_from_index(self, index_data: dict):CODE
LOWold/TODO_fs_migrations.md387def _create_archive_result_if_missing(self, result_data: dict, existing: dict):CODE
LOWold/TODO_fs_migrations.md489def find_and_merge_duplicates(cls) -> int:CODE
LOWold/TODO_fs_migrations.md662def _cleanup_old_migration_dir(self, old_dir: Path):CODE
LOWold/TODO_fs_migrations.md787def import_orphans_from_archive(resume_from: str = None, batch_size: int = 100) -> dict:CODE
LOWold/TODO_fs_migrations.md891def process_filtered_snapshots(CODE
LOWold/TODO_fs_migrations.md1135def fix_invalid_folder_locations(out_dir: Path = DATA_DIR) -> Tuple[List[str], List[str]]:CODE
LOWold/TODO_process_tracking.md1108def has_running_background_hooks(self) -> bool:CODE
LOWold/TODO_process_tracking.md1126def has_running_background_hooks(self) -> bool:CODE
LOWold/TODO_process_tracking.md1828def stop_existing_supervisord_process():CODE
LOWold/TODO_process_tracking.md1840def start_new_supervisord_process():CODE
LOWold/TODO_process_tracking.md1852def stop_existing_supervisord_process():CODE
LOWold/TODO_archivebox_jsonl_cli.md591def assert_jsonl_contains_type(stdout: str, record_type: str, min_count: int = 1):CODE
LOWold/TODO_archivebox_jsonl_cli.md600def assert_jsonl_pass_through(stdout: str, input_records: List[Dict[str, Any]]):CODE
LOWold/TODO_archivebox_jsonl_cli.md662def create_test_snapshot_json(url: str = None, **kwargs) -> Dict[str, Any]:CODE
LOWold/archivebox.ts6051// async function setupScreenrecordingWithAudio(page, wss) {COMMENT
LOWold/archivebox.ts1039async function getChromeExtensionsFromPersona({CHROME_EXTENSIONS, CHROMEWEBSTORE_EXTENSIONS_DIR}) {CODE
LOWold/archivebox.ts1061async function getChromeExtensionsFromCache({browser, extensions=CHROME_EXTENSIONS, extensions_dir=CHROMEWEBSTORE_EXTENSCODE
LOWold/archivebox.ts1715async function collectSnapshotDirVersionFiles(snap_dir) {CODE
LOWold/archivebox.ts1825async function symlinkBestSnapshotResults(snap_dir) {CODE
LOWold/archivebox.ts3380async function saveAIQualityAssuranceResult(page, {original_url, version}) {CODE
LOWold/TODO_hook_architecture.md1427def check_background_hook_completed(archiveresult: 'ArchiveResult') -> bool:CODE
LOWold/TODO_hook_architecture.md1583def test_background_hook_detection():CODE
LOWold/TODO_hook_architecture.md1588def test_find_binary_by_abspath():CODE
LOWold/TODO_hook_architecture.md1627def test_foreground_hook_execution(snapshot):STRING
LOWold/TODO_hook_architecture.md1646def test_background_hook_execution(snapshot):STRING
LOWold/TODO_hook_architecture.md1667def test_background_hook_finalization(snapshot):STRING
LOWarchivebox/misc/util.py25def filter_queryset_by_uuid_substring(queryset, slug: str, field: str = "id"):CODE
LOWarchivebox/misc/util.py248def split_comma_separated_urls(url: str):CODE
LOWarchivebox/misc/checks.py26def _migration_interrupt_message(*, before_apply: bool = False) -> str:CODE
LOWarchivebox/misc/checks.py38def _exit_on_migration_interrupt():CODE
LOWarchivebox/misc/checks.py210def check_not_inside_source_dir():CODE
LOWarchivebox/misc/checks.py220def check_data_dir_permissions(config=None, **config_kwargs):CODE
LOWarchivebox/misc/logging_util.py455def printable_dependency_version(name: str, dependency: dict) -> str:CODE
LOWarchivebox/misc/serve_static.py102def _render_mhtml_preview_document(filename: str, output_path: str) -> str:CODE
LOWarchivebox/misc/serve_static.py121def _format_direntry_timestamp(stat_result: os.stat_result) -> str:CODE
LOWarchivebox/misc/serve_static.py169def _build_directory_zip_response(CODE
LOWarchivebox/misc/serve_static.py259async def _stream_ranged_file_async(ranged_file: "RangedFileReader"):CODE
LOWarchivebox/misc/serve_static.py361def _extract_markdown_candidate(text: str) -> str:CODE
LOWarchivebox/misc/serve_static.py385def _render_text_preview_document(text: str, title: str) -> str:CODE
LOWarchivebox/misc/serve_static.py435def _render_image_preview_document(image_url: str, title: str) -> str:CODE
LOWarchivebox/misc/serve_static.py485def _render_markdown_fallback(text: str) -> str:CODE
LOWarchivebox/misc/serve_static.py640def _render_markdown_document(markdown_text: str) -> str:CODE
LOWarchivebox/misc/serve_static.py660def _is_risky_replay_document(fullpath: Path, content_type: str) -> bool:CODE
LOWarchivebox/misc/serve_static.py677def _apply_archive_replay_headers(CODE
LOWarchivebox/misc/serve_static.py718def serve_static_with_byterange_support(request, path, document_root=None, show_indexes=False, is_archive_replay: bool =CODE
LOWarchivebox/core/admin_archiveresults.py39def build_abx_dl_display_command(result: ArchiveResult) -> str:CODE
LOWarchivebox/core/admin_archiveresults.py50def build_abx_dl_replay_command(result: ArchiveResult, config=None) -> str:CODE
LOWarchivebox/core/admin_archiveresults.py84def render_archiveresults_list(archiveresults_qs, limit=50, config=None):CODE
LOWarchivebox/core/admin_archiveresults.py341 def get_parent_object_from_request(self, request):STRING
LOWarchivebox/core/models.py791 def get_delete_after_config_value(self):CODE
LOWarchivebox/core/models.py797 def missing_delete_at_candidates(cls):CODE
LOWarchivebox/core/models.py803 def is_archivebox_internal_url(cls, url: str, *, config: Mapping[str, Any] | Any | None = None) -> bool:CODE
LOWarchivebox/core/models.py2071 def move_directory_to_invalid(snapshot_dir: Path):CODE
LOWarchivebox/core/models.py3462 def get_detail_page_auxiliary_items(CODE
1321 more matches not shown…
Decorative Section Separators175 hits · 532 pts
SeverityFileLineSnippetContext
MEDIUMold/TODO_fs_migrations.md301# =========================================================================COMMENT
MEDIUMold/TODO_fs_migrations.md303# =========================================================================COMMENT
MEDIUMold/TODO_fs_migrations.md460# =========================================================================COMMENT
MEDIUMold/TODO_fs_migrations.md462# =========================================================================COMMENT
MEDIUMold/TODO_fs_migrations.md79# =========================================================================COMMENT
MEDIUMold/TODO_fs_migrations.md81# =========================================================================COMMENT
MEDIUMold/TODO_fs_migrations.md145# =========================================================================COMMENT
MEDIUMold/TODO_fs_migrations.md147# =========================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md467# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md469# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md532# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md534# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md574# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md576# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md619# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md621# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md636# =============================================================================COMMENT
MEDIUMold/TODO_archivebox_jsonl_cli.md638# =============================================================================COMMENT
MEDIUMarchivebox/core/models.py1269 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py1271 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py2066 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py2068 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3458 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3460 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py286 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py288 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py390 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py392 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py484 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py486 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py1055 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py1057 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py1327 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py1329 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py1611 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py1613 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py2168 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py2170 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3020 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3022 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3081 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3083 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3133 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3135 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3329 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3331 # =========================================================================COMMENT
MEDIUMarchivebox/core/models.py3532# =============================================================================COMMENT
MEDIUMarchivebox/core/models.py3534# =============================================================================COMMENT
MEDIUMarchivebox/core/models.py4804# =============================================================================COMMENT
MEDIUMarchivebox/core/models.py4806# =============================================================================COMMENT
MEDIUMarchivebox/plugins/hooks.py571# =============================================================================COMMENT
MEDIUMarchivebox/plugins/hooks.py573# =============================================================================COMMENT
MEDIUMarchivebox/plugins/hooks.py83# =============================================================================COMMENT
MEDIUMarchivebox/plugins/hooks.py85# =============================================================================COMMENT
MEDIUMarchivebox/tests/conftest.py123# =============================================================================COMMENT
MEDIUMarchivebox/tests/conftest.py125# =============================================================================COMMENT
MEDIUMarchivebox/tests/conftest.py294# =============================================================================COMMENT
MEDIUMarchivebox/tests/conftest.py296# =============================================================================COMMENT
MEDIUMarchivebox/tests/conftest.py1555# =============================================================================COMMENT
MEDIUMarchivebox/tests/conftest.py1557# =============================================================================COMMENT
115 more matches not shown…
Cross-Language Confusion78 hits · 460 pts
SeverityFileLineSnippetContext
HIGHarchivebox/misc/checks.py113 print(" docker compose pull && docker compose up -d", file=sys.stderr)CODE
HIGHarchivebox/misc/hashing.py253# "num_subpaths": null,COMMENT
HIGHarchivebox/core/widgets.py532 return window.updateHiddenField_id_config || null;CODE
HIGHarchivebox/core/widgets.py532 return window.updateHiddenField_id_config || null;CODE
HIGHarchivebox/core/widgets.py538 return null;CODE
HIGHarchivebox/core/widgets.py542 return keyInput && keyInput.value.trim() === key;CODE
HIGHarchivebox/core/widgets.py544 return matches.length ? matches[0] : null;CODE
HIGHarchivebox/core/widgets.py551 return rows ? rows.lastElementChild : null;CODE
HIGHarchivebox/core/widgets.py553 return null;CODE
HIGHarchivebox/core/widgets.py618 if (!domain || seen[domain]) {{CODE
HIGHarchivebox/core/widgets.py623 domains.push(domain);CODE
HIGHarchivebox/core/widgets.py627 var hostAndPort = String(parsed.host || parsed.hostname || '').toLowerCase();CODE
HIGHarchivebox/core/widgets.py629 if (!hostAndPort || seen[pathKey]) {{CODE
HIGHarchivebox/core/widgets.py633 paths.push({{ host: hostAndPort, path: pathname }});CODE
HIGHarchivebox/core/widgets.py134 onkeypress="if(event.key==='Enter' || event.keyCode===13 || event.key===' ' || event.code==='Space' |CODE
HIGHarchivebox/core/widgets.py144 var autocompleteTimeout_{widget_id} = null;CODE
HIGHarchivebox/core/widgets.py181 if (!(options && options.skipHiddenUpdate)) {{CODE
HIGHarchivebox/core/widgets.py325 if (isEnter || isSpace || isComma) {{CODE
HIGHarchivebox/core/widgets.py335 }} else if (event.key === 'Backspace' && !value && currentTags_{widget_id}.length > 0) {{CODE
HIGHarchivebox/core/widgets.py349 if (!query || query.length < 1) {{CODE
HIGHarchivebox/core/widgets.py471 if (!trimmed || trimmed.charAt(0) === '#') {{CODE
HIGHarchivebox/core/widgets.py513 if (!pathname || pathname === '/') {{CODE
HIGHarchivebox/core/widgets.py607 var seen = Object.create(null);CODE
HIGHarchivebox/core/admin_snapshots.py998 "this.dataset.fallbacks && this.dataset.fallbacks.length ? "CODE
HIGHarchivebox/core/admin_snapshots.py1025 "this.dataset.fallbacks && this.dataset.fallbacks.length ? "CODE
HIGHarchivebox/tests/test_server_security_browser.py37 finalUrl: null,CODE
HIGHarchivebox/tests/test_server_security_browser.py38 status: null,CODE
HIGHarchivebox/tests/test_server_security_browser.py39 error: null,CODE
HIGHarchivebox/tests/test_server_security_browser.py48 result.status = response ? response.status() : null;CODE
HIGHarchivebox/tests/test_server_security_browser.py94 consoleMessages.push({type: message.type(), text: message.text()});CODE
HIGHarchivebox/tests/test_server_security_browser.py97 consoleMessages.push({type: "pageerror", text: String(error)});CODE
HIGHarchivebox/tests/test_server_security_browser.py100 requestFailures.push({CODE
HIGHarchivebox/tests/test_server_security_browser.py112 () => window.__dangerousScriptRan !== true || window.__probeResults !== undefined,CODE
HIGHarchivebox/tests/test_server_security_browser.py112 () => window.__dangerousScriptRan !== true || window.__probeResults !== undefined,CODE
HIGHarchivebox/tests/test_server_security_browser.py119 probeResults: window.__probeResults || null,CODE
HIGHarchivebox/tests/test_server_security_browser.py119 probeResults: window.__probeResults || null,CODE
HIGHarchivebox/tests/test_server_security_browser.py127 status: response ? response.status() : null,CODE
HIGHarchivebox/tests/test_server_security_browser.py129 contentSecurityPolicy: response ? response.headers()["content-security-policy"] || null : null,CODE
HIGHarchivebox/tests/test_server_security_browser.py130 archiveboxSecurityMode: response ? response.headers()["x-archivebox-security-mode"] || null : null,CODE
HIGHarchivebox/tests/test_server_security_browser.py224 consoleMessages.push({type: message.type(), text: message.text()});CODE
HIGHarchivebox/tests/test_server_security_browser.py227 consoleMessages.push({type: "pageerror", text: String(error)});CODE
HIGHarchivebox/tests/test_server_security_browser.py230 requestFailures.push({CODE
HIGHarchivebox/tests/test_server_security_browser.py166 return body || root || "";CODE
HIGHarchivebox/tests/test_server_security_browser.py186 lastState.push({CODE
HIGHarchivebox/tests/test_server_security_browser.py193 if (previewFrame && (frame === previewFrame || isDescendantOf(frame, previewFrame)) && text.includes(expectedText)CODE
HIGHarchivebox/tests/test_server_security_browser.py244 status: response ? response.status() : null,CODE
HIGHarchivebox/tests/test_hooks.py9 sudo -u testuser bash -c 'source .venv/bin/activate && python -m pytest archivebox/tests/test_hooks.py -v'STRING
HIGHarchivebox/crawls/admin.py314 var cookieValue = null;STRING
HIGHarchivebox/base_models/admin.py170 if (!meta || meta.type === undefined || meta.type === null) {{CODE
HIGHarchivebox/base_models/admin.py170 if (!meta || meta.type === undefined || meta.type === null) {{CODE
HIGHarchivebox/base_models/admin.py178 return null;CODE
HIGHarchivebox/base_models/admin.py224 if (meta.minimum !== undefined || meta.maximum !== undefined) {{CODE
HIGHarchivebox/base_models/admin.py224 if (meta.minimum !== undefined || meta.maximum !== undefined) {{CODE
HIGHarchivebox/base_models/admin.py226 if (meta.minimum !== undefined) bounds.push('min ' + meta.minimum);CODE
HIGHarchivebox/base_models/admin.py226 if (meta.minimum !== undefined) bounds.push('min ' + meta.minimum);CODE
HIGHarchivebox/base_models/admin.py227 if (meta.maximum !== undefined) bounds.push('max ' + meta.maximum);CODE
HIGHarchivebox/base_models/admin.py227 if (meta.maximum !== undefined) bounds.push('max ' + meta.maximum);CODE
HIGHarchivebox/base_models/admin.py352 return left === right || JSON.stringify(left) === JSON.stringify(right);CODE
HIGHarchivebox/base_models/admin.py359 if (typeName && meta && meta.key && isRegexConfigKey_{widget_id}(meta.key)) {{CODE
HIGHarchivebox/base_models/admin.py363 if (typeName === 'string' && meta && meta.key && meta.key.endsWith('_BINARY')) {{CODE
18 more matches not shown…
Excessive Try-Catch Wrapping211 hits · 223 pts
SeverityFileLineSnippetContext
LOWbin/test_plugins.sh71except Exception:CODE
MEDIUMold/TODO_fs_migrations.md252def is_valid_timestamp(ts):CODE
LOWold/TODO_fs_migrations.md110 except Exception:CODE
LOWold/TODO_fs_migrations.md673 except Exception as e:CODE
LOWold/TODO_fs_migrations.md1153 except Exception:CODE
LOWold/TODO_process_tracking.md1405 except Exception as e:CODE
LOWold/TODO_hook_architecture.md145 except Exception:CODE
LOWold/TODO_hook_architecture.md232 except Exception as e:CODE
LOWold/TODO_hook_architecture.md1102 except Exception as e:CODE
LOWdocs/conf.py49except Exception:CODE
LOW.github/workflows/pip.yml72 except Exception:CODE
LOW.github/workflows/docker.yml74 except Exception:CODE
LOWarchivebox/misc/db.py75 except Exception:CODE
LOWarchivebox/misc/db.py89 except Exception:CODE
LOWarchivebox/misc/db.py95 except Exception:CODE
LOWarchivebox/misc/db.py104 except Exception:CODE
LOWarchivebox/misc/db.py359 except Exception as err:CODE
LOWarchivebox/misc/util.py522 except Exception:CODE
LOWarchivebox/misc/util.py527 except Exception:CODE
LOWarchivebox/misc/util.py532 except Exception:CODE
LOWarchivebox/misc/checks.py49 except Exception:CODE
LOWarchivebox/misc/checks.py272 except Exception:CODE
LOWarchivebox/misc/checks.py277 except Exception:CODE
LOWarchivebox/misc/checks.py325 except Exception as e:CODE
LOWarchivebox/misc/checks.py378 except Exception as e:CODE
MEDIUMarchivebox/misc/checks.py46def handle_shutdown(_signum, _frame):CODE
LOWarchivebox/misc/logging_util.py72 except Exception:CODE
LOWarchivebox/misc/toml_util.py32 except Exception:CODE
LOWarchivebox/misc/toml_util.py37 except Exception:CODE
LOWarchivebox/misc/toml_util.py101 except Exception:CODE
LOWarchivebox/misc/serve_static.py52 except Exception:CODE
LOWarchivebox/misc/serve_static.py493 except Exception:CODE
LOWarchivebox/misc/serve_static.py671 except Exception:CODE
LOWarchivebox/misc/serve_static.py838 except Exception:CODE
LOWarchivebox/misc/serve_static.py866 except Exception:CODE
LOWarchivebox/misc/serve_static.py894 except Exception:CODE
LOWarchivebox/misc/serve_static.py927 except Exception:CODE
LOWarchivebox/misc/serve_static.py980 except Exception:CODE
LOWarchivebox/core/admin_archiveresults.py131 except Exception:CODE
LOWarchivebox/core/models.py1264 except Exception as e:CODE
LOWarchivebox/core/models.py235 except Exception:CODE
LOWarchivebox/core/models.py1250 except Exception as e:CODE
LOWarchivebox/core/models.py1300 except Exception:CODE
LOWarchivebox/core/models.py2091 except Exception:CODE
LOWarchivebox/core/models.py2116 except Exception:CODE
LOWarchivebox/core/models.py2152 except Exception:CODE
LOWarchivebox/core/models.py2381 except Exception:CODE
LOWarchivebox/core/models.py2542 except Exception:CODE
LOWarchivebox/core/models.py2559 except Exception:CODE
LOWarchivebox/core/models.py4664 except Exception:CODE
LOWarchivebox/core/settings_logging.py100 except Exception:CODE
LOWarchivebox/core/admin_snapshots.py518 except Exception as e:CODE
LOWarchivebox/core/admin_snapshots.py1357 except Exception:CODE
MEDIUMarchivebox/core/admin_snapshots.py1321def _get_expected_hook_total(self, obj) -> int:CODE
LOWarchivebox/core/settings.py382except Exception:CODE
LOWarchivebox/core/settings.py389 except Exception:CODE
LOWarchivebox/core/takeover_util.py134 except Exception:CODE
LOWarchivebox/core/views.py172 except Exception:CODE
LOWarchivebox/core/views.py867 except Exception:CODE
MEDIUMarchivebox/core/templatetags/core_tags.py94def _count_media_files(result) -> int:CODE
151 more matches not shown…
Cross-File Repetition35 hits · 175 pts
SeverityFileLineSnippetContext
HIGHarchivebox/tests/test_cli_add.py0<?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>archivebox rss import fixture</title> <link>STRING
HIGHarchivebox/tests/test_api_v1_cli_add.py0<?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>archivebox rss import fixture</title> <link>STRING
HIGHarchivebox/tests/test_ui_add_view_runtime.py0<?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>archivebox rss import fixture</title> <link>STRING
HIGHarchivebox/tests/test_cli_add.py0<!doctype netscape-bookmark-file-1> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>bookmarksSTRING
HIGHarchivebox/tests/test_api_v1_cli_add.py0<!doctype netscape-bookmark-file-1> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>bookmarksSTRING
HIGHarchivebox/tests/test_ui_add_view_runtime.py0<!doctype netscape-bookmark-file-1> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>bookmarksSTRING
HIGHarchivebox/tests/test_cli_add.py0<!doctype html> <html> <head><title>dom import fixture</title></head> <body> <a href="https://www.iana.org/help/example-STRING
HIGHarchivebox/tests/test_api_v1_cli_add.py0<!doctype html> <html> <head><title>dom import fixture</title></head> <body> <a href="https://www.iana.org/help/example-STRING
HIGHarchivebox/tests/test_ui_add_view_runtime.py0<!doctype html> <html> <head><title>dom import fixture</title></head> <body> <a href="https://www.iana.org/help/example-STRING
HIGHarchivebox/tests/test_cli_add.py0<?xml version="1.0"?> <!doctype rss [ <!entity localfile system "file:///etc/hosts"> ]> <rss version="2.0" xmlns:xi="httSTRING
HIGHarchivebox/tests/test_api_v1_cli_add.py0<?xml version="1.0"?> <!doctype rss [ <!entity localfile system "file:///etc/hosts"> ]> <rss version="2.0" xmlns:xi="httSTRING
HIGHarchivebox/tests/test_ui_add_view_runtime.py0<?xml version="1.0"?> <!doctype rss [ <!entity localfile system "file:///etc/hosts"> ]> <rss version="2.0" xmlns:xi="httSTRING
HIGHarchivebox/tests/test_cli_persona.py0tests for archivebox binary command. todo: expand beyond command discovery into create/list/update/delete behavior.STRING
HIGHarchivebox/tests/test_cli_tag.py0tests for archivebox binary command. todo: expand beyond command discovery into create/list/update/delete behavior.STRING
HIGHarchivebox/tests/test_cli_binary.py0tests for archivebox binary command. todo: expand beyond command discovery into create/list/update/delete behavior.STRING
HIGHarchivebox/cli/archivebox_archiveresult.py0list personas as jsonl with optional filters. exit codes: 0: success (even if no results)STRING
HIGHarchivebox/cli/archivebox_process.py0list personas as jsonl with optional filters. exit codes: 0: success (even if no results)STRING
HIGHarchivebox/cli/archivebox_tag.py0list personas as jsonl with optional filters. exit codes: 0: success (even if no results)STRING
HIGHarchivebox/cli/archivebox_binary.py0list personas as jsonl with optional filters. exit codes: 0: success (even if no results)STRING
HIGHarchivebox/cli/archivebox_snapshot.py0list personas as jsonl with optional filters. exit codes: 0: success (even if no results)STRING
HIGHarchivebox/cli/archivebox_machine.py0list personas as jsonl with optional filters. exit codes: 0: success (even if no results)STRING
HIGHarchivebox/cli/archivebox_crawl.py0list personas as jsonl with optional filters. exit codes: 0: success (even if no results)STRING
HIGHarchivebox/cli/archivebox_persona.py0list personas as jsonl with optional filters. exit codes: 0: success (even if no results)STRING
HIGHarchivebox/cli/archivebox_archiveresult.py0update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only specSTRING
HIGHarchivebox/cli/archivebox_tag.py0update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only specSTRING
HIGHarchivebox/cli/archivebox_binary.py0update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only specSTRING
HIGHarchivebox/cli/archivebox_snapshot.py0update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only specSTRING
HIGHarchivebox/cli/archivebox_crawl.py0update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only specSTRING
HIGHarchivebox/cli/archivebox_persona.py0update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only specSTRING
HIGHarchivebox/cli/archivebox_archiveresult.py0delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missingSTRING
HIGHarchivebox/cli/archivebox_tag.py0delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missingSTRING
HIGHarchivebox/cli/archivebox_binary.py0delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missingSTRING
HIGHarchivebox/cli/archivebox_snapshot.py0delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missingSTRING
HIGHarchivebox/cli/archivebox_crawl.py0delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missingSTRING
HIGHarchivebox/cli/archivebox_persona.py0delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missingSTRING
Deep Nesting134 hits · 102 pts
SeverityFileLineSnippetContext
LOWarchivebox/misc/db.py190CODE
LOWarchivebox/misc/system.py19CODE
LOWarchivebox/misc/system.py57CODE
LOWarchivebox/misc/util.py495CODE
LOWarchivebox/misc/checks.py98CODE
LOWarchivebox/misc/logging_util.py277CODE
LOWarchivebox/misc/hashing.py156CODE
LOWarchivebox/misc/serve_static.py485CODE
LOWarchivebox/misc/serve_static.py718CODE
LOWarchivebox/core/admin_archiveresults.py84CODE
LOWarchivebox/core/models.py165CODE
LOWarchivebox/core/models.py191CODE
LOWarchivebox/core/models.py1274CODE
LOWarchivebox/core/models.py1332CODE
LOWarchivebox/core/models.py1432CODE
LOWarchivebox/core/models.py1615CODE
LOWarchivebox/core/models.py1713CODE
LOWarchivebox/core/models.py1919CODE
LOWarchivebox/core/models.py1960CODE
LOWarchivebox/core/models.py2122CODE
LOWarchivebox/core/models.py2374CODE
LOWarchivebox/core/models.py2436CODE
LOWarchivebox/core/models.py2680CODE
LOWarchivebox/core/models.py3154CODE
LOWarchivebox/core/models.py4008CODE
LOWarchivebox/core/models.py4469CODE
LOWarchivebox/core/widgets.py63CODE
LOWarchivebox/core/widgets.py686CODE
LOWarchivebox/core/forms.py36CODE
LOWarchivebox/core/tag_util.py59CODE
LOWarchivebox/core/admin_site.py123CODE
LOWarchivebox/core/middleware.py116CODE
LOWarchivebox/core/middleware.py190CODE
LOWarchivebox/core/middleware.py120CODE
LOWarchivebox/core/middleware.py195CODE
LOWarchivebox/core/views.py475CODE
LOWarchivebox/core/views.py683CODE
LOWarchivebox/core/views.py1228CODE
LOWarchivebox/core/templatetags/core_tags.py125CODE
LOWarchivebox/core/sqlite_backend/base.py25CODE
LOWarchivebox/config/django.py34CODE
LOWarchivebox/config/paths.py44CODE
LOWarchivebox/config/common.py168CODE
LOWarchivebox/config/common.py459CODE
LOWarchivebox/config/common.py994CODE
LOWarchivebox/config/collection.py215CODE
LOWarchivebox/config/views.py62CODE
LOWarchivebox/config/views.py225CODE
LOWarchivebox/plugins/hooks.py244CODE
LOWarchivebox/plugins/hooks.py527CODE
LOWarchivebox/plugins/hooks.py576CODE
LOWarchivebox/plugins/discovery.py116CODE
LOWarchivebox/plugins/forms.py348CODE
LOWarchivebox/plugins/views.py261CODE
LOWarchivebox/tests/conftest.py542CODE
LOWarchivebox/tests/test_search.py700CODE
LOWarchivebox/tests/test_cli_run.py600CODE
LOWarchivebox/tests/test_cli_run.py1576CODE
LOWarchivebox/tests/test_cli_run.py620CODE
LOWarchivebox/tests/test_server_security_browser.py558CODE
74 more matches not shown…
Hallucination Indicators8 hits · 85 pts
SeverityFileLineSnippetContext
CRITICALarchivebox/core/admin_archiveresults.py17from django.core.exceptions import ValidationErrorCODE
CRITICALarchivebox/core/recovery_util.py18 from django.core.exceptions import ValidationErrorCODE
CRITICALarchivebox/tests/test_snapshot_url_length.py9from django.core.exceptions import ValidationErrorCODE
CRITICALarchivebox/crawls/models.py17from django.core.exceptions import ValidationErrorCODE
CRITICALarchivebox/api/v1_core.py18from django.core.exceptions import ValidationErrorCODE
CRITICALarchivebox/templates/static/jquery-3.7.1.slim.min.js2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):fCODE
CRITICALarchivebox/templates/static/jquery.min.js2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):fCODE
CRITICALarchivebox/services/snapshot_service.py7from django.core.exceptions import ValidationErrorCODE
Unused Imports65 hits · 63 pts
SeverityFileLineSnippetContext
LOWarchivebox/__main__.py6CODE
LOWarchivebox/misc/shell_welcome_message.py6CODE
LOWarchivebox/misc/shell_welcome_message.py7CODE
LOWarchivebox/misc/shell_welcome_message.py8CODE
LOWarchivebox/misc/shell_welcome_message.py9CODE
LOWarchivebox/misc/shell_welcome_message.py10CODE
LOWarchivebox/misc/shell_welcome_message.py11CODE
LOWarchivebox/misc/shell_welcome_message.py12CODE
LOWarchivebox/misc/shell_welcome_message.py13CODE
LOWarchivebox/misc/shell_welcome_message.py14CODE
LOWarchivebox/misc/shell_welcome_message.py16CODE
LOWarchivebox/misc/shell_welcome_message.py17CODE
LOWarchivebox/misc/shell_welcome_message.py17CODE
LOWarchivebox/misc/shell_welcome_message.py19CODE
LOWarchivebox/misc/shell_welcome_message.py20CODE
LOWarchivebox/misc/shell_welcome_message.py22CODE
LOWarchivebox/core/models.py63CODE
LOWarchivebox/core/routes_util.py1CODE
LOWarchivebox/core/apps.py26CODE
LOWarchivebox/core/tag_util.py1CODE
LOWarchivebox/core/shutdown_util.py1CODE
LOWarchivebox/core/admin_site.py26CODE
LOWarchivebox/core/admin_site.py27CODE
LOWarchivebox/core/admin_site.py28CODE
LOWarchivebox/core/admin_site.py28CODE
LOWarchivebox/core/admin_site.py30CODE
LOWarchivebox/core/settings.py597CODE
LOWarchivebox/core/settings.py631CODE
LOWarchivebox/core/permissions.py1CODE
LOWarchivebox/core/recovery_util.py1CODE
LOWarchivebox/core/takeover_util.py1CODE
LOWarchivebox/core/wsgi.py10CODE
LOWarchivebox/core/sqlite_backend/base.py1CODE
LOWarchivebox/config/django.py53CODE
LOWarchivebox/config/paths.py17CODE
LOWarchivebox/config/common.py1CODE
LOWarchivebox/tests/test_server_security_browser.py4CODE
LOWarchivebox/crawls/schedule_util.py1CODE
LOWarchivebox/crawls/apps.py15CODE
LOWarchivebox/cli/archivebox_update.py2CODE
LOWarchivebox/cli/archivebox_add.py2CODE
LOWarchivebox/search/sonic_daemon.py1CODE
LOWarchivebox/personas/importers.py8CODE
LOWarchivebox/machine/models.py1CODE
LOWarchivebox/machine/apps.py19CODE
LOWarchivebox/services/binary_service.py1CODE
LOWarchivebox/services/runner.py1CODE
LOWarchivebox/services/process_service.py1CODE
LOWarchivebox/services/crawl_service.py1CODE
LOWarchivebox/services/tag_service.py1CODE
LOWarchivebox/services/__init__.py1CODE
LOWarchivebox/services/__init__.py2CODE
LOWarchivebox/services/__init__.py2CODE
LOWarchivebox/services/__init__.py3CODE
LOWarchivebox/services/__init__.py4CODE
LOWarchivebox/services/__init__.py5CODE
LOWarchivebox/services/__init__.py6CODE
LOWarchivebox/services/__init__.py6CODE
LOWarchivebox/services/__init__.py6CODE
LOWarchivebox/services/__init__.py6CODE
5 more matches not shown…
Over-Commented Block67 hits · 57 pts
SeverityFileLineSnippetContext
LOWdocker-compose.yml21 # - ADMIN_USERNAME=admin # creates an admin user on first run with the given useCOMMENT
LOWdocker-compose.yml41 # are processed by the main container without needing a separate scheduler sidecar. To add a new job:COMMENT
LOWdocker-compose.yml61 # - novncCOMMENT
LOWdocker-compose.yml161COMMENT
LOWdocker-compose.yml221 elseCOMMENT
LOWdocker-compose.yml241COMMENT
LOWdocker-compose.yml261# drive_id = 1234567...COMMENT
LOWbin/setup.sh1#!/usr/bin/env bashCOMMENT
LOWbin/export_browser_history.sh1#!/usr/bin/env bashCOMMENT
LOWbin/docker_entrypoint.sh1#!/bin/bashCOMMENT
LOWbin/test_plugins.sh1#!/bin/bashCOMMENT
LOWold/archivebox.ts81 // 'https://browserleaks.com/canvas',COMMENT
LOWold/archivebox.ts101 // 'https://docker-compose.archivebox.io',COMMENT
LOWold/archivebox.ts121 // 'https://facebook.com/815781663692514/?comment_id=924451748966499',COMMENT
LOWold/archivebox.ts221 isLandscape: false,COMMENT
LOWold/archivebox.ts261 // {COMMENT
LOWold/archivebox.ts321// if (snap_id.startsWith('.')) continueCOMMENT
LOWold/archivebox.ts341// if (fs.existsSync(dest_path)) {COMMENT
LOWold/archivebox.ts361COMMENT
LOWold/archivebox.ts481 {webstore_id: 'ifibfemgeogfhoebkmokieepdoobkbpo', name: 'twocaptcha'}, // https://2captcha.com/blog/COMMENT
LOWold/archivebox.ts661 '--autoplay-policy=no-user-gesture-required', // auto-start videos so they trigger network requests + show up iCOMMENT
LOWold/archivebox.ts1761 if (snapshot_entry.sha256 == version_entry.sha256) {COMMENT
LOWold/archivebox.ts1781 // mv ./data/archive/<snap_id>/example.txt -> ./data/archive/<snap_id>/versions/<version_id>/example.txtCOMMENT
LOWold/archivebox.ts2101 // ffmpeg_Path: '<path of ffmpeg_path>' || null,COMMENT
LOWold/archivebox.ts2421 // await page.setCookie(...cookies)COMMENT
LOWold/archivebox.ts3121 const recorder = page_state.recorderCOMMENT
LOWold/archivebox.ts3241 // const screenshot_jpg = SCREENSHOT_JPG_PATH(page)COMMENT
LOWold/archivebox.ts3261 // cropped_bytes[idx + 1] = this.data[idx + 1];COMMENT
LOWold/archivebox.ts3501// spawn(COMMENT
LOWold/archivebox.ts4541COMMENT
LOWold/archivebox.ts5341COMMENT
LOWold/archivebox.ts5361 // mimeType: 'inode/directory'COMMENT
LOWold/archivebox.ts5461// {COMMENT
LOWold/archivebox.ts5501 // example: detectFilename({url: 'https://example.com/favicon.png', extension: 'ico'}) outputs 'favicon.ico'COMMENT
LOWold/archivebox.ts6041COMMENT
LOWold/archivebox.ts6061// video: true,COMMENT
LOWdocs/.readthedocs.yaml1# Read the Docs configuration file for ArchiveBox docsCOMMENT
LOW.github/workflows/codeql.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
LOWarchivebox/misc/hashing.py241# "mime_type": "inode/directory",COMMENT
LOWarchivebox/core/models.py1041 # from archivebox.misc.logging_util import log_worker_eventCOMMENT
LOWarchivebox/core/models.py4041 # Moving an ArchiveResult between Snapshots is rare and cannotCOMMENT
LOWarchivebox/core/models.py4061 )COMMENT
LOWarchivebox/core/asgi.py81# from archivebox.core.routing import websocket_urlpatternsCOMMENT
LOWarchivebox/core/admin_snapshots.py761 # '''COMMENT
LOWarchivebox/core/settings.py181CUSTOM_TEMPLATES_ENABLED = os.path.isdir(CONSTANTS.CUSTOM_TEMPLATES_DIR) and os.access(CONSTANTS.CUSTOM_TEMPLATES_DIR, oCOMMENT
LOWarchivebox/core/settings.py281# Django requires DEFAULT_AUTO_FIELD to subclass AutoField (BigAutoField, SmallAutoField, etc.)COMMENT
LOWarchivebox/core/settings.py301# return 'default'COMMENT
LOWarchivebox/core/settings.py341 "location": CONSTANTS.ARCHIVE_DIR,COMMENT
LOWarchivebox/core/settings.py361COMMENT
LOWarchivebox/core/settings.py421SECURE_REFERRER_POLICY = "strict-origin-when-cross-origin"COMMENT
LOWarchivebox/core/urls.py101COMMENT
LOWarchivebox/core/urls.py121# path('api/v1/core/archiveresult', [GET, POST, PUT]),COMMENT
LOWarchivebox/config/version.py121# the recommended upgrade version and the currently installed versionCOMMENT
LOWarchivebox/config/version.py141# current_version = NoneCOMMENT
LOWarchivebox/tests/test_archiveresult_pause.py1# test_crawl_pause_resume_api_cascades_archiveresults_and_leaves_finished_snapshot_results_alone moved to test_api_v1_crCOMMENT
LOWarchivebox/crawls/models.py341 # if is_new:COMMENT
LOWarchivebox/cli/archivebox_remove.py81 started_at = time.monotonic()COMMENT
LOWarchivebox/machine/detect.py61 passCOMMENT
LOWarchivebox/machine/detect.py301# 'os_arch': 'arm64',COMMENT
LOWarchivebox/machine/detect.py321# 'cpu_boot_time': '2024-09-24T21:20:16',COMMENT
7 more matches not shown…
Structural Annotation Overuse28 hits · 42 pts
SeverityFileLineSnippetContext
LOWold/TODO_hook_concurrency.md94### Step 0: Pre-SetupCOMMENT
LOWold/TODO_hook_concurrency.md99### Step 1: Chrome Launch & Tab CreationCOMMENT
LOWold/TODO_hook_concurrency.md106### Step 2: Navigation & SettlementCOMMENT
LOWold/TODO_hook_concurrency.md114### Step 3: Page AdjustmentCOMMENT
LOWold/TODO_hook_concurrency.md124### Step 4: Ready for ArchivingCOMMENT
LOWold/TODO_hook_concurrency.md131### Step 5: DOM Extraction (Sequential, Non-BG)COMMENT
LOWold/TODO_hook_concurrency.md147### Step 6: Post-DOM ExtractionCOMMENT
LOWold/TODO_hook_concurrency.md158### Step 7: Chrome CleanupCOMMENT
LOWold/TODO_hook_concurrency.md165### Step 8: Post-ProcessingCOMMENT
LOWold/TODO_hook_concurrency.md174### Step 9: Indexing & FinalizationCOMMENT
LOWold/TODO_hook_concurrency.md361# Step 5: DOM Extraction (sequential, non-background)COMMENT
LOWold/TODO_hook_concurrency.md372# Step 6: Post-DOM Extraction (background for long-running)COMMENT
LOWold/TODO_hook_concurrency.md380# Step 7: URL Extraction (parse_* hooks moved from step 6)COMMENT
LOWold/TODO_hook_architecture.md1693### Step 1: Create migrationSTRING
LOWold/TODO_hook_architecture.md1704### Step 3: Update run_hook() (Phase 5)STRING
LOWold/TODO_hook_architecture.md1710### Step 4: Update ArchiveResult.run() (Phase 6)STRING
LOWold/TODO_hook_architecture.md1718### Step 5: Add finalization helpers (Phase 7)STRING
LOWold/TODO_hook_architecture.md1723### Step 6: Update SnapshotMachine.is_finished() (Phase 7)STRING
LOWold/TODO_hook_architecture.md1727### Step 7: Rename background hooks (Phase 7)STRING
LOWold/TODO_hook_architecture.md1730### Step 8: TestSTRING
LOWold/TODO_Process_cleanup_unification.md192### Step 1: Update Process.launch() (DONE - already exists)COMMENT
LOWold/TODO_Process_cleanup_unification.md195### Step 2: Refactor run_hook() to use Process.launch()COMMENT
LOWold/TODO_Process_cleanup_unification.md234### Step 3: Update SnapshotWorker to use Process methodsCOMMENT
LOWold/TODO_Process_cleanup_unification.md239### Step 4: Update ArchiveResult.run() to use new run_hook()COMMENT
LOWold/TODO_Process_cleanup_unification.md263### Step 5: Update Crawl.run() similarlyCOMMENT
LOWarchivebox/machine/models.py2220 # Step 1: Send SIGTERM for graceful shutdownCOMMENT
LOWarchivebox/machine/models.py2223 # Step 2: Wait for graceful exitCOMMENT
LOWarchivebox/machine/models.py2236 # Step 3: Force kill with SIGKILLCOMMENT
Redundant / Tautological Comments27 hits · 36 pts
SeverityFileLineSnippetContext
LOWbin/kill_chrome.sh50 # Check if still aliveCOMMENT
LOWbin/kill_chrome.sh59 # Check if it's a zombie/uninterruptible process BEFORE trying to killCOMMENT
LOWbin/build_docker.sh110# Check if docker is ready for cross-plaform builds, if not, recreate builderCOMMENT
LOWbin/docker_entrypoint.sh84# Check if user attempted to run it in the root of their home folder or hard drive (common mistake)COMMENT
LOWbin/test_plugins.sh264 # Check if there are any Python test filesCOMMENT
LOWarchivebox/core/models.py2920 # Check if any ARs are still pending/startedCOMMENT
LOWarchivebox/core/models.py2970 # Check if sealedCOMMENT
LOWarchivebox/plugins/hooks.py227 # Check if this is a plugin directory (not the root plugins dir)COMMENT
LOWarchivebox/plugins/hooks.py616 # Check if discovered snapshot exceeds crawl max_depthCOMMENT
LOWarchivebox/mcp/server.py162 # Check if this is a positional Argument (not an Option)COMMENT
LOWarchivebox/crawls/models.py481 # Check if crawl already exists by IDCOMMENT
LOWarchivebox/crawls/models.py954 # Check if already in urls (parse existing JSONL entries)COMMENT
LOWarchivebox/crawls/models.py1567 # Check if any snapshots exist for this crawlCOMMENT
LOWarchivebox/crawls/models.py1730 # Set retry_at to near future so tick() can poll and check is_finished()COMMENT
LOWarchivebox/cli/archivebox_update.py691 # Check if needs migration (0.8.x → 0.9.x)COMMENT
LOWarchivebox/cli/archivebox_extract.py394 # Output results as JSONL (when piped) or human-readable (when TTY)COMMENT
LOWarchivebox/cli/archivebox_extract.py446 # Check if input looks like existing ArchiveResult IDs to processCOMMENT
LOWarchivebox/cli/archivebox_version.py181 # Check if LDAP is enabled (simple config lookup)COMMENT
LOWarchivebox/cli/archivebox_persona.py265 # Check if resolved_path is a child of personas_dirCOMMENT
LOWarchivebox/progressmonitor/views.py822 # Check if crawl can start (for debugging stuck crawls)COMMENT
LOWarchivebox/progressmonitor/views.py838 # Check if retry_at is in the future (would prevent worker from claiming)COMMENT
LOWarchivebox/machine/models.py809 # Check if it's already pointing to the right placeCOMMENT
LOWarchivebox/machine/models.py1604 # Check if too old (PID definitely reused)COMMENT
LOWarchivebox/machine/models.py1608 # Check if OS process still exists with matching start timeCOMMENT
LOWarchivebox/machine/models.py2313 # Check if process exitedCOMMENT
LOWarchivebox/machine/models.py2608 # Check if installation succeeded by looking at updated statusCOMMENT
LOWarchivebox/workers/supervisord_util.py1137 # Check if the monitored process has exitedCOMMENT
Self-Referential Comments13 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUMarchivebox/misc/logging_util.py371 # Create a Rich Text object for proper formattingCOMMENT
MEDIUMarchivebox/core/templatetags/core_tags.py772 # Create a mini template and render it with contextSTRING
MEDIUMarchivebox/config/collection.py20 "# This file is kept in sync 1:1 with Machine.config in the index DB —\n"CODE
MEDIUMarchivebox/plugins/hooks.py327 # Create a failed Process record for hooks that don't existCOMMENT
MEDIUMarchivebox/plugins/hooks.py482 # Create a failed Process record for exceptionsCOMMENT
MEDIUMarchivebox/tests/test_cli_status.py100 # Create an orphaned directoryCOMMENT
MEDIUMarchivebox/tests/test_cli_crawl.py237 # Create a crawlCOMMENT
MEDIUMarchivebox/tests/migrations_helpers.py570 # Create a userCOMMENT
MEDIUMarchivebox/tests/migrations_helpers.py737 # Create a userCOMMENT
MEDIUMarchivebox/tests/test_cli_archiveresult.py34 # Create a snapshot firstCOMMENT
MEDIUMarchivebox/cli/archivebox_update.py675 # Create a new crawl (created_by will default to system user)COMMENT
MEDIUMarchivebox/cli/archivebox_persona.py15 # Create a new personaSTRING
MEDIUMarchivebox/machine/models.py784 # Create the derived convenience bin dir if it doesn't exist.COMMENT
Fake / Example Data28 hits · 28 pts
SeverityFileLineSnippetContext
LOWdocs/Web-Archiving-Community.md220- [ReadableWebProxy](https://github.com/fake-name/ReadableWebProxy) A proxying archiver that downloads content from siteCODE
LOWarchivebox/core/admin_tags.py45 "placeholder": "research, receipts, product-design...",CODE
LOWarchivebox/core/forms.py103 "placeholder": (CODE
LOWarchivebox/core/forms.py136 "placeholder": "0 = unlimited",CODE
LOWarchivebox/core/forms.py146 "placeholder": "0 = unlimited, or e.g. 45mb / 1gb",CODE
LOWarchivebox/core/forms.py158 "placeholder": "0, 300, 1.5m, or 1hr",CODE
LOWarchivebox/core/forms.py169 "placeholder": "60, 1.5m, or 1hr",CODE
LOWarchivebox/core/forms.py179 "placeholder": "0 = unlimited, or e.g. 45mb / 1gb",CODE
LOWarchivebox/core/forms.py189 "placeholder": "0 = keep forever, or e.g. 1d / 6mo",CODE
LOWarchivebox/core/forms.py210 "placeholder": "Optional notes about this crawl",CODE
LOWarchivebox/core/forms.py271 "placeholder": "e.g., daily, weekly, 0 */6 * * * (every 6 hours)",CODE
LOWarchivebox/tests/test_server_security_browser.py343 defaults={"email": "admin@example.com", "is_staff": True, "is_superuser": True},CODE
LOWarchivebox/tests/migrations_helpers.py575 'admin@example.com', 1, 1, datetime('now'))CODE
LOWarchivebox/tests/migrations_helpers.py742 'admin@example.com', 1, 1, datetime('now'))CODE
LOWarchivebox/tests/test_urls.py85 defaults={"email": "admin@example.com", "is_staff": True, "is_superuser": True},STRING
LOWarchivebox/crawls/admin.py405 "placeholder": "https://example.com\nhttps://example2.com\n# Comments start with #",CODE
LOWarchivebox/personas/forms.py65 "placeholder": "/Users/alice/Library/Application Support/Google/Chrome or http://127.0.0.1:9222 or wCODE
LOWarchivebox/personas/forms.py76 "placeholder": "Default or Profile 1",CODE
LOW…onitor/templates/progressmonitor/progress_monitor.html1108 preview.classList.add('placeholder');CODE
LOW…onitor/templates/progressmonitor/progress_monitor.html1186 type: 'placeholder',CODE
LOW…onitor/templates/progressmonitor/progress_monitor.html1202 type: 'placeholder',CODE
LOW…onitor/templates/progressmonitor/progress_monitor.html1214 type: 'placeholder',CODE
LOW…onitor/templates/progressmonitor/progress_monitor.html1253 type: 'placeholder',CODE
LOW…onitor/templates/progressmonitor/progress_monitor.html1260 if (target.type === 'placeholder') {CODE
LOW…onitor/templates/progressmonitor/progress_monitor.html1274 if (screencastPanel.dataset.mode === 'placeholder' && screencastPanel.dataset.key === placeholderKey) {CODE
LOW…onitor/templates/progressmonitor/progress_monitor.html1277 screencastPanel.dataset.mode = 'placeholder';CODE
LOWarchivebox/templates/static/select2.min.js2!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.eCODE
LOWarchivebox/templates/static/jquery.dataTables.min.js41g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!thCODE
Docstring Block Structure4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHold/TODO_process_tracking.md711 Wait for process to exit, polling periodically. Args: timeout: Max seconds to wait (None =STRING
HIGHarchivebox/plugins/hooks.py89 Check if a hook is a background hook (doesn't block foreground progression). Background hooks have '.bg.' in tSTRING
HIGHarchivebox/plugins/hooks.py152 Find all hook scripts for an event family. Searches both built-in and user plugin directories. Filters outSTRING
HIGHarchivebox/machine/models.py2163 Wait for process to exit, polling periodically. Args: timeout: Max seconds to wait (None =STRING
Modern Structural Boilerplate13 hits · 14 pts
SeverityFileLineSnippetContext
LOWarchivebox/uuid_compat.py48__all__ = ["CompactUUID", "CompactUUIDField", "compact_uuid", "uuid7"]CODE
LOWarchivebox/core/models.py4749 def _set_binary_from_cmd(self, cmd: list) -> None:CODE
LOWarchivebox/tests/conftest.py77def _set_test_source_pythonpath(env: dict[str, str]) -> None:CODE
LOWarchivebox/tests/test_version_metadata.py6def _set_package_dir(monkeypatch, package_dir: Path) -> None:CODE
LOWarchivebox/tests/test_opencode_agent.py36def _set_archivebox_config(data_dir: Path, *values: str, env: dict[str, str] | None = None) -> None:CODE
LOWarchivebox/tests/test_crawl_runner.py645 async def update_config_between_snapshots(event: SnapshotCompletedEvent) -> None:CODE
LOWarchivebox/tests/test_urls.py172 def _setup_data_dir(self, real_archive_with_example: Path) -> None:CODE
LOWarchivebox/tests/test_urls.py195 def _set_config(self, *settings: str) -> None:CODE
LOWarchivebox/crawls/models.py648 def set_url_filters(self, allowlist, denylist) -> None:CODE
LOWarchivebox/cli/__init__.py93 def _setup_django_for_lazy_import(cls, cmd_name: str) -> None:CODE
LOWarchivebox/api/webhooks.py11logger = logging.getLogger(__name__)CODE
LOWarchivebox/workers/models.py41logger = logging.getLogger(__name__)CODE
LOWarchivebox/services/__init__.py10__all__ = [CODE
AI Slop Vocabulary6 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMbin/fuzz_test.sh4# This is intentionally not a test harness: it does not assert success/failure.COMMENT
LOWarchivebox/misc/util.py460 # if response is non-test (e.g. image or other binary files), just return the filename insteadCOMMENT
MEDIUMarchivebox/core/models.py4537 # these properties provide seamless access to Process data through ArchiveResultCOMMENT
LOWarchivebox/core/views.py1457 # We can't just call request.build_absolute_uri in the template, because it would include query parametersCOMMENT
LOWarchivebox/cli/archivebox_archiveresult.py115 # If no id, we could create it, but for now just pass throughCOMMENT
LOWarchivebox/cli/archivebox_crawl.py94 # Handle existing Crawl records (just pass through with id)COMMENT
AI Structural Patterns10 hits · 8 pts
SeverityFileLineSnippetContext
LOWarchivebox/core/models.py3375CODE
LOWarchivebox/core/tag_util.py268CODE
LOWarchivebox/config/common.py994CODE
LOWarchivebox/tests/conftest.py181CODE
LOWarchivebox/tests/test_cli_status.py24CODE
LOWarchivebox/cli/archivebox_schedule.py12CODE
LOWarchivebox/cli/archivebox_update.py177CODE
LOWarchivebox/cli/archivebox_remove.py30CODE
LOWarchivebox/cli/archivebox_add.py54CODE
LOWarchivebox/workers/supervisord_util.py1306CODE
Slop Phrases4 hits · 6 pts
SeverityFileLineSnippetContext
LOWpyproject.toml94 # to use sonic make sure you have a sonic server running in docker (archivebox/sonic) or locally:COMMENT
MEDIUM.github/workflows/codeql.yml59 # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize howCOMMENT
LOWarchivebox/core/admin_snapshots.py1488 f"Successfully deleted {total} Snapshots ({deleted_count} total objects including related records). Don'CODE
LOWarchivebox/cli/archivebox_install.py117 stderr("\n[+] Don't forget to create a new admin user for the Web UI...", color="green")CODE
Example Usage Blocks4 hits · 6 pts
SeverityFileLineSnippetContext
LOWdocker-compose.yml1# Usage:COMMENT
LOWbin/kill_chrome.sh5# Usage:COMMENT
LOWbin/export_browser_history.sh4# Usage:COMMENT
LOWarchivebox/machine/detect.py287# Example usageCOMMENT
Modern AI Meta-Vocabulary2 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMold/TODO_hook_statemachine_cleanup.md74# 1. State Machine orchestrates transitionsCOMMENT
MEDIUMdocs/Setting-up-Search.md259- [#1139 Feature Request: Add AI-assisted summarization, tagging, search, and more using LLMs / RAG](https://github.com/CODE
Verbosity Indicators3 hits · 3 pts
SeverityFileLineSnippetContext
LOWarchivebox/machine/models.py2220 # Step 1: Send SIGTERM for graceful shutdownCOMMENT
LOWarchivebox/machine/models.py2223 # Step 2: Wait for graceful exitCOMMENT
LOWarchivebox/machine/models.py2236 # Step 3: Force kill with SIGKILLCOMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWarchivebox/mcp/server.py311 def handle_request(self, request: dict) -> dict:CODE