| Job | Schedule | Sources | Next fire (UTC) | Lock policy | Wrapper |
|---|---|---|---|---|---|
kad.arbitr.ru мониторинг каждые 15 минут — новые определения по watching делам monitor | 7,22,37,52 * * * * | kad.arbitr | 2026-08-27T02:37:00+00:00 | exclusive_per_db | scripts/cron_monitor.sh |
Ежедневный поиск новых дел на casebook.ru (вчера + позавчера, лаг casebook ~2 дня) discovery | 0 6 * * * | casebook | 2026-08-27T06:00:00+00:00 | exclusive_per_db | scripts/cron_discovery.sh |
Keyword search на ras.arbitr.ru (отключён, оставлен на всякий) keyword | 0 0 * * * | ras.arbitr | 2026-08-28T00:00:00+00:00 | exclusive_per_db | scripts/cron_keyword.sh |
Архивация notified-без-СРО старше 14 дней (Денис ask 2026-05-04) archive_old_no_sro | 30 4 * * * | (no sources mapped) | 2026-08-27T04:30:00+00:00 | exclusive_per_db | scripts/cron_archive_old_no_sro.sh |
Еженедельный summary обездвиж в Telegram (понедельники 09:00 UTC) weekly_obezdvizhka | 0 9 * * 1 | kad.arbitr | 2026-08-31T09:00:00+00:00 | none | scripts/cron_weekly_obezdvizhka.sh |
Парсинг текста определений: банковские реквизиты, адреса, VIN из PDF ruling_text_parse | 0 7 * * * | kad.arbitr | 2026-08-27T07:00:00+00:00 | exclusive_per_db | scripts/cron_ruling_text_parse.sh |
Ежедневный SQLite backup + integrity_check + retention 30d + size alert db_backup | 0 3 * * * | (no sources mapped) | 2026-08-27T03:00:00+00:00 | none | scripts/cron_db_backup.sh |
Локальный dev wrapper (отключён в проде) run | 0 0 1 1 * | (no sources mapped) | 2027-01-01T00:00:00+00:00 | none | scripts/cron_run.sh |
Daily sweep намерений кредиторов (Phase 2 KonturFocus, shadow_mode) intention_watcher | 15 6 * * * | kontur_basic | 2026-08-27T06:15:00+00:00 | exclusive_per_db | scripts/cron_intention_watcher.sh |
Каждые 6ч: pre-КАД discovery через Federesurs companies+publications diff intention_stream | 13 * * * * | fedresurs_spa | 2026-08-27T03:13:00+00:00 | exclusive_per_db | scripts/cron_intention_stream.sh |
Ежедневный дайджест намерений 07:45 МСК (04:45 UTC) — один Telegram-батч всего накопленного за сутки (sweep идёт в digest_mode без inline-отправок) intention_digest | 45 4 * * * | fedresurs_spa | 2026-08-27T04:45:00+00:00 | none | scripts/cron_intention_digest.sh |
Daily ФССП исполнительные производства по watching ИНН (Phase 2) fssp_refresh | 30 6 * * * | fssp | 2026-08-27T06:30:00+00:00 | exclusive_per_db | scripts/cron_fssp_refresh.sh |
Weekly «Прозрачный бизнес» (pb.nalog.gov.ru) — налоги/недоимки/активы tb_refresh | 0 4 * * 1 | pb.nalog | 2026-08-31T04:00:00+00:00 | exclusive_per_db | scripts/cron_tb_refresh.sh |
Weekly pb.nalog недоимки для ФНС-должников (витрина /fns-debtors) fns_tax_backfill | 0 2 * * 0 | pb.nalog | 2026-08-30T02:00:00+00:00 | exclusive_per_db | scripts/cron_fns_tax_backfill.sh |
Monthly ЕГРЮЛ relations (директора/учредители/доли) по watching ИНН egrul_refresh | 0 3 1 * * | egrul.nalog | 2026-09-01T03:00:00+00:00 | exclusive_per_db | scripts/cron_egrul_refresh.sh |
Daily bo.nalog БФО (выручка/активы/период) для debtor ИНН без enrichment — заполняет debtor_enrichment; дашборд (COALESCE) и Telegram-алерты (_financials_for_notify) показывают свежие цифры с годом вместо архивного tax_db (#306) nalog_enrichment_refresh | 20 5 * * * | (no sources mapped) | 2026-08-27T05:20:00+00:00 | exclusive_per_db | scripts/cron_nalog_enrichment_refresh.sh |
АО/ЗАО-вкладка self-heal (Денис 2026-07-23): ре-фетч bo.nalog по bypass-ИНН + перенос дел с БФО-2025+ в основную таблицу (skip_reason=NULL, статус не трогаем; runaway-cap 150 → abort rc=2 + TG в ops-чат) ao_zao_financials_refresh | 35 5 * * * | (no sources mapped) | 2026-08-27T05:35:00+00:00 | exclusive_per_db | scripts/cron_refresh_ao_zao.sh |
Keeps the /cessions «Крупный истец ≥300 млн» filter fresh (Денис 2026-07-22). Resumable bo.nalog backfill of cession plaintiff (истец) revenue/balance into analytics.sqlite plaintiff_financials; daily run fetches only NEW истцы added by the cession crawl (already-stored ok/not_found skipped → seconds steady-state). Direct bo.nalog, no captcha, analytics-isolated. enrich_plaintiff_financials | 0 6 * * * | (no sources mapped) | 2026-08-27T06:00:00+00:00 | none | scripts/cron_enrich_plaintiff_financials.sh |
Daily DataNewton руководитель (MANAGER_BLOCK) для outreach-eligible debtor+initiator ИНН за 7 дней; --skip-existing → только новые ИНН (≈10-20 вызовов/день вместо всего окна). Заполняет outreach_directors → персональное «Уважаемый Имя Отчество!» в рассылке directors_refresh | 40 6 * * * | (no sources mapped) | 2026-08-27T06:40:00+00:00 | exclusive_per_db | scripts/cron_directors_refresh.sh |
Monthly ФНП реестр залогов (movable pledges) по watching ИНН mpl_refresh | 0 4 1 * * | fnp | 2026-09-01T04:00:00+00:00 | exclusive_per_db | scripts/cron_mpl_refresh.sh |
Weekly sync контрактов ЕИС 44/223-ФЗ (pending Денис decision на провайдера) zakupki_sync | 0 2 * * 6 | zakupki.gov.ru | 2026-08-29T02:00:00+00:00 | exclusive_per_db | scripts/cron_zakupki_sync.sh |
Weekly переоценка кредиторов по новой данным (понедельники 05:00 UTC) creditor_rescore | 0 5 * * 1 | (no sources mapped) | 2026-08-31T05:00:00+00:00 | exclusive_per_db | scripts/cron_creditor_rescore.sh |
EPIC-P5-BL: каждые 6ч scrape /backend/biddings (Federesurs торги) p5_bl_biddings | 0 */6 * * * | p5_bl_biddings fedresurs_spa | 2026-08-27T06:00:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_biddings.sh |
EPIC-P5-BL: каждые 6ч scrape /backend/account-receivables (B2B-цессии) p5_bl_account_receivables | 30 */6 * * * | p5_bl_account_receivables fedresurs_spa | 2026-08-27T06:30:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_account_receivables.sh |
EPIC-P5-BL: каждые 6ч scrape /backend/pledged-subjects (залоговое имущество) p5_bl_pledged_subjects | 45 */6 * * * | p5_bl_pledged_subjects fedresurs_spa | 2026-08-27T06:45:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_pledged_subjects.sh |
EPIC-P5-BL: weekly per-INN walk через /publications для watching debtors p5_bl_publication_stream | 0 2 * * 1 | p5_bl_publications fedresurs_spa | 2026-08-31T02:00:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_publication_stream.sh |
EPIC-P5-BL: daily парсер цессий из текстов определений КАД p5_bl_cessions | 30 3 * * * | kad.arbitr | 2026-08-27T03:30:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_cessions.sh |
EPIC-P5-BL: daily сопоставление etp_catalog_events ↔ kad_cessionaries p5_bl_cession_matches | 0 4 * * * | (no sources mapped) | 2026-08-27T04:00:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_cession_matches.sh |
EPIC-P5-BL: daily агрегация buyer_candidates → buyer_cards по ИНН p5_bl_buyer_aggregator | 30 4 * * * | (no sources mapped) | 2026-08-27T04:30:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_buyer_aggregator.sh |
EPIC-P5-BL: daily обогащение buyer_cards через bo.nalog (финансы, OKVED) p5_bl_buyer_enrichment | 0 5 * * * | bo.nalog dadata | 2026-08-27T05:00:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_buyer_enrichment.sh |
EPIC-P5-BL: daily scoring buyer_cards (activity/size/completeness/segment) p5_bl_buyer_scoring | 30 5 * * * | (no sources mapped) | 2026-08-27T05:30:00+00:00 | exclusive_per_db | scripts/cron_p5_bl_buyer_scoring.sh |
EPIC-P5-BL: daily report по активности (09:00 MSK email через Mailgun) p5_bl_daily_report | 0 6 * * * | (no sources mapped) | 2026-08-27T06:00:00+00:00 | none | scripts/cron_p5_bl_daily_report.sh |
Hourly health check Phase 2 провайдеров (KonturFocus, FedresursBulk) provider_health_check | 45 * * * * | kontur_basic fedresurs_spa | 2026-08-27T02:45:00+00:00 | none | scripts/cron_provider_health_check.sh |
Passive freshness watchdog: alert if fedresurs_companies_snapshot is older than ~2 missed 6h sweeps (13h). No browser — cheap DB read — so it never adds to the browser contention that causes the silent launch crashes it catches. intention_freshness_check | 50 */6 * * * | (no sources mapped) | 2026-08-27T06:50:00+00:00 | none | scripts/cron_intention_freshness_check.sh |
Passive watchdog: alert if the OpenRouter SRO/ruling LLM extractor is failing (402 out-of-credit or high error rate over the last 2h). No browser/LLM — cheap llm_extractions read — so a silent credit outage surfaces in minutes, not the ~1.5 days it sat in June 2026 (→ false «СРО не указана» lead on А40-172636 СПЕЦРЕСУРС). llm_health_check | 25 * * * * | (no sources mapped) | 2026-08-27T03:25:00+00:00 | none | scripts/cron_llm_health_check.sh |
Daily digest: documents where the deterministic ruling_type classifier and the LLM disagree. The pipeline resolves `text_ruling_type or llm.ruling_type`, so a class the deterministic layer has no pattern for is confidently mistyped and the LLM's correct verdict is discarded unlogged — that is how «вступление в дело» reached Денис twice as «новое дело» on 2026-07-19. Posts to the OPS chat for human triage and changes NOTHING about what is sent: on 600 prod PDFs the LLM is wrong more often than right in this set, so gating on disagreement would destroy real leads. Cheap llm_extractions read, no browser/LLM. ruling_type_disagreement | 50 6 * * * | (no sources mapped) | 2026-08-27T06:50:00+00:00 | none | scripts/cron_ruling_type_disagreement.sh |
Hourly опрос proxy-seller residential pack quota (deprecated, на нуле) poll_proxy_quota | 0 * * * * | proxy_seller | 2026-08-27T03:00:00+00:00 | none | scripts/cron_poll_proxy_quota.sh |
Hourly опрос AstroProxy (баланс + per-port traffic + runway) poll_astroproxy | 5 * * * * | astroproxy | 2026-08-27T03:05:00+00:00 | none | scripts/cron_poll_astroproxy.sh |
Hourly опрос 2captcha (баланс) poll_twocaptcha | 10 * * * * | twocaptcha | 2026-08-27T03:10:00+00:00 | none | scripts/cron_poll_twocaptcha.sh |
Hourly опрос Evomi (остаток rpc + дневной расход → реальная $ стоимость прокси) poll_evomi | 20 * * * * | evomi_proxy | 2026-08-27T03:20:00+00:00 | none | scripts/cron_poll_evomi.sh |
Hourly опрос Selectel (баланс RU-VPS + runway prediction) poll_selectel_balance | 15 * * * * | selectel_ru_vps | 2026-08-27T03:15:00+00:00 | none | scripts/cron_poll_selectel_balance.sh |
BUG-13 daily re-eval awaiting_fresh_financials → watching когда ФНС обновилась bug13_reeval | 0 7 * * * | (no sources mapped) | 2026-08-27T07:00:00+00:00 | exclusive_per_db | scripts/cron_bug13_reeval.sh |
Forward guard (Денис 2026-07-22, Defect B): reverts cases stranded in `notified` with NO acceptance ruling — обездвижка/вступление/возврат that the 7/19 ruling-type backfill corrected without reconciling case status. Predicate-based (no date ordering), idempotent, runaway-capped (--max-apply 40 → BEGIN IMMEDIATE abort + ops-chat alert on a spike = classifier regression). One-time backfill cleared 24; this self-heals new stranding. No browser/LLM — cheap DB read+write. false_notify_revert | 50 5 * * * | (no sources mapped) | 2026-08-27T05:50:00+00:00 | exclusive_per_db | scripts/cron_false_notify_revert.sh |
Ловец несвязанных ответов (7/11): i.blinov Gmail → reply_inbox для ответов, которые Smartlead не связал (cross-address); авто-пауза сиквенса при уверенном single-case матче + Telegram outreach_unlinked_reply_catcher | */15 * * * * | (no sources mapped) | 2026-08-27T02:45:00+00:00 | exclusive_per_db | scripts/cron_outreach_unlinked_reply_catcher.sh |
OUT-03 candidate builder — YAML-driven trigger sources → outreach_candidates outreach_candidate_build | 13 */6 * * * | (no sources mapped) | 2026-08-27T06:13:00+00:00 | exclusive_per_db | scripts/cron_outreach_candidate_build.sh |
Copies enrichment-found creditor emails from stranded source=manual rows (related_debtor_inn=creditor INN) onto source=initiator_direct rows (contact_inn=creditor INN) so Обездвижка/Возврат candidate_builder can send. Pure SQL, idempotent, zero API cost. Runs between email_enrichment and candidate_build. outreach_creditor_email_propagation | 35 */6 * * * | (no sources mapped) | 2026-08-27T06:35:00+00:00 | exclusive_per_db | scripts/cron_outreach_creditor_email_propagation.sh |
Daily prune — DELETE un-emailed Smartlead leads whose candidate approved_at is >10 days old (drops the stale tail the sender never reached inside the freshness window). outreach_smartlead_prune | 30 6 * * * | (no sources mapped) | 2026-08-27T06:30:00+00:00 | exclusive_per_db | scripts/cron_outreach_smartlead_prune.sh |
Hourly per-campaign bounce guard — pauses any Smartlead campaign with bounce rate ≥5%% (min 20 sent) via POST status PAUSED + kad-ops alert. outreach_bounce_watchdog | 15 * * * * | (no sources mapped) | 2026-08-27T03:15:00+00:00 | exclusive_per_db | scripts/cron_outreach_bounce_watchdog.sh |
One-shot campaign autostart helper — STARTs the named Smartlead campaigns on/after a not-before date. Not scheduled (enabled:false); kept for the wrapper↔entry inventory + manual reuse. outreach_campaign_autostart | 0 9 * * * | (no sources mapped) | 2026-08-27T09:00:00+00:00 | none | scripts/cron_outreach_autostart.sh |
OUT-05 sender cron — approved candidates → suppression gate → daily cap → pacing → ESP send outreach_send | */5 * * * * | (no sources mapped) | 2026-08-27T02:35:00+00:00 | exclusive_per_db | scripts/cron_outreach_send.sh |
OUT-06 Smartlead stats poller — /leads?status=BOUNCED|UNSUBSCRIBED|BLOCKED → outreach_suppression + outreach_events outreach_smartlead_stats | */10 * * * * | (no sources mapped) | 2026-08-27T02:40:00+00:00 | exclusive_per_db | scripts/cron_outreach_smartlead_stats.sh |
OUT-07 IMAP reply poller — Yandex IMAP UNSEEN → outreach_events.message_replied + classification + optional suppression outreach_reply_poll | */15 * * * * | (no sources mapped) | 2026-08-27T02:45:00+00:00 | exclusive_per_db | scripts/cron_outreach_reply_poll.sh |
OUT-FOLLOW-UP-01 segmentation walker — populates outreach_contacts(source=debtor_direct/initiator_direct) from cases + obezdvizhka_matches for Денис's 4-category targeting outreach_segmentation_walker | 30 */6 * * * | (no sources mapped) | 2026-08-27T06:30:00+00:00 | exclusive_per_db | scripts/cron_outreach_segmentation_walker.sh |
OUT-FOLLOW-UP-01 email enrichment — outreach_contacts WHERE email IS NULL → email_enrichment.enqueue_job batches (web_email_finder 5-tier crawler) outreach_email_enrichment | 0 */6 * * * | dadata | 2026-08-27T06:00:00+00:00 | exclusive_per_db | scripts/cron_outreach_email_enrichment.sh |
OUT-VALIDATE-01 — validates outreach_contacts.email via syntax+MX+SMTP RCPT TO; sets validation_status so candidate_builder filters bouncing emails before Smartlead. Probes from Hetzner-direct (:25 unblocked 2026-05-15). outreach_email_validation | 5 */6 * * * | (no sources mapped) | 2026-08-27T06:05:00+00:00 | exclusive_per_db | scripts/cron_email_validation.sh |
Daily retention pruning of observability.sqlite (events >90d, completed runs >365d, excludes status='running') observability_retention | 35 4 * * * | (no sources mapped) | 2026-08-27T04:35:00+00:00 | observability_writer | scripts/cron_observability_retention.sh |
Passive watchdog proving the kad collector still READS cards. Measures successful chronology extractions (the RESULT), never attempts — cases.last_checked_at is stamped even on a FAILED card read, which is why the 2026-07-19 pravocaptcha outage ran ~14h with zero alerts while the DB looked busy. No browser/LLM — cheap log+DB read. kad_collector_health | 40 * * * * | (no sources mapped) | 2026-08-27T02:40:00+00:00 | none | scripts/cron_kad_collector_health.sh |
CP-5-10 — kad.arbitr shadow-mode canary, runs every 15 min in lock-step with monitor. Wrapper deployed; live cron wiring is an operator step (docs/cp5_canary_runbook.md). canary_kad_arbitr | */15 * * * * | kad.arbitr | 2026-08-27T02:45:00+00:00 | none | scripts/cron_canary_kad_arbitr.sh |
Daily T1 re-issue suspect detection (issue #229, T1-07 §11) — counts cases with multiple rulings on the same (case_id, ruling_date, ruling_type) triple. Alert at >1% trips logical_act_key v3 planning. t1_monitoring_metric | 50 3 * * * | (no sources mapped) | 2026-08-27T03:50:00+00:00 | none | scripts/cron_t1_monitoring_metric.sh |
One-shot backfill (#284 Phase 1 follow-up, 2026-05-19) — populates chronology_events for historical cases with no prior chronology rows via xvfb-run + Patchright. Operator-scheduled via `at`; DONE_FILE guard makes re-fires idempotent. Disabled in periodic cron (enabled:false). backfill_chronology_events | 0 0 1 1 * | kad.arbitr | 2027-01-01T00:00:00+00:00 | exclusive_per_db | scripts/cron_backfill_chronology_events.sh |
One-shot backfill (#285, 2026-05-20) — re-extracts under-counted chronology (cases with 1-2 events) after the post-#285 click+wait selector ladder landed (d2dc165). Companion to backfill_chronology_events; takes the same monitor lockfile to serialize with the live cron. Disabled in periodic cron (enabled:false). backfill_chronology_events_285 | 0 0 1 1 * | kad.arbitr | 2027-01-01T00:00:00+00:00 | exclusive_per_db | scripts/cron_backfill_chronology_events_285.sh |
One-shot backfill (#284 Phase 5) — re-classify rulings.ruling_type via LLM combined extractor. Operator-scheduled via `at` after chronology backfill (DONE_FILE chain); idempotent re-fires. Disabled in periodic cron (enabled:false). backfill_ruling_types | 0 0 1 1 * | (no sources mapped) | 2027-01-01T00:00:00+00:00 | exclusive_per_db | scripts/cron_backfill_ruling_types.sh |
Daily cession forward sweep — nodriver_discovery.py on .venv-test (patchright is WAF-blocked on kad participant-search; nodriver's CDP-minimal fingerprint beats it). Searches ~947 'pays-by-writ' hubs for NEW взыскание filings, card-fetches + classifies the истец (target/institutional/distressed), upserts analytics.sqlite::cession_cases (the /cessions page). Own Evomi session (_session-analytics) + own DB — never touches cases.sqlite. 20h lockfile threshold (run is ~3-8h). cession_crawl | 0 14 * * * | kad.arbitr | 2026-08-27T14:00:00+00:00 | none | scripts/cron_cession_crawl.sh |
Flags cession leads whose hub (ответчик/должник) is itself in a live bankruptcy case (cases.sqlite statuses procedure_opened/notified/watching/stale, read-only ATTACH) → segregates them into the «Банкротство должника» bucket on /cessions instead of the workable factoring pool. Pure SQL, idempotent (full reset-then-flag), zero API cost. Runs after the cession crawl. cession_hub_bankruptcy | 0 7 * * * | (no sources mapped) | 2026-08-27T07:00:00+00:00 | none | scripts/cron_cession_hub_bankruptcy.sh |
Flags cession leads whose hub (ответчик/должник) carries >50 млн ₽ in still-open исполнительные производства (cases.sqlite fssp_ip_events, event_status=opened, read-only ATTACH) → «Открытые ИП > 50 млн» bucket on /cessions. Pure SQL, idempotent, zero API cost. FSSP ip data refreshed separately by fssp_enrich_cession_hubs.py. cession_hub_open_ip | 10 7 * * * | (no sources mapped) | 2026-08-27T07:10:00+00:00 | none | scripts/cron_cession_hub_open_ip.sh |
Flags cession leads whose hub (ответчик/должник) carries an OPEN tax исполнительное производство (налоги/взносы/отрицательное сальдо ЕНС; cases.sqlite fssp_ip_events raw_payload subject match, event_status=opened, read-only ATTACH) → «Налоговые ИП (ФНС)» bucket on /cessions (Denis 2026-07-13: налоговый брать отдельно). Pure SQL, idempotent, zero API cost. FSSP ip data refreshed separately by fssp_enrich_cession_hubs.py / b2_fssp_cession_sweep.py. cession_hub_fns_ip | 15 7 * * * | (no sources mapped) | 2026-08-27T07:15:00+00:00 | none | scripts/cron_cession_hub_fns_ip.sh |
Refreshes the «Аресты счетов ФНС» bucket on /cessions — DataNewton /v1/blockedBankAccounts per hub sets cession_cases.hub_accounts_blocked (the call IS the flag). Quota-safe: --only-missing --limit 60 (new + stalest first, ~60/run, rotates all ~393 hubs weekly, ~1800 DN calls/mo); stops early if DN available_count low. Direct HTTP, no captcha/proxy. cession_blocked_accounts | 20 7 * * * | (no sources mapped) | 2026-08-27T07:20:00+00:00 | none | scripts/cron_cession_blocked_accounts.sh |
Daily auto-enrollment of new target-pool leads into the paper-portfolio FORWARD cohort (analytics.sqlite::portfolio_cases, INSERT OR IGNORE, entry snapshot frozen). Runs AFTER the three bucket-flag crons (07:00/07:10/07:20) so day-one bucket flags land before the enrollment decision. Pure sqlite, idempotent, seconds. Initial 686-lead freeze seeded manually 2026-07-13. portfolio_enroll | 40 7 * * * | (no sources mapped) | 2026-08-27T07:40:00+00:00 | none | scripts/cron_portfolio_enroll.sh |
F2 — weekly kad card re-sweep of the paper portfolio: non-terminal cases (forward pool first, then stale retro), refreshes chronology events + kad-only verdict. Delivers the report's promise «форвард-пул 686 требований, следим еженедельно». nodriver venv, port 8911, Evomi _session-portfolio; raises /tmp/cession_forward_active (monitor browser crons skip while it runs). ~2h at LIMIT 500. portfolio_card_sweep | 0 10 * * 6 | (no sources mapped) | 2026-08-29T10:00:00+00:00 | exclusive_per_db | scripts/cron_portfolio_card_sweep.sh |
F2b — weekly «awarded amounts» cycle: seed new court acts of decided cases → download PDFs (nodriver navigation; kad blocks fetch()/<a download>) → LLM extraction of awarded sums/outcome (Haiku 4.5, quote-grounded) → chain-fold across instances → final_awarded_* on portfolio_cases. Runs AFTER the Saturday card-sweep. Idempotent; LLM budget hard-capped by --max-usd. portfolio_b7_cycle | 0 12 * * 0 | (no sources mapped) | 2026-08-30T12:00:00+00:00 | exclusive_per_db | scripts/cron_portfolio_b7_cycle.sh |
F3 — weekly ФССП sweep of portfolio hubs (all regions + pagination + address filter on namesake explosion) → fssp_ip_events + portfolio_fssp_observations. Input for Денис's paid criterion («нет ИП + нет банкротства») and for the disappearance signal, which needs TWO complete observations — first baseline taken 2026-07-14, so this cron switches it on. Sunday 04:00 UTC (02:00 taken by fns_tax_backfill; ФССП throttles hard in daytime). RU-SOCKS, 2captcha. portfolio_fssp_sweep | 0 4 * * 0 | (no sources mapped) | 2026-08-30T04:00:00+00:00 | none | scripts/cron_portfolio_fssp_sweep.sh |
F4 — weekly verdict recompute: fuses kad outcome (F2) + ФССП/disappearance (F3) + hub bankruptcy (cases.sqlite read-only) + Денис's paid criterion + B7 «paid during trial» class (F2b); writes paid_at_min/paid_at_max bounds and scored ИП match candidates. Closes the weekly F2→F2b→F3→F4 loop. Pure sqlite, minutes, idempotent (--all: a hub bankruptcy can overturn even a paid verdict). portfolio_verdict | 0 11 * * 0 | (no sources mapped) | 2026-08-30T11:00:00+00:00 | none | scripts/cron_portfolio_verdict.sh |
СРО «Лидер» нотифайер (population A) — отдельный бот/чат, отдельно от ЦФОП. Читает прод cases.sqlite READ-ONLY, матчит Лидер по ruling_sros/chronology_event_sros, применяет FP-гард (L0 party-name + L1 proximity + L3 ростер) + флор 100М выручка/баланс, шлёт новые определения через @lider_sro_notifier_bot. Пишет только свою lider_build/data/lider.sqlite. Без браузера. lider_watch | 11,26,41,56 * * * * | kad.arbitr | 2026-08-27T02:41:00+00:00 | none | scripts/cron_lider_watch.sh |
СРО-платформа: суточный тик жалоб на АУ по вселенной (~10.7K активных дел, nodriver порт 8912, _session-lider). Стр.1 хронологии каждого дела → новые жалобы + споровые сроки §4 → data/sro/lider.sqlite. Держит cession-флаг на время цикла (~2ч, пауза прод-монитора — как ночная цессия). Частичный цикл штатен (stale-first по last_ticked_at). Алерты отдельно (sro_dispatch). sro_tick | 0 19 * * * | kad.arbitr | 2026-08-27T19:00:00+00:00 | none | scripts/cron_sro_tick.sh |
Трекер СРО «Лидер» (lider_track): суточный цикл опроса КАД по 298 производствам клиента + разбор очереди оповещений. Два шага, у каждого свой rc (LT-19): scheduler (план + обход при LIDER_TRACK_COLLECT=1) и notify --send (TG-группа трекера). Бюджет обращений в КАД — LIDER_TRACK_KAD_BUDGET_PER_CYCLE (180); чтение тел актов берётся из него же, а не вторым кошельком. Держит свой мьютекс, чужой cession-флаг соблюдает через _browser_preflight. Порог зависания выведен из бюджета, не константа. Пишет в data/sro-lider/lider_track.sqlite — ту же базу, что отдаёт витрина lider.ownmail.dev/tracker. lider_track | 0 23 * * * | kad.arbitr | 2026-08-27T23:00:00+00:00 | none | scripts/cron_lider_track.sh |
Реестр торгов ФНС по выбору кандидатуры АУ (rau.nalog.gov.ru) → таблица rau_selection трекера «Лидер» (LT-51). Даёт дату торгов (метка «заявление не подано» считает 30 дней от неё, а в таблице клиента такой колонки нет) и кандидатуру АУ, направленную в суд. БЕЗ браузера: бэкенд отдаёт JSON без авторизации, поэтому браузерный мьютекс не занимаем. ⚠️ Поиска по ИНН у реестра НЕТ (16 параметров проверены сравнением total; filter.searchString отвечает непустым списком по умолчанию на любой ИНН), поэтому читаем страницы и матчим у себя. Крон гоняет ТОЛЬКО голову (~100 страниц ≈ 2 мин); полный обход 929 страниц ≈ 80 мин запускается руками через --full и нужен один раз. Реестр отсортирован по дате возбуждения, а не по смене статуса, поэтому голова считается десятками страниц: завершившиеся торги наверх не всплывают. rc=2 = часть страниц не дошла, это НЕ успех. lider_rau_sync | 0 5 * * * | rau.nalog.gov.ru | 2026-08-27T05:00:00+00:00 | none | scripts/cron_lider_rau_sync.sh |
Копия ростера АУ СРО «Лидер» из platform.sqlite в БД трекера (LT-18, Req 14.4). 🔴 БЕЗ НЕГО ВИТРИНА ДЕГРАДИРУЕТ САМА: rules._roster_unusable отказывается решать «наш ли утверждённый управляющий» на копии старше ROSTER_MAX_AGE_DAYS=7, и метка уходит в «определить нельзя» — включая вердикты, уже полученные. Копия от 18.08 протухала 25.08, то есть витрина сломалась бы к показу сама и по расписанию. Отказ при этом выглядит как недостаток данных о ДЕЛЕ, хотя это ненастроенный наш собственный источник. Без браузера и без сети: источник локальный, ATTACH запрещён authorizer'ом в рантайме, строки едут через Python. ⚠️ Усадка ростера больше 20% = аборт: недокачанный источник иначе читался бы как «АУ массово выбыли из СРО» — прямой путь к ложному «управляющий не ваш» по живым делам. Настоящее сокращение проводится руками через --allow-shrink. lider_roster_sync | 30 5 * * * | platform.sqlite | 2026-08-27T05:30:00+00:00 | none | scripts/cron_lider_roster_sync.sh |
Диспетчер алертов о новых жалобах на АУ (state-driven: au_complaints.alerted_at IS NULL, не baseline) → TG ops-чат (обкатка; клиенту --to client после недели чистоты). Без браузера, свой межпроцессный замок в питоне, send-then-stamp по полному ключу. sro_dispatch | 25 * * * * | (no sources mapped) | 2026-08-27T03:25:00+00:00 | none | scripts/cron_sro_dispatch.sh |
Статус-трекер дел Лидера: суточный тик по 251 делу клиента (nodriver, _session-lider). Хронология → автомат состояний → снимок case_state + журнал переходов case_state_events. Замер 10.08: тёплый обход ~7 мин / ~170 МБ; холодный (с открытием карточек) ~45 мин. Сам проверяет cession-флаг и при занятом окне выходит rc=2, чужой флаг не трогает. Алерты отдельно (tracker_digest). tracker_tick | 0 7 * * * | kad.arbitr | 2026-08-27T07:00:00+00:00 | none | scripts/cron_tracker_tick.sh |
Суточный дайджест статус-трекера: case_state_events с digest_sent_at IS NULL → Telegram. Ранжирован (смена стадии выше сдвига срока), сгруппирован по делу, сроки в форме «было → стало». Дела с непрочитанным изменением идут отдельным блоком (fail-closed). Без браузера; пустая очередь = дешёвый no-op. Шлёт в ops-чат до недели без ложняков. tracker_digest | 40 7 * * * | (no sources mapped) | 2026-08-27T07:40:00+00:00 | none | scripts/cron_tracker_digest.sh |
Контур «ожидаю дело»: поиск КАД по ИНН должников из списка клиента, у которых дела ещё не было. Недельно, отдельно от суточного тика — поиск самый блокируемый путь КАД. Замер 11.08: 48 поисков ≈ 35 мин / 252 МБ, 0 блоков; 21 позиция из 48 нашла своё дело. Fail-closed: ровно одно банкротное → резолвим (роль подтвердит тик), два и больше → needs_review без догадок, не-ok выдача НЕ пишется как «дела нет». awaiting_contour | 0 8 * * 3 | kad.arbitr | 2026-09-02T08:00:00+00:00 | none | scripts/cron_awaiting_contour.sh |
Ежедневная сверка УСТАНОВЛЕННОГО крона с манифестом. Заведён 15.08 после того, как перенос браузерного окна от 10.08 бесследно исчез: правка жила только в живом кронтабе, манифест и снапшот согласовывались друг с другом, и существовавший сторож молчал. Кричит ТОЛЬКО на расхождения вне cron_drift_baseline.txt — известный долг остаётся в логе. Без браузера, без LLM, только чтение. manifest_drift | 20 6 * * * | (no sources mapped) | 2026-08-27T06:20:00+00:00 | none | scripts/cron_manifest_drift.sh |
Суточная сверка обездвижки: сопоставляет наши пометки с актуальным состоянием дел и готовит дайджест «возврат на подходе» в kad-ops. Стоял в кронтабе с 09.07.2026 без записи в манифесте — обнаружен 23.08.2026, когда починка регекспа manifest_lint (трейлинг-редиректы прятали строки) сняла ложные срабатывания и открыла настоящее. obezdvizhka_reconcile | 40 5 * * * | (no sources mapped) | 2026-08-27T05:40:00+00:00 | none | scripts/cron_obezdvizhka_reconcile.sh |
Сторож самого леджера прогонов: ищет джобы, у которых последние запуски — серия падений подряд, и зовёт в kad-ops. Заведён 23.08.2026 после того, как выяснилось, что два скрипта (t1_monitoring_metric, p5_bl_daily_report) писались в расчёте на «существующий cron-failure Telegram alert path», которого не было: первый отдавал rc=1 82 дня подряд, второй не отработал успешно НИ РАЗУ за 105 прогонов с 08.05. Порог — два падения подряд (одно это обычно флап), переалерт по возрастающей (2/7/30), чтобы сторож не стал обоями, как стал ими t1. Без браузера, без LLM, только чтение observability.sqlite. cron_failure_watchdog | 50 * * * * | (no sources mapped) | 2026-08-27T02:50:00+00:00 | none | scripts/cron_failure_watchdog.sh |
Чистка датированных логов (monitor_YYYYMMDD.log и подобных) старше 30 дней. Заведена 23.08.2026: logrotate для проекта не существовал вовсе, а датированные файлы он и не забрал бы — каждый перестаёт писаться в день создания и навсегда остаётся ниже порога размера. Накопилось 617 файлов на 647M при диске на 92%. log_retention | 15 4 * * * | (no sources mapped) | 2026-08-27T04:15:00+00:00 | none | scripts/cron_log_retention.sh |