本書は requirements.md を正本とし、その内容を実装者向けのプロトコル仕様へ再構成した補助仕様です。規範判断が衝突した場合は requirements.md を優先します。
対象スコープは以下です。
- 契約オブジェクトの型と識別子
- イベント駆動フロー
- 状態遷移
- リスク判定と PublishGate
- Evidence の記録境界
全契約は以下を共通必須とします。
schemaVersionidkindstateversioncreatedAtupdatedAt
共通 schema は継承ベースであり、最終バリデーションは具象 schema 側の allOf と unevaluatedProperties: false で行います。
扱う契約は以下の 5 種です。
| kind | 役割 | ID 規約 |
|---|---|---|
IntentContract |
依頼意図と capability 要求の正本 | IC-<number> |
TaskSeed |
実行可能な作業単位 | TS-<number> |
Acceptance |
実行結果に対する検証結果 | AC-<number> |
PublishGate |
公開可否と承認状態 | PG-<number> |
Evidence |
実行証跡と再現性記録 | EV-<number> |
TaskSeed.intentId -> IntentContract.idAcceptance.taskSeedId -> TaskSeed.idPublishGate.entityId -> Acceptance.idEvidence.taskSeedId -> TaskSeed.id
共通状態は以下に固定します。
DraftActiveFrozenPublishedSupersededRevokedArchived
intent.created.v1taskseed.created.v1taskseed.execution.completed.v1acceptance.created.v1publishgate.created.v1publishgate.decision.recorded.v1evidence.created.v1
| イベント | 発火主体 | 発火条件 |
|---|---|---|
intent.created.v1 |
Orchestrator | IntentContract.state = Active |
taskseed.created.v1 |
Orchestrator | TaskSeed 永続化完了 |
taskseed.execution.completed.v1 |
Executor | TaskSeed.state = Active かつ実行完了 |
acceptance.created.v1 |
Validator | Acceptance 永続化完了 |
publishgate.created.v1 |
Policy Engine | PublishGate 永続化完了 |
publishgate.decision.recorded.v1 |
Policy Engine | 承認、却下、自動承認の記録 |
evidence.created.v1 |
Executor | Evidence 永続化完了 |
IntentContractがActiveになる- Orchestrator が
intent.created.v1を発行する - TaskSeed Generator が
TaskSeedを生成する - Orchestrator が
taskseed.created.v1を発行する - Executor が
TaskSeedを実行する - Executor が
taskseed.execution.completed.v1を発行する - Validator が
Acceptanceを生成する Acceptance.status = passedの場合のみ Policy Engine がPublishGateを生成する- Executor が各実行終了時に
Evidenceを生成する
- 自動生成処理は最大 3 回まで再試行
- バックオフは 30 秒、60 秒、120 秒
- 冪等キーは
sourceContractId + sourceVersion + targetKind - 3 回失敗時は、生成対象が永続化済みならその対象契約、未永続化なら生成元契約を
Frozenに遷移
read_repowrite_repoinstall_depsnetwork_accessread_secretspublish_release
TaskSeed と Acceptance は generationPolicy を持ちます。
| 条件 | auto_activate |
requiredActivationApprovals |
|---|---|---|
read_repo のみ |
true |
[] |
read_repo + write_repo のみ |
true |
[] |
install_deps または network_access を含む |
false |
["project_lead", "security_reviewer"] |
read_secrets を含む |
false |
["project_lead", "security_reviewer"] |
publish_release を含む |
false |
["project_lead", "release_manager"] |
複数条件に該当する場合、requiredActivationApprovals は和集合とします。
| 契約 | 初期状態 | 特記事項 |
|---|---|---|
IntentContract |
Draft |
明示承認後に Active |
TaskSeed |
Draft または Active |
generationPolicy.auto_activate = true の場合のみ初期 Active |
Acceptance |
Draft または Active |
generationPolicy.auto_activate = true の場合のみ初期 Active |
PublishGate |
Active または Published |
low/medium 自動承認時のみ初期 Published |
Evidence |
Published |
不変記録のため Draft / Active を経由しない |
requiredApprovals = []かつfinalDecision = approved|rejectedのみ即時確定requiredApprovalsが空でない場合はapprovalDeadline必須finalDecision = pendingは人間承認待ちに限るapprovalDeadline経過時に未完了ならexpired
| riskLevel | 判定条件 |
|---|---|
low |
read-only。公開、外部通信、依存追加なし |
medium |
repo 書き込みあり。外部通信なし。本番影響なし |
high |
install_deps network_access read_secrets publish_release のいずれかを含む |
critical |
本番データ変更、シークレット外部送信、法令/契約違反懸念、またはロールバック不能公開 |
| riskLevel | requiredApprovals |
finalDecision 初期値 |
|---|---|---|
low |
[] |
通常 approved、違反検知時のみ rejected |
medium |
[] |
通常 approved、違反検知時のみ rejected |
high |
["project_lead", "security_reviewer"] |
pending |
critical |
["project_lead", "security_reviewer", "release_manager"] |
pending |
| フェーズ | トリガー | 主体 | 代表成果物 |
|---|---|---|---|
| Plan | intent.created.v1 |
Orchestrator | TaskSeed |
| Build | taskseed.created.v1 |
developer / ci_agent | build log, Evidence |
| Stabilize | build 成功 | qa / ci_agent | test report, Evidence |
| Refactor | integration 成功 | developer / project_lead | review result, Evidence |
| Publish | PublishGate.finalDecision = approved |
policy_engine / release_manager / admin | PublishGate, release note, Evidence |
taskSeedIdbaseCommitheadCommitinputHashoutputHashmodeltoolsenvironmentstaleStatusmergeResultstartTimeendTimeactorpolicyVerdictdiffHash
approvalsSnapshot: 手動承認が発生した場合のみ必須
startTime <= endTimeはアプリケーション検証で担保baseCommit == headCommitは許容- コンテナ未使用環境では
containerImageDigest = "uncontainerized"
workflow-cookbookはStructuredLoggerplugin を通じてEvidenceを生成できる。- 連携時の入力コンテキストは少なくとも次を含む。
evidence_idtask_seed_idbase_commithead_commitactor
inputHash/outputHash/diffHash/model.parametersHashはworkflow-cookbook側で正規化入力から導出できる。- 参照実装と sample config は次を参照する。
workflow-cookbook/tools/protocols/README.mdworkflow-cookbook/examples/inference_plugins.agent_protocol.sample.json
本書から実装へ落とすときの責務境界は以下です。
- JSON Schema: 型、必須、列挙、ネスト、追加プロパティ禁止
- アプリケーション検証: 時系列整合、条件付き必須、正規化手順、参照整合
- オーケストレータ: イベント順序、再試行、冪等性、
Frozen遷移 - Policy Engine: risk 判定、PublishGate 作成、自動承認、承認記録