https://github.com/djacobs/Pinwheel
· scanned 2026-06-17 01:57 UTC (1 month, 1 week ago)
119 raw signals (0 security + 119 graph)
Last scanned 1 month, 1 week ago · v2 · last Δ -10.3 (diff) · 99 actionable findings from 1 signal source. 20 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 5132 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 |
|---|---|---|---|
in |
software | healthy | static/js/sse.js:in |
createEventSource |
software | healthy | static/js/sse.js:createEventSource |
registerSSE |
software | healthy | static/js/sse.js:registerSSE |
ensureEventSourceOnElement |
software | healthy | static/js/sse.js:ensureEventSourceOnElement |
ensureEventSource |
software | healthy | static/js/sse.js:ensureEventSource |
returns |
software | healthy | static/js/sse.js:returns |
maybeCloseSSESource |
software | healthy | static/js/sse.js:maybeCloseSSESource |
swap |
software | healthy | static/js/sse.js:swap |
hasEventSource |
software | healthy | static/js/sse.js:hasEventSource |
d |
software | healthy | static/js/htmx.min.js:d |
ae |
software | healthy | static/js/htmx.min.js:ae |
we |
software | healthy | static/js/htmx.min.js:we |
et |
software | healthy | static/js/htmx.min.js:et |
it |
software | healthy | static/js/htmx.min.js:it |
yt |
software | healthy | static/js/htmx.min.js:yt |
Ot |
software | healthy | static/js/htmx.min.js:Ot |
Ut |
software | healthy | static/js/htmx.min.js:Ut |
Xn |
software | healthy | static/js/htmx.min.js:Xn |
Vn |
software | healthy | static/js/htmx.min.js:Vn |
make_interaction |
software | healthy | tests/test_codegen_admin.py:38 |
_make_settings |
software | healthy | tests/test_codegen_admin.py:52 |
_make_codegen_effect |
software | healthy | tests/test_codegen_admin.py:69 |
_make_game_state |
software | healthy | tests/test_codegen_admin.py:96 |
test_embed_has_correct_title_enabled |
software | healthy | tests/test_codegen_admin.py:140 |
test_embed_has_correct_title_disabled |
software | healthy | tests/test_codegen_admin.py:146 |
test_embed_shows_description |
software | healthy | tests/test_codegen_admin.py:151 |
test_embed_has_trust_level_field |
software | healthy | tests/test_codegen_admin.py:156 |
test_embed_has_execution_count |
software | healthy | tests/test_codegen_admin.py:162 |
test_embed_has_error_count |
software | healthy | tests/test_codegen_admin.py:168 |
test_embed_shows_code_preview |
software | healthy | tests/test_codegen_admin.py:174 |
test_embed_truncates_long_code |
software | healthy | tests/test_codegen_admin.py:181 |
test_embed_shows_disabled_reason |
software | healthy | tests/test_codegen_admin.py:188 |
test_embed_shows_last_error |
software | healthy | tests/test_codegen_admin.py:196 |
test_embed_shows_code_hash |
software | healthy | tests/test_codegen_admin.py:203 |
test_embed_footer |
software | healthy | tests/test_codegen_admin.py:209 |
test_embed_color |
software | healthy | tests/test_codegen_admin.py:214 |
test_codegen_effect_shows_metadata |
software | healthy | tests/test_codegen_admin.py:229 |
test_disabled_codegen_shows_disabled |
software | healthy | tests/test_codegen_admin.py:241 |
test_non_codegen_no_codegen_metadata |
software | healthy | tests/test_codegen_admin.py:248 |
test_mixed_effects_summary |
software | healthy | tests/test_codegen_admin.py:260 |
test_non_admin_rejected |
software | healthy | tests/test_codegen_admin.py:379 |
test_no_guild_rejected |
software | healthy | tests/test_codegen_admin.py:393 |
test_no_engine_rejected |
software | healthy | tests/test_codegen_admin.py:407 |
test_full_lifecycle |
software | healthy | tests/test_codegen_admin.py:429 |
test_lifecycle_with_disable |
software | healthy | tests/test_codegen_admin.py:497 |
test_lifecycle_effects_summary_reflects_state |
software | healthy | tests/test_codegen_admin.py:534 |
test_lifecycle_embed_reflects_state |
software | healthy | tests/test_codegen_admin.py:560 |
_make_attrs |
software | healthy | tests/test_strategy_integration.py:34 |
_make_hooper |
software | healthy | tests/test_strategy_integration.py:59 |
_make_team |
software | healthy | tests/test_strategy_integration.py:76 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TestCodegenReviewEmbed |
software | healthy | tests/test_codegen_admin.py:137 |
TestEffectsSummaryCodegen |
software | healthy | tests/test_codegen_admin.py:226 |
TestReviewCodegenCommand |
software | healthy | tests/test_codegen_admin.py:294 |
TestDisableEffectCommand |
software | healthy | tests/test_codegen_admin.py:343 |
TestRerunCouncilCommand |
software | healthy | tests/test_codegen_admin.py:375 |
TestCodegenEndToEndLifecycle |
software | healthy | tests/test_codegen_admin.py:426 |
TestDefensiveIntensityFoulRate |
software | healthy | tests/test_strategy_integration.py:104 |
TestDefensiveIntensityStaminaDrain |
software | healthy | tests/test_strategy_integration.py:177 |
TestPaceModifierStaminaDrain |
software | healthy | tests/test_strategy_integration.py:223 |
TestStrategySchemeSelection |
software | healthy | tests/test_strategy_integration.py:319 |
TestStrategyInGameResult |
software | healthy | tests/test_strategy_integration.py:412 |
TestFullGameStrategyIntegration |
software | healthy | tests/test_strategy_integration.py:448 |
TestStrategyDeterminism |
software | healthy | tests/test_strategy_integration.py:563 |
TestComputeRoundStartTimes |
software | healthy | tests/test_schedule_times.py:12 |
TestFormatGameTime |
software | healthy | tests/test_schedule_times.py:71 |
TestGroupIntoSlots |
software | healthy | tests/test_schedule_times.py:114 |
Entry |
software | healthy | tests/test_schedule_times.py:177 |
TestArchetypes |
software | healthy | tests/test_seeding.py:10 |
TestLeagueGeneration |
software | healthy | tests/test_seeding.py:35 |
TestYAMLRoundTrip |
software | healthy | tests/test_seeding.py:60 |
TestEmptyPages |
software | healthy | tests/test_pages.py:110 |
TestPopulatedPages |
software | healthy | tests/test_pages.py:133 |
TestArenaLive |
software | healthy | tests/test_pages.py:242 |
TestHooperPages |
software | healthy | tests/test_pages.py:289 |
TestGovernorPages |
software | healthy | tests/test_pages.py:317 |
TestTeamTrajectory |
software | healthy | tests/test_pages.py:474 |
TestAdminRoster |
software | healthy | tests/test_pages.py:817 |
TestAdminSeason |
software | healthy | tests/test_pages.py:871 |
TestAdminLandingPage |
software | healthy | tests/test_pages.py:935 |
TestGovernancePhaseContext |
software | healthy | tests/test_pages.py:1030 |
TestStandingsCallouts |
software | healthy | tests/test_pages.py:1086 |
TestReportsPhaseContext |
software | healthy | tests/test_pages.py:1193 |
TestBuildSeriesContext |
software | healthy | tests/test_pages.py:1213 |
TestBuildSeriesDescriptionFallback |
software | healthy | tests/test_pages.py:1337 |
TestArenaSeriesContextLive |
software | healthy | tests/test_pages.py:1363 |
TestGameDetailContext |
software | healthy | tests/test_pages.py:1491 |
TestGameDetailHistoricalContext |
software | healthy | tests/test_pages.py:1639 |
MockGame |
software | healthy | tests/test_pages.py:1808 |
TestRulesPageHistory |
software | healthy | tests/test_pages.py:1894 |
TestRulesPageGameplayDelta |
software | healthy | tests/test_pages.py:2120 |
TestRepositoryAvgGameScore |
software | healthy | tests/test_pages.py:2321 |
TestWhatChangedFallback |
software | healthy | tests/test_pages.py:2372 |
TestWhatChangedPartialEndpoint |
software | healthy | tests/test_pages.py:2441 |
TestWhatChangedHomePage |
software | healthy | tests/test_pages.py:2504 |
TestGameDetailAnnotations |
software | healthy | tests/test_pages.py:2536 |
TestHooperBioXSS |
software | healthy | tests/test_pages.py:2641 |
TestSplitStandings |
software | healthy | tests/test_pages.py:2807 |
TestTallyHooperTrade |
software | healthy | tests/test_tokens.py:39 |
TestExecuteHooperTrade |
software | healthy | tests/test_tokens.py:229 |
TestTradeTimingWithSimulation |
software | healthy | tests/test_tokens.py:298 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
CLAUDE.md |
software | healthy | CLAUDE.md |
AGENTS.md |
software | healthy | AGENTS.md |
fly.toml |
software | healthy | fly.toml |
README.md |
software | healthy | README.md |
pyproject.toml |
software | healthy | pyproject.toml |
Dockerfile |
software | healthy | Dockerfile |
sse.js |
software | healthy | static/js/sse.js |
htmx.min.js |
software | healthy | static/js/htmx.min.js |
pinwheel.css |
software | healthy | static/css/pinwheel.css |
test_codegen_admin.py |
software | healthy | tests/test_codegen_admin.py |
test_strategy_integration.py |
software | healthy | tests/test_strategy_integration.py |
test_schedule_times.py |
software | healthy | tests/test_schedule_times.py |
test_seeding.py |
software | healthy | tests/test_seeding.py |
test_pages.py |
software | healthy | tests/test_pages.py |
test_tokens.py |
software | healthy | tests/test_tokens.py |
test_pace.py |
software | healthy | tests/test_pace.py |
test_scheduler_runner.py |
software | healthy | tests/test_scheduler_runner.py |
test_governance.py |
software | healthy | tests/test_governance.py |
test_season_lifecycle.py |
software | healthy | tests/test_season_lifecycle.py |
test_season.py |
software | healthy | tests/test_season.py |
conftest.py |
software | healthy | tests/conftest.py |
test_presenter.py |
software | healthy | tests/test_presenter.py |
test_auth.py |
software | healthy | tests/test_auth.py |
test_admin_review.py |
software | healthy | tests/test_admin_review.py |
test_amendment.py |
software | healthy | tests/test_amendment.py |
test_memorial.py |
software | healthy | tests/test_memorial.py |
test_onboarding.py |
software | healthy | tests/test_onboarding.py |
test_follow.py |
software | healthy | tests/test_follow.py |
test_action_registry.py |
software | healthy | tests/test_action_registry.py |
test_simulation.py |
software | healthy | tests/test_simulation.py |
__init__.py |
software | healthy | tests/__init__.py |
test_discord.py |
software | healthy | tests/test_discord.py |
test_codegen.py |
software | healthy | tests/test_codegen.py |
test_commentary.py |
software | healthy | tests/test_commentary.py |
test_drama.py |
software | healthy | tests/test_drama.py |
test_classifier.py |
software | healthy | tests/test_classifier.py |
test_rules_dashboard.py |
software | healthy | tests/test_rules_dashboard.py |
test_charts.py |
software | healthy | tests/test_charts.py |
test_codegen_lifecycle.py |
software | healthy | tests/test_codegen_lifecycle.py |
test_trajectory.py |
software | healthy | tests/test_trajectory.py |
test_game_definition_patch.py |
software | healthy | tests/test_game_definition_patch.py |
test_messages_api.py |
software | healthy | tests/test_messages_api.py |
test_insights.py |
software | healthy | tests/test_insights.py |
test_models.py |
software | healthy | tests/test_models.py |
test_game_loop.py |
software | healthy | tests/test_game_loop.py |
test_admin_perf.py |
software | healthy | tests/test_admin_perf.py |
test_bot_search.py |
software | healthy | tests/test_bot_search.py |
test_sse_security.py |
software | healthy | tests/test_sse_security.py |
test_pages_what_changed.py |
software | healthy | tests/test_pages_what_changed.py |
test_playoffs.py |
software | healthy | tests/test_playoffs.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
GET /health |
api | healthy | src/pinwheel/main.py |
GET /review |
api | healthy | src/pinwheel/api/admin_review.py |
GET /round/{season_id}/{round_number} |
api | healthy | src/pinwheel/api/reports.py |
GET /private/{season_id}/{governor_id} |
api | healthy | src/pinwheel/api/reports.py |
GET /latest/{season_id} |
api | healthy | src/pinwheel/api/reports.py |
GET /standings |
api | healthy | src/pinwheel/api/standings.py |
GET / |
api | healthy | src/pinwheel/api/teams.py |
GET /{team_id} |
api | healthy | src/pinwheel/api/teams.py |
GET /stream |
api | healthy | src/pinwheel/api/events.py |
GET /proposals |
api | healthy | src/pinwheel/api/governance.py |
GET /rules/current |
api | healthy | src/pinwheel/api/governance.py |
GET /rules/history |
api | healthy | src/pinwheel/api/governance.py |
POST / |
api | healthy | src/pinwheel/api/seasons.py |
POST /advance |
api | healthy | src/pinwheel/api/pace.py |
GET /status |
api | healthy | src/pinwheel/api/pace.py |
GET /season |
api | healthy | src/pinwheel/api/admin_season.py |
GET /workbench |
api | healthy | src/pinwheel/api/admin_workbench.py |
POST /workbench/test-classifier |
api | healthy | src/pinwheel/api/admin_workbench.py |
GET /perf |
api | healthy | src/pinwheel/api/admin_perf.py |
GET /partials/what-changed |
api | healthy | src/pinwheel/api/pages.py |
GET /play |
api | healthy | src/pinwheel/api/pages.py |
GET /arena |
api | healthy | src/pinwheel/api/pages.py |
GET /games/{game_id} |
api | healthy | src/pinwheel/api/pages.py |
GET /teams/{team_id} |
api | healthy | src/pinwheel/api/pages.py |
GET /hoopers/{hooper_id} |
api | healthy | src/pinwheel/api/pages.py |
GET /hoopers/{hooper_id}/bio/edit |
api | healthy | src/pinwheel/api/pages.py |
GET /hoopers/{hooper_id}/bio/view |
api | healthy | src/pinwheel/api/pages.py |
POST /hoopers/{hooper_id}/bio |
api | healthy | src/pinwheel/api/pages.py |
GET /governors/{player_id} |
api | healthy | src/pinwheel/api/pages.py |
GET /governance |
api | healthy | src/pinwheel/api/pages.py |
GET /rules |
api | healthy | src/pinwheel/api/pages.py |
GET /reports |
api | healthy | src/pinwheel/api/pages.py |
GET /post |
api | healthy | src/pinwheel/api/pages.py |
GET /playoffs |
api | healthy | src/pinwheel/api/pages.py |
GET /seasons/archive |
api | healthy | src/pinwheel/api/pages.py |
GET /seasons/archive/{season_id} |
api | healthy | src/pinwheel/api/pages.py |
GET /history |
api | healthy | src/pinwheel/api/pages.py |
GET /seasons/{season_id}/memorial |
api | healthy | src/pinwheel/api/pages.py |
GET /admin |
api | healthy | src/pinwheel/api/pages.py |
GET /terms |
api | healthy | src/pinwheel/api/pages.py |
GET /privacy |
api | healthy | src/pinwheel/api/pages.py |
GET /playoffs/bracket |
api | healthy | src/pinwheel/api/games.py |
GET /{game_id} |
api | healthy | src/pinwheel/api/games.py |
GET /{game_id}/boxscore |
api | healthy | src/pinwheel/api/games.py |
POST /api/teams/{team_id}/follow |
api | healthy | src/pinwheel/api/follow.py |
DELETE /api/teams/{team_id}/follow |
api | healthy | src/pinwheel/api/follow.py |
GET /roster |
api | healthy | src/pinwheel/api/admin_roster.py |
GET /evals |
api | healthy | src/pinwheel/api/eval_dashboard.py |
GET /costs |
api | healthy | src/pinwheel/api/admin_costs.py |
GET /login |
api | healthy | src/pinwheel/auth/oauth.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
Base |
data | healthy | src/pinwheel/db/models.py |
LeagueRow |
data | healthy | src/pinwheel/db/models.py |
SeasonRow |
data | healthy | src/pinwheel/db/models.py |
TeamRow |
data | healthy | src/pinwheel/db/models.py |
HooperRow |
data | healthy | src/pinwheel/db/models.py |
GameResultRow |
data | healthy | src/pinwheel/db/models.py |
BoxScoreRow |
data | healthy | src/pinwheel/db/models.py |
GovernanceEventRow |
data | healthy | src/pinwheel/db/models.py |
ReportRow |
data | healthy | src/pinwheel/db/models.py |
PlayerRow |
data | healthy | src/pinwheel/db/models.py |
ScheduleRow |
data | healthy | src/pinwheel/db/models.py |
BotStateRow |
data | healthy | src/pinwheel/db/models.py |
SeasonArchiveRow |
data | healthy | src/pinwheel/db/models.py |
AIUsageLogRow |
data | healthy | src/pinwheel/db/models.py |
EvalResultRow |
data | healthy | src/pinwheel/db/models.py |
leagues |
data | healthy | src/pinwheel/db/models.py |
seasons |
data | healthy | src/pinwheel/db/models.py |
teams |
data | healthy | src/pinwheel/db/models.py |
hoopers |
data | healthy | src/pinwheel/db/models.py |
game_results |
data | healthy | src/pinwheel/db/models.py |
box_scores |
data | healthy | src/pinwheel/db/models.py |
governance_events |
data | healthy | src/pinwheel/db/models.py |
reports |
data | healthy | src/pinwheel/db/models.py |
players |
data | healthy | src/pinwheel/db/models.py |
schedule |
data | healthy | src/pinwheel/db/models.py |
bot_state |
data | healthy | src/pinwheel/db/models.py |
season_archives |
data | healthy | src/pinwheel/db/models.py |
ai_usage_log |
data | healthy | src/pinwheel/db/models.py |
eval_results |
data | healthy | src/pinwheel/db/models.py |
| Label | Layer | Status | Path |
|---|---|---|---|
static |
software | healthy | static |
js |
software | healthy | static/js |
css |
software | healthy | static/css |
tests |
software | healthy | tests |
test_api |
software | healthy | tests/test_api |
test_evals |
software | healthy | tests/test_evals |
scripts |
software | healthy | scripts |
demo |
software | healthy | demo |
templates |
software | healthy | templates |
components |
software | healthy | templates/components |
pages |
software | healthy | templates/pages |
partials |
software | healthy | templates/partials |
src |
software | healthy | src |
pinwheel |
software | healthy | src/pinwheel |
evals |
software | healthy | src/pinwheel/evals |
api |
software | healthy | src/pinwheel/api |
auth |
software | healthy | src/pinwheel/auth |
models |
software | healthy | src/pinwheel/models |
db |
software | healthy | src/pinwheel/db |
core |
software | healthy | src/pinwheel/core |
discord |
software | healthy | src/pinwheel/discord |
ai |
software | healthy | src/pinwheel/ai |
docs |
software | healthy | docs |
dev_log |
software | healthy | docs/dev_log |
plans |
software | healthy | docs/plans |
skills |
software | healthy | docs/skills |
post-commit |
software | healthy | docs/skills/post-commit |
product |
software | healthy | docs/product |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::src/pinwheel/auth/deps.py |
security | healthy | src/pinwheel/auth/deps.py |
auth::src/pinwheel/api/reports.py |
security | healthy | src/pinwheel/api/reports.py |
auth::tests/test_ai_costs.py |
security | healthy | tests/test_ai_costs.py |
auth::templates/pages/terms.html |
security | healthy | templates/pages/terms.html |
auth::src/pinwheel/auth/oauth.py |
security | healthy | src/pinwheel/auth/oauth.py |
auth::src/pinwheel/api/admin_roster.py |
security | healthy | src/pinwheel/api/admin_roster.py |
auth::src/pinwheel/api/admin_perf.py |
security | healthy | src/pinwheel/api/admin_perf.py |
auth::CLAUDE.md |
security | healthy | CLAUDE.md |
auth::src/pinwheel/api/eval_dashboard.py |
security | healthy | src/pinwheel/api/eval_dashboard.py |
auth::tests/test_evals/test_eval_dashboard.py |
security | healthy | tests/test_evals/test_eval_dashboard.py |
auth::tests/test_auth.py |
security | healthy | tests/test_auth.py |
auth::tests/test_pages.py |
security | healthy | tests/test_pages.py |
auth::src/pinwheel/db/repository.py |
security | healthy | src/pinwheel/db/repository.py |
auth::src/pinwheel/api/admin_costs.py |
security | healthy | src/pinwheel/api/admin_costs.py |
auth::src/pinwheel/api/admin_review.py |
security | healthy | src/pinwheel/api/admin_review.py |
auth::src/pinwheel/main.py |
security | healthy | src/pinwheel/main.py |
auth::src/pinwheel/api/admin_workbench.py |
security | healthy | src/pinwheel/api/admin_workbench.py |
auth::templates/pages/privacy.html |
security | healthy | templates/pages/privacy.html |
auth::tests/test_admin_perf.py |
security | healthy | tests/test_admin_perf.py |
auth::tests/test_evals/test_injection.py |
security | healthy | tests/test_evals/test_injection.py |
auth::tests/test_admin_review.py |
security | healthy | tests/test_admin_review.py |
auth::tests/test_admin_workbench.py |
security | healthy | tests/test_admin_workbench.py |
auth::tests/test_admin_auth.py |
security | healthy | tests/test_admin_auth.py |
| Label | Layer | Status | Path |
|---|---|---|---|
sqlite |
data | healthy | CLAUDE.md |
redis |
data | healthy | CLAUDE.md |
postgresql |
data | healthy | src/pinwheel/config.py |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8080 |
network | healthy | Dockerfile |
port:8765 |
network | healthy | scripts/run_demo.sh |
| Label | Layer | Status | Path |
|---|---|---|---|
djacobs__Pinwheel |
software | healthy | /data/fable5_failed_archive/djacobs__Pinwheel |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
vps::aws |
hardware | healthy | tests/test_reports.py |
This page is publicly accessible at:
https://repobility.com/scan/61d567b8-d082-4667-815a-72dd7f74b56f/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/61d567b8-d082-4667-815a-72dd7f74b56f/
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.