カードの作成とチェック
ビルドカードを切り、許可されたものだけをビルドし、真の現実世界証拠でチェックゲートを通過する。
目次
カードは1つのスコープ付きビルドセッションだ。計画が完了したら、大半の時間を過ごすループがこれだ。
前提条件
/flow card は、6つの計画ゲートがすべて通過するか、対応する未解決debt行を持つまで拒否する。拒否されたら /flow を実行し、名指されたステージを直す。
カードを切る
/flow card
次の cards/C-NNN.md が作られる。コードを1行書く前に、それを読んでテンプレートの求めるものを埋める:
| セクション | 用途 |
|---|---|
## Allowed files |
このセッションが触ってよい唯一のパス。爆発半径だ。 |
implements: |
このカードが主張するPRD要件id(FRn)。 |
## Verify |
実際に実行するコマンド。願望ではない。 |
## Independent test |
ユーザー可視の断片証拠——本当にどちらでもなければ infra / none。 |
## Evidence |
doneまで空のまま。真の現実世界証拠がここに入る。 |
risk / risk-reason |
リスククラス。自律実行の前に必要。 |
## Independent test に残った [FILL] は check を落とす。スキップしない。
先に過去の知識を読み込む
/flow recall
未解決debt、最新のレトロ、前カードのスコープ、ハーネスの摩擦、promote済みプレイブック。出力はノイズではなく、適用すべきコンテキストとして扱う。
任意:進行中に印を付ける
/flow card start C-001
カードを進行中として記録する。ポータブルな cards/.inflight レジストリに載り、/flow status に現れる。ゲート付きの status: フィールドには決して触らない。完全に任意だ——手編集も有効なままだ。
線の内側でビルドする
すべてのビルドセッションを縛る3つの規則:
- 1セッション1カード。 2つはダメ。
/flow readyが安全と言うまで並行もダメ。 ## Allowed filesだけを触る。 そのリストからの漂流は、レビュアーがまさに見るものだ。- 契約は継ぎ目だ。 ステージ05が宣言した形に向けてビルドする。形が間違っていたら、先に契約を修正してからコードを変える。
UIカードでは、フロントエンドのコードより先にモックカードの承認が必要で、/flow design <file> がそのモックに機械的な DESIGN.md チェックを実行する。
並行して安全なカードを確認する
/flow ready
allowed filesの重なりにもとづく並行安全性ヒント付きで、ビルド可能なtodoカードを列挙する。
カードをチェックする
/flow check C-001
先に機械層がカードを検証する:ステータスの妥当性、残った [FILL] プレースホルダ、必須セクション、## Evidence が実際に埋まっているか。通過して初めて意味レビューが始まる——スコープとのdiff、allowed-files漂流、契約の形への適合、UIなら DESIGN.md、証拠が本当に現実世界かどうか。
最もよく出会う失敗:
[x] status is 'done' but ## Evidence is empty (paste world-state proof: URL/curl/DB row)
FAIL: C-001 has gate violations (above).
ビルドが完成し全テストが緑でも発火する。「Tests pass」と「マージ済み」は中間状態だ。
通る証拠を貼る
何が通るかはプロジェクトタイプで決まる:
| プロジェクトタイプ | 通る証拠 |
|---|---|
web |
稼働中のデプロイ済みURLと実際の curl 出力 |
cli |
実際の呼び出しとその出力・終了コード |
library |
公開APIのimport、動く使用例、カバレッジ閾値の達成 |
skill |
スキルホームへのインストールと、自らの完了定義に到達した実際の実行 |
プロセスの成果物——承認済みPR、緑のCIバッジ、リリースノート——は証拠にならない。機械的下限がプロセスのみの文章を却下する。書類でカードをdoneにできない。
何が通るかの完全な規則は 完了とは現実世界。
doneに反転する
/flow check C-001
PASS: C-001 is valid (status: done).
またはCLIに反転を任せる:
/flow card done C-001
card done は check と同じ完了規則を適用し、ゲートが落ちれば反転を取り消す。中身のないdoneは生み出せない。status: done の手編集と check の実行も同様に有効だ。
計画をコードに収束させる {#converge}
実際のビルドは漂流する:計画が頼んでいないコードが書かれ、計画した作業が静かに着地しない。/flow converge はその差のクローザだ。next ゲートではない。任意だ。
現在のコードを計画(PRD FRn、契約インターフェース、constitution INV-n)に対して評価する。差を記述する flow-converge/v1 ペイロードを書き、実行する:
/flow converge
または flow.sh converge --file <path>。
この動詞を縛る3つの規則:
- 追記のみ。 既存の
cards/C-*.mdを編集・採番し直し・削除しない。アプリケーションコードに触らない。残余カードが出力される。後のセッションがビルドする。 - 全か無か。 ランナーはトランザクショナルだ:残余カードは全書き込みか全不書き込みかだ。部分的追記はない。
CONVERGEDは何も書かない。 所見ゼロ(またはペイロードなし)はCONVERGEDを出力し、cards/に触らない。
コードにはあるが頼まれていない作業はレビューカード(implements: none)になる。削除ではない。何かを除去する決定はオペレータのものだ。
ペイロードが受け付ける差タイプ:missing、partial、contradicts、unrequested。それ以外は却下され、何も書かれない。
所見は先に .flow/converge-pending.md に書く(実行状態、gitignore済み。CONVERGED 実行が cards/ を汚さないため)。カードが書かれる前に所見表を提示する。形式:
schema: flow-converge/v1
findings: 2
---
gap-type: missing
severity: HIGH
implements: FR2
source-ref: 03-prd.md:FR2
title: implement the mark-task-done endpoint
deps: C-002
allowed: src/app.py
---
gap-type: unrequested
severity: LOW
implements: none
source-ref: src/app.py:debug_dump
title: the debug_dump surface no feature asked for
deps:
allowed: src/app.py
追記されたカードは [FILL] のVerifyとEvidence付きで出荷される——まだビルドされていない。切り、埋め、他のカードと同じく check する。
差の分類とペイロードスキーマの全文は skills/flow/references/converge.md。