Compare commits
6
Commits
54e07ca980
...
44bce9177c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44bce9177c | ||
|
|
4e34e52097 | ||
|
|
9adbbee334 | ||
|
|
a46418d064 | ||
|
|
b2dbda8c95 | ||
|
|
6f75c9a051 |
+412
@@ -0,0 +1,412 @@
|
|||||||
|
{
|
||||||
|
"at_jst": "2026-10-22T10:14:42.989122+09:00",
|
||||||
|
"project": "the-tree-p28-02-eq",
|
||||||
|
"task": "P28-02-EQ",
|
||||||
|
"state": "completed",
|
||||||
|
"S": "9adbbee334548ac36cd49d68efc021abb7acd003",
|
||||||
|
"Q": "4e34e5209706e3e16a4860e65e52b90287722c36",
|
||||||
|
"M": "54e07ca98093901e6a53d1bdad86b6c81fcc2db5",
|
||||||
|
"all_four_normal_gates_passed": true,
|
||||||
|
"acceptance": [
|
||||||
|
{
|
||||||
|
"id": "P28-02-EQ1",
|
||||||
|
"requirement_id": "P28-02",
|
||||||
|
"text": "E1 全状態: 観測の区間では、同じ PID の中で完全な S/K/C の前後の一致を確かめる(SPEC §3.3 (a))。版の間では、S 層・latest_snapshot・latest_digest と、SPEC §3.2 に列挙した K/C の欄を比べる。比べない欄は理由と実際の値を記録し、SimulationDigest だけで判定しない。",
|
||||||
|
"validation_ids": [
|
||||||
|
"p28-02-eq-unit",
|
||||||
|
"p28-02-eq-native-verify"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "P28-02-EQ2",
|
||||||
|
"requirement_id": "P28-02",
|
||||||
|
"text": "E2 全イベント: DomainEventStream.subscribe('*') で B1 の後から30分の最後まで、全件を上限なく記録し、開始の counter が一致する場合だけ、event ID をそのまま対応させて全ての欄を比べる。",
|
||||||
|
"validation_ids": [
|
||||||
|
"p28-02-eq-unit",
|
||||||
|
"p28-02-eq-native-verify"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "P28-02-EQ3",
|
||||||
|
"requirement_id": "P28-02",
|
||||||
|
"text": "E3 失敗時の拒否: restore_snapshot・SimulationSnapshot.validate・load_from_path に、欠けた key・違う型・範囲外・重複した ID・改ざんした world.bin を与え、code と、拒否の前後の S/K/C と全イベントを記録して検査する。",
|
||||||
|
"validation_ids": [
|
||||||
|
"p28-02-eq-unit",
|
||||||
|
"p28-02-eq-native-verify"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "P28-02-EQ4",
|
||||||
|
"requirement_id": "P28-02",
|
||||||
|
"text": "E4 キャッシュの古さと E5 所有権: SPEC §3.3 (b) の専用の scenario の区間で、列挙した操作(コマンド・tick・restore・load・状態を変えないコマンド、返した値の入れ子の変更)だけを行い、前後の変化と双方向の非干渉を実際の値として記録して検査する。前の版での失敗(たとえば E5 の aliasing)は、既存の不具合として記録する(PASS で補わない。harness の無断の変更とは区別する)。列挙の外の状態の変更と、hook の差し替えは禁止。",
|
||||||
|
"validation_ids": [
|
||||||
|
"p28-02-eq-unit",
|
||||||
|
"p28-02-eq-native-verify"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "P28-02-EQ5",
|
||||||
|
"requirement_id": "P28-02",
|
||||||
|
"text": "harness の正しさ: R と O の、同じ版の2 PID の間で、版の間の比較の差が0であること。compare_versions.py が、before の source map と OPT の許可された差分の集合を完全に固定し、追加・欠落・登録されていない差分を拒否すること。",
|
||||||
|
"validation_ids": [
|
||||||
|
"p28-02-eq-unit",
|
||||||
|
"p28-02-eq-native-verify"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "P28-02-EQ6",
|
||||||
|
"requirement_id": "P28",
|
||||||
|
"text": "提出された S_eq の native(import、parse 2つ、R-A・R-B・O-A・O-B)を Root が実行し、owned PID・private profile・guard・cleanup・source map 1407・全 raw と SHA を結合する。Q で測ったとは表記しない。",
|
||||||
|
"validation_ids": [
|
||||||
|
"p28-02-eq-unit",
|
||||||
|
"p28-02-eq-native-verify"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"normal_gates": [
|
||||||
|
{
|
||||||
|
"kind": "validation",
|
||||||
|
"commit": "9adbbee334548ac36cd49d68efc021abb7acd003",
|
||||||
|
"receipt": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/c8dcaba67e4b4b35a6e6fed4bb8ffb28-validation.json",
|
||||||
|
"bytes": 606,
|
||||||
|
"sha256": "a41a00bd7d3bcf03dd872743a569fa342b3cdc576d9725ffa6481c40382eca1d"
|
||||||
|
},
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"id": "p28-02-eq-unit",
|
||||||
|
"exit_code": 0,
|
||||||
|
"raw": {
|
||||||
|
"command.json": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/4a82530174d04af988e119a2174315c2/command.json",
|
||||||
|
"bytes": 705,
|
||||||
|
"sha256": "d5a7de0e62bd09d106db0236370f4a3ca57256bf567db32d40fe0df0ee67f778"
|
||||||
|
},
|
||||||
|
"stdout.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/4a82530174d04af988e119a2174315c2/stdout.log",
|
||||||
|
"bytes": 0,
|
||||||
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||||
|
},
|
||||||
|
"stderr.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/4a82530174d04af988e119a2174315c2/stderr.log",
|
||||||
|
"bytes": 18803,
|
||||||
|
"sha256": "d8cd1523614ce6c40b064ff3523cca193fa32fc558eaf00b89b5a7f8ba12d525"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "p28-02-eq-native-verify",
|
||||||
|
"exit_code": 0,
|
||||||
|
"raw": {
|
||||||
|
"command.json": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/59e0ac4afc8b4b3a9579ec014679f4a1/command.json",
|
||||||
|
"bytes": 738,
|
||||||
|
"sha256": "7e6a69803ae02e322e58b7a7b35f084af8d7d617b08e09eb1f885010b134f9b2"
|
||||||
|
},
|
||||||
|
"stdout.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/59e0ac4afc8b4b3a9579ec014679f4a1/stdout.log",
|
||||||
|
"bytes": 172036886,
|
||||||
|
"sha256": "832815c72df0ac3c5a5849a3cb392ea64fcf6cba5847cf2bacbbc83d31ac23f1"
|
||||||
|
},
|
||||||
|
"stderr.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/59e0ac4afc8b4b3a9579ec014679f4a1/stderr.log",
|
||||||
|
"bytes": 0,
|
||||||
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "review",
|
||||||
|
"commit": "9adbbee334548ac36cd49d68efc021abb7acd003",
|
||||||
|
"receipt": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/eq-independent-review-9adbbee-r01/actual-independent-desktop-output/result.json",
|
||||||
|
"bytes": 8067,
|
||||||
|
"sha256": "cec1c65dc496f1de812caedbd5dff3dd92a4314458cb0f13e67c738c9d84cf95"
|
||||||
|
},
|
||||||
|
"findings": [
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "verify_eq.compare_bundles(verify_eq.py:318-357)は、各版の全シナリオの中身を版の間で比べ、差が 1 件でもあれば ok を false にし、--compare-versions の exit を 1 にする。OPT_CONTRACT_T1 §3 では E5 は版ごとの絶対の検査で、OPT は before の existing-defect(E5 の latest/signal の aliasing など)を直すことが求められる。そのため、正しく直した after の版でも、E5 outside_in の変更直後の観測(observations[2])の latest と digest の欄に差が出て、ok は false になる。差は path つきで全て返り、existing_defects と after_all_e_pass もあるので、誤った合格は生じない。OPT の受入では、差が before で existing-defect だった scenario とその原因の欄に限られることを確かめる規則を、先に決めておくとよい。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "S6Bundles の docstring(test_eq.py:2489-2492)は「no part mocked」と書き、PROGRESS.md も「recompute of a real synthetic after bundle」を本物の経路に数えている。しかし、s6_sealed_bundle(test_eq.py:2354)と S4NativeBundleLogic.recompute(test_eq.py:1533-1535)は、standard.profile_path を patch して recompute を動かしている。合成の束の profile の場所という外部入力の差し替えなので、本物の経路という区分は変わらない。ただし、記述にはその差し替えを書くべきである。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "integration",
|
||||||
|
"commit": "4e34e5209706e3e16a4860e65e52b90287722c36",
|
||||||
|
"receipt": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/1535669cdc254d05ab041224099b1832-integration.json",
|
||||||
|
"bytes": 607,
|
||||||
|
"sha256": "014c86ec40e21cb49fb9952d647f2f40b5d491bbae3fbdd7b40f3e7829151f74"
|
||||||
|
},
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"id": "p28-02-eq-unit",
|
||||||
|
"exit_code": 0,
|
||||||
|
"raw": {
|
||||||
|
"command.json": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/f29d52f82b184037a50f12c6503e1e5d/command.json",
|
||||||
|
"bytes": 706,
|
||||||
|
"sha256": "c3fb9c3d59997e9fdce02cbbfbf6b9027f44d9453d791dfb30526ca4f315051f"
|
||||||
|
},
|
||||||
|
"stdout.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/f29d52f82b184037a50f12c6503e1e5d/stdout.log",
|
||||||
|
"bytes": 0,
|
||||||
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||||
|
},
|
||||||
|
"stderr.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/f29d52f82b184037a50f12c6503e1e5d/stderr.log",
|
||||||
|
"bytes": 18803,
|
||||||
|
"sha256": "456f4644b12cd4c835c8d30c8b97cfb8a21f7c62ed70f42c1a59a5c6390c5224"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "p28-02-eq-native-verify",
|
||||||
|
"exit_code": 0,
|
||||||
|
"raw": {
|
||||||
|
"command.json": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/074578697e174c9bac87a95425a4d53a/command.json",
|
||||||
|
"bytes": 739,
|
||||||
|
"sha256": "e3592e5a534c5c8f0f61a53ff02f9ddd3e34efcebea14836fec50c11791545d2"
|
||||||
|
},
|
||||||
|
"stdout.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/074578697e174c9bac87a95425a4d53a/stdout.log",
|
||||||
|
"bytes": 172036886,
|
||||||
|
"sha256": "832815c72df0ac3c5a5849a3cb392ea64fcf6cba5847cf2bacbbc83d31ac23f1"
|
||||||
|
},
|
||||||
|
"stderr.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/074578697e174c9bac87a95425a4d53a/stderr.log",
|
||||||
|
"bytes": 0,
|
||||||
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "final",
|
||||||
|
"commit": "4e34e5209706e3e16a4860e65e52b90287722c36",
|
||||||
|
"receipt": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/ca9bf226c4744d5a8f6c38208fafe495-final.json",
|
||||||
|
"bytes": 601,
|
||||||
|
"sha256": "77da7c1d82d702a3e7dfe8ad9c8fa810cad8d2b0e8d612e6f0e33db97e9b6fc7"
|
||||||
|
},
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"id": "p28-02-eq-unit",
|
||||||
|
"exit_code": 0,
|
||||||
|
"raw": {
|
||||||
|
"command.json": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/79d7b4c5b09b4edc8224898537212774/command.json",
|
||||||
|
"bytes": 712,
|
||||||
|
"sha256": "3e7e05fb1d83acb23b3cd885b4653b8b5d9d355562252040adbbb88cc26aa03b"
|
||||||
|
},
|
||||||
|
"stdout.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/79d7b4c5b09b4edc8224898537212774/stdout.log",
|
||||||
|
"bytes": 0,
|
||||||
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||||
|
},
|
||||||
|
"stderr.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/79d7b4c5b09b4edc8224898537212774/stderr.log",
|
||||||
|
"bytes": 18803,
|
||||||
|
"sha256": "f8f0d5ceae54db418c3e2f69909b4cc25a4b50a3d7994bfda0efadaa0d7a91a7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "p28-02-eq-native-verify",
|
||||||
|
"exit_code": 0,
|
||||||
|
"raw": {
|
||||||
|
"command.json": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/c9e5c8816df24332bd24ce5a72396c8b/command.json",
|
||||||
|
"bytes": 745,
|
||||||
|
"sha256": "f2c3268fe841ed1483ae0e3f2bfbe17bf99e7beeda5e913a3fbe98b659a271ca"
|
||||||
|
},
|
||||||
|
"stdout.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/c9e5c8816df24332bd24ce5a72396c8b/stdout.log",
|
||||||
|
"bytes": 172036886,
|
||||||
|
"sha256": "832815c72df0ac3c5a5849a3cb392ea64fcf6cba5847cf2bacbbc83d31ac23f1"
|
||||||
|
},
|
||||||
|
"stderr.log": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/c9e5c8816df24332bd24ce5a72396c8b/stderr.log",
|
||||||
|
"bytes": 0,
|
||||||
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"traceability": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/traceability/P28-02-EQ.json",
|
||||||
|
"bytes": 4227,
|
||||||
|
"sha256": "67fc9fafe5ced85051a82abd3d430ad4faa41b333b4ae1f26e2949503286c49b"
|
||||||
|
},
|
||||||
|
"candidate_qualification": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/ROOT_EQ_CANDIDATE_4E34E52_QUALIFICATION.json",
|
||||||
|
"bytes": 276847,
|
||||||
|
"sha256": "def3bbcc62a674e81845681df283a434f1cc6d76952eb621c32afde16719d663"
|
||||||
|
},
|
||||||
|
"root_candidate_recheck": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/ROOT_EQ_CANDIDATE_4E34E52_ROOT_RECHECK_R01.json",
|
||||||
|
"bytes": 9837,
|
||||||
|
"sha256": "a9a978f6db86d6531c53ef4ff9da55f1dcdb9a1abcc4794ce57db31e74302d68"
|
||||||
|
},
|
||||||
|
"root_final_db_join": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/ROOT_EQ_4E34E52_FINAL_DB_JOIN_R01.json",
|
||||||
|
"bytes": 6085,
|
||||||
|
"sha256": "cd5ae808e16eb046bae331f6d4cf09b3855381fc58f01ca999092c382e20a9e5"
|
||||||
|
},
|
||||||
|
"approval": {
|
||||||
|
"owner": "Root applying the existing user explicit authorization to update main and continue delegated development; exact Q 4e34e5209706e3e16a4860e65e52b90287722c36 and M 54e07ca98093901e6a53d1bdad86b6c81fcc2db5 independently qualified by ROOT_EQ_CANDIDATE_4E34E52_ROOT_RECHECK_R01.json a9a978f6db86d6531c53ef4ff9da55f1dcdb9a1abcc4794ce57db31e74302d68. No new SHA-specific human statement is asserted.",
|
||||||
|
"candidate": "4e34e5209706e3e16a4860e65e52b90287722c36",
|
||||||
|
"main_base": "54e07ca98093901e6a53d1bdad86b6c81fcc2db5",
|
||||||
|
"root_cli_record": [
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/ROOT_APPROVE_4E34E52.stdout",
|
||||||
|
"bytes": 3975,
|
||||||
|
"sha256": "525d9f66bd5e6bd1f3512071684b25fa100dbd411e5e98b624c8017bd7cb1367"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/ROOT_APPROVE_4E34E52.stderr",
|
||||||
|
"bytes": 0,
|
||||||
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/ROOT_APPROVE_4E34E52.exit",
|
||||||
|
"bytes": 2,
|
||||||
|
"sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"note": "The governor's own approve calls were refused by the Claude Code auto-mode classifier as self-approval; the normal owner CLI approve was then run by Root (exit 0, approved)."
|
||||||
|
},
|
||||||
|
"integrate_job": {
|
||||||
|
"id": "b90091f0ce2d42599382b086049b9a8f",
|
||||||
|
"started_by": "Root",
|
||||||
|
"state": "succeeded",
|
||||||
|
"exit_code": 0
|
||||||
|
},
|
||||||
|
"review": {
|
||||||
|
"model": "claude-opus-5-5",
|
||||||
|
"session_id": "local_e84f7c9a-4a59-4b51-9eda-7574f6a41012",
|
||||||
|
"context": "fresh",
|
||||||
|
"actual_result": {
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_INDEPENDENT_REVIEW_9ADBBEE.json",
|
||||||
|
"bytes": 8067,
|
||||||
|
"sha256": "cec1c65dc496f1de812caedbd5dff3dd92a4314458cb0f13e67c738c9d84cf95"
|
||||||
|
},
|
||||||
|
"delivery": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/eq-independent-review-9adbbee-r01/DESKTOP_DELIVERY.json",
|
||||||
|
"bytes": 1941,
|
||||||
|
"sha256": "1f35b3ebacd1a9f963ee7ca72c5b133bd88e5c28cddca25b1f2dccda3ce607dd"
|
||||||
|
},
|
||||||
|
"high_medium": 0,
|
||||||
|
"low": 2,
|
||||||
|
"findings": [
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "verify_eq.compare_bundles(verify_eq.py:318-357)は、各版の全シナリオの中身を版の間で比べ、差が 1 件でもあれば ok を false にし、--compare-versions の exit を 1 にする。OPT_CONTRACT_T1 §3 では E5 は版ごとの絶対の検査で、OPT は before の existing-defect(E5 の latest/signal の aliasing など)を直すことが求められる。そのため、正しく直した after の版でも、E5 outside_in の変更直後の観測(observations[2])の latest と digest の欄に差が出て、ok は false になる。差は path つきで全て返り、existing_defects と after_all_e_pass もあるので、誤った合格は生じない。OPT の受入では、差が before で existing-defect だった scenario とその原因の欄に限られることを確かめる規則を、先に決めておくとよい。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "S6Bundles の docstring(test_eq.py:2489-2492)は「no part mocked」と書き、PROGRESS.md も「recompute of a real synthetic after bundle」を本物の経路に数えている。しかし、s6_sealed_bundle(test_eq.py:2354)と S4NativeBundleLogic.recompute(test_eq.py:1533-1535)は、standard.profile_path を patch して recompute を動かしている。合成の束の profile の場所という外部入力の差し替えなので、本物の経路という区分は変わらない。ただし、記述にはその差し替えを書くべきである。"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"low_2_record_correction": "Review low 2 (S6Bundles docstring and PROGRESS say no part mocked, while standard.profile_path is patched for the synthetic bundle profile location) is corrected here: those tests replace that external input only. The EQ bytes stay frozen for the OPT after-version run (OPT_CONTRACT_T1 §2), so the text is not edited.",
|
||||||
|
"low_1_carried_to_OPT": "Before OPT acceptance, fix the rule that cross-version differences are limited to scenarios that were before-version existing defects and their cause fields (compare_bundles returns every difference with its path; ok stays false on any difference)."
|
||||||
|
},
|
||||||
|
"prior_review_changes_requested_preserved": {
|
||||||
|
"S": "a46418d064ebf8c8e03043bae50c29ac174b5472",
|
||||||
|
"result": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/eq-independent-review-a46418d-r01/DESKTOP_RESULT.json",
|
||||||
|
"bytes": 8060,
|
||||||
|
"sha256": "c08eedb2ff81fd308e0771aeb4330076389561255a2bb964567be28f478592cd"
|
||||||
|
},
|
||||||
|
"repair_decision": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/DESKTOP_EQ_INDEPENDENT_REVIEW_REPAIR_DECISION_A46418D.json",
|
||||||
|
"bytes": 1718,
|
||||||
|
"sha256": "49e70371967a0103aeba140cbdee7876c0fc9a268bf465d435b85d4fb3e466b8"
|
||||||
|
},
|
||||||
|
"plan": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/EQ_S6_AFTER_VERSION_PLAN.txt",
|
||||||
|
"bytes": 8074,
|
||||||
|
"sha256": "e51da52336489d069c0adf2c70639755389a049334f5816804fea51a86c25197"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"prior_failures_preserved": [
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/NORMAL_NATIVE_FAILURE_INTAKE_6F75C9A.json",
|
||||||
|
"bytes": 1870,
|
||||||
|
"sha256": "38f7947dc4b9808f24cd0d362c8e74761841ca4c3ac50d9b9ab3658f10aa69d7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/FORMAL_VALIDATE_B2DBDA8.stdout",
|
||||||
|
"bytes": 0,
|
||||||
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/DESKTOP_EQ_VERIFY_SANDBOX_REPAIR_DECISION_B2DBDA8.json",
|
||||||
|
"bytes": 1438,
|
||||||
|
"sha256": "fbd3b12f153e030a1f4a656ad6a507a07ee90be721ab2c669c96ad4b68c2a25b"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"actual_native": {
|
||||||
|
"measured_source": "S",
|
||||||
|
"candidate_Q_measured": false,
|
||||||
|
"version": "before",
|
||||||
|
"execution": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/native-9adbbee-r01/execution.json",
|
||||||
|
"bytes": 6388559,
|
||||||
|
"sha256": "4aeb4fdd9627ca5a885620d80b3d576dd60b68f0682942dec0cc881c31ba2891"
|
||||||
|
},
|
||||||
|
"bundle": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/native-9adbbee-r01/bundle.json",
|
||||||
|
"bytes": 1153368,
|
||||||
|
"sha256": "4c54b665fc23fdf6b4a8d107aa363bbf7ac827c6cabe52e14445a9a2c12053d6"
|
||||||
|
},
|
||||||
|
"seal": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/native-9adbbee-r01/seal.json",
|
||||||
|
"bytes": 125,
|
||||||
|
"sha256": "d9b827729e028d356a759ab4d5aedf448c207a47df102d5eafb6ac05bcd7b115"
|
||||||
|
},
|
||||||
|
"placement": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/EQ_BUNDLE_PLACEMENT_9ADBBEE.json",
|
||||||
|
"bytes": 774,
|
||||||
|
"sha256": "c2c8a0b50cb45f6d06b89a0702619bc8d73790eb16f46ea8f83cb789ac7a257d"
|
||||||
|
},
|
||||||
|
"compression_before_placement": {
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/EQ_9ADBBEE_NATIVE_COMPRESSION_BEFORE_PLACEMENT.json",
|
||||||
|
"bytes": 2738,
|
||||||
|
"sha256": "b226b8510318cc30be7f2bad7d021d342c7d3050ad8c120000a7f4d575ff1f15"
|
||||||
|
},
|
||||||
|
"source_files": 1407,
|
||||||
|
"phases": 7,
|
||||||
|
"owned_pids": 7,
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"source_and_player_unchanged": true
|
||||||
|
},
|
||||||
|
"before_record_for_OPT": "SPEC §5: the S_eq native above is the before record of the OPT comparison; Q_eq 4e34e52 matches it in product source map, engine, inputs, settings and EQ files (candidate_qualification).",
|
||||||
|
"implementer": "Claude Opus 5.5 Desktop governor (local_a7f85421-3eed-4482-8030-c0dca669573a) by user delegation; contract worker field codex unchanged; commits by Runner submit",
|
||||||
|
"original_completed": 23,
|
||||||
|
"original_total": 88,
|
||||||
|
"packages_completed": 4,
|
||||||
|
"packages_total": 30,
|
||||||
|
"partial_credit": false,
|
||||||
|
"original_credit": 0,
|
||||||
|
"scope": "EQ support task only. Original P28-02 remains in_progress until T1 OPT implementation, EQ after record, same-condition comparisons, RESTART, exact final roster, whole-unit review, integration/final and ledger.",
|
||||||
|
"remaining": [
|
||||||
|
"P28-02-OPT registration and implementation (allowed existing product files only, OPT_CONTRACT_T1 §2)",
|
||||||
|
"EQ after record and (a)(b)(c)(d) on the OPT S",
|
||||||
|
"OPT validation and whole-unit independent review",
|
||||||
|
"Six original performance budget failures",
|
||||||
|
"200 guest Operations ON maximum scene",
|
||||||
|
"Same Windows build native-device acceptance",
|
||||||
|
"Long normal play and all original game/content/material acceptance"
|
||||||
|
]
|
||||||
|
}
|
||||||
+24
File diff suppressed because one or more lines are too long
+5630
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,789 @@
|
|||||||
|
# P28-02-EQ S4 implementation — retained completion r03
|
||||||
|
|
||||||
|
S4 retains the existing driver/verifier and all 134 prior test bodies (including
|
||||||
|
the original 119). The only production-code correction in this completion is
|
||||||
|
to require `check_probe(...)["ok"]` in driver admission and verifier recompute,
|
||||||
|
with every error included in the rejection. `--check` and `--run` share the same
|
||||||
|
admission gate. Unit tests mock the run boundary; no engine is launched.
|
||||||
|
|
||||||
|
The call-site check was limited to run_eq.py and verify_eq.py as instructed.
|
||||||
|
Other calls to check_python_imports, check_observation and check_lifecycle raise
|
||||||
|
on rejection and return True on success; check_report already requires `ok`.
|
||||||
|
DIAG check_imports/bound_raw and collector stage_gate/guard_gate reject by
|
||||||
|
exception. In particular, the collector gates' successful None is not false.
|
||||||
|
No further ignored verdict-dictionary call was found in these two files.
|
||||||
|
|
||||||
|
## Complete S4 requirement-to-code and test map
|
||||||
|
|
||||||
|
The following is the current S4 map. Earlier stage notes below are preserved
|
||||||
|
historical records, including statements of work that was pending at that time.
|
||||||
|
All tests cited here are engine-free, synthetic evidence tests, not native proof.
|
||||||
|
|
||||||
|
| Retained requirement (S4 must / binding / r01-r03) | Code | Unit coverage |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| S1: pin full source map, EQ and allowed dependencies, engine, fixture, admission | run_eq.DEPENDENCIES/FROZEN, load_dependencies, actual_pins, frozen_commit; verify_eq.verify repeats actual pins | SourcesAndMetrics source closure/pin tests; S4Bundle.test_import_closure_rejections; S4NativeBundleLogic.test_receipt_and_source_rejection_matrix |
|
||||||
|
| S2: independently bind lifecycle and audio SHA; reject missing/error even with stdout | verify_eq.NAMES, phase_evidence, check_audio; lifecycle inventory excludes only lifecycle/audio | S4Bundle.test_missing_private_evidence_and_extra_rejected, test_phase_role_pid_audio_and_guard_rejected, test_rebound_lifecycle_and_scenario_contradictions |
|
||||||
|
| S2: retain raw and joined separately with normalization evidence; join before compare | phase_evidence calls check.join_report; run writes raw/joined/proofs/checker JSON; seal hashes all; recompute compares joined reports | S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof; S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join; Normalization sidecar rejection tests |
|
||||||
|
| S2: full observation bytes/SHA and lifecycle guard/preparation/cleanup | phase_evidence calls check_observation for all 31 checkpoints and check_lifecycle(raw, life, guard) | S2Format observation/lifecycle tests; S4Bundle positive and contradiction tests |
|
||||||
|
| S3a: strict_json, measurement passed, all private files SHA bound | verify_eq.read, check.read_report_stdout, phase_evidence exact inventory and check_report(raw, life.measurement, life.e3, life.e3_b1, life.e45) | S3a.test_duplicate_JSON_key_rejected; S4Bundle positive, missing evidence and contradictions |
|
||||||
|
| S3a: lifecycle.e3/e3_b1, all 18 e3 files, full package evidence and checker outcomes | phase_evidence binds each e3 row to lifecycle and raw; package bytes remain inside e3 evidence; copy_profile also retains all package/log/config files | S3a package/NA/code/event rejection tests; S4Bundle scenario/b1 rejection matrix |
|
||||||
|
| S3b: lifecycle.e45, all 21 e45 files, 39 ordered scenarios, continuous intervals | NAMES, phase_evidence count/copy checks; existing check_report/check_e45 continuity checks | S4Bundle contradictions; S3b scenario ordering/continuity and ownership tests |
|
||||||
|
| S3b: join_facts sidecars/proofs and checker results with raw facts | check.join_report/check.join_facts reused unchanged; phase_evidence returns raw/joined/proofs/checker; verify compares their stored copies with recomputation | S3b facts/normalization tests; S4Bundle positive; S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence |
|
||||||
|
| S3b: separate R-A/R-B and O-A/O-B comparisons; zero differences required | verify_eq.recompute explicit role loop, requires ok and empty differences | S4NativeBundleLogic positive and cross-role rejection; S4RemainingBindings determinism rejection |
|
||||||
|
| S3b: preserve existing-defect, aliasing, cached digest facts, never manufacture PASS | phase_evidence preserves existing checker outcomes and raw facts | S4Bundle positive explicitly asserts existing-defect; S3b.test_aliasing_cannot_be_PASS, test_aliasing_missing_record and digest tests |
|
||||||
|
| r01: seven owned phases in exact order, parse --check-only, headless runtime | run_eq.plan/run; verify_eq.PHASES/recompute validates commands, phase, role, PID and timestamps | S4NativeBundleLogic positive and receipt matrix; S4RemainingBindings owned lifecycle matrix |
|
||||||
|
| r01: guard before parent, unique fresh startup/runtime profiles, env/role/fixture bindings | wrapper_text, plan, run_private_engine, guard_gate; recompute validates wrapper, 14 distinct profiles and 7 PIDs | S4Bundle guard/role/audio matrix; S4NativeBundleLogic startup-name rejection; S4RemainingBindings profile-reuse rejection |
|
||||||
|
| r01: gates return None; absent profile empty inventory is not export success | run uses gates directly; copy_evidence requires exact existing inventory; copy_profile records exists separately | S4NativeBundleLogic.test_gate_none_success_not_boolean; S4Bundle.test_missing_profile_not_export_success |
|
||||||
|
| r01: original absolute input destinations, never substitute copied root | actual_pins invokes collector.inputs on original readonly and checks nine unique destinations | S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected; S4RemainingBindings.test_nine_original_destinations_required |
|
||||||
|
| r01: finally cleanup, source/project/default-player preservation; failures retained without seal | run finally captures cleanup/errors, profiles, pins and execution; recompute validates preservation/cleanup; seal only on success | S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine and cleanup/source matrix |
|
||||||
|
| r01: complete copies, exact evidence inventory, final manifest/seal, no overwrite | copy_evidence/copy_profile verify before/after copy; inventory/pin; seal writes manifest then seal; write uses x mode | S4Bundle seal/missing/changed/extra/existing-output tests; S4NativeBundleLogic full synthetic bundle |
|
||||||
|
| r01: verifier reads bundle at BUILD_OUTPUT_DIR/p28-02-eq-evidence, recomputes raw checks and stored results | verify_eq.main/verify/check_seal/recompute; no writes in verification | S4Bundle missing bundle/seal/manifest tests; S4NativeBundleLogic full verify positive |
|
||||||
|
| r02: collector read-only import in closed D1+DIAG+EQ set; never import restart_pair | load_dependencies pins all 11 external files, checks loaded module closure and Python imports; copying implemented in EQ | S4Bundle.test_import_closure_rejections explicitly rejects restart_pair and other unapproved imports |
|
||||||
|
| r02: exact raw3 stdout.log, stderr.log, engine-native.log; exit comes from owned process.json, not raw3 | collector.run_private_engine and DIAG.bound_raw reused; recompute checks owned JSON/diagnostics | S4NativeBundleLogic receipt matrix missing native log/owned/exit-in-raw; S4RemainingBindings exit/start/end/diagnostic rejection |
|
||||||
|
| r02: exact private names and API arguments | NAMES = checkpoint 00..30, observation 00..30, e3 00..17, e45 00..20, events/report/lifecycle/audio-close; phase_evidence passes all five check_report args and guard to check_lifecycle | S4Bundle positive, missing/extra evidence and scenario matrix |
|
||||||
|
| r02: synthetic writes outside checkout; verifier read-only | test_eq.synthetic_directory uses BUILD_OUTPUT_DIR or tempfile.gettempdir and rejects checkout descendants; verify outputs only stdout | S4Bundle.test_checkout_temp_destination_rejected; full synthetic verify test |
|
||||||
|
| r03: enforce false static verdict, include all errors, both driver modes and verifier | run_eq.main and verify_eq.recompute require static.ok | S4ProbeAdmission four tests; S4RemainingBindings verifier false/true tests |
|
||||||
|
| r03: preserve original context bytes and all plans; retain old failures and test bodies | S4_SUPPLEMENTARY.json loads Root original JSON unchanged, records five source pins and eight verified plan hashes; retained test prefix reconstructs original SHA | Source/plan assertions recorded in supplementary; final unit output and SHA recorded separately |
|
||||||
|
| r01-r03: S_eq native is not Q; no acceptance/credit from units; exact submitted/base | admission/recompute carry S_eq-native-not-Q, candidate_Q_measured false, formal_acceptance false, original_credit 0 | S4NativeBundleLogic Q-label rejection and positive; final worker JSON uses submitted only after full local PASS |
|
||||||
|
|
||||||
|
## Completion evidence and limits
|
||||||
|
|
||||||
|
The original 134-test file can be recovered by removing only the newly appended
|
||||||
|
classes and retaining its original unittest main; its SHA is
|
||||||
|
cb742b252dbc278113b3c11c2431adac35b0c2e201a762a8ea1ac926e4af414b,
|
||||||
|
matching Root's retained record. This also preserves all 119 earlier bodies.
|
||||||
|
S4_SUPPLEMENTARY preserves all eight plans/API notes/clarification references
|
||||||
|
directly from the supplied r09 JSON, plus the exact r03 text and decision.
|
||||||
|
All five source SHA checks and all eight plan SHA checks succeeded.
|
||||||
|
|
||||||
|
Attempt 07 exposed a newly added test's overbroad comparator mock: it injected a
|
||||||
|
difference into the report's self-check before the intended cross-PID gate.
|
||||||
|
Only that new test was corrected to retain the real identity self-comparison.
|
||||||
|
Attempt 07 raw/exit/SHA remain a failure. Attempt 08 rechecks the added classes
|
||||||
|
(9 tests, 86.276 seconds, OK, exit 0). Attempt 09 covers the three added
|
||||||
|
S4StoredResultBindings tests (0.025 seconds, OK, exit 0): verify must reject a
|
||||||
|
cached verdict differing from recomputation, missing sidecars, and raw/joined
|
||||||
|
substitution even when the supplied files have a valid seal. These isolate the
|
||||||
|
stored-result equality gate with a recomputation mock; full real recomputation
|
||||||
|
remains covered by the existing and new native-bundle-logic classes.
|
||||||
|
Prior attempt 01 syntax, 02 unit, 04 recompute and supplementary assert failures
|
||||||
|
remain historical failures. Attempt 05's 132 PASS and late attempt 06's 134 OK
|
||||||
|
do not prove this version; the latter has no provider completion/exit receipt.
|
||||||
|
Final full local evidence: attempt 10 ran all 146 tests in 293.277 seconds,
|
||||||
|
OK, exit 0 (outer wall time 293.5742515 seconds). Raw is retained in
|
||||||
|
UNIT_OUTPUT_S4_ATTEMPT_10.txt and UNIT_OUTPUT.txt, SHA-256
|
||||||
|
ff6fc0065772434f9ca35a1267e24d199057e339869a868942a41829327503bb.
|
||||||
|
This was the single final full run after the targeted fixes and all additions.
|
||||||
|
|
||||||
|
An attempted read of Root's external retained test copy returned PermissionError.
|
||||||
|
No permission change was attempted; exact retained-prefix SHA verification
|
||||||
|
provided the same preservation check inside the allowed workspace. A shell
|
||||||
|
heredoc read also failed before execution; subsequent reads used python -c.
|
||||||
|
|
||||||
|
Root still must run the exact submitted S in seven native phases, place the
|
||||||
|
bundle, run p28-02-eq-unit and p28-02-eq-native-verify, obtain fresh independent
|
||||||
|
Opus review of all six conditions, and complete qualification/approval/
|
||||||
|
integration/final before OPT and whole-unit gates. Original credit is zero;
|
||||||
|
23/88 and 4/30 are unchanged. No native, accepted S, Q or product PASS is claimed.
|
||||||
|
|
||||||
|
## Retained S1-S3b implementation history
|
||||||
|
|
||||||
|
# P28-02-EQ S1 implementation
|
||||||
|
|
||||||
|
## Scope and authority
|
||||||
|
|
||||||
|
This run implements only staged plan r02 S1: `compare_versions.py`, synthetic
|
||||||
|
`test_eq.py`, progress and unit evidence. No product, SPEC, TASK, references,
|
||||||
|
registration, git, engine, Runner, or other worker operations are performed.
|
||||||
|
S2–S4 and all six formal acceptance gates remain pending. A successful comparison
|
||||||
|
is not a product E3/E5 PASS and does not establish native harness acceptance.
|
||||||
|
|
||||||
|
Read-only clarification SHA-256 checks matched the supplied values:
|
||||||
|
|
||||||
|
- r01: `25d323fd562d29e80782b6f075fc7a0e8b49457a6c4fbd7c30e74b31a6b6a126`
|
||||||
|
- r02: `777accdd652f85db6b9014d85e3c8b3b60ca94b20768e6173b36bc769d360fd9`
|
||||||
|
- r03: `12b27f984ef5843d98327200ad261dccaf64968402192b08ad55b15ed5454ea2`
|
||||||
|
|
||||||
|
SPEC file bytes SHA is `3791ccdcb87e8d71fe9205e1e692ebca9e0f974ea3b5fbc4fbb3943882131f1c`,
|
||||||
|
matching `registration/ROOT_PROPOSAL_BYTE_TRANSFER.json`. Removing the final LF
|
||||||
|
gives the supplied contract text SHA `cf75af22a803bf492e30f8a04a39f5187ece5b94cd54207aad8ece1683d4bc93`.
|
||||||
|
Neither representation was rewritten.
|
||||||
|
|
||||||
|
## Internal transport choices for S2
|
||||||
|
|
||||||
|
- Standard-library-only Python; no product or unapproved dependency imports.
|
||||||
|
- Nodes follow plan r02 A1. Scalars retain their Variant codes. Float payloads
|
||||||
|
are 16 lowercase hex digits for little-endian f64, including signed zero and
|
||||||
|
NaN bit patterns. Strings are never coerced to StringName. NodePath uses type
|
||||||
|
22 with its string payload. RID/Object/Callable/Signal are rejected.
|
||||||
|
- Composite math types use flat scalar components (AABB: 6, Basis: 9,
|
||||||
|
Transform3D: 12, Projection: 16). Packed arrays retain their type code.
|
||||||
|
- Array `typed_info` is null or `[builtin_int_node, class_StringName_node,
|
||||||
|
script_null_node]`. Dictionary metadata is null or `[key_info, value_info]`
|
||||||
|
using that same triple. Object/script-bearing values are not transported.
|
||||||
|
- A path is a list of `["key", key_node]` or `["index", integer]` segments.
|
||||||
|
Dictionary keys retain types and insertion order; indexes address Arrays.
|
||||||
|
Empty path addresses the root. Mutations operate on deep copies, validate
|
||||||
|
bounds and duplicate keys, and reject unknown operation fields.
|
||||||
|
- `array_splice` uses `nodes` for the inserted list; `dict_insert` uses `index`,
|
||||||
|
`key_node`, `value_node`. Other operation names/fields follow A3.
|
||||||
|
- A transport record has exactly `tree` or `diff`, `tree_sha`,
|
||||||
|
`raw_bytes_sha`, `roundtrip_ok`. Checkpoint S diffs apply to the previous S;
|
||||||
|
latest diffs apply to current S. latest may instead have `same_as_S: true`
|
||||||
|
and the three proof fields, with matching S raw-byte SHA.
|
||||||
|
- `tree_sha` is SHA-256 of compact, insertion-order UTF-8 JSON, no ASCII escaping,
|
||||||
|
no whitespace, no terminal newline. S2 must produce this representation and
|
||||||
|
prove Godot byte roundtrip. Python never claims it can independently recreate
|
||||||
|
Godot's var_to_bytes from a reported SHA or boolean.
|
||||||
|
- There is no application depth cutoff or depth-4 hash summary. Entire trees
|
||||||
|
are reconstructed and checked at each checkpoint. Resource/JSON parser limits
|
||||||
|
remain ordinary process limits; malformed evidence is not a PASS.
|
||||||
|
- Exact tree equality comes first. Text-key dictionary fallback preserves every
|
||||||
|
key's type, every typed-info value, and array order, records all changed
|
||||||
|
dictionary orders, and rejects duplicate textual keys. Scalar key spellings
|
||||||
|
use their string/integer/bool/null text; float and compound keys use lossless
|
||||||
|
compact typed JSON spelling, without decimal conversion. Original key nodes
|
||||||
|
are always compared as well, so this sorting cannot erase key type or bits.
|
||||||
|
|
||||||
|
## F1–F3 and restoration
|
||||||
|
|
||||||
|
The required four functions return/consume `(normalized, sidecar)` with precisely
|
||||||
|
`entries`, `violations`, `profile_root` as sidecar keys. `profile_root` input is
|
||||||
|
`{"root": <simplified absolute user root>, "actual_user_data_dir": <guard value>}`.
|
||||||
|
The sidecar adds `matches_guard: true` inside this object after checking equality.
|
||||||
|
|
||||||
|
Only top-level E2 event payloads, or elements of snapshot
|
||||||
|
`systems.runtime.domain_events.recent_events`, qualify. Nested event-shaped
|
||||||
|
payload data and lookalike events elsewhere do not qualify. The nine event types
|
||||||
|
and `save_service` source are closed. Both timing fields must exist and be
|
||||||
|
nonnegative ints. Their markers are typed Dictionary nodes representing the
|
||||||
|
r02 marker, not numeric substitutes. F3 preserves the whole original String
|
||||||
|
node and root, and replaces every exact root-plus-slash occurrence. A preexisting
|
||||||
|
reserved token is rejected to avoid ambiguous inversion.
|
||||||
|
|
||||||
|
Entries retain event index (null for snapshot trees), typed path, key and original
|
||||||
|
node; F3 also retains root. Tree paths preserve event position, while comparison
|
||||||
|
separately checks the actual event_id without remapping. Unknown timing/profile
|
||||||
|
values remain unchanged and recorded as violations. Violation presence alone is
|
||||||
|
not failure. Their actual differences are ordinary full-tree differences.
|
||||||
|
|
||||||
|
Restoration re-applies the closed normalization policy to reject missing,
|
||||||
|
duplicate, forged or unauthorized entries. The independent original tree SHA
|
||||||
|
must also match after restoration: changing a timing value in a sidecar to
|
||||||
|
another valid timing cannot be detected from the marker alone. The comparator
|
||||||
|
performs this SHA check against retained raw transport trees; unit tests include
|
||||||
|
this forgery. A sidecar is not an independent authority for its own integrity.
|
||||||
|
|
||||||
|
`validate_scenario_paths` accepts only fixed `user://p28_eq/{r,o}/` names:
|
||||||
|
good, tampered_world, missing_key, wrong_type, out_of_range, duplicate_id.
|
||||||
|
S3 must use these names and deterministic metadata/tamper rules.
|
||||||
|
|
||||||
|
## Joined comparison report interface
|
||||||
|
|
||||||
|
Report keys are closed: `schema` (`p28-02-eq/typed-v1`), `role` (R/O),
|
||||||
|
`profile_root`, `checkpoints`, `events`, `event_start`, `event_end`, `signal_order`,
|
||||||
|
`scenarios`. No missing value is defaulted to zero. Manifest/package records
|
||||||
|
belong to the bundle, not the S comparison report.
|
||||||
|
|
||||||
|
- Main checkpoints: 31 records, consecutive minutes. Each contains `minute`, S
|
||||||
|
and latest transports, `latest_digest`, `computed_latest_digest`,
|
||||||
|
`harness_normalized_digest`, K, C, and `observation`.
|
||||||
|
- Observation has `before`/`after`, each with complete S/K/C bytes SHA values.
|
||||||
|
Equality is mandatory before environment normalization. S2 must obtain these
|
||||||
|
from the complete raw layers, including telemetry and instance IDs.
|
||||||
|
- Digest self-consistency is mandatory in each PID. If latest has F1–F3 entries,
|
||||||
|
compare the explicitly labeled harness normalized digest and preserve both
|
||||||
|
product digests with an exclusion reason. Otherwise compare product digests.
|
||||||
|
Full S and latest comparison is mandatory in either case.
|
||||||
|
- K uses the SPEC names, `_accumulator` as f64 hex, `_phase_handlers` as phase
|
||||||
|
string to handler-ID list (compared as sets), and `performance_budget` with
|
||||||
|
`_sample_counts`, `_samples`, `_totals`. Unknown/missing fields are rejected.
|
||||||
|
- C has `_mvp_manifest_cache_generation`, `catalog_is_current`,
|
||||||
|
`_mvp_manifest_cache_bytes` (complete base64 var_to_bytes),
|
||||||
|
`catalog_instance_id`, `current_catalog_instance_id`.
|
||||||
|
- Each excluded telemetry/instance-ID field retains a reason and both raw values.
|
||||||
|
- `event_start` has counter and published_ids_count. A mismatch invalidates
|
||||||
|
correspondence. Event rows have sequence (zero-based receive order), transport,
|
||||||
|
and original_field_types. All original types and all tree fields are compared;
|
||||||
|
no cap is applied. S2's checker must enforce the exact product event shape and
|
||||||
|
required original type observations. `event_end` and signal order also compare.
|
||||||
|
- Scenarios have id, operation, result, checkpoints and events (raw typed event
|
||||||
|
trees). Result retains actual codes, ownership results, changed paths/values,
|
||||||
|
boundaries and event counts defined by S3. State checkpoints use the same
|
||||||
|
full-state machinery. Matching existing product failures remain matching
|
||||||
|
failures, never rewritten as PASS. S3's checker must enforce scenario coverage,
|
||||||
|
allowed operations and absolute product acceptance separately.
|
||||||
|
|
||||||
|
`compare_reports` reports differences with both actual values, dictionary-order
|
||||||
|
paths, exclusions, violations and digest mode. Evidence errors yield `ok: false`.
|
||||||
|
It does not replace `check_eq` or native/source admission: empty synthetic
|
||||||
|
scenario lists can be compared in S1 tests; they cannot satisfy S3 acceptance.
|
||||||
|
|
||||||
|
## Source closure and performance
|
||||||
|
|
||||||
|
`check_source_closure` hard-pins the collector's sorted compact JSON map digest
|
||||||
|
`651f703621c8ed06a724709f75d8bc05b1eef2988c3b3d5d3466096a3f759bf0` and 1407 entries.
|
||||||
|
Each row is bytes plus SHA-256. Added/missing paths fail. The exact changed set
|
||||||
|
must equal the supplied registered set, which must be a subset of the six OPT
|
||||||
|
paths. The caller cannot replace the before pin. S4 must separately pin all
|
||||||
|
EQ/DIAG/RESTART/collector bytes, engine, fixture and admission metadata.
|
||||||
|
|
||||||
|
Source closure unit tests inject a synthetic map pin *only within unittest mock*
|
||||||
|
to exercise positive closure mechanics; a separate test proves the real function
|
||||||
|
rejects that synthetic map with the production pin. No product hooks are replaced.
|
||||||
|
|
||||||
|
`classify_improvement` implements SPEC §4 strict disjoint ranges of three finite,
|
||||||
|
nonnegative measurements; markers and absent samples are rejected. Actual metric
|
||||||
|
collection and the combined OPT adoption decision remain later native work.
|
||||||
|
|
||||||
|
## Validation and preservation
|
||||||
|
|
||||||
|
Only `python3 test_eq.py` is executed, with synthetic inputs and bytecode disabled.
|
||||||
|
The first run's missing-F3-sidecar failure is preserved unchanged in
|
||||||
|
`UNIT_OUTPUT_ATTEMPT_01.txt` with SHA. The implementation now rejects the leftover
|
||||||
|
reserved token after restoration. The intermediate successful run is also kept.
|
||||||
|
`UNIT_OUTPUT.txt` is the latest complete raw output, with a separate SHA file.
|
||||||
|
These are local unit results, not Runner/native validation or Q measurements.
|
||||||
|
|
||||||
|
## S2 implementation (repair 4)
|
||||||
|
|
||||||
|
S2 only is complete. S1 compare_versions.py is byte-identical to its supplied
|
||||||
|
058f3fef... pin. The original 43 test bodies are retained; S2 adds 29 tests.
|
||||||
|
E3/E4/E5 execution and S4 driver/verification are deliberately not implemented
|
||||||
|
by this run. All six formal acceptance conditions remain pending.
|
||||||
|
|
||||||
|
### Probe and evidence
|
||||||
|
|
||||||
|
- eq_probe.gd follows the six DIAG lifecycle stages: public paused preparation;
|
||||||
|
main with two deferred frames; 30 warm steps; 30 observed steps; outside-tick
|
||||||
|
observations; observer teardown and close_requested.emit(). R uses the pinned
|
||||||
|
fixture and starts B0 at 602/B1 at 632. O keeps the new 360-minute state, lets
|
||||||
|
main enable Ops, and uses the same warm sequence (B1 390). The actual Ops
|
||||||
|
result and all preparation/frame/B0/B1 values are retained, never substituted.
|
||||||
|
- THE_TREE_EQ_ROLE is R or O. THE_TREE_P28_FIXTURE supplies R. The fixture SHA
|
||||||
|
is pinned in the probe. The existing guard wrapper supplies
|
||||||
|
THE_TREE_PACK_PROFILE_REPORT. No separate profile root from environment is
|
||||||
|
trusted: bind_profile reads the receipt, reads the live globalized user root,
|
||||||
|
checks OS.get_user_data_dir too, and records the receipt and SHA.
|
||||||
|
- Every supported Variant is encoded using the S1 A1 representation. All math
|
||||||
|
components, packed arrays, StringName/NodePath and typed container metadata
|
||||||
|
retain their types. Unsupported object-bearing nodes append an error and
|
||||||
|
fail transport/proof; they are not silently stringified. Full bytes roundtrip
|
||||||
|
is performed by encode -> decode -> var_to_bytes in Godot. Python's synthetic
|
||||||
|
tests do not establish that Godot execution succeeded.
|
||||||
|
- Diff production uses exact recursive set operations and array_splice. Changed
|
||||||
|
Dictionary key lists/order/metadata replace the whole affected subtree using
|
||||||
|
set; unchanged key lists recurse into every value. This is a valid subset of
|
||||||
|
A3 operations and has no depth limit. The emitted operations are replayed in
|
||||||
|
Godot and checked before export, then replayed independently by the existing
|
||||||
|
Python comparator. No S1 diff interface changes.
|
||||||
|
- evidence/checkpoint-00.json holds the full B1 S tree; checkpoint-01..30.json
|
||||||
|
hold S diffs from the previous checkpoint. Latest uses same_as_S only for
|
||||||
|
equal bytes; otherwise it holds a diff from that checkpoint's S.
|
||||||
|
- evidence/observation-00..30.json retain complete before/after S/K/C bytes
|
||||||
|
(base64) plus hashes, K/C actual values. K includes all telemetry and C includes
|
||||||
|
actual instance IDs. Reading a state witness also checks that create_snapshot
|
||||||
|
did not change K or C. Cache filling is an explicit recorded preparation.
|
||||||
|
- Domain events are captured through wildcard subscription after B1 and through
|
||||||
|
the last tick/frame, without a cap. to_dictionary() transport includes its own
|
||||||
|
byte roundtrip proof and receive-order sequence. original_field_types observes
|
||||||
|
all seven object fields; entity_ids and payload include typed_info.
|
||||||
|
- evidence/events.json, report.json, lifecycle.json and audio-close.json retain
|
||||||
|
the run data. lifecycle has preparation, Ops/save policy, raw baseline/frame
|
||||||
|
values, warm signals, guard binding, observer inventories, error list, and
|
||||||
|
file hashes. File writes refuse overwrites. The lifecycle inventory excludes
|
||||||
|
its own hash and the later audio receipt; S4 must bind both independently.
|
||||||
|
S4 must reject missing lifecycle/audio or errors even if a stdout report exists.
|
||||||
|
- stdout emits exactly one P28_02_EQ_REPORT= line with the unchanged S1 closed
|
||||||
|
schema. Report also contains full transports; private files are independently
|
||||||
|
bound copies, not substitutes for raw output.
|
||||||
|
|
||||||
|
### Python joining and checking
|
||||||
|
|
||||||
|
- S1 calls this a *joined comparison report*. The raw probe leaves
|
||||||
|
harness_normalized_digest null because F1-F3 has one implementation, in Python.
|
||||||
|
check_eq.join_report(raw) reconstructs all trees, checks their proof hashes,
|
||||||
|
normalizes/restores using S1, and returns a copy plus complete sidecars. It
|
||||||
|
fills that existing field with a harness-only typed canonical SHA, not a
|
||||||
|
product SimulationDigest. Only Dictionary enumeration order is canonicalized;
|
||||||
|
key node types, scalar bits, metadata and Array order remain exact. This avoids
|
||||||
|
turning an allowed Dictionary-order fallback into a spurious digest failure.
|
||||||
|
normalized_tree_sha remains insertion-order sensitive for transport binding.
|
||||||
|
S4 must preserve and hash raw and joined outputs separately, call this join
|
||||||
|
before compare_reports, and retain normalization evidence. Product latest_digest
|
||||||
|
and computed_latest_digest always remain the actual Godot values.
|
||||||
|
- check_report is explicitly an S2 format/contradiction check with
|
||||||
|
formal_acceptance=false. It enforces 31 checkpoints, minute/counter coherence,
|
||||||
|
full S/latest/K/C, observation proof, actual event field types, unaltered event
|
||||||
|
IDs, and event coverage against endpoint published_ids. Empty or unknown
|
||||||
|
transport fields do not pass as a digest-only comparison.
|
||||||
|
- check_observation binds full raw bytes to SHA witnesses. check_lifecycle binds
|
||||||
|
the separately collected guard receipt and checks actual preparation/teardown
|
||||||
|
evidence. These functions must be called by S4 when copied evidence is joined.
|
||||||
|
- check_probe is a conservative static screen, not a Godot parser or proof of
|
||||||
|
arbitrary GDScript safety. It rejects inferred declarations, static autoload
|
||||||
|
references/imports, live writes, unlisted/dynamic live dispatch, mutation calls
|
||||||
|
outside preparation/stepping, nontextual sort, event truncation, and missing
|
||||||
|
full-state/roundtrip/guard operations. Native parse-base/parse-wrapper and
|
||||||
|
independent source review remain mandatory.
|
||||||
|
- E3/E4/E5 scenarios are absent and check_report explicitly rejects nonempty
|
||||||
|
scenario lists at this stage. S3 must extend coverage/absolute product-outcome
|
||||||
|
checking and static allowed scenario boundaries without weakening S2 checks.
|
||||||
|
|
||||||
|
### Local validation and preserved history
|
||||||
|
|
||||||
|
Engine-free command: python3 -B test_eq.py. S2 attempts 01/02/03 passed
|
||||||
|
68/71/72 tests respectively. Each complete raw output and SHA is retained.
|
||||||
|
The final 72 include all 43 S1 tests and 29 S2 tests.
|
||||||
|
UNIT_OUTPUT.txt is the final raw output; UNIT_OUTPUT_S1_FINAL.txt preserves the
|
||||||
|
previous 43-test final output. Original UNIT_OUTPUT_ATTEMPT_01 (failure) and
|
||||||
|
ATTEMPT_02 remain unchanged with their hashes. No failure was rewritten.
|
||||||
|
|
||||||
|
The first attempted shell heredoc was refused by the environment before it wrote
|
||||||
|
a file (temporary-file creation denied). apply_patch and direct Python writes
|
||||||
|
inside eq/ succeeded; no engine or Runner operation was attempted.
|
||||||
|
|
||||||
|
S2_SUPPLEMENTARY.json contains one actual_commander_context key with the full
|
||||||
|
unedited r01/r02 plans, the full supplied RUN decision, and the read-only
|
||||||
|
clarification paths/SHA. Both full plan texts reproduce their supplied hashes.
|
||||||
|
This is a preserved instruction packet, not a new commander decision.
|
||||||
|
|
||||||
|
## S3a implementation (repair 5)
|
||||||
|
|
||||||
|
Only the two specified S2 checker fixes and E3 are implemented. S3b (E4/E5),
|
||||||
|
S4, all native phases, both formal validations and all six acceptance conditions
|
||||||
|
remain pending. No product/engine/Runner/git-write/other-agent operation occurred.
|
||||||
|
The S1 comparator is unchanged (058f3fef57c2ebe6951a48d85d570a110b982e08a13c805c244fec7d5e9a0fe8).
|
||||||
|
Existing test bodies remain, except the S2 format helpers now provide the
|
||||||
|
required measurement inventory and full 30-minute pairs; S1 fixtures are unchanged.
|
||||||
|
|
||||||
|
### Measurement binding
|
||||||
|
|
||||||
|
check_report(raw, measurement=None, e3_evidence=None, b1_record=None) requires
|
||||||
|
the separately retained lifecycle.measurement. This keeps process object IDs
|
||||||
|
out of the unchanged joined-report schema and of cross-PID comparisons.
|
||||||
|
The inventory contains probe_object (actual instance ID), start_minute and the
|
||||||
|
full get_connections inventory. Both observer methods must belong to that
|
||||||
|
probe object exactly once. Every measured checkpoint after B1 must have exactly
|
||||||
|
snapshot_published then state_updated. Missing inventory never downgrades the
|
||||||
|
expectation. The exact string phase keys are 0 through 10; aliases such as 00
|
||||||
|
fail. strict_json rejects duplicate object keys before they can be discarded.
|
||||||
|
S4 must use strict_json for raw JSON, pass measurement to check_report, and
|
||||||
|
bind lifecycle and all private files by SHA. The CLI now requires --lifecycle.
|
||||||
|
|
||||||
|
### E3 intervals and raw evidence
|
||||||
|
|
||||||
|
The measured stream closes before run_e3. There are 18 ordered entries:
|
||||||
|
restore_snapshot, validate, load_from_path, each with missing_key, wrong_type,
|
||||||
|
out_of_range, duplicate_published_ids, duplicate_facility, tampered_world.
|
||||||
|
Every entry retains applied/NA, its reason, invocation fact, actual B1 facility
|
||||||
|
count, code/null and API reason, bool/errors, migration fact and actual event
|
||||||
|
count. Dictionary-only world cases are NA. Envelope duplicate checks are invoked
|
||||||
|
and their whole return is retained, but remain NA, never an acceptance or defect
|
||||||
|
claim. O's zero-facility cases do not construct, substitute R or invent instances.
|
||||||
|
|
||||||
|
B1 is decoded from its already observed lossless transport. Inputs are deep
|
||||||
|
copies with the specified fixed mutations. The unsupported manifest format is
|
||||||
|
the fixed integer 2147483647. Save metadata is empty. Duplicate packages share
|
||||||
|
the allowed fixed duplicate_id path sequentially; each original, modified and
|
||||||
|
post-operation package file is copied into that interval's evidence before any
|
||||||
|
later overwrite. The four-file inventory retains complete base64 bytes and SHA,
|
||||||
|
including absent files as null. world.bin uses offset len//2 XOR 1. Package
|
||||||
|
preparation uses SaveService.save_snapshot only inside the active E3 interval;
|
||||||
|
its actual return and exact input are retained. A refused duplicate save makes
|
||||||
|
load NA; a refused mandatory nonduplicate preparation fails the harness.
|
||||||
|
|
||||||
|
Each scenario retains two full S/latest/K/C checkpoints in the existing S1
|
||||||
|
schema. lifecycle.e3 and evidence/e3-NN.json additionally bind full raw layer
|
||||||
|
bytes, layer typed transports, observation witnesses, invocation boundary,
|
||||||
|
whole typed API return, all scenario event transports, separate signal records,
|
||||||
|
latest_save_operation_result and SaveService diagnostic budgets before/after.
|
||||||
|
check_e3 checks full byte witnesses, binds report to raw evidence and requires
|
||||||
|
continuity between intervals (starting at the last measured checkpoint).
|
||||||
|
No scenario reset or state repair is performed: later intervals use the actual
|
||||||
|
new baseline, including any unexpected product changes.
|
||||||
|
|
||||||
|
join_report now derives the existing normalized digest field for scenario
|
||||||
|
checkpoints as well as measured checkpoints, using the unchanged S1 policy.
|
||||||
|
E3 report result summaries contain deterministic API facts; whole returns and
|
||||||
|
package diagnostics remain in SHA-bound raw evidence, not silently discarded.
|
||||||
|
Package timestamps and SaveService static diagnostic budgets have explicit
|
||||||
|
exclusion reasons and actual values in checker output. S1 continues to compare
|
||||||
|
the full normalized scenario state/events and deterministic results.
|
||||||
|
|
||||||
|
### Product outcomes versus malformed evidence
|
||||||
|
|
||||||
|
check_e3 derives source-backed expectations and outputs actual results,
|
||||||
|
expected event counts, typed path/value differences, dropped recent event,
|
||||||
|
normalization sidecars and existing-defect-candidate entries. It does not accept
|
||||||
|
a caller's PASS/defect label. Wrong counts, accepted invalid inputs or changed
|
||||||
|
state are recorded product candidates; a forged count versus the retained event
|
||||||
|
list is malformed harness evidence and fails admission. Missing load code,
|
||||||
|
invented restore/validate code, false NA/applicability, missing raw evidence or
|
||||||
|
unrecorded interval gaps also fail admission.
|
||||||
|
|
||||||
|
For failed loads, X(B, ev_fail) increments the counter, sort-inserts the actual
|
||||||
|
unchanged ID and appends the event, retaining the dropped head at the 256 limit.
|
||||||
|
The full normalized state must match this expected tree. The checker also binds
|
||||||
|
payload to latest_save_operation_result and return facts, checks pause/restore
|
||||||
|
outcomes, and retains full K/C differences. Such differences are not suppressed
|
||||||
|
even when caused by the product's load accounting. Envelope duplicate acceptance
|
||||||
|
alone is explicitly not a defect.
|
||||||
|
|
||||||
|
### Handoff and validation boundary
|
||||||
|
|
||||||
|
The static screen admits the listed calls only in run_e3's active interval and
|
||||||
|
the sole package-preparation helper; it remains a conservative screen, not a
|
||||||
|
Godot parser. S3b extends scenario dispatch/coverage and the static count policy
|
||||||
|
for its own authorized operations. S4 must bind lifecycle.e3/e3_b1/measurement,
|
||||||
|
all e3-NN files, package evidence, raw/joined outputs and checker outcomes, and
|
||||||
|
call check_report and check_lifecycle. The current S2 synthetic empty-scenario
|
||||||
|
fixture remains useful for historical format tests; a S3a lifecycle requires
|
||||||
|
the complete 18-entry table and cannot pass with an empty scenario list.
|
||||||
|
|
||||||
|
S3A_SUPPLEMENTARY.json has the single actual_commander_context key, containing
|
||||||
|
both unmodified staged plans, both S3 plans and the full effective RUN decision.
|
||||||
|
All four plan hashes match the supplied pins; read-only r01/r02/r03 paths remain
|
||||||
|
in eq-staged-readonly-r04. This is preserved authority, not a new decision.
|
||||||
|
|
||||||
|
The local tests use synthetic bytes for Godot proof fields. Their PASS does not
|
||||||
|
prove native parsing, Godot roundtrip, fixture behavior or product acceptance.
|
||||||
|
Native execution is deliberately left to Root after S4, followed by Runner
|
||||||
|
validation and the fresh independent review.
|
||||||
|
|
||||||
|
## S3b implementation (repair 7; E4-1 r02)
|
||||||
|
|
||||||
|
S3b reuses the S1 transport/comparison, S2 measurement, and S3a observations.
|
||||||
|
E3's implementation and the original 91 test bodies remain unchanged. Rebuilding
|
||||||
|
the original test file from its retained prefix plus its original unittest main
|
||||||
|
reproduces f81185e506954964bb96b31a569233202a1a7e7c78b2121aba6ab3f2e24d7e1e.
|
||||||
|
The previous run 7da027a85548460bb008b562a79a52ae remains historical evidence:
|
||||||
|
its blocked enumeration question was resolved by the supplied S3b r02, not
|
||||||
|
retroactively labeled an implementation success.
|
||||||
|
|
||||||
|
### Native scenario producer and raw binding
|
||||||
|
|
||||||
|
- E4 runs after all 18 E3 intervals: build_facility, tick, restore_snapshot,
|
||||||
|
load_from_path, rejected_command. The next interval starts from the actual
|
||||||
|
previous end. All observations reuse e3_observation's complete immutable
|
||||||
|
S/K/C, bytes, typed proof, latest and both digest values.
|
||||||
|
- Registry IDs come from that PID's definition_registry.get_facility_ids().
|
||||||
|
Both registered order and textual sorted order retain Array[StringName].
|
||||||
|
Bounds come from world_service.get_bounds(); x and y are inclusive.
|
||||||
|
WorldService's public FRONT/BACK layers are 0 and 1. ID is the outer loop,
|
||||||
|
then x/y/z lexical order, rotation 0. Every tried candidate and complete
|
||||||
|
public preview dictionary is transported without truncation. The whole
|
||||||
|
read-only search has complete before/after observations; it does not repeat
|
||||||
|
large snapshots per candidate. Empty registry is a harness error; NA requires
|
||||||
|
exhausting a nonempty registry's entire nonempty world range.
|
||||||
|
- Chosen payload is passed to the ordinary submit_command API. Product source
|
||||||
|
:505-515 processes ready commands immediately when paused, and may publish
|
||||||
|
there. The harness records this actual submit boundary, then exactly one
|
||||||
|
advance_minutes(1), then the processed command result. It does not force
|
||||||
|
delayed command execution, unpause, or replace any executor.
|
||||||
|
- E4 load uses the already allowed fixed user://p28_eq/{r,o}/good path and empty
|
||||||
|
metadata. Complete package bytes/SHA, whole returns, static SaveService
|
||||||
|
diagnostic budgets and latest_save_operation_result are retained. Restore
|
||||||
|
requires zero events; load requires one SAVE_LOADED and the existing e3_x
|
||||||
|
implementation of X(P,event). Payload is bound to latest_save_operation_result.
|
||||||
|
- E4 rejected command records the full submit and tick deltas separately:
|
||||||
|
bookkeeping, clock and any other actual changed path/value remain visible.
|
||||||
|
No current-run cache-staleness verdict is invented from publication timing.
|
||||||
|
- E5 covers all four targets, both fixed nested locations and both directions.
|
||||||
|
Signal handlers only retain references and record signals. Mutations occur
|
||||||
|
after the handler has returned. Each interval has start, preparation-tick
|
||||||
|
baseline, immediate operation result, and reset-tick end observations.
|
||||||
|
Deep copies and original returned values have complete transport proofs.
|
||||||
|
Each next baseline follows a recorded publication, with no direct repair.
|
||||||
|
- lifecycle.e45 and evidence/e45-00..20.json bind these 21 intervals.
|
||||||
|
report.scenarios contains the original 18 E3 rows followed by these 21 rows.
|
||||||
|
Scenario events are uncapped typed transports. All scenario signals remain
|
||||||
|
separate from measured signals, and are also bound into comparison facts.
|
||||||
|
|
||||||
|
### Checker, comparison and existing defects
|
||||||
|
|
||||||
|
check_report retains its original first four parameters and adds optional
|
||||||
|
e45_evidence. S3a-only callers continue to work; S3b lifecycle admission requires
|
||||||
|
all 39 scenarios and all raw evidence. check_e3 itself is unchanged; its caller
|
||||||
|
passes exactly the retained first 18 rows for S3b.
|
||||||
|
|
||||||
|
check_e45 rejects missing/reordered paths/combinations, interval gaps, false NA,
|
||||||
|
wrong registry/order/bounds/rotation, missing trials/previews, unmatched chosen
|
||||||
|
candidates, event count/identity coverage gaps, malformed signals, missing
|
||||||
|
ownership mutation/proof, and caller-supplied PASS or cache-staleness verdicts.
|
||||||
|
Outcome status is derived: recorded, NA, or existing-defect. Actual full typed
|
||||||
|
differences and both digest values are retained per scenario.
|
||||||
|
|
||||||
|
Raw result.facts is bound exactly to detail before joining. join_facts transports
|
||||||
|
all deterministic selection/command/signal facts and normalizes only snapshot
|
||||||
|
transports (input/held_before/held_after) using S1's unchanged closed F1-F3 policy.
|
||||||
|
Full inverse proofs and raw facts are retained. Package/API diagnostics remain
|
||||||
|
in raw evidence with explicit exclusion reasons/values, never discarded.
|
||||||
|
Search raw S/K/C stays in lifecycle evidence; its immutability is checked, and
|
||||||
|
the enclosing scenario checkpoints retain cross-PID K/C comparison.
|
||||||
|
|
||||||
|
Two failing added tests justified narrow S1 comparator extensions:
|
||||||
|
1. Only checkpoint index 2 of one of the eight named E5 outside_in intervals
|
||||||
|
(four checkpoints, matching operation) can record a cached/computed digest
|
||||||
|
mismatch as a product fact. Other checkpoint/self-consistency checks remain.
|
||||||
|
Both sides' consistency outcomes compare, and digest exclusions follow the
|
||||||
|
same F1-F3 rule. check_e45 reports cached_digest_aliasing as an existing defect.
|
||||||
|
2. Joined S3b result facts contain typed trees; they use the existing full
|
||||||
|
compare_trees dictionary-order-only fallback, preserving type/value/array
|
||||||
|
differences and recording every dictionary-order path.
|
||||||
|
Neither exception turns product ownership failures into PASS.
|
||||||
|
|
||||||
|
The static checker extends only the listed E4/E5 operations and active intervals,
|
||||||
|
checks selection-source proof snippets, forbids handler mutation and extra
|
||||||
|
dispatches, and retains all previous checks. It remains a conservative screen;
|
||||||
|
native parse and independent source review are still required.
|
||||||
|
|
||||||
|
### S4 binding requirements (additional to the retained S3a requirements)
|
||||||
|
|
||||||
|
S4 must copy/hash lifecycle.e45 and every e45-NN.json, bind them to the stdout/raw
|
||||||
|
report, call check_report with lifecycle.e45, and call check_lifecycle for S3b.
|
||||||
|
Join raw reports before compare_reports; retain join_facts sidecars/proofs and
|
||||||
|
checker outcomes with the raw values. Compare R-A/R-B and O-A/O-B separately.
|
||||||
|
Preserve existing-defect outcomes, including aliasing, in the final bundle.
|
||||||
|
Do not call unit evidence a native run, accepted S, Q measurement, or product PASS.
|
||||||
|
|
||||||
|
S3B_SUPPLEMENTARY.json has one actual_commander_context key with all six full
|
||||||
|
plans, the full effective RUN decision, and read-only clarification references.
|
||||||
|
All six plan content hashes match the user-provided pins. SPEC, TASK, references,
|
||||||
|
registration and prior supplementary files are unchanged. No engine, Runner,
|
||||||
|
git write, other agent, product edit or full regression has run.
|
||||||
|
|
||||||
|
|
||||||
|
Final S3b local validation: python3 -B test_eq.py, 119 tests, OK, exit 0.
|
||||||
|
Raw: UNIT_OUTPUT_S3B_ATTEMPT_09.txt and UNIT_OUTPUT.txt. SHA-256: 8360a2065b303099d5c546b3e4aecc0cc0ab0c2c1e5120b8034b6a1a64317030.
|
||||||
|
Attempts 02/03/07/08 retain the syntax, digest, dictionary-order and fixture
|
||||||
|
failures respectively; all earlier evidence remains unchanged.
|
||||||
|
|
||||||
|
## S4 binding map (implementation in progress)
|
||||||
|
|
||||||
|
| Retained requirement | Implementation / additional unit coverage |
|
||||||
|
| --- | --- |
|
||||||
|
| Full raw observations and checkpoint SHA | verify_eq: evidence inventory, check_observation, altered/missing witness rejection |
|
||||||
|
| Lifecycle and audio independently bound | verify_eq: exact evidence names, lifecycle.files, audio/PID checks |
|
||||||
|
| Measurement, E3, B1, E45 supplied explicitly | verify_eq: check_report with all five arguments; 39 scenarios and raw file equality |
|
||||||
|
| Guard before parent and fresh profiles | run_eq: collector guard_gate and run_private_engine; distinct startup/runtime bindings |
|
||||||
|
| Raw versus joined state, join_facts proofs | verify_eq: recompute join_report, preserve separate joined/proof/checker files |
|
||||||
|
| Same-role determinism and existing defects | verify_eq: R-A/R-B and O-A/O-B only, preserve checker outcomes |
|
||||||
|
| Seven owned phases and complete raw3/owned5 | run_eq/verify_eq: ordered phases, collector receipts, strict diagnostic recheck |
|
||||||
|
| Closure, source 1407, frozen S and pins | run_eq: checked dependency import and full inventories; verifier repeats actual-file checks |
|
||||||
|
| Original absolute input destinations | run_eq: collector.inputs on original readonly; no copied-root substitution |
|
||||||
|
| Finally cleanup and failure preservation | run_eq: collector owned cleanup, failure receipt, seal only after successful checks |
|
||||||
|
| Manifest/seal and read-only verification | verify_eq: full relative inventory and final seal; synthetic units outside checkout |
|
||||||
|
|
||||||
|
This table records the required implementation targets, not completed validation.
|
||||||
|
No native or formal validation is authorized for this worker.
|
||||||
|
|
||||||
|
|
||||||
|
## S5 implementation (repair 10; EQ_S5_SCALE_PLAN r01/r02)
|
||||||
|
|
||||||
|
Implemented by Claude Opus 5.5 in the Desktop control session after the user moved
|
||||||
|
implementation from Codex to Opus. The exact-S native of 6f75c9a failed in R-A and stays a
|
||||||
|
failure; this stage fixes the harness defects that only the real engine exposed and makes
|
||||||
|
the full R scope (E1-E5, 39 scenarios) fit the unchanged limits. All earlier text below and
|
||||||
|
above this section is retained history.
|
||||||
|
|
||||||
|
### Defects found only by the real engine (scratchpad diagnostics, not formal evidence)
|
||||||
|
|
||||||
|
- write_evidence created `user://evidence` with the user:// path. Under the guard's runtime
|
||||||
|
user-dir switch this fails; the directory is now created from the globalized path, as the
|
||||||
|
RESTART helpers do.
|
||||||
|
- typed_info encoded get_typed_script(), a null Object for unscripted typed containers, as an
|
||||||
|
unsupported Variant 24. It is now transported as NIL ([0], which the Python side already
|
||||||
|
required); a scripted element type still fails.
|
||||||
|
- Package manifest mutation re-serialized a JSON-parsed manifest. Godot parses every JSON
|
||||||
|
number as float, so untouched integers became 390.0, 1.0 and so on. Only the one key line is
|
||||||
|
now edited as text; the Python rule already rejects any other change (new negative test).
|
||||||
|
- The guard receipt was recorded after JSON parsing, with the same float problem. The exact
|
||||||
|
receipt text is now kept beside it; Python parses that text strictly, compares it with the
|
||||||
|
independently saved guard file and binds its SHA.
|
||||||
|
- Godot instance IDs are signed 64-bit and RefCounted IDs are negative. The cache identity
|
||||||
|
check accepts the sign. Raw values stay in raw; only the SPEC 3.2 exclusion (process-local
|
||||||
|
instance ID) is applied across PIDs, with both values and the reason recorded.
|
||||||
|
- A large E4 return is a blob; its ok/code facts are taken from the live return value.
|
||||||
|
- After the first harness error, later scenarios are no longer run (the run already failed).
|
||||||
|
|
||||||
|
### Product behavior recorded as an existing defect, separate from harness capture
|
||||||
|
|
||||||
|
autoload/simulation_runtime.gd:788 and :1346: a successful restore replaces domain_events
|
||||||
|
with a new DomainEventStream and does not carry subscribers. The probe's wildcard
|
||||||
|
subscription stayed on the old stream after E4 restore, so SAVE_LOADED and all later events
|
||||||
|
were not delivered. follow_event_stream() runs after every E3 call and after E4 restore and
|
||||||
|
load. When the stream changed it records the new stream's subscriber IDs (no instance IDs),
|
||||||
|
recovers the unobserved events from recent_events() in publication order, and subscribes to
|
||||||
|
the live stream again. check_e3/check_e45 record event_stream_replaced_subscribers_not_carried
|
||||||
|
as an existing defect (never PASS). Completeness is still proven only by the counter delta,
|
||||||
|
the published_ids delta and the actual event IDs; an event outside the 256-entry
|
||||||
|
recent_events window would remain missing and fail. lifecycle.event_stream_replacements must
|
||||||
|
equal the per-scenario facts. No event is renumbered, no product file or hook is changed.
|
||||||
|
|
||||||
|
### Evidence representation (complete and reversible)
|
||||||
|
|
||||||
|
- Trees larger than 64 KiB, raw S/K/C bytes and package files are written once as
|
||||||
|
evidence/blobs/<sha>.gz, named by the SHA-256 of the uncompressed bytes; records hold
|
||||||
|
{"blob": sha}. Small trees stay inline. lifecycle.blobs lists every blob with its size,
|
||||||
|
compressed size and compressed SHA; verify_eq binds that list to the files exactly and
|
||||||
|
decompresses every blob to check name and size.
|
||||||
|
- Godot's JSON text of a tree equals json_bytes(tree) (checked on the R fixture tree), so a
|
||||||
|
blob name is the tree SHA. var_to_bytes distinguishes typed metadata, String/StringName,
|
||||||
|
int/float and key order (checked in the engine), so transport reuses the proof for equal
|
||||||
|
bytes. Every checkpoint carries a complete tree; the diff chain is gone (tree_diff took 5.4 s
|
||||||
|
per R checkpoint). Report and lifecycle hold references only, which removes the memory and
|
||||||
|
swap growth seen in the failed native.
|
||||||
|
|
||||||
|
### Python: same results, less work
|
||||||
|
|
||||||
|
- A blob is accepted only when its uncompressed bytes hash to its name, and its tree is used
|
||||||
|
only after the full validate_tree (types, arity, metadata, keys) has passed on first use;
|
||||||
|
only then is its SHA recorded as valid. A failed blob is never recorded and fails again.
|
||||||
|
A matching SHA is never taken as proof of types (Root's repro of [2, true] / [24, 0] in a
|
||||||
|
correctly named blob is a regression test). Valid blob trees are shared, never mutated;
|
||||||
|
checkpoints are loaded one at a time. Equal SHA means equal; otherwise Python == decides, which is exact JSON equality for
|
||||||
|
validated trees (INT/BOOL payloads are int, floats are 16-hex strings).
|
||||||
|
- Normalization runs the original closed policy unchanged on a skeleton holding only
|
||||||
|
systems.runtime.domain_events.recent_events, read directly from the tree text. The rest of
|
||||||
|
the text is proven free of the profile root, the reserved token, _us/_ms names and
|
||||||
|
save_service; otherwise the original full walk runs. Restore runs the original reversible
|
||||||
|
check on the skeleton.
|
||||||
|
- normalized_digest builds the same canonical JSON without per-node copies and is memoized by
|
||||||
|
SHA (17.4 s to about 1.2 s on an R tree, identical value).
|
||||||
|
- Expected inputs, X(B, event) and the E5 expectation copy only the dictionaries on the
|
||||||
|
changed path. Large derived trees are recorded by SHA descriptor in joined facts and checker
|
||||||
|
results; compare_reports rebuilds them from the blobs when SHAs differ.
|
||||||
|
- test_eq.S5 proves equivalence against the retained S1-S4 algorithms (compare_trees,
|
||||||
|
canonical digest, deepcopy builders, original normalization including violations, tokens and
|
||||||
|
non-array recent_events), that every one of 31 blob checkpoints is verified alone exactly as
|
||||||
|
inline trees, and the new static requirements (full snapshot transport, blob write, gzip
|
||||||
|
roundtrip, overwrite refusal, stream following).
|
||||||
|
|
||||||
|
### Snapshot signal rule corrected (EQ_S5_SCALE_PLAN r03)
|
||||||
|
|
||||||
|
The S3a rule "exactly one snapshot_published/state_updated pair per measured minute" was a
|
||||||
|
harness assumption. Paused submits publish once each after their command events
|
||||||
|
(simulation_runtime.gd:486-493, :508-512, :5768-5793), besides the tick-end publish (:1745-1749)
|
||||||
|
and a successful restore (:1473); R minute 648 had 50 commands and 51 pairs (the r2 check
|
||||||
|
failure on the old rule is retained). The probe now stores, per signal, the domain_event
|
||||||
|
counter and _next_command_id at emission (read only). check_publishes orders signals and
|
||||||
|
events together and requires: complete pairs with equal counters; a command publish after
|
||||||
|
exactly one submit whose command is in its trailing batch; no submit before any other publish
|
||||||
|
and none left unpublished; every command event covered; and the remaining tick/restore
|
||||||
|
publishes equal to the operations performed (one per measured minute; E3 successful
|
||||||
|
restores; E4 1/1/1/1/1 with build only when applied; E5 2 or 3). Missing, extra and reordered
|
||||||
|
pairs, including a missing publish between adjacent commands, fail. Actual counts stay raw and
|
||||||
|
signal_order is compared exactly across versions.
|
||||||
|
|
||||||
|
### Python speed, measured on retained R raw (r3, scratchpad diagnostic, not formal)
|
||||||
|
|
||||||
|
One R phase checked in the phase_evidence order (lifecycle, observations, check_report,
|
||||||
|
join), with full stdout/stderr and Python's own exit kept for every run:
|
||||||
|
1270.3 s (first S5 code, with concurrent profiling) -> 552.9 s (memo of identical inputs,
|
||||||
|
copy-free builders) -> 301.8 s (labelled digest, parse-free restore, copy-free diffs) ->
|
||||||
|
259.7 s (facts derived at first parse) -> 58.3 s (cyclic GC off inside memo_scope; before
|
||||||
|
the blob validation fix, so not used as a result). With full blob validation, r3 + r4 checked
|
||||||
|
in one process took 136.5 + 132.0 s and their comparison 4.2 s with 0 differences; with the
|
||||||
|
validate_tree rewrite (same checks, messages and order; 4000-case differential test against
|
||||||
|
the S1 version) four phase checks in parallel processes took 131 s wall (R 111.9 / 112.1 s,
|
||||||
|
O 5.9 / 6.2 s), all ok. verify_eq therefore runs the four phase checks in parallel worker
|
||||||
|
processes of the same verification and does the same-role comparisons in the parent with the
|
||||||
|
workers' validated SHAs and normalization facts; the result equals the sequential mode, which
|
||||||
|
remains the fallback and the mode used by unit tests. The unchanged 300 s native-verify
|
||||||
|
limit is kept; the Runner configuration is not changed.
|
||||||
|
|
||||||
|
- memo_scope: inside one verification call, identical check inputs (SHA of the exact JSON)
|
||||||
|
are checked once; check_lifecycle and check_report shared E3/E45/measurement work. It
|
||||||
|
also turns cyclic GC off for its duration; typed trees are acyclic lists, results do not
|
||||||
|
depend on GC, and GC is restored on exit.
|
||||||
|
- The joined harness digest is labelled `normalized-sha256:` (SHA of the exact normalized
|
||||||
|
JSON, computed by splicing the normalized events into the blob text). compare_reports
|
||||||
|
compares labelled digests exactly and, only when two differ, compares the canonical
|
||||||
|
(dictionary-order-insensitive) digests; equal canonical digests are reported as
|
||||||
|
dictionary-order-only, otherwise the difference is recorded. checker.normalized_digest
|
||||||
|
remains the canonical digest (same values as S1).
|
||||||
|
- Normalization facts, counters and next_command_id are derived when a blob tree is first
|
||||||
|
parsed and memoized by SHA; restore uses the memoized skeleton, so join and comparison do
|
||||||
|
not parse again. compare_trees records nodes shared with the immutable trees instead of
|
||||||
|
deep copies; keys use inline text.
|
||||||
|
|
||||||
|
### Self-contained bundle for the sandboxed native-verify (repair 11)
|
||||||
|
|
||||||
|
The formal p28-02-eq-native-verify runs under the Runner seatbelt, which denies reading data
|
||||||
|
under the home directory except the validation checkout and the task runtime (the bundle is in
|
||||||
|
the runtime's BUILD_OUTPUT_DIR). The first S5 validation failed on the fixture for this reason.
|
||||||
|
run_eq now copies the fixture to inputs/fixture/ and the read-only manifest with its nine
|
||||||
|
destinations to inputs/readonly/ before any phase, and checks the copies against the admission
|
||||||
|
pins (bundle_inputs); the seal covers them. verify_eq passes those copies to actual_pins
|
||||||
|
(bundled_inputs applies collector.inputs' rule: each manifest destination lies in the original
|
||||||
|
read-only directory and its copy has the recorded bytes and SHA). The engine (/Applications) and
|
||||||
|
the machine model stay read live. Everything else verify_eq recomputes from the bundle and the
|
||||||
|
checkout as before.
|
||||||
|
|
||||||
|
## S6 implementation (repair 12; EQ_S6_AFTER_VERSION_PLAN)
|
||||||
|
|
||||||
|
Implemented by Claude Opus 5.5 in the Desktop control session (user delegation). Repair for
|
||||||
|
the independent review of S a46418d (changes_requested: EQ5). All earlier text is retained.
|
||||||
|
|
||||||
|
### The after version through the frozen harness (EQ5, high finding)
|
||||||
|
|
||||||
|
- `BEFORE_SOURCE_MAP.json`: the registered base product source map, 1407 rows of
|
||||||
|
`{bytes, sha256}`, written from `collector.source_map` of the S_eq checkout. Its meaning is
|
||||||
|
fixed by the existing `SOURCE_SHA`; `compare_versions.before_source_map()` rejects duplicate
|
||||||
|
keys, row shape errors, a different row count and any digest other than `SOURCE_SHA`.
|
||||||
|
- `compare_versions.admit_source(source, registered)` is the single admission rule of both
|
||||||
|
versions. `registered` must be a sorted duplicate-free list. It runs
|
||||||
|
`check_source_closure(before_source_map(), source, registered)` and returns the closure with
|
||||||
|
`version` (before when `registered` is empty, otherwise after) and `after_sha256`. The before
|
||||||
|
version is exactly the old `SOURCE_SHA` requirement; the after version needs the changed set
|
||||||
|
equal to `registered` (a subset of `OPT_PATHS`), with no added or missing source.
|
||||||
|
- `run_eq`: `--opt-changed PATH` (repeatable, sorted by main, duplicates rejected by the rule).
|
||||||
|
`actual_pins(..., registered)` records `registered_changes` and `source_closure`; the
|
||||||
|
admission records `version` and `measured_source` (`verify_eq.MEASURED`: before
|
||||||
|
`S_eq-native-not-Q`, after `S_opt-native-not-Q`, OPT_CONTRACT_T1 §5); `pins_after` is
|
||||||
|
recomputed with the same registration. The EQ file pins (`worker`) and `frozen_commit`
|
||||||
|
include `BEFORE_SOURCE_MAP.json` (`verify_eq.DATA_NAMES`).
|
||||||
|
- `verify_eq.recompute` replaces the `SOURCE_SHA` line with `admit_source` on the recorded
|
||||||
|
map and registration and requires the recorded closure, version and label exactly;
|
||||||
|
`verify` passes the recorded registration to `actual_pins` on the checkout. The result
|
||||||
|
carries `measured_source`, `version` and `registered_changes`.
|
||||||
|
- `verify_eq.py --compare-versions --before <bundle> --after <bundle>` (`compare_bundles`):
|
||||||
|
the bundle-level entry of the two-version comparator (SPEC §2, §3.2; OPT_CONTRACT_T1 §2-§4).
|
||||||
|
Both seals, passed executions, admission copies, versions, closures and labels are checked
|
||||||
|
again; every non-product pin (`dependencies`, `frozen`, `worker`, `fixture`, `engine`,
|
||||||
|
`engine_version`, `readonly`, `original_manifest`, `machine`, `platform`) must be equal; the
|
||||||
|
sealed joined reports of R-A and O-A are compared by `compare_reports` (differences,
|
||||||
|
exclusions, digest modes and violations all returned); the stored checkers' existing-defect
|
||||||
|
scenarios of both versions are listed and `after_all_e_pass` reports whether the after
|
||||||
|
version has none (the OPT acceptance judges it). Each bundle's raw recomputation, same-role
|
||||||
|
determinism and checkout pins are proven by that version's own native-verify.
|
||||||
|
|
||||||
|
### Low findings
|
||||||
|
|
||||||
|
- `eq_probe.gd` E5 detail: `latest_digest_dirty_before` is `runtime.get("_latest_digest_dirty")`
|
||||||
|
read just before the operation (null if a version has no such field), replacing the constant
|
||||||
|
`digest_materialized_before: true`. The checker accepts only `false` or `null`.
|
||||||
|
- `run_eq.bundled_inputs`: the bundled manifest must have `ROOT_MANIFEST_SHA` (the value
|
||||||
|
`collector.inputs` fixes; a unit test checks the literal in the collector source), and each
|
||||||
|
destination string must be absolute and already normalized (`os.path.normpath`) inside the
|
||||||
|
read-only directory. This is textual because the sandboxed verification cannot read the
|
||||||
|
originals; the run checks the resolved originals through `collector.inputs`.
|
||||||
|
- `verify_eq.seal`/`check_seal`: bundle schema `p28-02-eq-bundle-v2` with `directories`, the
|
||||||
|
sorted list of every directory (empty `<phase>/startup-profile` included). A file-only copy
|
||||||
|
of a sealed bundle now fails the seal check itself.
|
||||||
|
|
||||||
|
### Tests and evidence kinds
|
||||||
|
|
||||||
|
- 17 engine-free tests in `S6SourceClosure`, `S6Admission`, `S6Bundles` and `S6SealAndProbe`.
|
||||||
|
`S6Bundles` builds one sealed before and one sealed after synthetic bundle per class with
|
||||||
|
the real parallel recompute, compares them unmocked, and tampers APFS clones (`cp -c`) only;
|
||||||
|
the real state difference is a changed K value in the after R-A report. The main test in
|
||||||
|
`S6Admission` mocks `actual_pins` only to read the registration passed by main.
|
||||||
|
- Diagnostic, not formal: `EQ_S6_AFTER_ADMISSION_DIAG_R01` (Root control folder) ran the real
|
||||||
|
`run_eq.py --check` on a throwaway after-version checkout; the admitted and rejected cases
|
||||||
|
and their exits are in its SUMMARY.json.
|
||||||
|
- The first S6 bundle tests copied 709 MB synthetic bundles with `shutil.copytree` and ran
|
||||||
|
out of disk space during a class-targeted run (not retained); they now use clones.
|
||||||
|
- Full local run UNIT_OUTPUT_S6_ATTEMPT_01: 179 tests OK in 207.351 s, exit 0.
|
||||||
|
- Local run under the Runner validation seatbelt profile, UNIT_OUTPUT_S6_SEATBELT_01: 179 tests OK in 206.326 s, Python exit 0, outer 207.695 s.
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
# P28-02-EQ progress — S6 (repair 12, Claude Opus 5.5 Desktop implementation)
|
||||||
|
|
||||||
|
Implementer: Claude Opus 5.5 in the Desktop control session, by the user's delegation
|
||||||
|
("Codexの使用量上限いきそうなので、作業をひきとって"; Root relayed 「実装担当含めOpusに委任」).
|
||||||
|
The registered contract keeps worker codex; no Codex/Astra run was started for this stage.
|
||||||
|
Submission goes through the normal Runner submit, which makes the commit. 正式受入は保留、原本加算0。
|
||||||
|
|
||||||
|
- S a46418d064ebf8c8e03043bae50c29ac174b5472 (repair 11): its exact-S native passed
|
||||||
|
(native-a46418d-r01, 7 phases, cleanup errors empty, sealed), and its formal validation
|
||||||
|
cb059f305dd34e7aa811b40ad1cfb6f2 passed both checks (unit 162 tests OK; native-verify
|
||||||
|
exit 0, verified). The fresh independent Opus review (session
|
||||||
|
local_179020e9-e4c8-45ab-aaa0-be27aaa3f3d6, DESKTOP_RESULT.json
|
||||||
|
c08eedb2ff81fd308e0771aeb4330076389561255a2bb964567be28f478592cd) returned
|
||||||
|
changes_requested: EQ1-EQ4 and EQ6 met, EQ5 not met. The normal intake recorded
|
||||||
|
review_failed and repair_pending; the normal repair made repairs 12. All of it is retained.
|
||||||
|
- The high finding is accepted: the source closure was only unit-tested. run_eq and verify_eq
|
||||||
|
required the before SOURCE_SHA, so the frozen EQ could not admit an OPT S that changes only
|
||||||
|
registered allowed files (OPT_CONTRACT_T1 §2 and §4). S6 (EQ_S6_AFTER_VERSION_PLAN):
|
||||||
|
- BEFORE_SOURCE_MAP.json holds the registered base product source map (1407 rows); its
|
||||||
|
digest must equal the existing SOURCE_SHA on every read. compare_versions.admit_source
|
||||||
|
admits the before version (no registration, no difference) or an after version (the
|
||||||
|
changed set equals the sorted registered OPT files; no added or missing source).
|
||||||
|
- run_eq --opt-changed PATH (repeatable) registers the OPT files; actual_pins records
|
||||||
|
registered_changes and source_closure, the admission records version and
|
||||||
|
measured_source (before S_eq-native-not-Q, after S_opt-native-not-Q; never Q).
|
||||||
|
verify_eq re-runs the closure with the recorded registration and requires the recorded
|
||||||
|
closure, version and label; actual_pins on the checkout gets the same registration.
|
||||||
|
- verify_eq --compare-versions --before <bundle> --after <bundle> is the bundle-level entry
|
||||||
|
of the comparator (SPEC §2): both seals, versions and closures again, every non-product
|
||||||
|
pin equal, compare_reports on the sealed A-phase reports of R and O, existing defects of
|
||||||
|
both versions listed (after_all_e_pass for the OPT judgment).
|
||||||
|
- The three low findings are fixed: the probe records the actual _latest_digest_dirty before
|
||||||
|
each E5 operation (false or null accepted, true rejected); bundled_inputs requires the
|
||||||
|
collector's fixed manifest SHA and normalized absolute destinations inside the read-only
|
||||||
|
directory; the seal (bundle schema v2) records every directory, empty ones included.
|
||||||
|
- Evidence kinds are kept apart:
|
||||||
|
- Unit, engine-free, real code paths: admit_source; run_eq.actual_pins with a synthetic map
|
||||||
|
(only collector.source_map, inputs, host SHAs of the synthetic fixture/engine and the
|
||||||
|
machine query are patched); recompute of a real synthetic after bundle; compare_bundles
|
||||||
|
unmocked on a real before and a real after synthetic bundle (positive, a real state
|
||||||
|
difference, pin drift, closure and label tampering, seal tampering, swapped, same bundle).
|
||||||
|
One unit test (S6Admission main) mocks actual_pins only to see the registration main
|
||||||
|
passes; it is not counted as admission evidence.
|
||||||
|
- Diagnostic, not formal (EQ_S6_AFTER_ADMISSION_DIAG_R01 in the Root control folder): the
|
||||||
|
real run_eq.py --check, unmocked, on a throwaway after-version checkout (an APFS clone of
|
||||||
|
this working tree as its own temporary git repository, one allowed OPT file changed and
|
||||||
|
committed). Before version and the registered after version were admitted; no
|
||||||
|
registration, a wrong registration, a registration without change, an added source and a
|
||||||
|
non-OPT change were rejected with the source closure error. No engine was started.
|
||||||
|
- Unit evidence (engine-free `python3 -B test_eq.py`; full raw outputs with SHA files):
|
||||||
|
- Class-targeted runs during development were displayed through tail and are not claimed
|
||||||
|
as retained raw results. One of them ran out of disk space (the first S6 bundle tests
|
||||||
|
copied 709 MB synthetic bundles); the tests now clone with cp -c and build two bundles
|
||||||
|
per class.
|
||||||
|
- UNIT_OUTPUT_S6_ATTEMPT_01 (final, all changes included): 179 tests OK in 207.351 s,
|
||||||
|
Python exit 0; same bytes as UNIT_OUTPUT.txt,
|
||||||
|
SHA-256 9dd93de5fd3b66791d6902d51a055caa2c3dd559de6c42019ebb1ab147b2af11.
|
||||||
|
- UNIT_OUTPUT_S6_SEATBELT_01: the same suite under the Runner validation seatbelt profile,
|
||||||
|
run locally (see its exit line in IMPLEMENTATION.md). Local runs are not formal validation.
|
||||||
|
- Test bodies changed for S6, each recorded here: the E5 fixture detail carries
|
||||||
|
latest_digest_dirty_before false instead of digest_materialized_before true, and the
|
||||||
|
materialization test rejects true; s4_bundle_fixture takes an optional registration and
|
||||||
|
pin overrides and records commit, version, measured_source, registered_changes,
|
||||||
|
source_closure and the non-product pins; the S4 probe-admission mock returns a before
|
||||||
|
source_closure; the stored-result test records registered_changes [] in its admission and
|
||||||
|
mock; the bundled-inputs test holds its synthetic manifest to its own SHA in place of the
|
||||||
|
collector's and expects the manifest error before the escape error. All other earlier test
|
||||||
|
bodies and raw outputs are unchanged; 17 S6 tests were added.
|
||||||
|
|
||||||
|
Next: Runner submit → exact-S native 7 phases (before version, no --opt-changed) → bundle →
|
||||||
|
p28-02-eq-unit and p28-02-eq-native-verify → fresh independent Opus review of all 6
|
||||||
|
conditions → normal qualification, approval, integration and final → OPT/whole-unit.
|
||||||
|
23/88、4/30は不変。
|
||||||
|
|
||||||
|
## Retained S5 progress (unchanged historical text)
|
||||||
|
|
||||||
|
Implementer: Claude Opus 5.5 in the Desktop control session, by the user's delegation
|
||||||
|
("Codexの使用量上限いきそうなので、作業をひきとって"; Root relayed 「実装担当含めOpusに委任」).
|
||||||
|
The registered contract keeps worker codex; no Codex/Astra run was started for this stage.
|
||||||
|
Submission goes through the normal Runner submit, which makes the commit. 正式受入は保留、原本加算0。
|
||||||
|
|
||||||
|
- Exact-S native of 6f75c9a failed in R-A (user://evidence mkdir) and stays a failure; the
|
||||||
|
owner intake recorded it and the normal repair made repairs 10.
|
||||||
|
- Fixed the harness defects that only the real engine showed (evidence mkdir under the guard,
|
||||||
|
typed script metadata, manifest/guard JSON floats, signed instance IDs, large E4 returns) and
|
||||||
|
recorded the product's event-stream replacement on restore as an existing defect while the
|
||||||
|
probe keeps capturing every event (EQ_S5_SCALE_PLAN r02 §3-4).
|
||||||
|
- Content-addressed gzip blobs and exact Python fast paths keep R and O at full E1-E5 scope
|
||||||
|
(39 scenarios each) within the unchanged 1800 s phase and 300 s validation limits.
|
||||||
|
- Scratchpad diagnostics with the same guard and HOME redirected (not formal evidence):
|
||||||
|
see the S5 section of IMPLEMENTATION.md for measured times and sizes.
|
||||||
|
- Unit evidence (engine-free `python3 -B test_eq.py`; full raw outputs with SHA files):
|
||||||
|
- UNIT_OUTPUT_S5_ATTEMPT_01: 146 tests, 9 failures and 5 errors (the S5 evidence format
|
||||||
|
against old fixtures and one old static snippet list). Kept as a failure.
|
||||||
|
- UNIT_OUTPUT_S5_ATTEMPT_02: 156 tests OK in 211.416 s (run beside an R engine run).
|
||||||
|
- UNIT_OUTPUT_S5_ATTEMPT_03: 160 tests OK in 130.451 s, Python exit 0 (after the parallel
|
||||||
|
verifier fix). An intermediate full run failed once (160 tests, 1 error: closed worker
|
||||||
|
stdin); only its single-test rerun output was kept, and the fix is in phase_results.
|
||||||
|
- Class-targeted runs during development were displayed through tail and are not claimed
|
||||||
|
as retained raw results.
|
||||||
|
- UNIT_OUTPUT_S5_ATTEMPT_04: 151 tests, 3 errors, Python exit 1: the new differential test
|
||||||
|
imported random, outside the closed EQ import list, so the driver's closure check rejected
|
||||||
|
test_eq.py. The test now uses its own deterministic generator; the list is unchanged.
|
||||||
|
- UNIT_OUTPUT_S5_ATTEMPT_05 (final, all changes included): 161 tests OK in 121.627 s,
|
||||||
|
Python exit 0, outer 121.748 s; same bytes as UNIT_OUTPUT.txt,
|
||||||
|
SHA-256 7372a382cc2f3c090013874d8f28f17cad4cb1b965ad86c86de7a21fc2d851a8.
|
||||||
|
- Test bodies changed for the S5 format, each recorded here: E3 evidence and E4 restore/load
|
||||||
|
details carry event_stream; the S4 phase fixture lifecycle is S5; the S2 static list names
|
||||||
|
transport(snapshot_value) instead of the removed diff-chain snippet; s2_report signals carry
|
||||||
|
event_counter/command_counter and its runtime next_command_id; the E4/E5 fixture emits the
|
||||||
|
product's publishes; the accepted-restore E3 test adds the restore publish; the E4 load
|
||||||
|
fixture event uses a domain_event ID. All other earlier test bodies and raw outputs are
|
||||||
|
unchanged; 15 S5 tests were added.
|
||||||
|
|
||||||
|
- Repair 11 (after the first S5 submission b2dbda8c956643a2a972e8bcf7416038a3f70b2c):
|
||||||
|
- Its exact-S native passed: driver exit 0, execution passed, cleanup errors empty,
|
||||||
|
R-A/R-B and O-A/O-B compared with 0 differences, sealed (native-b2dbda8-r01, 5954 files).
|
||||||
|
This exercised the whole S5 driver path on real data.
|
||||||
|
- Its formal validation (report c02eda130f6c49e6bcf2ec4a7c1e8f69): p28-02-eq-unit passed
|
||||||
|
(161 tests); p28-02-eq-native-verify failed, exit 1, 'Operation not permitted' on the
|
||||||
|
fixture. The Runner validation seatbelt cannot read data under the home directory outside
|
||||||
|
the checkout and the task runtime, and verify_eq read the original fixture and read-only
|
||||||
|
inputs. Kept as a failure; the b2dbda8 bundle is retained but not reused.
|
||||||
|
- Fix: run_eq seals copies of the fixture and the nine read-only inputs inside the bundle
|
||||||
|
after checking them against the admission pins; verify_eq recomputes the pins from the
|
||||||
|
checkout and those sealed copies by the same rules (bundled_inputs). No permission,
|
||||||
|
policy, timeout or Runner configuration change.
|
||||||
|
- Final unit evidence for repair 11: UNIT_OUTPUT_S5_ATTEMPT_06 (162 tests OK in 120.853 s,
|
||||||
|
Python exit 0, outer 120.983 s; same bytes as UNIT_OUTPUT.txt, SHA-256
|
||||||
|
846ab3b45705f269a81181c818dc5e3b8bc0057863794d59e8d641fe5a4e4c32) and
|
||||||
|
UNIT_OUTPUT_S5_SEATBELT_06 (the same suite under the Runner validation seatbelt profile,
|
||||||
|
run locally: 162 tests OK in 120.930 s, Python exit 0). Local runs are not formal
|
||||||
|
validation.
|
||||||
|
|
||||||
|
Next: Runner submit → exact-S native 7 phases → bundle → p28-02-eq-unit and
|
||||||
|
p28-02-eq-native-verify → fresh independent Opus review of all 6 conditions → normal
|
||||||
|
qualification, approval, integration and final → OPT/whole-unit. 23/88、4/30は不変。
|
||||||
|
|
||||||
|
## Retained S4 r03 progress (unchanged historical text)
|
||||||
|
|
||||||
|
S4 の保持済み実装に対する残作業を完了し、局所unitの証拠として提出する。
|
||||||
|
正式受入は保留、原本加算0。
|
||||||
|
以下の旧段階の記録は履歴であり、現在の提出状態を表すものではない。
|
||||||
|
|
||||||
|
- run_eq.main と verify_eq.recompute の check_probe 戻り値を検査し、
|
||||||
|
ok:false を全 errors 付きで拒否する。driver の両モードで共通。
|
||||||
|
両ファイル内の他の checker 呼出しも戻り値契約を確認済み。
|
||||||
|
- 既存134件(元119件を含む)の試験本体を変更せず、12件を追加。
|
||||||
|
driver/verifier の false/true、owned start/end/exit/diagnostic、profile、
|
||||||
|
nine destinations、join 後の決定性不一致、保存済み結果・sidecar・
|
||||||
|
raw/joined 入替えの拒否を対象とする。engine は全て不使用。
|
||||||
|
- 対象クラス attempt 07: 8件中1件失敗。追加試験の模擬不一致が自己比較にも
|
||||||
|
作用したため、試験だけを修正。失敗の raw/exit/SHA を保存。
|
||||||
|
- attempt 08: 9件、86.276秒、OK、exit 0。
|
||||||
|
- attempt 09: 保存済み結果の結合試験3件、0.025秒、OK、exit 0。
|
||||||
|
- 最後の全件試験 attempt 10: `python3 -B test_eq.py`、146件、
|
||||||
|
293.277秒、OK、exit 0(外側の所要時間293.5742515秒)。
|
||||||
|
生出力は UNIT_OUTPUT_S4_ATTEMPT_10.txt と UNIT_OUTPUT.txt に保存。
|
||||||
|
SHA-256: ff6fc0065772434f9ca35a1267e24d199057e339869a868942a41829327503bb。
|
||||||
|
開始は01:05:07 UTCまで、期限まで300秒以上を確保した。全件実行は今回1回。
|
||||||
|
- S4_SUPPLEMENTARY.json は Root の r09 JSON を直接読み、内容を変えず
|
||||||
|
actual_commander_context に保存。追加 r03 と判断も提供ファイルから読む。
|
||||||
|
5資料、過去8計画、API notes の SHA を照合済み。
|
||||||
|
134件の元ファイル再構成SHAは cb742b252dbc278113b3c11c2431adac35b0c2e201a762a8ea1ac926e4af414b。
|
||||||
|
- IMPLEMENTATION.md 冒頭に、全 S4 must、S4 binding、r01/r02/r03 の
|
||||||
|
要件・コード・試験の対応表を記録した。旧文書と全失敗履歴は保持。
|
||||||
|
- 外部 retained copy の読取りは PermissionError となったため、権限を変えず、
|
||||||
|
W 内の保持prefixと元mainから元ファイルSHAを再現して確認した。
|
||||||
|
読取り用heredocも実行前に失敗し、その後は python -c を使用した。
|
||||||
|
|
||||||
|
過去のS4 attempt 01/02/04と補足生成assertは失敗のまま保持。
|
||||||
|
attempt 05 の132件PASSはその版だけの事実。遅着した attempt 06 は
|
||||||
|
134件/206.531秒/OKだが、provider exit124・完了通知/exit受領なし・未提出の
|
||||||
|
事実は変更しない。今回の全件結果とは区別する。
|
||||||
|
|
||||||
|
提出後は Root の正確な S の native 7 phase → bundle 配置 →
|
||||||
|
p28-02-eq-unit と p28-02-eq-native-verify → fresh 独立 Opus の全6条件レビュー →
|
||||||
|
通常の資格確認・承認・統合・final → OPT/whole-unit。23/88、4/30は不変。
|
||||||
|
worker は engine、正式validation、Runner、git書込み、他agent、製品変更、
|
||||||
|
全回帰を実行していない。局所unitをnative、受入済みS、Q測定、製品PASSとは呼ばない。
|
||||||
|
|
||||||
|
## Retained prior progress (unchanged)
|
||||||
|
|
||||||
|
# P28-02-EQ progress — current S3b (repair 7)
|
||||||
|
|
||||||
|
stage S3b complete (not a failure; next is S4)
|
||||||
|
|
||||||
|
段階 S3b 完了(失敗ではない。次は S4)。指定に従い正式 status は blocked。
|
||||||
|
S_eq は未提出。全6受入条件の正式判定は保留、原本加算0。
|
||||||
|
|
||||||
|
- E4: 両 role に共通の5経路を実装。E4-1 はその PID の
|
||||||
|
definition_registry.get_facility_ids() を使い、登録順/文字順/件数、
|
||||||
|
公開 bounds、全候補の preview、最初の配置可能候補、submit/処理結果を保持。
|
||||||
|
空 registry、誤った列挙元、欠落した試行、false NA は拒否する。
|
||||||
|
- E5: 4対象×dict/array×2方向の16組。handler 外で操作し、
|
||||||
|
完全な前後 S/K/C、返却値、digest、全イベント、別区間の signal を保持。
|
||||||
|
aliasing は changed path/value 付きの existing-defect として出力し、PASS にしない。
|
||||||
|
- checker: 39 scenario(既存E3の18 + E4の5 + E5の16)の結合、
|
||||||
|
区間連続、全イベント、restore 0/load 1、X(P,event)、所有権を検査。
|
||||||
|
caller の PASS や、publish 時点だけによる cache_stale 判定は拒否する。
|
||||||
|
- 比較器の局所修正は、追加試験の失敗で確認した2点だけ:
|
||||||
|
E5外から内の直後の cached digest 不整合を既存不具合として保持すること、
|
||||||
|
返却値の typed facts にも辞書順だけの fallback を適用すること。
|
||||||
|
- 既存91件の試験ソースを元の構成に再結合した SHA は
|
||||||
|
f81185e506954964bb96b31a569233202a1a7e7c78b2121aba6ab3f2e24d7e1e と一致。
|
||||||
|
E3本体、過去の進捗と全試験履歴は保持した。
|
||||||
|
- 最終局所 unit: python3 -B test_eq.py、119 tests、OK、終了コード0。
|
||||||
|
既存91 + S3b追加28。Godot/native・正式validationは未実行。
|
||||||
|
生出力は UNIT_OUTPUT_S3B_ATTEMPT_09.txt と UNIT_OUTPUT.txt、対応SHAを保存。
|
||||||
|
- S3b試行履歴(すべて生出力/SHAを保存):
|
||||||
|
01=91件PASS、02=追加試験の構文エラー、
|
||||||
|
03=114件中digest既存不具合の比較試験1件失敗、
|
||||||
|
04/05=114件PASS、06=118件PASS、
|
||||||
|
07=辞書順fallbackの単独試験1件失敗、
|
||||||
|
08=119件中そのfixtureのcheckpoint欠落で1件失敗、
|
||||||
|
09=119件PASS。失敗を成功で上書きしていない。
|
||||||
|
- S3B_SUPPLEMENTARY.json の単一 actual_commander_context key に
|
||||||
|
両S3b計画、両S3計画、両段階計画、今回のRUN判断全文を保持。
|
||||||
|
計画6件のSHA、SPEC/TASK、references/registration、読取専用補足、
|
||||||
|
S2/S3a補足、既存出力のSHAを照合した。
|
||||||
|
|
||||||
|
次はS4(driver・verify・bundleと提出)。IMPLEMENTATION.md末尾に、
|
||||||
|
lifecycle.e45、e45-NN、raw/joined facts、sidecar、既存不具合の結合を追記。
|
||||||
|
その後にRootの凍結Sで7 native phase、両validation、独立Opusレビュー、
|
||||||
|
通常の資格確認・承認・統合・final。S3bのunit結果をnative/Qの結果とは呼ばない。
|
||||||
|
|
||||||
|
engine、Runner、git書込み、他agent、製品変更、全回帰は実行していない。
|
||||||
|
|
||||||
|
## Retained prior S3b-blocked/S3a/S2/S1 history (unchanged)
|
||||||
|
|
||||||
|
Final S3b unit SHA-256: 8360a2065b303099d5c546b3e4aecc0cc0ab0c2c1e5120b8034b6a1a64317030
|
||||||
|
|
||||||
|
# P28-02-EQ progress — S3b blocked before implementation
|
||||||
|
|
||||||
|
S3b is not complete. S_eq is not submitted. All six acceptance gates remain
|
||||||
|
pending; original credit remains 0. The retained S3a history follows unchanged.
|
||||||
|
|
||||||
|
## Specification/API mismatch affecting E4-1 coverage
|
||||||
|
|
||||||
|
EQ_S3B_STAGE_PLAN.txt E4-1 explicitly chooses the facility definition list from
|
||||||
|
`mvp_content_catalog`. The product's `scripts/data/mvp_content_catalog.gd:26-31`
|
||||||
|
DEFAULT_PATHS contains only guest_classes, species, staff_candidates and
|
||||||
|
unique_characters. Its get_ids(content_type) at :217-223 returns an empty list
|
||||||
|
for an absent content type. It supplies no facility definition enumeration.
|
||||||
|
|
||||||
|
Facility definitions instead belong to `definition_registry`:
|
||||||
|
`scripts/core/definition_registry.gd:64-75` exposes get_facility,
|
||||||
|
get_facility_ids and get_all_facilities. Runtime initializes this registry from
|
||||||
|
FacilityCatalog paths at `autoload/simulation_runtime.gd:446-447`, and the
|
||||||
|
public preview_build_facility at :7660-7668 looks up that registry.
|
||||||
|
|
||||||
|
Using an absent catalog type and reporting NA would not prove that no facility
|
||||||
|
is placeable. Replacing the explicitly fixed enumeration source with the
|
||||||
|
registry changes the candidates used by the required E4-1 acceptance scenario.
|
||||||
|
Per the instruction not to supplement missing specifications, this needs an
|
||||||
|
explicit correction of E4-1 to authorize the actual definition source. Proposed
|
||||||
|
correction: enumerate runtime.definition_registry.get_facility_ids() in textual
|
||||||
|
ID order, retaining the specified cell scan and public placement check. This is
|
||||||
|
a proposal only, not an implemented or approved change.
|
||||||
|
|
||||||
|
Only this progress note changed. No implementation or tests were changed or
|
||||||
|
removed. The supplied SHA values for IMPLEMENTATION.md, eq_probe.gd, check_eq.py,
|
||||||
|
compare_versions.py, test_eq.py and UNIT_OUTPUT.txt matched before this note.
|
||||||
|
The 91-test result below is retained S3a evidence, not a test execution in this
|
||||||
|
run. No new unit test, engine, Runner, git write, agent, or product operation ran.
|
||||||
|
The first progress-note write attempt failed before writing because zsh could
|
||||||
|
not create a heredoc temporary file; this note was then written by apply_patch.
|
||||||
|
S3b E4/E5 and then S4 remain pending. Do not label this run S3b complete.
|
||||||
|
|
||||||
|
## Retained S3a/S2/S1 progress (unchanged historical text)
|
||||||
|
|
||||||
|
# P28-02-EQ progress — current S3a
|
||||||
|
|
||||||
|
stage S3a complete (not a failure; next is S3b)
|
||||||
|
|
||||||
|
段階 S3a 完了(失敗ではない。次は S3b)。計画に従い正式 status は blocked。
|
||||||
|
S_eq は未提出。6受入条件はすべて保留、原本加算0。
|
||||||
|
|
||||||
|
- checker: phase key は正確に0..10。重複JSON keyも拒否。
|
||||||
|
30分各checkpointにsnapshot_published → state_updatedがちょうど1組必要。
|
||||||
|
測定開始の接続一覧にprobe自身の接続がなければ失敗。
|
||||||
|
- probe/checker: E3の3 API × 6分類を、適用/NAの18行で記録・検査。
|
||||||
|
B1の固定変異、実際のAPI戻り値、package全bytes/SHA、完全S/K/C、
|
||||||
|
全イベント差、scenario signal、区間の連続性、X(B, ev_fail)を保持。
|
||||||
|
codeを創作せず、期待外の製品結果は既存不具合候補として残す。
|
||||||
|
- S1 comparatorは元のSHAのまま。S1/S2の試験本体を保持
|
||||||
|
(指定checker修正に必要なS2 fixture/呼出しの変更のみ)。
|
||||||
|
- 最終局所試験: python3 -B test_eq.py、**91 tests, OK**、終了コード0。
|
||||||
|
S3a追加19件。Godot/native/正式validationは未実行。
|
||||||
|
- 生出力: UNIT_OUTPUT.txt と UNIT_OUTPUT_S3A_ATTEMPT_04.txt。
|
||||||
|
SHA-256: 02221ae41e5dd40ecdac0ec0d7ffc657f265d3194c3817583c2b88ad375f132b。
|
||||||
|
S3aの01/02/03/04試行(72/85/91/91件、全件PASS)を個別に保存。
|
||||||
|
既存のS1失敗出力・S2出力とSHAは変更せず保持。
|
||||||
|
- S3A_SUPPLEMENTARY.json: 単一actual_commander_context keyに
|
||||||
|
両S3計画・両段階計画・今回のRUN判断全文を保存。4計画のSHA一致。
|
||||||
|
- SPEC/TASK/references/registration、read-only補足3件、S2補足、
|
||||||
|
S1 comparatorと全ての既存UNIT_OUTPUT履歴のSHA一致を確認。
|
||||||
|
|
||||||
|
次はS3b(E4/E5)だけ。その後S4(driver/bundleと提出)、
|
||||||
|
Rootの7 native phase、両validation、新しい独立Opusレビュー、
|
||||||
|
通常の承認・統合・final。S4でlifecycle.measurement/e3/e3_b1と
|
||||||
|
private evidenceを結合する必要がある。詳細はIMPLEMENTATION.md末尾。
|
||||||
|
|
||||||
|
engine、Runner、git書込み、他agent、製品変更、全回帰は実行していない。
|
||||||
|
|
||||||
|
## Retained S2/S1 progress (unchanged historical text)
|
||||||
|
|
||||||
|
# P28-02-EQ progress — current S2
|
||||||
|
|
||||||
|
stage S2 complete (not a failure; next is S3)
|
||||||
|
|
||||||
|
段階 S2 完了(失敗ではない。次は S3)。計画 G4 に従い status は blocked。
|
||||||
|
正式提出はしていない。6受入条件はすべて保留、原本加算0。
|
||||||
|
|
||||||
|
- eq_probe.gd: DIAG の6段階起動、A1 encode/decode、A2 bytes roundtrip、
|
||||||
|
A3 全 B1/毎 tick 差分、31 checkpoint、B の全イベント記録、
|
||||||
|
guard 実値照合、private evidence、単一 report 行、close_requested を実装。
|
||||||
|
- check_eq.py: S1 schema の形式/矛盾、正規化の結合、raw 観測/起動証跡、
|
||||||
|
静的禁止の検査を追加。S3 の scenario は未着手。
|
||||||
|
- test_eq.py: S1 43件を保持し、S2 29件を追加。最終 **72 tests, OK**。
|
||||||
|
実行は python3 -B test_eq.py のみ。native・正式 validation は未実行。
|
||||||
|
- 生出力: UNIT_OUTPUT.txt。SHA-256: 9d323abda9bfffa02faf3a9d5cb56aa87e647017c991eb55b4807cf734386698。
|
||||||
|
S2 の3試行も UNIT_OUTPUT_S2_ATTEMPT_01/02/03.txt と SHA に保存。
|
||||||
|
S1 の最終出力は UNIT_OUTPUT_S1_FINAL.txt に保存。下記の失敗履歴と
|
||||||
|
UNIT_OUTPUT_ATTEMPT_01/02 は変更せず保持。
|
||||||
|
- S2_SUPPLEMENTARY.json: 単一 actual_commander_context key に両計画全文、
|
||||||
|
RUN判断全文、read-only 補足の path/SHA を保持。両計画の SHA 一致を確認。
|
||||||
|
|
||||||
|
次は S3 の E3/E4/E5 操作・結果・検査。その後 S4 の driver/bundle を実装し、
|
||||||
|
Root/Runner の7 native phase、両 validation、新しい独立レビュー、承認・統合・final。
|
||||||
|
engine、Runner、git 書込み、他 agent、製品変更、全回帰は実行していない。
|
||||||
|
|
||||||
|
## Retained S1 progress (unchanged historical text)
|
||||||
|
|
||||||
|
# P28-02-EQ progress
|
||||||
|
|
||||||
|
## Current stage
|
||||||
|
|
||||||
|
stage S1 complete (not a failure; next is S2)
|
||||||
|
|
||||||
|
段階 S1 完了(失敗ではない。次は S2)。正式な返却 status は計画 G4 に従い blocked。
|
||||||
|
S_eq の提出、受入の自己確定、原本への加算はしていない。
|
||||||
|
|
||||||
|
## Completed
|
||||||
|
|
||||||
|
- compare_versions.py: typed tree 比較、F1–F3 の4つの normalize/restore 関数、
|
||||||
|
全 checkpoint の差分再構成と tree SHA 再計算、report の S/latest/K/C/E2/
|
||||||
|
scenario 比較、source map 1407件の固定と許可された変更集合の完全一致検査。
|
||||||
|
- test_eq.py: 合成入力のみの43試験。型・挿入順・深い tree・可逆性・guard・
|
||||||
|
violations・sidecar 改ざん・全イベント・比較除外・source 閉包の正常/拒否を検査。
|
||||||
|
- IMPLEMENTATION.md: S2 向けの内部データ形式と、後続 checker/native の責任を記録。
|
||||||
|
|
||||||
|
## Unit evidence
|
||||||
|
|
||||||
|
実行: `python3 test_eq.py`(engine 不使用)。最新結果: **43 tests, OK**、終了コード0。
|
||||||
|
生出力: `UNIT_OUTPUT.txt`。
|
||||||
|
SHA-256: `cdca0cdd551ce76c6100c4dd90e04559551f9d88c054a19a2bc6a77e6572ae15`。
|
||||||
|
|
||||||
|
初回の36試験中1失敗(F3 sidecar の欠落を見逃した)は
|
||||||
|
`UNIT_OUTPUT_ATTEMPT_01.txt` と `.sha256` にそのまま保持した。
|
||||||
|
予約 token の復元漏れを拒否する修正後、41試験 PASS の中間出力も
|
||||||
|
`UNIT_OUTPUT_ATTEMPT_02.txt` と `.sha256` に保持した。
|
||||||
|
失敗を成功に書き換えていない。作成したファイルは削除していない。
|
||||||
|
|
||||||
|
## Remaining stages and gates
|
||||||
|
|
||||||
|
- S2: eq_probe.gd の6段階起動、Godot encode/decode と bytes roundtrip、31 checkpoint
|
||||||
|
と E2 の evidence 書出し、check_eq.py の形式/静的検査、対応 unit。
|
||||||
|
- S3: E3/E4/E5 専用区間、全ての場面/入力の実行と実値の保存、絶対条件の checker。
|
||||||
|
- S4: run_eq.py と verify_eq.py、全依存 SHA の固定、bundle 結合/拒否試験、正式提出。
|
||||||
|
- Root/Runner: 凍結した S_eq で7 native phase、両正式 validation、独立レビュー、
|
||||||
|
通常の承認・統合・final。6受入条件は全て保留。
|
||||||
|
|
||||||
|
engine、Runner、git 書込み、他 agent、製品変更、全回帰は実行していない。
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
9dd93de5fd3b66791d6902d51a055caa2c3dd559de6c42019ebb1ab147b2af11 UNIT_OUTPUT.txt
|
||||||
@@ -0,0 +1,185 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_blob_trees_get_the_same_full_validation_as_inline (__main__.S5.test_blob_trees_get_the_same_full_validation_as_inline) ... ok
|
||||||
|
test_bundled_inputs_replace_unreadable_originals (__main__.S5.test_bundled_inputs_replace_unreadable_originals) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_labelled_harness_digest_falls_back_to_dictionary_order_only (__main__.S5.test_labelled_harness_digest_falls_back_to_dictionary_order_only) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_memo_scope_same_results_and_restores_gc (__main__.S5.test_memo_scope_same_results_and_restores_gc) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_publish_pairs_bound_to_source_causes (__main__.S5.test_publish_pairs_bound_to_source_causes) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_validate_tree_equals_s1_reference_on_mutations (__main__.S5.test_validate_tree_equals_s1_reference_on_mutations) ... ok
|
||||||
|
test_bundled_destination_must_be_normalized_inside_readonly (__main__.S6Admission.test_bundled_destination_must_be_normalized_inside_readonly) ... ok
|
||||||
|
test_check_path_admits_registered_after_version (__main__.S6Admission.test_check_path_admits_registered_after_version) ... ok
|
||||||
|
test_check_path_rejects_unregistered_or_unchanged (__main__.S6Admission.test_check_path_rejects_unregistered_or_unchanged) ... ok
|
||||||
|
test_main_passes_sorted_registration_and_records_version (__main__.S6Admission.test_main_passes_sorted_registration_and_records_version) ... ok
|
||||||
|
test_root_manifest_pin_equals_collector_literal (__main__.S6Admission.test_root_manifest_pin_equals_collector_literal) ... ok
|
||||||
|
test_after_version_bundle_recomputes (__main__.S6Bundles.test_after_version_bundle_recomputes) ... ok
|
||||||
|
test_cross_version_comparison (__main__.S6Bundles.test_cross_version_comparison) ... ok
|
||||||
|
test_cross_version_pin_closure_and_seal_rejections (__main__.S6Bundles.test_cross_version_pin_closure_and_seal_rejections) ... ok
|
||||||
|
test_cross_version_real_difference_is_not_ok (__main__.S6Bundles.test_cross_version_real_difference_is_not_ok) ... ok
|
||||||
|
test_recompute_rejects_version_closure_and_label_changes (__main__.S6Bundles.test_recompute_rejects_version_closure_and_label_changes) ... ok
|
||||||
|
test_digest_state_values (__main__.S6SealAndProbe.test_digest_state_values) ... ok
|
||||||
|
test_probe_records_actual_digest_state (__main__.S6SealAndProbe.test_probe_records_actual_digest_state) ... ok
|
||||||
|
test_seal_records_every_directory (__main__.S6SealAndProbe.test_seal_records_every_directory) ... ok
|
||||||
|
test_admit_before_and_registered_after (__main__.S6SourceClosure.test_admit_before_and_registered_after) ... ok
|
||||||
|
test_before_map_is_the_frozen_source_map (__main__.S6SourceClosure.test_before_map_is_the_frozen_source_map) ... ok
|
||||||
|
test_before_map_tampering_rejected (__main__.S6SourceClosure.test_before_map_tampering_rejected) ... ok
|
||||||
|
test_unregistered_added_missing_and_malformed_registrations_rejected (__main__.S6SourceClosure.test_unregistered_added_missing_and_malformed_registrations_rejected) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 179 tests in 207.351s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
307486177b76602cbe68acae24c9560d501b3b866136d8e69802ec24c28e8be8 UNIT_OUTPUT_ATTEMPT_01.txt
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) (bad={'entries': [{'event_index': 0, 'path': [['key', [4, 'payload']], ['key', [4, 'duration_us']]], 'key': 'duration_us', 'original_node': [2, 7]}, {'event_index': 0, 'path': [['key', [4, 'payload']], ['key', [4, 'runtime_duration_us']]], 'key': 'runtime_duration_us', 'original_node': [2, 8]}], 'violations': [], 'profile_root': {'root': '/private/a', 'actual_user_data_dir': '/private/a', 'matches_guard': True}})
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 218, in test_sidecar_missing_duplicate_and_forged_paths
|
||||||
|
eq.restore_events(n, bad, profile())
|
||||||
|
AssertionError: EvidenceError not raised
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 36 tests in 0.847s
|
||||||
|
|
||||||
|
FAILED (failures=1)
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
07144a7f1941162227f54fefd1961ed0f209e97282432723bbda534079582e4e UNIT_OUTPUT_ATTEMPT_02.txt
|
||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 41 tests in 1.382s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
cdca0cdd551ce76c6100c4dd90e04559551f9d88c054a19a2bc6a77e6572ae15 UNIT_OUTPUT_S1_FINAL.txt
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 43 tests in 1.432s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
25953dfc5f8bc3759ae66f6403b162100fb0217c4476f308616b8ab78a2cc67e UNIT_OUTPUT_S2_ATTEMPT_01.txt
|
||||||
+73
@@ -0,0 +1,73 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 68 tests in 4.042s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
e26c986dda41b83143723e4c1c5b2ff1051a36b9a947b319341a2239cc3188de UNIT_OUTPUT_S2_ATTEMPT_02.txt
|
||||||
+76
@@ -0,0 +1,76 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 71 tests in 4.371s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
9d323abda9bfffa02faf3a9d5cb56aa87e647017c991eb55b4807cf734386698 UNIT_OUTPUT_S2_ATTEMPT_03.txt
|
||||||
+77
@@ -0,0 +1,77 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 72 tests in 4.753s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
5cf84b792b5f87cd4183f41cf3a846962a53dc0aa33049c3c55f290356584641 UNIT_OUTPUT_S3A_ATTEMPT_01.txt
|
||||||
+77
@@ -0,0 +1,77 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 72 tests in 4.846s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
000152e51d23db3d4397583b3f4540f5ed0ae469010c993fa1d122fd51537431 UNIT_OUTPUT_S3A_ATTEMPT_02.txt
|
||||||
+90
@@ -0,0 +1,90 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 85 tests in 15.941s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
7c14e8ecf4540e412467408cad267d53358940c86f87a0c8e519b305153f3cb8 UNIT_OUTPUT_S3A_ATTEMPT_03.txt
|
||||||
+96
@@ -0,0 +1,96 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 91 tests in 18.225s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
02221ae41e5dd40ecdac0ec0d7ffc657f265d3194c3817583c2b88ad375f132b UNIT_OUTPUT_S3A_ATTEMPT_04.txt
|
||||||
+96
@@ -0,0 +1,96 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 91 tests in 18.329s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
c89f4f1ca1ea9b985079cd236ffff4193fa5c76d9bfa28fa65ac08cfc93b569c UNIT_OUTPUT_S3B_ATTEMPT_01.txt
|
||||||
+96
@@ -0,0 +1,96 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 91 tests in 18.303s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
7bd19a6a3c84385f754261d51779f05b6e39c116459086d5aad3a83afa7225c0 UNIT_OUTPUT_S3B_ATTEMPT_02.txt
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1108
|
||||||
|
self.reject(lambda r, e, p: e[3]['detail'].update(input=transport(snapshot()))))
|
||||||
|
^
|
||||||
|
SyntaxError: unmatched ')'
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
0872061bbc2c1403d2cd04877b8456f3fead35236be008b1a07f02ae5d85b11a UNIT_OUTPUT_S3B_ATTEMPT_03.txt
|
||||||
+127
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
|||||||
|
63204c3415c9b1719fa6aa596b714077a57f530896f979d12b89a15eb2d827e9 UNIT_OUTPUT_S3B_ATTEMPT_04.txt
|
||||||
+119
@@ -0,0 +1,119 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 114 tests in 26.408s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
bfcb263bf6d7f284fb2b20ee229d96b7c4a9bd7cd5e7b513df1d3ea32580ed6e UNIT_OUTPUT_S3B_ATTEMPT_05.txt
|
||||||
+119
@@ -0,0 +1,119 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 114 tests in 26.528s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
7d9bf9c602a93aca06d03eb06025beeea35603d453e293c07e7a6f81ca9ca000 UNIT_OUTPUT_S3B_ATTEMPT_06.txt
|
||||||
+123
@@ -0,0 +1,123 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 118 tests in 31.744s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
f7c7c045ea98a366810b7c309fc1a87a77ccc5d8e823750eebaa742c9529e2ca UNIT_OUTPUT_S3B_ATTEMPT_07.txt
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b) ... FAIL
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_ownership_fact_dictionary_order_fallback (__main__.S3b)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1233, in test_ownership_fact_dictionary_order_fallback
|
||||||
|
self.assertTrue(result['ok'], result['differences'])
|
||||||
|
AssertionError: False is not true : [{'path': ['scenarios', 0, 'result'], 'a': {'facts': {'held_before': [27, [[[4, 'a'], [2, 1]], [[4, 'b'], [2, 2]]], None]}}, 'b': {'facts': {'held_before': [27, [[[4, 'b'], [2, 2]], [[4, 'a'], [2, 1]]], None]}}}]
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 1 test in 0.036s
|
||||||
|
|
||||||
|
FAILED (failures=1)
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
19c3f115d6a73bf91413877878f5d5f9d78a3e253dae3ddba7dfec9b5d46eaba UNIT_OUTPUT_S3B_ATTEMPT_08.txt
|
||||||
+132
@@ -0,0 +1,132 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b) ... FAIL
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_ownership_fact_dictionary_order_fallback (__main__.S3b)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1233, in test_ownership_fact_dictionary_order_fallback
|
||||||
|
self.assertTrue(result['ok'], result['differences'])
|
||||||
|
AssertionError: False is not true : []
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 119 tests in 31.877s
|
||||||
|
|
||||||
|
FAILED (failures=1)
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
8360a2065b303099d5c546b3e4aecc0cc0ab0c2c1e5120b8034b6a1a64317030 UNIT_OUTPUT_S3B_ATTEMPT_09.txt
|
||||||
+124
@@ -0,0 +1,124 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b) ... ok
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 119 tests in 32.034s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
ff9620ce295f2f2edc25e9b0014ac4db221e1b26e8ba1b0f20c20e7e5d045ce9 UNIT_OUTPUT_S4_ATTEMPT_01.txt
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1241, in <module>
|
||||||
|
import run_eq as driver
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/run_eq.py", line 16, in <module>
|
||||||
|
import verify_eq as verify
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/verify_eq.py", line 18, in <module>
|
||||||
|
NAMES = {f'{prefix}-{i:02d}.json' for prefix, count in
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/verify_eq.py", line 18, in <setcomp>
|
||||||
|
NAMES = {f'{prefix}-{i:02d}.json' for prefix, count in
|
||||||
|
NameError: name 'i' is not defined
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
140d2c270f7c15297bed638c23dd38295381eebacc123fccdc112d32162dcefe UNIT_OUTPUT_S4_ATTEMPT_02.txt
|
||||||
+328
@@ -0,0 +1,328 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b) ... ok
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) ... test_missing_profile_not_export_success (__main__.S4Bundle) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle) ... ERROR
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle) ... ERROR
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) (filename='lifecycle.json')
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1365, in test_missing_private_evidence_and_extra_rejected
|
||||||
|
directory = Path(name); row = s4_phase_fixture(directory)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1285, in s4_phase_fixture
|
||||||
|
raw, e3, b1, e45 = s4_report_fixture(role)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1270, in s4_report_fixture
|
||||||
|
add_world(e3raw); add_world(e3); add_world(b1)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1269, in add_world
|
||||||
|
for child in value: add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1266, in add_world
|
||||||
|
value['tree_sha'] = eq.tree_sha(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 109, in tree_sha
|
||||||
|
validate_tree(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 70, in validate_tree
|
||||||
|
require(key not in seen, 'duplicate dictionary key')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 29, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: duplicate dictionary key
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) (filename='audio-close.json')
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1365, in test_missing_private_evidence_and_extra_rejected
|
||||||
|
directory = Path(name); row = s4_phase_fixture(directory)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1285, in s4_phase_fixture
|
||||||
|
raw, e3, b1, e45 = s4_report_fixture(role)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1270, in s4_report_fixture
|
||||||
|
add_world(e3raw); add_world(e3); add_world(b1)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1269, in add_world
|
||||||
|
for child in value: add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1266, in add_world
|
||||||
|
value['tree_sha'] = eq.tree_sha(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 109, in tree_sha
|
||||||
|
validate_tree(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 70, in validate_tree
|
||||||
|
require(key not in seen, 'duplicate dictionary key')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 29, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: duplicate dictionary key
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) (filename='e3-17.json')
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1365, in test_missing_private_evidence_and_extra_rejected
|
||||||
|
directory = Path(name); row = s4_phase_fixture(directory)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1285, in s4_phase_fixture
|
||||||
|
raw, e3, b1, e45 = s4_report_fixture(role)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1270, in s4_report_fixture
|
||||||
|
add_world(e3raw); add_world(e3); add_world(b1)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1269, in add_world
|
||||||
|
for child in value: add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1266, in add_world
|
||||||
|
value['tree_sha'] = eq.tree_sha(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 109, in tree_sha
|
||||||
|
validate_tree(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 70, in validate_tree
|
||||||
|
require(key not in seen, 'duplicate dictionary key')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 29, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: duplicate dictionary key
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) (filename='e45-20.json')
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1365, in test_missing_private_evidence_and_extra_rejected
|
||||||
|
directory = Path(name); row = s4_phase_fixture(directory)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1285, in s4_phase_fixture
|
||||||
|
raw, e3, b1, e45 = s4_report_fixture(role)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1270, in s4_report_fixture
|
||||||
|
add_world(e3raw); add_world(e3); add_world(b1)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1269, in add_world
|
||||||
|
for child in value: add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1266, in add_world
|
||||||
|
value['tree_sha'] = eq.tree_sha(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 109, in tree_sha
|
||||||
|
validate_tree(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 70, in validate_tree
|
||||||
|
require(key not in seen, 'duplicate dictionary key')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 29, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: duplicate dictionary key
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) (filename='extra.json')
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1365, in test_missing_private_evidence_and_extra_rejected
|
||||||
|
directory = Path(name); row = s4_phase_fixture(directory)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1285, in s4_phase_fixture
|
||||||
|
raw, e3, b1, e45 = s4_report_fixture(role)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1270, in s4_report_fixture
|
||||||
|
add_world(e3raw); add_world(e3); add_world(b1)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1269, in add_world
|
||||||
|
for child in value: add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1266, in add_world
|
||||||
|
value['tree_sha'] = eq.tree_sha(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 109, in tree_sha
|
||||||
|
validate_tree(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 70, in validate_tree
|
||||||
|
require(key not in seen, 'duplicate dictionary key')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 29, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: duplicate dictionary key
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1373, in test_phase_role_pid_audio_and_guard_rejected
|
||||||
|
directory = Path(name); row = s4_phase_fixture(directory)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1285, in s4_phase_fixture
|
||||||
|
raw, e3, b1, e45 = s4_report_fixture(role)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1270, in s4_report_fixture
|
||||||
|
add_world(e3raw); add_world(e3); add_world(b1)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1269, in add_world
|
||||||
|
for child in value: add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1266, in add_world
|
||||||
|
value['tree_sha'] = eq.tree_sha(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 109, in tree_sha
|
||||||
|
validate_tree(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 70, in validate_tree
|
||||||
|
require(key not in seen, 'duplicate dictionary key')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 29, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: duplicate dictionary key
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1336, in test_synthetic_phase_all_real_checkers_not_native_proof
|
||||||
|
row = s4_phase_fixture(directory)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1285, in s4_phase_fixture
|
||||||
|
raw, e3, b1, e45 = s4_report_fixture(role)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1270, in s4_report_fixture
|
||||||
|
add_world(e3raw); add_world(e3); add_world(b1)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1269, in add_world
|
||||||
|
for child in value: add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1267, in add_world
|
||||||
|
for child in value.values(): add_world(child)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1266, in add_world
|
||||||
|
value['tree_sha'] = eq.tree_sha(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 109, in tree_sha
|
||||||
|
validate_tree(tree)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 70, in validate_tree
|
||||||
|
require(key not in seen, 'duplicate dictionary key')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 29, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: duplicate dictionary key
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 128 tests in 34.518s
|
||||||
|
|
||||||
|
FAILED (errors=7)
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
9f27f201325809a590375b7842101ef6b7d08c7de0aa4e66b4de2b7f7fd673d1 UNIT_OUTPUT_S4_ATTEMPT_03.txt
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 9 tests in 19.447s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
76738bb4138955e5fec02a93358c55446183492e99fd4d4360ac7fad58caacf9 UNIT_OUTPUT_S4_ATTEMPT_04.txt
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic) ... ERROR
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1506, in test_synthetic_full_bundle_positive_not_native_evidence
|
||||||
|
patch.object(driver, 'load_dependencies', return_value=(self.collector, self.standard, self.outer, self.diag)):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/verify_eq.py", line 217, in verify
|
||||||
|
from run_eq import load_dependencies, actual_pins
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 29, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: recomputed results differ
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 4 tests in 124.325s
|
||||||
|
|
||||||
|
FAILED (errors=1)
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
aa13731a56337065e1a74acbfb640d56655cb4f774c9780dc265c40cf097101e UNIT_OUTPUT_S4_ATTEMPT_05.txt
|
||||||
+137
@@ -0,0 +1,137 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b) ... ok
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 132 tests in 194.460s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
3c41e4442e2c21315e484fd2c8cdb9de70272af115a618083fca2d2e6428d187 UNIT_OUTPUT_S4_ATTEMPT_06.txt
|
||||||
+139
@@ -0,0 +1,139 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b) ... ok
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 134 tests in 206.531s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
29d1a5dec792ae865725220ec4d11c11bb62d08cba9a614ad7bf2d120948ab97 UNIT_OUTPUT_S4_ATTEMPT_07.txt
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings) ... FAIL
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings) ... ok
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
compare_versions.EvidenceError: report checker: ['report self-check: []']
|
||||||
|
|
||||||
|
During handling of the above exception, another exception occurred:
|
||||||
|
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1647, in test_nonzero_determinism_rejected_after_real_join
|
||||||
|
self.recompute(self.execution)
|
||||||
|
AssertionError: "same-role determinism failed" does not match "report checker: ['report self-check: []']"
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 8 tests in 54.265s
|
||||||
|
|
||||||
|
FAILED (failures=1)
|
||||||
|
|
||||||
|
exit_code=1
|
||||||
|
wall_seconds=54.554559917
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
d470e6ee7a07a3b6d4ad2182b545e8708ae735b0d106c0800a813eb73f7353ce UNIT_OUTPUT_S4_ATTEMPT_08.txt
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 9 tests in 86.276s
|
||||||
|
|
||||||
|
OK
|
||||||
|
|
||||||
|
exit_code=0
|
||||||
|
wall_seconds=86.551909958
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
3f33b134a48cfabd8794329bec69ed0678ad71f06052f4e34a78c5955475c450 UNIT_OUTPUT_S4_ATTEMPT_09.txt
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 3 tests in 0.025s
|
||||||
|
|
||||||
|
OK
|
||||||
|
|
||||||
|
exit_code=0
|
||||||
|
wall_seconds=0.2951165
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
ff6fc0065772434f9ca35a1267e24d199057e339869a868942a41829327503bb UNIT_OUTPUT_S4_ATTEMPT_10.txt
|
||||||
+154
@@ -0,0 +1,154 @@
|
|||||||
|
test_all_operations (__main__.Diffs) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports) ... ok
|
||||||
|
test_same_report (__main__.Reports) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static) ... ok
|
||||||
|
test_current_probe (__main__.S2Static) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b) ... ok
|
||||||
|
test_interval_gap (__main__.S3b) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b) ... ok
|
||||||
|
test_missing_trial (__main__.S3b) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b) ... ok
|
||||||
|
test_path_order (__main__.S3b) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 146 tests in 293.277s
|
||||||
|
|
||||||
|
OK
|
||||||
|
|
||||||
|
exit_code=0
|
||||||
|
wall_seconds=293.5742515
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
f52106391229dbf46d82e7dd9cdbc290b65f2ae9ed0e2a49d2cd4933c8af4ade UNIT_OUTPUT_S5_ATTEMPT_01.txt
|
||||||
+316
@@ -0,0 +1,316 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ...
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) (required='transport(runtime.create_snapshot())') ... FAIL
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... FAIL
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... FAIL
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... FAIL
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... FAIL
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... FAIL
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... FAIL
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... FAIL
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ERROR
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ERROR
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ERROR
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ERROR
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... FAIL
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ERROR
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1077, in test_all_paths_and_ownership_R_O
|
||||||
|
outcomes = self.checked(e45_fixture(role))
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1067, in checked
|
||||||
|
return checker.check_e45(raw, evidence, previous)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/check_eq.py", line 826, in check_e45
|
||||||
|
eq.require(set(detail) == common | specific, 'E4 detail fields; no invented staleness verdict')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 143, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: E4 detail fields; no invented staleness verdict
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1170, in test_no_staleness_assertion_for_non_tick
|
||||||
|
out = self.checked()
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1067, in checked
|
||||||
|
return checker.check_e45(raw, evidence, previous)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/check_eq.py", line 826, in check_e45
|
||||||
|
eq.require(set(detail) == common | specific, 'E4 detail fields; no invented staleness verdict')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 143, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: E4 detail fields; no invented staleness verdict
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1417, in test_synthetic_phase_all_real_checkers_not_native_proof
|
||||||
|
result = verifier.phase_evidence(directory, row)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/verify_eq.py", line 110, in phase_evidence
|
||||||
|
require(life['stage'] == 'S5', 'S5 lifecycle required')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 143, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: S5 lifecycle required
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1514, in test_synthetic_full_bundle_positive_not_native_evidence
|
||||||
|
result = self.recompute(self.execution)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1511, in recompute
|
||||||
|
return verifier.recompute(self.directory, value, self.collector, self.standard, self.diag)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/verify_eq.py", line 222, in recompute
|
||||||
|
results[phase] = phase_evidence(directory, row)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/verify_eq.py", line 110, in phase_evidence
|
||||||
|
require(life['stage'] == 'S5', 'S5 lifecycle required')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 143, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: S5 lifecycle required
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1618, in test_verifier_accepts_true_recomputes_raw
|
||||||
|
result = self.recompute(self.execution)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1511, in recompute
|
||||||
|
return verifier.recompute(self.directory, value, self.collector, self.standard, self.diag)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/verify_eq.py", line 222, in recompute
|
||||||
|
results[phase] = phase_evidence(directory, row)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/verify_eq.py", line 110, in phase_evidence
|
||||||
|
require(life['stage'] == 'S5', 'S5 lifecycle required')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 143, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: S5 lifecycle required
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) (required='transport(runtime.create_snapshot())')
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 676, in test_full_state_and_godot_roundtrip_required
|
||||||
|
with self.subTest(required=required): self.reject(self.probe.replace(required, 'null'))
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 645, in reject
|
||||||
|
self.assertFalse(result['ok'], result)
|
||||||
|
AssertionError: True is not false : {'ok': True, 'stage': 'S3a', 'errors': []}
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 835, in test_e3_valid_R_and_O_records
|
||||||
|
self.assertTrue(checked['ok'], checked['errors'])
|
||||||
|
AssertionError: False is not true : ["'event_stream'"]
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 863, in test_envelope_duplicates_not_defect
|
||||||
|
self.assertTrue(checked['ok'], checked['errors'])
|
||||||
|
AssertionError: False is not true : ["'event_stream'"]
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 944, in test_event_count_defect_not_silently_accepted
|
||||||
|
self.assertTrue(checked['ok'], checked['errors'])
|
||||||
|
AssertionError: False is not true : ["'event_stream'"]
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 898, in test_invalid_input_accepted_is_not_PASS
|
||||||
|
self.assertTrue(checked['ok'], checked['errors'])
|
||||||
|
AssertionError: False is not true : ["'event_stream'"]
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 972, in test_load_payload_and_pause_outcome
|
||||||
|
self.assertTrue(checked['ok'], checked['errors'])
|
||||||
|
AssertionError: False is not true : ["'event_stream'"]
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 889, in test_rejection_mutation_retained_as_defect
|
||||||
|
self.assertTrue(checked['ok'], checked['errors'])
|
||||||
|
AssertionError: False is not true : ["'event_stream'"]
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 963, in test_save_refusal_makes_load_NA
|
||||||
|
self.assertTrue(checked['ok'], checked['errors'])
|
||||||
|
AssertionError: False is not true : ["'event_stream'"]
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
compare_versions.EvidenceError: S5 lifecycle required
|
||||||
|
|
||||||
|
During handling of the above exception, another exception occurred:
|
||||||
|
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1648, in test_nonzero_determinism_rejected_after_real_join
|
||||||
|
with self.assertRaisesRegex(eq.EvidenceError, 'same-role determinism failed'):
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
AssertionError: "same-role determinism failed" does not match "S5 lifecycle required"
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 146 tests in 53.398s
|
||||||
|
|
||||||
|
FAILED (failures=9, errors=5)
|
||||||
|
exit=1
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
67b91e02e30046cefecf260aa2eb284e0bab5ae2d9728f674eea5bd06e38db0c UNIT_OUTPUT_S5_ATTEMPT_02.txt
|
||||||
+163
@@ -0,0 +1,163 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 156 tests in 211.416s
|
||||||
|
|
||||||
|
OK
|
||||||
|
exit=0
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
e2833369d98a4cf6600fcd98dcf271c2172e8b4a5fbb366eae4fcebc5ea8921d UNIT_OUTPUT_S5_ATTEMPT_03.txt
|
||||||
+167
@@ -0,0 +1,167 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_blob_trees_get_the_same_full_validation_as_inline (__main__.S5.test_blob_trees_get_the_same_full_validation_as_inline) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_labelled_harness_digest_falls_back_to_dictionary_order_only (__main__.S5.test_labelled_harness_digest_falls_back_to_dictionary_order_only) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_memo_scope_same_results_and_restores_gc (__main__.S5.test_memo_scope_same_results_and_restores_gc) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_publish_pairs_bound_to_source_causes (__main__.S5.test_publish_pairs_bound_to_source_causes) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 160 tests in 130.451s
|
||||||
|
|
||||||
|
OK
|
||||||
|
python_exit=0
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
f8b652c4f0cdc52c061cd58f1a1334e755c22d5dc206225a5cf2d4863a780c85 UNIT_OUTPUT_S5_ATTEMPT_04.txt
|
||||||
+202
@@ -0,0 +1,202 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ERROR
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
setUpClass (__main__.S4NativeBundleLogic) ... ERROR
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
setUpClass (__main__.S4RemainingBindings) ... ERROR
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_blob_trees_get_the_same_full_validation_as_inline (__main__.S5.test_blob_trees_get_the_same_full_validation_as_inline) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_labelled_harness_digest_falls_back_to_dictionary_order_only (__main__.S5.test_labelled_harness_digest_falls_back_to_dictionary_order_only) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_memo_scope_same_results_and_restores_gc (__main__.S5.test_memo_scope_same_results_and_restores_gc) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_publish_pairs_bound_to_source_causes (__main__.S5.test_publish_pairs_bound_to_source_causes) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_validate_tree_equals_s1_reference_on_mutations (__main__.S5.test_validate_tree_equals_s1_reference_on_mutations) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1487, in test_import_closure_rejections
|
||||||
|
self.assertTrue(checker.check_python_imports((verifier.HERE/name).read_text()))
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/check_eq.py", line 29, in check_python_imports
|
||||||
|
eq.require(all(n and n.split('.')[0] in allowed for n in names), 'import outside EQ closure')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 168, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: import outside EQ closure
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: setUpClass (__main__.S4NativeBundleLogic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1514, in setUpClass
|
||||||
|
cls.collector, cls.standard, cls.outer, cls.diag = driver.load_dependencies()
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/run_eq.py", line 54, in load_dependencies
|
||||||
|
check.check_python_imports((local / name).read_text())
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/check_eq.py", line 29, in check_python_imports
|
||||||
|
eq.require(all(n and n.split('.')[0] in allowed for n in names), 'import outside EQ closure')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 168, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: import outside EQ closure
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: setUpClass (__main__.S4RemainingBindings)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/test_eq.py", line 1514, in setUpClass
|
||||||
|
cls.collector, cls.standard, cls.outer, cls.diag = driver.load_dependencies()
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/run_eq.py", line 54, in load_dependencies
|
||||||
|
check.check_python_imports((local / name).read_text())
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/check_eq.py", line 29, in check_python_imports
|
||||||
|
eq.require(all(n and n.split('.')[0] in allowed for n in names), 'import outside EQ closure')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement/docs/plans/original-completion-2026-10-02/execution/p28-02/eq/compare_versions.py", line 168, in require
|
||||||
|
raise EvidenceError(message)
|
||||||
|
compare_versions.EvidenceError: import outside EQ closure
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 151 tests in 42.213s
|
||||||
|
|
||||||
|
FAILED (errors=3)
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
7372a382cc2f3c090013874d8f28f17cad4cb1b965ad86c86de7a21fc2d851a8 UNIT_OUTPUT_S5_ATTEMPT_05.txt
|
||||||
+167
@@ -0,0 +1,167 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_blob_trees_get_the_same_full_validation_as_inline (__main__.S5.test_blob_trees_get_the_same_full_validation_as_inline) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_labelled_harness_digest_falls_back_to_dictionary_order_only (__main__.S5.test_labelled_harness_digest_falls_back_to_dictionary_order_only) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_memo_scope_same_results_and_restores_gc (__main__.S5.test_memo_scope_same_results_and_restores_gc) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_publish_pairs_bound_to_source_causes (__main__.S5.test_publish_pairs_bound_to_source_causes) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_validate_tree_equals_s1_reference_on_mutations (__main__.S5.test_validate_tree_equals_s1_reference_on_mutations) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 161 tests in 121.627s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
846ab3b45705f269a81181c818dc5e3b8bc0057863794d59e8d641fe5a4e4c32 UNIT_OUTPUT_S5_ATTEMPT_06.txt
|
||||||
+168
@@ -0,0 +1,168 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_blob_trees_get_the_same_full_validation_as_inline (__main__.S5.test_blob_trees_get_the_same_full_validation_as_inline) ... ok
|
||||||
|
test_bundled_inputs_replace_unreadable_originals (__main__.S5.test_bundled_inputs_replace_unreadable_originals) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_labelled_harness_digest_falls_back_to_dictionary_order_only (__main__.S5.test_labelled_harness_digest_falls_back_to_dictionary_order_only) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_memo_scope_same_results_and_restores_gc (__main__.S5.test_memo_scope_same_results_and_restores_gc) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_publish_pairs_bound_to_source_causes (__main__.S5.test_publish_pairs_bound_to_source_causes) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_validate_tree_equals_s1_reference_on_mutations (__main__.S5.test_validate_tree_equals_s1_reference_on_mutations) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 162 tests in 120.853s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
2797169a7c98b0b5d2f578f28a860dc2819294e023e1019ae8243e41631d5e29 UNIT_OUTPUT_S5_SEATBELT_06.txt
|
||||||
+168
@@ -0,0 +1,168 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_blob_trees_get_the_same_full_validation_as_inline (__main__.S5.test_blob_trees_get_the_same_full_validation_as_inline) ... ok
|
||||||
|
test_bundled_inputs_replace_unreadable_originals (__main__.S5.test_bundled_inputs_replace_unreadable_originals) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_labelled_harness_digest_falls_back_to_dictionary_order_only (__main__.S5.test_labelled_harness_digest_falls_back_to_dictionary_order_only) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_memo_scope_same_results_and_restores_gc (__main__.S5.test_memo_scope_same_results_and_restores_gc) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_publish_pairs_bound_to_source_causes (__main__.S5.test_publish_pairs_bound_to_source_causes) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_validate_tree_equals_s1_reference_on_mutations (__main__.S5.test_validate_tree_equals_s1_reference_on_mutations) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 162 tests in 120.930s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
9dd93de5fd3b66791d6902d51a055caa2c3dd559de6c42019ebb1ab147b2af11 UNIT_OUTPUT_S6_ATTEMPT_01.txt
|
||||||
+185
@@ -0,0 +1,185 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_blob_trees_get_the_same_full_validation_as_inline (__main__.S5.test_blob_trees_get_the_same_full_validation_as_inline) ... ok
|
||||||
|
test_bundled_inputs_replace_unreadable_originals (__main__.S5.test_bundled_inputs_replace_unreadable_originals) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_labelled_harness_digest_falls_back_to_dictionary_order_only (__main__.S5.test_labelled_harness_digest_falls_back_to_dictionary_order_only) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_memo_scope_same_results_and_restores_gc (__main__.S5.test_memo_scope_same_results_and_restores_gc) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_publish_pairs_bound_to_source_causes (__main__.S5.test_publish_pairs_bound_to_source_causes) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_validate_tree_equals_s1_reference_on_mutations (__main__.S5.test_validate_tree_equals_s1_reference_on_mutations) ... ok
|
||||||
|
test_bundled_destination_must_be_normalized_inside_readonly (__main__.S6Admission.test_bundled_destination_must_be_normalized_inside_readonly) ... ok
|
||||||
|
test_check_path_admits_registered_after_version (__main__.S6Admission.test_check_path_admits_registered_after_version) ... ok
|
||||||
|
test_check_path_rejects_unregistered_or_unchanged (__main__.S6Admission.test_check_path_rejects_unregistered_or_unchanged) ... ok
|
||||||
|
test_main_passes_sorted_registration_and_records_version (__main__.S6Admission.test_main_passes_sorted_registration_and_records_version) ... ok
|
||||||
|
test_root_manifest_pin_equals_collector_literal (__main__.S6Admission.test_root_manifest_pin_equals_collector_literal) ... ok
|
||||||
|
test_after_version_bundle_recomputes (__main__.S6Bundles.test_after_version_bundle_recomputes) ... ok
|
||||||
|
test_cross_version_comparison (__main__.S6Bundles.test_cross_version_comparison) ... ok
|
||||||
|
test_cross_version_pin_closure_and_seal_rejections (__main__.S6Bundles.test_cross_version_pin_closure_and_seal_rejections) ... ok
|
||||||
|
test_cross_version_real_difference_is_not_ok (__main__.S6Bundles.test_cross_version_real_difference_is_not_ok) ... ok
|
||||||
|
test_recompute_rejects_version_closure_and_label_changes (__main__.S6Bundles.test_recompute_rejects_version_closure_and_label_changes) ... ok
|
||||||
|
test_digest_state_values (__main__.S6SealAndProbe.test_digest_state_values) ... ok
|
||||||
|
test_probe_records_actual_digest_state (__main__.S6SealAndProbe.test_probe_records_actual_digest_state) ... ok
|
||||||
|
test_seal_records_every_directory (__main__.S6SealAndProbe.test_seal_records_every_directory) ... ok
|
||||||
|
test_admit_before_and_registered_after (__main__.S6SourceClosure.test_admit_before_and_registered_after) ... ok
|
||||||
|
test_before_map_is_the_frozen_source_map (__main__.S6SourceClosure.test_before_map_is_the_frozen_source_map) ... ok
|
||||||
|
test_before_map_tampering_rejected (__main__.S6SourceClosure.test_before_map_tampering_rejected) ... ok
|
||||||
|
test_unregistered_added_missing_and_malformed_registrations_rejected (__main__.S6SourceClosure.test_unregistered_added_missing_and_malformed_registrations_rejected) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 179 tests in 207.351s
|
||||||
|
|
||||||
|
OK
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
be2dd93c3cbb44b3ac74ab003f11ba368da3f4009b3b5595336f591dff52cceb UNIT_OUTPUT_S6_SEATBELT_01.txt
|
||||||
+185
@@ -0,0 +1,185 @@
|
|||||||
|
test_all_operations (__main__.Diffs.test_all_operations) ... ok
|
||||||
|
test_invalid_operations (__main__.Diffs.test_invalid_operations) ... ok
|
||||||
|
test_reconstruction_and_proofs (__main__.Diffs.test_reconstruction_and_proofs) ... ok
|
||||||
|
test_attempt_to_normalize_violation_rejected (__main__.Normalization.test_attempt_to_normalize_violation_rejected) ... ok
|
||||||
|
test_environment_values_differ_but_normal_form_equal (__main__.Normalization.test_environment_values_differ_but_normal_form_equal) ... ok
|
||||||
|
test_every_save_event_reversible (__main__.Normalization.test_every_save_event_reversible) ... ok
|
||||||
|
test_f3_keeps_relative_paths_and_words (__main__.Normalization.test_f3_keeps_relative_paths_and_words) ... ok
|
||||||
|
test_guard_mismatch (__main__.Normalization.test_guard_mismatch) ... ok
|
||||||
|
test_nested_lookalike_is_not_eligible (__main__.Normalization.test_nested_lookalike_is_not_eligible) ... ok
|
||||||
|
test_original_transport_sha_detects_forged_timing (__main__.Normalization.test_original_transport_sha_detects_forged_timing) ... ok
|
||||||
|
test_partial_timing_payload_rejected (__main__.Normalization.test_partial_timing_payload_rejected) ... ok
|
||||||
|
test_prefix_boundary_and_reserved_token (__main__.Normalization.test_prefix_boundary_and_reserved_token) ... ok
|
||||||
|
test_sidecar_missing_duplicate_and_forged_paths (__main__.Normalization.test_sidecar_missing_duplicate_and_forged_paths) ... ok
|
||||||
|
test_snapshot_and_latest_reversible (__main__.Normalization.test_snapshot_and_latest_reversible) ... ok
|
||||||
|
test_snapshot_event_outside_recent_is_not_eligible (__main__.Normalization.test_snapshot_event_outside_recent_is_not_eligible) ... ok
|
||||||
|
test_wrong_event_and_source_are_preserved (__main__.Normalization.test_wrong_event_and_source_are_preserved) ... ok
|
||||||
|
test_wrong_timing_type_and_negative (__main__.Normalization.test_wrong_timing_type_and_negative) ... ok
|
||||||
|
test_all_events_beyond_recent_window (__main__.Reports.test_all_events_beyond_recent_window) ... ok
|
||||||
|
test_all_semantic_layers_compared (__main__.Reports.test_all_semantic_layers_compared) ... ok
|
||||||
|
test_digest_alone_is_not_enough (__main__.Reports.test_digest_alone_is_not_enough) ... ok
|
||||||
|
test_event_original_types_and_order (__main__.Reports.test_event_original_types_and_order) ... ok
|
||||||
|
test_event_start_and_ids (__main__.Reports.test_event_start_and_ids) ... ok
|
||||||
|
test_exclusions_keep_actual_values (__main__.Reports.test_exclusions_keep_actual_values) ... ok
|
||||||
|
test_handler_sets_and_counts (__main__.Reports.test_handler_sets_and_counts) ... ok
|
||||||
|
test_observation_full_layers (__main__.Reports.test_observation_full_layers) ... ok
|
||||||
|
test_product_digest_self_consistency (__main__.Reports.test_product_digest_self_consistency) ... ok
|
||||||
|
test_same_report (__main__.Reports.test_same_report) ... ok
|
||||||
|
test_scenario_existing_failures_preserved (__main__.Reports.test_scenario_existing_failures_preserved) ... ok
|
||||||
|
test_timing_digest_rule (__main__.Reports.test_timing_digest_rule) ... ok
|
||||||
|
test_unknown_or_missing_fields_rejected (__main__.Reports.test_unknown_or_missing_fields_rejected) ... ok
|
||||||
|
test_violation_presence_and_difference (__main__.Reports.test_violation_presence_and_difference) ... ok
|
||||||
|
test_O_cadence (__main__.S2Format.test_O_cadence) ... ok
|
||||||
|
test_counter_and_published_ids_binding (__main__.S2Format.test_counter_and_published_ids_binding) ... ok
|
||||||
|
test_diff_and_same_as_S_transport (__main__.S2Format.test_diff_and_same_as_S_transport) ... ok
|
||||||
|
test_digest_and_scenario_contradiction (__main__.S2Format.test_digest_and_scenario_contradiction) ... ok
|
||||||
|
test_event_no_drop_duplicate_remap (__main__.S2Format.test_event_no_drop_duplicate_remap) ... ok
|
||||||
|
test_event_original_field_types_mandatory (__main__.S2Format.test_event_original_field_types_mandatory) ... ok
|
||||||
|
test_guard_actual_not_assumed (__main__.S2Format.test_guard_actual_not_assumed) ... ok
|
||||||
|
test_harness_digest_allows_only_dictionary_order (__main__.S2Format.test_harness_digest_allows_only_dictionary_order) ... ok
|
||||||
|
test_join_is_copy_and_retains_normalization_proof (__main__.S2Format.test_join_is_copy_and_retains_normalization_proof) ... ok
|
||||||
|
test_kernel_cache_contradictions (__main__.S2Format.test_kernel_cache_contradictions) ... ok
|
||||||
|
test_lifecycle_guard_errors_and_boundaries (__main__.S2Format.test_lifecycle_guard_errors_and_boundaries) ... ok
|
||||||
|
test_missing_full_state_not_digest_only (__main__.S2Format.test_missing_full_state_not_digest_only) ... ok
|
||||||
|
test_normalized_digest_and_raw_tree_are_both_bound (__main__.S2Format.test_normalized_digest_and_raw_tree_are_both_bound) ... ok
|
||||||
|
test_product_event_shape_and_typed_array (__main__.S2Format.test_product_event_shape_and_typed_array) ... ok
|
||||||
|
test_raw_observation_binding (__main__.S2Format.test_raw_observation_binding) ... ok
|
||||||
|
test_roundtrip_tree_sha_and_raw_sha (__main__.S2Format.test_roundtrip_tree_sha_and_raw_sha) ... ok
|
||||||
|
test_s2_valid_and_not_formal_acceptance (__main__.S2Format.test_s2_valid_and_not_formal_acceptance) ... ok
|
||||||
|
test_state_witness_and_observation_mutation (__main__.S2Format.test_state_witness_and_observation_mutation) ... ok
|
||||||
|
test_stdout_exactly_one_line (__main__.S2Format.test_stdout_exactly_one_line) ... ok
|
||||||
|
test_autoload_class_and_script_import (__main__.S2Static.test_autoload_class_and_script_import) ... ok
|
||||||
|
test_comment_does_not_supply_proof (__main__.S2Static.test_comment_does_not_supply_proof) ... ok
|
||||||
|
test_current_probe (__main__.S2Static.test_current_probe) ... ok
|
||||||
|
test_full_state_and_godot_roundtrip_required (__main__.S2Static.test_full_state_and_godot_roundtrip_required) ... ok
|
||||||
|
test_no_changes_outside_preparation_or_step (__main__.S2Static.test_no_changes_outside_preparation_or_step) ... ok
|
||||||
|
test_no_event_cap_or_duplicate_report (__main__.S2Static.test_no_event_cap_or_duplicate_report) ... ok
|
||||||
|
test_pause_and_step_arguments (__main__.S2Static.test_pause_and_step_arguments) ... ok
|
||||||
|
test_textual_stringname_ordering (__main__.S2Static.test_textual_stringname_ordering) ... ok
|
||||||
|
test_unlisted_live_method_and_late_preparation (__main__.S2Static.test_unlisted_live_method_and_late_preparation) ... ok
|
||||||
|
test_variant_inference (__main__.S2Static.test_variant_inference) ... ok
|
||||||
|
test_X_recent_limit_and_counter (__main__.S3a.test_X_recent_limit_and_counter) ... ok
|
||||||
|
test_duplicate_JSON_key_rejected (__main__.S3a.test_duplicate_JSON_key_rejected) ... ok
|
||||||
|
test_e3_NA_cannot_be_PASS_or_applied (__main__.S3a.test_e3_NA_cannot_be_PASS_or_applied) ... ok
|
||||||
|
test_e3_coverage_input_and_event_count_binding (__main__.S3a.test_e3_coverage_input_and_event_count_binding) ... ok
|
||||||
|
test_e3_invented_codes_and_missing_load_code (__main__.S3a.test_e3_invented_codes_and_missing_load_code) ... ok
|
||||||
|
test_e3_valid_R_and_O_records (__main__.S3a.test_e3_valid_R_and_O_records) ... ok
|
||||||
|
test_envelope_duplicates_not_defect (__main__.S3a.test_envelope_duplicates_not_defect) ... ok
|
||||||
|
test_event_count_defect_not_silently_accepted (__main__.S3a.test_event_count_defect_not_silently_accepted) ... ok
|
||||||
|
test_exact_phase_keys (__main__.S3a.test_exact_phase_keys) ... ok
|
||||||
|
test_interval_gap_rejected (__main__.S3a.test_interval_gap_rejected) ... ok
|
||||||
|
test_invalid_input_accepted_is_not_PASS (__main__.S3a.test_invalid_input_accepted_is_not_PASS) ... ok
|
||||||
|
test_load_payload_and_pause_outcome (__main__.S3a.test_load_payload_and_pause_outcome) ... ok
|
||||||
|
test_operation_moved_outside_scenario_rejected (__main__.S3a.test_operation_moved_outside_scenario_rejected) ... ok
|
||||||
|
test_package_fixed_mutations_and_hashes (__main__.S3a.test_package_fixed_mutations_and_hashes) ... ok
|
||||||
|
test_probe_connection_required (__main__.S3a.test_probe_connection_required) ... ok
|
||||||
|
test_rejection_mutation_retained_as_defect (__main__.S3a.test_rejection_mutation_retained_as_defect) ... ok
|
||||||
|
test_save_refusal_makes_load_NA (__main__.S3a.test_save_refusal_makes_load_NA) ... ok
|
||||||
|
test_scenario_mutation_static_boundary (__main__.S3a.test_scenario_mutation_static_boundary) ... ok
|
||||||
|
test_signals_all_minutes_and_order (__main__.S3a.test_signals_all_minutes_and_order) ... ok
|
||||||
|
test_E5_cached_digest_defect_is_comparable (__main__.S3b.test_E5_cached_digest_defect_is_comparable) ... ok
|
||||||
|
test_NA_not_PASS (__main__.S3b.test_NA_not_PASS) ... ok
|
||||||
|
test_aliasing_cannot_be_PASS (__main__.S3b.test_aliasing_cannot_be_PASS) ... ok
|
||||||
|
test_aliasing_missing_record (__main__.S3b.test_aliasing_missing_record) ... ok
|
||||||
|
test_all_paths_and_ownership_R_O (__main__.S3b.test_all_paths_and_ownership_R_O) ... ok
|
||||||
|
test_digest_defect_other_checkpoint_still_rejected (__main__.S3b.test_digest_defect_other_checkpoint_still_rejected) ... ok
|
||||||
|
test_digest_materialization_required (__main__.S3b.test_digest_materialization_required) ... ok
|
||||||
|
test_empty_registry_not_NA (__main__.S3b.test_empty_registry_not_NA) ... ok
|
||||||
|
test_event_count_mismatch (__main__.S3b.test_event_count_mismatch) ... ok
|
||||||
|
test_facts_normalization_is_reversible (__main__.S3b.test_facts_normalization_is_reversible) ... ok
|
||||||
|
test_first_placeable_choice (__main__.S3b.test_first_placeable_choice) ... ok
|
||||||
|
test_interval_gap (__main__.S3b.test_interval_gap) ... ok
|
||||||
|
test_joined_s3b_self_comparison (__main__.S3b.test_joined_s3b_self_comparison) ... ok
|
||||||
|
test_load_X_not_digest_only (__main__.S3b.test_load_X_not_digest_only) ... ok
|
||||||
|
test_load_extra_event (__main__.S3b.test_load_extra_event) ... ok
|
||||||
|
test_missing_path_and_combination (__main__.S3b.test_missing_path_and_combination) ... ok
|
||||||
|
test_missing_preview_observation (__main__.S3b.test_missing_preview_observation) ... ok
|
||||||
|
test_missing_trial (__main__.S3b.test_missing_trial) ... ok
|
||||||
|
test_nested_mutation_required (__main__.S3b.test_nested_mutation_required) ... ok
|
||||||
|
test_no_staleness_assertion_for_non_tick (__main__.S3b.test_no_staleness_assertion_for_non_tick) ... ok
|
||||||
|
test_ownership_fact_dictionary_order_fallback (__main__.S3b.test_ownership_fact_dictionary_order_fallback) ... ok
|
||||||
|
test_path_order (__main__.S3b.test_path_order) ... ok
|
||||||
|
test_restore_extra_event (__main__.S3b.test_restore_extra_event) ... ok
|
||||||
|
test_signal_facts_cannot_be_dropped (__main__.S3b.test_signal_facts_cannot_be_dropped) ... ok
|
||||||
|
test_sort_rule_rejected (__main__.S3b.test_sort_rule_rejected) ... ok
|
||||||
|
test_static_handler_and_outside_mutations (__main__.S3b.test_static_handler_and_outside_mutations) ... ok
|
||||||
|
test_unpreviewed_choice (__main__.S3b.test_unpreviewed_choice) ... ok
|
||||||
|
test_wrong_registry_in_either_role (__main__.S3b.test_wrong_registry_in_either_role) ... ok
|
||||||
|
test_checkout_temp_destination_rejected (__main__.S4Bundle.test_checkout_temp_destination_rejected) ... ok
|
||||||
|
test_existing_output_never_overwritten (__main__.S4Bundle.test_existing_output_never_overwritten) ... ok
|
||||||
|
test_import_closure_rejections (__main__.S4Bundle.test_import_closure_rejections) ... ok
|
||||||
|
test_missing_bundle_manifest_seal_and_changed_bytes (__main__.S4Bundle.test_missing_bundle_manifest_seal_and_changed_bytes) ... ok
|
||||||
|
test_missing_private_evidence_and_extra_rejected (__main__.S4Bundle.test_missing_private_evidence_and_extra_rejected) ... ok
|
||||||
|
test_missing_profile_not_export_success (__main__.S4Bundle.test_missing_profile_not_export_success) ... ok
|
||||||
|
test_phase_role_pid_audio_and_guard_rejected (__main__.S4Bundle.test_phase_role_pid_audio_and_guard_rejected) ... ok
|
||||||
|
test_rebound_lifecycle_and_scenario_contradictions (__main__.S4Bundle.test_rebound_lifecycle_and_scenario_contradictions) ... ok
|
||||||
|
test_seal_normal_and_changes_not_native_proof (__main__.S4Bundle.test_seal_normal_and_changes_not_native_proof) ... ok
|
||||||
|
test_synthetic_phase_all_real_checkers_not_native_proof (__main__.S4Bundle.test_synthetic_phase_all_real_checkers_not_native_proof) ... ok
|
||||||
|
test_copied_manifest_root_and_destination_count_rejected (__main__.S4NativeBundleLogic.test_copied_manifest_root_and_destination_count_rejected) ... ok
|
||||||
|
test_failure_keeps_raw_and_no_bundle_without_starting_engine (__main__.S4NativeBundleLogic.test_failure_keeps_raw_and_no_bundle_without_starting_engine) ... ok
|
||||||
|
test_gate_none_success_not_boolean (__main__.S4NativeBundleLogic.test_gate_none_success_not_boolean) ... ok
|
||||||
|
test_receipt_and_source_rejection_matrix (__main__.S4NativeBundleLogic.test_receipt_and_source_rejection_matrix) ... ok
|
||||||
|
test_synthetic_full_bundle_positive_not_native_evidence (__main__.S4NativeBundleLogic.test_synthetic_full_bundle_positive_not_native_evidence) ... ok
|
||||||
|
test_check_accepts_true (__main__.S4ProbeAdmission.test_check_accepts_true) ... ok
|
||||||
|
test_check_rejects_false_all_errors (__main__.S4ProbeAdmission.test_check_rejects_false_all_errors) ... ok
|
||||||
|
test_run_admission_accepts_true_mock_launch_only (__main__.S4ProbeAdmission.test_run_admission_accepts_true_mock_launch_only) ... ok
|
||||||
|
test_run_admission_rejects_false_without_engine (__main__.S4ProbeAdmission.test_run_admission_rejects_false_without_engine) ... ok
|
||||||
|
test_nine_original_destinations_required (__main__.S4RemainingBindings.test_nine_original_destinations_required) ... ok
|
||||||
|
test_nonzero_determinism_rejected_after_real_join (__main__.S4RemainingBindings.test_nonzero_determinism_rejected_after_real_join) ... ok
|
||||||
|
test_owned_lifecycle_exit_diagnostic_and_profile_rejections (__main__.S4RemainingBindings.test_owned_lifecycle_exit_diagnostic_and_profile_rejections) ... ok
|
||||||
|
test_verifier_accepts_true_recomputes_raw (__main__.S4RemainingBindings.test_verifier_accepts_true_recomputes_raw) ... ok
|
||||||
|
test_verifier_rejects_false_with_every_error (__main__.S4RemainingBindings.test_verifier_rejects_false_with_every_error) ... ok
|
||||||
|
test_cached_verdict_not_trusted (__main__.S4StoredResultBindings.test_cached_verdict_not_trusted) ... ok
|
||||||
|
test_missing_sidecar_rejected_after_seal (__main__.S4StoredResultBindings.test_missing_sidecar_rejected_after_seal) ... ok
|
||||||
|
test_raw_joined_substitution_rejected_after_seal (__main__.S4StoredResultBindings.test_raw_joined_substitution_rejected_after_seal) ... ok
|
||||||
|
test_blob_transport_is_verified_and_bound (__main__.S5.test_blob_transport_is_verified_and_bound) ... ok
|
||||||
|
test_blob_trees_get_the_same_full_validation_as_inline (__main__.S5.test_blob_trees_get_the_same_full_validation_as_inline) ... ok
|
||||||
|
test_bundled_inputs_replace_unreadable_originals (__main__.S5.test_bundled_inputs_replace_unreadable_originals) ... ok
|
||||||
|
test_compare_and_digest_equal_s1_reference (__main__.S5.test_compare_and_digest_equal_s1_reference) ... ok
|
||||||
|
test_event_stream_replacement_is_existing_defect_not_pass (__main__.S5.test_event_stream_replacement_is_existing_defect_not_pass) ... ok
|
||||||
|
test_every_checkpoint_full_tree_verified_like_inline (__main__.S5.test_every_checkpoint_full_tree_verified_like_inline)
|
||||||
|
S5 drops the diff chain: each checkpoint carries a complete tree, verified alone. ... ok
|
||||||
|
test_fast_normalization_equals_original (__main__.S5.test_fast_normalization_equals_original) ... ok
|
||||||
|
test_labelled_harness_digest_falls_back_to_dictionary_order_only (__main__.S5.test_labelled_harness_digest_falls_back_to_dictionary_order_only) ... ok
|
||||||
|
test_lifecycle_binds_replacements_guard_text_and_blobs (__main__.S5.test_lifecycle_binds_replacements_guard_text_and_blobs) ... ok
|
||||||
|
test_manifest_numbers_keep_their_type (__main__.S5.test_manifest_numbers_keep_their_type) ... ok
|
||||||
|
test_memo_scope_same_results_and_restores_gc (__main__.S5.test_memo_scope_same_results_and_restores_gc) ... ok
|
||||||
|
test_path_copy_builders_equal_deepcopy_reference (__main__.S5.test_path_copy_builders_equal_deepcopy_reference) ... ok
|
||||||
|
test_probe_static_full_tree_blob_and_stream_requirements (__main__.S5.test_probe_static_full_tree_blob_and_stream_requirements) ... ok
|
||||||
|
test_publish_pairs_bound_to_source_causes (__main__.S5.test_publish_pairs_bound_to_source_causes) ... ok
|
||||||
|
test_signed_instance_ids_raw_kept_and_excluded (__main__.S5.test_signed_instance_ids_raw_kept_and_excluded) ... ok
|
||||||
|
test_validate_tree_equals_s1_reference_on_mutations (__main__.S5.test_validate_tree_equals_s1_reference_on_mutations) ... ok
|
||||||
|
test_bundled_destination_must_be_normalized_inside_readonly (__main__.S6Admission.test_bundled_destination_must_be_normalized_inside_readonly) ... ok
|
||||||
|
test_check_path_admits_registered_after_version (__main__.S6Admission.test_check_path_admits_registered_after_version) ... ok
|
||||||
|
test_check_path_rejects_unregistered_or_unchanged (__main__.S6Admission.test_check_path_rejects_unregistered_or_unchanged) ... ok
|
||||||
|
test_main_passes_sorted_registration_and_records_version (__main__.S6Admission.test_main_passes_sorted_registration_and_records_version) ... ok
|
||||||
|
test_root_manifest_pin_equals_collector_literal (__main__.S6Admission.test_root_manifest_pin_equals_collector_literal) ... ok
|
||||||
|
test_after_version_bundle_recomputes (__main__.S6Bundles.test_after_version_bundle_recomputes) ... ok
|
||||||
|
test_cross_version_comparison (__main__.S6Bundles.test_cross_version_comparison) ... ok
|
||||||
|
test_cross_version_pin_closure_and_seal_rejections (__main__.S6Bundles.test_cross_version_pin_closure_and_seal_rejections) ... ok
|
||||||
|
test_cross_version_real_difference_is_not_ok (__main__.S6Bundles.test_cross_version_real_difference_is_not_ok) ... ok
|
||||||
|
test_recompute_rejects_version_closure_and_label_changes (__main__.S6Bundles.test_recompute_rejects_version_closure_and_label_changes) ... ok
|
||||||
|
test_digest_state_values (__main__.S6SealAndProbe.test_digest_state_values) ... ok
|
||||||
|
test_probe_records_actual_digest_state (__main__.S6SealAndProbe.test_probe_records_actual_digest_state) ... ok
|
||||||
|
test_seal_records_every_directory (__main__.S6SealAndProbe.test_seal_records_every_directory) ... ok
|
||||||
|
test_admit_before_and_registered_after (__main__.S6SourceClosure.test_admit_before_and_registered_after) ... ok
|
||||||
|
test_before_map_is_the_frozen_source_map (__main__.S6SourceClosure.test_before_map_is_the_frozen_source_map) ... ok
|
||||||
|
test_before_map_tampering_rejected (__main__.S6SourceClosure.test_before_map_tampering_rejected) ... ok
|
||||||
|
test_unregistered_added_missing_and_malformed_registrations_rejected (__main__.S6SourceClosure.test_unregistered_added_missing_and_malformed_registrations_rejected) ... ok
|
||||||
|
test_fixed_scenario_paths (__main__.SourcesAndMetrics.test_fixed_scenario_paths) ... ok
|
||||||
|
test_metric_ranges (__main__.SourcesAndMetrics.test_metric_ranges) ... ok
|
||||||
|
test_source_closure_synthetic_registered_map (__main__.SourcesAndMetrics.test_source_closure_synthetic_registered_map) ... ok
|
||||||
|
test_source_pin_is_not_caller_controlled (__main__.SourcesAndMetrics.test_source_pin_is_not_caller_controlled) ... ok
|
||||||
|
test_array_order_and_all_differences (__main__.TypedTrees.test_array_order_and_all_differences) ... ok
|
||||||
|
test_components_and_sha (__main__.TypedTrees.test_components_and_sha) ... ok
|
||||||
|
test_deep_state_not_truncated (__main__.TypedTrees.test_deep_state_not_truncated) ... ok
|
||||||
|
test_duplicate_textual_keys_rejected (__main__.TypedTrees.test_duplicate_textual_keys_rejected) ... ok
|
||||||
|
test_exact_and_types (__main__.TypedTrees.test_exact_and_types) ... ok
|
||||||
|
test_nested_order_all_paths (__main__.TypedTrees.test_nested_order_all_paths) ... ok
|
||||||
|
test_nonstring_keys_keep_types_and_values (__main__.TypedTrees.test_nonstring_keys_keep_types_and_values) ... ok
|
||||||
|
test_unsupported_and_malformed (__main__.TypedTrees.test_unsupported_and_malformed) ... ok
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 179 tests in 206.326s
|
||||||
|
|
||||||
|
OK
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,864 @@
|
|||||||
|
extends SceneTree
|
||||||
|
## S5 external guarded probe. Native admission remains Root.
|
||||||
|
## Large trees, raw S/K/C bytes and package files are content-addressed gzip blobs
|
||||||
|
## (evidence/blobs/<sha>.gz), written once; records keep {"blob": sha}. R and O both run E1-E5.
|
||||||
|
const INLINE_LIMIT: int = 65536
|
||||||
|
const FIXTURE_SHA: String = "eb4f770071eb07cd7e136fe54c3f78768cc8de7a4264e62a9af1f06a8f90f9bd"
|
||||||
|
const K_FIELDS: Array = ["absolute_minute", "speed", "paused", "snapshot_version", "_skip_next_process", "_pause_request_serial", "_abort_current_tick_requested", "_last_tick_advanced"]
|
||||||
|
var clock: Variant
|
||||||
|
var runtime: Variant
|
||||||
|
var main: Variant
|
||||||
|
var role: String
|
||||||
|
var report: Dictionary = {}
|
||||||
|
var lifecycle: Dictionary = {"stage": "S5", "errors": [], "preparation": [], "files": []}
|
||||||
|
var blob_index: Dictionary = {}
|
||||||
|
var transport_cache: Dictionary = {}
|
||||||
|
var last_snapshot_value: Dictionary = {}
|
||||||
|
var subscribed_stream: Variant = null
|
||||||
|
var known_event_ids: Dictionary = {}
|
||||||
|
var finished: bool = false
|
||||||
|
var bound: bool = false
|
||||||
|
var recording: bool = false
|
||||||
|
var connected: bool = false
|
||||||
|
var initial_inventory: Dictionary = {}
|
||||||
|
var warm_signals: Array = []
|
||||||
|
var scenario_active: bool = false
|
||||||
|
var scenario_events: Array = []
|
||||||
|
var scenario_signals: Array = []
|
||||||
|
var b1_snapshot: Dictionary = {}
|
||||||
|
var snapshot_reference: Dictionary = {}
|
||||||
|
var state_reference: Dictionary = {}
|
||||||
|
|
||||||
|
func _initialize() -> void:
|
||||||
|
call_deferred("begin")
|
||||||
|
|
||||||
|
func demand(ok: bool, message: String) -> bool:
|
||||||
|
if not ok: lifecycle.errors.append(message)
|
||||||
|
return ok
|
||||||
|
|
||||||
|
func hashed(bytes: PackedByteArray) -> String:
|
||||||
|
var context: HashingContext = HashingContext.new()
|
||||||
|
context.start(HashingContext.HASH_SHA256)
|
||||||
|
context.update(bytes)
|
||||||
|
return context.finish().hex_encode()
|
||||||
|
|
||||||
|
func json_text(value: Variant) -> String:
|
||||||
|
return JSON.stringify(value, "", false, true)
|
||||||
|
|
||||||
|
func f64(value: float) -> String:
|
||||||
|
var bytes: PackedByteArray = PackedByteArray()
|
||||||
|
bytes.resize(8)
|
||||||
|
bytes.encode_double(0, value)
|
||||||
|
return bytes.hex_encode()
|
||||||
|
|
||||||
|
# get_typed_script() returns a null Object for unscripted typed containers; it is
|
||||||
|
# transported as NIL. A scripted element type is not supported and fails loudly.
|
||||||
|
func typed_script(script: Variant) -> Array:
|
||||||
|
if script == null: return [0]
|
||||||
|
demand(false, "unsupported typed script metadata")
|
||||||
|
return []
|
||||||
|
|
||||||
|
func typed_info(value: Variant) -> Variant:
|
||||||
|
if typeof(value) == TYPE_ARRAY and value.is_typed():
|
||||||
|
return [encode(value.get_typed_builtin()), encode(value.get_typed_class_name()), typed_script(value.get_typed_script())]
|
||||||
|
if typeof(value) == TYPE_DICTIONARY and value.is_typed():
|
||||||
|
return [[encode(value.get_typed_key_builtin()), encode(value.get_typed_key_class_name()), typed_script(value.get_typed_key_script())], [encode(value.get_typed_value_builtin()), encode(value.get_typed_value_class_name()), typed_script(value.get_typed_value_script())]]
|
||||||
|
return null
|
||||||
|
|
||||||
|
func encode(value: Variant) -> Array:
|
||||||
|
var t: int = typeof(value)
|
||||||
|
match t:
|
||||||
|
TYPE_NIL: return [0]
|
||||||
|
TYPE_BOOL: return [1, 1 if value else 0]
|
||||||
|
TYPE_INT: return [2, value]
|
||||||
|
TYPE_FLOAT: return [3, f64(value)]
|
||||||
|
TYPE_STRING, TYPE_STRING_NAME, TYPE_NODE_PATH: return [t, str(value)]
|
||||||
|
TYPE_RID, TYPE_OBJECT, TYPE_CALLABLE, TYPE_SIGNAL:
|
||||||
|
demand(false, "unsupported Variant in transport: " + str(t))
|
||||||
|
return []
|
||||||
|
TYPE_DICTIONARY:
|
||||||
|
var pairs: Array = []
|
||||||
|
for key: Variant in value: pairs.append([encode(key), encode(value[key])])
|
||||||
|
return [27, pairs, typed_info(value)]
|
||||||
|
TYPE_ARRAY:
|
||||||
|
var children: Array = []
|
||||||
|
for child: Variant in value: children.append(encode(child))
|
||||||
|
return [28, children, typed_info(value)]
|
||||||
|
TYPE_PACKED_BYTE_ARRAY: return [29, Marshalls.raw_to_base64(value)]
|
||||||
|
var parts: Array = []
|
||||||
|
match t:
|
||||||
|
TYPE_VECTOR2, TYPE_VECTOR2I: parts = [value.x, value.y]
|
||||||
|
TYPE_RECT2, TYPE_RECT2I: parts = [value.position.x, value.position.y, value.size.x, value.size.y]
|
||||||
|
TYPE_VECTOR3, TYPE_VECTOR3I: parts = [value.x, value.y, value.z]
|
||||||
|
TYPE_TRANSFORM2D: parts = [value.x.x, value.x.y, value.y.x, value.y.y, value.origin.x, value.origin.y]
|
||||||
|
TYPE_VECTOR4, TYPE_VECTOR4I: parts = [value.x, value.y, value.z, value.w]
|
||||||
|
TYPE_PLANE: parts = [value.normal.x, value.normal.y, value.normal.z, value.d]
|
||||||
|
TYPE_QUATERNION: parts = [value.x, value.y, value.z, value.w]
|
||||||
|
TYPE_AABB: parts = [value.position.x, value.position.y, value.position.z, value.size.x, value.size.y, value.size.z]
|
||||||
|
TYPE_BASIS: parts = basis_parts(value)
|
||||||
|
TYPE_TRANSFORM3D: parts = basis_parts(value.basis) + [value.origin.x, value.origin.y, value.origin.z]
|
||||||
|
TYPE_PROJECTION:
|
||||||
|
for column: int in range(4):
|
||||||
|
for row: int in range(4): parts.append(value[column][row])
|
||||||
|
TYPE_COLOR: parts = [value.r, value.g, value.b, value.a]
|
||||||
|
_:
|
||||||
|
if t >= TYPE_PACKED_INT32_ARRAY and t <= TYPE_PACKED_VECTOR4_ARRAY:
|
||||||
|
for child: Variant in value: parts.append(child)
|
||||||
|
else: demand(false, "unknown Variant type: " + str(t))
|
||||||
|
var nodes: Array = []
|
||||||
|
for part: Variant in parts: nodes.append(encode(part))
|
||||||
|
return [t, nodes]
|
||||||
|
|
||||||
|
func basis_parts(value: Basis) -> Array:
|
||||||
|
return [value.x.x, value.x.y, value.x.z, value.y.x, value.y.y, value.y.z, value.z.x, value.z.y, value.z.z]
|
||||||
|
|
||||||
|
func decode(node: Array) -> Variant:
|
||||||
|
if node.is_empty():
|
||||||
|
demand(false, "empty typed node")
|
||||||
|
return null
|
||||||
|
var t: int = node[0]
|
||||||
|
if t == TYPE_NIL: return null
|
||||||
|
var p: Variant = node[1]
|
||||||
|
match t:
|
||||||
|
TYPE_BOOL: return p == 1
|
||||||
|
TYPE_INT: return int(p)
|
||||||
|
TYPE_FLOAT: return String(p).hex_decode().decode_double(0)
|
||||||
|
TYPE_STRING: return String(p)
|
||||||
|
TYPE_STRING_NAME: return StringName(p)
|
||||||
|
TYPE_NODE_PATH: return NodePath(p)
|
||||||
|
TYPE_PACKED_BYTE_ARRAY: return Marshalls.base64_to_raw(p)
|
||||||
|
TYPE_DICTIONARY:
|
||||||
|
var result: Dictionary = {}
|
||||||
|
if node[2] != null:
|
||||||
|
var ki: Array = node[2][0]
|
||||||
|
var vi: Array = node[2][1]
|
||||||
|
result = Dictionary({}, decode(ki[0]), decode(ki[1]), decode(ki[2]), decode(vi[0]), decode(vi[1]), decode(vi[2]))
|
||||||
|
for pair: Array in p: result[decode(pair[0])] = decode(pair[1])
|
||||||
|
return result
|
||||||
|
var values: Array = []
|
||||||
|
for child: Array in p: values.append(decode(child))
|
||||||
|
if t == TYPE_ARRAY:
|
||||||
|
if node[2] != null:
|
||||||
|
var info: Array = node[2]
|
||||||
|
return Array(values, decode(info[0]), decode(info[1]), decode(info[2]))
|
||||||
|
return values
|
||||||
|
match t:
|
||||||
|
TYPE_VECTOR2: return Vector2(values[0], values[1])
|
||||||
|
TYPE_VECTOR2I: return Vector2i(values[0], values[1])
|
||||||
|
TYPE_RECT2: return Rect2(values[0], values[1], values[2], values[3])
|
||||||
|
TYPE_RECT2I: return Rect2i(values[0], values[1], values[2], values[3])
|
||||||
|
TYPE_VECTOR3: return Vector3(values[0], values[1], values[2])
|
||||||
|
TYPE_VECTOR3I: return Vector3i(values[0], values[1], values[2])
|
||||||
|
TYPE_TRANSFORM2D: return Transform2D(Vector2(values[0], values[1]), Vector2(values[2], values[3]), Vector2(values[4], values[5]))
|
||||||
|
TYPE_VECTOR4: return Vector4(values[0], values[1], values[2], values[3])
|
||||||
|
TYPE_VECTOR4I: return Vector4i(values[0], values[1], values[2], values[3])
|
||||||
|
TYPE_PLANE: return Plane(Vector3(values[0], values[1], values[2]), values[3])
|
||||||
|
TYPE_QUATERNION: return Quaternion(values[0], values[1], values[2], values[3])
|
||||||
|
TYPE_AABB: return AABB(Vector3(values[0], values[1], values[2]), Vector3(values[3], values[4], values[5]))
|
||||||
|
TYPE_BASIS: return decoded_basis(values)
|
||||||
|
TYPE_TRANSFORM3D: return Transform3D(decoded_basis(values), Vector3(values[9], values[10], values[11]))
|
||||||
|
TYPE_PROJECTION: return Projection(Vector4(values[0], values[1], values[2], values[3]), Vector4(values[4], values[5], values[6], values[7]), Vector4(values[8], values[9], values[10], values[11]), Vector4(values[12], values[13], values[14], values[15]))
|
||||||
|
TYPE_COLOR: return Color(values[0], values[1], values[2], values[3])
|
||||||
|
TYPE_PACKED_INT32_ARRAY: return PackedInt32Array(values)
|
||||||
|
TYPE_PACKED_INT64_ARRAY: return PackedInt64Array(values)
|
||||||
|
TYPE_PACKED_FLOAT32_ARRAY: return PackedFloat32Array(values)
|
||||||
|
TYPE_PACKED_FLOAT64_ARRAY: return PackedFloat64Array(values)
|
||||||
|
TYPE_PACKED_STRING_ARRAY: return PackedStringArray(values)
|
||||||
|
TYPE_PACKED_VECTOR2_ARRAY: return PackedVector2Array(values)
|
||||||
|
TYPE_PACKED_VECTOR3_ARRAY: return PackedVector3Array(values)
|
||||||
|
TYPE_PACKED_COLOR_ARRAY: return PackedColorArray(values)
|
||||||
|
TYPE_PACKED_VECTOR4_ARRAY: return PackedVector4Array(values)
|
||||||
|
demand(false, "unsupported decode type: " + str(t))
|
||||||
|
return null
|
||||||
|
|
||||||
|
func decoded_basis(v: Array) -> Basis:
|
||||||
|
return Basis(Vector3(v[0], v[1], v[2]), Vector3(v[3], v[4], v[5]), Vector3(v[6], v[7], v[8]))
|
||||||
|
|
||||||
|
# Write each distinct content once; the name is the SHA-256 of the uncompressed bytes.
|
||||||
|
func store_blob(bytes: PackedByteArray) -> Dictionary:
|
||||||
|
var digest: String = hashed(bytes)
|
||||||
|
if blob_index.has(digest): return {"blob": digest}
|
||||||
|
if not demand(bound, "blob write before guard binding"): return {"blob": digest}
|
||||||
|
var directory: String = "user://evidence/blobs"
|
||||||
|
var mkdir: int = DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path(directory))
|
||||||
|
if not demand(mkdir == OK, "blob mkdir failed"): return {"blob": digest}
|
||||||
|
var path: String = directory.path_join(digest + ".gz")
|
||||||
|
if not demand(not FileAccess.file_exists(path), "refuse blob overwrite: " + digest): return {"blob": digest}
|
||||||
|
var packed: PackedByteArray = bytes.compress(FileAccess.COMPRESSION_GZIP)
|
||||||
|
if not demand(packed.decompress_dynamic(-1, FileAccess.COMPRESSION_GZIP) == bytes, "blob gzip roundtrip failed: " + digest): return {"blob": digest}
|
||||||
|
var file: FileAccess = FileAccess.open(path, FileAccess.WRITE)
|
||||||
|
if not demand(file != null, "blob open failed: " + digest): return {"blob": digest}
|
||||||
|
file.store_buffer(packed)
|
||||||
|
file.flush()
|
||||||
|
var error: int = file.get_error()
|
||||||
|
file.close()
|
||||||
|
if not demand(error == OK, "blob write failed: " + digest): return {"blob": digest}
|
||||||
|
blob_index[digest] = {"bytes": bytes.size(), "gz_bytes": packed.size(), "gz_sha256": hashed(packed)}
|
||||||
|
return {"blob": digest}
|
||||||
|
|
||||||
|
# var_to_bytes distinguishes typed metadata, String/StringName, int/float and key order,
|
||||||
|
# so equal bytes mean an equal value and an equal tree; the proof is reused for them.
|
||||||
|
func transport(value: Variant) -> Dictionary:
|
||||||
|
var raw: PackedByteArray = var_to_bytes(value)
|
||||||
|
var raw_sha: String = hashed(raw)
|
||||||
|
if transport_cache.has(raw_sha): return transport_cache[raw_sha].duplicate(true)
|
||||||
|
var tree: Array = encode(value)
|
||||||
|
var rebuilt: PackedByteArray = var_to_bytes(decode(tree))
|
||||||
|
var ok: bool = raw == rebuilt
|
||||||
|
demand(ok, "Godot typed tree byte roundtrip failed")
|
||||||
|
var text: PackedByteArray = json_text(tree).to_utf8_buffer()
|
||||||
|
if text.size() <= INLINE_LIMIT:
|
||||||
|
return {"tree": tree, "tree_sha": hashed(text), "raw_bytes_sha": raw_sha, "roundtrip_ok": ok}
|
||||||
|
var record: Dictionary = {"tree": store_blob(text), "tree_sha": hashed(text), "raw_bytes_sha": raw_sha, "roundtrip_ok": ok}
|
||||||
|
transport_cache[raw_sha] = record
|
||||||
|
return record.duplicate(true)
|
||||||
|
|
||||||
|
func kernel_state() -> Dictionary:
|
||||||
|
var result: Dictionary = {}
|
||||||
|
for key: String in K_FIELDS: result[key] = clock.get(key)
|
||||||
|
result["_accumulator"] = f64(clock.get("_accumulator"))
|
||||||
|
var ids: Dictionary = {}
|
||||||
|
var handlers: Dictionary = clock.get("_phase_handlers")
|
||||||
|
for phase: Variant in handlers:
|
||||||
|
var names: Array = []
|
||||||
|
for key: Variant in handlers[phase]: names.append(str(key))
|
||||||
|
names.sort_custom(func(a: Variant, b: Variant) -> bool: return str(a) < str(b))
|
||||||
|
ids[str(phase)] = names
|
||||||
|
result["_phase_handlers"] = ids
|
||||||
|
var budget: Variant = clock.get("performance_budget")
|
||||||
|
var metrics: Dictionary = {}
|
||||||
|
for key: String in ["_samples", "_totals", "_sample_counts"]: metrics[key] = budget.get(key).duplicate(true)
|
||||||
|
result["performance_budget"] = metrics
|
||||||
|
return result
|
||||||
|
|
||||||
|
func cache_state() -> Dictionary:
|
||||||
|
var catalog: Variant = runtime.get("_mvp_manifest_cache_catalog")
|
||||||
|
var current: Variant = runtime.get("mvp_content_catalog")
|
||||||
|
return {"_mvp_manifest_cache_generation": runtime.get("_mvp_manifest_cache_generation"), "catalog_is_current": catalog == current,
|
||||||
|
"_mvp_manifest_cache_bytes": Marshalls.raw_to_base64(var_to_bytes(runtime.get("_mvp_manifest_cache"))),
|
||||||
|
"catalog_instance_id": str(catalog.get_instance_id()) if catalog != null else null, "current_catalog_instance_id": str(current.get_instance_id())}
|
||||||
|
|
||||||
|
func cache_filled() -> bool:
|
||||||
|
var current: Variant = runtime.get("mvp_content_catalog")
|
||||||
|
return runtime.get("_mvp_manifest_cache_catalog") == current and runtime.get("_mvp_manifest_cache_generation") == current.get_manifest_generation()
|
||||||
|
|
||||||
|
func prepare_cache(label: String) -> void:
|
||||||
|
var before: Dictionary = cache_state()
|
||||||
|
var filled: bool = cache_filled()
|
||||||
|
if not filled: runtime.create_snapshot()
|
||||||
|
lifecycle.preparation.append({"operation": "cache", "label": label, "before": before, "after": cache_state(), "filled_outside_observation": not filled})
|
||||||
|
demand(cache_filled(), "cache preparation failed")
|
||||||
|
|
||||||
|
func layers() -> Dictionary:
|
||||||
|
var k: Dictionary = kernel_state()
|
||||||
|
var c: Dictionary = cache_state()
|
||||||
|
var s: Dictionary = runtime.create_snapshot()
|
||||||
|
var kb: PackedByteArray = var_to_bytes(k)
|
||||||
|
var cb: PackedByteArray = var_to_bytes(c)
|
||||||
|
demand(kb == var_to_bytes(kernel_state()), "state witness changed full K")
|
||||||
|
demand(cb == var_to_bytes(cache_state()), "state witness changed full C")
|
||||||
|
return {"snapshot": s, "K": k, "C": c, "s_bytes": var_to_bytes(s), "k_bytes": kb, "c_bytes": cb}
|
||||||
|
|
||||||
|
func witness(value: Dictionary) -> Dictionary:
|
||||||
|
return {"S": hashed(value.s_bytes), "K": hashed(value.k_bytes), "C": hashed(value.c_bytes)}
|
||||||
|
|
||||||
|
func raw_layers(value: Dictionary) -> Dictionary:
|
||||||
|
return {"sha": witness(value), "S": store_blob(value.s_bytes), "K": store_blob(value.k_bytes), "C": store_blob(value.c_bytes), "kernel": value.K, "cache": value.C}
|
||||||
|
|
||||||
|
func checkpoint() -> void:
|
||||||
|
var before: Dictionary = layers()
|
||||||
|
var snapshot_value: Dictionary = runtime.create_snapshot()
|
||||||
|
var s: Dictionary = transport(snapshot_value)
|
||||||
|
var latest_value: Dictionary = runtime.get("latest_snapshot")
|
||||||
|
var latest_bytes: PackedByteArray = var_to_bytes(latest_value)
|
||||||
|
var digest: String = runtime.get("latest_digest")
|
||||||
|
var computed: String = SimulationDigest.compute(latest_value)
|
||||||
|
# Every checkpoint keeps a complete tree (blob reference); no diff chain.
|
||||||
|
var latest: Dictionary = {}
|
||||||
|
if latest_bytes == before.s_bytes:
|
||||||
|
latest = {"same_as_S": true, "tree_sha": s.tree_sha, "raw_bytes_sha": s.raw_bytes_sha, "roundtrip_ok": s.roundtrip_ok}
|
||||||
|
else: latest = transport(latest_value)
|
||||||
|
var after: Dictionary = layers()
|
||||||
|
demand(before.s_bytes == after.s_bytes and before.k_bytes == after.k_bytes and before.c_bytes == after.c_bytes, "observation changed full S/K/C")
|
||||||
|
demand(digest == computed, "latest digest self-consistency")
|
||||||
|
var cp: Dictionary = {"minute": clock.absolute_minute, "S": s, "latest": latest, "latest_digest": digest, "computed_latest_digest": computed,
|
||||||
|
"harness_normalized_digest": null, "K": before.K, "C": before.C, "observation": {"before": witness(before), "after": witness(after)}}
|
||||||
|
# Python joins F1-F3 and the labelled normalized tree digest, retaining this raw record.
|
||||||
|
var index: int = report.checkpoints.size()
|
||||||
|
write_evidence("checkpoint-%02d.json" % index, cp)
|
||||||
|
write_evidence("observation-%02d.json" % index, {"before": raw_layers(before), "after": raw_layers(after)})
|
||||||
|
report.checkpoints.append(cp)
|
||||||
|
last_snapshot_value = snapshot_value
|
||||||
|
|
||||||
|
func event_counts() -> Dictionary:
|
||||||
|
return {"counter": runtime.id_generator.get_counter(&"domain_event"), "published_ids_count": runtime.domain_events.get("_published_ids").size()}
|
||||||
|
|
||||||
|
func observe_event(event: Variant) -> void:
|
||||||
|
known_event_ids[str(event.event_id)] = true
|
||||||
|
if scenario_active:
|
||||||
|
scenario_events.append(transport(event.to_dictionary()))
|
||||||
|
return
|
||||||
|
if not recording: return
|
||||||
|
var value: Dictionary = event.to_dictionary()
|
||||||
|
report.events.append({"sequence": report.events.size(), "transport": transport(value), "original_field_types": {
|
||||||
|
"event_id": typeof(event.event_id), "event_type": typeof(event.event_type), "absolute_minute": typeof(event.absolute_minute), "source_service": typeof(event.source_service),
|
||||||
|
"entity_ids": {"type": typeof(event.entity_ids), "typed_info": typed_info(event.entity_ids)},
|
||||||
|
"payload": {"type": typeof(event.payload), "typed_info": typed_info(event.payload)}, "causation_command_id": typeof(event.causation_command_id)}})
|
||||||
|
|
||||||
|
# A successful product restore replaces runtime.domain_events with a new stream that does
|
||||||
|
# not carry subscribers. Record that fact, recover from the live stream's recent_events()
|
||||||
|
# the events the observer could not receive, and subscribe to the live stream again.
|
||||||
|
func follow_event_stream() -> Dictionary:
|
||||||
|
var current: Variant = runtime.domain_events
|
||||||
|
if current == subscribed_stream: return {"replaced": false}
|
||||||
|
var subscribers: Array = []
|
||||||
|
var all_subscribers: Dictionary = current.get("_subscribers")
|
||||||
|
for event_type: Variant in all_subscribers:
|
||||||
|
for id: Variant in all_subscribers[event_type]: subscribers.append(str(event_type) + "/" + str(id))
|
||||||
|
subscribers.sort_custom(func(a: Variant, b: Variant) -> bool: return str(a) < str(b))
|
||||||
|
var recovered: Array = []
|
||||||
|
for event: Variant in current.recent_events():
|
||||||
|
if known_event_ids.has(str(event.event_id)): continue
|
||||||
|
recovered.append(str(event.event_id))
|
||||||
|
observe_event(event)
|
||||||
|
demand(current.subscribe(&"*", &"p28_eq_observer", observe_event), "wildcard resubscription failed")
|
||||||
|
subscribed_stream = current
|
||||||
|
var fact: Dictionary = {"replaced": true, "new_stream_subscribers_before": subscribers, "recovered_event_ids": recovered}
|
||||||
|
lifecycle.event_stream_replacements.append(fact.duplicate(true))
|
||||||
|
return fact
|
||||||
|
|
||||||
|
func observe_snapshot(_snapshot: Dictionary, _digest: String) -> void:
|
||||||
|
snapshot_reference = _snapshot
|
||||||
|
record_signal("snapshot_published")
|
||||||
|
|
||||||
|
func observe_state(_snapshot: Dictionary) -> void:
|
||||||
|
state_reference = _snapshot
|
||||||
|
record_signal("state_updated")
|
||||||
|
|
||||||
|
# The domain_event counter at emission places each signal in the event order, so every
|
||||||
|
# publish can be bound to its cause (tick end, successful restore, completed command).
|
||||||
|
func record_signal(name: String) -> void:
|
||||||
|
var row: Dictionary = {"signal": name, "minute": clock.absolute_minute, "event_counter": runtime.id_generator.get_counter(&"domain_event"),
|
||||||
|
"command_counter": runtime.get("_next_command_id")}
|
||||||
|
if scenario_active: scenario_signals.append(row)
|
||||||
|
elif recording: report.signal_order.append(row)
|
||||||
|
else: warm_signals.append(row)
|
||||||
|
|
||||||
|
func inventory() -> Dictionary:
|
||||||
|
var result: Dictionary = {}
|
||||||
|
for sig: Signal in [runtime.snapshot_published, runtime.state_updated]:
|
||||||
|
var rows: Array = []
|
||||||
|
for connection: Dictionary in sig.get_connections():
|
||||||
|
var callback: Callable = connection.callable
|
||||||
|
rows.append({"object": str(callback.get_object_id()), "method": str(callback.get_method()), "flags": connection.flags})
|
||||||
|
rows.sort_custom(func(a: Dictionary, b: Dictionary) -> bool: return json_text(a) < json_text(b))
|
||||||
|
result[str(sig.get_name())] = rows
|
||||||
|
var subscribers: Array = []
|
||||||
|
var all_subscribers: Dictionary = runtime.domain_events.get("_subscribers")
|
||||||
|
for event_type: Variant in all_subscribers:
|
||||||
|
for id: Variant in all_subscribers[event_type]:
|
||||||
|
var callback: Callable = all_subscribers[event_type][id]
|
||||||
|
subscribers.append({"event_type": str(event_type), "id": str(id), "object": str(callback.get_object_id()), "method": str(callback.get_method())})
|
||||||
|
subscribers.sort_custom(func(a: Dictionary, b: Dictionary) -> bool: return json_text(a) < json_text(b))
|
||||||
|
result["subscribers"] = subscribers
|
||||||
|
return result
|
||||||
|
|
||||||
|
func step() -> void:
|
||||||
|
var before: int = clock.absolute_minute
|
||||||
|
demand(clock.paused, "clock resumed")
|
||||||
|
clock.advance_minutes(1)
|
||||||
|
demand(clock.absolute_minute == before + 1 and clock.paused, "manual step failed")
|
||||||
|
await process_frame
|
||||||
|
demand(clock.absolute_minute == before + 1 and clock.paused, "inter-tick frame advanced clock")
|
||||||
|
|
||||||
|
func bind_profile() -> bool:
|
||||||
|
var path: String = OS.get_environment("THE_TREE_PACK_PROFILE_REPORT")
|
||||||
|
var file: FileAccess = FileAccess.open(path, FileAccess.READ)
|
||||||
|
if not demand(file != null, "guard receipt missing"): return false
|
||||||
|
# Godot parses JSON numbers as float; the exact receipt text is retained for binding.
|
||||||
|
var receipt_text: String = file.get_as_text()
|
||||||
|
var receipt: Variant = JSON.parse_string(receipt_text)
|
||||||
|
file.close()
|
||||||
|
if not demand(receipt is Dictionary and receipt.get("verified") == true, "guard receipt unverified"): return false
|
||||||
|
var actual: Variant = receipt.get("actual_user_data_dir")
|
||||||
|
var live_root: String = ProjectSettings.globalize_path("user://").simplify_path()
|
||||||
|
if not demand(actual is String and actual == live_root and OS.get_user_data_dir() == actual, "live profile differs from guard actual_user_data_dir"): return false
|
||||||
|
report["profile_root"] = {"root": live_root, "actual_user_data_dir": actual}
|
||||||
|
lifecycle["guard"] = {"path": path, "sha256": FileAccess.get_sha256(path), "receipt": receipt, "receipt_text": receipt_text, "live_root": live_root}
|
||||||
|
bound = true
|
||||||
|
return true
|
||||||
|
|
||||||
|
func write_evidence(name: String, value: Variant) -> void:
|
||||||
|
if not demand(bound, "evidence write before guard binding"): return
|
||||||
|
var directory: String = "user://evidence"
|
||||||
|
# The guard switches the user dir at runtime; globalize first, as the RESTART helpers do.
|
||||||
|
var mkdir: int = DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path(directory))
|
||||||
|
if not demand(mkdir == OK, "evidence mkdir failed"): return
|
||||||
|
var path: String = directory.path_join(name)
|
||||||
|
if not demand(not FileAccess.file_exists(path), "refuse evidence overwrite: " + name): return
|
||||||
|
var file: FileAccess = FileAccess.open(path, FileAccess.WRITE)
|
||||||
|
if not demand(file != null, "evidence open failed: " + name): return
|
||||||
|
var bytes: PackedByteArray = json_text(value).to_utf8_buffer()
|
||||||
|
file.store_buffer(bytes)
|
||||||
|
file.flush()
|
||||||
|
var error: int = file.get_error()
|
||||||
|
file.close()
|
||||||
|
demand(error == OK, "evidence write failed: " + name)
|
||||||
|
lifecycle.files.append({"path": "evidence/" + name, "bytes": bytes.size(), "sha256": hashed(bytes)})
|
||||||
|
|
||||||
|
func begin() -> void:
|
||||||
|
clock = root.get_node("GameClock")
|
||||||
|
runtime = root.get_node("SimulationRuntime")
|
||||||
|
role = OS.get_environment("THE_TREE_EQ_ROLE")
|
||||||
|
report = {"schema": "p28-02-eq/typed-v1", "role": role, "profile_root": null, "checkpoints": [], "events": [], "event_start": null, "event_end": null, "signal_order": [], "scenarios": []}
|
||||||
|
if not demand(role in ["R", "O"], "unknown EQ role") or not bind_profile():
|
||||||
|
finish()
|
||||||
|
return
|
||||||
|
# Stage 1: public preparation only. O retains the fresh 360-minute state.
|
||||||
|
var k0: Dictionary = kernel_state()
|
||||||
|
clock.set_paused(true)
|
||||||
|
lifecycle.preparation.append({"operation": "initial_pause", "before": k0, "after": kernel_state()})
|
||||||
|
if role == "R":
|
||||||
|
var path: String = OS.get_environment("THE_TREE_P28_FIXTURE")
|
||||||
|
if not demand(FileAccess.get_sha256(path) == FIXTURE_SHA, "fixture SHA mismatch"):
|
||||||
|
finish()
|
||||||
|
return
|
||||||
|
var file: FileAccess = FileAccess.open(path, FileAccess.READ)
|
||||||
|
if not demand(file != null, "fixture open failed"):
|
||||||
|
finish()
|
||||||
|
return
|
||||||
|
var fixture: Variant = file.get_var(false)
|
||||||
|
file.close()
|
||||||
|
if not demand(fixture is Dictionary, "fixture is not Dictionary"):
|
||||||
|
finish()
|
||||||
|
return
|
||||||
|
var restored: bool = runtime.restore_snapshot(fixture)
|
||||||
|
lifecycle.preparation.append({"operation": "fixture_restore", "ok": restored, "input_sha256": FIXTURE_SHA, "K": kernel_state(), "C": cache_state()})
|
||||||
|
demand(restored, "fixture restore failed")
|
||||||
|
prepare_cache("restored")
|
||||||
|
lifecycle["restored"] = raw_layers(layers())
|
||||||
|
k0 = kernel_state()
|
||||||
|
clock.set_paused(true)
|
||||||
|
lifecycle.preparation.append({"operation": "restored_pause", "before": k0, "after": kernel_state()})
|
||||||
|
prepare_cache("before_main")
|
||||||
|
# Stage 2: same main and two deferred frames as DIAG, without controls/hooks.
|
||||||
|
lifecycle["before_main"] = raw_layers(layers())
|
||||||
|
main = load("res://scenes/main/main.tscn").instantiate()
|
||||||
|
root.add_child(main)
|
||||||
|
lifecycle["after_main"] = raw_layers(layers())
|
||||||
|
await process_frame
|
||||||
|
lifecycle["frame1"] = raw_layers(layers())
|
||||||
|
await process_frame
|
||||||
|
lifecycle["frame2"] = raw_layers(layers())
|
||||||
|
var ops: Dictionary = main.get("_operations_start_report").duplicate(true)
|
||||||
|
lifecycle["ops"] = ops
|
||||||
|
lifecycle["save_policy"] = runtime.get_save_policy()
|
||||||
|
demand(ops.get("code") == "INVALID_START_TIME" if role == "R" else ops.get("ok") == true, "unexpected main Ops result")
|
||||||
|
demand(clock.paused and clock.absolute_minute == (602 if role == "R" else 360), "B0 clock")
|
||||||
|
lifecycle["B0"] = raw_layers(layers())
|
||||||
|
initial_inventory = inventory()
|
||||||
|
runtime.snapshot_published.connect(observe_snapshot)
|
||||||
|
runtime.state_updated.connect(observe_state)
|
||||||
|
demand(runtime.domain_events.subscribe(&"*", &"p28_eq_observer", observe_event), "wildcard subscription failed")
|
||||||
|
subscribed_stream = runtime.domain_events
|
||||||
|
lifecycle["event_stream_replacements"] = []
|
||||||
|
connected = true
|
||||||
|
lifecycle["observer_before"] = initial_inventory
|
||||||
|
lifecycle["observer_connected"] = inventory()
|
||||||
|
# Stage 3: warm, excluded from E2; warm signal order is retained separately.
|
||||||
|
for unused: int in range(30):
|
||||||
|
if not lifecycle.errors.is_empty(): break
|
||||||
|
await step()
|
||||||
|
prepare_cache("B1")
|
||||||
|
lifecycle["B1"] = raw_layers(layers())
|
||||||
|
demand(clock.absolute_minute == (632 if role == "R" else 390), "B1 clock")
|
||||||
|
lifecycle["measurement"] = {"probe_object": str(get_instance_id()), "connections": inventory(), "start_minute": clock.absolute_minute}
|
||||||
|
report.event_start = event_counts()
|
||||||
|
recording = true
|
||||||
|
checkpoint()
|
||||||
|
# The B1 value itself; its transport proves decode(tree) has the same bytes.
|
||||||
|
b1_snapshot = last_snapshot_value.duplicate(true)
|
||||||
|
for event_id: Variant in b1_snapshot[&"systems"][&"runtime"][&"domain_events"]["published_ids"]: known_event_ids[str(event_id)] = true
|
||||||
|
# Stage 4: B1 and 30 exact checkpoints, uncapped events through the last frame.
|
||||||
|
for unused: int in range(30):
|
||||||
|
if not lifecycle.errors.is_empty(): break
|
||||||
|
await step()
|
||||||
|
checkpoint()
|
||||||
|
report.event_end = event_counts()
|
||||||
|
recording = false
|
||||||
|
# Stage 5: E3 dedicated intervals, after measured event/signal closure.
|
||||||
|
lifecycle["outside"] = raw_layers(layers())
|
||||||
|
# Any harness error already fails the run; stop before further expensive scenarios.
|
||||||
|
if lifecycle.errors.is_empty(): run_e3()
|
||||||
|
if lifecycle.errors.is_empty(): run_e4()
|
||||||
|
if lifecycle.errors.is_empty(): run_e5()
|
||||||
|
finish()
|
||||||
|
|
||||||
|
func finish() -> void:
|
||||||
|
if finished: return
|
||||||
|
finished = true
|
||||||
|
# Stage 6: restore observers, preserve every error.
|
||||||
|
if connected:
|
||||||
|
runtime.snapshot_published.disconnect(observe_snapshot)
|
||||||
|
runtime.state_updated.disconnect(observe_state)
|
||||||
|
runtime.domain_events.unsubscribe(&"*", &"p28_eq_observer")
|
||||||
|
lifecycle["observer_disconnected"] = inventory()
|
||||||
|
demand(json_text(initial_inventory) == json_text(lifecycle.observer_disconnected), "observer inventory not restored")
|
||||||
|
lifecycle["warm_signals"] = warm_signals
|
||||||
|
lifecycle["stop_reason"] = "S5_complete" if lifecycle.errors.is_empty() else "failed"
|
||||||
|
if bound:
|
||||||
|
write_evidence("events.json", report.events)
|
||||||
|
write_evidence("report.json", report)
|
||||||
|
lifecycle["blobs"] = blob_index.duplicate(true)
|
||||||
|
write_evidence("lifecycle.json", lifecycle.duplicate(true))
|
||||||
|
print("P28_02_EQ_REPORT=" + json_text(report))
|
||||||
|
if is_instance_valid(main): main.ui_audio_window_close_drained.connect(audio_close, CONNECT_ONE_SHOT)
|
||||||
|
root.close_requested.emit()
|
||||||
|
|
||||||
|
func audio_close(result: Dictionary) -> void:
|
||||||
|
write_evidence("audio-close.json", result)
|
||||||
|
|
||||||
|
func e3_observation() -> Dictionary:
|
||||||
|
var before: Dictionary = layers()
|
||||||
|
var s: Dictionary = transport(runtime.create_snapshot())
|
||||||
|
var latest_value: Dictionary = runtime.get("latest_snapshot")
|
||||||
|
var latest: Dictionary = transport(latest_value)
|
||||||
|
var digest: String = runtime.get("latest_digest")
|
||||||
|
var computed: String = SimulationDigest.compute(latest_value)
|
||||||
|
var after: Dictionary = layers()
|
||||||
|
demand(before.s_bytes == after.s_bytes and before.k_bytes == after.k_bytes and before.c_bytes == after.c_bytes, "E3 observation changed full S/K/C")
|
||||||
|
var cp: Dictionary = {"minute": clock.absolute_minute, "S": s, "latest": latest, "latest_digest": digest, "computed_latest_digest": computed,
|
||||||
|
"harness_normalized_digest": null, "K": before.K, "C": before.C, "observation": {"before": witness(before), "after": witness(after)}}
|
||||||
|
return {"checkpoint": cp, "raw": {"before": raw_layers(before), "after": raw_layers(after)},
|
||||||
|
"K_tree": transport(before.K), "C_tree": transport(before.C)}
|
||||||
|
|
||||||
|
func e3_input(kind: String) -> Dictionary:
|
||||||
|
var value: Dictionary = b1_snapshot.duplicate(true)
|
||||||
|
match kind:
|
||||||
|
"missing_key": value.erase(&"clock")
|
||||||
|
"wrong_type": value[&"clock"][&"absolute_minute"] = "x"
|
||||||
|
"out_of_range": value[&"clock"][&"speed"] = 9
|
||||||
|
"duplicate_published_ids":
|
||||||
|
var ids: Array = value[&"systems"][&"runtime"][&"domain_events"]["published_ids"]
|
||||||
|
if demand(not ids.is_empty(), "B1 has no published ID to duplicate"): ids.append(ids[0])
|
||||||
|
"duplicate_facility":
|
||||||
|
var instances: Array = value[&"systems"][&"runtime"][&"facilities"][&"instances"]
|
||||||
|
if not instances.is_empty(): instances.append(instances[0].duplicate(true))
|
||||||
|
return value
|
||||||
|
|
||||||
|
func e3_package(path: String) -> Dictionary:
|
||||||
|
var files: Dictionary = {}
|
||||||
|
for name: String in ["manifest.json", "world.bin", "thumbnail.png", "journal.log"]:
|
||||||
|
var target: String = path.path_join(name)
|
||||||
|
if not FileAccess.file_exists(target):
|
||||||
|
files[name] = null
|
||||||
|
continue
|
||||||
|
var file: FileAccess = FileAccess.open(target, FileAccess.READ)
|
||||||
|
if not demand(file != null, "package evidence open"): continue
|
||||||
|
var bytes: PackedByteArray = file.get_buffer(file.get_length())
|
||||||
|
file.close()
|
||||||
|
files[name] = {"bytes": store_blob(bytes), "sha256": hashed(bytes)}
|
||||||
|
return files
|
||||||
|
|
||||||
|
func e3_prepare_package(path: String, input: Dictionary, kind: String) -> Dictionary:
|
||||||
|
# This helper is called only within run_e3's explicitly opened interval.
|
||||||
|
demand(scenario_active, "package preparation outside E3")
|
||||||
|
var budget_before: Dictionary = {}
|
||||||
|
for key: String in ["_samples", "_totals", "_sample_counts"]:
|
||||||
|
budget_before[key] = SaveService._performance_budget.get(key).duplicate(true)
|
||||||
|
var saved: Dictionary = SaveService.save_snapshot(path, input, {})
|
||||||
|
var info: Dictionary = {"input": transport(input), "save_return": transport(saved), "original": e3_package(path), "budget_before": transport(budget_before)}
|
||||||
|
if saved.get(&"ok") == true:
|
||||||
|
if kind in ["missing_key", "wrong_type", "out_of_range"]:
|
||||||
|
var manifest_path: String = path.path_join("manifest.json")
|
||||||
|
var file: FileAccess = FileAccess.open(manifest_path, FileAccess.READ)
|
||||||
|
if not demand(file != null, "manifest read"): return info
|
||||||
|
var text: String = file.get_as_text()
|
||||||
|
file.close()
|
||||||
|
# Edit only the one key line. Re-serializing a parsed manifest would turn every
|
||||||
|
# JSON integer into a float (Godot parses numbers as float), changing other fields.
|
||||||
|
var key: String = "checksum_world" if kind == "missing_key" else "format_version"
|
||||||
|
var prefix: String = "\t\"" + key + "\": "
|
||||||
|
var lines: PackedStringArray = PackedStringArray()
|
||||||
|
var found: int = 0
|
||||||
|
for line: String in text.split("\n"):
|
||||||
|
if line.begins_with(prefix):
|
||||||
|
found += 1
|
||||||
|
var comma: String = "," if line.ends_with(",") else ""
|
||||||
|
if kind == "missing_key":
|
||||||
|
demand(comma == ",", "removed manifest key must not be last")
|
||||||
|
continue
|
||||||
|
line = prefix + ("\"x\"" if kind == "wrong_type" else "2147483647") + comma
|
||||||
|
lines.append(line)
|
||||||
|
if not demand(found == 1, "manifest key line: " + key): return info
|
||||||
|
file = FileAccess.open(manifest_path, FileAccess.WRITE)
|
||||||
|
if not demand(file != null, "manifest write"): return info
|
||||||
|
file.store_string("\n".join(lines))
|
||||||
|
file.close()
|
||||||
|
elif kind == "tampered_world":
|
||||||
|
var world_path: String = path.path_join("world.bin")
|
||||||
|
var file: FileAccess = FileAccess.open(world_path, FileAccess.READ_WRITE)
|
||||||
|
if not demand(file != null and file.get_length() > 0, "world tamper input"): return info
|
||||||
|
var offset: int = file.get_length() / 2
|
||||||
|
file.seek(offset)
|
||||||
|
var old: int = file.get_8()
|
||||||
|
file.seek(offset)
|
||||||
|
file.store_8(old ^ 0x01)
|
||||||
|
file.close()
|
||||||
|
info["tamper"] = {"offset": offset, "before": old, "after": old ^ 0x01}
|
||||||
|
info["modified"] = e3_package(path)
|
||||||
|
return info
|
||||||
|
|
||||||
|
func run_e3() -> void:
|
||||||
|
var facility_count: int = b1_snapshot[&"systems"][&"runtime"][&"facilities"][&"instances"].size()
|
||||||
|
var kinds: Array = ["missing_key", "wrong_type", "out_of_range", "duplicate_published_ids", "duplicate_facility", "tampered_world"]
|
||||||
|
lifecycle["e3"] = []
|
||||||
|
lifecycle["e3_b1"] = transport(b1_snapshot)
|
||||||
|
for api: String in ["restore_snapshot", "validate", "load_from_path"]:
|
||||||
|
for kind: String in kinds:
|
||||||
|
var id: String = "E3/" + api + "/" + kind
|
||||||
|
var input: Dictionary = e3_input(kind)
|
||||||
|
var applicable: bool = true
|
||||||
|
var reason: Variant = null
|
||||||
|
if kind == "tampered_world" and api != "load_from_path":
|
||||||
|
applicable = false
|
||||||
|
reason = "Dictionary API does not read packages"
|
||||||
|
elif kind == "duplicate_facility" and facility_count == 0:
|
||||||
|
demand(role == "O", "R B1 must contain a facility")
|
||||||
|
applicable = false
|
||||||
|
reason = "B1 has zero facilities"
|
||||||
|
elif kind in ["duplicate_published_ids", "duplicate_facility"] and api == "validate":
|
||||||
|
applicable = false
|
||||||
|
reason = "Envelope validation does not inspect runtime internals"
|
||||||
|
var relative: String = "duplicate_id" if kind.begins_with("duplicate_") else kind
|
||||||
|
var path: String = "user://p28_eq/" + role.to_lower() + "/" + relative
|
||||||
|
var before: Dictionary = e3_observation()
|
||||||
|
var budget_before: Dictionary = {}
|
||||||
|
for key: String in ["_samples", "_totals", "_sample_counts"]:
|
||||||
|
budget_before[key] = SaveService._performance_budget.get(key).duplicate(true)
|
||||||
|
scenario_events = []
|
||||||
|
scenario_signals = []
|
||||||
|
scenario_active = true
|
||||||
|
var package: Variant = null
|
||||||
|
var actual: Variant = null
|
||||||
|
var invoked: bool = applicable or (api == "validate" and reason == "Envelope validation does not inspect runtime internals")
|
||||||
|
var invocation_before: Dictionary = before
|
||||||
|
if api == "load_from_path" and applicable:
|
||||||
|
var package_input: Dictionary = input if kind.begins_with("duplicate_") else b1_snapshot.duplicate(true)
|
||||||
|
package = e3_prepare_package(path, package_input, kind)
|
||||||
|
var saved: Dictionary = decode(package.save_return.tree)
|
||||||
|
if saved.get(&"ok") != true:
|
||||||
|
demand(kind.begins_with("duplicate_"), "required package preparation refused")
|
||||||
|
applicable = false
|
||||||
|
invoked = false
|
||||||
|
reason = "SaveService.save_snapshot refused duplicate input"
|
||||||
|
invocation_before = e3_observation()
|
||||||
|
# These are the only live E3 calls. No reset/repair of product state.
|
||||||
|
if invoked:
|
||||||
|
match api:
|
||||||
|
"restore_snapshot": actual = runtime.restore_snapshot(input)
|
||||||
|
"validate": actual = SimulationSnapshot.validate(input)
|
||||||
|
"load_from_path": actual = runtime.load_from_path(path)
|
||||||
|
var stream_fact: Dictionary = follow_event_stream()
|
||||||
|
if package != null: package["after_operation"] = e3_package(path)
|
||||||
|
var after: Dictionary = e3_observation()
|
||||||
|
scenario_active = false
|
||||||
|
var code: Variant = null
|
||||||
|
var code_reason: Variant = null
|
||||||
|
var actual_ok: Variant = null
|
||||||
|
var errors: Variant = null
|
||||||
|
var migration: bool = false
|
||||||
|
if api == "restore_snapshot":
|
||||||
|
code_reason = "API returns bool only"
|
||||||
|
actual_ok = actual
|
||||||
|
elif api == "validate":
|
||||||
|
code_reason = "API returns ok/errors only"
|
||||||
|
if invoked:
|
||||||
|
actual_ok = actual.get(&"ok")
|
||||||
|
errors = actual.get(&"errors")
|
||||||
|
elif invoked:
|
||||||
|
code = actual.get(&"code")
|
||||||
|
actual_ok = actual.get(&"ok")
|
||||||
|
migration = actual.get(&"migration_attempted", false)
|
||||||
|
demand(code != null, "load_from_path missing code")
|
||||||
|
var event_trees: Array = []
|
||||||
|
for event_record: Dictionary in scenario_events: event_trees.append(event_record.tree)
|
||||||
|
var result: Dictionary = {"category": kind, "applicability": "applied" if applicable else "NA",
|
||||||
|
"reason": reason, "invoked": invoked, "facility_count": facility_count, "ok": actual_ok, "errors": errors,
|
||||||
|
"code": str(code) if code != null else null, "code_reason": code_reason, "migration_attempted": migration,
|
||||||
|
"event_count": scenario_events.size(), "path": path if api == "load_from_path" else null}
|
||||||
|
var scenario: Dictionary = {"id": id, "operation": api, "result": result,
|
||||||
|
"checkpoints": [before.checkpoint, after.checkpoint], "events": event_trees}
|
||||||
|
var budget_after: Dictionary = {}
|
||||||
|
for key: String in ["_samples", "_totals", "_sample_counts"]:
|
||||||
|
budget_after[key] = SaveService._performance_budget.get(key).duplicate(true)
|
||||||
|
var evidence: Dictionary = {"id": id, "begin": before, "invocation_before": invocation_before, "end": after,
|
||||||
|
"input": transport(input), "return": transport(actual), "package": package, "events": scenario_events,
|
||||||
|
"signals": scenario_signals.duplicate(true), "latest_save_operation_result": transport(runtime.get("latest_save_operation_result")),
|
||||||
|
"save_budget_before": transport(budget_before), "save_budget_after": transport(budget_after), "boundaries": ["begin", "operation", "end"],
|
||||||
|
"event_stream": stream_fact}
|
||||||
|
report.scenarios.append(scenario)
|
||||||
|
lifecycle.e3.append(evidence)
|
||||||
|
write_evidence("e3-%02d.json" % (report.scenarios.size() - 1), evidence)
|
||||||
|
|
||||||
|
# S3b shares S3a's complete observation and transport; no state repair.
|
||||||
|
func e45_emit(id: String, operation: String, observations: Array, detail: Dictionary) -> void:
|
||||||
|
# The returned value itself; a large return is stored as a blob and is not decoded here.
|
||||||
|
var returned_value: Variant = detail.get("_return_value")
|
||||||
|
detail.erase("_return_value")
|
||||||
|
detail["signals"] = scenario_signals.duplicate(true)
|
||||||
|
var cps: Array = []
|
||||||
|
for observation: Dictionary in observations: cps.append(observation.checkpoint)
|
||||||
|
var events: Array = []
|
||||||
|
for event: Dictionary in scenario_events: events.append(event.tree)
|
||||||
|
var result: Dictionary = {"event_count": events.size(), "applicability": detail.get("applicability", "applied"), "reason": detail.get("reason")}
|
||||||
|
var facts: Dictionary = detail.duplicate(true)
|
||||||
|
for key: String in ["package_before", "package_after", "save_return", "return", "save_budget_before", "save_budget_after", "latest_save_operation_result", "observation_before", "observation_after"]: facts.erase(key)
|
||||||
|
if detail.has("return"):
|
||||||
|
var actual: Variant = returned_value
|
||||||
|
facts["return_fact"] = {"ok": actual.get(&"ok"), "code": actual.get(&"code")} if actual is Dictionary else actual
|
||||||
|
if facts.has("trials"):
|
||||||
|
for trial: Dictionary in facts.trials:
|
||||||
|
trial.erase("before")
|
||||||
|
trial.erase("after")
|
||||||
|
result["facts"] = facts
|
||||||
|
var evidence: Dictionary = {"id": id, "boundaries": ["begin", "operation", "end"], "observations": observations,
|
||||||
|
"events": scenario_events.duplicate(true), "signals": scenario_signals.duplicate(true), "detail": detail}
|
||||||
|
report.scenarios.append({"id": id, "operation": operation, "result": result, "checkpoints": cps, "events": events})
|
||||||
|
lifecycle.e45.append(evidence)
|
||||||
|
write_evidence("e45-%02d.json" % (lifecycle.e45.size() - 1), evidence)
|
||||||
|
|
||||||
|
func e4_candidates() -> Dictionary:
|
||||||
|
demand(scenario_active, "candidate search outside E4")
|
||||||
|
var before: Dictionary = e3_observation()
|
||||||
|
var raw_ids: Array = runtime.definition_registry.get_facility_ids()
|
||||||
|
var ids: Array = raw_ids.duplicate()
|
||||||
|
ids.sort_custom(func(a: Variant, b: Variant) -> bool: return str(a) < str(b))
|
||||||
|
var bounds: Dictionary = runtime.world_service.get_bounds()
|
||||||
|
var selection: Dictionary = {"source": "definition_registry.get_facility_ids()", "raw_ids": transport(raw_ids), "count": raw_ids.size(),
|
||||||
|
"sorted_ids": transport(ids), "sort_rule": "String(id) ascending Unicode code point", "bounds": transport(bounds),
|
||||||
|
"cell_rule": "inclusive x/y public bounds; z FRONT=0 through BACK=1; x,y,z lexical; ID outer; rotation=0",
|
||||||
|
"trials": [], "chosen": null, "applicability": "applied", "reason": null, "observation_before": before}
|
||||||
|
if not demand(not ids.is_empty(), "empty facility registry"):
|
||||||
|
selection.applicability = "failure"
|
||||||
|
selection.reason = "empty facility registry"
|
||||||
|
selection["observation_after"] = e3_observation()
|
||||||
|
return selection
|
||||||
|
for definition_id: StringName in ids:
|
||||||
|
for x: int in range(bounds[&"min_x"], bounds[&"max_x"] + 1):
|
||||||
|
for y: int in range(bounds[&"min_y"], bounds[&"max_y"] + 1):
|
||||||
|
for z: int in range(0, 2):
|
||||||
|
var origin: Vector3i = Vector3i(x, y, z)
|
||||||
|
var preview: Dictionary = runtime.preview_build_facility(definition_id, origin, 0)
|
||||||
|
var candidate: Dictionary = {"definition_id": definition_id, "origin": origin, "rotation": 0}
|
||||||
|
selection.trials.append({"candidate": transport(candidate), "preview": transport(preview)})
|
||||||
|
if preview.get(&"can_build") == true:
|
||||||
|
selection.chosen = transport(candidate)
|
||||||
|
selection["observation_after"] = e3_observation()
|
||||||
|
demand(json_text(before.raw) == json_text(selection.observation_after.raw), "preview search mutated S/K/C")
|
||||||
|
return selection
|
||||||
|
selection.applicability = "NA"
|
||||||
|
selection.reason = "all registry/cell pairs rejected by public preview"
|
||||||
|
selection["observation_after"] = e3_observation()
|
||||||
|
demand(json_text(before.raw) == json_text(selection.observation_after.raw), "preview search mutated S/K/C")
|
||||||
|
return selection
|
||||||
|
|
||||||
|
func run_e4() -> void:
|
||||||
|
lifecycle["e45"] = []
|
||||||
|
for operation: String in ["build_facility", "tick", "restore_snapshot", "load_from_path", "rejected_command"]:
|
||||||
|
var observations: Array = [e3_observation()]
|
||||||
|
var detail: Dictionary = {}
|
||||||
|
var save_budget_before: Dictionary = e45_save_budget()
|
||||||
|
scenario_events = []
|
||||||
|
scenario_signals = []
|
||||||
|
scenario_active = true
|
||||||
|
if operation == "build_facility":
|
||||||
|
detail = e4_candidates()
|
||||||
|
if detail.chosen != null:
|
||||||
|
var payload: Dictionary = decode(detail.chosen.tree)
|
||||||
|
var submitted: Variant = runtime.submit_command(&"build_facility", payload)
|
||||||
|
detail["submit"] = transport(submitted.to_dictionary())
|
||||||
|
observations.append(e3_observation())
|
||||||
|
clock.advance_minutes(1)
|
||||||
|
var completed: Variant = runtime.command_queue.get_processed_result(submitted.command_id)
|
||||||
|
detail["command_result"] = transport(completed.to_dictionary() if completed != null else null)
|
||||||
|
elif operation == "tick":
|
||||||
|
clock.advance_minutes(1)
|
||||||
|
elif operation == "restore_snapshot":
|
||||||
|
var input: Dictionary = runtime.create_snapshot().duplicate(true)
|
||||||
|
detail["input"] = transport(input)
|
||||||
|
var restore_return: Variant = runtime.restore_snapshot(input)
|
||||||
|
detail["event_stream"] = follow_event_stream()
|
||||||
|
detail["return"] = transport(restore_return)
|
||||||
|
detail["_return_value"] = restore_return
|
||||||
|
elif operation == "load_from_path":
|
||||||
|
var input: Dictionary = runtime.create_snapshot().duplicate(true)
|
||||||
|
var path: String = "user://p28_eq/" + role.to_lower() + "/good"
|
||||||
|
detail["input"] = transport(input)
|
||||||
|
detail["path"] = path
|
||||||
|
var saved: Dictionary = SaveService.save_snapshot(path, input, {})
|
||||||
|
detail["save_return"] = transport(saved)
|
||||||
|
detail["package_before"] = e3_package(path)
|
||||||
|
demand(saved.get(&"ok") == true, "E4 good package save failed")
|
||||||
|
var load_return: Variant = runtime.load_from_path(path)
|
||||||
|
detail["event_stream"] = follow_event_stream()
|
||||||
|
detail["return"] = transport(load_return)
|
||||||
|
detail["_return_value"] = load_return
|
||||||
|
detail["latest_save_operation_result"] = transport(runtime.get("latest_save_operation_result"))
|
||||||
|
detail["package_after"] = e3_package(path)
|
||||||
|
elif operation == "rejected_command":
|
||||||
|
var submitted: Variant = runtime.submit_command(&"build_facility", {&"definition_id": ""})
|
||||||
|
detail["submit"] = transport(submitted.to_dictionary())
|
||||||
|
observations.append(e3_observation())
|
||||||
|
clock.advance_minutes(1)
|
||||||
|
var completed: Variant = runtime.command_queue.get_processed_result(submitted.command_id)
|
||||||
|
detail["command_result"] = transport(completed.to_dictionary() if completed != null else null)
|
||||||
|
detail["save_budget_before"] = save_budget_before
|
||||||
|
detail["save_budget_after"] = e45_save_budget()
|
||||||
|
observations.append(e3_observation())
|
||||||
|
scenario_active = false
|
||||||
|
e45_emit("E4/" + operation, operation, observations, detail)
|
||||||
|
|
||||||
|
func e45_save_budget() -> Dictionary:
|
||||||
|
var budget: Dictionary = {}
|
||||||
|
for key: String in ["_samples", "_totals", "_sample_counts"]:
|
||||||
|
budget[key] = SaveService._performance_budget.get(key).duplicate(true)
|
||||||
|
return transport(budget)
|
||||||
|
|
||||||
|
func run_e5() -> void:
|
||||||
|
for target: String in ["create_snapshot", "latest_snapshot", "snapshot_published", "state_updated"]:
|
||||||
|
for location: String in ["dict", "array"]:
|
||||||
|
for direction: String in ["outside_in", "inside_out"]:
|
||||||
|
var observations: Array = [e3_observation()]
|
||||||
|
scenario_events = []
|
||||||
|
scenario_signals = []
|
||||||
|
scenario_active = true
|
||||||
|
# Explicit preparation tick refreshes signal references and starts a new baseline.
|
||||||
|
clock.advance_minutes(1)
|
||||||
|
var baseline: Dictionary = e3_observation()
|
||||||
|
observations.append(baseline)
|
||||||
|
var returned: Dictionary = {}
|
||||||
|
match target:
|
||||||
|
"create_snapshot": returned = runtime.create_snapshot()
|
||||||
|
"latest_snapshot": returned = runtime.get("latest_snapshot")
|
||||||
|
"snapshot_published": returned = snapshot_reference
|
||||||
|
"state_updated": returned = state_reference
|
||||||
|
var held_copy: Dictionary = returned.duplicate(true)
|
||||||
|
# S6: the actual digest state just before the operation (null if this version has no such field).
|
||||||
|
var detail: Dictionary = {"target": target, "location": location, "direction": direction,
|
||||||
|
"latest_digest_dirty_before": runtime.get("_latest_digest_dirty"), "held_before": transport(held_copy)}
|
||||||
|
if direction == "outside_in":
|
||||||
|
if location == "dict":
|
||||||
|
returned[&"systems"][&"runtime"][&"id_generator"][&"counters"]["__p28_eq_probe"] = 1
|
||||||
|
else:
|
||||||
|
returned[&"systems"][&"runtime"][&"domain_events"]["published_ids"].append("__p28_eq_probe")
|
||||||
|
else:
|
||||||
|
clock.advance_minutes(1)
|
||||||
|
observations.append(e3_observation())
|
||||||
|
detail["held_after"] = transport(returned)
|
||||||
|
# Reset only through the authorized next tick, retaining the post-mutation state.
|
||||||
|
clock.advance_minutes(1)
|
||||||
|
observations.append(e3_observation())
|
||||||
|
scenario_active = false
|
||||||
|
e45_emit("E5/" + target + "/" + location + "/" + direction, direction, observations, detail)
|
||||||
|
|
||||||
@@ -0,0 +1,333 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Root-only EQ driver. --check neither writes nor starts processes other than read-only host/Git queries."""
|
||||||
|
import argparse
|
||||||
|
import importlib.util
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
sys.dont_write_bytecode = True
|
||||||
|
import check_eq as check
|
||||||
|
import compare_versions as eq
|
||||||
|
import verify_eq as verify
|
||||||
|
|
||||||
|
HERE, ROOT = verify.HERE, verify.ROOT
|
||||||
|
BASE = 'docs/plans/original-completion-2026-10-02/execution/'
|
||||||
|
COLLECTOR = BASE + 'p28-01/collector/collect_p28_01.py'
|
||||||
|
DEPENDENCIES = {
|
||||||
|
'tools/run_all_tests.py': '320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4',
|
||||||
|
'tools/regression/owned_outer.py': 'c2e3483b76db1a3ff940f23f88ea0083fc78736e874ebcdb385d766dde8866e7',
|
||||||
|
'tools/regression/owned_diagnostic_process.py': 'e31e93c6e2c5ea46a7d954ef8bc0b4caec1c08b86b8aef19e93b52ef24993087',
|
||||||
|
'tools/regression/p09_owned_engine_process.py': 'c007e712c281573254faa1233c2ac92e100ab87393256a6dc096b35283e43037',
|
||||||
|
COLLECTOR: 'a43e1f963ef8505ddd5acf8bf747d9bfac22a028cbb805c0b964ee11b9b40a14',
|
||||||
|
BASE + 'p28-01/collector/check_p28_01_report.py': '6c0851d498ca80bdc120fad047b072255f48713f63114521f3d4dfc902b2512b',
|
||||||
|
BASE + 'p28-02/diag/diag_probe.gd': '4124067d4b193693f696d2b1a1e6eb56731948cfefd5a6e420b5c9a14fb2b11e',
|
||||||
|
BASE + 'p28-02/diag/verify_diag.py': '829354804f0ebb152a8092486ccadbc6b36143a5c9187dac75c15f90b70d1fb9',
|
||||||
|
BASE + 'p28-02/diag/test_diag.py': '744b779f4b2452e0c1660c6fd1aa009d26e7315e8a0fddd669a2ac3e261c61b4',
|
||||||
|
BASE + 'p28-02/diag/diag_p28_02.py': '6b47d08b490ba742ce00e8835a09011c5966d0a8fc7b578498bfc80bc03f14ed',
|
||||||
|
BASE + 'p28-02/diag/check_diag.py': '96dd9bef220339d6a973215d8db9a73c1bfa44f9e151bcf897641882e831b5ba',
|
||||||
|
}
|
||||||
|
FROZEN = {
|
||||||
|
'SPEC.md': '3791ccdcb87e8d71fe9205e1e692ebca9e0f974ea3b5fbc4fbb3943882131f1c',
|
||||||
|
'TASK_INSTRUCTIONS.md': 'f9937c3c7dff5a25ada453365d26c87fecf009d29518724f0c1e67d2b18afff3',
|
||||||
|
'references/OPT_CONTRACT_T1.md': 'ad9f3d76f3500b39263fb898d7c64588b4b47c9e11b456f938195261fd054d16',
|
||||||
|
'references/OPUS_D2_SCOPE_CLARIFICATION.txt': '5775e7b512d9e90dbcfbcb181f5b64dc0fa8207e0947c0a4a6a5c9195565f9bd',
|
||||||
|
'references/OPUS_STARTUP_LIFECYCLE_CLARIFICATION.txt': '967aebf27ff412f7a16ce771ef7d68abf8cfde0bb76ed19cf6dbf2817ca7acc6',
|
||||||
|
'registration/ACCEPTANCE_BASELINE.json': '84628bc21205387f8a7143031bdc50c9f68a767d350e6c34b32e0ba1c7059337',
|
||||||
|
'registration/CONFIG_PROPOSAL.json': '775fbbb97cda8b4d4991defdf7871b0fc79f489f4dea34c1733d4830426cf1df',
|
||||||
|
'registration/REGISTRATION_PROPOSAL.json': '9590fc853a4df8d50cc0d269d23bd9c844dc6931590ff6f24ebf95bb54a8d135',
|
||||||
|
'registration/ROOT_PROPOSAL_BYTE_TRANSFER.json': '63197f650849084f769e487a76458361886a37090042f1e351851c75b0384da2',
|
||||||
|
}
|
||||||
|
require, sha, pin, write = verify.require, verify.sha, verify.pin, verify.write
|
||||||
|
# collector.inputs fixes the Root input manifest by this SHA (collect_p28_01.py inputs());
|
||||||
|
# the bundled copy is held to the same value (S6; test_eq checks both literals agree).
|
||||||
|
ROOT_MANIFEST_SHA = '9dac0a51d52087e691c5723b4f78f171f7998c78b582b2b6c4c904798e77644d'
|
||||||
|
|
||||||
|
|
||||||
|
def load_dependencies(root=ROOT):
|
||||||
|
root = Path(root).resolve()
|
||||||
|
for name, expected in DEPENDENCIES.items():
|
||||||
|
require(sha(root / name) == expected, 'dependency pin: ' + name)
|
||||||
|
local = root / HERE.relative_to(ROOT)
|
||||||
|
for name in verify.LOCAL_NAMES - {'eq_probe.gd'}:
|
||||||
|
check.check_python_imports((local / name).read_text())
|
||||||
|
def load(relative, module_name):
|
||||||
|
require(relative in DEPENDENCIES and relative.endswith('.py'), 'import outside closure')
|
||||||
|
spec = importlib.util.spec_from_file_location(module_name, root / relative)
|
||||||
|
module = importlib.util.module_from_spec(spec)
|
||||||
|
sys.modules[module_name] = module
|
||||||
|
spec.loader.exec_module(module)
|
||||||
|
return module
|
||||||
|
# Import sibling dependencies under their real names before the collector.
|
||||||
|
load(BASE + 'p28-01/collector/check_p28_01_report.py', 'check_p28_01_report')
|
||||||
|
collector = load(COLLECTOR, 'eq_collector')
|
||||||
|
diag = load(BASE + 'p28-02/diag/check_diag.py', 'eq_diag_check')
|
||||||
|
for name in diag.DEPENDENCIES:
|
||||||
|
diag.check_imports((root / name).read_text(), external=name)
|
||||||
|
standard = collector.load_tool(collector.EXTERNAL_IMPORTS[0])
|
||||||
|
outer = collector.load_tool(collector.EXTERNAL_IMPORTS[1])
|
||||||
|
require(Path(outer.native.helper['__file__']).resolve() == root / 'tools/regression/p09_owned_engine_process.py', 'helper closure')
|
||||||
|
for module in [collector, standard, outer, outer.native, *list(sys.modules.values())]:
|
||||||
|
name = getattr(module, '__file__', None)
|
||||||
|
if name:
|
||||||
|
path = Path(name).resolve()
|
||||||
|
if path.is_relative_to(root):
|
||||||
|
require(path.relative_to(root).as_posix() in DEPENDENCIES or path.is_relative_to(local), 'loaded module outside closure')
|
||||||
|
return collector, standard, outer, diag
|
||||||
|
|
||||||
|
|
||||||
|
def bundled_inputs(copies, readonly):
|
||||||
|
"""collector.inputs on the read-only input copies sealed in the bundle (S5).
|
||||||
|
|
||||||
|
The formal native-verify runs under the Runner seatbelt, which cannot read the original
|
||||||
|
read-only directory or the fixture outside the checkout. The same rule applies: every
|
||||||
|
manifest destination lies in the original read-only directory, and its copy has the
|
||||||
|
recorded bytes and SHA. The manifest SHA is bound by the caller to the admission pin.
|
||||||
|
|
||||||
|
S6: the copy must also be the manifest collector.inputs fixes, and each destination must
|
||||||
|
be a normalized absolute path ('..' never appears) inside the read-only directory. This
|
||||||
|
is checked by text because the sandboxed verification cannot read the originals; the run
|
||||||
|
itself checked the resolved originals through collector.inputs."""
|
||||||
|
manifest_path = copies / 'ROOT_INPUT_MANIFEST.json'
|
||||||
|
require(sha(manifest_path) == ROOT_MANIFEST_SHA, 'Root input manifest changed')
|
||||||
|
manifest = verify.read(manifest_path)
|
||||||
|
pins = {}
|
||||||
|
for row in manifest['files']:
|
||||||
|
text = row['destination']
|
||||||
|
require(type(text) is str and os.path.isabs(text) and os.path.normpath(text) == text, 'input escapes read-only directory')
|
||||||
|
destination = Path(text)
|
||||||
|
require(destination.is_relative_to(readonly), 'input escapes read-only directory')
|
||||||
|
relative = destination.relative_to(readonly)
|
||||||
|
copy = copies / relative
|
||||||
|
require(copy.is_file() and not copy.is_symlink(), 'bundled read-only input missing')
|
||||||
|
require(sha(copy) == row['sha256'] and copy.stat().st_size == row['bytes'], 'read-only input changed')
|
||||||
|
pins[str(relative)] = row['sha256']
|
||||||
|
return {'manifest_sha256': sha(manifest_path), 'files': pins}
|
||||||
|
|
||||||
|
|
||||||
|
def bundle_inputs(out, readonly, fixture, pins):
|
||||||
|
"""Seal copies of the fixture and the read-only inputs in the output (verified first)."""
|
||||||
|
target = out / 'inputs'
|
||||||
|
(target / 'fixture').mkdir(parents=True)
|
||||||
|
shutil.copyfile(fixture, target / 'fixture' / fixture.name)
|
||||||
|
manifest = verify.read(readonly / 'ROOT_INPUT_MANIFEST.json')
|
||||||
|
(target / 'readonly').mkdir()
|
||||||
|
shutil.copyfile(readonly / 'ROOT_INPUT_MANIFEST.json', target / 'readonly' / 'ROOT_INPUT_MANIFEST.json')
|
||||||
|
for row in manifest['files']:
|
||||||
|
relative = Path(row['destination']).relative_to(readonly)
|
||||||
|
(target / 'readonly' / relative).parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
shutil.copyfile(Path(row['destination']), target / 'readonly' / relative)
|
||||||
|
require(pin(target / 'fixture' / fixture.name) == pins['fixture'], 'fixture copy differs')
|
||||||
|
require(bundled_inputs(target / 'readonly', readonly) == pins['readonly'], 'read-only input copies differ')
|
||||||
|
|
||||||
|
|
||||||
|
def actual_pins(root, readonly, fixture, engine, collector, standard, copies=None, registered=()):
|
||||||
|
"""registered: the OPT files the measured version changes (S6, --opt-changed); empty for
|
||||||
|
the before version. eq.admit_source decides the version from the frozen before map."""
|
||||||
|
local = root / HERE.relative_to(ROOT)
|
||||||
|
dependencies = {n: sha(root / n) for n in DEPENDENCIES}
|
||||||
|
require(dependencies == DEPENDENCIES, 'dependencies changed')
|
||||||
|
frozen = {n: sha(local / n) for n in FROZEN}
|
||||||
|
require(frozen == FROZEN, 'frozen specification changed')
|
||||||
|
source = collector.source_map(standard, root)
|
||||||
|
closure = eq.admit_source(source, list(registered))
|
||||||
|
require(len(source) == 1407 and collector.digest(source) == closure['after_sha256'], 'full 1407 source pin')
|
||||||
|
require(sha(fixture) == collector.FIXTURE_SHA and sha(engine) == collector.ENGINE_SHA, 'fixture/engine pin')
|
||||||
|
inputs = collector.inputs(readonly) if copies is None else bundled_inputs(copies, readonly)
|
||||||
|
require(len(inputs['files']) == 9, 'nine original destinations required')
|
||||||
|
manifest = verify.read((readonly if copies is None else copies) / 'ROOT_INPUT_MANIFEST.json')
|
||||||
|
require(len(manifest['files']) == 9 and len({r['destination'] for r in manifest['files']}) == 9, 'nine unique destinations')
|
||||||
|
require(sys.platform == 'darwin', 'native platform')
|
||||||
|
machine = subprocess.check_output(['sysctl', '-n', 'hw.model'], text=True).strip()
|
||||||
|
require(machine == 'Mac16,10', 'machine pin')
|
||||||
|
return {'source': source, 'source_sha256': collector.digest(source), 'dependencies': dependencies,
|
||||||
|
'registered_changes': closure['allowed_changed'], 'source_closure': closure,
|
||||||
|
'frozen': frozen, 'worker': {n: sha(local / n) for n in sorted(verify.LOCAL_NAMES | verify.DATA_NAMES)},
|
||||||
|
'fixture': pin(fixture), 'engine': pin(engine), 'engine_version': collector.VERSION,
|
||||||
|
'project': source['project.godot'], 'readonly': inputs, 'original_manifest': manifest,
|
||||||
|
'machine': machine, 'platform': sys.platform}
|
||||||
|
|
||||||
|
|
||||||
|
def frozen_commit(source):
|
||||||
|
commit = subprocess.check_output(['git', '-C', str(ROOT), 'rev-parse', 'HEAD'], text=True).strip()
|
||||||
|
for name in list(source) + [str((HERE / n).relative_to(ROOT)) for n in sorted(verify.LOCAL_NAMES | verify.DATA_NAMES)]:
|
||||||
|
data = subprocess.check_output(['git', '-C', str(ROOT), 'show', commit + ':' + name])
|
||||||
|
require(data == (ROOT / name).read_bytes(), 'not frozen S: ' + name)
|
||||||
|
return commit
|
||||||
|
|
||||||
|
|
||||||
|
def wrapper_text(out):
|
||||||
|
return ('extends ' + json.dumps(str(out / 'eq_probe.gd')) + '\nconst Guard = preload(' +
|
||||||
|
json.dumps(str(out / 'profile_guard.gd')) + ')\nfunc _initialize() -> void:\n'
|
||||||
|
'\tif not Guard.activate():\n\t\tquit(97)\n\t\treturn\n\tsuper._initialize()\n')
|
||||||
|
|
||||||
|
|
||||||
|
def plan(collector, standard, engine, fixture, out):
|
||||||
|
stage, wrapper = out / 'stage', out / 'guarded.gd'
|
||||||
|
commands = [collector.argv_for(engine, stage, wrapper, importing=True),
|
||||||
|
collector.parse_argv(engine, stage, out / 'eq_probe.gd'),
|
||||||
|
collector.parse_argv(engine, stage, wrapper)] + [
|
||||||
|
[str(engine), '--headless', '--path', str(stage), '--script', str(wrapper)] for _ in range(4)]
|
||||||
|
rows = []
|
||||||
|
for phase, command in zip(verify.PHASES, commands):
|
||||||
|
startup_name = 'TheTree-PCK-tests-' + uuid.uuid4().hex + '-eq-startup'
|
||||||
|
runtime_name = 'TheTree-PCK-tests-' + uuid.uuid4().hex + '-eq-runtime'
|
||||||
|
startup, runtime = standard.profile_path(startup_name), standard.profile_path(runtime_name)
|
||||||
|
require(not startup.exists() and not runtime.exists(), 'fresh profiles required')
|
||||||
|
role = verify.ROLES.get(phase)
|
||||||
|
env = {'THE_TREE_PACK_PROFILE_NAME': runtime_name, 'THE_TREE_PACK_PROFILE_EXPECTED': str(runtime),
|
||||||
|
'THE_TREE_PACK_PROFILE_REPORT': str(out / (phase + '-guard.json')),
|
||||||
|
'THE_TREE_EQ_ROLE': role or '', 'THE_TREE_P28_FIXTURE': str(fixture),
|
||||||
|
'THE_TREE_P28_FIXTURE_SHA': collector.FIXTURE_SHA}
|
||||||
|
rows.append({'phase': phase, 'role': role, 'argv': command, 'environment': env,
|
||||||
|
'startup_name': startup_name, 'startup_profile': str(startup),
|
||||||
|
'runtime_name': runtime_name, 'runtime_profile': str(runtime), 'folder': str(out / phase)})
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
def copy_evidence(runtime, destination):
|
||||||
|
source = runtime / 'evidence'
|
||||||
|
before = verify.inventory(source, seals=True)
|
||||||
|
require(set(verify.split_evidence(before)[0]) == verify.NAMES, 'private evidence missing/extra')
|
||||||
|
destination.mkdir()
|
||||||
|
for name in sorted(before):
|
||||||
|
(destination / name).parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
shutil.copyfile(source / name, destination / name)
|
||||||
|
require(verify.inventory(source, seals=True) == before == verify.inventory(destination, seals=True), 'evidence changed during copy')
|
||||||
|
return before
|
||||||
|
|
||||||
|
|
||||||
|
def copy_profile(source, destination, collector):
|
||||||
|
"""Keep complete private package/log/config bytes, including non-evidence files."""
|
||||||
|
exists = source.is_dir()
|
||||||
|
before = collector.profile_files(source)
|
||||||
|
if exists:
|
||||||
|
destination.mkdir()
|
||||||
|
for name in before:
|
||||||
|
target = destination / name
|
||||||
|
target.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
shutil.copyfile(source / name, target)
|
||||||
|
require(verify.inventory(destination, seals=True) == before, 'profile copy mismatch')
|
||||||
|
require(collector.profile_files(source) == before, 'profile changed during copy')
|
||||||
|
return {'exists': exists, 'files': before}
|
||||||
|
|
||||||
|
|
||||||
|
def run(admission, out, collector, standard, outer, diag):
|
||||||
|
require(not out.exists(), 'new output required')
|
||||||
|
collector.no_live_engine()
|
||||||
|
out.mkdir(parents=True)
|
||||||
|
write(out / 'admission.json', admission)
|
||||||
|
rows, profiles, error = [], [], None
|
||||||
|
source = admission['source_map']
|
||||||
|
player = standard.default_player(ROOT)
|
||||||
|
public = (ROOT / 'project.godot').read_bytes()
|
||||||
|
stage = out / 'stage'
|
||||||
|
try:
|
||||||
|
stage.mkdir()
|
||||||
|
for name in source:
|
||||||
|
target = stage / name
|
||||||
|
target.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
standard.copy_source(ROOT / name, target)
|
||||||
|
expected = standard.inventory(stage, stage=True)
|
||||||
|
require(expected == source, 'stage source differs')
|
||||||
|
(out / 'eq_probe.gd').write_bytes((HERE / 'eq_probe.gd').read_bytes())
|
||||||
|
(out / 'profile_guard.gd').write_bytes((Path(admission['readonly_path']) / 'run-r02/profile_guard.gd').read_bytes())
|
||||||
|
(out / 'guarded.gd').write_text(wrapper_text(out))
|
||||||
|
(out / 'root-input-manifest.json').write_bytes((Path(admission['readonly_path']) / 'ROOT_INPUT_MANIFEST.json').read_bytes())
|
||||||
|
bundle_inputs(out, Path(admission['readonly_path']), Path(admission['fixture']), admission['pins'])
|
||||||
|
for item in admission['plan']:
|
||||||
|
phase = item['phase']
|
||||||
|
require(standard.inventory(stage, stage=True) == expected, 'stage changed before phase')
|
||||||
|
require(collector.source_map(standard, ROOT) == source and standard.default_player(ROOT) == player, 'source/player changed')
|
||||||
|
for name, expected_sha in admission['pins']['worker'].items():
|
||||||
|
require(sha(HERE / name) == expected_sha, 'EQ changed during execution')
|
||||||
|
profiles.extend([Path(item['startup_profile']), Path(item['runtime_profile'])])
|
||||||
|
require(all(not p.exists() for p in profiles[-2:]), 'profile reuse')
|
||||||
|
row = collector.run_private_engine(standard, outer, item['argv'], out / phase,
|
||||||
|
item['environment'], stage, public, item['startup_name'])
|
||||||
|
row.update(phase=phase, role=item['role'], environment=item['environment'], pid=row['process']['pid'])
|
||||||
|
rows.append(row)
|
||||||
|
require(row['passed'] is True, 'owned phase failure: ' + phase)
|
||||||
|
after = standard.inventory(stage, stage=True)
|
||||||
|
collector.stage_gate(expected, after, importing=phase == 'import')
|
||||||
|
expected = after
|
||||||
|
row.update(stage_inventory=after, source_preserved=collector.source_map(standard, ROOT) == source,
|
||||||
|
player_preserved=standard.default_player(ROOT) == player)
|
||||||
|
if phase in verify.ROLES:
|
||||||
|
guard_path = out / (phase + '-guard.json')
|
||||||
|
guard = verify.read(guard_path)
|
||||||
|
collector.guard_gate(guard, Path(item['runtime_profile']), item['runtime_name'])
|
||||||
|
row.update(runtime_profile=item['runtime_profile'], runtime_name=item['runtime_name'],
|
||||||
|
guard=guard, guard_sha256=sha(guard_path))
|
||||||
|
row['evidence_files'] = copy_evidence(Path(item['runtime_profile']), out / phase / 'evidence')
|
||||||
|
verify.phase_evidence(out, row)
|
||||||
|
row['profile_copies'] = {
|
||||||
|
'startup': copy_profile(Path(item['startup_profile']), out / phase / 'startup-profile', collector),
|
||||||
|
'runtime': copy_profile(Path(item['runtime_profile']), out / phase / 'runtime-profile', collector)}
|
||||||
|
diag.bound_raw(out / phase, row)
|
||||||
|
except BaseException as caught:
|
||||||
|
error = repr(caught)
|
||||||
|
finally:
|
||||||
|
cleanup, cleanup_errors = outer.finish_captured(outer.OWNED)
|
||||||
|
execution = {'admission': admission, 'phases': rows, 'passed': error is None, 'error': error,
|
||||||
|
'cleanup': cleanup, 'cleanup_errors': cleanup_errors, 'source_after': collector.source_map(standard, ROOT),
|
||||||
|
'player_before': player, 'player_after': standard.default_player(ROOT),
|
||||||
|
'profiles_retained': {str(p): collector.profile_files(p) for p in profiles}}
|
||||||
|
try:
|
||||||
|
execution['pins_after'] = actual_pins(ROOT, Path(admission['readonly_path']), Path(admission['fixture']),
|
||||||
|
Path(admission['engine']), collector, standard,
|
||||||
|
registered=admission['pins']['registered_changes'])
|
||||||
|
require((ROOT / 'project.godot').read_bytes() == public and (stage / 'project.godot').read_bytes() == public, 'project restoration')
|
||||||
|
if error is None:
|
||||||
|
with check.memo_scope():
|
||||||
|
result = verify.recompute(out, execution, collector, standard, diag, parallel=True)
|
||||||
|
write(out / 'results.json', result)
|
||||||
|
for phase, values in result['phases'].items():
|
||||||
|
for name, value in values.items():
|
||||||
|
write(out / phase / (name + '.json'), value)
|
||||||
|
except BaseException as caught:
|
||||||
|
execution.update(passed=False, error=repr(caught))
|
||||||
|
write(out / 'execution.json', execution)
|
||||||
|
if execution['passed']:
|
||||||
|
verify.seal(out)
|
||||||
|
return 0 if execution['passed'] else 1
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
mode = parser.add_mutually_exclusive_group(required=True)
|
||||||
|
mode.add_argument('--check', action='store_true')
|
||||||
|
mode.add_argument('--run', action='store_true')
|
||||||
|
for name in ('readonly', 'fixture', 'engine', 'output'):
|
||||||
|
parser.add_argument('--' + name, type=Path, required=True)
|
||||||
|
# S6: OPT_CONTRACT_T1 §4 runs this same command on the OPT S; each changed OPT file is
|
||||||
|
# registered here (repeat the option). None means the before version.
|
||||||
|
parser.add_argument('--opt-changed', action='append', default=[], metavar='PATH')
|
||||||
|
args = parser.parse_args()
|
||||||
|
try:
|
||||||
|
readonly, fixture, engine, out = [p.resolve() for p in (args.readonly, args.fixture, args.engine, args.output)]
|
||||||
|
require(not out.exists(), 'new output required')
|
||||||
|
collector, standard, outer, diag = load_dependencies()
|
||||||
|
pins = actual_pins(ROOT, readonly, fixture, engine, collector, standard, registered=sorted(args.opt_changed))
|
||||||
|
static = check.check_probe((HERE / 'eq_probe.gd').read_text())
|
||||||
|
require(static['ok'], 'probe checker: ' + repr(static['errors']))
|
||||||
|
version = pins['source_closure']['version']
|
||||||
|
admission = {'measured_source': verify.MEASURED[version], 'version': version, 'candidate_Q_measured': False,
|
||||||
|
'commit': frozen_commit(pins['source']), 'source_map': pins['source'], 'pins': pins,
|
||||||
|
'readonly_path': str(readonly), 'fixture': str(fixture), 'engine': str(engine),
|
||||||
|
'phases': verify.PHASES, 'plan': plan(collector, standard, engine, fixture, out)}
|
||||||
|
if args.check:
|
||||||
|
print(json.dumps(admission, ensure_ascii=False, indent=2))
|
||||||
|
return 0
|
||||||
|
return run(admission, out, collector, standard, outer, diag)
|
||||||
|
except (ValueError, OSError, KeyError, TypeError, subprocess.CalledProcessError) as error:
|
||||||
|
print(json.dumps({'status': 'failed', 'error': str(error)}))
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
raise SystemExit(main())
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,415 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Read-only verification of the exact S_eq native evidence; never launches Godot."""
|
||||||
|
import argparse
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.dont_write_bytecode = True
|
||||||
|
import check_eq as check
|
||||||
|
import compare_versions as eq
|
||||||
|
|
||||||
|
HERE = Path(__file__).resolve().parent
|
||||||
|
ROOT = HERE.parents[5]
|
||||||
|
PHASES = ['import', 'parse-base', 'parse-wrapper', 'R-A', 'R-B', 'O-A', 'O-B']
|
||||||
|
ROLES = {'R-A': 'R', 'R-B': 'R', 'O-A': 'O', 'O-B': 'O'}
|
||||||
|
NAMES = {f'{prefix}-{i:02d}.json' for prefix, count in
|
||||||
|
[('checkpoint', 31), ('observation', 31), ('e3', 18), ('e45', 21)] for i in range(count)} | {
|
||||||
|
'events.json', 'report.json', 'lifecycle.json', 'audio-close.json'}
|
||||||
|
BLOB_NAME = re.compile('blobs/[0-9a-f]{64}[.]gz')
|
||||||
|
|
||||||
|
|
||||||
|
def split_evidence(files):
|
||||||
|
"""Fixed evidence names, and the S5 content-addressed blobs beside them."""
|
||||||
|
blobs = {n: p for n, p in files.items() if n.startswith('blobs/')}
|
||||||
|
require(all(BLOB_NAME.fullmatch(n) for n in blobs), 'unexpected evidence blob name')
|
||||||
|
return {n: p for n, p in files.items() if n not in blobs}, blobs
|
||||||
|
|
||||||
|
|
||||||
|
LOCAL_NAMES = {'run_eq.py', 'verify_eq.py', 'check_eq.py', 'compare_versions.py', 'eq_probe.gd', 'test_eq.py'}
|
||||||
|
# S6: EQ data pinned with the code (the fixed before map of the source closure).
|
||||||
|
DATA_NAMES = {'BEFORE_SOURCE_MAP.json'}
|
||||||
|
# S6: the version a native measured, from its admitted source closure. Never Q.
|
||||||
|
MEASURED = {'before': 'S_eq-native-not-Q', 'after': 'S_opt-native-not-Q'}
|
||||||
|
require = eq.require
|
||||||
|
|
||||||
|
|
||||||
|
def sha(path):
|
||||||
|
return hashlib.sha256(Path(path).read_bytes()).hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
def pin(path):
|
||||||
|
path = Path(path)
|
||||||
|
require(path.is_file() and not path.is_symlink(), 'missing/symlink: ' + str(path))
|
||||||
|
return {'bytes': path.stat().st_size, 'sha256': sha(path)}
|
||||||
|
|
||||||
|
|
||||||
|
def read(path):
|
||||||
|
return check.strict_json(Path(path).read_text(encoding='utf-8'))
|
||||||
|
|
||||||
|
|
||||||
|
def write(path, value):
|
||||||
|
with Path(path).open('x', encoding='utf-8') as stream:
|
||||||
|
json.dump(value, stream, ensure_ascii=False, allow_nan=False, indent=2)
|
||||||
|
stream.write('\n')
|
||||||
|
|
||||||
|
|
||||||
|
def wire(value):
|
||||||
|
"""Checker diagnostics may contain tuples; bind their exact JSON representation."""
|
||||||
|
return check.strict_json(json.dumps(value, ensure_ascii=False, allow_nan=False))
|
||||||
|
|
||||||
|
|
||||||
|
def inventory(directory, seals=False):
|
||||||
|
directory = Path(directory)
|
||||||
|
require(directory.is_dir() and not directory.is_symlink(), 'evidence directory missing/symlink')
|
||||||
|
result = {}
|
||||||
|
for path in sorted(directory.rglob('*')):
|
||||||
|
require(not path.is_symlink(), 'evidence symlink')
|
||||||
|
name = path.relative_to(directory).as_posix()
|
||||||
|
if path.is_file() and (seals or name not in ('bundle.json', 'seal.json')):
|
||||||
|
result[name] = pin(path)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def directories(directory):
|
||||||
|
"""Every directory below the bundle root, empty ones included (S6: the verifier binds
|
||||||
|
each <phase>/startup-profile directory's existence, so the seal records them too)."""
|
||||||
|
directory = Path(directory)
|
||||||
|
return sorted(p.relative_to(directory).as_posix() for p in directory.rglob('*') if p.is_dir() and not p.is_symlink())
|
||||||
|
|
||||||
|
|
||||||
|
def seal(directory):
|
||||||
|
directory = Path(directory)
|
||||||
|
require(not (directory / 'bundle.json').exists() and not (directory / 'seal.json').exists(), 'already sealed')
|
||||||
|
write(directory / 'bundle.json', {'schema': 'p28-02-eq-bundle-v2', 'files': inventory(directory),
|
||||||
|
'directories': directories(directory)})
|
||||||
|
write(directory / 'seal.json', {'bundle': pin(directory / 'bundle.json')})
|
||||||
|
|
||||||
|
|
||||||
|
def check_seal(directory):
|
||||||
|
directory = Path(directory)
|
||||||
|
manifest, sealed = read(directory / 'bundle.json'), read(directory / 'seal.json')
|
||||||
|
require(sealed == {'bundle': pin(directory / 'bundle.json')}, 'seal mismatch')
|
||||||
|
require(manifest == {'schema': 'p28-02-eq-bundle-v2', 'files': inventory(directory),
|
||||||
|
'directories': directories(directory)}, 'manifest/file/directory mismatch')
|
||||||
|
|
||||||
|
|
||||||
|
def check_audio(audio, pid):
|
||||||
|
expected = {'coordinator': True, 'passed': True, 'owned_engine_pid': pid,
|
||||||
|
'all_owned_targets_released': True, 'deadline_reached': False,
|
||||||
|
'clock_process_held_stopped': True, 'window_input_held_disabled': True,
|
||||||
|
'restored_before_quit': False, 'shared_bus_deleted': False, 'settings_mutated': False}
|
||||||
|
require(all(type(audio.get(k)) is type(v) and audio[k] == v for k, v in expected.items()), 'audio close/PID')
|
||||||
|
|
||||||
|
|
||||||
|
def phase_evidence(directory, row):
|
||||||
|
"""Recompute all S1-S3b checks from copied native bytes, with no cached verdicts."""
|
||||||
|
with check.memo_scope():
|
||||||
|
return _phase_evidence(directory, row)
|
||||||
|
|
||||||
|
|
||||||
|
def _phase_evidence(directory, row):
|
||||||
|
directory = Path(directory)
|
||||||
|
phase, role = row['phase'], row['role']
|
||||||
|
require(ROLES.get(phase) == role, 'phase/role binding')
|
||||||
|
folder = directory / phase
|
||||||
|
evidence = folder / 'evidence'
|
||||||
|
files = inventory(evidence, seals=True)
|
||||||
|
fixed, blobs = split_evidence(files)
|
||||||
|
require(set(fixed) == NAMES and files == row['evidence_files'], 'exact private evidence inventory')
|
||||||
|
eq.add_blob_root(evidence / 'blobs')
|
||||||
|
raw = check.read_report_stdout((folder / 'stdout.log').read_text())
|
||||||
|
require(raw == read(evidence / 'report.json') and raw['role'] == role, 'raw report/role copy')
|
||||||
|
eq.ACTIVE_PROFILES[:] = [raw['profile_root']]
|
||||||
|
require(len(raw['scenarios']) == 39, '39 scenarios required')
|
||||||
|
life = read(evidence / 'lifecycle.json')
|
||||||
|
require(life['stage'] == 'S5', 'S5 lifecycle required')
|
||||||
|
declared_blobs = life['blobs']
|
||||||
|
require(type(declared_blobs) is dict and {'blobs/' + k + '.gz': {'bytes': b['gz_bytes'], 'sha256': b['gz_sha256']}
|
||||||
|
for k, b in declared_blobs.items()} == blobs, 'blob inventory differs')
|
||||||
|
for digest, item in sorted(declared_blobs.items()):
|
||||||
|
require(len(eq.blob_bytes(digest)) == item['bytes'], 'blob size differs: ' + digest)
|
||||||
|
require(len(life['e3']) == 18 and len(life['e45']) == 21, 'scenario evidence coverage')
|
||||||
|
declared = {r['path']: {'bytes': r['bytes'], 'sha256': r['sha256']} for r in life['files']}
|
||||||
|
require(len(declared) == len(life['files']), 'duplicate lifecycle inventory')
|
||||||
|
expected = {'evidence/' + n: v for n, v in fixed.items() if n not in ('lifecycle.json', 'audio-close.json')}
|
||||||
|
require(declared == expected, 'lifecycle inventory differs')
|
||||||
|
guard_path = directory / (phase + '-guard.json')
|
||||||
|
guard = read(guard_path)
|
||||||
|
require(guard == row['guard'] and sha(guard_path) == row['guard_sha256'] == life['guard']['sha256'], 'guard SHA')
|
||||||
|
require(life['guard']['path'] == row['environment']['THE_TREE_PACK_PROFILE_REPORT'], 'guard path binding')
|
||||||
|
require(raw['profile_root']['root'] == row['runtime_profile'], 'report profile binding')
|
||||||
|
check.check_lifecycle(raw, life, guard)
|
||||||
|
check_audio(read(evidence / 'audio-close.json'), row['pid'])
|
||||||
|
require(read(evidence / 'events.json') == raw['events'], 'events copy')
|
||||||
|
for i, cp in enumerate(raw['checkpoints']):
|
||||||
|
require(read(evidence / f'checkpoint-{i:02d}.json') == cp, 'checkpoint copy')
|
||||||
|
check.check_observation(cp, read(evidence / f'observation-{i:02d}.json'))
|
||||||
|
for prefix in ('e3', 'e45'):
|
||||||
|
for i, value in enumerate(life[prefix]):
|
||||||
|
require(read(evidence / f'{prefix}-{i:02d}.json') == value, 'scenario copy')
|
||||||
|
checked = check.check_report(raw, life['measurement'], life['e3'], life['e3_b1'], life['e45'])
|
||||||
|
require(checked['ok'], 'report checker: ' + repr(checked['errors']))
|
||||||
|
joined, proofs = check.join_report(raw)
|
||||||
|
return wire({'raw': raw, 'joined': joined, 'proofs': proofs, 'checker': checked})
|
||||||
|
|
||||||
|
|
||||||
|
def phase_worker():
|
||||||
|
"""--phase-worker: phase_evidence for one phase (JSON on stdin), result and state on stdout."""
|
||||||
|
payload = json.load(sys.stdin)
|
||||||
|
with check.memo_scope():
|
||||||
|
result = phase_evidence(Path(payload['directory']), payload['row'])
|
||||||
|
state = {'valid_blobs': sorted(eq._VALID_BLOBS),
|
||||||
|
'normalized': [[key[0], key[1].decode('utf-8'), value] for key, value in eq._NORMALIZED.items()]}
|
||||||
|
json.dump({'result': result, 'state': state}, sys.stdout, ensure_ascii=False, allow_nan=False)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
def phase_results(directory, rows, parallel):
|
||||||
|
"""phase_evidence for every role phase. In parallel mode each phase runs in its own
|
||||||
|
worker process of this same verification; the workers' validated blob SHAs and
|
||||||
|
normalization facts are then used here for the same-role comparisons, so blobs are
|
||||||
|
validated once. Results are identical to the sequential mode, which is the fallback."""
|
||||||
|
if not parallel:
|
||||||
|
return {row['phase']: phase_evidence(directory, row) for row in rows}
|
||||||
|
try:
|
||||||
|
workers = [(row, subprocess.Popen([sys.executable, '-B', str(HERE / 'verify_eq.py'), '--phase-worker'], cwd=str(HERE),
|
||||||
|
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)) for row in rows]
|
||||||
|
except OSError:
|
||||||
|
return phase_results(directory, rows, False)
|
||||||
|
for row, worker in workers:
|
||||||
|
worker.stdin.write(json.dumps({'directory': str(directory), 'row': row}, ensure_ascii=False).encode('utf-8'))
|
||||||
|
worker.stdin.close()
|
||||||
|
worker.stdin = None # every input is sent first, so all workers run at once
|
||||||
|
results = {}
|
||||||
|
for row, worker in workers:
|
||||||
|
out, err = worker.communicate()
|
||||||
|
require(worker.returncode == 0, 'phase worker failed: ' + row['phase'] + ': ' + err.decode('utf-8', 'replace')[-2000:])
|
||||||
|
value = check.strict_json(out.decode('utf-8'))
|
||||||
|
results[row['phase']] = value['result']
|
||||||
|
eq.add_blob_root(Path(directory) / row['phase'] / 'evidence' / 'blobs')
|
||||||
|
eq._VALID_BLOBS.update(value['state']['valid_blobs'])
|
||||||
|
for sha_, profile_json, fact in value['state']['normalized']:
|
||||||
|
eq._NORMALIZED.setdefault((sha_, profile_json.encode('utf-8')), tuple(fact))
|
||||||
|
return {row['phase']: results[row['phase']] for row in rows}
|
||||||
|
|
||||||
|
|
||||||
|
def recompute(directory, execution, collector, standard, diag, parallel=False):
|
||||||
|
"""Validate owned receipts and recompute every comparison from raw evidence."""
|
||||||
|
directory = Path(directory)
|
||||||
|
require(execution['passed'] is True and execution['error'] is None and execution['cleanup_errors'] == [], 'execution failed')
|
||||||
|
admission = execution['admission']
|
||||||
|
require(read(directory / 'admission.json') == admission, 'admission copy')
|
||||||
|
require(admission['candidate_Q_measured'] is False, 'Q measurement forbidden')
|
||||||
|
require(admission['phases'] == PHASES, 'phase plan')
|
||||||
|
from run_eq import wrapper_text
|
||||||
|
original_out = Path(admission['plan'][0]['folder']).parent
|
||||||
|
engine = Path(admission['engine'])
|
||||||
|
expected_commands = [collector.argv_for(engine, original_out / 'stage', original_out / 'guarded.gd', importing=True),
|
||||||
|
collector.parse_argv(engine, original_out / 'stage', original_out / 'eq_probe.gd'),
|
||||||
|
collector.parse_argv(engine, original_out / 'stage', original_out / 'guarded.gd')] + [
|
||||||
|
[str(engine), '--headless', '--path', str(original_out / 'stage'), '--script', str(original_out / 'guarded.gd')]
|
||||||
|
for _ in range(4)]
|
||||||
|
require([p['argv'] for p in admission['plan']] == expected_commands, 'actual seven-phase command plan')
|
||||||
|
require((directory / 'guarded.gd').read_text() == wrapper_text(original_out), 'guard before parent wrapper')
|
||||||
|
require(sha(directory / 'eq_probe.gd') == admission['pins']['worker']['eq_probe.gd'], 'frozen probe')
|
||||||
|
require(sha(directory / 'profile_guard.gd') == admission['pins']['readonly']['files']['run-r02/profile_guard.gd'], 'guard pin')
|
||||||
|
require(sha(directory / 'root-input-manifest.json') == admission['pins']['readonly']['manifest_sha256'], 'original manifest copy')
|
||||||
|
static = check.check_probe((directory / 'eq_probe.gd').read_text())
|
||||||
|
require(static['ok'], 'probe checker: ' + repr(static['errors']))
|
||||||
|
source = admission['source_map']
|
||||||
|
# S6: the frozen before map and the registered OPT change set decide the version; the
|
||||||
|
# recorded closure, version and label must be exactly what the closure gives again.
|
||||||
|
closure = eq.admit_source(source, admission['pins']['registered_changes'])
|
||||||
|
require(admission['pins']['source_closure'] == closure and admission['version'] == closure['version'], 'recorded source closure/version')
|
||||||
|
require(admission['measured_source'] == MEASURED[closure['version']], 'measured version label')
|
||||||
|
require(execution['source_after'] == source and execution['player_before'] == execution['player_after'], 'source/player preservation')
|
||||||
|
require(execution['pins_after'] == admission['pins'], 'pin preservation')
|
||||||
|
rows = execution['phases']
|
||||||
|
require([r['phase'] for r in rows] == PHASES, 'seven phases in order')
|
||||||
|
pids, profiles, evidence_rows = [], [], []
|
||||||
|
previous = source
|
||||||
|
for i, row in enumerate(rows):
|
||||||
|
phase = row['phase']
|
||||||
|
# DIAG's shared owned/raw checks return before its DIAG-specific report branch
|
||||||
|
# for the EQ phase names. Its dependency is frozen; no function is replaced.
|
||||||
|
diag.bound_raw(directory / phase, row)
|
||||||
|
for name in row['raw']:
|
||||||
|
require(not collector.diagnostics((directory / phase / name).read_text()), 'strict diagnostic')
|
||||||
|
for name in row['owned_files']:
|
||||||
|
read(directory / phase / name) # reject duplicate JSON keys before any admission
|
||||||
|
pid = row['process']['pid']
|
||||||
|
require(type(pid) is int and pid > 0 and row['pid'] == pid, 'phase PID binding')
|
||||||
|
pids.append(pid)
|
||||||
|
start, end = row['process']['actual_start_binding'], row['process']['actual_end_binding']
|
||||||
|
require(type(start['monotonic_ns']) is int and end['monotonic_ns'] >= start['monotonic_ns'], 'PID start/end time')
|
||||||
|
command = admission['plan'][i]
|
||||||
|
require(command['phase'] == phase and command['role'] == ROLES.get(phase), 'planned role')
|
||||||
|
environment = {'THE_TREE_PACK_PROFILE_NAME': command['runtime_name'],
|
||||||
|
'THE_TREE_PACK_PROFILE_EXPECTED': command['runtime_profile'],
|
||||||
|
'THE_TREE_PACK_PROFILE_REPORT': str(original_out / (phase + '-guard.json')),
|
||||||
|
'THE_TREE_EQ_ROLE': ROLES.get(phase, ''), 'THE_TREE_P28_FIXTURE': admission['fixture'],
|
||||||
|
'THE_TREE_P28_FIXTURE_SHA': collector.FIXTURE_SHA}
|
||||||
|
require(command['environment'] == environment, 'guard/role/fixture environment')
|
||||||
|
require(command['startup_profile'] == str(standard.profile_path(command['startup_name'])) and
|
||||||
|
command['runtime_profile'] == str(standard.profile_path(command['runtime_name'])), 'profile name/path')
|
||||||
|
require(row['argv'][:-3] == command['argv'] and row['argv'][-3] == '--log-file' and
|
||||||
|
row['argv'][-1] == '--verbose' and '--headless' in row['argv'], 'phase argv')
|
||||||
|
require(row['environment'] == command['environment'], 'phase environment')
|
||||||
|
collector.stage_gate(previous, row['stage_inventory'], importing=phase == 'import')
|
||||||
|
previous = row['stage_inventory']
|
||||||
|
require(row['source_preserved'] is True and row['player_preserved'] is True, 'phase preservation')
|
||||||
|
startup = row['startup_project']
|
||||||
|
require(startup['name'] == command['startup_name'] and startup['profile'] == command['startup_profile'] and
|
||||||
|
startup['fresh_before'] is True and startup['restored_sha256'] == source['project.godot']['sha256'], 'startup profile')
|
||||||
|
require(sha(directory / (phase + '-startup-project.godot')) == startup['sha256'], 'startup project bytes')
|
||||||
|
require((directory / (phase + '-startup-project.godot')).read_bytes() ==
|
||||||
|
standard.private_project((ROOT / 'project.godot').read_bytes(), command['startup_name']), 'private project policy')
|
||||||
|
profiles.extend([startup['profile'], command['runtime_profile']])
|
||||||
|
for kind in ('startup', 'runtime'):
|
||||||
|
copied = row['profile_copies'][kind]
|
||||||
|
target = directory / phase / (kind + '-profile')
|
||||||
|
require(type(copied['exists']) is bool and copied['exists'] == target.is_dir(), 'profile existence/copy')
|
||||||
|
require((inventory(target, seals=True) if target.is_dir() else {}) == copied['files'], 'complete profile copy')
|
||||||
|
require(execution['profiles_retained'][command[kind + '_profile']] == copied['files'], 'retained profile changed')
|
||||||
|
if phase in ROLES:
|
||||||
|
require(row['profile_copies']['runtime']['exists'] is True, 'missing runtime profile')
|
||||||
|
require({n[len('evidence/'):]: p for n, p in row['profile_copies']['runtime']['files'].items()
|
||||||
|
if n.startswith('evidence/')} == row['evidence_files'], 'profile/evidence copy binding')
|
||||||
|
require(row['role'] == ROLES[phase] and row['runtime_profile'] == command['runtime_profile'] and
|
||||||
|
row['runtime_name'] == command['runtime_name'], 'runtime/role binding')
|
||||||
|
collector.guard_gate(row['guard'], Path(row['runtime_profile']), row['runtime_name'])
|
||||||
|
evidence_rows.append(row)
|
||||||
|
else:
|
||||||
|
require(row['role'] is None, 'parse/import role')
|
||||||
|
require('P28_02_EQ_REPORT=' not in (directory / phase / 'stdout.log').read_text(), 'parse/import report')
|
||||||
|
results = phase_results(directory, evidence_rows, parallel)
|
||||||
|
joined = {phase: value['joined'] for phase, value in results.items()}
|
||||||
|
require(len(set(pids)) == 7 and len(set(profiles)) == 14, 'PID/profile reuse')
|
||||||
|
require({r['pid'] for r in execution['cleanup']} == set(pids) and all(
|
||||||
|
r['engine_ended'] is True and r['outer_cleanup_errors'] == [] and
|
||||||
|
r['foreign_process_or_group_signals'] == 0 for r in execution['cleanup']), 'cleanup incomplete')
|
||||||
|
comparisons = {}
|
||||||
|
for role in ('R', 'O'):
|
||||||
|
result = eq.compare_reports(joined[role + '-A'], joined[role + '-B'])
|
||||||
|
require(result['ok'] and result['differences'] == [], 'same-role determinism failed: ' + role)
|
||||||
|
comparisons[role] = result
|
||||||
|
return wire({'phases': results, 'comparisons': comparisons, 'measured_source': admission['measured_source'],
|
||||||
|
'version': closure['version'], 'registered_changes': closure['allowed_changed'],
|
||||||
|
'candidate_Q_measured': False, 'original_credit': 0, 'formal_acceptance': False})
|
||||||
|
|
||||||
|
|
||||||
|
VERSION_PINS = ('dependencies', 'frozen', 'worker', 'fixture', 'engine', 'engine_version', 'readonly',
|
||||||
|
'original_manifest', 'machine', 'platform')
|
||||||
|
|
||||||
|
|
||||||
|
def existing_defects(directory, phase):
|
||||||
|
"""Scenario outcomes the stored checker recorded as existing product defects."""
|
||||||
|
checker = read(Path(directory) / phase / 'checker.json')
|
||||||
|
require(checker['ok'] is True, 'stored checker failed: ' + phase)
|
||||||
|
return [{'scenario': row['id'], 'status': row['status'], 'kinds': [defect['kind'] for defect in row['defects']]}
|
||||||
|
for key in ('e3', 'e45') for row in checker[key] if row['status'].startswith('existing-defect')]
|
||||||
|
|
||||||
|
|
||||||
|
def compare_bundles(before, after):
|
||||||
|
"""S6 cross-version comparison of two sealed EQ bundles (SPEC §2/§3.2, OPT_CONTRACT_T1 §2-§4).
|
||||||
|
|
||||||
|
Each bundle is proven by its own version's native-verify (raw recomputation, same-role
|
||||||
|
determinism, checkout pins). Here both seals, versions and source closures are checked
|
||||||
|
again, every non-product pin must be equal (the EQ, DIAG, collector and RESTART bytes,
|
||||||
|
fixture, engine and inputs), and the sealed joined reports of the A phases are compared
|
||||||
|
by compare_reports. Differences, exclusions and existing defects are all returned."""
|
||||||
|
before, after = Path(before).resolve(), Path(after).resolve()
|
||||||
|
require(before != after, 'two different bundles required')
|
||||||
|
admissions = {}
|
||||||
|
for version, directory in (('before', before), ('after', after)):
|
||||||
|
check_seal(directory)
|
||||||
|
execution = read(directory / 'execution.json')
|
||||||
|
require(execution['passed'] is True and execution['error'] is None, version + ' native failed')
|
||||||
|
admission = execution['admission']
|
||||||
|
require(read(directory / 'admission.json') == admission, version + ' admission copy')
|
||||||
|
closure = eq.admit_source(admission['source_map'], admission['pins']['registered_changes'])
|
||||||
|
require(closure == admission['pins']['source_closure'] and closure['version'] == version == admission['version'] and
|
||||||
|
admission['measured_source'] == MEASURED[version] and admission['candidate_Q_measured'] is False,
|
||||||
|
version + ' bundle version/closure')
|
||||||
|
admissions[version] = admission
|
||||||
|
for key in VERSION_PINS:
|
||||||
|
require(admissions['before']['pins'][key] == admissions['after']['pins'][key], 'non-product pin differs between versions: ' + key)
|
||||||
|
comparisons, reports = {}, {}
|
||||||
|
for role in ('R', 'O'):
|
||||||
|
phase = role + '-A'
|
||||||
|
for version, directory in (('before', before), ('after', after)):
|
||||||
|
eq.add_blob_root(directory / phase / 'evidence' / 'blobs')
|
||||||
|
reports[version] = read(directory / phase / 'joined.json')
|
||||||
|
eq.ACTIVE_PROFILES[:] = [reports['before']['profile_root'], reports['after']['profile_root']]
|
||||||
|
comparisons[role] = eq.compare_reports(reports['before'], reports['after'])
|
||||||
|
defects = {version: {role: existing_defects(directory, role + '-A') for role in ('R', 'O')}
|
||||||
|
for version, directory in (('before', before), ('after', after))}
|
||||||
|
return wire({'ok': all(c['ok'] and c['differences'] == [] for c in comparisons.values()),
|
||||||
|
'versions': {version: {'commit': a['commit'], 'measured_source': a['measured_source'],
|
||||||
|
'source_closure': a['pins']['source_closure']} for version, a in admissions.items()},
|
||||||
|
'comparisons': comparisons, 'existing_defects': defects,
|
||||||
|
'after_all_e_pass': not any(defects['after'].values()),
|
||||||
|
'formal_acceptance': False, 'original_credit': 0})
|
||||||
|
|
||||||
|
|
||||||
|
def verify(project_root, directory):
|
||||||
|
from run_eq import load_dependencies, actual_pins
|
||||||
|
project_root, directory = Path(project_root).resolve(), Path(directory).resolve()
|
||||||
|
check_seal(directory)
|
||||||
|
execution = read(directory / 'execution.json')
|
||||||
|
collector, standard, outer, diag = load_dependencies(project_root)
|
||||||
|
admission = execution['admission']
|
||||||
|
# S5: inputs outside the checkout are read from the copies sealed in the bundle; the
|
||||||
|
# sandboxed validation cannot read the originals (seatbelt), and the copies were checked
|
||||||
|
# against them by run_eq before any phase.
|
||||||
|
inputs = directory / 'inputs'
|
||||||
|
require(actual_pins(project_root, Path(admission['readonly_path']), inputs / 'fixture' / Path(admission['fixture']).name,
|
||||||
|
Path(admission['engine']), collector, standard, copies=inputs / 'readonly',
|
||||||
|
registered=admission['pins']['registered_changes']) == admission['pins'],
|
||||||
|
'actual input/source/EQ pins differ')
|
||||||
|
result = recompute(directory, execution, collector, standard, diag, parallel=True)
|
||||||
|
require(result == read(directory / 'results.json'), 'recomputed results differ')
|
||||||
|
for phase, values in result['phases'].items():
|
||||||
|
for name, value in values.items():
|
||||||
|
require(read(directory / phase / (name + '.json')) == value, 'raw/joined/proof/checker copy differs')
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if sys.argv[1:] == ['--phase-worker']:
|
||||||
|
return phase_worker()
|
||||||
|
if sys.argv[1:2] == ['--compare-versions']:
|
||||||
|
parser = argparse.ArgumentParser(description=compare_bundles.__doc__)
|
||||||
|
parser.add_argument('--compare-versions', action='store_true', required=True)
|
||||||
|
parser.add_argument('--before', type=Path, required=True)
|
||||||
|
parser.add_argument('--after', type=Path, required=True)
|
||||||
|
args = parser.parse_args()
|
||||||
|
try:
|
||||||
|
with check.memo_scope():
|
||||||
|
result = compare_bundles(args.before, args.after)
|
||||||
|
print(json.dumps({'status': 'compared', 'result': result}, ensure_ascii=False, allow_nan=False))
|
||||||
|
return 0 if result['ok'] else 1
|
||||||
|
except (ValueError, OSError, KeyError, TypeError, IndexError) as error:
|
||||||
|
print(json.dumps({'status': 'failed', 'error': str(error), 'formal_acceptance': False}))
|
||||||
|
return 1
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
parser.add_argument('--project-root', type=Path, required=True)
|
||||||
|
args = parser.parse_args()
|
||||||
|
try:
|
||||||
|
require(os.environ.get('BUILD_OUTPUT_DIR'), 'BUILD_OUTPUT_DIR required')
|
||||||
|
with check.memo_scope():
|
||||||
|
result = verify(args.project_root, Path(os.environ['BUILD_OUTPUT_DIR']) / 'p28-02-eq-evidence')
|
||||||
|
print(json.dumps({'status': 'verified', 'result': result}, ensure_ascii=False, allow_nan=False))
|
||||||
|
return 0
|
||||||
|
except (ValueError, OSError, KeyError, TypeError, IndexError) as error:
|
||||||
|
print(json.dumps({'status': 'failed', 'error': str(error), 'formal_acceptance': False}))
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
raise SystemExit(main())
|
||||||
@@ -243,7 +243,7 @@
|
|||||||
"facility_value_contracts_validation.json": "bf490a9ca585c48fc318e76c4a069ef244827d828d46e6415399f7710590dd16",
|
"facility_value_contracts_validation.json": "bf490a9ca585c48fc318e76c4a069ef244827d828d46e6415399f7710590dd16",
|
||||||
"performance_audit.json": "0b630b15a392c3e0366f1362bfe4ddacb968f915f54549f82e4d6fa315384762",
|
"performance_audit.json": "0b630b15a392c3e0366f1362bfe4ddacb968f915f54549f82e4d6fa315384762",
|
||||||
"progress_contract.json": "ccbdfce8c8365d5c13f59531955708834cce45acd0e136561c95295dfdb5df77",
|
"progress_contract.json": "ccbdfce8c8365d5c13f59531955708834cce45acd0e136561c95295dfdb5df77",
|
||||||
"progress_snapshot.json": "e8d29c7b8d8b8f8cf6d68a20572d5e8afcc3a13885c87ea8f767175f83f272d9",
|
"progress_snapshot.json": "b90224aa67f82882fb5c5d52b1fd22065599bf3ab155f28e97670d84a64ca563",
|
||||||
"progress_validator_guard_checks.json": "72ee513fcf1cad85c24bfd0a4b472f425f6acf117928ece0f6b41e29018da627",
|
"progress_validator_guard_checks.json": "72ee513fcf1cad85c24bfd0a4b472f425f6acf117928ece0f6b41e29018da627",
|
||||||
"progress_validator_guard_checks.r01.json": "14c26adffa5a1938241db4912e50ea54b660641ee6fee2e412d467dce14d0519",
|
"progress_validator_guard_checks.r01.json": "14c26adffa5a1938241db4912e50ea54b660641ee6fee2e412d467dce14d0519",
|
||||||
"requirement_coverage.json": "03b10e4da367579db502d0671a6e0dda36fd385111c6f1c0084acaff7605f593",
|
"requirement_coverage.json": "03b10e4da367579db502d0671a6e0dda36fd385111c6f1c0084acaff7605f593",
|
||||||
@@ -253,6 +253,6 @@
|
|||||||
"validate_facility_value_contracts.py": "91640e2a76cd6cc9186f7b85c0bf379b24b6cac0d48962815235ee628e7ae43e",
|
"validate_facility_value_contracts.py": "91640e2a76cd6cc9186f7b85c0bf379b24b6cac0d48962815235ee628e7ae43e",
|
||||||
"validate_plan.py": "4973d3c2797289d266f5c6e7c36f3d2c31931b23a1022eab3d94328267bcc1b4",
|
"validate_plan.py": "4973d3c2797289d266f5c6e7c36f3d2c31931b23a1022eab3d94328267bcc1b4",
|
||||||
"validator_update_checks.json": "f997d0f3de2cea29550840b1d5cb23647d64f81329de46758551e2b6c8fecc27",
|
"validator_update_checks.json": "f997d0f3de2cea29550840b1d5cb23647d64f81329de46758551e2b6c8fecc27",
|
||||||
"work_packages.json": "ff8fd48f25473cc4dde66656d10114b14da48e83085833b59117c6410bae0c34"
|
"work_packages.json": "445870757a77382bb8591ac4f333838a4db45203e02f131b497ca86d2cbe3dfa"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"schema_version": 1,
|
"schema_version": 1,
|
||||||
"integrated_at_jst": "2026-10-22T01:45:37.125591+09:00",
|
"integrated_at_jst": "2026-10-22T10:14:42.989122+09:00",
|
||||||
"scope": "原30パッケージ/88成果、正式完了23成果・4パッケージ。部分点なし。P28-01全条件を独立レビュー/通常final/実DB結合で正式完了。次P28-02未完。全ゲーム/同一Windows最終受入は未完。",
|
"scope": "原30パッケージ/88成果、正式完了23成果・4パッケージ。部分点なし。P28-01全条件を独立レビュー/通常final/実DB結合で正式完了。次P28-02未完。全ゲーム/同一Windows最終受入は未完。",
|
||||||
"source_head": "ac1a115e3f87b1e31cc74852fa5a0f5ba21129cc",
|
"source_head": "4e34e5209706e3e16a4860e65e52b90287722c36",
|
||||||
"source_authority_note": "Docs-only current Opus handoff and reader timing observation. Original contracts/states unchanged. No EQ or original acceptance credit.",
|
"source_authority_note": "P28-02-EQの実Sを測定しQのsource/settings/EQ/DIAG/collector bytes一致資格を確認。全4通常ゲートと実DB結合完了、EQ補助の原加算0。旧Sの失敗とchanges_requestedは元証拠に保持。",
|
||||||
"immutable_history": {
|
"immutable_history": {
|
||||||
"baseline.json": {
|
"baseline.json": {
|
||||||
"sha256": "750bb3d313cc5e2ce0d4c79e563a995abd7a78f991dee1dd75c627877b02cd7b",
|
"sha256": "750bb3d313cc5e2ce0d4c79e563a995abd7a78f991dee1dd75c627877b02cd7b",
|
||||||
@@ -4555,7 +4555,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"known_original_principal_profit_difference_unresolved": 0,
|
"known_original_principal_profit_difference_unresolved": 0,
|
||||||
"next_priority_original_principal_profit": "P14-03 and P28-01 formally completed. Current original target P28-02; auxiliary EQ reader timing repair owned by actual Desktop Opus.",
|
"next_priority_original_principal_profit": "P14-03 and P28-01 formally completed; P28-02-EQ support formally completed. Current original target P28-02 (T1 OPT next).",
|
||||||
"historical_before_original_profit_fix_original_principal_profit_reproduction_checkpoint": {
|
"historical_before_original_profit_fix_original_principal_profit_reproduction_checkpoint": {
|
||||||
"issued_by": "/root",
|
"issued_by": "/root",
|
||||||
"linked_at_jst": "2026-10-09T07:29:13.140774+09:00",
|
"linked_at_jst": "2026-10-09T07:29:13.140774+09:00",
|
||||||
@@ -10598,7 +10598,7 @@
|
|||||||
},
|
},
|
||||||
"whole_game_acceptance": false
|
"whole_game_acceptance": false
|
||||||
},
|
},
|
||||||
"next_closure_note": "原P28-02は意味を保つ軽量化の全条件で閉じる。現在Opus委任の補助EQ reader高速化。EQが通常finalを通っても原加算0。続くT1実最適化/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入後だけ23→24。",
|
"next_closure_note": "原P28-02は意味を保つ軽量化の全条件で閉じる。補助EQは正式完了(原加算0)。続くT1実最適化/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入後だけ23→24。",
|
||||||
"current_p26_01_content_ledger": {
|
"current_p26_01_content_ledger": {
|
||||||
"at": "2026-10-17T20:44:25.180745+09:00",
|
"at": "2026-10-17T20:44:25.180745+09:00",
|
||||||
"original_plan_id": "P26-01",
|
"original_plan_id": "P26-01",
|
||||||
@@ -10786,53 +10786,18 @@
|
|||||||
"whole_goal_accepted": false
|
"whole_goal_accepted": false
|
||||||
},
|
},
|
||||||
"current_workflow_handoff": {
|
"current_workflow_handoff": {
|
||||||
"controller_title": "ゲーム開発作業",
|
|
||||||
"controller_local_session": "local_a7f85421-3eed-4482-8030-c0dca669573a",
|
"controller_local_session": "local_a7f85421-3eed-4482-8030-c0dca669573a",
|
||||||
"actual_model": "Opus5.5 ultra-high",
|
"actual_model": "Opus5.5",
|
||||||
"project": "the-tree-p28-02-eq",
|
"completed": "P28-02-EQ",
|
||||||
"task": "P28-02-EQ",
|
"next": "P28-02-OPT per OPT_CONTRACT_T1 §6: before record (S_eq native qualified on Q_eq), (b) before runs, OPT registration and implementation, after measurements on the OPT S, OPT validation, whole-unit review, integration/final, ledger 23->24",
|
||||||
"state": "repair_ready",
|
|
||||||
"stage": "S5 reader profiling/optimization",
|
|
||||||
"submitted": "6f75c9a0513aafe5bd6ae7ed46b0ffda6386ac50",
|
|
||||||
"repairs": 10,
|
|
||||||
"old_codex_run_terminal_record": {
|
|
||||||
"id": "92b50d1b750e42a5bde6c325dfa1dfc1",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 52772,
|
|
||||||
"started": 1792544334.2423732,
|
|
||||||
"finished": 1792545039.5378282,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/92b50d1b750e42a5bde6c325dfa1dfc1",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 2989342, \"cached_input_tokens\": 2890752, \"cache_write_input_tokens\": 0, \"output_tokens\": 16685, \"reasoning_output_tokens\": 1313}"
|
|
||||||
},
|
|
||||||
"actual_implementer": {
|
|
||||||
"at": 1792593136.070688,
|
|
||||||
"implementer_service": "claude",
|
|
||||||
"implementer_model": "claude-opus-5-5",
|
|
||||||
"implementer_session": "local_a7f85421-3eed-4482-8030-c0dca669573a (Claude Desktop, Code tab)",
|
|
||||||
"policy_allowed_services_includes_claude": true,
|
|
||||||
"user_statement": "Codexの使用量上限いきそうなので、作業をひきとって",
|
|
||||||
"user_statement_relayed_addendum": "ユーザーはこのチャットでも『実装担当含めOpusに委任』と明示済み。指揮と実装をOpus5.5で続け、Codex/Astraの新runは開始しない",
|
|
||||||
"contract_worker_field_unchanged": "codex",
|
|
||||||
"note": "Contract is immutable and keeps worker codex as registered; the actual implementer for repair 10 onward is Claude Opus 5.5 in the Desktop session, submitted through the normal Runner.submit gate. The independent review stays a separate fresh Opus session.",
|
|
||||||
"no_new_codex_run": true
|
|
||||||
},
|
|
||||||
"checkpoint": {
|
"checkpoint": {
|
||||||
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_FORMAL_COMPLETION_4E34E52.json",
|
||||||
"bytes": 14049,
|
"bytes": 23096,
|
||||||
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
"sha256": "833f29fd97f54a2150a3e674ba45353f938207f57b59687cfa97f1c65caeea7a"
|
||||||
},
|
},
|
||||||
"original_credit": 0,
|
"original_credit": 0,
|
||||||
"original_completed": 23,
|
"original_completed": 23,
|
||||||
"original_total": 88,
|
"original_total": 88
|
||||||
"next": "Follow actual Desktop Opus/current profiling handle. Preserve completed r3 raw and improve Python within unchanged 300s while preserving all6 checks. Then normal submit, exact-S native7, both validations, fresh independent Opus review, Q qualification/integration/final; original OPT whole-unit remains.",
|
|
||||||
"controller_session_description": "local_a7f85421-3eed-4482-8030-c0dca669573a (Claude Desktop, Code tab)"
|
|
||||||
},
|
},
|
||||||
"historical_workflow_before_desktop_handoff_20261019": {
|
"historical_workflow_before_desktop_handoff_20261019": {
|
||||||
"source_thread": "01a14f6a-b6a1-7fd3-bd45-0f84bbef77be",
|
"source_thread": "01a14f6a-b6a1-7fd3-bd45-0f84bbef77be",
|
||||||
@@ -11624,258 +11589,24 @@
|
|||||||
"current_P28_02_execution": {
|
"current_P28_02_execution": {
|
||||||
"project": "the-tree-p28-02-eq",
|
"project": "the-tree-p28-02-eq",
|
||||||
"task": "P28-02-EQ",
|
"task": "P28-02-EQ",
|
||||||
"state": "repair_ready",
|
"state": "completed",
|
||||||
"repairs": 10,
|
"submitted": "9adbbee334548ac36cd49d68efc021abb7acd003",
|
||||||
"submitted": "6f75c9a0513aafe5bd6ae7ed46b0ffda6386ac50",
|
"candidate": "4e34e5209706e3e16a4860e65e52b90287722c36",
|
||||||
"candidate": null,
|
"main_base": "54e07ca98093901e6a53d1bdad86b6c81fcc2db5",
|
||||||
"worktree": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement",
|
|
||||||
"unsubmitted_Opus_changes": true,
|
|
||||||
"contract": {
|
|
||||||
"id": "P28-02-EQ",
|
|
||||||
"title": "意味を保つ軽量化:同等性の先行固定(harness)",
|
|
||||||
"requirement_ids": [
|
|
||||||
"P28-02",
|
|
||||||
"P28"
|
|
||||||
],
|
|
||||||
"acceptance_ids": [
|
|
||||||
"P28-02-EQ1",
|
|
||||||
"P28-02-EQ2",
|
|
||||||
"P28-02-EQ3",
|
|
||||||
"P28-02-EQ4",
|
|
||||||
"P28-02-EQ5",
|
|
||||||
"P28-02-EQ6"
|
|
||||||
],
|
|
||||||
"spec_ref": "docs/plans/original-completion-2026-10-02/execution/p28-02/eq/SPEC.md",
|
|
||||||
"base_commit": "2549cf7d6992560b850bbd11934e3c14b39a1988",
|
|
||||||
"worker": "codex",
|
|
||||||
"allowed_paths": [
|
|
||||||
"docs/plans/original-completion-2026-10-02/execution/p28-02/eq/**"
|
|
||||||
],
|
|
||||||
"depends_on": [],
|
|
||||||
"resource_locks": [
|
|
||||||
"p28-02-eq"
|
|
||||||
],
|
|
||||||
"validation_ids": [
|
|
||||||
"p28-02-eq-unit",
|
|
||||||
"p28-02-eq-native-verify"
|
|
||||||
],
|
|
||||||
"max_repair_attempts": null,
|
|
||||||
"spec_sha256": "cf75af22a803bf492e30f8a04a39f5187ece5b94cd54207aad8ece1683d4bc93"
|
|
||||||
},
|
|
||||||
"delegation_event": {
|
|
||||||
"id": 84,
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"event": "owner_delegated_implementer",
|
|
||||||
"data": {
|
|
||||||
"at": 1792593136.070688,
|
|
||||||
"implementer_service": "claude",
|
|
||||||
"implementer_model": "claude-opus-5-5",
|
|
||||||
"implementer_session": "local_a7f85421-3eed-4482-8030-c0dca669573a (Claude Desktop, Code tab)",
|
|
||||||
"policy_allowed_services_includes_claude": true,
|
|
||||||
"user_statement": "Codexの使用量上限いきそうなので、作業をひきとって",
|
|
||||||
"user_statement_relayed_addendum": "ユーザーはこのチャットでも『実装担当含めOpusに委任』と明示済み。指揮と実装をOpus5.5で続け、Codex/Astraの新runは開始しない",
|
|
||||||
"contract_worker_field_unchanged": "codex",
|
|
||||||
"note": "Contract is immutable and keeps worker codex as registered; the actual implementer for repair 10 onward is Claude Opus 5.5 in the Desktop session, submitted through the normal Runner.submit gate. The independent review stays a separate fresh Opus session.",
|
|
||||||
"no_new_codex_run": true
|
|
||||||
},
|
|
||||||
"created": 1792593136.0740118
|
|
||||||
},
|
|
||||||
"old_codex_run_terminal_record": {
|
|
||||||
"id": "92b50d1b750e42a5bde6c325dfa1dfc1",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 52772,
|
|
||||||
"started": 1792544334.2423732,
|
|
||||||
"finished": 1792545039.5378282,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/92b50d1b750e42a5bde6c325dfa1dfc1",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 2989342, \"cached_input_tokens\": 2890752, \"cache_write_input_tokens\": 0, \"output_tokens\": 16685, \"reasoning_output_tokens\": 1313}"
|
|
||||||
},
|
|
||||||
"stage": "S5 reader profiling/optimization",
|
|
||||||
"actual_model": "claude-opus-5-5 (Desktop ultra-high)",
|
|
||||||
"checkpoint": {
|
"checkpoint": {
|
||||||
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_FORMAL_COMPLETION_4E34E52.json",
|
||||||
"bytes": 14049,
|
"bytes": 23096,
|
||||||
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
"sha256": "833f29fd97f54a2150a3e674ba45353f938207f57b59687cfa97f1c65caeea7a"
|
||||||
},
|
},
|
||||||
"formal_acceptance": false,
|
"formal_acceptance_support_only": true,
|
||||||
|
"original_credit": 0,
|
||||||
|
"next": "P28-02-OPT",
|
||||||
"remaining_conditions": [
|
"remaining_conditions": [
|
||||||
"S5 reader optimization preserving every typed state/event/check: completed R3 diagnostic took 1270.3s; whole registered verify cap remains 300s; new exact-source local tests required after changes",
|
"Before record: S_eq native 9adbbee (version before) qualified on Q_eq 4e34e52; Root runs (b) frame-before r02/r03 (OPT_CONTRACT_T1 §4)",
|
||||||
"Normal owner submission of actual Opus retained implementation; exact final-S native7 with full raw/owned/guard/PID/source/player/cleanup bundle, both registered validations",
|
"Fix the OPT acceptance rule for cross-version differences (review low 1): only before-version existing-defect scenarios and their cause fields",
|
||||||
"Fresh independent Opus all6 review, normal prepare-integration, exact candidate qualification, honest delegated owner approval, integration/final; EQ support adds zero original units",
|
"P28-02-OPT registration and implementation (existing allowed 6 product files; in-scope existing E failures fixed), then on its S: EQ after (run_eq --opt-changed), (a) DIAG phase after, (b) frame after x3, (c) RESTART, (d) full192 roster",
|
||||||
"Original P28-02 T1 product optimization, same-condition three-run comparisons, RESTART, exact final full192 roster, whole-unit original work/acceptance plus cross-cutting6 review/final"
|
"OPT validation (unit and every bundle verify incl. verify_eq --compare-versions), fresh independent Opus whole-unit review (original work/acceptance, cross-cutting 6, U1/U2), integration, Q reuse qualification §5, final, ledger 23->24"
|
||||||
],
|
]
|
||||||
"W": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement",
|
|
||||||
"S": "6f75c9a0513aafe5bd6ae7ed46b0ffda6386ac50",
|
|
||||||
"base": "2549cf7d6992560b850bbd11934e3c14b39a1988",
|
|
||||||
"real_runs": [
|
|
||||||
{
|
|
||||||
"id": "eed3a23a87144985a953513517ba6cce",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 91723,
|
|
||||||
"started": 1792534900.465473,
|
|
||||||
"finished": 1792534987.111678,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/eed3a23a87144985a953513517ba6cce",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 738104, \"cached_input_tokens\": 652544, \"cache_write_input_tokens\": 0, \"output_tokens\": 3082, \"reasoning_output_tokens\": 925}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "8d5e4a14dd1640a3bebeafa2b49e34ab",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 95908,
|
|
||||||
"started": 1792535447.577267,
|
|
||||||
"finished": 1792535577.093471,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/8d5e4a14dd1640a3bebeafa2b49e34ab",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 1026735, \"cached_input_tokens\": 934016, \"cache_write_input_tokens\": 0, \"output_tokens\": 3952, \"reasoning_output_tokens\": 1249}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "84ca0ff895c64ac89ffcef945f8848fe",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 1299,
|
|
||||||
"started": 1792536166.565137,
|
|
||||||
"finished": 1792536437.4674659,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/84ca0ff895c64ac89ffcef945f8848fe",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 1703268, \"cached_input_tokens\": 1600512, \"cache_write_input_tokens\": 0, \"output_tokens\": 9488, \"reasoning_output_tokens\": 3494}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "3325e7da9d064d2792fd178f400bc492",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 6380,
|
|
||||||
"started": 1792536976.04443,
|
|
||||||
"finished": 1792537645.841019,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/3325e7da9d064d2792fd178f400bc492",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 1574178, \"cached_input_tokens\": 1491712, \"cache_write_input_tokens\": 0, \"output_tokens\": 28968, \"reasoning_output_tokens\": 3552}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "558b96b3fe5e462296e85bc591622d1c",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 12205,
|
|
||||||
"started": 1792537978.637717,
|
|
||||||
"finished": 1792538824.796691,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/558b96b3fe5e462296e85bc591622d1c",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 2214984, \"cached_input_tokens\": 2007168, \"cache_write_input_tokens\": 0, \"output_tokens\": 41770, \"reasoning_output_tokens\": 4112}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "32288e966a844f5baec4dc931bc281a5",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 24130,
|
|
||||||
"started": 1792539888.089719,
|
|
||||||
"finished": 1792540614.1304991,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/32288e966a844f5baec4dc931bc281a5",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 2680455, \"cached_input_tokens\": 2561536, \"cache_write_input_tokens\": 0, \"output_tokens\": 30748, \"reasoning_output_tokens\": 4302}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "7da027a85548460bb008b562a79a52ae",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 32210,
|
|
||||||
"started": 1792541236.488162,
|
|
||||||
"finished": 1792541342.4558878,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/7da027a85548460bb008b562a79a52ae",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 820999, \"cached_input_tokens\": 732032, \"cache_write_input_tokens\": 0, \"output_tokens\": 3367, \"reasoning_output_tokens\": 315}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "c056b928052a493db734593026d471b4",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 34943,
|
|
||||||
"started": 1792541665.953645,
|
|
||||||
"finished": 1792542376.8565261,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/c056b928052a493db734593026d471b4",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 3735588, \"cached_input_tokens\": 3596032, \"cache_write_input_tokens\": 0, \"output_tokens\": 36619, \"reasoning_output_tokens\": 6008}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "20dc4135cc3041dbb82fcc2b2a6b0cbe",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "failed",
|
|
||||||
"pid": 43572,
|
|
||||||
"started": 1792543013.4890702,
|
|
||||||
"finished": 1792543913.491642,
|
|
||||||
"exit_code": 124,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/20dc4135cc3041dbb82fcc2b2a6b0cbe",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "92b50d1b750e42a5bde6c325dfa1dfc1",
|
|
||||||
"task_id": "P28-02-EQ",
|
|
||||||
"role": "implementer",
|
|
||||||
"service": "codex",
|
|
||||||
"status": "finished",
|
|
||||||
"pid": 52772,
|
|
||||||
"started": 1792544334.2423732,
|
|
||||||
"finished": 1792545039.5378282,
|
|
||||||
"exit_code": 0,
|
|
||||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/92b50d1b750e42a5bde6c325dfa1dfc1",
|
|
||||||
"api_cost_usd": null,
|
|
||||||
"estimated_cost_usd": null,
|
|
||||||
"subscription_usage": null,
|
|
||||||
"usage_json": "{\"input_tokens\": 2989342, \"cached_input_tokens\": 2890752, \"cache_write_input_tokens\": 0, \"output_tokens\": 16685, \"reasoning_output_tokens\": 1313}"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"coordinator_state": "原P28-02未完、補助EQも未受入。旧S6f75c9aは146局所試験後に通常提出済みだが正確S nativeのmkdir失敗を保全。実Runner repair_ready10、旧Codex run92b50は終了済み。ユーザー委任をevent84へ記録し、Desktop Opus5.5超高が同WのS5を指揮・実装中。R/O双方E1〜E5・39行を維持、信号のコマンド/通常公開をsource因果で完全照合。旧156局所試験211.416秒の後にも修正があり、新版合格に流用しない。scratch R3はGodot942秒/exit0、Pythonのcheck_report/自己比較True・実exit0だが全体1270.3秒、lifecycle300.6秒で正式verify300秒未達。NA/既存不具合をPASS補完せず全raw保持。Opusが保持R3 rawでcProfileと結果同値のreader高速化を進行、Rootは重複実装/engine/試験を起動しない。最終Sのnative7・両正式validation・fresh独立Opus全6・通常Q資格/委任承認/統合final、続くOPT T1/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入は未達。原30/88・正式23/88、4/30・部分点なし、補助EQの原加算0。最大場面性能、完成資産、同一Windows実機、長期通し、全ゲームの未達を維持。"
|
|
||||||
},
|
},
|
||||||
"historical_source_header_before_P28_02_DIAG_start": {
|
"historical_source_header_before_P28_02_DIAG_start": {
|
||||||
"source_head": "ae9ae47646434dd57fc21f3e8566d0d35b242ab1",
|
"source_head": "ae9ae47646434dd57fc21f3e8566d0d35b242ab1",
|
||||||
@@ -12334,11 +12065,11 @@
|
|||||||
"bytes": 18478,
|
"bytes": 18478,
|
||||||
"sha256": "7d83ec0e19e0c12ecefebc5ab0bdffb20743ed34c6144251a08b83b315b09ecf"
|
"sha256": "7d83ec0e19e0c12ecefebc5ab0bdffb20743ed34c6144251a08b83b315b09ecf"
|
||||||
},
|
},
|
||||||
"current_p28_02_summary": "原P28-02未完、補助EQも未受入。旧S6f75c9aは146局所試験後に通常提出済みだが正確S nativeのmkdir失敗を保全。実Runner repair_ready10、旧Codex run92b50は終了済み。ユーザー委任をevent84へ記録し、Desktop Opus5.5超高が同WのS5を指揮・実装中。R/O双方E1〜E5・39行を維持、信号のコマンド/通常公開をsource因果で完全照合。旧156局所試験211.416秒の後にも修正があり、新版合格に流用しない。scratch R3はGodot942秒/exit0、Pythonのcheck_report/自己比較True・実exit0だが全体1270.3秒、lifecycle300.6秒で正式verify300秒未達。NA/既存不具合をPASS補完せず全raw保持。Opusが保持R3 rawでcProfileと結果同値のreader高速化を進行、Rootは重複実装/engine/試験を起動しない。最終Sのnative7・両正式validation・fresh独立Opus全6・通常Q資格/委任承認/統合final、続くOPT T1/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入は未達。原30/88・正式23/88、4/30・部分点なし、補助EQの原加算0。最大場面性能、完成資産、同一Windows実機、長期通し、全ゲームの未達を維持。",
|
"current_p28_02_summary": "P28-02-EQ補助はS 9adbbee→Q 4e34e52で正式完了(Runner completed・補助6/6)。正確S native7(PID7・profile14・cleanup0・source1407・seal v2)、正式unit179/native-verify、fresh独立Opus全6 PASS(high/medium0・low2)、通常integration/final、実DB/traceability照合。前S a46418dのEQ5 changes_requested、b2dbda8のvalidation失敗、6f75c9aのnative失敗は保全。実装はユーザー委任のDesktop Opus5.5(contract workerはcodexのまま)。原成果加算0。次はOPT_CONTRACT_T1 §6の順で、EQ前の値(S_eq nativeをQ_eqで資格確認済み)と(b)前版2回、OPT登録・実装(許可6ファイル、範囲内の既存Eの不具合の修正を含む)、S上のEQ after・(a)(b)(c)(d)、OPT validation、whole-unit独立レビュー、統合final、台帳23→24。原P28-02は未完。正式23/88・4/30、部分点なし。性能予算false6・200客OpsON/同一Windows/長期/全ゲームは別未達。",
|
||||||
"current_p28_02_EQ_checkpoint": {
|
"current_p28_02_EQ_checkpoint": {
|
||||||
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_FORMAL_COMPLETION_4E34E52.json",
|
||||||
"bytes": 14049,
|
"bytes": 23096,
|
||||||
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
"sha256": "833f29fd97f54a2150a3e674ba45353f938207f57b59687cfa97f1c65caeea7a"
|
||||||
},
|
},
|
||||||
"historical_before_EQ_S1_local_readiness": {
|
"historical_before_EQ_S1_local_readiness": {
|
||||||
"current_P28_02_execution": {
|
"current_P28_02_execution": {
|
||||||
@@ -14151,5 +13882,328 @@
|
|||||||
"source_head": "e758d6873a6727a764ecbff5c08afad430a01eb8",
|
"source_head": "e758d6873a6727a764ecbff5c08afad430a01eb8",
|
||||||
"source_authority_note": "Docs-only retained S4 continuation checkpoint. Original contracts/states unchanged; product1407 unchanged. No EQ or original acceptance credit.",
|
"source_authority_note": "Docs-only retained S4 continuation checkpoint. Original contracts/states unchanged; product1407 unchanged. No EQ or original acceptance credit.",
|
||||||
"integrated_at_jst": "2026-10-21T10:01:18.016348+09:00"
|
"integrated_at_jst": "2026-10-21T10:01:18.016348+09:00"
|
||||||
|
},
|
||||||
|
"historical_before_EQ_formal_completion_20261022": {
|
||||||
|
"current_P28_02_execution": {
|
||||||
|
"project": "the-tree-p28-02-eq",
|
||||||
|
"task": "P28-02-EQ",
|
||||||
|
"state": "repair_ready",
|
||||||
|
"repairs": 10,
|
||||||
|
"submitted": "6f75c9a0513aafe5bd6ae7ed46b0ffda6386ac50",
|
||||||
|
"candidate": null,
|
||||||
|
"worktree": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement",
|
||||||
|
"unsubmitted_Opus_changes": true,
|
||||||
|
"contract": {
|
||||||
|
"id": "P28-02-EQ",
|
||||||
|
"title": "意味を保つ軽量化:同等性の先行固定(harness)",
|
||||||
|
"requirement_ids": [
|
||||||
|
"P28-02",
|
||||||
|
"P28"
|
||||||
|
],
|
||||||
|
"acceptance_ids": [
|
||||||
|
"P28-02-EQ1",
|
||||||
|
"P28-02-EQ2",
|
||||||
|
"P28-02-EQ3",
|
||||||
|
"P28-02-EQ4",
|
||||||
|
"P28-02-EQ5",
|
||||||
|
"P28-02-EQ6"
|
||||||
|
],
|
||||||
|
"spec_ref": "docs/plans/original-completion-2026-10-02/execution/p28-02/eq/SPEC.md",
|
||||||
|
"base_commit": "2549cf7d6992560b850bbd11934e3c14b39a1988",
|
||||||
|
"worker": "codex",
|
||||||
|
"allowed_paths": [
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/p28-02/eq/**"
|
||||||
|
],
|
||||||
|
"depends_on": [],
|
||||||
|
"resource_locks": [
|
||||||
|
"p28-02-eq"
|
||||||
|
],
|
||||||
|
"validation_ids": [
|
||||||
|
"p28-02-eq-unit",
|
||||||
|
"p28-02-eq-native-verify"
|
||||||
|
],
|
||||||
|
"max_repair_attempts": null,
|
||||||
|
"spec_sha256": "cf75af22a803bf492e30f8a04a39f5187ece5b94cd54207aad8ece1683d4bc93"
|
||||||
|
},
|
||||||
|
"delegation_event": {
|
||||||
|
"id": 84,
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"event": "owner_delegated_implementer",
|
||||||
|
"data": {
|
||||||
|
"at": 1792593136.070688,
|
||||||
|
"implementer_service": "claude",
|
||||||
|
"implementer_model": "claude-opus-5-5",
|
||||||
|
"implementer_session": "local_a7f85421-3eed-4482-8030-c0dca669573a (Claude Desktop, Code tab)",
|
||||||
|
"policy_allowed_services_includes_claude": true,
|
||||||
|
"user_statement": "Codexの使用量上限いきそうなので、作業をひきとって",
|
||||||
|
"user_statement_relayed_addendum": "ユーザーはこのチャットでも『実装担当含めOpusに委任』と明示済み。指揮と実装をOpus5.5で続け、Codex/Astraの新runは開始しない",
|
||||||
|
"contract_worker_field_unchanged": "codex",
|
||||||
|
"note": "Contract is immutable and keeps worker codex as registered; the actual implementer for repair 10 onward is Claude Opus 5.5 in the Desktop session, submitted through the normal Runner.submit gate. The independent review stays a separate fresh Opus session.",
|
||||||
|
"no_new_codex_run": true
|
||||||
|
},
|
||||||
|
"created": 1792593136.0740118
|
||||||
|
},
|
||||||
|
"old_codex_run_terminal_record": {
|
||||||
|
"id": "92b50d1b750e42a5bde6c325dfa1dfc1",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 52772,
|
||||||
|
"started": 1792544334.2423732,
|
||||||
|
"finished": 1792545039.5378282,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/92b50d1b750e42a5bde6c325dfa1dfc1",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 2989342, \"cached_input_tokens\": 2890752, \"cache_write_input_tokens\": 0, \"output_tokens\": 16685, \"reasoning_output_tokens\": 1313}"
|
||||||
|
},
|
||||||
|
"stage": "S5 reader profiling/optimization",
|
||||||
|
"actual_model": "claude-opus-5-5 (Desktop ultra-high)",
|
||||||
|
"checkpoint": {
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
||||||
|
"bytes": 14049,
|
||||||
|
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
||||||
|
},
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"remaining_conditions": [
|
||||||
|
"S5 reader optimization preserving every typed state/event/check: completed R3 diagnostic took 1270.3s; whole registered verify cap remains 300s; new exact-source local tests required after changes",
|
||||||
|
"Normal owner submission of actual Opus retained implementation; exact final-S native7 with full raw/owned/guard/PID/source/player/cleanup bundle, both registered validations",
|
||||||
|
"Fresh independent Opus all6 review, normal prepare-integration, exact candidate qualification, honest delegated owner approval, integration/final; EQ support adds zero original units",
|
||||||
|
"Original P28-02 T1 product optimization, same-condition three-run comparisons, RESTART, exact final full192 roster, whole-unit original work/acceptance plus cross-cutting6 review/final"
|
||||||
|
],
|
||||||
|
"W": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-eq/P28-02-EQ-implement",
|
||||||
|
"S": "6f75c9a0513aafe5bd6ae7ed46b0ffda6386ac50",
|
||||||
|
"base": "2549cf7d6992560b850bbd11934e3c14b39a1988",
|
||||||
|
"real_runs": [
|
||||||
|
{
|
||||||
|
"id": "eed3a23a87144985a953513517ba6cce",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 91723,
|
||||||
|
"started": 1792534900.465473,
|
||||||
|
"finished": 1792534987.111678,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/eed3a23a87144985a953513517ba6cce",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 738104, \"cached_input_tokens\": 652544, \"cache_write_input_tokens\": 0, \"output_tokens\": 3082, \"reasoning_output_tokens\": 925}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8d5e4a14dd1640a3bebeafa2b49e34ab",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 95908,
|
||||||
|
"started": 1792535447.577267,
|
||||||
|
"finished": 1792535577.093471,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/8d5e4a14dd1640a3bebeafa2b49e34ab",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 1026735, \"cached_input_tokens\": 934016, \"cache_write_input_tokens\": 0, \"output_tokens\": 3952, \"reasoning_output_tokens\": 1249}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "84ca0ff895c64ac89ffcef945f8848fe",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 1299,
|
||||||
|
"started": 1792536166.565137,
|
||||||
|
"finished": 1792536437.4674659,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/84ca0ff895c64ac89ffcef945f8848fe",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 1703268, \"cached_input_tokens\": 1600512, \"cache_write_input_tokens\": 0, \"output_tokens\": 9488, \"reasoning_output_tokens\": 3494}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3325e7da9d064d2792fd178f400bc492",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 6380,
|
||||||
|
"started": 1792536976.04443,
|
||||||
|
"finished": 1792537645.841019,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/3325e7da9d064d2792fd178f400bc492",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 1574178, \"cached_input_tokens\": 1491712, \"cache_write_input_tokens\": 0, \"output_tokens\": 28968, \"reasoning_output_tokens\": 3552}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "558b96b3fe5e462296e85bc591622d1c",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 12205,
|
||||||
|
"started": 1792537978.637717,
|
||||||
|
"finished": 1792538824.796691,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/558b96b3fe5e462296e85bc591622d1c",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 2214984, \"cached_input_tokens\": 2007168, \"cache_write_input_tokens\": 0, \"output_tokens\": 41770, \"reasoning_output_tokens\": 4112}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "32288e966a844f5baec4dc931bc281a5",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 24130,
|
||||||
|
"started": 1792539888.089719,
|
||||||
|
"finished": 1792540614.1304991,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/32288e966a844f5baec4dc931bc281a5",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 2680455, \"cached_input_tokens\": 2561536, \"cache_write_input_tokens\": 0, \"output_tokens\": 30748, \"reasoning_output_tokens\": 4302}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7da027a85548460bb008b562a79a52ae",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 32210,
|
||||||
|
"started": 1792541236.488162,
|
||||||
|
"finished": 1792541342.4558878,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/7da027a85548460bb008b562a79a52ae",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 820999, \"cached_input_tokens\": 732032, \"cache_write_input_tokens\": 0, \"output_tokens\": 3367, \"reasoning_output_tokens\": 315}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "c056b928052a493db734593026d471b4",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 34943,
|
||||||
|
"started": 1792541665.953645,
|
||||||
|
"finished": 1792542376.8565261,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/c056b928052a493db734593026d471b4",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 3735588, \"cached_input_tokens\": 3596032, \"cache_write_input_tokens\": 0, \"output_tokens\": 36619, \"reasoning_output_tokens\": 6008}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "20dc4135cc3041dbb82fcc2b2a6b0cbe",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "failed",
|
||||||
|
"pid": 43572,
|
||||||
|
"started": 1792543013.4890702,
|
||||||
|
"finished": 1792543913.491642,
|
||||||
|
"exit_code": 124,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/20dc4135cc3041dbb82fcc2b2a6b0cbe",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "92b50d1b750e42a5bde6c325dfa1dfc1",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 52772,
|
||||||
|
"started": 1792544334.2423732,
|
||||||
|
"finished": 1792545039.5378282,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/92b50d1b750e42a5bde6c325dfa1dfc1",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 2989342, \"cached_input_tokens\": 2890752, \"cache_write_input_tokens\": 0, \"output_tokens\": 16685, \"reasoning_output_tokens\": 1313}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"coordinator_state": "原P28-02未完、補助EQも未受入。旧S6f75c9aは146局所試験後に通常提出済みだが正確S nativeのmkdir失敗を保全。実Runner repair_ready10、旧Codex run92b50は終了済み。ユーザー委任をevent84へ記録し、Desktop Opus5.5超高が同WのS5を指揮・実装中。R/O双方E1〜E5・39行を維持、信号のコマンド/通常公開をsource因果で完全照合。旧156局所試験211.416秒の後にも修正があり、新版合格に流用しない。scratch R3はGodot942秒/exit0、Pythonのcheck_report/自己比較True・実exit0だが全体1270.3秒、lifecycle300.6秒で正式verify300秒未達。NA/既存不具合をPASS補完せず全raw保持。Opusが保持R3 rawでcProfileと結果同値のreader高速化を進行、Rootは重複実装/engine/試験を起動しない。最終Sのnative7・両正式validation・fresh独立Opus全6・通常Q資格/委任承認/統合final、続くOPT T1/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入は未達。原30/88・正式23/88、4/30・部分点なし、補助EQの原加算0。最大場面性能、完成資産、同一Windows実機、長期通し、全ゲームの未達を維持。"
|
||||||
|
},
|
||||||
|
"current_workflow_handoff": {
|
||||||
|
"controller_title": "ゲーム開発作業",
|
||||||
|
"controller_local_session": "local_a7f85421-3eed-4482-8030-c0dca669573a",
|
||||||
|
"actual_model": "Opus5.5 ultra-high",
|
||||||
|
"project": "the-tree-p28-02-eq",
|
||||||
|
"task": "P28-02-EQ",
|
||||||
|
"state": "repair_ready",
|
||||||
|
"stage": "S5 reader profiling/optimization",
|
||||||
|
"submitted": "6f75c9a0513aafe5bd6ae7ed46b0ffda6386ac50",
|
||||||
|
"repairs": 10,
|
||||||
|
"old_codex_run_terminal_record": {
|
||||||
|
"id": "92b50d1b750e42a5bde6c325dfa1dfc1",
|
||||||
|
"task_id": "P28-02-EQ",
|
||||||
|
"role": "implementer",
|
||||||
|
"service": "codex",
|
||||||
|
"status": "finished",
|
||||||
|
"pid": 52772,
|
||||||
|
"started": 1792544334.2423732,
|
||||||
|
"finished": 1792545039.5378282,
|
||||||
|
"exit_code": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-eq/runs/92b50d1b750e42a5bde6c325dfa1dfc1",
|
||||||
|
"api_cost_usd": null,
|
||||||
|
"estimated_cost_usd": null,
|
||||||
|
"subscription_usage": null,
|
||||||
|
"usage_json": "{\"input_tokens\": 2989342, \"cached_input_tokens\": 2890752, \"cache_write_input_tokens\": 0, \"output_tokens\": 16685, \"reasoning_output_tokens\": 1313}"
|
||||||
|
},
|
||||||
|
"actual_implementer": {
|
||||||
|
"at": 1792593136.070688,
|
||||||
|
"implementer_service": "claude",
|
||||||
|
"implementer_model": "claude-opus-5-5",
|
||||||
|
"implementer_session": "local_a7f85421-3eed-4482-8030-c0dca669573a (Claude Desktop, Code tab)",
|
||||||
|
"policy_allowed_services_includes_claude": true,
|
||||||
|
"user_statement": "Codexの使用量上限いきそうなので、作業をひきとって",
|
||||||
|
"user_statement_relayed_addendum": "ユーザーはこのチャットでも『実装担当含めOpusに委任』と明示済み。指揮と実装をOpus5.5で続け、Codex/Astraの新runは開始しない",
|
||||||
|
"contract_worker_field_unchanged": "codex",
|
||||||
|
"note": "Contract is immutable and keeps worker codex as registered; the actual implementer for repair 10 onward is Claude Opus 5.5 in the Desktop session, submitted through the normal Runner.submit gate. The independent review stays a separate fresh Opus session.",
|
||||||
|
"no_new_codex_run": true
|
||||||
|
},
|
||||||
|
"checkpoint": {
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
||||||
|
"bytes": 14049,
|
||||||
|
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
||||||
|
},
|
||||||
|
"original_credit": 0,
|
||||||
|
"original_completed": 23,
|
||||||
|
"original_total": 88,
|
||||||
|
"next": "Follow actual Desktop Opus/current profiling handle. Preserve completed r3 raw and improve Python within unchanged 300s while preserving all6 checks. Then normal submit, exact-S native7, both validations, fresh independent Opus review, Q qualification/integration/final; original OPT whole-unit remains.",
|
||||||
|
"controller_session_description": "local_a7f85421-3eed-4482-8030-c0dca669573a (Claude Desktop, Code tab)"
|
||||||
|
},
|
||||||
|
"current_p28_02_summary": "原P28-02未完、補助EQも未受入。旧S6f75c9aは146局所試験後に通常提出済みだが正確S nativeのmkdir失敗を保全。実Runner repair_ready10、旧Codex run92b50は終了済み。ユーザー委任をevent84へ記録し、Desktop Opus5.5超高が同WのS5を指揮・実装中。R/O双方E1〜E5・39行を維持、信号のコマンド/通常公開をsource因果で完全照合。旧156局所試験211.416秒の後にも修正があり、新版合格に流用しない。scratch R3はGodot942秒/exit0、Pythonのcheck_report/自己比較True・実exit0だが全体1270.3秒、lifecycle300.6秒で正式verify300秒未達。NA/既存不具合をPASS補完せず全raw保持。Opusが保持R3 rawでcProfileと結果同値のreader高速化を進行、Rootは重複実装/engine/試験を起動しない。最終Sのnative7・両正式validation・fresh独立Opus全6・通常Q資格/委任承認/統合final、続くOPT T1/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入は未達。原30/88・正式23/88、4/30・部分点なし、補助EQの原加算0。最大場面性能、完成資産、同一Windows実機、長期通し、全ゲームの未達を維持。",
|
||||||
|
"current_p28_02_EQ_checkpoint": {
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
||||||
|
"bytes": 14049,
|
||||||
|
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
||||||
|
},
|
||||||
|
"next_closure_note": "原P28-02は意味を保つ軽量化の全条件で閉じる。現在Opus委任の補助EQ reader高速化。EQが通常finalを通っても原加算0。続くT1実最適化/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入後だけ23→24。",
|
||||||
|
"next_priority_original_principal_profit": "P14-03 and P28-01 formally completed. Current original target P28-02; auxiliary EQ reader timing repair owned by actual Desktop Opus.",
|
||||||
|
"source_head": "ac1a115e3f87b1e31cc74852fa5a0f5ba21129cc",
|
||||||
|
"source_authority_note": "Docs-only current Opus handoff and reader timing observation. Original contracts/states unchanged. No EQ or original acceptance credit.",
|
||||||
|
"integrated_at_jst": "2026-10-22T01:45:37.125591+09:00"
|
||||||
|
},
|
||||||
|
"current_EQ_formal_completion": {
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_FORMAL_COMPLETION_4E34E52.json",
|
||||||
|
"bytes": 23096,
|
||||||
|
"sha256": "833f29fd97f54a2150a3e674ba45353f938207f57b59687cfa97f1c65caeea7a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18073,7 +18073,7 @@
|
|||||||
},
|
},
|
||||||
"legacy_state": "planned",
|
"legacy_state": "planned",
|
||||||
"state_scope": "package-level; completed means whole package accepted; partial implementation is not completion",
|
"state_scope": "package-level; completed means whole package accepted; partial implementation is not completion",
|
||||||
"current_summary": "原P28-02未完、補助EQも未受入。旧S6f75c9aは146局所試験後に通常提出済みだが正確S nativeのmkdir失敗を保全。実Runner repair_ready10、旧Codex run92b50は終了済み。ユーザー委任をevent84へ記録し、Desktop Opus5.5超高が同WのS5を指揮・実装中。R/O双方E1〜E5・39行を維持、信号のコマンド/通常公開をsource因果で完全照合。旧156局所試験211.416秒の後にも修正があり、新版合格に流用しない。scratch R3はGodot942秒/exit0、Pythonのcheck_report/自己比較True・実exit0だが全体1270.3秒、lifecycle300.6秒で正式verify300秒未達。NA/既存不具合をPASS補完せず全raw保持。Opusが保持R3 rawでcProfileと結果同値のreader高速化を進行、Rootは重複実装/engine/試験を起動しない。最終Sのnative7・両正式validation・fresh独立Opus全6・通常Q資格/委任承認/統合final、続くOPT T1/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入は未達。原30/88・正式23/88、4/30・部分点なし、補助EQの原加算0。最大場面性能、完成資産、同一Windows実機、長期通し、全ゲームの未達を維持。",
|
"current_summary": "P28-02-EQ補助はS 9adbbee→Q 4e34e52で正式完了(Runner completed・補助6/6)。正確S native7(PID7・profile14・cleanup0・source1407・seal v2)、正式unit179/native-verify、fresh独立Opus全6 PASS(high/medium0・low2)、通常integration/final、実DB/traceability照合。前S a46418dのEQ5 changes_requested、b2dbda8のvalidation失敗、6f75c9aのnative失敗は保全。実装はユーザー委任のDesktop Opus5.5(contract workerはcodexのまま)。原成果加算0。次はOPT_CONTRACT_T1 §6の順で、EQ前の値(S_eq nativeをQ_eqで資格確認済み)と(b)前版2回、OPT登録・実装(許可6ファイル、範囲内の既存Eの不具合の修正を含む)、S上のEQ after・(a)(b)(c)(d)、OPT validation、whole-unit独立レビュー、統合final、台帳23→24。原P28-02は未完。正式23/88・4/30、部分点なし。性能予算false6・200客OpsON/同一Windows/長期/全ゲームは別未達。",
|
||||||
"remaining_deliverables": [
|
"remaining_deliverables": [
|
||||||
{
|
{
|
||||||
"id": "P28-01",
|
"id": "P28-01",
|
||||||
@@ -18314,20 +18314,27 @@
|
|||||||
"sha256": "021b76676bc68a9e008cfd27c7f1438f2d483f0f44e85e75cb83e2d49f700d71",
|
"sha256": "021b76676bc68a9e008cfd27c7f1438f2d483f0f44e85e75cb83e2d49f700d71",
|
||||||
"scope": "Actual EQ registration and repair1 implementing checkpoint only; no auxiliary or original acceptance credit",
|
"scope": "Actual EQ registration and repair1 implementing checkpoint only; no auxiliary or original acceptance credit",
|
||||||
"linked_at_jst": "2026-10-21T07:31:50.231974+09:00"
|
"linked_at_jst": "2026-10-21T07:31:50.231974+09:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_FORMAL_COMPLETION_4E34E52.json",
|
||||||
|
"bytes": 23096,
|
||||||
|
"sha256": "833f29fd97f54a2150a3e674ba45353f938207f57b59687cfa97f1c65caeea7a",
|
||||||
|
"scope": "EQ support six conditions formally completed; original P28-02 remains incomplete; original credit zero",
|
||||||
|
"linked_at_jst": "2026-10-22T10:14:42.989122+09:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"progress_summary": "原P28-02未完、補助EQも未受入。旧S6f75c9aは146局所試験後に通常提出済みだが正確S nativeのmkdir失敗を保全。実Runner repair_ready10、旧Codex run92b50は終了済み。ユーザー委任をevent84へ記録し、Desktop Opus5.5超高が同WのS5を指揮・実装中。R/O双方E1〜E5・39行を維持、信号のコマンド/通常公開をsource因果で完全照合。旧156局所試験211.416秒の後にも修正があり、新版合格に流用しない。scratch R3はGodot942秒/exit0、Pythonのcheck_report/自己比較True・実exit0だが全体1270.3秒、lifecycle300.6秒で正式verify300秒未達。NA/既存不具合をPASS補完せず全raw保持。Opusが保持R3 rawでcProfileと結果同値のreader高速化を進行、Rootは重複実装/engine/試験を起動しない。最終Sのnative7・両正式validation・fresh独立Opus全6・通常Q資格/委任承認/統合final、続くOPT T1/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入は未達。原30/88・正式23/88、4/30・部分点なし、補助EQの原加算0。最大場面性能、完成資産、同一Windows実機、長期通し、全ゲームの未達を維持。",
|
"progress_summary": "P28-02-EQ補助はS 9adbbee→Q 4e34e52で正式完了(Runner completed・補助6/6)。正確S native7(PID7・profile14・cleanup0・source1407・seal v2)、正式unit179/native-verify、fresh独立Opus全6 PASS(high/medium0・low2)、通常integration/final、実DB/traceability照合。前S a46418dのEQ5 changes_requested、b2dbda8のvalidation失敗、6f75c9aのnative失敗は保全。実装はユーザー委任のDesktop Opus5.5(contract workerはcodexのまま)。原成果加算0。次はOPT_CONTRACT_T1 §6の順で、EQ前の値(S_eq nativeをQ_eqで資格確認済み)と(b)前版2回、OPT登録・実装(許可6ファイル、範囲内の既存Eの不具合の修正を含む)、S上のEQ after・(a)(b)(c)(d)、OPT validation、whole-unit独立レビュー、統合final、台帳23→24。原P28-02は未完。正式23/88・4/30、部分点なし。性能予算false6・200客OpsON/同一Windows/長期/全ゲームは別未達。",
|
||||||
"updated_at_jst": "2026-10-22T01:45:37.125591+09:00",
|
"updated_at_jst": "2026-10-22T10:14:42.989122+09:00",
|
||||||
"historical_summary_before_integrated_full9_20261021": "既採用e561 Pathを保持。source1273最大規模・Operations OFFの30分/保存再開を診断し25918+293parse/0。no-route候補の全15byte対照は一致したがmacro因果改善不足で不採用。Operations ON/新1277性能/Windows描画/長期プレイは未受入。",
|
"historical_summary_before_integrated_full9_20261021": "既採用e561 Pathを保持。source1273最大規模・Operations OFFの30分/保存再開を診断し25918+293parse/0。no-route候補の全15byte対照は一致したがmacro因果改善不足で不採用。Operations ON/新1277性能/Windows描画/長期プレイは未受入。",
|
||||||
"historical_before_P28_01_formal_completion": {
|
"historical_before_P28_01_formal_completion": {
|
||||||
"progress_summary": "旧1273時点の限定軽量化・不採用記録を保持。現在の製品source1407(83b170aと同一)の実main db9d613全9測定で、代表R x1平均479.210ms/P95745.365ms/最大4809.099ms、x3P955062.697ms/最大5891.466msの予算未達を確定。O小入力の合格を最大負荷へ拡張しない。原P28-01の別PID再開・wholeunit受入を先に閉じ、同等性と失敗拒否を固定してから実測上位の改善へ進む。本単位の新規最適化/受入は未実施。",
|
"progress_summary": "旧1273時点の限定軽量化・不採用記録を保持。現在の製品source1407(83b170aと同一)の実main db9d613全9測定で、代表R x1平均479.210ms/P95745.365ms/最大4809.099ms、x3P955062.697ms/最大5891.466msの予算未達を確定。O小入力の合格を最大負荷へ拡張しない。原P28-01の別PID再開・wholeunit受入を先に閉じ、同等性と失敗拒否を固定してから実測上位の改善へ進む。本単位の新規最適化/受入は未実施。",
|
||||||
"updated_at_jst": "2026-10-21T01:04:05.061475+09:00"
|
"updated_at_jst": "2026-10-21T01:04:05.061475+09:00"
|
||||||
},
|
},
|
||||||
"remaining_gaps": [
|
"remaining_gaps": [
|
||||||
"S5 reader optimization preserving every typed state/event/check: completed R3 diagnostic took 1270.3s; whole registered verify cap remains 300s; new exact-source local tests required after changes",
|
"Before record: S_eq native 9adbbee (version before) qualified on Q_eq 4e34e52; Root runs (b) frame-before r02/r03 (OPT_CONTRACT_T1 §4)",
|
||||||
"Normal owner submission of actual Opus retained implementation; exact final-S native7 with full raw/owned/guard/PID/source/player/cleanup bundle, both registered validations",
|
"Fix the OPT acceptance rule for cross-version differences (review low 1): only before-version existing-defect scenarios and their cause fields",
|
||||||
"Fresh independent Opus all6 review, normal prepare-integration, exact candidate qualification, honest delegated owner approval, integration/final; EQ support adds zero original units",
|
"P28-02-OPT registration and implementation (existing allowed 6 product files; in-scope existing E failures fixed), then on its S: EQ after (run_eq --opt-changed), (a) DIAG phase after, (b) frame after x3, (c) RESTART, (d) full192 roster",
|
||||||
"Original P28-02 T1 product optimization, same-condition three-run comparisons, RESTART, exact final full192 roster, whole-unit original work/acceptance plus cross-cutting6 review/final"
|
"OPT validation (unit and every bundle verify incl. verify_eq --compare-versions), fresh independent Opus whole-unit review (original work/acceptance, cross-cutting 6, U1/U2), integration, Q reuse qualification §5, final, ledger 23->24"
|
||||||
],
|
],
|
||||||
"baseline_original_unit_completion": {
|
"baseline_original_unit_completion": {
|
||||||
"path": "docs/plans/original-completion-2026-10-02/execution/p28-01/P28_01_FORMAL_COMPLETION_AE9AE47.json",
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-01/P28_01_FORMAL_COMPLETION_AE9AE47.json",
|
||||||
@@ -18359,9 +18366,9 @@
|
|||||||
"sha256": "9cbe071dcae33e5577fabc00bff915ab112d6acd7ae55a6bef693a6062176255"
|
"sha256": "9cbe071dcae33e5577fabc00bff915ab112d6acd7ae55a6bef693a6062176255"
|
||||||
},
|
},
|
||||||
"current_EQ_execution": {
|
"current_EQ_execution": {
|
||||||
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_FORMAL_COMPLETION_4E34E52.json",
|
||||||
"bytes": 14049,
|
"bytes": 23096,
|
||||||
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
"sha256": "833f29fd97f54a2150a3e674ba45353f938207f57b59687cfa97f1c65caeea7a"
|
||||||
},
|
},
|
||||||
"historical_before_EQ_S3a": {
|
"historical_before_EQ_S3a": {
|
||||||
"progress_summary": "P28-01と補助DIAG(S d6ce6dd→Q fdb309f、全4正式ゲート)は完了。原P28-02は未完。EQはbase2549cf7/同W/Astraで段階実装し、S1比較器と型付き全状態・全event・可逆復元・差分再構成/source閉包の局所43試験を実exit/SHAと照合、未commit成果を保全した。初回局所失敗と旧3runの返答/撤去履歴は成功に変えず保持。S2–S4、正確S native7、両正式validation、別Opus全6review、通常候補資格/統合finalは未達。続いてT1 snapshot変換・コピー最適化、同条件反復比較・RESTART・正確最終全roster・whole-unit横断6レビュー/通常finalが必要。原加算0、正式23/88・4/30、部分点なし。予算false6・200客OpsON/同一Windows/長期/全ゲームは別未達。 S2は実Opus326判断を通常記録し、同じW/Astraのrun558b96b3/PID12205/exec85980で起動(このcheckpoint時点で実生存確認)。全19保持S1ファイルを通常repair4の前後でSHA照合済み。",
|
"progress_summary": "P28-01と補助DIAG(S d6ce6dd→Q fdb309f、全4正式ゲート)は完了。原P28-02は未完。EQはbase2549cf7/同W/Astraで段階実装し、S1比較器と型付き全状態・全event・可逆復元・差分再構成/source閉包の局所43試験を実exit/SHAと照合、未commit成果を保全した。初回局所失敗と旧3runの返答/撤去履歴は成功に変えず保持。S2–S4、正確S native7、両正式validation、別Opus全6review、通常候補資格/統合finalは未達。続いてT1 snapshot変換・コピー最適化、同条件反復比較・RESTART・正確最終全roster・whole-unit横断6レビュー/通常finalが必要。原加算0、正式23/88・4/30、部分点なし。予算false6・200客OpsON/同一Windows/長期/全ゲームは別未達。 S2は実Opus326判断を通常記録し、同じW/Astraのrun558b96b3/PID12205/exec85980で起動(このcheckpoint時点で実生存確認)。全19保持S1ファイルを通常repair4の前後でSHA照合済み。",
|
||||||
@@ -18448,6 +18455,76 @@
|
|||||||
"sha256": "de4adb29bb8a2ec6f2426bdb4c23d5094bdfea764eb045ef33af4948625a45d8"
|
"sha256": "de4adb29bb8a2ec6f2426bdb4c23d5094bdfea764eb045ef33af4948625a45d8"
|
||||||
},
|
},
|
||||||
"updated_at_jst": "2026-10-21T10:01:18.016348+09:00"
|
"updated_at_jst": "2026-10-21T10:01:18.016348+09:00"
|
||||||
|
},
|
||||||
|
"historical_before_EQ_formal_completion_20261022": {
|
||||||
|
"progress_summary": "原P28-02未完、補助EQも未受入。旧S6f75c9aは146局所試験後に通常提出済みだが正確S nativeのmkdir失敗を保全。実Runner repair_ready10、旧Codex run92b50は終了済み。ユーザー委任をevent84へ記録し、Desktop Opus5.5超高が同WのS5を指揮・実装中。R/O双方E1〜E5・39行を維持、信号のコマンド/通常公開をsource因果で完全照合。旧156局所試験211.416秒の後にも修正があり、新版合格に流用しない。scratch R3はGodot942秒/exit0、Pythonのcheck_report/自己比較True・実exit0だが全体1270.3秒、lifecycle300.6秒で正式verify300秒未達。NA/既存不具合をPASS補完せず全raw保持。Opusが保持R3 rawでcProfileと結果同値のreader高速化を進行、Rootは重複実装/engine/試験を起動しない。最終Sのnative7・両正式validation・fresh独立Opus全6・通常Q資格/委任承認/統合final、続くOPT T1/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入は未達。原30/88・正式23/88、4/30・部分点なし、補助EQの原加算0。最大場面性能、完成資産、同一Windows実機、長期通し、全ゲームの未達を維持。",
|
||||||
|
"remaining_gaps": [
|
||||||
|
"S5 reader optimization preserving every typed state/event/check: completed R3 diagnostic took 1270.3s; whole registered verify cap remains 300s; new exact-source local tests required after changes",
|
||||||
|
"Normal owner submission of actual Opus retained implementation; exact final-S native7 with full raw/owned/guard/PID/source/player/cleanup bundle, both registered validations",
|
||||||
|
"Fresh independent Opus all6 review, normal prepare-integration, exact candidate qualification, honest delegated owner approval, integration/final; EQ support adds zero original units",
|
||||||
|
"Original P28-02 T1 product optimization, same-condition three-run comparisons, RESTART, exact final full192 roster, whole-unit original work/acceptance plus cross-cutting6 review/final"
|
||||||
|
],
|
||||||
|
"current_EQ_execution": {
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
||||||
|
"bytes": 14049,
|
||||||
|
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
||||||
|
},
|
||||||
|
"updated_at_jst": "2026-10-22T01:45:37.125591+09:00",
|
||||||
|
"evidence": [
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/canonical-full170-actual-root-review-r01/review.json",
|
||||||
|
"sha256_at_integration": "302a782d7d5597aa7f1ffefe8b24b2b8ca2c762f29323dc769e85ea13fd57605",
|
||||||
|
"scope": "Actual168 suites/13567 checks/170 native; Root1989 evidence controls/0; no whole original/nativeWindows/P28 acceptance",
|
||||||
|
"linked_at_jst": "2026-10-02T20:20:56.571408+09:00",
|
||||||
|
"current_game_acceptance_inferred": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/audio-path-canonical72-adoption-root-r01/adoption.json",
|
||||||
|
"sha256_at_integration": "87dc7a1461d92f15fd0b51fc3015a0add39f8c373855de83460ca433cb4ec43c",
|
||||||
|
"scope": "Actual limited72: public71 plus outsidecollector1; production1273; private startup2 adopted0",
|
||||||
|
"linked_at_jst": "2026-10-02T20:20:56.571408+09:00",
|
||||||
|
"current_game_acceptance_inferred": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/audio-path-canonical72-post-adoption-root-review-r02/review.json",
|
||||||
|
"sha256_at_integration": "261cb8d8f4ff3838af23f2cb852eadba411a55852436a3b0e8a8bba55c75046a",
|
||||||
|
"scope": "Post117/0: all1273 path/SHA map exact; rawJSON serializationSHA differs, semantic map equality proved",
|
||||||
|
"linked_at_jst": "2026-10-02T20:20:56.571408+09:00",
|
||||||
|
"current_game_acceptance_inferred": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/path-snapshot-sort-cache-r03-actual-root-review-r01/review.json",
|
||||||
|
"sha256_at_integration": "f7dbbf58322d05ce57e711b8252682a47068603edf3e27215a09a59bf5f3efe7",
|
||||||
|
"scope": "Micro only: 53 wholetyped pairs/120 literal same-call return bytes; macro scale P28 not accepted",
|
||||||
|
"linked_at_jst": "2026-10-02T20:20:56.571408+09:00",
|
||||||
|
"current_game_acceptance_inferred": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/current1273-no-route-macro-actual-root-review-r01/review.json",
|
||||||
|
"sha256": "b692df04059a68349b935175a2ec1374b4d25e5d406dfbf4facb8649a3b3a488"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-01/INTEGRATED_FULL9_MEASUREMENT_DB9D613.json",
|
||||||
|
"sha256_at_integration": "a76082f767e0a0d52cb70e2f66fa371b62a88754e9be319da3c08d4b48e78ba0",
|
||||||
|
"scope": "実main db9d613の正規全9phase測定。native全9終了/Root160結合PASS。R x1/x3予算false、Oは50cells/客0..2のみ。別PID/原wholeunit/Windows未受入、原加算0。",
|
||||||
|
"linked_at_jst": "2026-10-21T01:04:05.061475+09:00",
|
||||||
|
"current_game_acceptance_inferred": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/DIAG_FORMAL_COMPLETION_FDB309F.json",
|
||||||
|
"bytes": 18478,
|
||||||
|
"sha256": "7d83ec0e19e0c12ecefebc5ab0bdffb20743ed34c6144251a08b83b315b09ecf",
|
||||||
|
"scope": "DIAG support four conditions formally completed; original P28-02 remains incomplete; original credit zero",
|
||||||
|
"linked_at_jst": "2026-10-21T07:10:02.150187+09:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_TIMING_REPAIR1_STARTED_2549CF7.json",
|
||||||
|
"bytes": 4047,
|
||||||
|
"sha256": "021b76676bc68a9e008cfd27c7f1438f2d483f0f44e85e75cb83e2d49f700d71",
|
||||||
|
"scope": "Actual EQ registration and repair1 implementing checkpoint only; no auxiliary or original acceptance credit",
|
||||||
|
"linked_at_jst": "2026-10-21T07:31:50.231974+09:00"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -18731,22 +18808,23 @@
|
|||||||
],
|
],
|
||||||
"cross_cutting_acceptance_scope": "Completion requirements only, not achieved results. Apply each to relevant slices; non-applicable views require a recorded reason.",
|
"cross_cutting_acceptance_scope": "Completion requirements only, not achieved results. Apply each to relevant slices; non-applicable views require a recorded reason.",
|
||||||
"initial_revision_state": "in_progress",
|
"initial_revision_state": "in_progress",
|
||||||
"updated_at_jst": "2026-10-22T01:45:37.125591+09:00",
|
"updated_at_jst": "2026-10-22T10:14:42.989122+09:00",
|
||||||
"execution_progress": {
|
"execution_progress": {
|
||||||
"original_unit": "P28-02",
|
"original_unit": "P28-02",
|
||||||
"active_backend": "P28-02-EQ",
|
"completed_support": "P28-02-EQ",
|
||||||
"controller": "Claude Desktop Opus5.5 ultra-high",
|
"next_backend": "P28-02-OPT (to be registered)",
|
||||||
|
"controller": "Claude Desktop Opus5.5",
|
||||||
"checkpoint": {
|
"checkpoint": {
|
||||||
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_FORMAL_COMPLETION_4E34E52.json",
|
||||||
"bytes": 14049,
|
"bytes": 23096,
|
||||||
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
"sha256": "833f29fd97f54a2150a3e674ba45353f938207f57b59687cfa97f1c65caeea7a"
|
||||||
},
|
},
|
||||||
"new_original_credit": 0,
|
"new_original_credit": 0,
|
||||||
"remaining_conditions": [
|
"remaining_conditions": [
|
||||||
"S5 reader optimization preserving every typed state/event/check: completed R3 diagnostic took 1270.3s; whole registered verify cap remains 300s; new exact-source local tests required after changes",
|
"Before record: S_eq native 9adbbee (version before) qualified on Q_eq 4e34e52; Root runs (b) frame-before r02/r03 (OPT_CONTRACT_T1 §4)",
|
||||||
"Normal owner submission of actual Opus retained implementation; exact final-S native7 with full raw/owned/guard/PID/source/player/cleanup bundle, both registered validations",
|
"Fix the OPT acceptance rule for cross-version differences (review low 1): only before-version existing-defect scenarios and their cause fields",
|
||||||
"Fresh independent Opus all6 review, normal prepare-integration, exact candidate qualification, honest delegated owner approval, integration/final; EQ support adds zero original units",
|
"P28-02-OPT registration and implementation (existing allowed 6 product files; in-scope existing E failures fixed), then on its S: EQ after (run_eq --opt-changed), (a) DIAG phase after, (b) frame after x3, (c) RESTART, (d) full192 roster",
|
||||||
"Original P28-02 T1 product optimization, same-condition three-run comparisons, RESTART, exact final full192 roster, whole-unit original work/acceptance plus cross-cutting6 review/final"
|
"OPT validation (unit and every bundle verify incl. verify_eq --compare-versions), fresh independent Opus whole-unit review (original work/acceptance, cross-cutting 6, U1/U2), integration, Q reuse qualification §5, final, ledger 23->24"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"current_connector_endpoint_checkpoint": {
|
"current_connector_endpoint_checkpoint": {
|
||||||
@@ -19004,6 +19082,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"updated_at_jst": "2026-10-21T06:35:33.265223+09:00"
|
"updated_at_jst": "2026-10-21T06:35:33.265223+09:00"
|
||||||
|
},
|
||||||
|
"historical_before_EQ_formal_completion_20261022": {
|
||||||
|
"current_summary": "原P28-02未完、補助EQも未受入。旧S6f75c9aは146局所試験後に通常提出済みだが正確S nativeのmkdir失敗を保全。実Runner repair_ready10、旧Codex run92b50は終了済み。ユーザー委任をevent84へ記録し、Desktop Opus5.5超高が同WのS5を指揮・実装中。R/O双方E1〜E5・39行を維持、信号のコマンド/通常公開をsource因果で完全照合。旧156局所試験211.416秒の後にも修正があり、新版合格に流用しない。scratch R3はGodot942秒/exit0、Pythonのcheck_report/自己比較True・実exit0だが全体1270.3秒、lifecycle300.6秒で正式verify300秒未達。NA/既存不具合をPASS補完せず全raw保持。Opusが保持R3 rawでcProfileと結果同値のreader高速化を進行、Rootは重複実装/engine/試験を起動しない。最終Sのnative7・両正式validation・fresh独立Opus全6・通常Q資格/委任承認/統合final、続くOPT T1/同条件3反復/RESTART/正確最終全192/原work・ACと横断6のwhole-unit受入は未達。原30/88・正式23/88、4/30・部分点なし、補助EQの原加算0。最大場面性能、完成資産、同一Windows実機、長期通し、全ゲームの未達を維持。",
|
||||||
|
"execution_progress": {
|
||||||
|
"original_unit": "P28-02",
|
||||||
|
"active_backend": "P28-02-EQ",
|
||||||
|
"controller": "Claude Desktop Opus5.5 ultra-high",
|
||||||
|
"checkpoint": {
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/EQ_OPUS_READER_CONTINUATION_AC1A115.json",
|
||||||
|
"bytes": 14049,
|
||||||
|
"sha256": "abdef6f3e17a46c5061d43ad2953f6d6f0fedfbbb04002be1c2aa2456b5fefff"
|
||||||
|
},
|
||||||
|
"new_original_credit": 0,
|
||||||
|
"remaining_conditions": [
|
||||||
|
"S5 reader optimization preserving every typed state/event/check: completed R3 diagnostic took 1270.3s; whole registered verify cap remains 300s; new exact-source local tests required after changes",
|
||||||
|
"Normal owner submission of actual Opus retained implementation; exact final-S native7 with full raw/owned/guard/PID/source/player/cleanup bundle, both registered validations",
|
||||||
|
"Fresh independent Opus all6 review, normal prepare-integration, exact candidate qualification, honest delegated owner approval, integration/final; EQ support adds zero original units",
|
||||||
|
"Original P28-02 T1 product optimization, same-condition three-run comparisons, RESTART, exact final full192 roster, whole-unit original work/acceptance plus cross-cutting6 review/final"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"updated_at_jst": "2026-10-22T01:45:37.125591+09:00"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user