invocation単位で確認
active changeを優先し、なければ最新日付のarchiveからusage.jsonを読みます。
- timestamp、command、step
- model別input / output / cache token
- slug省略時はarchive全体を集計
jobの現在状態、stepの判定根拠、artifactの入出力、利用量をrepository内の証跡から追跡します。
state.jsonだけで実行履歴を判断したり、PR attestationだけで差分の正当性を証明したりしません。現在状態・実行履歴・成果物・利用量を別の証跡として照合します。
activeなjobはspecrunner/changes/<slug>/、archive後はspecrunner/changes/archive/YYYY-MM-DD-<slug>/にあります。主要な証跡はfolderと一緒に移動します。
| 証跡 | 答える質問 | 位置づけ |
|---|---|---|
request.md | 何を、なぜ、どの受け入れ基準で依頼したか | trusted input |
design.md / tasks.md / spec.md | どの設計と作業分解で実装したか | 設計artifact |
*-result-*.md / review-feedback-*.md | 各gateが何を発見し、どの根拠を示したか | step output |
events.jsonl | どのstepが何回実行され、どう遷移・中断したか | append-only journal |
state.json | 現在のstatus、step、branch、PR、resume情報は何か | 再構築可能なprojection |
usage.json | どのcommand・step・modelがtokenを使ったか | best-effort usage record |
| pipeline log | process境界で何が起きたか | 診断用。job stateではない |
| Git commit / PR diff | 最終的に何がrepositoryへ入るか | 成果物の実体 |
一次情報。 step実行と遷移の一次情報はevents.jsonlです。state.jsonのstepsとhistoryはjournalからfoldされます。
job showはjobIdまたはslugを受け付けます。slugが複数jobに一致する場合は、更新時刻が最も新しいjobを表示します。main checkoutから実行してください。
npx specrunner job ls --all --json
npx specrunner job show <job-id>StatusとStepは現在位置です。実行済みの全stepやiterationを確認する場合はLineageとresult file、原因調査ではLogを続けて読みます。
Job ID指定のjob showとdoctorで確認します。slug一覧とpersist fast pathは一律fail-closedではないため、doctorが失敗している間はresumeしません。復元前の証拠保全はトラブル対応に従います。
成功したstepの宣言済みreads()とwrites()を、完了時刻・step名・hashとともにjournalへ記録します。job showはこのjournal-only recordを表示します。
stepがinputs / outputsを宣言
local runtimeがSHA-256を計算
events.jsonlへlineageを追記
job showでpathとhashを照合
| 状況 | hash | 意味 |
|---|---|---|
| localでfileを読める | sha256:... | その時点で読んだcontentのdigest |
| missing / unreadable | null | pathは残るが内容をdigestできなかった |
| managed runtime | null | local filesystemを持たない構造上の制約 |
| lineage追記失敗 | recordなし | best-effortのためstep完了は取り消さない |
Lineageは「このstepが宣言した入出力」を示します。未宣言の因果関係やagentの思考過程を証明するものではありません。
active changeを優先し、なければ最新日付のarchiveからusage.jsonを読みます。
activeとarchivedのstateを読み、duration・convergence・cost・outcomeを並べます。
--jsonで機械集計可能npx specrunner usage my-feature
npx specrunner usage
npx specrunner job stats
npx specrunner job stats --json| 欠損 | 表示 | 解釈 |
|---|---|---|
usage.jsonなし | slug別はno data、statsはcost null | 実行なしとは限らない |
| modelUsageなし | no usage data | managed runtimeなど取得不能 |
| 価格表にないmodel | USD不明または集計対象外 | token値と請求元を別途確認 |
| step timestamp不足 | duration null | 0秒ではなく計算不能 |
costは運用上の概算です。実測分布、価格表、認証方式による違いはコスト目安と計測を参照してください。
| 名称 | 生成時点 | 用途 |
|---|---|---|
request-review-attestation.json | request-review | 確認済みcode assertionを、request hashとsource revisionへ束縛 |
| SpecRunner Attestation PR comment | pr-create | journal hash、gate順、finding集計、model、costをPRへ要約 |
design stepが同じcode assertionを再確認するコストを減らすための内部artifactです。request本文またはsource revisionが変わる、revisionを取得できない、古い形式でrevisionがない場合はstaleとなり、designがすべて再確認します。file自体は任意出力です。
events.jsonlのraw contentからSHA-256を計算し、step attemptを開始時刻順に並べ、findings・model・usageをcommentへ出します。comment追加はbest-effortで、失敗してもPR作成は成功します。
hashの範囲。 journal hashは「そのcommentが参照したjournal bytes」を識別します。署名ではなく、PR diff・repository identity・verdictの正しさを単独で証明しません。
job show <job-id>のHeader、integrity、Lineage、Costを保存。
request.md、対象result file、PR diff、verification結果を照合。
events.jsonlの該当step、transition、interruptionを確認。
usage <slug>とjob stats --jsonで個別値と全体傾向を分離。
最後にlogを使い、stateに残らないprocess・network境界を補う。
共有範囲はtrust modelに合わせます。 request、finding、repository path、PR情報は内部情報を含み得ます。外部へ貼る前にsecretだけでなく、顧客名・未公開仕様・private repository情報も確認します。
各fileは異なる質問へ答えます。PR attestationやjournal hashだけで、PR diff、repository identity、findingの正しさ、merge可否を証明しません。
| 質問 | 現在の対応 |
|---|---|
| 現在のstatusと停止stepは何か | job showで確認できる |
| どのartifactを入出力したか | Lineageでbest-effort確認 |
| どのgateが何回動いたか | journalとPR attestationで確認 |
| token・時間・収束回数はどれくらいか | usageとstatsで集計 |
| mergeしてよいか | request、PR diff、result、checks、journalを人が照合して判断 |
src/cli/job-show.tsjob詳細・lineage・cost表示src/store/event-journal.tsappend-only event journalsrc/store/job-state-projection.tsstate projectionsrc/core/step/commit-orchestrator.tsusage・lineage記録src/core/runtime/local.tslocal artifact hashsrc/core/runtime/managed.tsmanaged lineage制約src/core/command/usage-show.tsslug別usagesrc/core/command/job-stats.tsrun統計src/core/factcheck-attestation.tsrequest-review attestationsrc/core/attestation/types.tsPR attestation contractsrc/core/attestation/render-comment.tsPR comment表示src/cli/command-registry.ts現行CLI surface