Situace
Práce vypadá hotově. Vše se zkompiluje, změna se dobře čte a relace se chystá skončit nebo být předána. Zda je dokončená, je jiná otázka a odpovědi na ni jsou rozptýleny: strom může držet soubory mimo deklarovaný rozsah, projekce už nemusejí odpovídat tomu, z čeho byly vykresleny, testy mohly běžet před posledními třemi úpravami a větev nemusí existovat na žádném remote.
Závazky, které úloha deklarovala při start, kontroluje check. Nekontroluje se to, co třída práce dluží bez ohledu na to, na co kdo nezapomněl deklarovat — a úloze, která nedeklarovala nic, se pravdivě a zbytečně řekne, že nedeklaruje nic.
Co spouštíte
check: vlastní konzistence úlohy — rozsah, stav, doktríny a závazky, které slíbilawatch: zda se politika, projekce, stav a uchování stále shodují- kroky závazků níže: co tato třída práce dluží, ať bylo slíbeno, nebo ne
Scénář
mode: live
steps:
- id: consistent
run: ['check']
note: 'the task is consistent with its scope, its policy and this checkout'
expect:
exit: 0
- id: nothing-drifted
run: ['watch']
note: 'no projection, record or piece of state disagrees with what produced it'
expect:
exit: 0
- id: the-change-exists
obligation: implementation
note: 'there is a change; an empty tree is not finished work'
- id: the-cases-were-run
obligation: tests
note: 'run over these inputs, not over an earlier shape of them'
- id: a-reader-was-considered
obligation: docs
- id: the-projections-are-current
obligation: generated
- id: committed
obligation: commit
note: 'settled live at HEAD; a clean tree is the evidence'
- id: pushed
obligation: push
note: 'a branch whose commits reach no remote is invisible to every other worker'
then:
- 'every outstanding item is named, with the command that would discharge it'Výsledek
Verdikt je unmet, ne fail: nic není rozbité, něco se dluží. Každý krok, který není splněn, vypíše, co chybí, a příkaz, který to splní, a krok, jehož důkazy už nepopisují tento strom, hlásí stale, místo aby prošel na sílu běhu, který proběhl před třemi úpravami.
Posouzení je stejné, k jakému dojde check — mj_obligation_judge čtou oba — takže se kontrola a vlastní kontrakt úlohy nemohou rozejít v tom, zda je tentýž strom hotový. Nic zde nezapisuje: každý příkaz ve scénáři je deklarován class: read-only v share/commands.yaml a usecase validate odmítne živý krok, který není.