diff --git a/harness/experiments/ordinary-text-integration-20260913/README.md b/harness/experiments/ordinary-text-integration-20260913/README.md new file mode 100644 index 00000000..faa3dc55 --- /dev/null +++ b/harness/experiments/ordinary-text-integration-20260913/README.md @@ -0,0 +1,52 @@ +# Ordinary-text union: closed-run checkpoint + +Run `python verify.py` with Python 3.10 or newer in this directory. The verifier +uses only the standard library and these five files. It reads archives in memory, +does not extract or execute source/binaries, and does not consult Git, Cargo, +network services, or paths recorded from the original machine. + +`files.json` hashes the ZIP, manifest, verifier and this README. `manifest.json` +lists every ZIP member and maps each run to its exact input manifest and ZIP. +Only byte-identical input files are deduplicated; ZIPs with different timestamps +remain separate even when their source inventories match. Receipts and raw logs +are retained verbatim, including failures and original local path strings. + +The production composition is d7c065991d3f63cc41341d23a546739de8837ac3. +The checkpoint is e624d5b9c4f848eff3fba2ed83f9decf959e14d8, including generated +teaching fixtures and normative language documentation. Individual receipt HEADs +and input inventories are authoritative for each run; a HEAD alone does not +describe dirty fixture/document changes during capture. + +| Closed capture | Recorded outcome | +| --- | --- | +| core-consumers-1 | Offline dependency resolution failed: num-bigint missing | +| windows-dependencies-1 | Dependency preparation completed | +| core-1 | 536 passed, 1 failed, 1 ignored; stale generated teaching fixture failure preserved | +| teaching-generate-1 | Teaching generator completed; raw generated-release1 outputs included | +| teaching-check-2 | 4 passed after fixture regeneration | +| language-doc-1 | Warning log from failed strict render preserved | +| language-doc-2 | Strict docutils 0.23 render succeeded; empty warning log | +| consumers-1 | 63 passed | + +The verifier checks exact archive membership, hashes and lengths, nested input +archive membership/content, input counts (including 71 vendored iced_widget +files), start/result/process command relationships, unchanged-input assertions, +helper hashes, exit codes, exact test summary rows and aggregate counts, +compiler-artifact receipt relationships, composition patch hash, generated output +inventory, and successful document source/output/warning receipts. + +Limitations: integrity and internal consistency are not independent reproduction +or authenticated provenance. Test expectations in the manifest are frozen from +the raw capture. No runtime binaries, dependency cache, credentials or user +profile are packaged. Recorded artifact readback hashes cannot be independently +checked without the excluded binaries. Input archives contain project sources, +not a hermetic toolchain or complete dependency distribution. The gate helper is +receipt-pinned; the included render helper is its current successful-render +version, with no historical helper hash receipt. language-doc-1 contains only +warnings.log: its original helper, exact failed input and process/exit receipt +were not captured. The successful render inputs and outputs are hash-pinned by +its result receipt. Generated outputs are archived as observed, without a +separate generation-output hash receipt. This package does not claim a full +core rerun after regeneration, complete desktop/GUI validation, lint success, +release packaging, or publication. Active desktop-list-1 and any later runs are +excluded from this initial checkpoint. diff --git a/harness/experiments/ordinary-text-integration-20260913/evidence.zip b/harness/experiments/ordinary-text-integration-20260913/evidence.zip new file mode 100644 index 00000000..63b3495a Binary files /dev/null and b/harness/experiments/ordinary-text-integration-20260913/evidence.zip differ diff --git a/harness/experiments/ordinary-text-integration-20260913/files.json b/harness/experiments/ordinary-text-integration-20260913/files.json new file mode 100644 index 00000000..83572c45 --- /dev/null +++ b/harness/experiments/ordinary-text-integration-20260913/files.json @@ -0,0 +1,18 @@ +{ + "evidence.zip": { + "bytes": 8584848, + "sha256": "f220433f8f6fe99cea762aca98ee471c14411b5f6762745cf91432e6bfaca440" + }, + "manifest.json": { + "bytes": 25175, + "sha256": "7893d7cdea75f8d3d2bca076d17a8688a49a2ce414ee62875a53dfa3b04c9d46" + }, + "verify.py": { + "bytes": 5526, + "sha256": "65136bbf0074c63a1478a56e0a66523d785081c368a50cd698d1231f6b0618ba" + }, + "README.md": { + "bytes": 3328, + "sha256": "98c900e5c83e13da6c6edc11521df8edb87f4e1ebebb004fd1d6cc8acc91683b" + } +} diff --git a/harness/experiments/ordinary-text-integration-20260913/manifest.json b/harness/experiments/ordinary-text-integration-20260913/manifest.json new file mode 100644 index 00000000..c7bb456e --- /dev/null +++ b/harness/experiments/ordinary-text-integration-20260913/manifest.json @@ -0,0 +1,901 @@ +{ + "schema": 1, + "productionCommit": "d7c065991d3f63cc41341d23a546739de8837ac3", + "checkpointCommit": "e624d5b9c4f848eff3fba2ed83f9decf959e14d8", + "runs": { + "core-consumers-1": { + "kind": "cargo", + "inputs": "inputs/e3d2d504b18bb1f7c4c3fa1f26abff425b957f18b418d8556888151723ba67b4.json", + "archive": "inputs/12ce1ca9c1185d7a91a1dea322cdc0c7fc4372db5d879386595acdbfd412d880.zip", + "command": [ + "cargo", + "test", + "--locked", + "--offline", + "-p", + "oa-core", + "-p", + "oa-server", + "--test", + "http", + "-p", + "oa-cli", + "--test", + "source_cli", + "--no-fail-fast", + "--message-format=json", + "--", + "--nocapture" + ], + "head": "d7c065991d3f63cc41341d23a546739de8837ac3", + "exitCode": 101, + "inputCount": 707, + "testRows": [], + "testTotals": [ + 0, + 0, + 0, + 0, + 0 + ] + }, + "windows-dependencies-1": { + "kind": "cargo", + "inputs": "inputs/e3d2d504b18bb1f7c4c3fa1f26abff425b957f18b418d8556888151723ba67b4.json", + "archive": "inputs/12ce1ca9c1185d7a91a1dea322cdc0c7fc4372db5d879386595acdbfd412d880.zip", + "command": [ + "cargo", + "fetch", + "--locked", + "--target", + "x86_64-pc-windows-gnullvm" + ], + "head": "d7c065991d3f63cc41341d23a546739de8837ac3", + "exitCode": 0, + "inputCount": 707, + "testRows": [], + "testTotals": [ + 0, + 0, + 0, + 0, + 0 + ] + }, + "core-1": { + "kind": "cargo", + "inputs": "inputs/e3d2d504b18bb1f7c4c3fa1f26abff425b957f18b418d8556888151723ba67b4.json", + "archive": "inputs/12ce1ca9c1185d7a91a1dea322cdc0c7fc4372db5d879386595acdbfd412d880.zip", + "command": [ + "cargo", + "test", + "--locked", + "--offline", + "-p", + "oa-core", + "--no-fail-fast", + "--message-format=json", + "--", + "--nocapture" + ], + "head": "d7c065991d3f63cc41341d23a546739de8837ac3", + "exitCode": 101, + "inputCount": 707, + "testRows": [ + [ + 102, + 0, + 0, + 0, + 0 + ], + [ + 3, + 0, + 0, + 0, + 0 + ], + [ + 9, + 0, + 0, + 0, + 0 + ], + [ + 6, + 0, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0, + 0 + ], + [ + 9, + 0, + 0, + 0, + 0 + ], + [ + 6, + 0, + 0, + 0, + 0 + ], + [ + 11, + 0, + 0, + 0, + 0 + ], + [ + 6, + 0, + 0, + 0, + 0 + ], + [ + 16, + 0, + 0, + 0, + 0 + ], + [ + 13, + 0, + 0, + 0, + 0 + ], + [ + 8, + 0, + 0, + 0, + 0 + ], + [ + 3, + 0, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0, + 0 + ], + [ + 1, + 0, + 0, + 0, + 0 + ], + [ + 8, + 0, + 0, + 0, + 0 + ], + [ + 5, + 0, + 0, + 0, + 0 + ], + [ + 35, + 0, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0, + 0 + ], + [ + 15, + 0, + 1, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0, + 0 + ], + [ + 5, + 0, + 0, + 0, + 0 + ], + [ + 3, + 1, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0, + 0 + ], + [ + 4, + 0, + 0, + 0, + 0 + ], + [ + 4, + 0, + 0, + 0, + 0 + ], + [ + 13, + 0, + 0, + 0, + 0 + ], + [ + 13, + 0, + 0, + 0, + 0 + ], + [ + 14, + 0, + 0, + 0, + 0 + ], + [ + 11, + 0, + 0, + 0, + 0 + ], + [ + 6, + 0, + 0, + 0, + 0 + ], + [ + 15, + 0, + 0, + 0, + 0 + ], + [ + 5, + 0, + 0, + 0, + 0 + ], + [ + 18, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 0, + 0, + 0 + ], + [ + 4, + 0, + 0, + 0, + 0 + ], + [ + 8, + 0, + 0, + 0, + 0 + ], + [ + 16, + 0, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0, + 0 + ], + [ + 3, + 0, + 0, + 0, + 0 + ], + [ + 12, + 0, + 0, + 0, + 0 + ], + [ + 33, + 0, + 0, + 0, + 0 + ], + [ + 13, + 0, + 0, + 0, + 0 + ], + [ + 28, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0 + ] + ], + "testTotals": [ + 536, + 1, + 1, + 0, + 0 + ] + }, + "teaching-generate-1": { + "kind": "cargo", + "inputs": "inputs/e3d2d504b18bb1f7c4c3fa1f26abff425b957f18b418d8556888151723ba67b4.json", + "archive": "inputs/12ce1ca9c1185d7a91a1dea322cdc0c7fc4372db5d879386595acdbfd412d880.zip", + "command": [ + "cargo", + "run", + "--locked", + "--offline", + "-p", + "oa-core", + "--example", + "generate_release1", + "--message-format=json", + "--", + ".local/ordinary-text-integration/generated-release1" + ], + "head": "d7c065991d3f63cc41341d23a546739de8837ac3", + "exitCode": 0, + "inputCount": 707, + "testRows": [], + "testTotals": [ + 0, + 0, + 0, + 0, + 0 + ] + }, + "teaching-check-2": { + "kind": "cargo", + "inputs": "inputs/0fa1da63d71c984cd99b079de661e88154b5a31818b384f557deefd40b8ead3a.json", + "archive": "inputs/81bd006f10034bc0c203187af179548a549fda6e58bc7cde0702cc26994fd28d.zip", + "command": [ + "cargo", + "test", + "--locked", + "--offline", + "-p", + "oa-core", + "--test", + "release1_teaching", + "--message-format=json", + "--", + "--nocapture" + ], + "head": "d7c065991d3f63cc41341d23a546739de8837ac3", + "exitCode": 0, + "inputCount": 707, + "testRows": [ + [ + 4, + 0, + 0, + 0, + 0 + ] + ], + "testTotals": [ + 4, + 0, + 0, + 0, + 0 + ] + }, + "language-doc-1": { + "kind": "render" + }, + "language-doc-2": { + "kind": "render" + }, + "consumers-1": { + "kind": "cargo", + "inputs": "inputs/bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48.json", + "archive": "inputs/86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1.zip", + "command": [ + "cargo", + "test", + "--locked", + "--offline", + "-p", + "oa-server", + "--test", + "http", + "-p", + "oa-cli", + "--test", + "source_cli", + "--no-fail-fast", + "--message-format=json", + "--", + "--nocapture" + ], + "head": "d7c065991d3f63cc41341d23a546739de8837ac3", + "exitCode": 0, + "inputCount": 707, + "testRows": [ + [ + 12, + 0, + 0, + 0, + 0 + ], + [ + 51, + 0, + 0, + 0, + 0 + ] + ], + "testTotals": [ + 63, + 0, + 0, + 0, + 0 + ] + } + }, + "members": { + "generated-release1/expected-diagnostics.json": { + "bytes": 288, + "sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e" + }, + "generated-release1/model.json": { + "bytes": 134520, + "sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727" + }, + "generated-release1/oa/activities/activity_oa_restore_work.arcadia": { + "bytes": 1130, + "sha256": "21cbd7176af8fad68453306f2371ff03e127a994b8796cdf044567332de9686f" + }, + "generated-release1/oa/behavior/process_oa_assessment_procedure.arcadia": { + "bytes": 550, + "sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a" + }, + "generated-release1/oa/behavior/process_oa_field_procedure.arcadia": { + "bytes": 1178, + "sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96" + }, + "generated-release1/oa/behavior/process_oa_response.arcadia": { + "bytes": 2560, + "sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84" + }, + "generated-release1/oa/behavior/scenario_oa_conversation.arcadia": { + "bytes": 1515, + "sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b" + }, + "generated-release1/oa/behavior/scenario_oa_full_scenario.arcadia": { + "bytes": 1121, + "sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5" + }, + "generated-release1/oa/behavior/state_machine_oa_monitor.arcadia": { + "bytes": 1358, + "sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6" + }, + "generated-release1/oa/capabilities.arcadia": { + "bytes": 630, + "sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a" + }, + "generated-release1/oa/model.arcadia": { + "bytes": 531, + "sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada" + }, + "generated-release1/oa/participants.arcadia": { + "bytes": 1580, + "sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819" + }, + "generated-release1/oa/types.arcadia": { + "bytes": 554, + "sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d" + }, + "generated-release1/project.arcadia": { + "bytes": 1958, + "sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda" + }, + "generated-release1/sa/behavior/process_sa_assessment_procedure.arcadia": { + "bytes": 559, + "sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d" + }, + "generated-release1/sa/behavior/process_sa_field_procedure.arcadia": { + "bytes": 1187, + "sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2" + }, + "generated-release1/sa/behavior/process_sa_response.arcadia": { + "bytes": 2569, + "sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52" + }, + "generated-release1/sa/behavior/scenario_sa_conversation.arcadia": { + "bytes": 1847, + "sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2" + }, + "generated-release1/sa/behavior/scenario_sa_full_scenario.arcadia": { + "bytes": 1116, + "sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda" + }, + "generated-release1/sa/behavior/state_machine_sa_monitor.arcadia": { + "bytes": 1358, + "sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8" + }, + "generated-release1/sa/capabilities.arcadia": { + "bytes": 630, + "sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645" + }, + "generated-release1/sa/functions/function_sa_audit_thresholds.arcadia": { + "bytes": 280, + "sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686" + }, + "generated-release1/sa/functions/function_sa_restore_work.arcadia": { + "bytes": 2251, + "sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c" + }, + "generated-release1/sa/model.arcadia": { + "bytes": 531, + "sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395" + }, + "generated-release1/sa/participants.arcadia": { + "bytes": 3604, + "sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84" + }, + "generated-release1/sa/types.arcadia": { + "bytes": 903, + "sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064" + }, + "generated-release1/traceability.arcadia": { + "bytes": 28041, + "sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116" + }, + "generated-release1/transition-before.json": { + "bytes": 35801, + "sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d" + }, + "generated-release1/transition-request.json": { + "bytes": 4276, + "sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a" + }, + "generated-release1/views/diagram_oa_allocation_view.arcadia": { + "bytes": 1786, + "sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624" + }, + "generated-release1/views/diagram_sa_allocation_view.arcadia": { + "bytes": 1797, + "sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6" + }, + "generated-release1/views/diagram_sa_capability_view.arcadia": { + "bytes": 1286, + "sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2" + }, + "generated-release1/views/diagram_sa_service_view.arcadia": { + "bytes": 1960, + "sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c" + }, + "generated-release1/views/diagram_sa_state_view.arcadia": { + "bytes": 1576, + "sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230" + }, + "helpers/composition.json": { + "bytes": 1190, + "sha256": "78a98f3a034cda4d0cc1abfe33efb785e847bb6278b49c2071d70ee5f1dc23f3" + }, + "helpers/gate-union.py": { + "bytes": 3495, + "sha256": "9cca2646b1bcf09961a9ad1a276d633d8e4296ff2c6f2f356f028afaf789f503" + }, + "helpers/ordinary-contract.patch": { + "bytes": 7301, + "sha256": "931a5822dbfa5ad34a0dc961035e060ccdc7aed15712c4a9b5dc15a852675f71" + }, + "helpers/ordinary.patch": { + "bytes": 145928, + "sha256": "e319a5151b7e6713880eaaab632f3f1c01aee6df3cd534d85a1c099fb501dcb7" + }, + "helpers/render-language.py": { + "bytes": 1009, + "sha256": "82909cf11b0bdb0594b424cba51e71ec0abdead78d878f101b7ae8ff6c4281f8" + }, + "helpers/required-desktop-tests.json": { + "bytes": 125261, + "sha256": "6672e3f7ccfb92b7710310836af6933a8e58ef113353505ec4fc0c3d6908c136" + }, + "inputs/0fa1da63d71c984cd99b079de661e88154b5a31818b384f557deefd40b8ead3a.json": { + "bytes": 118403, + "sha256": "0fa1da63d71c984cd99b079de661e88154b5a31818b384f557deefd40b8ead3a" + }, + "inputs/12ce1ca9c1185d7a91a1dea322cdc0c7fc4372db5d879386595acdbfd412d880.zip": { + "bytes": 2830239, + "sha256": "12ce1ca9c1185d7a91a1dea322cdc0c7fc4372db5d879386595acdbfd412d880" + }, + "inputs/81bd006f10034bc0c203187af179548a549fda6e58bc7cde0702cc26994fd28d.zip": { + "bytes": 2828619, + "sha256": "81bd006f10034bc0c203187af179548a549fda6e58bc7cde0702cc26994fd28d" + }, + "inputs/86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1.zip": { + "bytes": 2831327, + "sha256": "86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1" + }, + "inputs/bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48.json": { + "bytes": 118403, + "sha256": "bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48" + }, + "inputs/e3d2d504b18bb1f7c4c3fa1f26abff425b957f18b418d8556888151723ba67b4.json": { + "bytes": 118404, + "sha256": "e3d2d504b18bb1f7c4c3fa1f26abff425b957f18b418d8556888151723ba67b4" + }, + "render/language.html": { + "bytes": 188141, + "sha256": "57e71090f56ae27aa50f757886d6cadf63d49f5641fe4a365547cbd9e59685b6" + }, + "render/language.rst": { + "bytes": 142931, + "sha256": "5deafe3f75a503ab5fb3d05c5ad8f126d82668f89bef02067ce5d56c3045a2bb" + }, + "runs/consumers-1/process.json": { + "bytes": 257, + "sha256": "85b18634abd4ccf90144b44b01cbcade2521ef6706b2e46abc2e1d60a4dfc346" + }, + "runs/consumers-1/result.json": { + "bytes": 6986, + "sha256": "5501663ed1f845b8d18487c90fb827faab2a1c2319cf8ea8c127324fdd9add15" + }, + "runs/consumers-1/started.json": { + "bytes": 1488, + "sha256": "908dda6bce0013b3c5db9bc5cf678a9df3b221845e9c29d29409bf440bab52d3" + }, + "runs/consumers-1/stderr.log": { + "bytes": 652, + "sha256": "6dca8394973a95c080a0b8858926efe7779512adf0fd5e64b47d1239f9446618" + }, + "runs/consumers-1/stdout.log": { + "bytes": 144498, + "sha256": "f1ff82c06e0e1b0f0c3eadb5533402bfea42983c89fa3581340768f3d953de3e" + }, + "runs/core-1/process.json": { + "bytes": 197, + "sha256": "1bf0f358d94b6e95eab5cf3823a4230a72f0363b77c75b8222c73f1122739f21" + }, + "runs/core-1/result.json": { + "bytes": 67077, + "sha256": "a9f111627d5a2a7fa33e525cbd43150b803505e3e201b8465f94d2060fce143e" + }, + "runs/core-1/started.json": { + "bytes": 1398, + "sha256": "56fb8a8824c031ed8f831561241a3bf321158f75cc0a2acdca6b0a77d9b648f6" + }, + "runs/core-1/stderr.log": { + "bytes": 12121, + "sha256": "ca7ae2dfd0b6eecec811fce5831ea0dc7fb3b6209ffcad88d45eb6c5afd65103" + }, + "runs/core-1/stdout.log": { + "bytes": 131218, + "sha256": "0d683632d1046f102e6b70af56d67ea6841134d99c923f0648261b4832a860fa" + }, + "runs/core-consumers-1/process.json": { + "bytes": 274, + "sha256": "16bba7d4e4e3eb39c0ae89ecdbbfe38818c2ed329a32ac52a8db3cea69ed7fd4" + }, + "runs/core-consumers-1/result.json": { + "bytes": 1907, + "sha256": "4bb8e79cd647aacebe2c4790a18ac37d07bbc29b0f7c8eca1933f1c5020474f8" + }, + "runs/core-consumers-1/started.json": { + "bytes": 1515, + "sha256": "2ff77ca7601800340bf458d0707aaeef742a010ec7f6a55cf1577a1c33f5c543" + }, + "runs/core-consumers-1/stderr.log": { + "bytes": 327, + "sha256": "5ded46d388f7ecc597c5e468621e84a297b1231f4eab8c2aa413697dd005e286" + }, + "runs/core-consumers-1/stdout.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "runs/language-doc-1/warnings.log": { + "bytes": 144, + "sha256": "82cf5ddae4d21aa3730437a7962e6582507aa8032cc75fb8164ff7cf9003b7ae" + }, + "runs/language-doc-2/result.json": { + "bytes": 415, + "sha256": "620a449b2995fbbb27aa769cadf603dd01d9f7036c595d012e66b74469102bde" + }, + "runs/language-doc-2/warnings.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "runs/teaching-check-2/process.json": { + "bytes": 210, + "sha256": "18e9d3ee3e9c0d2d21c196c811ae543c899cc4580ad3288eca3a544f20f7a9cc" + }, + "runs/teaching-check-2/result.json": { + "bytes": 3147, + "sha256": "cfc8dad31b1d8ba45face31f7986a30066c3bc464d19bd3b8495c9a013b45c0e" + }, + "runs/teaching-check-2/started.json": { + "bytes": 1416, + "sha256": "259944f97150c87b2c95e9f53ae5cbb09264b03284510c9ac44272a70fdc9c87" + }, + "runs/teaching-check-2/stderr.log": { + "bytes": 218, + "sha256": "9c90adb28961f087f33b905352c50c5d2aaa46785f47f3061dbe7dc161bc95d9" + }, + "runs/teaching-check-2/stdout.log": { + "bytes": 42153, + "sha256": "d53a7d2d3d726302111aab71208814f487489080d250c1f555ad18312e80d86c" + }, + "runs/teaching-generate-1/process.json": { + "bytes": 252, + "sha256": "c97f65ec53807bca963754b767ab21a88c3476c3639f0b54b38880281aff8a22" + }, + "runs/teaching-generate-1/result.json": { + "bytes": 3171, + "sha256": "bd0095f78b4ff3cbaf7c1c3183bc280dbb1eec1cb68a528507af27ac35f34f83" + }, + "runs/teaching-generate-1/started.json": { + "bytes": 1458, + "sha256": "e0526c09c8baa67bdb753ed1b0f15e237d3db2b1c60f097a145a141b9d174169" + }, + "runs/teaching-generate-1/stderr.log": { + "bytes": 229, + "sha256": "464f44f1eaa5cabe25b7f66bcd689912977482c3eaad0e65328e0210749491fa" + }, + "runs/teaching-generate-1/stdout.log": { + "bytes": 41964, + "sha256": "c7b195917f9b5b15aaf654703349b713b788f4cfbf00dce966539ff0764f892b" + }, + "runs/windows-dependencies-1/process.json": { + "bytes": 146, + "sha256": "3901471653ef98f1abe326244dc639c6a2f0f53d3fff72db82acf068d8afabf9" + }, + "runs/windows-dependencies-1/result.json": { + "bytes": 1712, + "sha256": "f1aa540938e09c5f4b92d13b293861a9e2cd08681e3f6b285b9e85f848a44935" + }, + "runs/windows-dependencies-1/started.json": { + "bytes": 1321, + "sha256": "a54a7f78b455414d592b7ca3daf3d824487583a844097db76265e564bfb531d7" + }, + "runs/windows-dependencies-1/stderr.log": { + "bytes": 117, + "sha256": "a82eeeb2d2fffd4d9e5d6e20ef76ed29e9e365923e2cc33bac0ab8f21a7a88d8" + }, + "runs/windows-dependencies-1/stdout.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + "generatedFiles": [ + "generated-release1/expected-diagnostics.json", + "generated-release1/model.json", + "generated-release1/oa/activities/activity_oa_restore_work.arcadia", + "generated-release1/oa/behavior/process_oa_assessment_procedure.arcadia", + "generated-release1/oa/behavior/process_oa_field_procedure.arcadia", + "generated-release1/oa/behavior/process_oa_response.arcadia", + "generated-release1/oa/behavior/scenario_oa_conversation.arcadia", + "generated-release1/oa/behavior/scenario_oa_full_scenario.arcadia", + "generated-release1/oa/behavior/state_machine_oa_monitor.arcadia", + "generated-release1/oa/capabilities.arcadia", + "generated-release1/oa/model.arcadia", + "generated-release1/oa/participants.arcadia", + "generated-release1/oa/types.arcadia", + "generated-release1/project.arcadia", + "generated-release1/sa/behavior/process_sa_assessment_procedure.arcadia", + "generated-release1/sa/behavior/process_sa_field_procedure.arcadia", + "generated-release1/sa/behavior/process_sa_response.arcadia", + "generated-release1/sa/behavior/scenario_sa_conversation.arcadia", + "generated-release1/sa/behavior/scenario_sa_full_scenario.arcadia", + "generated-release1/sa/behavior/state_machine_sa_monitor.arcadia", + "generated-release1/sa/capabilities.arcadia", + "generated-release1/sa/functions/function_sa_audit_thresholds.arcadia", + "generated-release1/sa/functions/function_sa_restore_work.arcadia", + "generated-release1/sa/model.arcadia", + "generated-release1/sa/participants.arcadia", + "generated-release1/sa/types.arcadia", + "generated-release1/traceability.arcadia", + "generated-release1/transition-before.json", + "generated-release1/transition-request.json", + "generated-release1/views/diagram_oa_allocation_view.arcadia", + "generated-release1/views/diagram_sa_allocation_view.arcadia", + "generated-release1/views/diagram_sa_capability_view.arcadia", + "generated-release1/views/diagram_sa_service_view.arcadia", + "generated-release1/views/diagram_sa_state_view.arcadia" + ], + "generatedCount": 34 +} diff --git a/harness/experiments/ordinary-text-integration-20260913/verify.py b/harness/experiments/ordinary-text-integration-20260913/verify.py new file mode 100644 index 00000000..ebaa015d --- /dev/null +++ b/harness/experiments/ordinary-text-integration-20260913/verify.py @@ -0,0 +1,89 @@ +"""Read-only, Python-standard-library verification. Never executes archived code.""" +from pathlib import Path, PurePosixPath +from datetime import datetime +import hashlib +import io +import json +import re +import zipfile + +ROOT = Path(__file__).resolve().parent + +def require(ok, message): + if not ok: + raise ValueError(message) + +def digest(data): + return {'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest()} + +def members(z, expected): + names = z.namelist() + require(len(names) == len(set(names)), 'duplicate ZIP members') + require(set(names) == set(expected), 'archive membership mismatch') + require(all(not PurePosixPath(n).is_absolute() and '..' not in PurePosixPath(n).parts + and '\\' not in n and ':' not in n for n in names), 'unsafe member') + +def main(): + inventory = json.loads((ROOT / 'files.json').read_text()) + for name, expected in inventory.items(): + require(digest((ROOT / name).read_bytes()) == expected, 'external file hash: ' + name) + manifest = json.loads((ROOT / 'manifest.json').read_text()) + with zipfile.ZipFile(ROOT / 'evidence.zip') as z: + members(z, manifest['members']) + for name, expected in manifest['members'].items(): + require(digest(z.read(name)) == expected, 'member hash: ' + name) + def raw(name): return z.read(name) + def obj(name): return json.loads(raw(name)) + checked = set() + for run, spec in manifest['runs'].items(): + if spec['kind'] != 'cargo': + continue + prefix = 'runs/' + run + '/' + start, result, process = (obj(prefix + n + '.json') for n in ('started', 'result', 'process')) + require(all(result[k] == v for k, v in start.items()), run + ': start/result relationship') + require(result['command'] == spec['command'] == process['command'], run + ': command') + require(result['head'] == spec['head'], run + ': HEAD') + require(result['exitCode'] == spec['exitCode'] and result['inputsUnchanged'] is True, run + ': outcome') + require(datetime.fromisoformat(result['finish']) >= datetime.fromisoformat(start['start']), run + ': times') + require(result['seconds'] >= 0, run + ': duration') + require(result['helper'] == digest(raw('helpers/gate-union.py')), run + ': helper') + for field, file in [('inputs', spec['inputs']), ('archive', spec['archive']), ('stdout', prefix+'stdout.log'), ('stderr', prefix+'stderr.log')]: + require(result[field] == digest(raw(file)), run + ': receipt ' + field) + inputs = obj(spec['inputs']) + require(len(inputs) == result['inputCount'] == spec['inputCount'], run + ': input count') + require(sum(p.startswith('crates/vendor/iced_widget/') for p in inputs) == 71, run + ': vendor count') + pair = (spec['inputs'], spec['archive']) + if pair not in checked: + with zipfile.ZipFile(io.BytesIO(raw(spec['archive']))) as source: + members(source, inputs) + for name, expected in inputs.items(): + require(digest(source.read(name)) == expected, run + ': source hash ' + name) + checked.add(pair) + stdout = raw(prefix+'stdout.log').decode('utf-8', errors='replace') + rows = [[int(x) for x in row] for row in re.findall(r'test result: (?:ok|FAILED)\. (\d+) passed; (\d+) failed; (\d+) ignored; (\d+) measured; (\d+) filtered out;', stdout)] + require(rows == spec['testRows'], run + ': exact test summaries') + require([sum(row[i] for row in rows) for i in range(5)] == spec['testTotals'], run + ': test totals') + artifacts = [] + for line in stdout.splitlines(): + try: item = json.loads(line) + except json.JSONDecodeError: continue + if isinstance(item, dict) and item.get('reason') == 'compiler-artifact' and item.get('executable'): + artifacts.append(item) + require(artifacts == [a['cargo'] for a in result['artifacts']], run + ': artifact receipt relationship') + print(run, 'exit', result['exitCode'], 'test totals', spec['testTotals']) + composition = obj('helpers/composition.json') + require(composition['patch'] == digest(raw('helpers/ordinary.patch')), 'composition patch') + doc = obj('runs/language-doc-2/result.json') + require(doc['strict'] is True and doc['docutils'] == '0.23', 'render settings') + for field, path in [('source','render/language.rst'), ('html','render/language.html'), ('warnings','runs/language-doc-2/warnings.log')]: + require(doc[field] == digest(raw(path)), 'render receipt ' + field) + require(raw('runs/language-doc-2/warnings.log') == b'', 'successful render warnings') + require(bool(raw('runs/language-doc-1/warnings.log')), 'failed render warning missing') + for path in manifest['generatedFiles']: + require(path.startswith('generated-release1/') and path in manifest['members'], 'generated mapping') + require(len(manifest['generatedFiles']) == manifest['generatedCount'], 'generated count') + print('PASS:', len(manifest['runs']), 'closed captures;', len(manifest['members']), 'members;', len(checked), 'input manifest/archive pairs') + print('Integrity and receipt consistency only; no rerun, signature, binary verification, or GUI claim.') + +if __name__ == '__main__': + main() diff --git a/harness/ordinary-text-integration-20260913.md b/harness/ordinary-text-integration-20260913.md new file mode 100644 index 00000000..0643977a --- /dev/null +++ b/harness/ordinary-text-integration-20260913.md @@ -0,0 +1,103 @@ +# Ordinary compact source and Text workspace integration + +This proposal composes ordinary source-default omission with the published Text +workspace. It does not replace the release owner's branch or establish release +acceptance. [Issue 11](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/11) +owns this contribution; [issue 27](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/27) +retains release integration. Source-8 analysis composition and Linux verification +remain outside this candidate; Linux work is paused at the user's instruction. + +## Source composition + +Production commit `d7c065991d3f63cc41341d23a546739de8837ac3` applies the exact +14-file ordinary code/test delta from `74cc0e09119f9fa9e1287988bdd98c4cbf9db79e` +to `3d067041d1c8b62bc4b2bd1e2ae81eb2713bf4e2` onto published Text/root +`136ed6e5868200165fbb1c2ae8a7230067bf9c1e`. Thirteen preimages match, including +seven paths absent on both bases. The only other preimage difference is +`lib.rs`'s independent `pub mod analysis_numeric;`, retained with the new private +`mod source_defaults;`. Thirteen resulting files match the ordinary head exactly; +the combined `lib.rs` additionally retains the numeric module. The original +145,928-byte patch has SHA-256 +`e319a5151b7e6713880eaaab632f3f1c01aee6df3cd534d85a1c099fb501dcb7`. + +Follow-up `e624d5b9c4f848eff3fba2ed83f9decf959e14d8` brings over the ordinary +normative language-contract delta and regenerates the current teaching example. +The full core run identified the latter dependency: its exact generated-source +assertion still expected verbose defaults. The documented generator produced +30 source files and four JSON files. Twenty-nine source files changed, removing +514 default-field lines; the root entry, all four JSON files, and all 68 historical +trace baseline blocks remained byte-identical. Generation asserts complete +decoded Project equality. The test assertion was preserved. + +Strict Docutils 0.23 rendering exposed an existing one-character-short underline +on the focused diagram removal heading. Repairing it allowed warning-free HTML +generation. Regeneration also restores the root's existing allocation/removal +sections that were missing from its previous HTML. No semantic prose from those +sections changed. + +## Verification to date + +Windows toolchain: Rust/Cargo 1.98.1, `stable-x86_64-pc-windows-gnullvm`, LLVM-MinGW +20260826 UCRT, one build job, `CARGO_INCREMENTAL=0`. Each Cargo run captures its +707 source inputs before and after, including all 71 vendored Iced widget files, +raw logs, process identity, and executable artifact hashes. A captured HEAD with +local deltas is not represented as a clean-commit run. + +- The initial combined-consumer attempt stopped before compilation because + `num-bigint` was absent from the offline cache. A locked Windows-target fetch + installed `num-bigint 0.5.1` and `num-integer 0.1.47`; sources and lock stayed + unchanged. +- Full core at clean `d7c0659`: **536 passed, one failed, one existing opt-in + scaling probe ignored**, across 46 result summaries. The sole failure was + `release1_teaching_regeneration_and_shipped_source_are_exact_with_one_intentional_warning`. + The source-transaction panic messages are deliberate interruption injections + in passing recovery tests. +- The documented teaching generator completed successfully against the same + production inputs, writing to a separate scratch folder. All 34 generated + files were compared with the repaired shipped fixture. +- `cargo test --locked --offline -p oa-core --test release1_teaching` against the + repaired fixture: **four passed**, including exact source/JSON parity and the + one intentional coverage warning. This run captured `d7c0659` plus the 29 + fixture changes subsequently committed in `e624d5b`; production was unchanged. +- Strict language HTML generation: passed with an empty warning log. +- CLI/HTTP consumers: **12 CLI and 51 HTTP passed**, no failed or ignored + cases. The HTTP preservation witness exercises an actual move and server + restart with an explicitly authored empty port-anchor list. The two Windows + storage-refusal messages are expected from atomic-storage failure tests. + This run started at `d7c0659` plus the 31 fixture/documentation changes now in + `e624d5b`; all 707 captured inputs remained unchanged through execution. + +Actual desktop listing admission, desktop execution, strict workspace +Clippy, matching Windows binaries, and native combined-workflow acceptance are +not established by the results above. Earlier ordinary-only native and automated +evidence remains scoped to its original published inputs. + +## Independent review + +Astra review checked exact Git-blob composition and the source-preserving updater, +raw diagnostic coordinates, source publication ordering, warning authority after +recovery, rename/history/save ownership, schema-7 boundary, and historical payloads. +No actionable source defect was found. Separate follow-up review confirmed all +34 regenerated files and 68 unchanged historical blocks, then checked the scoped +reST delta, preserved root sections, generated HTML, and strict-render receipts. + +A source-pinned checklist identifies 150 critical desktop declarations: all 89 +imported desktop additions, both later recovery-warning fixes, retained selection +and departure cases, additional recovery/Save As/rename/navigation controls, and +six explicitly ignored probes. This is expected membership only; lexical counts +are not executable admission or passing runtime results. + +## Portable closed-run checkpoint + +[The evidence package](experiments/ordinary-text-integration-20260913/README.md) +contains the eight closed captures described above, including failed runs, exact +input snapshots, raw generated outputs, and the source-admission checklist. +Its ZIP contains 81 members with three distinct input manifest/archive pairs: +8,584,848 bytes, SHA-256 +`f220433f8f6fe99cea762aca98ee471c14411b5f6762745cf91432e6bfaca440`. +Run the package's `verify.py` with Python 3.10 or newer; it requires only the +standard library and the five adjacent package files. It verifies integrity and +receipt relationships without executing archived code or consulting this machine. +The README records provenance limitations and the absence of runtime binaries. +All 707 consumer inputs were independently compared with committed Git blobs at +`e624d5b9c4f848eff3fba2ed83f9decf959e14d8` and matched exactly.