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.
92 of your 110 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.

Scan timing: clone 2.58s · analysis 1.41s · 5.3 MB · GitHub API rate-limit (preflight)

Thysrael/Horizon

https://github.com/Thysrael/Horizon · scanned 2026-05-24 01:19 UTC (1 week, 5 days ago) · 10 languages

246 findings (106 legacy + 140 scanner) 98th percentile · Python · small (2-20K LoC) Scanner says 85 (higher by 7)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 1 week, 5 days ago · v5 · 137 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 100.0 0.15 15.00
security_score 98.8 0.25 24.70
testing_score 100.0 0.20 20.00
documentation_score 99.0 0.15 14.85
practices_score 77.0 0.15 11.55
code_quality 57.6 0.10 5.76
Overall 1.00 91.9
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all

All 731 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_load_config_missing_file software healthy tests/test_storage.py:6
test_load_config_invalid_json software healthy tests/test_storage.py:11
test_load_config_validation_failure software healthy tests/test_storage.py:21
test_load_config_success software healthy tests/test_storage.py:32
test_expands_simple_reference software healthy tests/test_storage.py:60
test_expands_multiple_references_in_one_string software healthy tests/test_storage.py:64
test_leaves_unset_var_as_placeholder software healthy tests/test_storage.py:69
test_ignores_non_matching_patterns software healthy tests/test_storage.py:73
test_recurses_into_dict software healthy tests/test_storage.py:78
test_recurses_into_list software healthy tests/test_storage.py:83
test_preserves_non_string_leaves software healthy tests/test_storage.py:87
test_deeply_nested software healthy tests/test_storage.py:93
test_load_config_expands_env_vars_in_ai_base_url software healthy tests/test_storage.py:106
test_simple_replacement software healthy tests/test_webhook.py:35
test_no_matching_vars software healthy tests/test_webhook.py:100
test_empty_template software healthy tests/test_webhook.py:45
test_empty_vars software healthy tests/test_webhook.py:48
test_numeric_values software healthy tests/test_webhook.py:51
test_summary_with_multiline_content software healthy tests/test_webhook.py:56
test_simple_dict software healthy tests/test_webhook.py:65
test_nested_dict software healthy tests/test_webhook.py:71
test_list software healthy tests/test_webhook.py:85
test_non_string_values_preserved software healthy tests/test_webhook.py:91
test_summary_with_quotes_safely_replaced software healthy tests/test_webhook.py:105
test_short_value_not_truncated software healthy tests/test_webhook.py:117
test_truncate_by_segments software healthy tests/test_webhook.py:122
test_single_segment_exceeds_limit_still_kept software healthy tests/test_webhook.py:129
test_no_split_delimiter_in_value software healthy tests/test_webhook.py:136
test_empty_value software healthy tests/test_webhook.py:143
test_exact_limit_with_join software healthy tests/test_webhook.py:147
test_one_char_over_limit software healthy tests/test_webhook.py:154
test_plain_key_without_params software healthy tests/test_webhook.py:162
test_key_with_limit_and_split software healthy tests/test_webhook.py:168
test_key_with_limit_no_truncation_needed software healthy tests/test_webhook.py:176
test_missing_variable_with_params software healthy tests/test_webhook.py:183
test_param_in_dict_body software healthy tests/test_webhook.py:189
test_mix_of_plain_and_parameterized software healthy tests/test_webhook.py:197
test_details_references_are_flattened_for_webhook software healthy tests/test_webhook.py:206
test_prepare_variables_changes_summary_for_any_post_body software healthy tests/test_webhook.py:227
test_prepare_variables_keeps_summary_unchanged_without_body software healthy tests/test_webhook.py:238
test_build_preview_uses_same_summary_formatting_as_send_path software healthy tests/test_webhook.py:249
test_build_preview_uses_request_body_override software healthy tests/test_webhook.py:276
test_object software healthy tests/test_webhook.py:305
test_array software healthy tests/test_webhook.py:308
test_whitespace_before_brace software healthy tests/test_webhook.py:311
test_plain_string software healthy tests/test_webhook.py:314
test_form_data software healthy tests/test_webhook.py:317
test_empty software healthy tests/test_webhook.py:320
test_single_header software healthy tests/test_webhook.py:328
test_multiple_headers software healthy tests/test_webhook.py:333

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

LabelLayerStatusPath
TestExpandEnvVars software healthy tests/test_storage.py:57
TestRender software healthy tests/test_webhook.py:34
TestRenderDictAndList software healthy tests/test_webhook.py:64
TestTruncate software healthy tests/test_webhook.py:116
TestRenderParameterized software healthy tests/test_webhook.py:161
TestWebhookMarkdownFormatting software healthy tests/test_webhook.py:205
TestWebhookPreview software healthy tests/test_webhook.py:248
TestIsJson software healthy tests/test_webhook.py:304
TestExtractHeaders software healthy tests/test_webhook.py:327
TestWebhookRedaction software healthy tests/test_webhook.py:352
TestWebhookNotifier software healthy tests/test_webhook.py:374
TestWebhookConfigModel software healthy tests/test_webhook.py:716
TestSendDailySummary software healthy tests/test_webhook.py:774
TestSendFailureNotification software healthy tests/test_webhook.py:1118
TestURLValidation software healthy tests/test_webhook.py:1174
TestHTTPStatusHandling software healthy tests/test_webhook.py:1257
TestExceptionClassification software healthy tests/test_webhook.py:1461
TestWebhookConfigFieldValidation software healthy tests/test_webhook.py:1548
TestSkipConsoleOutput software healthy tests/test_webhook.py:1593
TestOpenAIClientInit software healthy tests/test_minimax_client.py:27
TestOpenAIClientComplete software healthy tests/test_minimax_client.py:59
TestTemperatureFallback software healthy tests/test_minimax_client.py:124
TestFactoryFunction software healthy tests/test_minimax_client.py:239
FakeSMTP software healthy tests/test_email.py:7
FakeIMAP software healthy tests/test_email.py:30
TestAzureOpenAIClientInit software healthy tests/test_azure_client.py:36
TestAzureOpenAIClientComplete software healthy tests/test_azure_client.py:61
TestFactoryFunction software healthy tests/test_azure_client.py:101
TestFetchGuards software healthy tests/test_openbb_scraper.py:76
TestMapping software healthy tests/test_openbb_scraper.py:116
TestFiltering software healthy tests/test_openbb_scraper.py:174
TestResilience software healthy tests/test_openbb_scraper.py:214
TestStatic software healthy tests/test_openbb_scraper.py:266
FakeOrchestrator software healthy tests/test_mcp_service_smoke.py:131
HorizonOrchestrator software healthy src/orchestrator.py:30
SourceType software healthy src/models.py:9
ContentItem software healthy src/models.py:22
AIProvider software healthy src/models.py:42
AIConfig software healthy src/models.py:56
GitHubSourceConfig software healthy src/models.py:74
HackerNewsConfig software healthy src/models.py:84
RSSSourceConfig software healthy src/models.py:92
RedditSubredditConfig software healthy src/models.py:101
RedditUserConfig software healthy src/models.py:114
RedditConfig software healthy src/models.py:123
TelegramChannelConfig software healthy src/models.py:132
TelegramConfig software healthy src/models.py:140
TwitterConfig software healthy src/models.py:147
OpenBBWatchlist software healthy src/models.py:161
OpenBBConfig software healthy src/models.py:176

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

LabelLayerStatusPath
README_zh.md software healthy README_zh.md
README.md software healthy README.md
CONTRIBUTING.md software healthy CONTRIBUTING.md
Dockerfile software healthy Dockerfile
.env.example software healthy .env.example
pyproject.toml software healthy pyproject.toml
CODE_OF_CONDUCT.md software healthy CODE_OF_CONDUCT.md
SECURITY.md software healthy SECURITY.md
docker-compose.yml software healthy docker-compose.yml
test_storage.py software healthy tests/test_storage.py
conftest.py software warning tests/conftest.py
test_webhook.py software healthy tests/test_webhook.py
test_analyzer.py software healthy tests/test_analyzer.py
test_mcp_adapter.py software healthy tests/test_mcp_adapter.py
test_minimax_client.py software healthy tests/test_minimax_client.py
test_email.py software healthy tests/test_email.py
test_summarizer.py software healthy tests/test_summarizer.py
test_mcp_errors.py software healthy tests/test_mcp_errors.py
test_mcp_run_store.py software healthy tests/test_mcp_run_store.py
test_azure_client.py software healthy tests/test_azure_client.py
test_openbb_scraper.py software healthy tests/test_openbb_scraper.py
test_rss.py software healthy tests/test_rss.py
test_reddit.py software healthy tests/test_reddit.py
test_twitter.py software healthy tests/test_twitter.py
test_mcp_service_smoke.py software healthy tests/test_mcp_service_smoke.py
scrapers.md software healthy docs/scrapers.md
scoring.md software healthy docs/scoring.md
index.md software healthy docs/index.md
configuration.md software healthy docs/configuration.md
horizon-hub-design.md software healthy docs/horizon-hub-design.md
_config.yml software healthy docs/_config.yml
horizon.js software healthy docs/assets/js/horizon.js
horizon.css software healthy docs/assets/css/horizon.css
head-custom.html software healthy docs/_includes/head-custom.html
check_mcp.py software healthy scripts/check_mcp.py
daily-run.sh software healthy scripts/daily-run.sh
pull_request_template.md software healthy .github/pull_request_template.md
feature_request.md software healthy .github/ISSUE_TEMPLATE/feature_request.md
daily-summary.yml software healthy .github/workflows/daily-summary.yml
deploy-docs.yml software healthy .github/workflows/deploy-docs.yml
__init__.py software healthy src/__init__.py
orchestrator.py software healthy src/orchestrator.py
models.py software healthy src/models.py
search.py software healthy src/search.py
main.py software healthy src/main.py
client.py software healthy src/ai/client.py
__init__.py software healthy src/ai/__init__.py
prompts.py software warning src/ai/prompts.py
enricher.py software healthy src/ai/enricher.py
summarizer.py software healthy src/ai/summarizer.py

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

LabelLayerStatusPath
tests software healthy tests
docs software healthy docs
assets software healthy docs/assets
js software healthy docs/assets/js
css software healthy docs/assets/css
_includes software healthy docs/_includes
scripts software healthy scripts
.github software healthy .github
ISSUE_TEMPLATE software healthy .github/ISSUE_TEMPLATE
workflows software healthy .github/workflows
src software healthy src
ai software healthy src/ai
scrapers software healthy src/scrapers
mcp software healthy src/mcp
services software healthy src/services
setup software healthy src/setup
storage software healthy src/storage

LabelLayerStatusPath
elasticsearch data healthy src/setup/tag_aliases.py
mongodb data healthy src/setup/tag_aliases.py
mysql data healthy src/setup/tag_aliases.py
postgres data healthy src/setup/tag_aliases.py
postgresql data healthy src/setup/tag_aliases.py
redis data healthy src/setup/tag_aliases.py

LabelLayerStatusPath
DATE cicd healthy
GITHUB_TOKEN cicd healthy
LWN_KEY cicd healthy
ANTHROPIC_API_KEY cicd healthy
OPENAI_API_KEY cicd healthy
GOOGLE_API_KEY cicd healthy

LabelLayerStatusPath
vps::azure hardware healthy .env.example
vps::aws hardware healthy src/setup/tag_aliases.py
vps::gcp hardware healthy src/setup/tag_aliases.py

LabelLayerStatusPath
image::Dockerfile hardware healthy Dockerfile
horizon hardware healthy docker-compose.yml

LabelLayerStatusPath
gha::daily-summary cicd healthy .github/workflows/daily-summary.yml
gha::deploy-docs cicd healthy .github/workflows/deploy-docs.yml

LabelLayerStatusPath
daily-summary cicd healthy .github/workflows/daily-summary.yml
deploy cicd healthy .github/workflows/deploy-docs.yml

LabelLayerStatusPath
repobility-clone-79loi5a5 software healthy /tmp/repobility-clone-79loi5a5

LabelLayerStatusPath
135.0.0.0 network healthy src/scrapers/reddit.py

LabelLayerStatusPath
gpu (detected) hardware healthy src/ai/prompts.py
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/232cd5aa-f1f3-48cd-a1c5-3b1fd6cfbaab/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/232cd5aa-f1f3-48cd-a1c5-3b1fd6cfbaab/

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.