YONAPO RESEARCH
研究記録
MedDSL(仮称)

RESEARCH / RECORD

P2-k:確認済みの期間不明記録の精密化(意味設計)

原文 docs/research/50-p2-k-design.md

28 KB

GitHubで見る

版 be280c0

この文書の目次 12項目

作成日:2026-10-20。状態:作成者側の設計草案。runtime・宣言・実行例は未実装。原理の草案49 の§6 で選んだ課題 C1 を、P2-k として設計します。手指定の期待は 51。独立確認・評価用正解の凍結は未実施で、運用方針29 に従います。例はすべて架空で、外部資料・患者情報・実データは使いません。

1. 問いと今回の判断

P2-e は、確認済みの記録の期間が unknown(不明)または unspecified(未指定)だと、その文脈の問いを validity_unknown / validity_unspecified で止めます。情報要求は「期間・根拠・人の確認が要る」と述べますが、resolution_supported: false で、解消する経路はありません(31 の §3.1)。一方 P2-g は、文脈の不明(方法不明など)を、新しい記録と新しい内容確認で精密化できます(M33)。

研究上の問いは、確認済みで期間不明の記録を、元の記録・確認・過去の参照時点の結果を消さずに、後から追加した明示的な期間で精密化できるか。そしてその追加を、既存の契約(可視性・部分訂正・内容を指定した確認)のどこに置くと、旧い意味を隠れて変えずに済むかです。原理の草案49 の仮説 H1(接続ごとに七欄を定める)、H2(共通義務の主題と意味固有の部分)、H7(訂正・精密化を追加情報として扱う設計が保てるか)を、実装の前に予測を固定して試します。

判断 初回に採る設計 理由・見直す条件
RF-D1 精密化は、既存の記録の期間についての新しい種類の記録(refinement)とする。記録を書き換えず、部分訂正(revises)にも読み替えない 部分訂正として表すと、期間不明の記録は精密化した区間の外でなお不明のまま残り、情報要求(期間・根拠・確認が揃えば解消する)と食い違う(§2 の比較)。記録についての記録を契約が許すかが、この課題の核心
RF-D2 精密化の対象は、期間が unknown / unspecified の記録だけ。bounded の記録の期間変更は部分訂正(P2-e)で行う 二つの操作を混ぜない。bounded に精密化を許すと、部分訂正との優先順位が要る
RF-D3 精密化が述べる期間は bounded だけ。unknown / unspecified は入力不正(精密化にならない)、open_end は未対応(P2-e と同じ) 不明を不明で「精密化」しない。終点なしを全期間へ補完しない
RF-D4 同じ記録の適格な精密化が複数あるとき、異なる区間なら競合として止め、同一の区間なら一つにまとめる。後から記録された精密化を優先しない latest-wins は、前の確認を黙って無効にする。同一の主張の重複は情報の不一致ではない
RF-D5 精密化は固有の人の確認を要し、確認は対象の記録の内容 hash と精密化自身の内容 hash を拘束する 確認後の参照先の差替えで古い確認を使い回さない。P2-e は assertion の確認が ID だけを指すが、この接続は「記録についての記録」なので、対象の内容を拘束する
RF-D6 精密化は、記録と確認の両方が参照時点 k 以下のときだけ効く。k より前の問いは精密化の前の結果を再現する 過去の参照時点の結果を、後の情報が書き換えない(G1・G11)
RF-D7 精密化された記録を、部分訂正の対象にできる。包含は精密化された期間に対して、参照時点ごとに検査し、矛盾は行の停止として返す 精密化の有無が参照時点で変わるので、包含を入力全体の静的な検査にすると、未来の精密化が過去の参照時点を壊す(G1 に反する)
RF-D8 未知の能力は、精密化・確認の記録にも及ぶ。可視であれば、確認前・効いていない精密化の能力も落とさない I4。P2-e の規則を精密化へ拡張する
RF-D9 常に not_certified。臨床主張を追加せず、基底へ変換しない。精密化が述べる期間の医学的な妥当性は保証しない 精密化は入力者の明示した前提(explicit_interval_uniformity)の下にある
RF-D10 新しい profile・schema・操作・方針の専用経路にし、P2-e の宣言・実体・経路を変更しない。意味は P2-e を継承するが、実装は共有しない 旧観測の非干渉(G9)。意味の継承と実装の共有を区別する
RF-D11 精密化の精密化、精密化の撤回、競合した精密化を解消する経路は設けない 初回の断片を限定する。競合が永続することは制限として残す(§9)

有限区間は、入力者がその区間全体について主張した、という明示的な前提です。精密化は、入力者が確認した期間情報を後から足す操作で、観察一点から期間を推定する処理ではありません。

2. 旧契約との境界と、採らない案の比較

保存する範囲 Q_old は、従来妥当な P0/P1/P2-e/P2-i 等の要求で、翻訳と回答対応は恒等、観測は意味・根拠・停止・採用情報(実装識別 certifier を除く)です。専用 handler の追加による旧経路の非干渉を、既存の回帰と前後比較で確認します。P2-e の要求に対する答えは、P2-k を載せても変わりません。新しい精密化つきの要求と、P2-e の要求の答えが一致する、という保存は主張しません(精密化は方針の差です)。

案 内容 判断
M1:精密化は記録の期間の割当(採用) 確認済みの精密化があれば、対象記録の有効な期間を精密化した区間とみなす。区間の外では、その記録は適用されない 選定。元の記録は残る。情報要求(期間・根拠・確認)と一致する。第二階の記録(記録についての記録)を許す
M2:精密化は部分訂正 精密化を、期間不明の記録を訂正する bounded な記録として表す(不明は任意の区間を含むとみなして包含を通す) 採らない。訂正した区間の内側では対象が不明でも無関係になるが、外側では対象の期間が不明のまま残り、解消されない。情報要求が述べる解消と食い違う
M3:何もしない 期間不明は永続的に止める 現状(P2-e)。この課題は、これを破る条件を調べる

M1 と M2 は、精密化した区間の外側の時点で結果が異なります。たとえば、期間不明の肯定 A に、区間 [10,20) の精密化が確認されたとき、時点 t=25 の問いは、M1 では A が適用されないので neither(行は完成)、M2 では A がなお不明なので unassessed です。この差が、契約が「記録の期間という属性を、別の記録が確定する」ことを表す枠を持つかどうかの検証点です(49 の R1)。本断片は M1 を実装し、M2 は手指定の対照(CT01)として期待だけ残します。

3. 七欄を先に書き出す(H1・H2 の実験)

49 の§3 の七欄を、実装の前に埋めます。事前に決めておけば、実装後に「七欄に収まらない決定」を数えられます。

欄 P2-k での決定
前提 精密化された期間の各時点で、記録が述べる原子が成り立つ(explicit_interval_uniformity)。精密化は記録の期間の割当で、部分訂正ではない(validity_refinement)。期間の長さを不確かさへ変換しない
版 profile p2-validity-refinement-draft-1、native 仕様の hash、方針 fiction:confirmed-validity-refinement@1。P2-e の仕様 hash には依存しない(意味は継承、実装は共有しない)
確認対象 記録:P2-e と同じ(ID を指す人の確認)。精密化:対象記録の内容 hash と精密化自身の内容 hash を含む人の確認。確認時刻は精密化以後
情報の選択 参照時点 k:記録・確認(記録の確認と精密化の確認)の可視性。対象時点 t:精密化後の有効な期間への所属。除去集合は P2-e と同じく、t を覆う適格な全訂正辺から作る
問い literal_state(positive_only・negative_only・both・neither)、または停止の理由と情報要求。精密化の根拠を回答に添える
保持・喪失・追加 保持:元の記録・確認・過去の参照時点の結果。喪失:期間の医学的妥当性は保証しない。追加:精密化の記録(第二階)、競合の状態
資源・停止 P2-e の課金に精密化と精密化の確認を加える。未完了行は値なし。停止の順序:未知の能力 → 期間の阻害 → 訂正の包含矛盾 → 判定

4. 共通義務の主題への割当

49 の§3.7 の主題 A〜H に当たる義務を先に割り当て、残りを意味固有(I)とします。H2 の予測:12の個別義務のうち、能力を問わない主題(A〜H)に当たるものが大半で、意味固有の義務は少数に収まる。外れた場合は H2 の修正が要ります。

義務 主題 内容
RF-1 A 識別・版・依存 native 仕様・方針・consumer・依存の hash を固定。P2-e と区別
RF-2 B 確認の拘束 精密化の確認が、対象の内容と精密化の内容の hash を拘束。旧い確認の流用を拒否
RF-3 C 可視性 記録・確認が k 以下。未来の精密化が過去の参照時点に影響しない。精密化の前の結果を再現
RF-4 D 競合・非復活 異なる適格な精密化は競合、同一はまとめる。後勝ちにしない。未確認・suspected は効かない。元の記録を消さない
RF-5 E 未知・停止順 未知能力(確認前・効いていない精密化を含む)→ 期間の阻害 → 包含矛盾 → 判定
RF-6 F 資源・原子性 課金式、先払い、未完了行は値なし、完了行は予算に不変
RF-7 G 再現・旧経路 旧い P2-e の経路と観測を変えない。順序の入替えで結果が変わらない
RF-8 H 不昇格 AI 由来の精密化は人の確認まで効かない。臨床主張を追加せず、基底へ変換しない
RF-9 I 意味固有 精密化の対象と区間の限定(unknown/unspecified だけ。bounded な対象・不明な区間・open_end を拒否)
RF-10 I 意味固有 精密化後の区間の意味:半開境界、区間の外は「適用されない」(否定でも全期間でもない)
RF-11 I 意味固有 精密化と部分訂正の相互作用:精密化後の区間への包含を参照時点ごとに検査。順序に依らない
RF-12 I 意味固有 限界:精密化の精密化・撤回・競合の解消は未対応。競合は永続し、情報要求は解消可能と偽らない

予測の数:A〜H に当たる義務 8、意味固有 4(RF-9〜12)。実装と評価の後、A〜H に収まらない決定が出たかを結果に記録します。

5. 入力断片

名前は実装前の予約案です。登録時に所有の衝突を検査し、仕様の生バイト hash・実装・依存・防護例を固定します。

項目 設計
profile・要求 schema p2-validity-refinement-draft-1 / p2-refinement-request-draft-1(結果 p2-refinement-result-draft-1)
操作・回答型 probe_refined_temporal_literal / refined_temporal_literal_probe
方針 fiction:confirmed-validity-refinement@1。P2-e の方針を受け付けて代用しない
要求の外枠 schema_version, operation, consumer, source, views, queries, budget(P2-e と同じ)。consumer は profile・仕様 hash・操作を照合
source package, contexts, ledger。単一 package・単一文脈・単一の単項述語(P2-e と同じ)
台帳 schema_version: p2-refinement-ledger-draft-1、ref, assertions, reviews, refinements, refinement_reviews。P2-e の台帳として扱わない
主張・確認 P2-e と同じ項目。主張の validity は bounded / unknown / unspecified / open_end(未対応)。確認は human / confirmed、時刻は主張以後
精密化 refinements[] id, assertion_ref, target_sha256, validity, certainty, recorded_at, origin, required_capabilities, change_reason。validity は bounded だけ。certainty は confirmed / suspected。change_reason は非空
精密化の確認 refinement_reviews[] id, refinement_ref, refinement_sha256, reviewer_ref, reviewer_kind, recorded_at, outcome。human / confirmed だけ、時刻は精密化以後
hash target_sha256 は対象の主張の JSON の正規化した内容の SHA-256。refinement_sha256 は精密化の JSON の同じ SHA-256。確認は、台帳に存在する精密化の hash と一致しなければ入力不正
views・queries P2-e と同じ(as_of、target_at)。1〜64件
必須能力 各記録・精密化は上記 profile を required_capabilities に含める
上限 1 MiB・深さ64、各配列 1,000件、views/queries 各64件、予算 0〜100,000。bool を整数として受け付けない

構造・参照・時刻・hash・区間・確認順序の検査は、予算 0 でも同じ結果です。

5.1 入力不正と未対応(予算に依らない)

条件 結果
精密化の対象が存在しない invalid_input / unresolved_assertion
対象の期間が bounded invalid_input / refinement_target_not_unresolved
精密化の記録が対象の記録より厳密に後でない invalid_input / refinement_not_after_target
target_sha256 が対象の内容と一致しない invalid_input / refinement_target_hash_mismatch
精密化の validity が unknown / unspecified invalid_input / invalid_refinement_validity
精密化の validity が open_end または未知の種類 unsupported_profile / unsupported_validity
精密化の区間が空・逆転・形式不正 invalid_input / invalid_validity_interval
精密化の確認の対象が存在しない invalid_input / unresolved_refinement
精密化の確認の hash が一致しない invalid_input / refinement_review_hash_mismatch
精密化の確認が精密化より前 invalid_input / review_precedes_refinement
精密化が profile を必須能力に持たない invalid_input / missing_refinement_capability
bounded でない期間の主張が、他の主張を訂正する(revises を持つ) unsupported_profile / unsupported_revision_scope(P2-e と同じ)
台帳の schema が違う unsupported_profile / unsupported_refinement_ledger

P2-e の訂正の静的な包含検査は、両者が bounded の場合だけ残します。対象の期間が unknown / unspecified の主張を bounded の主張が訂正する場合は、静的には通し、包含を参照時点ごとに検査します(RF-D7)。

6. 作業定義

k は参照時点、t は対象時点。a は主張、f は精密化。主張の期間の種類が unknown / unspecified のものを未確定の主張と呼びます。

V(k)  = {a | a.recorded_at <= k}                                   可視の主張
E(k)  = {a ∈ V(k) | a.certainty = confirmed かつ 可視の人の確認がある}   適格な主張(P2-e と同じ)

F(k)  = {f | f.recorded_at <= k}                                   可視の精密化
Fe(k) = {f ∈ F(k) | f.certainty = confirmed かつ
                    f.recorded_at <= (確認の記録時刻) <= k の人の確認がある}  適格な精密化

Iv(a,k) = { f.validity | f ∈ Fe(k), f.assertion_ref = a.id }       対象 a の適格な精密化の区間の集合(同一の区間は一つ)

状態(a,k) = 確定(区間)  if |Iv(a,k)| = 1
          競合           if |Iv(a,k)| >= 2
          なし           if |Iv(a,k)| = 0

有効な期間 eff(a,k) = a.validity                if a.validity が bounded
                    = その区間                   if a が未確定 かつ 状態(a,k) = 確定
                    = 未定義                     otherwise

C(k,t) = {a ∈ E(k) | eff(a,k) が定義され、start <= t < end}      対象時点を覆う適格な主張
S(k,t) = {b.id | a ∈ C(k,t) かつ b.id ∈ a.revises}                 C の全訂正辺から除去
A(k,t) = {a ∈ C(k,t) | a.id ∉ S(k,t)}
Pos / Neg = A のうち positive / negative

停止の順序(P2-e の順序を拡張):

  1. V(k) の主張、または F(k) の精密化のいずれかに未知の必須能力があれば、unassessed / unknown_capability。保留・訂正済み・期間外・確認前または効いていない精密化でも落とさない。まだ見えない記録は根拠にも阻害要因にも使わない。
  2. 未知能力がなければ、E(k) の未確定の主張 a で、状態(a,k) が「なし」または「競合」のものがあれば、unassessed。理由は「なし」なら validity_unknown / validity_unspecified、「競合」なら validity_refinement_conflict。既知の肯定が別にあっても判定しない。
  3. 阻害がなければ、すべての可視の主張 b(適格でなくてもよい)の訂正辺 b → a について、a が未確定で状態(a,k) = 確定(区間) のとき、b の期間が b.validity ⊆ 区間 でなければ、unassessed / revision_outside_refined_validity(矛盾した履歴の診断)。
  4. それ以外でのみ C, S, A, Pos, Neg を計算する。

literal_state は P2-e と同じ:positive_only / negative_only / both(競合。肯定を優先しない)/ neither(採用根拠なし。否定・不存在を意味しない)。精密化した区間の外では、未確定だった記録は適用されず、それ自体は否定にならない。

7. 回答と根拠

正常に完了した行も方針診断です。回答全体は meaning_mode: refined_temporal_literal_probe、certificate.status: not_certified、converted_to_base: false、clinical_assertions_added: []。各行は P2-e の欄に、次を加えます。

  • refinement_evidence:期間が精密化から決まった適格な主張ごとに、{assertion_ref, validity, refinements: [{refinement_ref, review_refs}]}。同一の区間の複数の精密化は全て列挙する。
  • pending_refinement_refs:可視で、確認がないか suspected の精密化。効いていないが、AI 由来の候補の追跡に使う。
  • 停止した行:blocking_assertion_refs、information_requests。validity_unknown / validity_unspecified の要求は requires: ["bounded_validity", "evidence", "human_confirmation"]、resolution_supported: true、pending_refinement_refs を添える。validity_refinement_conflict は resolution_supported: false(この断片に解消の経路がない)。

停止した行には、完成した採用集合も部分的な literal_state も返しません。全主張・精密化・確認の原データは要求に残し、応答の保持一覧も全 ID を含めます(未来の入力も含み得るので、アクセス制御の保証ではない)。

8. 資源と決定性

構造・参照・時刻・hash・区間・確認順序の検査は予算 0 でも同じです。意味計算だけを共通の Budget に課金します。

完了に必要なsteps
 = 1 + Σview [ N_assertions + N_reviews + N_refinements + N_refinement_reviews
              + Σquery (2 + |V(k)| + |F(k)| + Σa∈E(k) |a.revises|) ]

各走査分を計算前に払い、行の確定分を払った後にだけ結果を公開します。足りなければ resource_limit / step_limit、未完了行は unassessed かつ値なし。先に完了した行は保持します。view と query は ID で整列し、キャッシュによる割引は設けません。

9. 手作業の導出と個別義務

以下は作成者の手作業の導出で、機械検証・独立確認ではありません。hash の衝突を別の内容の同一視に使わないという前提を置きます。

導出 前提と結論 含まないこと
RF-L1 k 以下の記録・確認だけで状態を作るので、記録と確認の時刻がともに k より後の精密化の追加は、k の完成した結果を変えない 既に見える精密化への確認が k までに追加される場合(E が変わる)。保持一覧・hash・予算量の一致
RF-L2 精密化の確認が対象と精密化の hash を拘束するので、対象または精密化の内容を変えた入力に、変更前の確認を流用できない 記録と確認を一緒に偽造する攻撃、本人認証
RF-L3 競合は区間の集合の大きさだけで決まり、記録・確認の到着順に依らない。したがって、精密化と訂正と確認の到着順を入れ替えても、同じ k の結果は同じ 競合を解消する操作(未対応)
RF-L4 有効な期間は k で決まる。k より前の問いは、精密化の可視性により、精密化の前の結果(阻害)を再現する 保存先や旧実装の可用性
RF-L5 状態が確定のとき、未確定の記録は精密化した区間の内側でだけ適用される。有限個の既知境界(記録の区間と精密化の区間)の間では所属が一定なので、境界と代表点を調べれば、この有限の履歴の全対象時点を被覆できる 任意の期間、時間論理一般の証明
RF-L6 精密化後の区間への包含を参照時点ごとに検査するので、k より後の精密化は k の結果に影響せず、矛盾は k ごとの行の診断として現れる 矛盾した履歴の自動修復
個別義務 内容 防護する条件(51)
RF-1 native 仕様・方針・consumer の hash・操作を固定(P2-e と区別) N10〜N12
RF-2 対象・精密化の内容 hash を確認が拘束 N04、N08、U22
RF-3 記録・確認の可視性、未来の非干渉、精密化前の再現 U05〜U07、U19、U25
RF-4 精密化の競合・同一の統合・未確認と suspected・後勝ちにしない U08〜U13
RF-5 未知能力・阻害・包含矛盾の停止順 U17〜U18、U24
RF-6 課金式・先払い・未完了は値なし B01〜B05
RF-7 旧経路の非干渉・順序の入替え・入力の不変 N01、U15
RF-8 AI 由来は人の確認まで効かない。臨床主張を追加しない U10、U11
RF-9 対象と区間の限定(bounded な対象・不明な区間・open_end) N02〜N03、N05〜N07
RF-10 精密化後の区間:半開境界、区間の外は適用されず否定にしない U02〜U04、U20
RF-11 精密化と部分訂正の相互作用、順序非依存、包含矛盾 U14〜U16
RF-12 精密化の精密化・撤回・競合解消は未対応。競合の情報要求は解消可能と偽らない U09、N09

R5 の必須欄(R5-1 方針差の明示、R5-2 認定を出さない、R5-3 臨床主張を追加しない)と共通の K-ID/K-STOP/K-INV/K-RES を加え、宣言は共通4+R5の3+RF-1〜12の19義務になります。既存の18宣言・220義務へ加えると19宣言・239義務です(防護例の参照を含む)。

10. 実装前に固定する予測と反例

49 の§6.3 の予測を、本設計の用語で固定します。期待は実行前に51へ手で書き、実行結果から作りません。

ID 予測 外れた場合に分かること
Y1 精密化は新しい記録と確認として追加でき、元の記録・確認・計算根拠は消えない(retained_assertions が不変) H7 が崩れる
Y2 unassessed が決定へ変わるのは許されるが、決定済みの答えは、適格な訂正辺と適格な精密化を通さずには変わらない G1・G3 の前提が足りない
Y3 精密化の前の参照時点を取れば、精密化の前の結果(阻害)を再現できる G11 が壊れる
Y4 精密化・確認・訂正の到着順に依らず、同じ k では結果が同じ 到着順を状態として持つ必要がある
Y5 12の個別義務のうち、能力を問わない主題 A〜H に当たるものが大半で、意味固有は少数(4件)に収まる H2 が崩れる
Y6 契約に精密化を表す枠が既存のクラス(R5)とその必須欄で足りる。新しいクラスは要らない H5 の追加の証拠。足りなければ不足を記録する
反例 内容 51
R1 期間不明の A に区間 [10,20) の精密化。t=25 の問い U03、CT01(M1 と M2 の差)
R2 二つの精密化が食い違う区間を主張する U09
R3 精密化の確認が、精密化前の結果を無効にしないか U06
R4 精密化後の区間が、既存の部分訂正を含まない U16

11. 受入条件

  1. 51 の U/N/B を実装より先の期待として保持し、実行結果から正解を更新しない。名前・型・課金案の変更は理由と旧版を残す。
  2. 新しい専用モジュール・native 仕様・handler 登録・R5 宣言・実行例を追加する。P2-e の temporal.py と仕様、旧 ledger.select_view は変更しない。
  3. 区間を差し引く別計算(精密化を含む)と照合する。小さな履歴(未確定の記録、精密化 0〜2 件、確認状態、訂正の有無)を有限列挙し、乱数でも照合する。境界・記録/確認の可視性の境界を含める。
  4. 意味変異を検出する:確認前の精密化を効かせる、suspected を効かせる、後勝ちにする、終端を含める、未来の精密化を可視にする、精密化後も阻害を残す、区間の外を否定にする、確認の hash 検査を省く、効いていない精密化の未知能力を落とす、包含検査を省く。
  5. 全予算を掃引し、旧 p2_checks の不変条件に新しい値欄(refinement_evidence・pending_refinement_refs)を加える。
  6. Python 3.11/3.14 で、新経路と、旧い231/52/8/P2 285 件、旧い22,052件の出力、P2-j までの追加前挙動、版比較つき統合評価を回帰する。
  7. 追加前は f69294e(原理の草案49)。新しい native 仕様・宣言・実行例・評価器・別計算・検査・生成器と文書 50/51 は、固定対象へ明示的に加える。旧スナップショットの分母を黙って差し替えない。
  8. 件数・必須パス・hash・予算・環境・残る穴を結果52へ記録する。independent_review / evaluation_frozen は false。

12. 今回確立していないこと

精密化の精密化、撤回、競合した精密化の解消、瞬間・集計からの期間の意味引き継ぎ、縦断比較、複数の文脈・個体・原子、概念分割や数量との併用、認証と永続台帳、期間の臨床的な妥当性は、この断片の対象外です。精密化された期間を用いた数量の選択(P2-i への接続)は別の課題です。

この断片は、変化に耐える体系という最終目標に対する、限定した一つの検査です。精密化を記録についての記録として足せたとしても、それは任意の将来の属性の精密化に同じ手順が使える保証ではありません。

P2-k

同じ区分の文書