Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Dokázat, co úloha dlužila, než ji prohlásíme za hotovou

Úloha deklaruje, co dluží, zaznamenává důkaz ke každému závazku a je odmítnuta, jakmile tento důkaz už nepopisuje strom, nad nímž vznikl.

zaručeno Kontroly dokončení a kvalityzákladnímaintaineragentzapisuje stav

Situace

Worker řekne, že je práce hotová. Kontrakt finish se už ptá, zda změna zůstala v rozsahu, zda proběhl ověřovací příkaz, zda záznam stále odpovídá větvi a zda je něco otevřené — samá fakta o pracovním stromu. Neptá se, zda testy, které proběhly, popisují kód, který nyní existuje.

Problém není v tom, že důkazy chybí. Je v tom, že důkaz, jakmile je zaznamenán, zůstává pravdivý. Test spuštěný před změnou nic neříká o stromu po ní a zpráva, která obojí pokládá za totéž, je důvod, proč „hotovo“ přestává cokoli znamenat.

Scénář

setup: task-owes
given:
  - a repository with the layer installed and a task active
steps:
  - id: owes-and-cannot-prove-it
    run: ['finish', '--outcome', 'completed', '--note', 'done']
    expect:
      exit: 10
      output: 'owed, and no evidence was recorded'
  - id: honest-is-never-refused
    run: ['check']
    expect:
      exit: 0
      output: 'obligation'
  - id: record-it
    run: ['evidence', '--covers', 'tests', '--type', 'test', '--command', 'bash test/run.sh']
    expect:
      exit: 0
      output: 'evidence: tests recorded'
  - id: now-it-discharges
    run: ['check']
    expect:
      exit: 0
      output: 'discharged over inputs'
then:
  - the obligation is discharged while the files it names are unchanged
  - a change to any of those files makes the same evidence stale, and finish refuses again
  - an outcome other than completed is never refused for owing something

Výsledek

Úloha nemůže dosáhnout completed na základě tvrzení. Každý závazek, který deklarovala, je splněn zaznamenaným příkazem a splnění je vázáno na hash souborů, které závazek jmenuje, takže jejich změna důkaz odebere, a ne ponechá za sebou. To, co zpráva o práci říká, je pak fakt o repozitáři, ne tvrzení o workerovi.

Scénář

Provedeno proti skutečnému nástroji v repozitáři připraveném pomocí task-owes, při každém generování tohoto webu. To, co následuje, není popis toho, co by se mělo stát; je to to, co se stalo.

dáno

  • repozitář s nainstalovanou vrstvou a aktivní úlohou

kdy

  1. 1majordomus finish --outcome completed --note done
  2. 2majordomus check
  3. 3majordomus evidence --covers tests --type test --command bash test/run.sh
  4. 4majordomus check

pak

  • povinnost je splněna, dokud soubory, které jmenuje, zůstávají beze změny
  • změna kteréhokoli z těch souborů učiní tytéž důkazy zastaralými a finish znovu odmítne
  • Výsledek jiný než completed se nikdy neodmítá kvůli tomu, že něco dluží

Co nástroj udělal

Důkazy o běhu, ze kterého byla tato stránka vygenerována: pass, kroků: 4. Výstup je normalizovaný: cesta k repozitáři, časová razítka, identifikátory a doby trvání jsou zástupné hodnoty, nic dalšího se neupravuje.

Testováno v test/cases/94_use_cases.sh, který spouští každý scénář a odmítne krok, jehož zaznamenaný výstup není tím, co vyprodukoval.

  1. OK   blockers    t-<id> — none open
    FAIL note        t-<id> — no --note file and no handover for this task  [reproduce: majordomus handover < note.md]
    INFO regression  t-<id> — profile implementation adds no requirement beyond the shared contract
    OK   scope       t-<id> — 1 touched file(s), all within scope
    OK   state       t-<id> — exact (head <head>)
    INFO continuity  t-<id> — applies to partial and blocked
    INFO mesh        t-<id> — the repository declares no enabled mesh
    INFO use-case    30 advisory gap(s) — not covered by an active use case, and the policy does not require it: command:init command:update command:doctor command:watch command:start command:context command:checkpoint command:handover command:check command:finish command:history command:decision command:question command:prompt command:evidence command:skills command:capture command:search command:doctrine command:plan command:version command:session command:knowledge command:adr command:usecase command:rules command:migrate command:recover command:bench command:archive  [reproduce: majordomus usecase coverage]
    OK   use-case    0 of 30 target(s) covered — every public command the policy requires is named and run by an active use case (policy use_cases.coverage)
    FAIL verification t-<id> — profile implementation requires --verify-command  [reproduce: majordomus finish --outcome completed --verify-command "<cmd>"]
    FAIL obligation  tests — owed, and no evidence was recorded  [reproduce: majordomus evidence --covers tests --command 'usecase impact']
    INFO gate        t-<id> — this repository declares no CI model at .ai/repo/ci/gates.yaml; nothing can be planned
    INFO gate        t-<id> — not in verification.finish_requires
    finish: refused, 3 unmet
    blocking doctrines:
    - majordomus.note-integrity
    - majordomus.verification-integrity
    - majordomus.obligation-closure
    • exit 10
  2. OK   knowledge   records — 0 record(s) valid against knowledge/v1; every reference resolves  [reproduce: majordomus knowledge check]
    ·    checkpoint  t-<id> — <timed against the checkpoint interval>
    OK   records     ledger.jsonl — every line is a well-formed event
    OK   blockers    t-<id> — none open
    OK   records     decisions.md — every entry is attributable
    OK   scope       t-<id> — 1 touched file(s), all within scope
    OK   state       t-<id> — exact (head <head>)
    INFO mesh        t-<id> — the repository declares no enabled mesh
    INFO use-case    30 advisory gap(s) — not covered by an active use case, and the policy does not require it: command:init command:update command:doctor command:watch command:start command:context command:checkpoint command:handover command:check command:finish command:history command:decision command:question command:prompt command:evidence command:skills command:capture command:search command:doctrine command:plan command:version command:session command:knowledge command:adr command:usecase command:rules command:migrate command:recover command:bench command:archive  [reproduce: majordomus usecase coverage]
    OK   use-case    0 of 30 target(s) covered — every public command the policy requires is named and run by an active use case (policy use_cases.coverage)
    INFO obligation  tests — owed, and no evidence was recorded (not refused: the outcome is not completed)
    INFO gate        t-<id> — this repository declares no CI model at .ai/repo/ci/gates.yaml; nothing can be planned
    check: 12 finding(s), 0 failing
    • exit 0
  3. evidence: tests recorded for t-<id> (inputs <hash12>)
    • exit 0
  4. OK   knowledge   records — 0 record(s) valid against knowledge/v1; every reference resolves  [reproduce: majordomus knowledge check]
    ·    checkpoint  t-<id> — <timed against the checkpoint interval>
    OK   records     ledger.jsonl — every line is a well-formed event
    OK   blockers    t-<id> — none open
    OK   records     decisions.md — every entry is attributable
    OK   scope       t-<id> — 1 touched file(s), all within scope
    OK   state       t-<id> — exact (head <head>)
    INFO mesh        t-<id> — the repository declares no enabled mesh
    INFO use-case    30 advisory gap(s) — not covered by an active use case, and the policy does not require it: command:init command:update command:doctor command:watch command:start command:context command:checkpoint command:handover command:check command:finish command:history command:decision command:question command:prompt command:evidence command:skills command:capture command:search command:doctrine command:plan command:version command:session command:knowledge command:adr command:usecase command:rules command:migrate command:recover command:bench command:archive  [reproduce: majordomus usecase coverage]
    OK   use-case    0 of 30 target(s) covered — every public command the policy requires is named and run by an active use case (policy use_cases.coverage)
    OK   obligation  tests — discharged over inputs <hash12>
    INFO gate        t-<id> — this repository declares no CI model at .ai/repo/ci/gates.yaml; nothing can be planned
    check: 12 finding(s), 0 failing
    • exit 0

Proč to nástroj ví

Řetězec od této stránky ke kódu: případ užití jmenuje příkazy, pravidla a tvrzení; každé pravidlo se dispatchuje z registru a každé tvrzení jmenuje test, který ho dokazuje; scénář výše provedl příkazy. Nic v tomto řetězci není text o záměru.

Pravidla, díky nimž platí

Uplatněné záruky

Související případy užití

Vypočteno z toho, co sdílejí: tvrzení, pravidla, příkazy, kategorie, aplikace. Tento seznam nikdo neudržuje.

Prohledává názvy a popisy všech stránek, které tento web publikuje.