W1 shu faylni
wiki/agentlar/X1.mdga oladi.
"A berdi = B oldi" sverkasi — data/uzatish/<sana>.jsonl va data/kpi/*/<sana>.json
ni konfig/agentlar.json bilan solishtiradi, kod daraxtini shlyuzni chetlab
o'tishga tekshiradi (statik grep).
uzatish.oqi(sana) — data/uzatish/<sana>.jsonlkpi.oqi(<agent>, sana) — har agent uchunkonfig/agentlar.json, agents/**/*.py (grep)data/x1/<sana>.json — agent × tekshiruv matritsasidata/insident/<sana>.jsonl — kodlar: UZ_KUTILDI, UZ_HASH, UZ_SONI,
UZ_YETIM, KPI_YOQ, KPI_NISBAT, KPI_XATO, SHLYUZ_CHETLAB, HB_YOQwiki/jurnal/zanjir_<sana>.md — jadval (agent · berdi · oldi · farq · holat)X1: {uzatish_jami, buzilgan, agent_tekshirildi, yashil}buzilgan > 0 bo'lsa — 1 ta S-900 xabar direktorga (hammasi bitta xabarda).bin/inplus ishga X1
python3 agents/x1_auditor/main.py --bir-marta --sana 2026-09-19
Jadval: konfig/agentlar.json → X1.jadval (22:00, timer). audit(sana)
funksiyasi to'g'ridan-to'g'ri ham chaqiriladi (testlar, boshqa kunlar uchun).
lib/inplus/uzatish.oldi() bitta obyekt uchun ENG OXIRGI berdining
uzatish_idsini oladi — bir kunda bir faylga bir necha marta yozilganda
(masalan X0 sinov jurnali) bu noaniqlik yaratadi. X1 shuning uchun
berdi/oldini uzatish_id bo'yicha moslaydi (obyekt emas) va X0'dan
o'ziga (kimga: "X1") kelgan har bir xabarni alohida "oldi" qiladi
(_oldi_yoz, libni o'zgartirmasdan).
xato, exit != 0, X2 qayta yoqadi.data/jurnal/agent/X1/<sana>.log.