https://github.com/davindev/vidoctor
· scanned 2026-06-17 01:53 UTC (1 month, 1 week ago)
25 raw signals (0 security + 25 graph)
Last scanned 1 month, 1 week ago · v2 · last Δ +3.9 (diff) · 24 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.
All 600 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 |
|---|---|---|---|
analyze_video |
software | healthy | vidoctor_modal.py:98 |
_on_node |
software | healthy | vidoctor_modal.py:152 |
_normal_speech |
software | healthy | tests/test_cps.py:8 |
_append_anomaly |
software | healthy | tests/test_cps.py:21 |
test_empty_input |
software | healthy | tests/test_cps.py:31 |
test_short_audio_no_windows |
software | healthy | tests/test_cps.py:35 |
test_normal_speech_no_anomaly |
software | healthy | tests/test_cps.py:40 |
test_too_fast_segment_detected |
software | healthy | tests/test_cps.py:46 |
test_too_slow_segment_detected |
software | healthy | tests/test_cps.py:56 |
test_long_pause_excluded_from_cps |
software | healthy | tests/test_cps.py:67 |
test_filler_words_excluded_from_cps |
software | healthy | tests/test_cps.py:85 |
test_anomalies_localized_to_anomaly_segment |
software | healthy | tests/test_cps.py:98 |
w |
software | healthy | tests/_helpers.py:12 |
write_video |
software | healthy | tests/_helpers.py:17 |
test_transcribe_sync_raises_on_missing_file |
software | healthy | tests/test_audio.py:25 |
test_transcribe_video_propagates_missing_file_error |
software | healthy | tests/test_audio.py:30 |
korean_sample_audio |
software | healthy | tests/test_audio.py:41 |
test_transcribe_korean_sample |
software | healthy | tests/test_audio.py:63 |
test_filler_dictionary_word_detected |
software | healthy | tests/test_filler.py:10 |
test_punctuation_normalized |
software | healthy | tests/test_filler.py:16 |
test_normal_word_not_detected |
software | healthy | tests/test_filler.py:21 |
test_logical_connective_not_filler |
software | healthy | tests/test_filler.py:26 |
test_repetition_detected |
software | healthy | tests/test_filler.py:33 |
test_repetition_too_far_apart_not_merged |
software | healthy | tests/test_filler.py:42 |
test_empty_input |
software | healthy | tests/test_filler.py:50 |
test_mixed_natural_with_fillers |
software | healthy | tests/test_filler.py:54 |
_stub_heavy_nodes |
software | healthy | tests/test_graph.py:17 |
_empty_words |
software | healthy | tests/test_graph.py:23 |
_empty_dead_zone |
software | healthy | tests/test_graph.py:26 |
_empty_content_gap |
software | healthy | tests/test_graph.py:29 |
_empty_gaze |
software | healthy | tests/test_graph.py:32 |
test_graph_compiles |
software | healthy | tests/test_graph.py:45 |
test_graph_runs_with_active_dimensions |
software | healthy | tests/test_graph.py:51 |
test_inactive_dimensions_are_not_in_state |
software | healthy | tests/test_graph.py:70 |
test_stream_yields_active_node_chunks |
software | healthy | tests/test_graph.py:81 |
_clear_settings_cache |
software | healthy | tests/test_script_lib.py:27 |
test_existing_file_returns_path_for_real_file |
software | healthy | tests/test_script_lib.py:38 |
test_existing_file_raises_on_missing |
software | healthy | tests/test_script_lib.py:44 |
test_existing_file_raises_on_directory |
software | healthy | tests/test_script_lib.py:49 |
test_model_tag_default_when_env_unset |
software | healthy | tests/test_script_lib.py:59 |
test_model_tag_default_when_env_empty |
software | healthy | tests/test_script_lib.py:64 |
test_model_tag_uses_basename_for_path |
software | healthy | tests/test_script_lib.py:69 |
test_model_tag_plain_name |
software | healthy | tests/test_script_lib.py:75 |
test_model_tag_empty_basename_falls_back_to_default |
software | healthy | tests/test_script_lib.py:80 |
test_transcript_cache_path_embeds_model_tag |
software | healthy | tests/test_script_lib.py:93 |
test_transcript_cache_path_isolates_models |
software | healthy | tests/test_script_lib.py:100 |
test_eval_dump_path_layout |
software | healthy | tests/test_script_lib.py:112 |
test_experiment_name_format |
software | healthy | tests/test_script_lib.py:118 |
test_filter_labels_by_dim_returns_matching |
software | healthy | tests/test_script_lib.py:128 |
test_filter_labels_by_dim_empty_logs_warning |
software | healthy | tests/test_script_lib.py:142 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
.env.example |
software | healthy | .env.example |
fly.toml |
software | healthy | fly.toml |
mise.toml |
software | healthy | mise.toml |
README.md |
software | healthy | README.md |
pyproject.toml |
software | healthy | pyproject.toml |
vidoctor_modal.py |
software | healthy | vidoctor_modal.py |
Dockerfile |
software | healthy | Dockerfile |
test_cps.py |
software | healthy | tests/test_cps.py |
_helpers.py |
software | healthy | tests/_helpers.py |
test_audio.py |
software | healthy | tests/test_audio.py |
test_filler.py |
software | healthy | tests/test_filler.py |
__init__.py |
software | healthy | tests/__init__.py |
test_graph.py |
software | healthy | tests/test_graph.py |
test_script_lib.py |
software | healthy | tests/test_script_lib.py |
test_suggestions.py |
software | healthy | tests/test_suggestions.py |
test_eval.py |
software | healthy | tests/test_eval.py |
test_content_gap.py |
software | healthy | tests/test_content_gap.py |
test_dead_zone.py |
software | healthy | tests/test_dead_zone.py |
test_repository.py |
software | healthy | tests/test_repository.py |
test_gaze.py |
software | healthy | tests/test_gaze.py |
test_llm.py |
software | healthy | tests/test_llm.py |
filler_eval.py |
software | healthy | scripts/filler_eval.py |
mlflow_ui.sh |
software | healthy | scripts/mlflow_ui.sh |
content_gap_eval.py |
software | healthy | scripts/content_gap_eval.py |
README.md |
software | healthy | scripts/README.md |
dead_zone_eval.py |
software | healthy | scripts/dead_zone_eval.py |
eval_all.py |
software | healthy | scripts/eval_all.py |
smoke_run.py |
software | healthy | scripts/smoke_run.py |
cps_eval.py |
software | healthy | scripts/cps_eval.py |
gaze_eval.py |
software | healthy | scripts/gaze_eval.py |
fly-deploy.yml |
software | healthy | .github/workflows/fly-deploy.yml |
suggestions.py |
software | healthy | src/vidoctor/suggestions.py |
__init__.py |
software | healthy | src/vidoctor/__init__.py |
config.py |
software | healthy | src/vidoctor/config.py |
log_setup.py |
software | healthy | src/vidoctor/log_setup.py |
llm.py |
software | healthy | src/vidoctor/llm.py |
errors.py |
software | healthy | src/vidoctor/errors.py |
repository.py |
software | healthy | src/vidoctor/repository.py |
category_classifier.py |
software | healthy | src/vidoctor/vision/category_classifier.py |
_capture.py |
software | healthy | src/vidoctor/vision/_capture.py |
dead_zone.py |
software | healthy | src/vidoctor/vision/dead_zone.py |
__init__.py |
software | healthy | src/vidoctor/vision/__init__.py |
gaze.py |
software | healthy | src/vidoctor/vision/gaze.py |
content_gap.py |
software | healthy | src/vidoctor/vision/content_gap.py |
filler.py |
software | healthy | src/vidoctor/audio/filler.py |
cps.py |
software | healthy | src/vidoctor/audio/cps.py |
pitch.py |
software | healthy | src/vidoctor/audio/pitch.py |
__init__.py |
software | healthy | src/vidoctor/audio/__init__.py |
transcribe.py |
software | healthy | src/vidoctor/audio/transcribe.py |
__init__.py |
software | healthy | src/vidoctor/api/__init__.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
_FakeMessage |
software | healthy | tests/test_llm.py:74 |
ExpectedMarker |
software | healthy | scripts/smoke_run.py:35 |
_Finding |
software | healthy | src/vidoctor/suggestions.py:85 |
_CollectedFindings |
software | healthy | src/vidoctor/suggestions.py:94 |
_SuggestionItem |
software | healthy | src/vidoctor/suggestions.py:101 |
_SuggestionResponse |
software | healthy | src/vidoctor/suggestions.py:115 |
_RefValidationStats |
software | healthy | src/vidoctor/suggestions.py:165 |
Settings |
software | healthy | src/vidoctor/config.py:18 |
_JsonFormatter |
software | healthy | src/vidoctor/log_setup.py:25 |
LLMCallMetrics |
software | healthy | src/vidoctor/llm.py:34 |
SafeError |
software | healthy | src/vidoctor/errors.py:9 |
_CategoryDecision |
software | healthy | src/vidoctor/vision/category_classifier.py:43 |
_CategoryConfig |
software | healthy | src/vidoctor/vision/dead_zone.py:30 |
SilentInterval |
software | healthy | src/vidoctor/vision/dead_zone.py:68 |
GazeConfig |
software | healthy | src/vidoctor/vision/gaze.py:96 |
_VideoMeta |
software | healthy | src/vidoctor/vision/gaze.py:133 |
PoseSample |
software | healthy | src/vidoctor/vision/gaze.py:147 |
_ROI |
software | healthy | src/vidoctor/vision/gaze.py:156 |
FrameSample |
software | healthy | src/vidoctor/vision/content_gap.py:84 |
_ContentGapIssue |
software | healthy | src/vidoctor/vision/content_gap.py:92 |
_ContentGapResponse |
software | healthy | src/vidoctor/vision/content_gap.py:111 |
ContentGapDiagnostics |
software | healthy | src/vidoctor/vision/content_gap.py:308 |
_Window |
software | healthy | src/vidoctor/audio/cps.py:52 |
_F0Baseline |
software | healthy | src/vidoctor/audio/cps.py:138 |
WindowPitch |
software | healthy | src/vidoctor/audio/pitch.py:34 |
_LoadedModels |
software | healthy | src/vidoctor/audio/transcribe.py:46 |
YouTubeIngestError |
software | healthy | src/vidoctor/api/youtube.py:27 |
AnalysisListItem |
software | healthy | src/vidoctor/api/app.py:140 |
FindingItem |
software | healthy | src/vidoctor/api/app.py:153 |
SuggestionItem |
software | healthy | src/vidoctor/api/app.py:162 |
StepMetric |
software | healthy | src/vidoctor/api/app.py:169 |
SpeakerTurn |
software | healthy | src/vidoctor/api/app.py:180 |
SpeakerDiarization |
software | healthy | src/vidoctor/api/app.py:190 |
AnalysisDetail |
software | healthy | src/vidoctor/api/app.py:198 |
VideoUrlResponse |
software | healthy | src/vidoctor/api/app.py:215 |
AnalyzeResponse |
software | healthy | src/vidoctor/api/app.py:221 |
AnalysisStatusResponse |
software | healthy | src/vidoctor/api/app.py:227 |
DimensionMetrics |
software | healthy | src/vidoctor/eval/metrics.py:39 |
GoldenLabel |
software | healthy | src/vidoctor/eval/labels.py:21 |
Word |
software | healthy | src/vidoctor/graph/state.py:45 |
FillerEvent |
software | healthy | src/vidoctor/graph/state.py:54 |
CPSEvent |
software | healthy | src/vidoctor/graph/state.py:65 |
DeadZoneEvent |
software | healthy | src/vidoctor/graph/state.py:77 |
GazeEvent |
software | healthy | src/vidoctor/graph/state.py:87 |
ContentGapEvent |
software | healthy | src/vidoctor/graph/state.py:98 |
Suggestion |
software | healthy | src/vidoctor/graph/state.py:109 |
AnalysisState |
software | healthy | src/vidoctor/graph/state.py:116 |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
scripts |
software | healthy | scripts |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
vidoctor |
software | healthy | src/vidoctor |
vision |
software | healthy | src/vidoctor/vision |
audio |
software | healthy | src/vidoctor/audio |
api |
software | healthy | src/vidoctor/api |
eval |
software | healthy | src/vidoctor/eval |
graph |
software | healthy | src/vidoctor/graph |
supabase |
software | healthy | supabase |
migrations |
software | healthy | supabase/migrations |
web |
software | healthy | web |
app |
software | healthy | web/app |
components |
software | healthy | web/components |
lib |
software | healthy | web/lib |
| Label | Layer | Status | Path |
|---|---|---|---|
GET /healthz |
api | healthy | src/vidoctor/api/app.py |
GET /api/analyses |
api | healthy | src/vidoctor/api/app.py |
GET /api/analyses/{analysis_id} |
api | healthy | src/vidoctor/api/app.py |
GET /api/analyses/{analysis_id}/video-url |
api | healthy | src/vidoctor/api/app.py |
DELETE /api/analyses/{analysis_id} |
api | healthy | src/vidoctor/api/app.py |
POST /api/analyze |
api | healthy | src/vidoctor/api/app.py |
GET /api/analyses/{analysis_id}/status |
api | healthy | src/vidoctor/api/app.py |
| Label | Layer | Status | Path |
|---|---|---|---|
0001_init.sql |
data | healthy | supabase/migrations/0001_init.sql |
0006_add_analyses_progress.sql |
data | healthy | supabase/migrations/0006_add_analyses_progress.sql |
0004_drop_severity_priority.sql |
data | healthy | supabase/migrations/0004_drop_severity_priority.sql |
0007_add_videos_filename.sql |
data | healthy | supabase/migrations/0007_add_videos_filename.sql |
0005_add_invariant_checks.sql |
data | healthy | supabase/migrations/0005_add_invariant_checks.sql |
0003_suggestion_finding_refs.sql |
data | healthy | supabase/migrations/0003_suggestion_finding_refs.sql |
0002_drop_videos_storage_bucket.sql |
data | healthy | supabase/migrations/0002_drop_videos_storage_bucket.sql |
| Label | Layer | Status | Path |
|---|---|---|---|
4.13.0.92 |
network | healthy | pyproject.toml |
0.6.7.1 |
network | healthy | pyproject.toml |
127.0.0.1 |
network | healthy | scripts/mlflow_ui.sh |
| Label | Layer | Status | Path |
|---|---|---|---|
postgres |
data | healthy | README.md |
sqlite |
data | healthy | src/vidoctor/config.py |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8000 |
network | healthy | Dockerfile |
port:5002 |
network | healthy | scripts/mlflow_ui.sh |
| Label | Layer | Status | Path |
|---|---|---|---|
RootLayout |
frontend | healthy | web/app/layout.tsx |
Home |
frontend | healthy | web/app/page.tsx |
| Label | Layer | Status | Path |
|---|---|---|---|
davindev__vidoctor |
software | healthy | /data/fable5_failed_archive/davindev__vidoctor |
| Label | Layer | Status | Path |
|---|---|---|---|
public |
data | healthy | supabase/migrations/0001_init.sql |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
/page.tsx |
frontend | healthy | web/app/page.tsx |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::.env.example |
security | healthy | .env.example |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::fly-deploy |
cicd | healthy | .github/workflows/fly-deploy.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
deploy |
cicd | healthy | .github/workflows/fly-deploy.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
FLY_API_TOKEN |
cicd | healthy | — |
This page is publicly accessible at:
https://repobility.com/scan/2ddc9215-f489-4bbf-b1c6-dc3612c9cf21/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/2ddc9215-f489-4bbf-b1c6-dc3612c9cf21/
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.