Design Resolution コレクション
概要
wf2des の tenant-scoped な意思決定台帳(decision ledger) — コンポーネント選択のための自律的な品質ラチェット。人手による修正ループは存在しないため、品質はマシン側で収束させる必要がある。台帳は決定論的でバージョン付きの構造的セクションシグネチャを、セクションの構造的な KIND ごとに受理された最良のコンポーネント解決結果へ対応付ける。generation-assemble がこのコレクションを所有する — モデル選択の前に台帳を CONSULT(参照)し、決定論的ガードの後に score ratchet 経由で WRITE BACK(書き戻し)する。他のどの実行もこれに触れない。解決済みセクションの KIND ごとに 1 ドキュメント。構造的で LLM を用いない section_signature をキーとするため、同じセクション KIND はどの画面でもどの再実行でも同じエントリにヒットする。vector index や learning corpus ではない。
テーブル定義
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| Design Resolution | design_resolution | _id | string | ◯ | {organization_id}_{project_id}_{section_signature} — これそのものが同一性であり、別の代理キーはない |
||||
| organization_id | number | テナント所有者。全 read/write の mandatory tenancy scope | |||||||
| project_id | number | project:id | プロジェクトスコープ。全 read/write の mandatory tenancy scope | ||||||
| section_signature | string | 構造的なセクション同一性、バージョン付き(sig@1:…) — セクションの kit コンポーネント名・正規化名・子タイプ形状・テキスト数に対する sha256。決定論的で LLM を用いない(LLM が割り当てたロールは決して使わない)ため、同じセクション KIND はどの画面でもどの再実行でも同じエントリにヒットする |
|||||||
| case | string | instance | compose |
|||||||
| platform_design_id | string | design:id | ◯ | 解決されたコンポーネント(= design_component._id)。compose 解決では null |
|||||
| component_name | string | display/debug 用の便宜値 | |||||||
| variant_policy | object | axis → value。書き込み前にレジストリの軸へ CLAMP される | |||||||
| provenance | string | mined | voted(Type Codes 参照)。mined evidence は vote より強い |
|||||||
| score | float | 決定論的な意思決定品質(base + modeled + variant-completeness + scope-fit。mined = 1.0) — ラチェットの通貨 | |||||||
| prompt_version | string | voted decision の出所 | |||||||
| updated_at | string | 最後に ratchet が受理した書き込み(ISO-8601 UTC タイムスタンプ) |
リレーション
_id={organization_id}_{project_id}_{section_signature}、値による — 唯一の同一性であり代理キーはない。- project_id → project.id
platform_design_id→ プラットフォームのdesign行 id(type=component)=design_component._id、値による。- DocumentDB 内ではリレーションは強制されない。論理リレーションであり、アプリケーションコードで検証する。
インデックス
- PRIMARY KEY (_id)
_idへの SCORE-RATCHET upsert:votedの書き込みは、保持中のエントリがminedでなく、かつスコアが厳密に低い場合にのみ着地する(サーバサイドフィルタ。フェンス付き upsert でのDuplicateKeyErrorは KEPT を意味し、そのように返される — エラーではない)。minedの書き込みはフェンスなし。同一の根拠は同一にスコアリングされる → 再実行で churn しない。より良い意思決定が勝つ → 単調改善。- すべての読み書きは
organization_id+project_id(テナントスコープ)でフィルタする。
Type Codes
provenance:
- mined: ファイル内の既存のデザイナー作成デザインから読み取られたもの — 投票を上回る唯一の権威(score = 1.0)。
- voted: K-sample の自己整合性(self-consistency)選択投票。
case:
- instance: 単一の登録済みコンポーネントがセクションを解決する。
- compose: セクションが複数のユニットから合成される(各ユニットが再選択される)。
注記
generation-assembleが書き込みを所有する — assemble 専用。他のどの実行もこのコレクションに触れない。解決済みセクションの KIND ごとに 1 ドキュメント(画面ごとではない)。- CONSULT(assemble、選択の前):
minedのエントリはそのセクションを LOCK し、selection call を skip する(LLM なし)。votedのエントリは診断用に保持され、現在の画面の選択を決して上書きしない。instance エントリは consult 時に再検証される: コンポーネントがセクションの候補に含まれない stale なエントリは投票へフォールスルーし、デフォルトバリアントのエントリはスコープ再検証される(default_sizeはデフォルトバリアントについてのみ語る)。 - WRITE-BACK(assemble、ガードの後):
unmatchedでないすべてのセクション(および compose の子)の意思決定が、決定論的スコアとともに upsert される。ラチェットでフェンスされる。 - evaluation では ledger read/write を無効化できるが、production default は両方 enabled である。
section_signatureが要: 構造的で LLM を用いないため、画面や再実行をまたいで安定する — 台帳はインスタンスごとではなくセクション KIND ごとに蓄積される。lineageブロックはない — 台帳は構造的同一性をキーとする実行中の意思決定キャッシュであり、lineage 追跡されるアーティファクトではない。updated_atが最後に受理された書き込みを記録する。- assemble の consult/write-back ステップと score-ratchet フェンスについては wf2des I/O 定義 を参照。