https://github.com/ry071702-prog/wc2026-slack-bot
· scanned 2026-06-15 23:57 UTC (2 months, 3 weeks ago)
28 raw signals (0 security + 28 graph)
Last scanned 2 months, 3 weeks ago · v1 · 20 actionable findings from 1 signal source. 8 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 861 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.
| Label | Layer | Status | Path |
|---|---|---|---|
__init__ |
software | healthy | bolt_app/storage.py:22 |
_fetch |
software | healthy | bolt_app/storage.py:31 |
load |
software | healthy | bolt_app/storage.py:66 |
save |
software | healthy | bolt_app/storage.py:72 |
create_store |
software | healthy | bolt_app/storage.py:80 |
env_token |
software | healthy | bolt_app/app.py:36 |
load_predictions |
software | healthy | bolt_app/app.py:45 |
save_predictions |
software | healthy | bolt_app/app.py:49 |
do_GET |
software | dead | bolt_app/app.py:56 |
log_message |
software | dead | bolt_app/app.py:62 |
start_health_server |
software | healthy | bolt_app/app.py:66 |
team_options |
software | healthy | bolt_app/app.py:73 |
open_yosou_modal |
software | healthy | bolt_app/app.py:86 |
handle_yosou_submit |
software | healthy | bolt_app/app.py:166 |
value_of |
software | healthy | bolt_app/app.py:170 |
show_ranking |
software | healthy | bolt_app/app.py:201 |
make_match |
software | healthy | tests/test_build_matchups.py:15 |
test_flag_iso |
software | healthy | tests/test_build_matchups.py:53 |
test_flagcdn_url_uses_converted_iso |
software | healthy | tests/test_build_matchups.py:57 |
test_is_renderable_skips_tbd |
software | healthy | tests/test_build_matchups.py:72 |
test_selectable_matches_skips_tbd_and_sorts |
software | healthy | tests/test_build_matchups.py:79 |
test_selectable_matches_respects_only |
software | healthy | tests/test_build_matchups.py:95 |
test_index_payload_is_sorted |
software | healthy | tests/test_build_matchups.py:105 |
test_kickoff_label |
software | healthy | tests/test_build_matchups.py:112 |
_png_bytes |
software | healthy | tests/test_build_matchups.py:123 |
__init__ |
software | healthy | tests/test_build_matchups.py:204 |
raise_for_status |
software | healthy | tests/test_build_matchups.py:135 |
get |
software | healthy | tests/test_build_matchups.py:145 |
test_download_flag_returns_image_on_success |
software | healthy | tests/test_build_matchups.py:153 |
test_download_flag_returns_none_on_failure |
software | healthy | tests/test_build_matchups.py:160 |
test_download_flag_returns_none_for_unknown_team |
software | healthy | tests/test_build_matchups.py:165 |
test_flag_loader_caches_per_iso |
software | healthy | tests/test_build_matchups.py:171 |
test_flag_loader_returns_none_on_failure_is_cached |
software | healthy | tests/test_build_matchups.py:182 |
_fonts_or_skip |
software | healthy | tests/test_build_matchups.py:194 |
load |
software | healthy | tests/test_build_matchups.py:207 |
_entry |
software | healthy | tests/test_build_matchups.py:211 |
test_render_matchup_card_writes_png |
software | healthy | tests/test_build_matchups.py:226 |
test_build_matchups_writes_index |
software | healthy | tests/test_build_matchups.py:241 |
test_matchup_left_right_puts_japan_left |
software | healthy | tests/test_build_matchups.py:264 |
_head |
software | healthy | tests/test_matchup_image.py:15 |
test_matchup_image_block_returns_block_on_200 |
software | healthy | tests/test_matchup_image.py:21 |
test_matchup_image_block_returns_none_on_404 |
software | healthy | tests/test_matchup_image.py:36 |
test_matchup_image_block_returns_none_on_exception |
software | healthy | tests/test_matchup_image.py:43 |
test_matchup_image_block_custom_base_url |
software | healthy | tests/test_matchup_image.py:50 |
test_prematch_payload_inserts_image |
software | healthy | tests/test_matchup_image.py:68 |
test_prematch_payload_without_image_is_unchanged |
software | healthy | tests/test_matchup_image.py:77 |
test_poll_payload_inserts_image |
software | healthy | tests/test_matchup_image.py:85 |
test_poll_payload_without_image_is_unchanged |
software | healthy | tests/test_matchup_image.py:92 |
test_main_image_block_only_for_bot_client |
software | healthy | tests/test_matchup_image.py:101 |
test_main_image_block_skipped_for_dry_run |
software | healthy | tests/test_matchup_image.py:115 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
requirements-dev.txt |
software | healthy | requirements-dev.txt |
README.md |
software | healthy | README.md |
requirements.txt |
software | healthy | requirements.txt |
slack-app-manifest.yml |
software | healthy | slack-app-manifest.yml |
storage.py |
software | healthy | bolt_app/storage.py |
app.py |
software | healthy | bolt_app/app.py |
Dockerfile |
software | healthy | bolt_app/Dockerfile |
requirements.txt |
software | healthy | bolt_app/requirements.txt |
notified.json |
software | healthy | state/notified.json |
test_build_matchups.py |
software | healthy | tests/test_build_matchups.py |
test_matchup_image.py |
software | healthy | tests/test_matchup_image.py |
conftest.py |
software | healthy | tests/conftest.py |
test_fetch_lineup_auto.py |
software | healthy | tests/test_fetch_lineup_auto.py |
test_dry_run.py |
software | healthy | tests/test_dry_run.py |
test_build_match_facts.py |
software | healthy | tests/test_build_match_facts.py |
test_lineup.py |
software | healthy | tests/test_lineup.py |
test_predictions_summary.py |
software | healthy | tests/test_predictions_summary.py |
test_poll.py |
software | healthy | tests/test_poll.py |
test_bot_client.py |
software | healthy | tests/test_bot_client.py |
test_quiet_hours.py |
software | healthy | tests/test_quiet_hours.py |
test_build_highlights.py |
software | healthy | tests/test_build_highlights.py |
test_main.py |
software | healthy | tests/test_main.py |
test_provider.py |
software | healthy | tests/test_provider.py |
test_messages.py |
software | healthy | tests/test_messages.py |
test_build_news.py |
software | healthy | tests/test_build_news.py |
test_build_match_stats.py |
software | healthy | tests/test_build_match_stats.py |
test_flags.py |
software | healthy | tests/test_flags.py |
test_notifications.py |
software | healthy | tests/test_notifications.py |
test_build_match_predictions.py |
software | healthy | tests/test_build_match_predictions.py |
test_state.py |
software | healthy | tests/test_state.py |
test_build_site_data.py |
software | healthy | tests/test_build_site_data.py |
matches.json |
software | healthy | tests/fixtures/matches.json |
fetch_lineup_auto.py |
software | healthy | scripts/fetch_lineup_auto.py |
render_lineup.py |
software | healthy | scripts/render_lineup.py |
build_match_stats.py |
software | healthy | scripts/build_match_stats.py |
build_match_predictions.py |
software | healthy | scripts/build_match_predictions.py |
build_news.py |
software | healthy | scripts/build_news.py |
build_match_facts.py |
software | healthy | scripts/build_match_facts.py |
post_lineup.py |
software | healthy | scripts/post_lineup.py |
build_highlights.py |
software | healthy | scripts/build_highlights.py |
build_site_data.py |
software | healthy | scripts/build_site_data.py |
build_squads.py |
software | healthy | scripts/build_squads.py |
build_matchups.py |
software | healthy | scripts/build_matchups.py |
standings.html |
software | healthy | site/standings.html |
news.html |
software | healthy | site/news.html |
match.html |
software | healthy | site/match.html |
predictions.html |
software | healthy | site/predictions.html |
index.html |
software | healthy | site/index.html |
schedule.html |
software | healthy | site/schedule.html |
teams.html |
software | healthy | site/teams.html |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
GitHubStore |
software | healthy | bolt_app/storage.py:21 |
LocalStore |
software | healthy | bolt_app/storage.py:65 |
HealthHandler |
software | healthy | bolt_app/app.py:53 |
FakeResponse |
software | healthy | tests/test_build_matchups.py:131 |
FakeSession |
software | healthy | tests/test_build_matchups.py:139 |
StubFlagLoader |
software | healthy | tests/test_build_matchups.py:201 |
FixtureProvider |
software | healthy | tests/test_dry_run.py:16 |
FakeResponse |
software | healthy | tests/test_build_match_facts.py:83 |
FakeSession |
software | healthy | tests/test_build_match_facts.py:94 |
StubProvider |
software | healthy | tests/test_poll.py:22 |
PollStubSlack |
software | healthy | tests/test_poll.py:32 |
FakeClient |
software | healthy | tests/test_poll.py:345 |
PlainClient |
software | healthy | tests/test_poll.py:364 |
FakeResponse |
software | healthy | tests/test_build_highlights.py:22 |
FakeSession |
software | healthy | tests/test_build_highlights.py:33 |
StubProvider |
software | healthy | tests/test_main.py:15 |
ReactionStubSlack |
software | healthy | tests/test_main.py:25 |
StubSlack |
software | healthy | tests/test_main.py:54 |
FakeResponse |
software | healthy | tests/test_provider.py:11 |
FakeSession |
software | healthy | tests/test_provider.py:24 |
FakeResponse |
software | healthy | tests/test_build_news.py:18 |
FakeSession |
software | healthy | tests/test_build_news.py:29 |
FakeHTTPError |
software | healthy | tests/test_build_news.py:349 |
FakeResponse |
software | healthy | tests/test_build_match_stats.py:187 |
FakeSession |
software | healthy | tests/test_build_match_stats.py:198 |
FakeProvider |
software | healthy | tests/test_build_site_data.py:357 |
RateLimitedError |
software | healthy | scripts/build_news.py:222 |
QuotaExhausted |
software | healthy | scripts/build_squads.py:48 |
ApiFootballClient |
software | healthy | scripts/build_squads.py:52 |
FlagLoader |
software | healthy | scripts/build_matchups.py:169 |
Fonts |
software | healthy | scripts/build_matchups.py:208 |
SlackSender |
software | healthy | src/slack.py:60 |
SlackBotClient |
software | healthy | src/slack.py:176 |
SlackWebhookClient |
software | healthy | src/slack.py:388 |
NotificationState |
software | healthy | src/state.py:8 |
StateStore |
software | healthy | src/state.py:44 |
MatchScore |
software | healthy | src/providers/base.py:13 |
Match |
software | healthy | src/providers/base.py:22 |
Provider |
software | healthy | src/providers/base.py:43 |
FootballDataProvider |
software | healthy | src/providers/football_data.py:12 |
| Label | Layer | Status | Path |
|---|---|---|---|
bolt_app |
software | healthy | bolt_app |
state |
software | healthy | state |
tests |
software | healthy | tests |
fixtures |
software | healthy | tests/fixtures |
scripts |
software | healthy | scripts |
site |
software | healthy | site |
assets |
software | healthy | site/assets |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
providers |
software | healthy | src/providers |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::digest |
cicd | healthy | .github/workflows/digest.yml |
gha::test-post |
cicd | healthy | .github/workflows/test-post.yml |
gha::lineup-dryrun |
cicd | healthy | .github/workflows/lineup-dryrun.yml |
gha::enrich |
cicd | healthy | .github/workflows/enrich.yml |
gha::lineup |
cicd | healthy | .github/workflows/lineup.yml |
gha::notify |
cicd | healthy | .github/workflows/notify.yml |
gha::verify |
cicd | healthy | .github/workflows/verify.yml |
gha::pages |
cicd | healthy | .github/workflows/pages.yml |
gha::announce |
cicd | healthy | .github/workflows/announce.yml |
gha::squads |
cicd | healthy | .github/workflows/squads.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
digest |
cicd | healthy | .github/workflows/digest.yml |
test-post |
cicd | healthy | .github/workflows/test-post.yml |
dryrun |
cicd | healthy | .github/workflows/lineup-dryrun.yml |
enrich |
cicd | healthy | .github/workflows/enrich.yml |
post-lineup |
cicd | healthy | .github/workflows/lineup.yml |
notify |
cicd | healthy | .github/workflows/notify.yml |
verify |
cicd | healthy | .github/workflows/verify.yml |
deploy |
cicd | healthy | .github/workflows/pages.yml |
announce |
cicd | healthy | .github/workflows/announce.yml |
squads |
cicd | healthy | .github/workflows/squads.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
API_FOOTBALL_KEY |
cicd | healthy | — |
SLACK_BOT_TOKEN |
cicd | healthy | — |
GOOGLE_API_KEY |
cicd | healthy | — |
YOUTUBE_API_KEY |
cicd | healthy | — |
SLACK_WEBHOOK_URL |
cicd | healthy | — |
FOOTBALL_DATA_API_KEY |
cicd | healthy | — |
SLACK_CHANNEL_ID |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
port:7860 |
network | healthy | bolt_app/Dockerfile |
port:01 |
network | healthy | .github/workflows/notify.yml |
port:06 |
network | healthy | .github/workflows/notify.yml |
port:30 |
network | healthy | .github/workflows/notify.yml |
port:10 |
network | healthy | .github/workflows/announce.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-sky39yji |
software | healthy | /tmp/repobility-clone-sky39yji |
| Label | Layer | Status | Path |
|---|---|---|---|
124.0.0.0 |
network | healthy | scripts/build_news.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::bolt_app/Dockerfile |
hardware | healthy | bolt_app/Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::.github/workflows/verify.yml |
security | healthy | .github/workflows/verify.yml |
This page is publicly accessible at:
https://repobility.com/scan/ed39f7a4-bed3-40e3-9759-94e017c920e2/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/ed39f7a4-bed3-40e3-9759-94e017c920e2/
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.