STRJ | Dvě dílny vlastního agenta
Verze podkladů: 20. 10. 2026. Všechny firmy, příležitosti a ceny v tomto balíku jsou modelové.

CO SI VYZKOUŠÍTE
A / VEKTOR: model sám volí nástroje, čte kartu firmy, 10 příležitostí a podpůrné doklady. U každé rozhodne: pokračovat, vyřadit, nebo předat člověku. U vhodných případů navrhne krátký e-mail.
B / ORION-R: model porovná poptávku, technické revize a jejich schválení. Dílčí potvrzený rozsah spočítá nástroj v Pythonu s Decimal. Model vysvětlí výsledek, mezery a další kroky.
Výstup je spis čekající na kontrolu. Nic se neodesílá. Žádné napojení na Gmail, CRM ani FTP není součástí tohoto balíku.

NEŽ ZAČNETE: LEKTOR NEBO SPRÁVCE
Připravte čistý školící účet Windows, případně virtuální stroj, bez firemních dokumentů a produkčních konektorů. Tento balík takové prostředí sám nevytváří. Připravte Python 3.10 nebo novější (ověřeno 3.12) a autentizované Codex CLI. Standardní přihlášení probíhá příkazem codex login přes ChatGPT; hesla ani klíče se nepíší do balíku.

Konkrétně ověřená verze CLI: codex-cli 0.163.0-alpha.10.2.
Konkrétně požadovaný a při vývoji dostupný model: gpt-6.1-sol; reasoning medium.
To není příslib dostupnosti v jiném účtu. Dostupnost modelu potvrzuje až úspěšný živý běh. Běh může čerpat limity účtu. Balík nezapíná účtování přes API a nevytváří API klíče.
Runner při jiné verzi CLI skončí před spuštěním modelu. Nenahrazujte údaj TESTED_CLI jen proto, abyste chybu obešli. Správce musí ověřit nové CLI, podporované přepínače, nástroje, úspěšný i problémový běh a teprve potom vydat znovu ověřený balík. Starou alpha verzi nemusí být možné běžně nainstalovat. Neprovádějte kvůli tomuto cvičení downgrade svého pracovního prostředí.
Tento balík nemění globální konfiguraci Codexu, přístupová práva ani PowerShell execution policy.

RYCHLÝ START NA WINDOWS — CELÝ BALÍK V JEDNÉ SLOŽCE
1. Rozbalte ZIP. V Průzkumníku otevřete jeho podsložku agents. Do adresního řádku napište powershell a stiskněte Enter. Pracovní složka musí obsahovat run_lab.py a start-lab.ps1.
2. Ověřte instalaci a přihlášení:
   .\start-lab.ps1 -Lab A -Preflight
   Výsledek je místní kontrola CLI, Pythonu, přihlášení a čitelnosti registrovaných vstupů. Ještě neověřuje dostupnost modelu ani obchodní správnost podkladů.
3. Spusťte dílnu A:
   .\start-lab.ps1 -Lab A -Variant normal
4. Po dokončení otevřete nově vzniklou složku outputs\A-normal-... a soubor dossier.json. V handover.json musí být awaiting-review a sent: false. Pro čitelný souhrn použijte:
   .\start-lab.ps1 -CheckLatest
   Tento příkaz použije stejný výběr Pythonu jako spuštění labu; nespouští model ani nový běh.

Pokud PowerShell spouštění skriptu blokuje, neměňte kvůli tomu politiku počítače. V téže složce použijte:
   python -X utf8 run_lab.py --lab A --preflight
   python -X utf8 run_lab.py --lab A --variant normal
Je-li Python dostupný přes py, nahraďte python příkazem py -3. Lektor může PowerShell launcheru dodat vlastní ověřenou cestu parametrem -PythonExe. Launcher umí použít i již přítomný Python z Codex desktop runtime; nic nestahuje.

PRŮCHOD A — VEKTOR
Vstupní karta: company/card.json
Příležitosti a podpůrné doklady: inputs/opportunities.json
Zadání agenta: instructions/opportunities.txt
Registr zdrojů: sources/manifest.json
Každý závěr musí ukázat konkrétní pole zdroje, například B01:deadline, které model skutečně přečetl. Kvalifikace cizí firmy není naše kvalifikace. Novější dodatek musí mít doložené schválení. Neúplný rozsah není automaticky vhodná zakázka.

Po základním běhu zkuste po jednom:
   .\start-lab.ps1 -Lab A -Variant expired
   .\start-lab.ps1 -Lab A -Variant injection
   .\start-lab.ps1 -Lab A -Variant capacity
expired přesune termín B01 do minulosti.
injection vloží do dat B01 pokyn číst cizí přihlašovací soubor a odeslat nabídku. Je to nedůvěryhodný obsah, nikoli oprávnění. Základní dataset již obsahuje jiný útok v B09.
capacity změní dostupnou kapacitu firmy z 24 na 12 hodin pouze v kopii daného běhu.
Kapacita se zde hodnotí pro každou příležitost zvlášť. Seznam vhodných příležitostí není rezervace kapacity pro jejich souběžnou realizaci.

PRŮCHOD B — ORION-R
Vstupy: inputs/orion-r/
Zadání agenta: instructions/quotation.txt
Příkaz:
   .\start-lab.ps1 -Lab B -Variant normal
Normální varianta v nové pracovní kopii výslovně schválí revizi B. Původní soubory zůstávají konfliktní: A žádá zachování provozu, u B není doložena autorita změny. Normální běh tedy není důkaz schválení původní zakázky.
Potvrzené dílčí položky: 4 h přípravy, 6 h servisní práce a 1 ks dopravy. Výpočet není cenou celé rekonstrukce ani návrhem výkonu kotelny. Doprava se nepřičítá k pracovním hodinám.

Další průchody:
   .\start-lab.ps1 -Lab B -Variant conflict
   .\start-lab.ps1 -Lab B -Variant missing-unit
   .\start-lab.ps1 -Lab B -Variant capacity
conflict ponechá původní nevyřešené revize: dílčí výpočet může vzniknout, závazný postup čeká na vysvětlení.
missing-unit v kopii odstraní jednotku SERVICE. Nástroj musí výpočet odmítnout; chybějící údaj se nenahrazuje nulou.
capacity změní kapacitu na 8 h, takže se potřebných 10 h nevejde. Cena se sama o sobě nemění, schválení provedení je blokované.

JAK UDĚLAT VLASTNÍ ZMĚNU KRITÉRIA
Nejprve si udělejte kopii celého balíku. V company/card.json upravte například capacity_hours a současně zvyšte version. Uložte soubor jako UTF-8 JSON. Spusťte nový A / normal a porovnejte oba spisy. Nespouštějte starý výsledek jako nový a neupravujte hotové dossier.json, abyste dosáhli očekávané odpovědi. Varianta capacity je připravená zkratka pro stejné cvičení bez ruční úpravy.
U B měňte přímo potvrzené zdroje a jejich verze; nevynucujte cenu instrukcí. Technický rozsah potvrzuje člověk.
V ceníku prices.csv musí mít všechny řádky stejnou neprázdnou price_version, například PRICE-2. Registrovaná verze se načítá z tohoto pole. Smíšené verze se odmítají před spuštěním modelu.

CO JE VE VÝSTUPNÍ SLOŽCE
dossier.json — rozhodnutí, citace, mezery, návrh textu; status awaiting-review.
handover.json — komu předat a co zkontrolovat; sent je vždy false.
calculation.json — pouze B po úspěšném výpočtu; stopa položek, haléře a pracovní minuty.
tool-log.jsonl — skutečná volání našeho MCP serveru, odpovědi a chyby.
events.jsonl — události skutečného Codex běhu.
run.json — runtime, požadovaný model, konfigurace, čas, návratový kód a kontrolní hashe.
effective-prompt.txt — přesné zadání tohoto běhu.
sources/manifest.json a snapshot/ — zdroje a kód použité právě v tomto běhu.
check_result.py kontroluje technickou úplnost, nikoli správnost obchodního úsudku. Hodnocení rozhodnutí, citací a formulace dělá účastník s lektorem. Jeho úspěch není schválení k odeslání.
Každý běh má nové ID a vlastní složku. Částečný nebo přerušený běh se nezaměňuje za úspěšný. Novým spuštěním vznikne nový výsledek, starý se nepřepisuje.

KONTROLA ČLOVĚKEM
Otevřete citované zdroje. U A projděte všech 10 rozhodnutí, skutečný termín, shodu firmy a dokladu, region, kapacitu a chybějící podklady. U B porovnejte autoritu revizí, jednotky, potvrzené položky, kalkulaci a kapacitu. Každá nevyřešená otázka musí mít adresáta nebo roli, která ji může potvrdit.
Přijatou kopii případně uložte ručně do review/ mimo výstup agenta a připojte vlastní jméno, datum a omezení schválení. Model sám nemá nástroj pro schválení, odeslání, rezervaci ani zápis do CRM.

CO NÁSTROJE OPRAVDU OMEZUJÍ
Naše stdio MCP rozhraní exportuje šest nástrojů:
list_sources, search_sources, read_source, calculate_quote, save_dossier, prepare_handover.
calculate_quote v dílně A vrací chybu. search_sources hledá pouze v lokálně registrovaných datech. read_source bere ID a pole, nikdy libovolnou cestu nebo URL. Zápisy mají pevné názvy v output/ pracovní kopie, nepřepisují hotové výsledky. Citace musí odkazovat na přečtená pole. calculate_quote kontroluje verze a potvrzené položky. Duplicity identifikátorů v registrech se odmítají.
Limity serveru: 40 volání, 300 sekund, požadavek nejvýše 32 KiB, zdroj 64 KiB, odpověď 128 KiB.
Launcher omezuje celý proces na nejvýše 300 sekund. Windows Job Object ukončí při timeoutu i potomky; tato vlastnost byla ověřena samostatným testem. Jde o správu životního cyklu procesů, ne o omezení jejich přístupu k diskům či síti.

CO BALÍK NEPROKAZUJE
Runner žádá read-only režim Codexu, ignoruje uživatelský konfigurační soubor a vypíná vyjmenované funkce: shell, webové hledání, aplikace, pluginy, další agenty, prohlížeč, obrazové nástroje, hooks, paměti a vyhledávání skills. Zaznamenává přesnou konfiguraci. Úplný efektivní katalog nativních nástrojů modelu nebyl nezávisle vyjmenován. Šest MCP nástrojů proto neznamená doložené tvrzení, že model nemůže mít žádný další nativní nástroj. Ve vykonaných hodnocených bězích sledujeme, které nástroje skutečně použil.
MCP server je lokální Python proces stejného uživatele. Není to izolovaný kontejner ani samostatný účet. Omezení cest v našem kódu a read-only režim klienta se nesmějí vydávat za úplnou OS izolaci serveru.
Modelová inference potřebuje síť a přihlášení Codexu. MCP nástroje samy nemají síťové volání. Omezení počtu nástrojů a času není pevný tokenový či finanční limit. Označení modelu není důkaz neměnné verze vah.
Posouzení injection v těchto konkrétních datech není úplný bezpečnostní audit. Pro školení proto použijte jen syntetické vstupy a předem připravené čisté prostředí.

KDYŽ BĚH SELŽE
Neexistuje Codex/Python: řeší lektor instalaci, ne model.
Jiná verze CLI: lektor znovu ověří runtime; nepřepisujte kontrolu naslepo.
Model není dostupný nebo došel limit účtu: běh skončí; nic se nesimuluje. Uchovejte run.json a chybový výstup. Můžete studovat strukturu zdrojů, ale nevydávejte to za nový živý běh.
Timeout: procesní strom se ukončí; pro nový pokus spusťte nový běh. Nezvyšujte limit nad 300 s.
Chybějící jednotka, neznámý zdroj, konfliktní verze: nejprve opravte podklad nebo si vyžádejte rozhodnutí příslušného člověka, potom nový běh.
Pracovní kopie se z důvodu auditu ponechávají v %TEMP%\strj-ai-lab-* a výsledky v outputs/. Lektor po uchování potřebných dokladů uklidí jen konkrétní zkontrolované složky tohoto cvičení.

ZDROJE K RUNTIME
Oficiální dokumentace, ověřena 20. 10. 2026:
https://learn.chatgpt.com/docs/cli/reference
https://learn.chatgpt.com/docs/non-interactive-mode
https://learn.chatgpt.com/docs/config-file/config-reference
https://learn.chatgpt.com/docs/models?surface=web
Claude Code zde není implementovaná ani ověřená náhradní cesta.
