{"nodes": [{"id": "d_yt_channel_scraper_tests_test_recovery_py", "label": "test_recovery.py", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L1"}, {"id": "d_yt_channel_scraper_tests_test_recovery_store", "label": "_store()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L17", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "label": "test_reset_reaches_no_subtitles_not_just_error()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L25", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_reset_never_touches_done_even_if_asked", "label": "test_reset_never_touches_done_even_if_asked()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L44", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "label": "test_reset_errors_still_only_resets_errors()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L53", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "label": "test_permanent_failures_are_excluded_from_retries()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L68", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "label": "test_permanent_failures_can_be_reset_when_explicitly_asked()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L89", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "label": "test_rate_limit_wording_is_never_treated_as_permanent()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L99", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "label": "test_retryable_counts_reports_both_statuses()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L113", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_mark_status_records_the_reason", "label": "test_mark_status_records_the_reason()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L127", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_describe_distinguishes_no_captions_from_policy_rejection", "label": "test_describe_distinguishes_no_captions_from_policy_rejection()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L136", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_describe_does_not_blame_config_when_mode_already_allows_auto", "label": "test_describe_does_not_blame_config_when_mode_already_allows_auto()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L148", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "label": "test_reconcile_marks_done_when_the_md_is_already_on_disk()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L171", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "label": "test_reconcile_requeues_rows_whose_md_vanished_only_with_prune()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L190", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "label": "test_prune_refuses_to_demote_everything_when_the_root_is_empty()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L210", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "label": "test_reconcile_is_idempotent()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L224", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "label": "test_a_bad_encoding_does_not_abort_the_whole_scan()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L240", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "label": "test_re_render_updates_markdown_path_and_removes_the_old_file()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L262", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "label": "test_re_render_is_idempotent()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L297", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "label": "test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L322", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_counts_orphan_markdown", "label": "test_reconcile_counts_orphan_markdown()", "file_type": "code", "source_file": "tests/test_recovery.py", "source_location": "L347", "_callable": true}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_1", "label": "Recovery paths: retryable statuses, recorded skip reasons, disk<->DB reconcile.", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L1"}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_54", "label": "The narrower legacy helper keeps its old meaning.", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L54"}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_69", "label": "Members-only videos cannot be fixed by retrying; re-running them only spends", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L69"}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_100", "label": "The throttling message is the one that must stay retryable.", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L100"}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_172", "label": "The exact symptom the user reported: a .md exists but the row still shows a", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L172"}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_211", "label": "Pointed at a wrong or not-yet-populated markdown root, prune must be a no-op", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L211"}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_241", "label": "UnicodeDecodeError is a ValueError, not an OSError. Letting it escape aborte", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L241"}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_263", "label": "re-render used a raw compact upload_date while process_video uses the hyphen", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L263"}, {"id": "d_yt_channel_scraper_tests_test_recovery_rationale_323", "label": "The 33 leftover files the old re-render wrote under a second filename: the D", "file_type": "rationale", "source_file": "tests/test_recovery.py", "source_location": "L323"}], "edges": [{"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L10", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "yt_scraper_extract", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L12", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "yt_scraper_segments", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L13", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "yt_scraper_store", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L14", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L17", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L25", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_reset_never_touches_done_even_if_asked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L44", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L53", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L68", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L89", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L99", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L113", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_mark_status_records_the_reason", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L127", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_describe_distinguishes_no_captions_from_policy_rejection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L136", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_describe_does_not_blame_config_when_mode_already_allows_auto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L148", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L171", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L190", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L210", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L224", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L240", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L262", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L297", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L322", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_py", "target": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_counts_orphan_markdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L347", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L26", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_reset_never_touches_done_even_if_asked", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L45", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L55", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L71", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L90", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L101", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L114", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_mark_status_records_the_reason", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L128", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L174", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L191", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L213", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L225", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L243", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L269", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L301", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L325", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_counts_orphan_markdown", "target": "d_yt_channel_scraper_tests_test_recovery_store", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L348", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_1", "target": "d_yt_channel_scraper_tests_test_recovery_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L1", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_54", "target": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L54", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_69", "target": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L69", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_100", "target": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L100", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_172", "target": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L172", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_211", "target": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L211", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_241", "target": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L241", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_263", "target": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L263", "weight": 1.0}, {"source": "d_yt_channel_scraper_tests_test_recovery_rationale_323", "target": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_recovery.py", "source_location": "L323", "weight": 1.0}], "raw_calls": [{"caller_nid": "d_yt_channel_scraper_tests_test_recovery_store", "callee": "Store", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L18", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_store", "callee": "upsert_channel", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L19", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L27", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L28", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L29", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L30", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "mark_status", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L32", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "mark_error", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L33", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "mark_done", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L34", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "reset_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L36", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L39", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L40", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_reaches_no_subtitles_not_just_error", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L41", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_never_touches_done_even_if_asked", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L46", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_never_touches_done_even_if_asked", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L46", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_never_touches_done_even_if_asked", "callee": "mark_done", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L47", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_never_touches_done_even_if_asked", "callee": "reset_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L49", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_never_touches_done_even_if_asked", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L50", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L56", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L57", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L58", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "callee": "mark_status", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L60", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "callee": "mark_error", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L61", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "callee": "reset_errors", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L63", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L64", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reset_errors_still_only_resets_errors", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L65", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L72", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L73", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "mark_error", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L75", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "mark_error", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L76", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "mark_error", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L77", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "retryable_counts", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L79", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "reset_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L83", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L84", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L85", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_are_excluded_from_retries", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L86", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L91", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L91", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "callee": "mark_error", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L92", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "callee": "reset_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L94", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "callee": "reset_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L95", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_permanent_failures_can_be_reset_when_explicitly_asked", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L96", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L102", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L102", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "callee": "mark_error", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L103", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "callee": "retryable_counts", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L109", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_rate_limit_wording_is_never_treated_as_permanent", "callee": "reset_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L110", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L115", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L116", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "callee": "mark_status", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L118", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "callee": "mark_status", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L119", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "callee": "mark_error", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L120", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_retryable_counts_reports_both_statuses", "callee": "retryable_counts", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L122", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_mark_status_records_the_reason", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L129", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_mark_status_records_the_reason", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L129", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_mark_status_records_the_reason", "callee": "mark_status", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L131", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_mark_status_records_the_reason", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L133", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_describe_distinguishes_no_captions_from_policy_rejection", "callee": "describe_missing_subtitle", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L137", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_describe_distinguishes_no_captions_from_policy_rejection", "callee": "describe_missing_subtitle", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L140", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_describe_does_not_blame_config_when_mode_already_allows_auto", "callee": "describe_missing_subtitle", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L149", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L175", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L175", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "callee": "mark_status", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L176", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L179", "receiver": "md_root"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L180", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "callee": "format", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L180", "receiver": "_MD"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L182", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_marks_done_when_the_md_is_already_on_disk", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L184", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L192", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L193", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L194", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "mark_done", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L196", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L198", "receiver": "md_root"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L199", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "format", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L199", "receiver": "_MD"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L202", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L203", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L205", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_requeues_rows_whose_md_vanished_only_with_prune", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L207", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L214", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L214", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "callee": "mark_done", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L215", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L216", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L218", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_prune_refuses_to_demote_everything_when_the_root_is_empty", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L221", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L226", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L226", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L228", "receiver": "md_root"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L229", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "callee": "format", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L229", "receiver": "_MD"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L231", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L232", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_is_idempotent", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L237", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L244", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L245", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L246", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L249", "receiver": "md_root"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L250", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "format", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L250", "receiver": "_MD"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "write_bytes", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L251", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L252", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "format", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L252", "receiver": "_MD"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L254", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_a_bad_encoding_does_not_abort_the_whole_scan", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L256", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L270", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L270", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "update_video_metadata", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L271", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L278", "receiver": "old_dir"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L279", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "mark_done", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L280", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "Config", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L282", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "resolve", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L285", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "Path", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L285", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "re_render_videos", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L287", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "rglob", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L289", "receiver": "md_root"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L291", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "endswith", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L292", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "replace", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L292", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "exists", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L293", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_updates_markdown_path_and_removes_the_old_file", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L294", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L302", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L302", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "update_video_metadata", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L303", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "mark_done", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L307", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "Config", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L308", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "resolve", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L311", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "Path", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L311", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "re_render_videos", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L314", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L315", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "re_render_videos", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L316", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L318", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_re_render_is_idempotent", "callee": "rglob", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L319", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "upsert_videos", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L326", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "VideoRef", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L326", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L328", "receiver": "md_root"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L331", "receiver": "canonical"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "format", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L331", "receiver": "_MD"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L332", "receiver": "duplicate"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "format", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L332", "receiver": "_MD"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "mark_done", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L333", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L335", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "exists", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L337", "receiver": "duplicate"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L338", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L340", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "exists", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L342", "receiver": "duplicate"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "exists", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L343", "receiver": "canonical"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_reports_stale_duplicates_and_deletes_them_only_with_prune", "callee": "get_video", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L344", "receiver": "store"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_counts_orphan_markdown", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L350", "receiver": "md_root"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_counts_orphan_markdown", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L351", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_counts_orphan_markdown", "callee": "format", "is_member_call": true, "source_file": "tests/test_recovery.py", "source_location": "L351", "receiver": "_MD"}, {"caller_nid": "d_yt_channel_scraper_tests_test_recovery_test_reconcile_counts_orphan_markdown", "callee": "reconcile_markdown", "is_member_call": false, "source_file": "tests/test_recovery.py", "source_location": "L353", "receiver": null}]}