三浦商店 施工事例検証システム 公開ワークフローノート v2

文書ID: miura-verification-workflow-note-v2
公開予定場所: /verification/spec/workflow-v2/
想定公開日: 2026-03-29 JST
ステータス: workflow-v2 — 公開後は変更しない。改定時は v3 を新設する。
運営者: 有限会社三浦商店(宮城県黒川郡大和町)


1. 目的

本ノートは、施工写真・動画の公開前後に行う半自動ワークフローのうち、公開 artifact の生成、C2PA Phase 1 の公開統合、公開、公開後確認の骨格を第三者が把握できるようにするための公開文書である。


2. 適用範囲

本ノートは以下に適用される。

以下は範囲外である。


3. ワークフローの性格

3.1 半自動

公開対象の選定は人が行う。
選定後の命名、manifest 生成、bundle 生成、OTS、publish、公開後確認は半自動で行う。

3.2 二系統運用

両 OS は内部の実行経路が異なっても、公開契約は一致しなければならない。


4. 公開ワークフローの全体像

1. オペレータが公開対象の写真・動画を選定する
2. 命名と作業ディレクトリ準備を行う
3. 公開画像群・manifest.json・bundle_manifest.json を生成する
4. C2PA Phase 1 情報を public bundle に統合する
5. bundle_manifest.json の exact bytes に対して OTS receipt を取得する
6. publish staging を組み立てる
7. サーバーへ同期し、公開 URL で取得確認する
8. 必要に応じて onchain follow-up を行う
9. WordPress が _miura_job_id を使って render-time injection を行う
10. live HTML と公開 artifact の整合を確認する

5. 入力と中間成果物

5.1 主要入力

5.2 主要中間成果物


6. ステップ詳細

6.1 Step 01: 取り込み・命名

代表的な処理:

6.2 Step 02: public artifact 生成

代表的な処理:

6.3 Step 02-C2PA: Phase 1 公開統合

C2PA 対応案件では、次の 5 段を生成する。

  1. internal c2pa_summary_{seq}.json
  2. raw manifest additive fields
  3. bundle_core.source_assets[]
  4. case_handoffc2pa.manifest.v1
  5. bundle_manifest.json top-level c2pa_provenance

公開仕様として重要なのは 第3段第5段 である。

6.4 Step 03: publish + verify

代表的な処理:

6.5 Step 04: OTS follow-up

代表的な処理:

6.6 Step 05: WordPress render-time injection

WordPress は _miura_job_id を起点に公開 artifact を読み、最終 HTML に verification JSON を注入する。

常時対象

条件付き対象


7. OS 別の高位契約

7.1 Windows

Windows では image-only 中心の既存経路を用いてもよいが、公開 bundle と公開 HTML の契約は macOS と一致しなければならない。

7.2 macOS

macOS では unified_runner.py を中心に、写真・動画・bundle・OTS・publish を統合実行してよい。

7.3 shared contract

両 OS で共通に満たすべき点:


8. C2PA がある案件 / ない案件

条件 photo-proof/1 BlogPosting JSON-LD c2pa-proof/1
C2PA 対応案件(c2pa_provenance あり) 出力 出力 出力
C2PA 非対応案件(c2pa_provenance なし) 出力 出力 出力しない
pre-C2PA 案件 出力 出力 出力しない

過去案件の canonical artifact を C2PA 対応のためだけに書き換えない。


9. 公開後確認

公開後は少なくとも次を確認する。

9.1 artifact 側

9.2 HTML 側

9.3 C2PA 側


10. fail-closed と中断条件

次のようなケースでは公開側または注入側で fail-closed となりうる。

公開 HTML では c2pa-proof/1 を出さないことで安全側に倒してよい。
ただし生成工程側では、PEM 不在や hash 契約違反のような重大条件は hard fail とするのが望ましい。

field-level degradation: published_asset_sha256 は optional helper field であり、manifest.json の hash 照合や schema 検証に失敗した場合は null に落とす。この場合も bundle_manifest.json 側の C2PA public lane が健全であれば、c2pa-proof/1 自体は継続出力してよい。


11. 公開すべきもの / 凍結しないもの

11.1 v2 で固定するもの

11.2 まだ固定しないもの


12. change management


13. informative references