| intent_id | DOC-LEGACY |
|---|---|
| owner | docs-core |
| status | active |
| last_reviewed_at | 2026-04-09 |
| next_review_due | 2026-05-09 |
Workflow Cookbook は、QA / Governance-first の運用ドキュメント、Birdseye 資産、参照実装、CI / Governance テンプレートを一体で提供する基盤リポジトリである。 本仕様書は、このリポジトリが外部へ公開するふるまい、入出力、運用上の互換条件を定義する。
- 対象
- ルートドキュメント群
docs/birdseye/の生成物tools/codemap/update.pytools/autosave//tools/merge//tools/perf/- 下流ソフトウェア向けの自己改善ループ契約
agent-protocolsのEvidence契約へ接続する追跡ブリッジ.github/workflows/とgovernance/
- 非対象
- 本番ホスティング実体
- 外部 SaaS の本番設定
- Cookbook 外部リポジトリ固有の追加要件
- メンテナ
- repo の文書、生成物、参照実装を保守する。
- 派生リポジトリ導入者
- reusable workflow、policy、運用文書を再利用する。
- AI エージェント
- Birdseye とハブ文書を最小読込の起点として利用する。
- QA / Ops / Security 担当
- 受入基準、KPI、セキュリティ導線、CI 段階導入を評価する。
- ルート文書の責務は次のとおり固定する。
README.md: 初動入口HUB.codex.md: タスク分割入口RUNBOOK.md: 実行手順入口EVALUATION.md: 受入基準入口CHECKLISTS.md: リリースと衛生チェック入口GUARDRAILS.md: 行動制約と鮮度管理入口
docs/requirements.md/docs/spec.md/docs/design.md/docs/CONTRACTS.mdは互いに矛盾してはならない。- 仕様変更時は
CHANGELOG.mdの[Unreleased]に差分を記録する。
- 最低限次のトップレベルキーを保持する。
generated_atnodesedges
generated_at- 5 桁ゼロ埋めの世代番号であること。
- 例:
00025
nodes- キーはノード ID であること。
- 値は少なくとも次を持つこと。
rolecapsmtime
edges- 2 要素配列の配列であること。
- 各要素は
["from", "to"]の形式で依存関係を表すこと。
- 最低限次のトップレベルキーを保持する。
generated_atindex_snapshotrefresh_commandcuration_notesnodes
generated_atindex.jsonと同じ更新サイクルの 5 桁ゼロ埋め世代番号であること。
nodes[*]- 少なくとも次を持つこと。
idrolereasoncapsedgeslast_verified_at
- 少なくとも次を持つこと。
- カプセルは point read 用の最小要約として振る舞う。
- 最低限次のキーを持つこと。
idrolesummarydeps_indeps_outriskstestsgenerated_at
- 必要に応じて
public_apiを持てること。
- エントリポイントは
python tools/codemap/update.pyとする。 - 主要引数は次のとおり。
--targets- 明示ターゲットによる更新対象指定
--emitindex/caps/index+caps
--sincegit diff --name-only <ref>...HEADベースの対象抽出
--radius- 依存 hop 数制御
--radiusの仕様は次のとおり。- 既定値は
2 0は seed ノードのみ更新1以上は指定 hop 数まで近傍展開- 負数は CLI エラー
- 既定値は
- ルートターゲットに
docs/birdseye/、index.json、hot.json、caps/を含めた場合は、全カプセルを探索起点として扱うこと。 index.jsonを更新する場合、hot.jsonも同じ更新サイクルへ揃えること。
AutoSaveRequestは少なくとも次のフィールドを持つ。project_idsnapshot_deltalock_tokensnapshot_idtimestampprecision_modelatency_ms(任意)lock_wait_ms(任意)
AutoSaveResultは少なくとも次のフィールドを持つ。statusapplied_snapshot_idnext_retry_at
statusは少なくとも次を返せること。okskipped
- ロックトークンの検証を行うこと。
- snapshot ID の単調増加を検証すること。
- rollout gate と checklist 完了条件を評価できること。
- 主な例外は次のとおり。
LockTokenInvalidErrorSnapshotOrderViolation
- commit 時には
autosave.snapshot.commitを emit できること。 - payload は少なくとも次を含められること。
project_idsnapshot_idprecision_modelatency_ms(任意)lock_wait_ms(任意)
MergePipelineRequestは少なくとも次のフィールドを持つ。project_idrequest_idmerged_snapshotlast_applied_snapshot_idlock_tokenautosave_lag_ms(任意)latency_ms(任意)lock_wait_ms(任意)precision_mode_override(任意)
MergePipelineResultは少なくとも次のフィールドを持つ。statusprecision_moderesolved_snapshot_idlock_released
statusは次のいずれかであること。mergedconflictedrolled_back
precision_modeはbaselineまたはstrictとする。strictでは valid なlock_tokenを必須とする。baselineでは lock release を許可できること。
- Merge は
merge.pipeline.metricsを emit できること。 - payload は少なくとも次を含められること。
precision_modestatusmerge.success.ratemerge.conflict.ratemerge.autosave.lag_mslock_validatedresolved_snapshot_idlatency_ms(任意)lock_wait_ms(任意)
StructuredLoggerは通常の JSON Lines ログ出力に加え、任意のevidence_sink互換引数に加え、任意個のpluginsを受け取れること。- 各 plugin は
handle_inference(record)を実装し、logger 本体は plugin の中身を 知らずに推論レコードを引き渡せること。 - plugin は import 文字列
module:attributeと options の組み合わせから 生成できること。 StructuredLogger.from_plugin_specs(...)は plugin spec 配列から logger を 組み立てられること。StructuredLogger.from_plugin_config(...)は mapping または config file path から plugin spec を解決して logger を組み立てられること。- config root は top-level の
inference_plugins配列、または配列直下のどちらかを 受け付けること。 - file config は少なくとも
.jsonを受け付け、.yaml/.ymlは yaml loader が利用可能な環境で受け付けること。 - config file の shape は
schemas/inference-plugin-config.schema.jsonで共有し、 sample config と同期すること。 - Evidence 連携先の契約は
../agent-protocols/schemas/Evidence.schema.jsonを正本とすること。 - 追跡対象は LLM の推論 1 回ごとの行動証跡とし、
InferenceLogRecordからEvidenceへ 1:1 で変換すること。
StructuredLogger.inference()は既存どおり常に通常ログを 1 行出力すること。extra.agent_protocolが無い場合、Evidence の生成は行わず通常ログだけで完了すること。extra.agent_protocolがある場合、Evidence sink は schema 互換の JSON を生成すること。extra.agent_protocolがあるにもかかわらず必須フィールドが欠落する場合は、 変換専用の例外を返して不正な Evidence を出力しないこと。
- 最低限次のキーを受け付けること。
evidence_idtask_seed_idbase_commithead_commitactor
- 次のキーは任意入力として受け付けること。
start_timemodel_versionparametersparameters_hashtoolspolicy_verdictstale_statusmerge_resultdiffdiff_hashapprovals_snapshotenvironment
- 共通フィールドは次の固定値または導出値を使うこと。
schemaVersion:1.0.0kind:Evidencestate:Publishedversion:1
- 時刻は次のように解決すること。
createdAt/updatedAt/endTime:InferenceLogRecord.timestampstartTime:extra.agent_protocol.start_timeがあればそれ、無ければtimestamp
- ハッシュは
sha256:<hex>形式で正規化入力から算出すること。inputHash:promptoutputHash:responsediffHash:diff_hashがあればそれ、無ければdiffmodel.parametersHash:parameters_hashがあればそれ、無ければparameters
modelは次のように解決すること。name:InferenceLogRecord.modelversion:model_versionがあればそれ、無ければunknownparametersHash: 上記導出値
toolsはextra.agent_protocol.toolsがあればそれを使い、 無ければ["StructuredLogger"]を使うこと。environmentは次の既定値を持てること。os: 実行環境の OS 名runtime: 実行中 Python ランタイムcontainerImageDigest:uncontainerizedlockfileHash: repo root の既知 lockfile から導出したハッシュ。 lockfile が無い場合は sentinel 値のハッシュを使うこと。
staleStatusは指定が無ければ次を使うこと。classification:freshevaluatedAt:InferenceLogRecord.timestamp
mergeResultは指定が無ければ{"status": "not_applicable"}を使うこと。policyVerdictは指定が無ければmanual_review_requiredを使うこと。
- Evidence sink は 1 Evidence につき 1 JSON object を生成すること。
- file writer plugin は UTF-8 の JSON Lines として末尾追記できること。
- Evidence 出力は通常ログの内容を変更してはならないこと。
- 本機能は
workflow-cookbook自身へhermes-agentを組み込むものではない。 workflow-cookbookは、下流ソフトウェアが独自実装できる 自己改善ループの契約を外向きに提供する。- 本機能は任意であり、未導入の下流ソフトウェアに必須ではない。
- 本機能は原則としてリリース後運用で有効化する。
- 開発中や作成途中の変更に対して、本機能の利用を必須条件としない。
workflow-cookbookは次を正本として扱う。- reflection summary
- skill draft
- recall response
- user / workspace model snapshot
ReflectionSummaryは少なくとも次を持つこと。session_idtask_idまたはintent_idobjectivechangeslessonsopen_questionsnext_actionssources
sourcesは acceptance / evidence / docs reference のいずれかを保持できること。
SkillDraftRecordは少なくとも次を持つこと。draft_idsource_session_idtitleproblemproposed_stepsreview_statelinked_acceptance_idslinked_evidence_ids
review_stateは少なくとも次を扱えること。draftreviewapprovedrejected
approved以外の draft は公開 skill として扱わないこと。
RecallResponseは少なくとも次を持つこと。querysummaryhitsstale
hits[*]は少なくとも次を持つこと。source_typesource_idexcerptreason
- recall は raw transcript 全文ではなく、 summary と根拠断片に正規化して返すこと。
UserModelSnapshotは少なくとも次を持つこと。user_idpreferencesapproval_styleoutput_conventionsreviewed_at
WorkspaceModelSnapshotは少なくとも次を持つこと。workspace_idconstraintspreferred_docsreviewed_at
- 長期保持される snapshot は review 済みであること。
- nudge は少なくとも次を持つこと。
nudge_idreasontarget_kindtarget_refsuggested_actioncreated_at
- nudge は自動変更ではなく、次回セッションへの提案として扱うこと。
- nudge はリリース前の未完了作業へ割り込んで必須フロー化しないこと。
- 次の要素は下流ソフトウェアで差し替え可能であること。
- memory store
- search backend
- summarizer
- skill registry
- scheduler
- 上記差し替えにかかわらず、
ReflectionSummary、SkillDraftRecord、RecallResponseの最低フィールドは維持すること。
- 収集元は次のいずれか、または両方を受け付けること。
--metrics-url--log-path
- どちらも未指定の場合は
MetricsCollectionErrorを返すこと。 - 既定エラーメッセージは
No metrics input configured: provide --metrics-url or --log-pathを用いること。
--suite qaを提供すること。qasuite の既定出力先は.ga/qa-metrics.jsonとすること。
- 結果は標準出力へ JSON として出力すること。
output_pathがある場合はファイルにも書き出すこと。--pushgateway-url指定時は PushGateway へ PUT 送信できること。
.github/workflows/reusable/*.ymlはworkflow_callにより派生リポジトリから再利用できること。governance/policy.yamlは少なくとも次の責務を持つこと。- 論理 gate ID としての
required_jobsの基準 forbidden_pathsの基準
- 論理 gate ID としての
- 論理 gate ID と GitHub 上の実 check 名の対応は
docs/ci-config.mdで管理すること。 docs/ci_phased_rollout_requirements.mdと workflow 群は、Phase 0〜3 の段階導入方針を追跡できること。- Python CI は単体テスト・結合テストの実行と coverage 下限 80% の確認を 標準で行えること。
.github/dependabot.ymlは GitHub Actions 依存更新を週次で監視すること。.github/workflows/security.ymlは security posture 確認と reusable security CI を連結すること。- security posture 確認では少なくとも次を検証できること。
docs/security/SAC.mddocs/security/Security_Review_Checklist.md- vulnerability alerts
- Dependabot security updates
- secret scanning
- push protection
- security posture の検証 CLI は GitHub token がある場合に remote repository settings を確認できること。
docs/CONTRACTS.mdの契約は feature detection で扱うこと。- 少なくとも次を optional な外部入力として扱えること。
.ga/qa-metrics.jsongovernance/predictor.yaml
- これらが未提供でも Cookbook 側は正常動作しなければならない。
- ドキュメント、Birdseye 生成物、参照実装、CI テンプレートは相互に矛盾してはならない。
- 公開インターフェース変更時は、関連テストと関連文書を同時に更新すること。
- 変更履歴は
CHANGELOG.mdの[Unreleased]に追記すること。
- 文書整合
requirements/spec/design/CONTRACTSが矛盾しないこと。
- Birdseye 整合
README.md、docs/BIRDSEYE.md、docs/birdseye/README.md、GUARDRAILS.md、RUNBOOK.mdの更新手順が一致すること。index.json.generated_atとhot.json.generated_atが同じ更新サイクルであること。
- 代表テスト
tests/test_codemap_update.pytests/autosave/test_project_lock_service.pytests/merge/test_precision_mode_pipeline.pytests/test_collect_metrics_cli.pytests/perf/test_collect_metrics_autosave_merge.pytests/test_structured_logger.pytests/test_agent_protocol_evidence.py
- Python 系ゲート
pytest --cov=. --cov-report=term-missing --cov-fail-under=80
- 要件:
docs/requirements.md - 設計:
docs/design.md - 受入基準:
EVALUATION.md - 実行手順:
RUNBOOK.md - 境界一覧:
docs/interfaces.md - 外部契約:
docs/CONTRACTS.md