Cron Jobs

← Dashboard
Job Schedule Sources Next fire (UTC) Lock policy Wrapper
kad.arbitr.ru мониторинг каждые 15 минут — новые определения по watching делам
monitor
7,22,37,52 * * * *kad.arbitr2026-08-27T02:37:00+00:00exclusive_per_dbscripts/cron_monitor.sh
Ежедневный поиск новых дел на casebook.ru (вчера + позавчера, лаг casebook ~2 дня)
discovery
0 6 * * *casebook2026-08-27T06:00:00+00:00exclusive_per_dbscripts/cron_discovery.sh
Keyword search на ras.arbitr.ru (отключён, оставлен на всякий)
keyword
0 0 * * *ras.arbitr2026-08-28T00:00:00+00:00exclusive_per_dbscripts/cron_keyword.sh
Архивация notified-без-СРО старше 14 дней (Денис ask 2026-05-04)
archive_old_no_sro
30 4 * * *(no sources mapped)2026-08-27T04:30:00+00:00exclusive_per_dbscripts/cron_archive_old_no_sro.sh
Еженедельный summary обездвиж в Telegram (понедельники 09:00 UTC)
weekly_obezdvizhka
0 9 * * 1kad.arbitr2026-08-31T09:00:00+00:00nonescripts/cron_weekly_obezdvizhka.sh
Парсинг текста определений: банковские реквизиты, адреса, VIN из PDF
ruling_text_parse
0 7 * * *kad.arbitr2026-08-27T07:00:00+00:00exclusive_per_dbscripts/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:00nonescripts/cron_db_backup.sh
Локальный dev wrapper (отключён в проде)
run
0 0 1 1 *(no sources mapped)2027-01-01T00:00:00+00:00nonescripts/cron_run.sh
Daily sweep намерений кредиторов (Phase 2 KonturFocus, shadow_mode)
intention_watcher
15 6 * * *kontur_basic2026-08-27T06:15:00+00:00exclusive_per_dbscripts/cron_intention_watcher.sh
Каждые 6ч: pre-КАД discovery через Federesurs companies+publications diff
intention_stream
13 * * * *fedresurs_spa2026-08-27T03:13:00+00:00exclusive_per_dbscripts/cron_intention_stream.sh
Ежедневный дайджест намерений 07:45 МСК (04:45 UTC) — один Telegram-батч всего накопленного за сутки (sweep идёт в digest_mode без inline-отправок)
intention_digest
45 4 * * *fedresurs_spa2026-08-27T04:45:00+00:00nonescripts/cron_intention_digest.sh
Daily ФССП исполнительные производства по watching ИНН (Phase 2)
fssp_refresh
30 6 * * *fssp2026-08-27T06:30:00+00:00exclusive_per_dbscripts/cron_fssp_refresh.sh
Weekly «Прозрачный бизнес» (pb.nalog.gov.ru) — налоги/недоимки/активы
tb_refresh
0 4 * * 1pb.nalog2026-08-31T04:00:00+00:00exclusive_per_dbscripts/cron_tb_refresh.sh
Weekly pb.nalog недоимки для ФНС-должников (витрина /fns-debtors)
fns_tax_backfill
0 2 * * 0pb.nalog2026-08-30T02:00:00+00:00exclusive_per_dbscripts/cron_fns_tax_backfill.sh
Monthly ЕГРЮЛ relations (директора/учредители/доли) по watching ИНН
egrul_refresh
0 3 1 * *egrul.nalog2026-09-01T03:00:00+00:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00nonescripts/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:00exclusive_per_dbscripts/cron_directors_refresh.sh
Monthly ФНП реестр залогов (movable pledges) по watching ИНН
mpl_refresh
0 4 1 * *fnp2026-09-01T04:00:00+00:00exclusive_per_dbscripts/cron_mpl_refresh.sh
Weekly sync контрактов ЕИС 44/223-ФЗ (pending Денис decision на провайдера)
zakupki_sync
0 2 * * 6zakupki.gov.ru2026-08-29T02:00:00+00:00exclusive_per_dbscripts/cron_zakupki_sync.sh
Weekly переоценка кредиторов по новой данным (понедельники 05:00 UTC)
creditor_rescore
0 5 * * 1(no sources mapped)2026-08-31T05:00:00+00:00exclusive_per_dbscripts/cron_creditor_rescore.sh
EPIC-P5-BL: каждые 6ч scrape /backend/biddings (Federesurs торги)
p5_bl_biddings
0 */6 * * *p5_bl_biddings fedresurs_spa2026-08-27T06:00:00+00:00exclusive_per_dbscripts/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_spa2026-08-27T06:30:00+00:00exclusive_per_dbscripts/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_spa2026-08-27T06:45:00+00:00exclusive_per_dbscripts/cron_p5_bl_pledged_subjects.sh
EPIC-P5-BL: weekly per-INN walk через /publications для watching debtors
p5_bl_publication_stream
0 2 * * 1p5_bl_publications fedresurs_spa2026-08-31T02:00:00+00:00exclusive_per_dbscripts/cron_p5_bl_publication_stream.sh
EPIC-P5-BL: daily парсер цессий из текстов определений КАД
p5_bl_cessions
30 3 * * *kad.arbitr2026-08-27T03:30:00+00:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/cron_p5_bl_buyer_aggregator.sh
EPIC-P5-BL: daily обогащение buyer_cards через bo.nalog (финансы, OKVED)
p5_bl_buyer_enrichment
0 5 * * *bo.nalog dadata2026-08-27T05:00:00+00:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00nonescripts/cron_p5_bl_daily_report.sh
Hourly health check Phase 2 провайдеров (KonturFocus, FedresursBulk)
provider_health_check
45 * * * *kontur_basic fedresurs_spa2026-08-27T02:45:00+00:00nonescripts/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:00nonescripts/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:00nonescripts/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:00nonescripts/cron_ruling_type_disagreement.sh
Hourly опрос proxy-seller residential pack quota (deprecated, на нуле)
poll_proxy_quota
0 * * * *proxy_seller2026-08-27T03:00:00+00:00nonescripts/cron_poll_proxy_quota.sh
Hourly опрос AstroProxy (баланс + per-port traffic + runway)
poll_astroproxy
5 * * * *astroproxy2026-08-27T03:05:00+00:00nonescripts/cron_poll_astroproxy.sh
Hourly опрос 2captcha (баланс)
poll_twocaptcha
10 * * * *twocaptcha2026-08-27T03:10:00+00:00nonescripts/cron_poll_twocaptcha.sh
Hourly опрос Evomi (остаток rpc + дневной расход → реальная $ стоимость прокси)
poll_evomi
20 * * * *evomi_proxy2026-08-27T03:20:00+00:00nonescripts/cron_poll_evomi.sh
Hourly опрос Selectel (баланс RU-VPS + runway prediction)
poll_selectel_balance
15 * * * *selectel_ru_vps2026-08-27T03:15:00+00:00nonescripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00nonescripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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 * * *dadata2026-08-27T06:00:00+00:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00observability_writerscripts/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:00nonescripts/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.arbitr2026-08-27T02:45:00+00:00nonescripts/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:00nonescripts/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.arbitr2027-01-01T00:00:00+00:00exclusive_per_dbscripts/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.arbitr2027-01-01T00:00:00+00:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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.arbitr2026-08-27T14:00:00+00:00nonescripts/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:00nonescripts/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:00nonescripts/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:00nonescripts/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:00nonescripts/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:00nonescripts/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:00exclusive_per_dbscripts/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:00exclusive_per_dbscripts/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:00nonescripts/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:00nonescripts/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.arbitr2026-08-27T02:41:00+00:00nonescripts/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.arbitr2026-08-27T19:00:00+00:00nonescripts/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.arbitr2026-08-27T23:00:00+00:00nonescripts/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.ru2026-08-27T05:00:00+00:00nonescripts/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.sqlite2026-08-27T05:30:00+00:00nonescripts/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:00nonescripts/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.arbitr2026-08-27T07:00:00+00:00nonescripts/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:00nonescripts/cron_tracker_digest.sh
Контур «ожидаю дело»: поиск КАД по ИНН должников из списка клиента, у которых дела ещё не было. Недельно, отдельно от суточного тика — поиск самый блокируемый путь КАД. Замер 11.08: 48 поисков ≈ 35 мин / 252 МБ, 0 блоков; 21 позиция из 48 нашла своё дело. Fail-closed: ровно одно банкротное → резолвим (роль подтвердит тик), два и больше → needs_review без догадок, не-ok выдача НЕ пишется как «дела нет».
awaiting_contour
0 8 * * 3kad.arbitr2026-09-02T08:00:00+00:00nonescripts/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:00nonescripts/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:00nonescripts/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:00nonescripts/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:00nonescripts/cron_log_retention.sh
Jobs: 85 Generated at 2026-08-27T02:34:32.470732+00:00