https://github.com/wpowiertowski/posse
· scanned 2026-06-16 01:00 UTC (2 months, 1 week ago)
63 raw signals (0 security + 63 graph)
Last scanned 2 months, 1 week ago · v1 · 52 actionable findings from 1 signal source. 11 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 1221 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 |
|---|---|---|---|
setUp |
software | healthy | tests/test_repost_dead_links.py:170 |
tearDown |
software | healthy | tests/test_repost_dead_links.py:183 |
_put |
software | healthy | tests/test_repost_dead_links.py:28 |
test_selects_only_deleted_newest_first |
software | healthy | tests/test_repost_dead_links.py:36 |
test_account_filter |
software | healthy | tests/test_repost_dead_links.py:48 |
test_split_all_deleted_selected |
software | healthy | tests/test_repost_dead_links.py:59 |
_client |
software | healthy | tests/test_repost_dead_links.py:93 |
_ghost_api |
software | healthy | tests/test_repost_dead_links.py:102 |
test_successful_repost_overwrites_dead_entry |
software | healthy | tests/test_repost_dead_links.py:107 |
test_cleans_up_cached_images_after_post |
software | healthy | tests/test_repost_dead_links.py:130 |
test_skips_when_ghost_post_missing |
software | healthy | tests/test_repost_dead_links.py:149 |
test_skips_when_client_unavailable |
software | healthy | tests/test_repost_dead_links.py:159 |
test_dry_run_does_not_post |
software | healthy | tests/test_repost_dead_links.py:190 |
test_success_result |
software | healthy | tests/test_indieweb.py:45 |
test_failure_result |
software | healthy | tests/test_indieweb.py:61 |
test_connection_error_result |
software | healthy | tests/test_indieweb.py:74 |
test_create_target |
software | healthy | tests/test_indieweb.py:90 |
test_default_timeout |
software | healthy | tests/test_indieweb.py:104 |
_make_target |
software | healthy | tests/test_indieweb.py:117 |
_mock_session |
software | healthy | tests/test_indieweb.py:127 |
test_init_empty |
software | healthy | tests/test_indieweb.py:151 |
test_init_with_targets |
software | healthy | tests/test_indieweb.py:156 |
test_from_config |
software | healthy | tests/test_indieweb.py:163 |
test_from_config_empty |
software | healthy | tests/test_indieweb.py:196 |
test_send_for_post_matching_tag |
software | healthy | tests/test_indieweb.py:203 |
test_send_for_post_no_matching_tag |
software | healthy | tests/test_indieweb.py:227 |
test_send_for_post_case_insensitive_tags |
software | healthy | tests/test_indieweb.py:237 |
test_send_for_post_multiple_targets |
software | healthy | tests/test_indieweb.py:254 |
test_send_webmention_accepted_201 |
software | healthy | tests/test_indieweb.py:276 |
test_send_webmention_accepted_202 |
software | healthy | tests/test_indieweb.py:293 |
test_send_webmention_no_link_found |
software | healthy | tests/test_indieweb.py:310 |
test_send_webmention_error_json_without_description |
software | healthy | tests/test_indieweb.py:331 |
test_send_webmention_error_text_response |
software | healthy | tests/test_indieweb.py:350 |
test_send_webmention_timeout |
software | healthy | tests/test_indieweb.py:370 |
test_send_webmention_connection_error |
software | healthy | tests/test_indieweb.py:386 |
test_send_webmention_timeout_value |
software | healthy | tests/test_indieweb.py:402 |
test_tag_present_by_slug |
software | healthy | tests/test_indieweb.py:421 |
test_tag_present_by_name |
software | healthy | tests/test_indieweb.py:430 |
test_tag_absent |
software | healthy | tests/test_indieweb.py:439 |
test_empty_tags |
software | healthy | tests/test_indieweb.py:448 |
test_none_tags |
software | healthy | tests/test_indieweb.py:452 |
test_case_insensitive_matching |
software | healthy | tests/test_indieweb.py:456 |
test_custom_tag_slug |
software | healthy | tests/test_indieweb.py:466 |
test_malformed_tag_dict |
software | healthy | tests/test_indieweb.py:475 |
test_tag_with_hash_prefix |
software | healthy | tests/test_indieweb.py:486 |
test_partial_match_not_accepted |
software | healthy | tests/test_indieweb.py:495 |
test_full_config |
software | healthy | tests/test_indieweb.py:507 |
test_empty_config |
software | healthy | tests/test_indieweb.py:531 |
test_enabled_no_targets |
software | healthy | tests/test_indieweb.py:538 |
test_notify_webmention_success |
software | healthy | tests/test_indieweb.py:555 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TestBuildWorklist |
software | healthy | tests/test_repost_dead_links.py:20 |
TestRepostOne |
software | healthy | tests/test_repost_dead_links.py:75 |
TestMainDryRun |
software | healthy | tests/test_repost_dead_links.py:169 |
TestWebmentionResult |
software | healthy | tests/test_indieweb.py:42 |
TestWebmentionTarget |
software | healthy | tests/test_indieweb.py:87 |
TestWebmentionClient |
software | healthy | tests/test_indieweb.py:114 |
TestHasTag |
software | healthy | tests/test_indieweb.py:418 |
TestGetWebmentionConfig |
software | healthy | tests/test_indieweb.py:504 |
TestPushoverWebmentionNotifications |
software | healthy | tests/test_indieweb.py:551 |
TestIsPrivateOrLoopback |
software | healthy | tests/test_indieweb.py:614 |
TestBuildSession |
software | healthy | tests/test_indieweb.py:680 |
TestDiscoveryProtections |
software | healthy | tests/test_indieweb.py:693 |
TestSendWebmentionProtections |
software | healthy | tests/test_indieweb.py:741 |
TestReceiverEndpoint |
software | healthy | tests/test_webmention_receiver.py:86 |
TestQueryEndpoint |
software | healthy | tests/test_webmention_receiver.py:225 |
TestSourceLinksToTarget |
software | healthy | tests/test_webmention_receiver.py:317 |
TestExtractHentryMetadata |
software | healthy | tests/test_webmention_receiver.py:356 |
TestVerifyWebmention |
software | healthy | tests/test_webmention_receiver.py:409 |
TestReceivedWebmentionStorage |
software | healthy | tests/test_webmention_receiver.py:519 |
TestNotifyNewSocialReply |
software | healthy | tests/test_social_reply_notifications.py:57 |
TestNotifyNewWebmentionReply |
software | healthy | tests/test_social_reply_notifications.py:117 |
TestCollectReplyUrls |
software | healthy | tests/test_social_reply_notifications.py:169 |
TestNotifyNewReplies |
software | healthy | tests/test_social_reply_notifications.py:223 |
TestSyncPostInteractionsNotifications |
software | healthy | tests/test_social_reply_notifications.py:309 |
TestWebmentionReplyEndpointNotification |
software | healthy | tests/test_social_reply_notifications.py:485 |
TestSecurityInputValidation |
software | healthy | tests/test_ghost.py:462 |
TestSecurityErrorSanitization |
software | healthy | tests/test_ghost.py:542 |
TestMultiAccountConfiguration |
software | healthy | tests/test_multi_account.py:12 |
TestSanitizeContentHtml |
software | healthy | tests/test_content_sanitizer.py:9 |
TestSanitizeContentText |
software | healthy | tests/test_content_sanitizer.py:152 |
TestResanitizeStorage |
software | healthy | tests/test_resanitize_stored.py:69 |
TestCli |
software | healthy | tests/test_resanitize_stored.py:135 |
TestUpdateInteractionDataOnSyndication |
software | healthy | tests/test_syndication_db_update.py:50 |
TestStoreSyndicationMappingUpdatesInteractionData |
software | healthy | tests/test_syndication_db_update.py:191 |
TestSyncPostInteractionsSplitLinks |
software | healthy | tests/test_syndication_db_update.py:294 |
TestGhostEndpointSplitSyndicationLink |
software | healthy | tests/test_syndication_db_update.py:419 |
TestMastodonClient |
software | healthy | tests/test_mastodon.py:27 |
TestPushoverLoggingHandler |
software | healthy | tests/test_pushover.py:40 |
TestPushoverNotifier |
software | healthy | tests/test_pushover.py:83 |
TestLLMClientInitialization |
software | healthy | tests/test_llm.py:58 |
TestLLMClientImageEncoding |
software | healthy | tests/test_llm.py:112 |
TestLLMClientHealthCheck |
software | healthy | tests/test_llm.py:135 |
TestLLMClientAltTextGeneration |
software | healthy | tests/test_llm.py:190 |
ConcreteClient |
software | healthy | tests/test_base_client.py:22 |
TestBaseClient |
software | healthy | tests/test_base_client.py:38 |
TestValidation |
software | healthy | tests/test_webmention_reply.py:121 |
TestUrlValidation |
software | healthy | tests/test_webmention_reply.py:178 |
TestUtilities |
software | healthy | tests/test_webmention_reply.py:198 |
TestReplyStorage |
software | healthy | tests/test_webmention_reply.py:237 |
TestRenderHentry |
software | healthy | tests/test_webmention_reply.py:272 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
config.example.yml |
software | healthy | config.example.yml |
poetry.lock |
software | healthy | poetry.lock |
README.md |
software | healthy | README.md |
CLAUDE.md |
software | healthy | CLAUDE.md |
Dockerfile |
software | healthy | Dockerfile |
config.yml |
software | healthy | config.yml |
.env.example |
software | healthy | .env.example |
pyproject.toml |
software | healthy | pyproject.toml |
Makefile |
software | healthy | Makefile |
LICENSE |
software | healthy | LICENSE |
REPOST_PLAN.md |
software | healthy | REPOST_PLAN.md |
CHANGELOG.md |
software | healthy | CHANGELOG.md |
docker-compose.yml |
software | healthy | docker-compose.yml |
test_repost_dead_links.py |
software | healthy | tests/test_repost_dead_links.py |
test_indieweb.py |
software | healthy | tests/test_indieweb.py |
test_webmention_receiver.py |
software | healthy | tests/test_webmention_receiver.py |
test_social_reply_notifications.py |
software | healthy | tests/test_social_reply_notifications.py |
test_image_filtering.py |
software | healthy | tests/test_image_filtering.py |
test_interactions_endpoint.py |
software | healthy | tests/test_interactions_endpoint.py |
test_ghost.py |
software | healthy | tests/test_ghost.py |
conftest.py |
software | healthy | tests/conftest.py |
test_multi_account.py |
software | healthy | tests/test_multi_account.py |
test_content_sanitizer.py |
software | healthy | tests/test_content_sanitizer.py |
test_resanitize_stored.py |
software | healthy | tests/test_resanitize_stored.py |
test_syndication_db_update.py |
software | healthy | tests/test_syndication_db_update.py |
test_mastodon.py |
software | healthy | tests/test_mastodon.py |
test_pushover.py |
software | healthy | tests/test_pushover.py |
test_llm.py |
software | healthy | tests/test_llm.py |
test_pushover_integration.py |
software | healthy | tests/test_pushover_integration.py |
test_base_client.py |
software | healthy | tests/test_base_client.py |
test_content_extraction.py |
software | healthy | tests/test_content_extraction.py |
test_async_posting.py |
software | healthy | tests/test_async_posting.py |
test_webmention_reply.py |
software | healthy | tests/test_webmention_reply.py |
test_config.py |
software | healthy | tests/test_config.py |
test_link_tracking.py |
software | healthy | tests/test_link_tracking.py |
test_split_multi_image_posts.py |
software | healthy | tests/test_split_multi_image_posts.py |
test_post_update_webhook.py |
software | healthy | tests/test_post_update_webhook.py |
test_post_retry.py |
software | healthy | tests/test_post_retry.py |
test_interaction_storage.py |
software | healthy | tests/test_interaction_storage.py |
test_dead_link_pruning.py |
software | healthy | tests/test_dead_link_pruning.py |
test_ref_links.py |
software | healthy | tests/test_ref_links.py |
test_tag_filtering.py |
software | healthy | tests/test_tag_filtering.py |
test_bluesky.py |
software | healthy | tests/test_bluesky.py |
test_security.py |
software | healthy | tests/test_security.py |
test_interaction_discovery.py |
software | healthy | tests/test_interaction_discovery.py |
valid_ghost_post.json |
software | healthy | tests/fixtures/valid_ghost_post.json |
WEBMENTION_SENDING_GUIDE.md |
software | healthy | docs/WEBMENTION_SENDING_GUIDE.md |
WEBMENTION_STANDARD_REVIEW.md |
software | healthy | docs/WEBMENTION_STANDARD_REVIEW.md |
INTERACTION_SYNC_README.md |
software | healthy | docs/INTERACTION_SYNC_README.md |
WEBMENTION_RECEIVER_DESIGN.md |
software | healthy | docs/WEBMENTION_RECEIVER_DESIGN.md |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_bluesky.py |
security | healthy | tests/test_bluesky.py |
password_literal::tests/test_interaction_discovery.py |
security | healthy | tests/test_interaction_discovery.py |
password_literal::tests/test_interaction_discovery.py |
security | healthy | tests/test_interaction_discovery.py |
password_literal::src/social/bluesky_client.py |
security | healthy | src/social/bluesky_client.py |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
fixtures |
software | healthy | tests/fixtures |
docs |
software | healthy | docs |
widget |
software | healthy | widget |
docs |
software | healthy | widget/docs |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
ghost |
software | healthy | src/ghost |
notifications |
software | healthy | src/notifications |
config |
software | healthy | src/config |
posse |
software | healthy | src/posse |
static |
software | healthy | src/static |
interactions |
software | healthy | src/interactions |
schema |
software | healthy | src/schema |
social |
software | healthy | src/social |
indieweb |
software | healthy | src/indieweb |
llm |
software | healthy | src/llm |
| Label | Layer | Status | Path |
|---|---|---|---|
ANY /webhook/ghost/post-updated |
api | healthy | src/ghost/ghost.py |
ANY /webhook/ghost/post-deleted |
api | healthy | src/ghost/ghost.py |
ANY /webhook/ghost |
api | healthy | src/ghost/ghost.py |
ANY /health |
api | healthy | src/ghost/ghost.py |
ANY /api/interactions/<ghost_post_id> |
api | healthy | src/ghost/ghost.py |
ANY /api/interactions/<ghost_post_id>/sync |
api | healthy | src/ghost/ghost.py |
ANY /api/webmentions |
api | healthy | src/ghost/ghost.py |
ANY /webmention |
api | healthy | src/ghost/ghost.py |
ANY /api/webmention/reply |
api | healthy | src/ghost/ghost.py |
ANY /reply/<reply_id> |
api | healthy | src/ghost/ghost.py |
| Label | Layer | Status | Path |
|---|---|---|---|
1.2.0.0 |
network | healthy | poetry.lock |
1.3.1.3 |
network | healthy | Dockerfile |
1.3.1.2 |
network | healthy | Dockerfile |
127.0.0.1 |
network | healthy | tests/test_indieweb.py |
10.0.0.1 |
network | healthy | tests/test_indieweb.py |
192.168.1.1 |
network | healthy | tests/test_indieweb.py |
172.16.0.1 |
network | healthy | tests/test_indieweb.py |
93.184.216.34 |
network | healthy | tests/test_indieweb.py |
169.254.1.1 |
network | healthy | tests/test_indieweb.py |
192.168.1.2 |
network | healthy | tests/test_webmention_reply.py |
| Label | Layer | Status | Path |
|---|---|---|---|
interaction_data |
data | healthy | src/interactions/storage.py |
syndication_mappings |
data | healthy | src/interactions/storage.py |
webmention_replies |
data | healthy | src/interactions/storage.py |
sent_webmentions |
data | healthy | src/interactions/storage.py |
received_webmentions |
data | healthy | src/interactions/storage.py |
| Label | Layer | Status | Path |
|---|---|---|---|
osv-scan |
cicd | healthy | .github/workflows/audit.yml |
image-scan |
cicd | healthy | .github/workflows/audit.yml |
publish |
cicd | healthy | .github/workflows/docker-publish.yml |
test |
cicd | healthy | .github/workflows/ci.yml |
claude |
cicd | healthy | .github/workflows/claude.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
DOCKER_HUB_USERNAME |
cicd | healthy | — |
PUSHOVER_USER_KEY |
cicd | healthy | — |
DOCKER_HUB_TOKEN |
cicd | healthy | — |
PUSHOVER_APP_TOKEN |
cicd | healthy | — |
ANTHROPIC_API_KEY |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
port:5000 |
network | healthy | config.example.yml |
port:256 |
network | healthy | Dockerfile |
port:00397 |
network | healthy | Dockerfile |
port:443 |
network | healthy | tests/test_llm.py |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::audit |
cicd | healthy | .github/workflows/audit.yml |
gha::docker-publish |
cicd | healthy | .github/workflows/docker-publish.yml |
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
gha::claude |
cicd | healthy | .github/workflows/claude.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
sqlite |
data | healthy | CLAUDE.md |
mongodb |
data | healthy | tests/test_ghost.py |
redis |
data | healthy | src/ghost/ghost.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
app |
hardware | healthy | docker-compose.yml |
test |
hardware | healthy | docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
haproxy |
network | healthy | src/ghost/ghost.py |
nginx |
network | healthy | src/ghost/ghost.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-mb3zf6vz |
software | healthy | /tmp/repobility-clone-mb3zf6vz |
This page is publicly accessible at:
https://repobility.com/scan/7d341cf7-e510-4c0a-a997-c2ae778a1445/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/7d341cf7-e510-4c0a-a997-c2ae778a1445/
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.