@@ -57,13 +57,36 @@ Zamítnutí je rozhodnutí, ne odklad — zamítnutý vzor se znovu neotevře.
| `zamítni` | nález se zavře natrvalo |
| `konec` | konec review |
Nález, který od analýzy patch nedostal (většina), si ho složí až při review: agent napíše
návrh do JSON a nechá ho ověřit (`--set-patch`). Skript ho **nejdřív ověří proti souboru
a teprve pak uloží**, takže nepoužitelný pokus ve `findings.jsonl` nezůstane — a agent do
store nesahá vůbec. Pak ti ukáže diff a čeká na `ok` jako u každého jiného patche.
Rozhoduješ vždycky nad **hotovým diffem, ne nad větou o něm**. Nález, který od analýzy patch
nedostal (většina), si ho složí ještě předtím, než ti ho předloží: agent napíše návrh do JSON
a nechá ho ověřit (`--set-patch`). Skript ho **nejdřív ověří proti souboru a teprve pak
uloží**, takže nepoužitelný pokus ve `findings.jsonl` nezůstane — a agent do store nesahá
vůbec. Nález, který se editací souboru opravit nedá („míň se překotně přizvukovat"), diff
nedostane — to ti agent řekne rovnou a nabídne jen přeskočení nebo zamítnutí.
Vždy jen **jeden** nález najednou. Nálezy se číslují `1..N` podle pořadí, ne podle
interního id.
interního id.**Nahoře jsou regrese**, teprve pak se řadí podle závažnosti: závažnost
odhaduje model znovu v každém běhu a u téhož vzoru kolísá, kdežto „tohle už jednou
opravené bylo a vrátilo se" je fakt z auditu.
## Šance, že oprava zabere
Pod diffem je odhad typu `Šance, že zabere: ~40 %`. Nejde o změřenou úspěšnost, ale
o zařazení do jednoho ze **čtyř pásem** (~80 / ~60 / ~40 / ~20 %) podle toho, co patch dělá:
| Co patch mění | Pásmo |
|---|---|
| mechaniku — skript nebo hradlo, které nejde ukecat | ~80 % |
| tvrdý zákaz do souboru, který je v kontextu ve chvíli, kdy chyba vzniká (`SOUL.md`, `AGENTS.md`, `SKILL.md` dotčeného skillu) | ~60 % |
| přeformulování existujícího pokynu v takovém souboru | ~40 % |
| soubor, který v tu chvíli v kontextu není, nebo rozhodnutí nechává na úvaze agenta | ~20 % |
Hlavní osa je **jestli je opravovaný text vůbec v kontextu, když chyba nastává** —
sebelíp formulovaná věta v souboru, který se v tu chvíli nenačítá, chování změnit nemůže.
O pásmo dolů jde nález, který už jednou opravený byl a vrátil se (regrese), a nález, jehož
důkazy pocházejí z nesouvisejících situací. **Zastaralý nález odhad nedostane vůbec** — vzor
už možná dávno zmizel, takže není co předpovídat. Ke každému číslu patří věta, co ho tam
zařadilo.
## Kde co leží
@@ -88,7 +111,7 @@ nastal, ani víc, než kolik jich v dávce vůbec bylo.
| Rozhodnutí | Do `findings.jsonl` | Do `log/reflect.log` |
|---|---|---|
| složení patche | `patch` + `patch_drafted_at` (= složeno při review, ne modelem) | `DRAFTED <id> [vzor] <soubor>` |
| složení patche (u každého nálezu bez patche, ještě před předložením) | `patch` + `patch_drafted_at` (= složeno při review, ne modelem) | `DRAFTED <id> [vzor] <soubor>` |
| `ok` | `applied: {at, sha, file}`, `patch` = návrh modelu | `APPLIED <id> [vzor] <soubor> — <sha>` |
| `uprav:` | navíc `applied.new_text` = tvoje verze (návrh modelu zůstává v `patch`) | `APPLIED-EDITED …` |
| `edit: <text>` | the user rewrites `new_text` | write their version to a temp file; `--check --new-text-file <path>` shows the new diff and changes nothing, then on `ok` the same file **without** `--check` |
| `skip` | record the deferral, leave it `open`, move to the next | `--skip` |
| `reject` | **ask why first**, then close it for good — it never opens again | `--reject --reason "<user's words>"` |
| `stop` | end the review | *(nothing to run)* |
Rejection needs a reason and the script will not take it without one. Ask for it in one
short question and pass the user's own words through — half of the first findings were
rejected, and that number only says something about the analysis if the reasons are on
the record. Do not invent a reason, and do not talk the user out of rejecting.
Keep that temp file until the finding is decided — the user's wording never enters `patch`.
A finding without a `patch` cannot be applied. Offer to draft one, and file it with
`--set-patch` — **never by writing to `reflect/findings.jsonl` yourself** (gate 4):
Accept equivalents in the language the user writes in — the words above are meanings, not a
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.