実施日:2026-10-19。契約版:p0-draft-2。状態:作成者(AI-001)の単独・内部実施の結果。独立確認前。設計 23 に沿って、拡張契約で新しい意味能力を設計・実装し、受入条件 X04・X05・X14 を検査した記録です。述語・主体・文脈はすべて架空で、実在の疾患・分類の分割ではありません。P0/P1 の挙動と契約は変えていません。
1. 到達点
| 項目 | 結果 |
|---|---|
| 追加した意味能力 | query_split:旧い概念 P が部分 Q1…Qk に分かれたとき、旧い記録に区別がない個体について、候補集合(七つの状態)と情報要求を返す。基底の状態へ変換しない |
| 実装 | split.py(253 行)、仕様 split_spec.json(生バイトの hash を固定)。最上位の登録は host.py に 1 行(と import) |
| 契約の変更 | 新しいクラス R6「公理つき読み取りモジュール」(R2 の義務+R6-1〜R6-6)を extensions.py に追加。宣言は 11 件目 p2-concept-split(義務 15) |
| 例 | examples/p2-split/ 34 例。期待は設計の意味から手で指定(予算の境界の n だけ測定) |
| テスト | tests/p2/test_concept_split.py 24、独立オラクル tests/p2/split_oracle.py。P2 系列は全体で 78 |
| 防護例のない義務 | 0 件(P2-a では 24 件から始まった。義務の設計と同時に防護例を付けた) |
| 証拠の強さ | 義務 15 のうち checked_native_template 12、finite_check 2(R6-3、R6-6)、hand_derivation 1(R6-2:一般のモデルへの拡張は手作業の導出)。拡張全体は最も弱い finite_check。防護例は 45 件 |
| 変異検査 | 分割の実装と登録の変異 35 件(うち等価 1):等価でない 34 件すべて検出。契約の検査(extensions.py)の変異は §4 |
| 既存の系列 | 開発テスト 231、レビュー系列 52、追加監査 8、P1 の 20 条件・80 JSON・417 必須パス、P0 221 必須パスは変化なし。固定済みの全例・改変入力・予算掃引の 22,052 件の出力は、基準(拡張の追加前)と完全に一致 |
2. 受入条件の結果
| 条件 | 結果 | 検査 |
|---|---|---|
| X04 拡張を理解しない消費側の停止 | 達成 | 分割の能力を要求する主張(採用・訂正済み・保留)を含む文脈:基底の query は unassessed(missing_capabilities、blocking_assertion_refs に採用・訂正済み・保留の 3 件すべて)。同じ台帳を拡張が読むと、保留・訂正済みを除いて解釈する。第三の未知の能力は拡張でも blocked。無関係な文脈は影響を受けない |
| X05 回答型が基底の状態へ変換される経路がない | 達成 | 行の base は、基底の query が同じ原子に返す状態と 3,232 行すべてで一致(分割の能力だけを除いた台帳で比較)。split.status の語彙(七つ)は基底の状態の語彙と互いに素。基底の状態の語は base の下にしか現れない。converted_to_base は常に偽。残りの一つ(single)の部分は、基底では undetermined のまま |
| X14 旧い問いは変わらず、新しい問いは候補集合と情報要求を返す | 達成 | K06 の例:旧い記録 P(a) だけの台帳で、基底の問いは P 支持・P1/P2 未決(旧回答の再現)。分割の問いは open(候補 P1・P2)と confirm_part。旧参照を消して P1 に書き換えた別の snapshot は、別の hash で asserted になる。拡張が黙って書き換えて確定することはない |
| X03 非干渉(拡張の追加) | 達成 | 11 件目を不活性にしても、その外の結果は変わらず、中の結果は変わる(分割の例 34 を含む 165 要求)。拡張の追加で固定済みの全例の出力が変わらないことは、22,052 件の比較で確認 |
| L7/X13 基底変更の波及 | 設計どおり | 新しい拡張の追加が変更するのは split.py(1 拡張だけを再検証)と、共有の入口 host.py の登録 1 行。host.py の変更は pin の規則で 11 拡張すべての再検証と列挙される(共有の入口の変更は全体に及ぶ) |
3. 検査の結果
| 検査 | 結果 |
|---|---|
| 規則と全数列挙(R6-3) | 部分 2〜5 個、各原子が {なし, 肯定, 否定}:1,080 通りすべてで、規則(classify)と個体ごとのモデルの全数列挙(独立オラクル)が一致。七つの状態がすべて現れる |
| 旧データ(R6-2) | 部分の原子を含まない全状態で inconsistent にならない。台集合 3 個までの旧い全モデルが公理を満たす拡張を持つことを全数検査 |
| 乱数の差分 | 台帳 600(確認の有無・疑い・AI 候補・訂正・能力・複数の参照時点・文脈)、3,536 行:オラクルと一致(計算 3,232、blocked 304:未知の能力 274・衝突 30) |
| 密な差分 | 乱数の分布が no_parent に偏った(3,232 行のうち 2,764、single は 2 行、narrowed は 7 行)ことに気付き、採用された記述を集中させた生成を追加した。2,500 台帳で、七つの状態がそれぞれ 25 件以上現れ、オラクルと一致 |
| 情報要求の充足可能性(R6-6) | 要求した候補の部分が肯定されたら asserted になる(実現しない主張を求めない)ことを、乱数の台帳の全要求で確認 |
| 決定性・入力の保持・順序の不変性 | 200 台帳で、入力は変更されず、同じ入力から同じ結果。部分・参照時点・問い合わせの順序を変えても結果は同じ |
| 予算の掃引 | 60 台帳、3,067 の予算:完了した行は無制限と同一、止まった行は値を持たない。打切りが 2,887 回 |
| 仕様の実体確認 | 仕様の実ファイルを hash で照合(差し替え・読み取り不能で停止)。consumer の profile・hash・操作 |
4. 変異検査
分割のゲートを壊した変異 35 件を、(a) 手で指定した例、(b) オラクルのテスト、(c) 拡張契約の検査(登録時に宣言した防護例を評価するため、挙動が変われば登録が拒否される)で、それぞれ検出できるか調べた。変異は作成者が選んだもの(判定の規則 10、拒否・停止のゲート 12、課金 3、状態の組み立て 6、登録 1、入力の変更・並べ替え 2、等価 1)。
| 結果 | 件数 |
|---|---|
| 検出(オラクルのテスト) | 34 / 34 |
| うち手で指定した例も失敗 | 32 |
| うち拡張契約の検査も失敗 | 29 |
| 例では検出されず、性質のテストだけが検出 | 2(部分の並べ替えに対する不変性、入力を書き換えないこと) |
| 検出されない | 1(等価:除外の理由に adopted_negative が既に含まれるため、候補の計算で二重に除いても変わらない) |
契約の検査(extensions.py)には、R6 の追加で変異 3 件(R6 の義務を他のクラスが宣言することの拒否、R2 の義務の継承、R6-6 の必須)を加え、全体で 45 件すべてを検出した。変異検査の途中で、1 件の「意図した例」の記入を誤った(open の導出に関わる変異を single の例に対応させた)が、検出の判定には影響せず、記入を直して再実行した。
5. 契約についての発見
P2-b の主な目的は、拡張の実装ではなく、契約が新しい意味能力の設計を導けるかの点検だった。
- R2(読み取り専用)の義務だけでは足りず、新しいクラスが要った。 分割は読み取り専用で独自の回答型を持つので R2 に見えるが、公理を加え、その下で結論を出す。R2 は、①追加する公理が閉じていて要求が変えられないか、②旧データを矛盾させないか(保存性)、③結論が公理の意味に対して健全で完全か、④公理から導いた結論を採用された主張として示さないか、⑤範囲外を黙って広げないか、⑥情報要求が実現可能で臨床の否定を含意しないか、を問わない。R6-1〜R6-6 として義務にした(設計 23 の §4)。これは、P2 の設計が予告した「収まらない場合は新しいクラスを定義する」の実演で、R6 が他の公理つきの能力に十分であることは主張しない。
- R2-2 の読み替えが要った。 「基底の語彙の述語へ導出しない」は、forecast では独自の述語だったから成り立った。分割は基底の語彙(P、Qj)について推論する。結論は原子ではなく候補集合の状態として返し、基底の閉包に入れない、と読み替えた。契約の文言が実現に対して曖昧だった。
- 義務の設計と防護例の設計を同時に行ったら、欠落が出なかった。 P2-a は後付けで 24 件の欠落が残った。今回は義務ごとに、拒否・変換しない・境界の例を設計時に対応づけ、15 義務すべてに防護例が付いた。ただし、これは「拒否できる義務だけを書いた」可能性もある(R6-2 は手作業の導出で、例は旧データの状態を示すだけ)。
- 能力の標識は、作成者の選択で、文脈全体に効く。 部分の主張に分割の能力を要求させると、基底だけの消費側は、その文脈全体を解釈しない(旧い
Pの主張がある同じ文脈もunassessed)。能力を要求しない文脈の結果は変わらない(L2)。旧回答の再現(X14)が成り立つのは、新旧の主張を別の文脈に置く場合で、同じ文脈に混ぜれば旧い問いも止まる。これは設計上の帰結で、利用者が選ぶ。 - 共有の入口の変更は全体に及ぶ。 新しい処理の登録は
host.pyの 1 行で、L1 の前提(追加は新しいモジュールと振り分けの一行)どおり。この 1 行が全拡張の再検証を列挙する(11 件)。実際には、既存の挙動が変わらないことを 22,052 件の比較と全系列で確認した。 - 独立オラクルを実装と別の方法で書けた。 実装は規則(除外・親の成立)、オラクルは k+1 個のモデルの列挙で、設計の意味から直接書いた。全数で一致したが、同じ作成者が書いたので、意味の解釈そのものの誤りは共通になり得る。
6. 限界と未解決
- 独立確認は未実施。宣言、義務の導出、例の期待、公理そのものが作成者の主張で、解釈は覆り得る。
- 範囲:一つの文脈・一つの個体の採用された原子、規則のない単項述語の分割。文脈をまたぐ推論、時間による持続、定義のある述語の分割、入れ子や重なる分割は含まない(23 の §7)。
single(残りの一つ)の自動的な確定はしない。確定するなら、新しい採用方針と人の確認を要求する別の拡張(橋渡し、R5)が要る。- 変異は作成者が選んだ 35 件で、検出できない退行が他にないことは示していない。
- 乱数の生成が稀な状態に偏っていたことを、結果の分布を見て初めて気付いた。分布を要求する検査(各状態 25 件以上)で保護したが、他の生成器でも同じ偏りがあり得る。
- 次は P2-c(併用)。分割を二つ併用する(記号を共有する、入れ子にする)ことは 19 の L4 の対象で、併用全体で再判定が要る。