YONAPO RESEARCH
研究記録
MedDSL(仮称)

RESEARCH / RECORD

P2-e:有効期間つきの主張の最小実装と内部評価

原文 docs/research/33-p2-e-results.md

12 KB

GitHubで見る

版 be280c0

この文書の目次 5項目

作成日:2026-10-20。状態:限定した断片の最小実装・内部評価を完了。独立確認と評価の凍結は未実施です。意味設計 と 実装前の手指定期待 を基準に、有限期間・単一原子の方針診断を追加しました。31・32の「未実装」という記載は、それぞれの作成時点の記録として保持します。現在の実装状態は本書を参照してください。

1. 実装した範囲

実体 内容
temporal.py 新台帳の検証、記録・確認の可視性、部分訂正、型付き診断、根拠、共通予算
native仕様 profile・方針・断片・境界・停止・課金・制限の固定
host.py 新schemaを専用handlerへ振り分ける登録。旧採用・訂正の核は変更なし
R5宣言 共通4義務・R5の3義務・時間固有TE-1〜8の計15義務、20防護例への参照
実行例の台帳 T20/N10/B4条件を61 JSON・462必須パスへ展開。旧経路の対照N01を1件含む
区間差分の参照計算 日時を数値へ変換し、各主張から全適格訂正の区間を差し引く。runtimeの点選択・validatorは使わない
時間系列のテスト 手指定期待・参照計算・変異・入力不変・停止・根拠・予算の検査
例の生成器・宣言の生成器 手指定期待と宣言を再現。例の期待をruntimeの出力から作らない

profileは p2-temporal-assertion-draft-1、操作は probe_temporal_literal、方針は fiction:confirmed-scoped-revision@1。新しい時間台帳の revises と、旧P0の supersedes を区別します。構造の共通部分には既存の純粋な検証関数を使い、旧 ledger.select_view の全体訂正を新しい採用の計算には使いません。

as_of までに見える確認済みの主張から、target_at を覆うものを選び、その全ての訂正辺を使って対象を除きます。後段で除かれた訂正元の辺も効くため、訂正の鎖で古い主張が復活しません。

結果は positive_only / negative_only / both / neither。期間外や期間不明を否定へ変換しません。未知の能力は、可視なら保留・訂正済み・期間外でも文脈を停止させます。期間不明・未指定が適格なら値を保留し、その情報要求も「この断片では精密化の経路が未対応」と明記します。確認前のAI候補は採用しません。

全ての正常な診断は certificate.status=not_certified、converted_to_base=false、clinical_assertions_added=[]。予算不足の行は値・採用集合・根拠をnullにし、既に完了した行だけを保持します。

2. 手指定期待・参照計算・変異

系列 分母 確認する内容
T 20条件・22 JSON 遅延記録/確認、半開境界、部分訂正、連鎖、競合、不明期間、AI候補、未知能力
N 10条件・31 JSON 旧経路、欄/時刻/参照/区間の不正、未対応、consumer、順序、複数view、型の境界
B 4条件・8 JSON 予算0、単一行の境界6、訂正連鎖の境界14、二行の境界9と途中停止
二記録の有限列挙 896履歴・16,128行 三つの有限区間、二極性、四つの確認状態、包含可能な訂正辺、三参照時点・六対象時点
三記録の連鎖・分岐 192履歴・5,760行 三つの区間構成、全極性、訂正辺の全組、五参照時点・六対象時点
seed付き生成 200履歴・3,600行 seed 20261020、1〜6記録、遅延/未確認、suspected、期間不明・未指定、未知能力
選定した意味変異 5件 終端を含める、確認時刻を無視する、最終採用元だけで訂正する、期間外の未知能力を無視する、根拠なしを否定にする

T/N/Bの期待は実装前の文書から指定し、予算の6/14/9も設計式に基づきます。参照計算との比較は合計 25,488行。この件数、JSONの必須パス、テスト関数数、防護例の参照数は別の分母です。変異は各防護例で意味結果の不一致として検出し、変異なしの対照は一致します。変異の選定自体は作成者判断で、任意の退行の検出保証ではありません。

初期のfixture生成時に、T03を使う対照・予算例の対象時点が既定値5日となり、期間の終端へ乗っていることを検出しました。設計通りの3日へ入力を修正し、期待は変更していません。また、有限列挙の分母を包含可能な辺の数から再計算し、896履歴に修正しました。これらは実世界の評価用正解の独立凍結ではありません。

回帰時には、拒否検査の依存一覧へ新宣言を加え、変異表B15の置換元を拡張後の回答欄へ追随させました。また、手指定資料へのpinは再検証依存であるため、実行用データにhashが埋め込まれるpinと区別し、その代わりlockの実体hashと照合します。既存の必須義務の拒否・hash整合の検査は維持し、時間のTE-1〜8が全て宣言されることも専用テストで固定しました。

CLI確認では、例の外枠に既存の p1-fixture-draft-1 / fixture_version: 1 を補いました。時間要求のschema・主張・手指定期待は変更していません。全61例・462必須パスをCLIの終了コードを含めて照合し、期待を推論へ渡さない既存経路を維持しています。

3. 検証状態

検査 Python 3.14.4 Python 3.11.17
開発系列 231件通過 231件通過
追加系列 52件通過 52件通過
追加監査 8件通過 8件通過
P2系列(既存193+時間15) 208件通過 208件通過
CLI外枠追加後の時間系列 15件通過(CLI61例を含む) 15件通過(CLI61例を含む)
CLI外枠追加後の生成器の再現 1件通過 1件通過
統合評価 通過・不一致なし 通過・不一致なし

実行ログは data/research/p2-e/py314/・py311/ に保存しました(Git管理外)。CLIの外枠追加前に、両版で全208件と版比較つき統合評価を通過しています。統合結果は data/research/p2-d/p2-e-py314-final/・p2-e-py311-final/ にあります。

その後の変更は例の外枠・生成器・CLI照合テストだけです。同じruntime・旧fixtureで、時間15件、生成器1件、監査8件と、版比較を省いた統合評価を両版で再実行しました。最終snapshotに対する統合結果は data/research/p2-d/p2-e-py314-cli-final/・p2-e-py311-cli-final/ です。全208件にこの追記後の再実行を含めたと数えることはせず、表で分けています。既存の評価器を拡張したため、統合結果の保存先は従来通り p2-d 配下です。

統合評価の現在の分母は以下です。旧P2-dの分母は評価器の P2_D_EXPECTED に分け、旧資料27・28との整合テストはこちらを照合します。旧資料を新しい数字へ書き換えていません。

項目 P2-e追加後
登録・義務・防護例 13宣言・127義務・258防護例の参照
証拠の強さ別の義務 checked_native_template 102、finite_check 17、hand_derivation 8
防護例のない義務 3件。既存のR1-3/R3-3/COMP-3。時間の15義務には全て防護例あり
振り分け・依存の独立 66組中53組。時間と概念分割の意味を組み合わせた保証ではない
P2の例 35/128、分割34/224、分割併用38/221、時間61/462(JSON/必須パス)
共通予算 264要求・3,425評価、違反0。既知の予算依存拒否の例外は従来の1件
今回追加の予算系列 61要求・489評価、違反0。うち1要求は旧経路の対照
旧基底の評価 P1全20条件・80 JSON・417必須パス、別枠P0の37 JSON・221必須パス

4. 旧版との比較と固定

実装前のコミット 7c70b0c を別の作業ツリーへ出し、旧統合評価を再実行して通過を確認しました。旧要求238件(共通予算の旧203件+旧防護例35件)の完成結果は、追加後と certifier を除いて一致しました。旧出力は data/research/p2-e/before/ に保持します。従来の22,052出力の挙動比較も両版で通過し、その基準digestは変更していません。

新しいnative仕様・宣言・全例・テスト・参照計算・生成器・契約31/32を明示的に固定対象へ加えました。旧P0/P1の期待、原fixture、概念分割の意味は変えていません。固定対象は356から 427ファイルへ増えます。

  • native仕様の生バイトhash:f6c5b4d93a887592f1d1e15b4f72ab5e8b51e8f2db0783e91ff7eb333baa7ba0
  • 新manifest hash:96ae56c57ec5c85ef8122a5daac1712aa10b4dd5668a88491cab504dc18a1a79
  • 新しい束hash:b84dfbcb5159c9fe9d90eb2253e3973d1b6f2dc27e8828d7560f9c61c1034588
  • 旧manifest hash:4470acb4d1187dd34fb64ce18d5727d3d4e58acebde722ba15a13aae9848bf7d
  • 旧い束hash:aa89cf5f7fcf93de0cadf58308f59cc18685a7716ab58ea6010d8239371e2a1f

この固定は変更の見落としを防ぐ作成者snapshotで、独立確認済みの正解凍結ではありません。実装変更により実装全体の certifier は変わります。independent_review / evaluation_frozen はfalseです。

統合評価はコミット前の作業ツリーで行い、実行記録の git_dirty はtrueです。上記のファイル一覧・hashで評価対象を識別し、コミット後は同じ実体であることと新しい例を読み取りだけで再確認します。

5. 再現と次の判断

PYTHONPATH=src python3 -B -m med_dsl --fixture examples/p2-temporal/t09.json
python3 -B -m unittest discover -s tests/p2 -p test_temporal.py -v
python3 -B scripts/research/check-extensions.py --json
python3 -B scripts/research/evaluate-p2.py --output data/research/p2-d/p2-e-reproduce

R2/R6では「核の採用選択だけから読む」という義務を満たせませんでした。全体訂正と部分訂正の差を明示する R5の分類は使えます。ただしR5の必須欄だけでは時間の採用規則の正しさは定まらず、TE-1〜8を個別に宣言・検査する必要がありました。この個別設計から、任意の意味能力に対する義務の自動生成や一般の保存判定ができるとは結論しません。

初回の断片は単一文脈・個体・原子と有限区間に限定します。確認済みの不明期間を後から精密化する契約、終点なし、期間に依存するHorn閉包、概念分割や数量との意味上の併用、臨床的な期間の妥当性、永続IDの認証は未対応です。期間つき結果から基底の臨床主張への橋渡しもありません。

次の候補は 計画30 に沿って C「単位つき数量」です。まず値・単位・次元・丸め・不確かさの区別と、時間や概念分割とは別に守る意味を設計します。時間の未対応範囲は課題として保持し、数量の追加で解決したと扱いません。独立確認は現在の進行条件にせず、別の英語リポジトリでの再開方針 に従います。

P2-e

同じ区分の文書