Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.

vrennat/earworm

https://github.com/vrennat/earworm · scanned 2026-06-16 00:53 UTC (2 months, 1 week ago)

22 raw signals (0 security + 22 graph)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 2 months, 1 week ago · v1 · 21 actionable findings from 1 signal source. 1 repeated signal grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all

All 326 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.

LabelLayerStatusPath
test_is_url software healthy tests/test_ingest.py:31
test_derive_title_prefers_frontmatter software healthy tests/test_ingest.py:39
test_derive_title_from_first_heading software healthy tests/test_ingest.py:45
test_derive_title_from_first_line_when_no_heading software healthy tests/test_ingest.py:50
test_derive_title_falls_back software healthy tests/test_ingest.py:55
test_markdown_to_prose_strips_reading_artifacts software healthy tests/test_ingest.py:59
test_markdown_to_prose_preserves_paragraphs software healthy tests/test_ingest.py:77
test_summary_line_takes_first_sentence software healthy tests/test_ingest.py:83
test_build_script_has_frontmatter_and_body software healthy tests/test_ingest.py:88
test_build_script_includes_author software healthy tests/test_ingest.py:102
test_build_script_omits_author_when_absent software healthy tests/test_ingest.py:110
test_build_script_includes_named_feed software healthy tests/test_ingest.py:116
test_build_script_omits_feed_for_default software healthy tests/test_ingest.py:124
test_build_script_omits_feed_when_absent software healthy tests/test_ingest.py:133
test_raw_author_prepends_byline_and_drops_dup_title software healthy tests/test_ingest.py:139
test_build_report_is_shownotes_parseable software healthy tests/test_ingest.py:158
test_build_report_without_source_has_no_sources software healthy tests/test_ingest.py:170
test_adapted_too_short_guard software healthy tests/test_ingest.py:177
_paths software healthy tests/test_ingest.py:188
_write_tmp software healthy tests/test_ingest.py:194
test_ingest_stdin_raw_writes_inbox_script software healthy tests/test_ingest.py:201
no_adapt software healthy tests/test_ingest.py:206
test_ingest_file_runs_adapt_pass software healthy tests/test_ingest.py:228
fake_adapt software healthy tests/test_ingest.py:263
test_ingest_url_fetches_then_adapts software healthy tests/test_ingest.py:252
fake_fetch software healthy tests/test_ingest.py:257
test_ingest_archives_source_and_report_in_run_dir software healthy tests/test_ingest.py:284
test_ingest_source_url_override_sets_shownote_source software healthy tests/test_ingest.py:303
test_ingest_feed_slugified_into_frontmatter software healthy tests/test_ingest.py:321
test_ingest_defaults_feed_when_absent software healthy tests/test_ingest.py:334
test_ingest_warns_when_adapt_overcondenses software healthy tests/test_ingest.py:345
shrinking_adapt software healthy tests/test_ingest.py:351
main software healthy tests/test_ingest.py:359
_home software healthy tests/test_config.py:18
test_prompts_uses_local_dir_when_present software healthy tests/test_config.py:24
test_prompts_falls_back_to_bundled_when_absent software healthy tests/test_config.py:31
main software healthy tests/test_config.py:37
check software healthy tests/test_normalize.py:13
main software healthy tests/test_normalize.py:18
_fresh_db software healthy tests/test_idempotency.py:21
test_new_episode_uses_content_hash_as_guid software healthy tests/test_idempotency.py:30
test_rerender_same_slug_reuses_guid_and_replaces software healthy tests/test_idempotency.py:41
test_upsert_episode_stores_feed software healthy tests/test_idempotency.py:64
test_upsert_episode_defaults_feed software healthy tests/test_idempotency.py:73
test_set_episode_feed_retags_and_unpublishes software healthy tests/test_idempotency.py:82
test_distinct_slugs_get_distinct_rows software healthy tests/test_idempotency.py:97
test_unique_slug_index_blocks_raw_duplicate_insert software healthy tests/test_idempotency.py:105
test_reset_stale_running_requeues_crashed_topics software healthy tests/test_idempotency.py:122
test_r2_key_is_stable_per_guid software healthy tests/test_idempotency.py:134
main software healthy tests/test_idempotency.py:150

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
README.md software healthy README.md
interests.example.md software healthy interests.example.md
Dockerfile software healthy Dockerfile
.env.example software healthy .env.example
pyproject.toml software healthy pyproject.toml
LICENSE software healthy LICENSE
install.sh software healthy launchd/install.sh
uninstall.sh software healthy launchd/uninstall.sh
daily.sh software healthy launchd/daily.sh
voice.example.toml software healthy config/voice.example.toml
show.example.toml software healthy config/show.example.toml
feed.example.toml software healthy config/feed.example.toml
earworm.example.toml software healthy config/earworm.example.toml
pipeline.example.toml software healthy config/pipeline.example.toml
lexicon.example.toml software healthy config/lexicon.example.toml
secrets.example.toml software healthy config/secrets.example.toml
test_ingest.py software healthy tests/test_ingest.py
test_config.py software healthy tests/test_config.py
test_normalize.py software healthy tests/test_normalize.py
test_idempotency.py software healthy tests/test_idempotency.py
test_pipeline.py software healthy tests/test_pipeline.py
render_all.py software healthy scripts/render_all.py
voice_sampler.py software healthy scripts/voice_sampler.py
rerender_canonical.py software healthy scripts/rerender_canonical.py
make_cover.py software healthy scripts/make_cover.py
regen_script.py software healthy scripts/regen_script.py
bun.lock software healthy worker/bun.lock
package.json software healthy worker/package.json
schema.sql software healthy worker/schema.sql
tsconfig.json software healthy worker/tsconfig.json
0001_add_feed.sql software healthy worker/migrations/0001_add_feed.sql
rss.ts software healthy worker/src/rss.ts
index.ts software healthy worker/src/index.ts
ingest.md software healthy prompts/ingest.md
autogen.md software healthy prompts/autogen.md
script_revise.md software healthy prompts/script_revise.md
script_review.md software healthy prompts/script_review.md
script.md software healthy prompts/script.md
ingest_fetch.md software healthy prompts/ingest_fetch.md
research.md software healthy prompts/research.md
review.md software healthy prompts/review.md
ci.yml software healthy .github/workflows/ci.yml
__init__.py software healthy src/earworm/__init__.py
db.py software healthy src/earworm/db.py
config.py software healthy src/earworm/config.py
render.py software healthy src/earworm/render.py
frontmatter.py software healthy src/earworm/frontmatter.py
shownotes.py software healthy src/earworm/shownotes.py
feed.py software healthy src/earworm/feed.py
normalize.py software healthy src/earworm/normalize.py

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
launchd software healthy launchd
config software healthy config
tests software healthy tests
scripts software healthy scripts
worker software healthy worker
migrations software healthy worker/migrations
src software healthy worker/src
prompts software healthy prompts
.github software healthy .github
workflows software healthy .github/workflows
src software healthy src
earworm software healthy src/earworm
tts software healthy src/earworm/tts

LabelLayerStatusPath
Paths software healthy src/earworm/config.py:34
PublishError software healthy src/earworm/feed.py:30
StageError software healthy src/earworm/pipeline.py:27
StageConfig software healthy src/earworm/pipeline.py:40
PipelineConfig software healthy src/earworm/pipeline.py:52
RunContext software healthy src/earworm/pipeline.py:125
Stage software healthy src/earworm/pipeline.py:178
ClaudeError software healthy src/earworm/claude.py:16
KokoroEngine software healthy src/earworm/tts/kokoro_engine.py:26
TTSEngine software healthy src/earworm/tts/base.py:7

LabelLayerStatusPath
sqlite data healthy README.md
postgres data healthy tests/test_normalize.py

LabelLayerStatusPath
episodes data healthy worker/schema.sql
topics data healthy src/earworm/db.py

LabelLayerStatusPath
auth::config/lexicon.example.toml security healthy config/lexicon.example.toml
auth::src/earworm/feed.py security healthy src/earworm/feed.py

LabelLayerStatusPath
python cicd healthy .github/workflows/ci.yml
worker cicd healthy .github/workflows/ci.yml

LabelLayerStatusPath
repobility-clone-5gzm_tiy software healthy /tmp/repobility-clone-5gzm_tiy

LabelLayerStatusPath
0001_add_feed.sql data healthy worker/migrations/0001_add_feed.sql

LabelLayerStatusPath
port:07 network healthy launchd/install.sh

LabelLayerStatusPath
nginx network healthy tests/test_normalize.py

LabelLayerStatusPath
image::Dockerfile hardware healthy Dockerfile

LabelLayerStatusPath
gpu (detected) hardware healthy README.md

LabelLayerStatusPath
gha::ci cicd healthy .github/workflows/ci.yml
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/a392ae53-1975-4d80-81aa-494256dfcbdc/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/a392ae53-1975-4d80-81aa-494256dfcbdc/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.