Auditability

過去のデータを書き換えていないと、
第三者が確かめられる設計。

この設計の価値は UI の親切さではありません。方法論をバージョン管理して公開し、日次のハッシュチェーンを外部に固定する設計にすることで、Signal Validation Log は自己申告ではなく検証可能な記録になります。

chain records: 1 latest: genesis · prev=0000000000000000… spec: v0.2

ひとことで言うと

MarketKernel は、毎日の取得記録の「指紋」(ハッシュ)を前日の記録とつなぎ、外部のタイムスタンプに固定する設計です。これにより「過去のデータを後から書き換えていない」ことを、当社を信用しなくても第三者が確認できます。数字の根拠は、算出式から元のページの指紋まで遡れます。

現在の状態 観測は 2026-08-25 に開始し、チェーンの初回レコード(genesis)を作成済みです。チェーンヘッドと外部アンカー(OpenTimestamps・Git)の記録は、初回の日次実行に合わせて開始します。下表の値が null の間は、まだ外部固定されていません。

責任分界

当社は、観測事実と方法論の正確性に責任を持ちます。
利用者は、意思決定とその結果に責任を持ちます。

この整理により、当社が負う責任は明確かつ検証可能な範囲に限定されます。「儲かるかどうか」ではなく、「観測が正確か、算出過程が記載どおりか」が問われる対象になります。契約で表示責任を配分することはできますが、データ品質への責任は移転しません。

監査経路

三層構造の各出力は前層へのポインタを保持します。ひとつの Confidence 値から、生のレスポンスボディのハッシュまで降りられます。

表示例 以下の経路は形式を示すためのもので、ハッシュ値は実測値ではありません。

Confidence 92
    ↑ confidence_model_v0.1(因子と重みを公開)
Demand Index 84
    ↑ index_v0.3(算出式を公開)
Normalized volume
    ↑ 較正係数 v0.2(アンカーと推定誤差を公開)
Market: DESIGN > BRANDING > LOGO_DESIGN
    ↑ ontology_v0.2(対応表を公開)
Observation: Coconala cat-1002, listing_count=8,241, 2026-08-25
    ↑ parser_v0.1
Raw object: raw/coconala/2026/08/25/... sha256:<取得後に確定>
    ↑ 日次チェーン、外部アンカーは初回の日次実行から

この経路を支える3つの原則

  • Raw-first。一次資産は生のレスポンスボディであり、集計値ではない。パーサはいつでも書き直せるが、生データは二度と取得できない
  • Immutable / Append-only。一度書いたオブジェクトは上書きも削除もしない。修正は新しいオブジェクトの追加として表現する
  • パース結果は一次オブジェクトへのポインタを必ず持つ。再パース時は行を更新せず、新しい parser_version の行を追加する

日次チェーン

1日1回、取得の成功・失敗を全て記録したマニフェストのハッシュを、前日のチェーンヘッドと連結します。初日の prev_chain_head はゼロ64桁です。

chain_head(D) = SHA256( prev_chain_head || sorted_concat(manifest_hashes) || date )

自社のストレージ内だけで完結したチェーンは、自社が全体を作り直せてしまうため、第三者に対する証明になりません。chain_head は毎日、自社の管理外に固定します。

アンカー 1
OpenTimestamps — ブロックチェーンにアンカー。検証可能性が最も強い
アンカー 2
公開 Git リポジトリへの日次コミット — ホスティング事業者のタイムスタンプに依存。片方が停止しても記録が残る
記録される仕様
各レコードに spec_version を含める。仕様を変更した日はチェーン上で特定可能
日次チェーンレコード
datechain_headprev_chain_headmanifestsspecanchors
初回実行後に記録000000000000…000000coconala —
fiverr —
0.2opentimestamps: —
git: —

レコードは新しい日付から順に表示します。manifests はプラットフォームごとのマニフェストファイル(object_key 昇順にソートした全体)の SHA-256 です。

検証手順

第三者が「過去を遡って書き換えていない」ことを確認する手順です。当社のサーバーを信頼する必要はありません。チェーンヘッドと外部アンカーが記録された日以降の日付について実行できます。

  1. 検証したい日 D のチェーンレコードを取得するこのページの一覧、または公開 Git リポジトリの chain/D.json から取得します。

  2. D−1 の chain_head が D の prev_chain_head と一致することを確認する一致しなければ、どちらかのレコードが差し替えられています。

  3. D の chain_head を再計算するSHA256( prev_chain_head || sorted_concat(manifest_hashes) || date ) を計算し、レコードの値と比較します。

  4. 外部アンカーのタイムスタンプを確認するOpenTimestamps の証明ファイル、または Git のコミット日時が、D の翌日以前であることを確認します。これにより D 以降に chain_head を作り直していないことが分かります。

  5. Signal Validation Log の対象集合ハッシュを照合する事前登録日のレコードに、仮説の対象集合ハッシュが含まれていることを確認します。

マニフェスト行の内容や生データ自体は公開しません。公開するのはハッシュとチェーンであり、これで「後から差し替えていない」ことの検証には十分です。

取得しないもの

以下は実装上のガードとして組み込んでいます。設計文書に書くだけでは守られないためです。

  • ログインを要するページ。クローラに認証情報を持たせません。持たせなければ越えられません
  • 個人を特定できる情報(出品者名、プロフィール文、アイコン画像)。出品者ランクや評価件数は集計値として保持しますが、識別子と個人属性を紐づけて保持しません
  • 取引情報、メッセージ、購入者情報
  • robots.txt で拒否されているパス
  • 有償データプロバイダの規約で再配布が禁止されている範囲

アクセスの規律(頻度、間隔、User-Agent、429/503 時の中断、回避策の不実装)はクローラーについてに記載しています。

仕様変更の扱い

spec_version はチェーンレコードに記録されます。仕様を変更した日は、チェーン上で特定可能でなければなりません。仕様変更を静かに行いません。

取得仕様は観測開始前に v0.1 → v0.2 へ改訂されたため、チェーン上には spec_version: "0.2" から記録が始まります。v0.1 で取得したデータは存在しません。

数字の作り方を確認したら、実際のデータを。

「自社の提案に使えるか」「どのカテゴリを観測できるか」も相談できます。いま申し込めるのは 90日市場検証プランです。

納品例を見る 市場検証を相談