作成日:2026-10-20。状態:限定した断片を実装し、両 Python 版の全体回帰・版比較つき統合評価を通過。設計50・手指定期待51 の専用 R5 を追加しました。両文書の「未実装」という記載は設計時点の記録として保持します。独立確認・評価用正解の凍結は未実施で、運用方針29 に従います。例はすべて架空です。
1. 実装した範囲
| 実体 | 内容 |
|---|---|
| refinement.py | 台帳の検証(精密化の対象・時刻・内容 hash・確認の拘束)、記録・精密化・確認の可視性、精密化後の有効な期間、競合、訂正の包含の矛盾、型付き診断、根拠、共通予算 |
| native 仕様 | profile・方針・断片・境界・停止順・課金・制限の固定。仕様の生バイト hash 66ff3f35… |
| host.py | 新 schema を専用 handler へ振り分ける登録の1行。P2-e の経路・核は変更なし |
| R5 宣言 | 共通4+R5 の3+個別 RF-1〜12 の19義務、防護例34件の参照。証拠は checked_native_template 12・finite_check 7 |
| 実行例 | U25/N20/B5 条件を66 JSON・721必須パスへ展開。期待は文書51から手指定 |
| 別計算 | 日時を数値化し、精密化から各記録の有効な期間を数え、区間の差引きで除去を求める。runtime の関数を呼ばない |
| 専用検査 | 手指定・列挙・乱数・継承の差分・状態不変・課金式・変異・予算・入力保存の21テスト |
新 profile は p2-validity-refinement-draft-1、操作は probe_refined_temporal_literal、台帳は p2-refinement-ledger-draft-1 です。精密化は元の記録を書き換えず、記録についての新しい種類の記録(refinements)で、固有の人の確認(refinement_reviews)が、対象の記録と精密化自身の内容 hash を拘束します。効くのは、記録と確認の両方が参照時点以下で、confirmed かつ人の確認があるものだけです。同じ記録の適格な精密化が、異なる区間なら競合として止まり(後勝ちにしない)、同一の区間なら一つにまとまります。
精密化が確定すると、期間不明だった記録は、精密化した区間の内側でだけ適用されます。区間の外では適用されず、否定にも全期間にもなりません(neither)。停止の順序は、未知の能力 → 期間の阻害(不明・未指定・競合)→ 精密化後の区間に対する訂正の包含の矛盾 → 判定です。
2. 手指定期待・別計算・変異
| 系列 | 分母 | 内容 |
|---|---|---|
| U | 25条件・26 JSON | 精密化の前後、境界、可視性、競合、同一区間、suspected・AI 由来、精密化と部分訂正、未知能力、停止の順序、未来の追加 |
| N | 20条件・31 JSON | 構造・参照・hash・区間・確認順序・未対応・旧経路(N01 は P2-e の要求の対照) |
| B | 5条件・9 JSON | 予算 0、不足、ちょうど、複数行、構造不正 |
| 計 | 66 JSON・721必須パス | 台帳と生成器・宣言で照合 |
| 二記録以下の有限列挙 | 4,396履歴・105,504行 | 未確定の記録(種類2×極性2)、精密化0〜2件(窓3×確認状態4)、bounded な訂正の有無(窓3×極性2)、参照時点4×対象時点6 |
| seed 付き乱数 | 300履歴・5,400行 | seed 20261020、1〜4記録、精密化0〜3、未確定・未指定・競合・未来・未知能力 |
| P2-e からの継承の差分 | 21,920行 | P2-e の完了した例29件の32行+二記録16,128+三記録5,760を、精密化のない P2-k の要求へ写して、P2-e の実装の結果と行ごとに比較 |
| 課金式 | 例8件+列挙の46履歴 | 設計50の式を台帳の件数から別に数えて steps_used と比較 |
| 意味・構造の変異 | 15件 | 全て手指定の期待の不一致、または例外で検出 |
期待は文書50・51から指定し、runtime の出力から生成・更新していません。 予算の境界(9・13)も設計式から手で導きました。生成した例を最初に評価したとき、全66件が一度で期待と一致しました。別計算は、実装とは別に書いた区間の差引きで、別計算のほうに一度誤りがありました(訂正の包含を、対象の精密化が確定していない場合にも検査していた。設計50の§6 は確定のときだけと明記しており、実装が設計どおりでした)。別計算の修正だけで、全行が一致しました。
意味変異15件:確認前の精密化を効かせる、suspected を効かせる、未来の精密化を可視にする、確認の時刻を無視する、後勝ち、同一区間を競合にする、終端を含める、精密化後も阻害を残す、区間の外を否定にする、効いていない精密化の未知能力を落とす、包含検査を省く、対象の hash 検査を省く、確認の hash 検査を省く、bounded な対象を許す、不明な区間を許す。変異で内部の前提が崩れて例外になった場合も、検出に数えます(確認前の精密化を効かせた変異で実際に起きた)。変異は選んだ集合で、網羅ではありません。
3. 設計50の予測の結果
| ID | 予測 | 結果 |
|---|---|---|
| Y1 | 精密化は新しい記録と確認として追加でき、元の記録・確認は消えない | 成立。全66例で retained_assertions は入力の全主張で不変。精密化は別の欄に保持 |
| Y2 | 決定済みの答えは、適格な訂正辺と適格な精密化を通さずには変わらない | 成立(列挙した断片で)。可視の主張・適格な主張・適格な精密化が同じなら、参照時点が違っても結果は同じ。確認前・suspected の精密化が可視になる組が1,000組以上ある中で、結果は変わらない |
| Y3 | 精密化の前の参照時点は、精密化の前の結果(阻害)を再現する | 成立(U05〜U07、U19、U25) |
| Y4 | 精密化・確認・訂正の到着順に依らず、同じ参照時点の結果は同じ | 成立(U08/U09、U14/U15) |
| Y5 | 12の個別義務のうち、能力を問わない主題(A〜H)が大半で、意味固有は少数 | 予測どおり(8対4)。実装の最中に A〜H に収まらない決定は出なかった。ただし主題の割当は作成者による(§4) |
| Y6 | 既存のクラス R5 とその必須欄で足り、新しいクラスは要らない | 部分的。登録・宣言は R5 で足りた。一方、意味を継承する拡張を表す枠が契約にない(§4 の発見1) |
4. 分かったこと
- 意味の継承を宣言する枠がなく、実装を共有できなかった。 精密化を足すには記録の新しい種類が要り、既存の P2-e の台帳のスキーマは拡張できないため、新しい台帳スキーマと、P2-e の意味を再実装した専用モジュールが要りました(検証と選択の大半が構造として重複)。契約の宣言(
depends_on・reads_extensions)には、「P2-e の意味を継承する」という関係を書く欄がありません。継承が崩れていないことは、精密化のない P2-k の要求を P2-e の実装に流して、21,920行を比較する差分の検査で確かめました。この検査は宣言には書かれていない義務で、仮説 H8 の根拠になります(49)。 - 記録についての記録は、既存のクラスで表せたが、固有の義務は個別に要った。 契約のクラス(R5)と必須欄は満たせました。しかし、確認が対象の内容を拘束すること(RF-2)、精密化の対象と区間の限定(RF-9)、精密化と部分訂正の包含を参照時点ごとに検査すること(RF-11)は、R5 の必須欄から出てこず、個別義務として設計しました。H2(義務の大半は能力を問わない主題、意味固有は少数)と矛盾しませんが、意味固有の4件は、記録の期間という属性を別の記録が確定する、という新しい意味に固有でした。
- 包含検査を静的にすると過去の参照時点が壊れる。 精密化の有無は参照時点で変わるので、訂正の包含を入力全体で検査すると、未来の精密化が過去の参照時点の結果を変えます(RF-D7・RF-L1)。包含を参照時点ごとの診断にして、この問題を避けました。
- M1 と M2 は区間の外側で異なる。 精密化を記録の期間の割当(M1、採用)として表すと、区間の外側の問いが
neitherで完了します。部分訂正(M2、採らない)で表すとunassessedのままです(CT01)。契約が「記録の期間を後から別の記録が確定する」枠を持つかどうかは、この断片では、専用の台帳の種類として持たせることで解決しました。一般の枠にしたわけではありません。 - 競合は永続する。 異なる区間の精密化が二つあると、解消する操作がこの断片にないため、阻害が続きます(RF-12)。情報要求は
resolution_supported: falseで、解消できるとは偽りません。
5. 全体回帰と固定した実体
Python 3.14.4 と 3.11.17 で、全テスト系列と統合評価を実行しました。
| 系列 | 件数 | Python 3.14.4 | Python 3.11.17 |
|---|---|---|---|
| 開発 | 231 | 通過 | 通過 |
| 追加レビュー系列 | 52 | 通過 | 通過 |
| 保存監査 | 8 | 通過 | 通過 |
| P2 | 306(既存285+新21) | 通過 | 通過 |
| 統合評価 | P1/P0・拡張・全 P2・予算・版比較 | 通過 | 通過 |
| 統合評価の対象 | P2-k 追加後の分母 |
|---|---|
| 登録・義務・防護例 | 19宣言・239義務・420防護例参照 |
| 証拠の強さ | checked_native_template 163、finite_check 68、hand_derivation 8 |
| 防護例のない義務 | 既存の3件。新19義務には全て防護例あり |
| 振り分け・依存の独立 | 153組中134組(新しい拡張は基底だけに依存し、他の17件と独立)。意味上の併用保証とは別 |
| 新系列 | 66 JSON・721必須パス。旧系列の分母も保持 |
| 予算 | 1,008要求・掃引17,166回、違反0 |
| 旧基底 | P1 全20条件・80 JSON・417必須パス、別枠 P0 の37 JSON・221必須パス |
旧い22,052出力の挙動 digest(d0a2233574ab350e65217ef6da8ed037fe34020e8ee79eee2506bd9ce4320236)と、生成器による全例・宣言のバイト一致も通過しました。旧モジュール(temporal.py ほか)と旧仕様・旧 fixture は変更していません。P2-e の経路は、P2-k の追加後も変わらない(N01 と、P2-e の全例の通過)ことを確認しました。
固定対象に、P2-k の native 仕様・実装・宣言・実行例・生成器・別計算・検査と設計50・51を加えました。作成者 snapshot で、independent_review / evaluation_frozen は false です。
- 新 native 仕様 hash:
66ff3f35cfee608b7a2dd7ff7d77a7ddb2506a17dafc5eaff705470b3644e124 - manifest hash:
183c33032840fd1a5c7b15e0dd6f36327ed9be4cbc06ec60d4a47f2269736f50 - 束 hash:
ace08ccf8337e6563e14722410b9b7a8fbc779692ff07406663325a90d4667a4 - 追加前(原理の草案49の時点):
f69294e
6. 再現と次の判断
PYTHONPATH=src python3 -B -m med_dsl --fixture examples/p2-refinement/u14.json
python3 -B -m unittest discover -s tests/p2 -p test_refinement.py -v
python3 -B scripts/research/check-extensions.py --json
python3 -B scripts/research/evaluate-p2.py --output data/research/p2-d/p2-k-reproduce
この断片では、確認済みの期間不明記録を、元の記録を消さずに、確認した期間で精密化できました。原理の草案49 の仮説 H7(訂正・精密化を追加情報として扱う設計が保てるか)には、一つの断片の支持が加わります。ただし、精密化の精密化、撤回、競合の解消、期間つき数量(P2-i)への接続、縦断比較は未対応で、仮説の反証にも確認にもなっていません。
次は、(1) 49 の更新(H2・H5・H7 の根拠と、新しい仮説 H8)、(2) 候補 C6(拡張の版を上げる)または C2(縦断比較)の選定です。どちらも実施前に利用者の確認を取ります。独立確認は 運用方針29 に従い、将来の英語の別リポジトリで行います。