Dostupné
Klient WS ISIR a limity
První položka fáze 1. Klient je jediné místo, kde se tenhle systém dotýká cizí infrastruktury, a proto v něm nesedí jen parsování — sedí v něm i to, co se smí zdroji poslat a co se stane, když zdroj neodpoví.
- Položky fáze
- 1.1 klient a typované parsování akcí, 1.2 limiter a jistič
- Závisí na
- 0.11 — ověřený kontrakt zdroje, hotový 3. 9. 2026 bez driftu
- Publikované stropy
- 50 požadavků za minutu, 3000 za den
- Konfigurace
- isir_minute_limit a isir_daily_limit; vyšší hodnota než publikovaná odmítne nastartovat
- Stav
- 1.1 a 1.2 hotovo 30. 9. 2026 —
src/progresus_isir/ingest/; export metrik čeká na E25
Co klient dělá
Feed publikuje akce: neměnné, číselně uspořádané záznamy o všem, co se v rejstříku stalo. Klient umí jediný dotaz, který na tom stojí — dej mi všechno po id N — a jeho odpověď převede do typovaných objektů, ne do slovníků, které si každý čtenář vyloží po svém.
Parsování je fail-closed: co se nepodaří naparsovat, není prázdný výsledek, ale chyba. Malformovaná dávka nesmí projít dál jako „nic nového“, protože přesně tak vypadá tichá ztráta dat.
Limit je právní hranice, ne ladicí parametr
Provozní podmínky zdroje jsou 50 požadavků za minutu a 3000 za den. Limiter kontroluje rozpočet před odesláním požadavku — reagovat až na odmítnutí ze strany serveru znamená, že k překročení už došlo.
Konfigurace to hlídá i mimo běh: nastavení volnější než publikované stropy shodí start aplikace. Konfigurovat se dá jen směrem dolů. Změna čehokoli ve fetch chování má vlastní politiku review, protože jde o vztah k provozovateli rejstříku, ne o výkon.
Selhání se nesmí tvářit jako výsledek
Jistič izoluje nedostupný zdroj: po sérii selhání se rozepne, po prodlevě přejde do poloviční propustnosti a jeden úspěch ho zavře. Výchozí hodnoty (pět selhání, 30 sekund) jsou v konfiguraci aplikace. Po prodlevě projde jediný zkušební požadavek, ne všichni najednou.
Odmítnutí rozepnutým jističem je přenosová chyba, nikdy obchodní odpověď. Nesmí se nikdy zapsat jako „takové řízení neexistuje“ — to je rozdíl mezi dočasným výpadkem a nepravdivým údajem v databázi.
%% title: Jistič před voláním zdroje %% caption: Výchozí práh je 5 po sobě jdoucích selhání a 30 sekund do zkušebního obnovení. Odmítnutí otevřeným jističem je přenosová chyba, nikdy záporný výsledek. stateDiagram-v2 direction LR [*] --> Zavreny Zavreny: Zavřený — požadavky procházejí Otevreny: Otevřený — požadavky se odmítají Poloteverny: Polootevřený — jeden zkušební požadavek Zavreny --> Otevreny: 5 selhání po sobě Otevreny --> Poloteverny: po 30 s Poloteverny --> Zavreny: úspěch Poloteverny --> Otevreny: selhání
Kde to v repozitáři žije
src/progresus_isir/ingest/public_ws.py— klient, parsování akcí a pořadí bran před každým požadavkemsrc/progresus_isir/ingest/redis_terms.py— sdílený rozpočet a jistič v Redisudocs/INGESTION.md— poll smyčka, invarianty ING-1 až ING-7, limity a jističdocs/ISIR-SOURCE-SEMANTICS.md— co feed publikuje a jaké jsou provozní podmínky zdrojesrc/progresus_isir/config.py— limity, jistič a validace, která volnější nastavení odmítne.aiad/policies/source-terms-review.policy.md— review pro každou změnu chování při stahování
Souvisí
Ověření kontraktu zdroje
DostupnéŽivé WSDL, XSD, publikované verze dokumentace a provozní podmínky ověřené proti tomu, co je zapsané — jedním příkazem, se staženými artefakty jako důkazem. První běh: bez driftu. Na driftu se zastaví a nepřizpůsobí parser potichu.
Detail
Replika a checkpoint
DostupnéAppend-only log akcí, idempotentní zápis podle ID akce a checkpoint posouvaný ve stejné transakci jako zápis. Pád znamená znovunačtení dávky, nikdy její přeskočení; neměnnost hlídá přímo databáze. Feed čte jediný poller s leasem v Redisu.
Detail
Chování při selhání
Selhání zdroje, pád uprostřed dávky ani nejistá extrakce nesmí skončit zápisem nesprávného stavu. Každý z těchto případů má předem určené chování a žádné z nich se nepřevádí na negativní výsledek.
Detail