Record native counterpart search verification and lifecycle checkpoint
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Transition picker: native comparison evidence
|
||||
|
||||
Run `python verify.py` using Python 3.10 or newer. This five-file package supports
|
||||
read-only verification using the standard library. It does not execute archived
|
||||
helpers, binaries, Git commands or network calls. Outer text is UTF-8 LF before
|
||||
hashing; archived files retain exact original bytes.
|
||||
|
||||
All three trials, launch helpers, copied release1 inputs and original frames are
|
||||
preserved. Baseline picker-baseline-1 used the f714a25 GUI and closed with exit 0.
|
||||
Corrected picker-corrected-1 exited immediately with 3221225781 and empty logs;
|
||||
the operator attributes this to omitted runtime environment setup. That cause
|
||||
is not independently proven by empty logs. Corrected picker-corrected-2 used
|
||||
the d46854c GUI, ran from 15:22:22 to 15:27:13 UTC, and closed with exit 0 and
|
||||
empty logs. Its frame 02 is a loading state, not proof that loading finished.
|
||||
|
||||
The capture-snippet.js source was retained from a previous persistent session.
|
||||
It was not pinned in these trials' launch receipts. Archiving it now does not
|
||||
establish the exact capture function executed during the trials. Frame JSON
|
||||
records timestamps, a window/application path and image references; it is not
|
||||
an action invocation log or independent PID attestation. No frame is fabricated,
|
||||
renumbered, cropped or omitted, including auxiliary dialog images.
|
||||
|
||||
Both exact GUI build result receipts are included. Full build source evidence
|
||||
remains external: the sibling transition-lifecycle-20260913 Cargo package at
|
||||
commit fe43730bec196cc6ebbc06dcf827169f04c120f0 covers the corrected d46854c
|
||||
build, and the ordinary-text-native-20260913 package at
|
||||
commit 3f9e6a18af96b5cd10940da4093be8da28b9c835 includes the baseline f714a25
|
||||
build/source evidence. The manifest pins those related evidence ZIPs. This is
|
||||
not a self-contained source or runtime distribution; the verifier does not
|
||||
require those external packages for its local receipt/frame checks.
|
||||
|
||||
Verification checks exact safe ZIP membership/hashes, launch helper pins,
|
||||
start/process/result timing, expected exit outcomes, empty streams, GUI binary
|
||||
and build receipt relationships, identical copied input membership/bytes across
|
||||
all trials, and complete frame/image references within process intervals. Binary
|
||||
hashes are receipt observations; binaries are excluded. Screenshots require
|
||||
separate interpretation and do not prove action execution, complete model
|
||||
equality, persistence or full usability. The included independent-review.md is
|
||||
a parent-consolidated record of separate human-readable review observations.
|
||||
No credentials or whole user profile are
|
||||
packaged; raw receipts retain original runtime path strings.
|
||||
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"evidence.zip": {
|
||||
"bytes": 3412321,
|
||||
"sha256": "c801eda9e33cd796a3594e73c34d6d29691597552a68307d2dc5a5e113c1e470"
|
||||
},
|
||||
"manifest.json": {
|
||||
"bytes": 26082,
|
||||
"sha256": "f80092a483a00e17c3ffcdbf2dd71480ed6ead4d003248de2f9ef708104cfba1"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 2673,
|
||||
"sha256": "86251ca15d4950cd0b037ba05b63433877608c1d0d6424fedef8ff4e34340141"
|
||||
},
|
||||
"verify.py": {
|
||||
"bytes": 5143,
|
||||
"sha256": "23c5040f91f29e243e65ad31b4f8f82f7ad1d692efd862b1bc87450c31e5ed5f"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,614 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"runs": {
|
||||
"picker-baseline-1": {
|
||||
"helper": "native/run-picker-baseline.py",
|
||||
"build": "build/baseline-result.json",
|
||||
"exitCode": 0,
|
||||
"captures": [
|
||||
"native/picker-baseline-1/01-start.json",
|
||||
"native/picker-baseline-1/02-open-pending.json",
|
||||
"native/picker-baseline-1/03-open-dialog.json",
|
||||
"native/picker-baseline-1/04-teaching-path.json",
|
||||
"native/picker-baseline-1/05-teaching-opened.json",
|
||||
"native/picker-baseline-1/06-teaching-ready.json",
|
||||
"native/picker-baseline-1/07-source-selected.json",
|
||||
"native/picker-baseline-1/08-source-actions.json",
|
||||
"native/picker-baseline-1/09-transition-dialog.json",
|
||||
"native/picker-baseline-1/10-unfiltered-counterparts.json",
|
||||
"native/picker-baseline-1/11-incompatible-selection.json",
|
||||
"native/picker-baseline-1/12-cancel-preserved.json"
|
||||
]
|
||||
},
|
||||
"picker-corrected-1": {
|
||||
"helper": "native/run-picker-corrected.py",
|
||||
"build": "build/corrected-result.json",
|
||||
"exitCode": 3221225781,
|
||||
"captures": []
|
||||
},
|
||||
"picker-corrected-2": {
|
||||
"helper": "native/run-picker-corrected-2.py",
|
||||
"build": "build/corrected-result.json",
|
||||
"exitCode": 0,
|
||||
"captures": [
|
||||
"native/picker-corrected-2/01-opened.json",
|
||||
"native/picker-corrected-2/02-teaching-reopened.json",
|
||||
"native/picker-corrected-2/03-loaded.json",
|
||||
"native/picker-corrected-2/04-source-selected.json",
|
||||
"native/picker-corrected-2/05-actions.json",
|
||||
"native/picker-corrected-2/06-transition-dialog.json",
|
||||
"native/picker-corrected-2/07-compatible-menu.json",
|
||||
"native/picker-corrected-2/08-menu-dismissed.json",
|
||||
"native/picker-corrected-2/09-search-focus.json",
|
||||
"native/picker-corrected-2/10-alias-query.json",
|
||||
"native/picker-corrected-2/11-filtered-menu.json",
|
||||
"native/picker-corrected-2/12-existing-selection.json",
|
||||
"native/picker-corrected-2/13-refocus-search.json",
|
||||
"native/picker-corrected-2/14-query-selected.json",
|
||||
"native/picker-corrected-2/15-no-results-selection-retained.json",
|
||||
"native/picker-corrected-2/16-parent-search-focus.json",
|
||||
"native/picker-corrected-2/17-independent-card-queries.json",
|
||||
"native/picker-corrected-2/18-field-review.json",
|
||||
"native/picker-corrected-2/19-keep-target-reviewed.json",
|
||||
"native/picker-corrected-2/20-reviewed-search-focus.json",
|
||||
"native/picker-corrected-2/21-reviewed-query-selected.json",
|
||||
"native/picker-corrected-2/22-cleared-search-review-retained.json",
|
||||
"native/picker-corrected-2/23-cancel-restores-saved.json"
|
||||
]
|
||||
}
|
||||
},
|
||||
"members": {
|
||||
"build/baseline-result.json": {
|
||||
"bytes": 5532,
|
||||
"sha256": "5e9e227c66a4b71ade734b8ebeb12070b8a5c64a9a6cf9d8d0b6d70379d4ffc2"
|
||||
},
|
||||
"build/corrected-result.json": {
|
||||
"bytes": 5583,
|
||||
"sha256": "91b38045319adc1fb9aa0e51d45d79a4be99d2de9aec08a47f73915e3ac9dd79"
|
||||
},
|
||||
"native/capture-snippet.js": {
|
||||
"bytes": 1579,
|
||||
"sha256": "55279ed080289ccf5ba482cb24b5a807669a9360012e2d87f794d4465227cb2c"
|
||||
},
|
||||
"native/independent-review.md": {
|
||||
"bytes": 1898,
|
||||
"sha256": "c59d2ff78635f94f3f225c27999b69d24c11977c89026fc8a7331ddbd160c8c6"
|
||||
},
|
||||
"native/input/release1/README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"native/input/release1/evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"native/input/release1/expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"native/input/release1/model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"native/input/release1/model.rs": {
|
||||
"bytes": 28762,
|
||||
"sha256": "15f30f6bde655808fe754665c26d560e36f2a9bad340f346b09137d0d05045f5"
|
||||
},
|
||||
"native/input/release1/oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1130,
|
||||
"sha256": "21cbd7176af8fad68453306f2371ff03e127a994b8796cdf044567332de9686f"
|
||||
},
|
||||
"native/input/release1/oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"native/input/release1/oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"native/input/release1/oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"native/input/release1/oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"native/input/release1/oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"native/input/release1/oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"native/input/release1/oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"native/input/release1/oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"native/input/release1/oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"native/input/release1/oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"native/input/release1/project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"native/input/release1/sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"native/input/release1/sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"native/input/release1/sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"native/input/release1/sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"native/input/release1/sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"native/input/release1/sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"native/input/release1/sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"native/input/release1/sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"native/input/release1/sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
},
|
||||
"native/input/release1/sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"native/input/release1/sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"native/input/release1/sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"native/input/release1/traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"native/input/release1/transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"native/input/release1/transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"native/input/release1/views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"native/input/release1/views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"native/input/release1/views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"native/input/release1/views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"native/input/release1/views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"native/picker-baseline-1/01-start-0.jpg": {
|
||||
"bytes": 116509,
|
||||
"sha256": "d5c669575ffa4f8c0fe2027d39ad0b655bf6557a6315a9f27ef4cc81e3e4a9d8"
|
||||
},
|
||||
"native/picker-baseline-1/01-start.json": {
|
||||
"bytes": 920,
|
||||
"sha256": "f8ac2638390d3dc2a4bf7d64a9c6b8988c59ef377b53d7067fc41c1d30b5f091"
|
||||
},
|
||||
"native/picker-baseline-1/02-open-pending-0.jpg": {
|
||||
"bytes": 115140,
|
||||
"sha256": "d06c8963b5b752f6248ecead582c317cadfcf699955f7ecd629d6052ef157f70"
|
||||
},
|
||||
"native/picker-baseline-1/02-open-pending.json": {
|
||||
"bytes": 927,
|
||||
"sha256": "f326b85978dfa21cc2fd2e4454ebfee6a6d856e439de5ab41a8cec7c2998fb23"
|
||||
},
|
||||
"native/picker-baseline-1/03-open-dialog-0.jpg": {
|
||||
"bytes": 674,
|
||||
"sha256": "5a2387a1a593a32ea169b56b9a3e59333936ee1da95164564e4d9be61bf5a24b"
|
||||
},
|
||||
"native/picker-baseline-1/03-open-dialog-1.jpg": {
|
||||
"bytes": 52573,
|
||||
"sha256": "23ab19c5286f26ead42aec7e3690fda96cad512518243593f37e26579eb08ef6"
|
||||
},
|
||||
"native/picker-baseline-1/03-open-dialog.json": {
|
||||
"bytes": 4915,
|
||||
"sha256": "b1d4e6c59104b3d4d36210e855750cc7fc445a8d05e12f3c63cc43196df9df95"
|
||||
},
|
||||
"native/picker-baseline-1/04-teaching-path-0.jpg": {
|
||||
"bytes": 674,
|
||||
"sha256": "5a2387a1a593a32ea169b56b9a3e59333936ee1da95164564e4d9be61bf5a24b"
|
||||
},
|
||||
"native/picker-baseline-1/04-teaching-path-1.jpg": {
|
||||
"bytes": 55565,
|
||||
"sha256": "569f70974c0347c3accecb412de468751fc2294ba5f577b572765335a1cbca7c"
|
||||
},
|
||||
"native/picker-baseline-1/04-teaching-path.json": {
|
||||
"bytes": 4919,
|
||||
"sha256": "e7ef7212f637bff8125fa86892cc0b610a0c29a64c3715baeab12a6b36992620"
|
||||
},
|
||||
"native/picker-baseline-1/05-teaching-opened-0.jpg": {
|
||||
"bytes": 115272,
|
||||
"sha256": "c74bba329bca67a25c83352467842dadb8d393b17785b87929a4b7f10a8a2ae2"
|
||||
},
|
||||
"native/picker-baseline-1/05-teaching-opened.json": {
|
||||
"bytes": 930,
|
||||
"sha256": "dacbdbc29a7a61de78eb987069ed8e31f5818cdf6269b34836927109badd87ec"
|
||||
},
|
||||
"native/picker-baseline-1/06-teaching-ready-0.jpg": {
|
||||
"bytes": 148650,
|
||||
"sha256": "89957f78f5744c35f600b09f55dfbe52fddc4aac1b76ea1e820d1063b15c2833"
|
||||
},
|
||||
"native/picker-baseline-1/06-teaching-ready.json": {
|
||||
"bytes": 1114,
|
||||
"sha256": "4a708684d4469e4b5612ffe10216ad81d492eaf28730f0e11a4f5c4dcd30c903"
|
||||
},
|
||||
"native/picker-baseline-1/07-source-selected-0.jpg": {
|
||||
"bytes": 146555,
|
||||
"sha256": "ca53af5035524280f3144309a12c931193115e025bec6fe5b6b1799de3c8c949"
|
||||
},
|
||||
"native/picker-baseline-1/07-source-selected.json": {
|
||||
"bytes": 1115,
|
||||
"sha256": "4a725e4db48f2f8db7bc41a37ce69d49b2cd01a9b046791fee57b1bb580183a0"
|
||||
},
|
||||
"native/picker-baseline-1/08-source-actions-0.jpg": {
|
||||
"bytes": 153686,
|
||||
"sha256": "367876958aa58ed08c913d33530ba8da663d247ee3b0b9503625e7d3f945480c"
|
||||
},
|
||||
"native/picker-baseline-1/08-source-actions.json": {
|
||||
"bytes": 1114,
|
||||
"sha256": "4d244ccced055bdff280bbf99269554173fe85c816d15f9dae03aca40ad64ece"
|
||||
},
|
||||
"native/picker-baseline-1/09-transition-dialog-0.jpg": {
|
||||
"bytes": 147596,
|
||||
"sha256": "f197b031669070f731e354bca993ffc77ff43966349f4699d69e361287f2a704"
|
||||
},
|
||||
"native/picker-baseline-1/09-transition-dialog.json": {
|
||||
"bytes": 1127,
|
||||
"sha256": "3de33b54e5b15a598a901103acfa48650170d94724c5f5708b90d8fac6bcf6dd"
|
||||
},
|
||||
"native/picker-baseline-1/10-unfiltered-counterparts-0.jpg": {
|
||||
"bytes": 138703,
|
||||
"sha256": "a3c8464125657ea37550eb46a269f9a0c0646001ba387a8188b987ba74c6a270"
|
||||
},
|
||||
"native/picker-baseline-1/10-unfiltered-counterparts.json": {
|
||||
"bytes": 1133,
|
||||
"sha256": "977c0bbc366937ce2242b871b12f350cb56af4661f09c214e4945296195f4c55"
|
||||
},
|
||||
"native/picker-baseline-1/11-incompatible-selection-0.jpg": {
|
||||
"bytes": 144348,
|
||||
"sha256": "53884020ceb9c0b416386ceaa1e06801614ac132760e58c7c3320c820c251d04"
|
||||
},
|
||||
"native/picker-baseline-1/11-incompatible-selection.json": {
|
||||
"bytes": 1132,
|
||||
"sha256": "94f6814f61b75dc4ad9f9f14babed492865079c45fa5de17e6fc9c8a4fabc349"
|
||||
},
|
||||
"native/picker-baseline-1/12-cancel-preserved-0.jpg": {
|
||||
"bytes": 145507,
|
||||
"sha256": "d3db7643267cdc532f630c972d6c53823679326910e482179d447efad6289a61"
|
||||
},
|
||||
"native/picker-baseline-1/12-cancel-preserved.json": {
|
||||
"bytes": 1116,
|
||||
"sha256": "259769191f79cd381e2c8be3230b0da8912d35ef0ce5c362b2dd4f1189773647"
|
||||
},
|
||||
"native/picker-baseline-1/inputs.json": {
|
||||
"bytes": 5843,
|
||||
"sha256": "c1e7219e30171f3854c97cfe6b2fa2411d7b3f39c60a12ad41b57ca61a8f4dff"
|
||||
},
|
||||
"native/picker-baseline-1/process.json": {
|
||||
"bytes": 61,
|
||||
"sha256": "a99574647fda39a1529b9733794064c5214005df5a5ea821f7e0d0e61e4136a9"
|
||||
},
|
||||
"native/picker-baseline-1/result.json": {
|
||||
"bytes": 1247,
|
||||
"sha256": "a4cfe1faa8edc3ae8a7eaef9bb0714b357ecbaf91ad5a5bc6e787fea7fe013d3"
|
||||
},
|
||||
"native/picker-baseline-1/started.json": {
|
||||
"bytes": 780,
|
||||
"sha256": "b059824ca0e7b1a528ec8ececbe1b8d37335bcd5a34de921c3c9b6fda448acbe"
|
||||
},
|
||||
"native/picker-baseline-1/stderr.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/picker-baseline-1/stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/picker-corrected-1/inputs.json": {
|
||||
"bytes": 5843,
|
||||
"sha256": "c1e7219e30171f3854c97cfe6b2fa2411d7b3f39c60a12ad41b57ca61a8f4dff"
|
||||
},
|
||||
"native/picker-corrected-1/process.json": {
|
||||
"bytes": 61,
|
||||
"sha256": "749d13d70bb8c9d7b9ad35a11e63980562b5e2140a1325454d61c6fd2cc5ef7d"
|
||||
},
|
||||
"native/picker-corrected-1/result.json": {
|
||||
"bytes": 1256,
|
||||
"sha256": "98d9e77ed93d56f2fb79f21c70ba5dceb012605f491fa6d704bd4f2f3bb2f8ea"
|
||||
},
|
||||
"native/picker-corrected-1/started.json": {
|
||||
"bytes": 780,
|
||||
"sha256": "9260aaee5e9e733eeb38a334a96881a1ed796149d9ece8438e0682f1990a8404"
|
||||
},
|
||||
"native/picker-corrected-1/stderr.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/picker-corrected-1/stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/picker-corrected-2/01-opened-0.jpg": {
|
||||
"bytes": 118158,
|
||||
"sha256": "84db89be21fabc31958b4521587ff708619a4a4cbf0ded6fe8b2c58e94a26a68"
|
||||
},
|
||||
"native/picker-corrected-2/01-opened.json": {
|
||||
"bytes": 922,
|
||||
"sha256": "44cb8a61c47648bdcdfdc278ebfd43e45942eb5211e8f77624b9982186c89c25"
|
||||
},
|
||||
"native/picker-corrected-2/02-teaching-reopened-0.jpg": {
|
||||
"bytes": 117821,
|
||||
"sha256": "aa6fd6a99c2f808c6b55c734c83b0aa8b2fbd1ce03a14b02f609e5c84275bc66"
|
||||
},
|
||||
"native/picker-corrected-2/02-teaching-reopened.json": {
|
||||
"bytes": 933,
|
||||
"sha256": "b8a9dd0a0462f9b2703bfd9d88823b9ca00efba304f0f1cd923d637e8a01b6da"
|
||||
},
|
||||
"native/picker-corrected-2/03-loaded-0.jpg": {
|
||||
"bytes": 148546,
|
||||
"sha256": "dfe2700568a0e2f688c8c197224d75d7c15dfde5f060dfe2aba09631837687ef"
|
||||
},
|
||||
"native/picker-corrected-2/03-loaded.json": {
|
||||
"bytes": 1107,
|
||||
"sha256": "e8b18a5e75b52649dd87118f70c55be4b0e9c7e2ee00c2a3db730376a6c36aa4"
|
||||
},
|
||||
"native/picker-corrected-2/04-source-selected-0.jpg": {
|
||||
"bytes": 146472,
|
||||
"sha256": "74baf9f9059b4f0741d500a1f6d84ccb91474ff48de7466a03736e5decc868ca"
|
||||
},
|
||||
"native/picker-corrected-2/04-source-selected.json": {
|
||||
"bytes": 1116,
|
||||
"sha256": "45f7cfeab95e2ca2ca2ed2cd45bea9a269c1c6a1515dbe9cbcb3087fb2917c55"
|
||||
},
|
||||
"native/picker-corrected-2/05-actions-0.jpg": {
|
||||
"bytes": 153725,
|
||||
"sha256": "c00b412af778af51cb2a6658bae4f4e11bb024a0770c3ea5aa4a54383be381c4"
|
||||
},
|
||||
"native/picker-corrected-2/05-actions.json": {
|
||||
"bytes": 1108,
|
||||
"sha256": "1132f230694873a7e9536fd59f06b976e3b52041b119e2e9632b7c66de53d400"
|
||||
},
|
||||
"native/picker-corrected-2/06-transition-dialog-0.jpg": {
|
||||
"bytes": 149653,
|
||||
"sha256": "a4736781ac296164ddffe12005f9f1ad29d73ddd2bc752d14fb2b63ac2579153"
|
||||
},
|
||||
"native/picker-corrected-2/06-transition-dialog.json": {
|
||||
"bytes": 1126,
|
||||
"sha256": "2a2b8e8d9ac75a7c354e79bd5ba764c4024b045db009d5feb2b7f3909423f753"
|
||||
},
|
||||
"native/picker-corrected-2/07-compatible-menu-0.jpg": {
|
||||
"bytes": 148938,
|
||||
"sha256": "80621a49998cc7fc2a643e7338a6867c722b4365fabc713fac0b39f7812703f9"
|
||||
},
|
||||
"native/picker-corrected-2/07-compatible-menu.json": {
|
||||
"bytes": 1126,
|
||||
"sha256": "0f3c6a3d512e163953b9773de45df81d4129c0ded48a13c4d79de32dd8ab2d9e"
|
||||
},
|
||||
"native/picker-corrected-2/08-menu-dismissed-0.jpg": {
|
||||
"bytes": 149416,
|
||||
"sha256": "867236aeac2dcf839104692f73cb63fb45d7dcc38d95eaabd5cba8d0a7ff862a"
|
||||
},
|
||||
"native/picker-corrected-2/08-menu-dismissed.json": {
|
||||
"bytes": 1125,
|
||||
"sha256": "65ce375a1918a848cc57739f90eb15fbd55e9173c2343701791d0cf9740b818e"
|
||||
},
|
||||
"native/picker-corrected-2/09-search-focus-0.jpg": {
|
||||
"bytes": 149668,
|
||||
"sha256": "4a08a7955982956d518397832a0befdda951347f04da9af75af787fe5a163332"
|
||||
},
|
||||
"native/picker-corrected-2/09-search-focus.json": {
|
||||
"bytes": 1123,
|
||||
"sha256": "de505bdab419c6c60a3ad260479036d373f915333eb6fc62cd68c57ce2974af9"
|
||||
},
|
||||
"native/picker-corrected-2/10-alias-query-0.jpg": {
|
||||
"bytes": 149373,
|
||||
"sha256": "dceaa7f1e0e0959aa6e654d0b9f84cbe20badec8d99315e3fd2ebc3cb47f6f5f"
|
||||
},
|
||||
"native/picker-corrected-2/10-alias-query.json": {
|
||||
"bytes": 1122,
|
||||
"sha256": "c080f52656f6f603065e763cefb4a6ef790f4cfad96a3ddd3b6d58c5053cd62d"
|
||||
},
|
||||
"native/picker-corrected-2/11-filtered-menu-0.jpg": {
|
||||
"bytes": 149367,
|
||||
"sha256": "6893983b46da3a6f3da1ee3eac90dc50f34dbb257671835d7e893244d18b1b03"
|
||||
},
|
||||
"native/picker-corrected-2/11-filtered-menu.json": {
|
||||
"bytes": 1124,
|
||||
"sha256": "f8c5c8573840faef1337a7b429645e46652d29340104c2d6b15a9e1fbc14f152"
|
||||
},
|
||||
"native/picker-corrected-2/12-existing-selection-0.jpg": {
|
||||
"bytes": 147991,
|
||||
"sha256": "839dee6d22448d12d90758ca76f5503fae69a099af0e055e20cf814d7dd498ec"
|
||||
},
|
||||
"native/picker-corrected-2/12-existing-selection.json": {
|
||||
"bytes": 1129,
|
||||
"sha256": "84bc484447049dbafa1cda1b4c1ce0ade93c7ddcbf1c0489f2b18167deabed00"
|
||||
},
|
||||
"native/picker-corrected-2/13-refocus-search-0.jpg": {
|
||||
"bytes": 148017,
|
||||
"sha256": "70f5a9d3ea5d2b82b68e19d5682659ba0bba1abaeac0f56aca4a88ffeec74b76"
|
||||
},
|
||||
"native/picker-corrected-2/13-refocus-search.json": {
|
||||
"bytes": 1125,
|
||||
"sha256": "c2e42830b2d2364699210f716c375f2e63a447f910e729be0aa60c157f8341f6"
|
||||
},
|
||||
"native/picker-corrected-2/14-query-selected-0.jpg": {
|
||||
"bytes": 148447,
|
||||
"sha256": "e0e5807ed5f0f535110ceecc6c6aabb9d077ea67fa1d83367d2c50141e8cdc53"
|
||||
},
|
||||
"native/picker-corrected-2/14-query-selected.json": {
|
||||
"bytes": 1125,
|
||||
"sha256": "5d97ec91b3fd752d9f5e896c6fe97abc97ca40a91b6a708209663d4c198cc2e0"
|
||||
},
|
||||
"native/picker-corrected-2/15-no-results-selection-retained-0.jpg": {
|
||||
"bytes": 150165,
|
||||
"sha256": "25be189c30acb4c8dab03d458b2fc73bd09d0766513d5c9ee4e0e0bffcee2457"
|
||||
},
|
||||
"native/picker-corrected-2/15-no-results-selection-retained.json": {
|
||||
"bytes": 1140,
|
||||
"sha256": "a4f3c3e357aed8f66cad8b3c89f0e89d9eaf0662e3d740a06ba8eee6e7a33748"
|
||||
},
|
||||
"native/picker-corrected-2/16-parent-search-focus-0.jpg": {
|
||||
"bytes": 149957,
|
||||
"sha256": "84bdd2c3ed40178a16452a680932d27d42142220f09f79dc747906732aafb97d"
|
||||
},
|
||||
"native/picker-corrected-2/16-parent-search-focus.json": {
|
||||
"bytes": 1130,
|
||||
"sha256": "c3346906c51cf087a1fa850b46c867491630c2ec9a1565671e5674f2600ee261"
|
||||
},
|
||||
"native/picker-corrected-2/17-independent-card-queries-0.jpg": {
|
||||
"bytes": 149082,
|
||||
"sha256": "a48e99ca120c7e34ce2823bc0140a99778b88849eb7a6b245867f129a0e46aff"
|
||||
},
|
||||
"native/picker-corrected-2/17-independent-card-queries.json": {
|
||||
"bytes": 1135,
|
||||
"sha256": "ced4961b7bffb3d5f82757036ac77dab3cffba705bdd0a596183e686b3a59691"
|
||||
},
|
||||
"native/picker-corrected-2/18-field-review-0.jpg": {
|
||||
"bytes": 144509,
|
||||
"sha256": "734e83058cc66d1af13098b5b69c7e2cbad8daf2a3afd2a25780e65faa38bf71"
|
||||
},
|
||||
"native/picker-corrected-2/18-field-review.json": {
|
||||
"bytes": 1123,
|
||||
"sha256": "7489d77a9b1d4718f43aa10edca688e42a76a05507198538bd714ac8de638432"
|
||||
},
|
||||
"native/picker-corrected-2/19-keep-target-reviewed-0.jpg": {
|
||||
"bytes": 144547,
|
||||
"sha256": "8eafc33857650748a059a2c1dc345112b300a6d16d0395b33ff8f7e596d18d04"
|
||||
},
|
||||
"native/picker-corrected-2/19-keep-target-reviewed.json": {
|
||||
"bytes": 1131,
|
||||
"sha256": "509c9c3f0237a860c61e2413f05ab7bd9c51e5ffcbf97caede5c7298de0d479a"
|
||||
},
|
||||
"native/picker-corrected-2/20-reviewed-search-focus-0.jpg": {
|
||||
"bytes": 144893,
|
||||
"sha256": "0e46bb4787aba3c19cb27461cf70a22fdb579f3a63839a91ee68d37d7f9dd1d9"
|
||||
},
|
||||
"native/picker-corrected-2/20-reviewed-search-focus.json": {
|
||||
"bytes": 1132,
|
||||
"sha256": "33325c0cdac00fd49f25d4606c88a241dc6957f91f38d97b3ebafd4f5c42eaf2"
|
||||
},
|
||||
"native/picker-corrected-2/21-reviewed-query-selected-0.jpg": {
|
||||
"bytes": 144916,
|
||||
"sha256": "bec9c198292a5d4f6883c003112da1634fc7b8b8694a2910e51ed29079eaeb4b"
|
||||
},
|
||||
"native/picker-corrected-2/21-reviewed-query-selected.json": {
|
||||
"bytes": 1134,
|
||||
"sha256": "cf01d193ba011ed141e98236dff49fc06f789bbb26bb92b5a848a3f059c4319a"
|
||||
},
|
||||
"native/picker-corrected-2/22-cleared-search-review-retained-0.jpg": {
|
||||
"bytes": 145507,
|
||||
"sha256": "ff8670ba72a6b516e01bfcb9a8036940682e8f2caec92342b0902d9c0bb26b87"
|
||||
},
|
||||
"native/picker-corrected-2/22-cleared-search-review-retained.json": {
|
||||
"bytes": 1141,
|
||||
"sha256": "9a6a51578618a6c8aaf238329624102f3f37fda306be1dadffbc97dca178c221"
|
||||
},
|
||||
"native/picker-corrected-2/23-cancel-restores-saved-0.jpg": {
|
||||
"bytes": 145951,
|
||||
"sha256": "c79b52574c7ad9ea3a442679fbccb7e2683be6c0c8d015260398bc31fe9c705c"
|
||||
},
|
||||
"native/picker-corrected-2/23-cancel-restores-saved.json": {
|
||||
"bytes": 1122,
|
||||
"sha256": "6524ed5fd1cadc41de60d60818ec69e47a406189d03ede0822ea70ed502798b9"
|
||||
},
|
||||
"native/picker-corrected-2/inputs.json": {
|
||||
"bytes": 5843,
|
||||
"sha256": "c1e7219e30171f3854c97cfe6b2fa2411d7b3f39c60a12ad41b57ca61a8f4dff"
|
||||
},
|
||||
"native/picker-corrected-2/process.json": {
|
||||
"bytes": 61,
|
||||
"sha256": "6c4ea33570bd26271c5ec70c884dd4aeeab0642c33f46896ecd8832cb7ff5361"
|
||||
},
|
||||
"native/picker-corrected-2/result.json": {
|
||||
"bytes": 2837,
|
||||
"sha256": "b483791514deb4c1e16272dfabdf78f5a8092ddc8deeefc01a23baaed2913c2d"
|
||||
},
|
||||
"native/picker-corrected-2/started.json": {
|
||||
"bytes": 2370,
|
||||
"sha256": "cd97a270ae7e4eae8c6777ec311eb2437c4dd55e8b5882cbd8011c82fca2f7af"
|
||||
},
|
||||
"native/picker-corrected-2/stderr.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/picker-corrected-2/stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/run-picker-baseline.py": {
|
||||
"bytes": 2106,
|
||||
"sha256": "86c88e94ccb5fcfd8f81db429db9991170839bc4a20dab408ab1d284c7e234f1"
|
||||
},
|
||||
"native/run-picker-corrected-2.py": {
|
||||
"bytes": 2162,
|
||||
"sha256": "e61347fa440337bc9629c0d3b532c39e16cfb8d1966132992676bfa1c8f546f5"
|
||||
},
|
||||
"native/run-picker-corrected.py": {
|
||||
"bytes": 2124,
|
||||
"sha256": "0e82acfca234bade68a6263f1c5a2222e1eeaff932fa7c92eb88063f254f6701"
|
||||
}
|
||||
},
|
||||
"externalEvidence": {
|
||||
"correctedCargo": {
|
||||
"repositoryPath": "harness/experiments/transition-lifecycle-20260913/evidence.zip",
|
||||
"commit": "fe43730bec196cc6ebbc06dcf827169f04c120f0",
|
||||
"bytes": 8496343,
|
||||
"sha256": "5f44ad5d83024a04a873142e77c5b8961c278a19d76492618c3ef2db63801070"
|
||||
},
|
||||
"baselineNative": {
|
||||
"repositoryPath": "harness/experiments/ordinary-text-native-20260913/evidence.zip",
|
||||
"commit": "3f9e6a18af96b5cd10940da4093be8da28b9c835",
|
||||
"bytes": 5704887,
|
||||
"sha256": "b827d0bdaec76b7b86d8a169530dcf98767c9883187ecdda02b4ea87171a42b5"
|
||||
}
|
||||
},
|
||||
"captureCount": 35,
|
||||
"imageCount": 37
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
"""Read-only portable receipt and frame verification, without archived execution."""
|
||||
from pathlib import Path, PurePosixPath
|
||||
from datetime import datetime
|
||||
import hashlib,json,zipfile
|
||||
ROOT=Path(__file__).resolve().parent
|
||||
def pin(b):return {'bytes':len(b),'sha256':hashlib.sha256(b).hexdigest()}
|
||||
def need(ok,msg):
|
||||
if not ok:raise ValueError(msg)
|
||||
def main():
|
||||
files=json.loads((ROOT/'files.json').read_bytes())
|
||||
for n,p in files.items():need(pin((ROOT/n).read_bytes())==p,'outer hash '+n)
|
||||
manifest=json.loads((ROOT/'manifest.json').read_bytes())
|
||||
with zipfile.ZipFile(ROOT/'evidence.zip') as z:
|
||||
names=z.namelist()
|
||||
need(len(names)==len(set(names)) and set(names)==set(manifest['members']),'exact ZIP membership')
|
||||
need(all(not PurePosixPath(n).is_absolute() and '..' not in PurePosixPath(n).parts and '\\' not in n and ':' not in n for n in names),'safe members')
|
||||
for n,p in manifest['members'].items():need(pin(z.read(n))==p,'member hash '+n)
|
||||
def obj(n):return json.loads(z.read(n))
|
||||
input_names={n[len('native/input/'):]:n for n in names if n.startswith('native/input/')}
|
||||
reference=None;frame_count=0;image_count=0
|
||||
for run,spec in manifest['runs'].items():
|
||||
prefix='native/'+run+'/'
|
||||
start=obj(prefix+'started.json');result=obj(prefix+'result.json');process=obj(prefix+'process.json')
|
||||
need(all(result[k]==v for k,v in start.items()),run+' start/result relationship')
|
||||
need(result['exitCode']==spec['exitCode'],run+' exit code')
|
||||
need(isinstance(process['pid'],int) and process['pid']>0,run+' process ID')
|
||||
need(datetime.fromisoformat(start['start'])<=datetime.fromisoformat(process['observed'])<=datetime.fromisoformat(result['finish']),run+' process time order')
|
||||
need(result['helper']==pin(z.read(spec['helper'])),run+' launch helper')
|
||||
need(result['inputs']==pin(z.read(prefix+'inputs.json')) and result['inputUnchanged'] is True,run+' input receipt')
|
||||
inputs=obj(prefix+'inputs.json')
|
||||
need(set(inputs)==set(input_names),run+' input inventory')
|
||||
for n,p in inputs.items():need(pin(z.read(input_names[n]))==p,run+' input bytes '+n)
|
||||
if reference is None:reference=inputs
|
||||
need(inputs==reference,run+' all trials identical fixture')
|
||||
for stream in ['stdout','stderr']:
|
||||
b=z.read(prefix+stream+'.log');need(not b and result[stream]==pin(b),run+' empty stream '+stream)
|
||||
build=obj(spec['build'])
|
||||
need(result['buildReceipt']==pin(z.read(spec['build'])) and result['buildHead']==build['head'],run+' build receipt')
|
||||
need(build['exitCode']==0 and build['inputsUnchanged'] is True,run+' build status')
|
||||
need(datetime.fromisoformat(build['start'])<=datetime.fromisoformat(build['finish'])<=datetime.fromisoformat(start['start']),run+' build before launch')
|
||||
gui=[a for a in build['artifacts'] if a['cargo']['target']['name']=='arcadia-studio']
|
||||
need(len(gui)==1,run+' unique GUI artifact')
|
||||
need(result['binary']==result['binaryAfter']==gui[0]['readback'],run+' unchanged GUI pin')
|
||||
need(result['command']==[gui[0]['cargo']['executable']],run+' exact launch command')
|
||||
images=[]
|
||||
for metadata in spec['captures']:
|
||||
frame=obj(metadata)
|
||||
need(datetime.fromisoformat(start['start'])<=datetime.fromisoformat(frame['time'])<=datetime.fromisoformat(result['finish']),metadata+' capture interval')
|
||||
need(frame['window']['app'].replace('\\','/')=='process:'+result['command'][0].replace('\\','/'),metadata+' window application path')
|
||||
for image in frame['images']:
|
||||
n=prefix+image['file'];need(n in manifest['members'] and z.read(n).startswith(b'\xff\xd8'),metadata+' JPEG reference')
|
||||
need(image['width']>0 and image['height']>0,metadata+' frame dimensions')
|
||||
images.append(n)
|
||||
actual_images=[n for n in names if n.startswith(prefix) and n.endswith('.jpg')]
|
||||
need(len(images)==len(set(images)) and set(images)==set(actual_images),run+' all images referenced once')
|
||||
actual_metadata=[n for n in names if n.startswith(prefix) and n.endswith('.json') and 'images' in obj(n)]
|
||||
need(set(actual_metadata)==set(spec['captures']) and len(actual_metadata)==len(spec['captures']),run+' all capture metadata')
|
||||
frame_count+=len(actual_metadata);image_count+=len(images)
|
||||
print(run,'exit',result['exitCode'],'captures',len(actual_metadata),'images',len(images))
|
||||
need(frame_count==manifest['captureCount'] and image_count==manifest['imageCount'],'aggregate frame counts')
|
||||
print('PASS:',len(names),'raw members;',len(reference),'unchanged fixture files;',frame_count,'capture records;',image_count,'original JPEGs.')
|
||||
print('Build source inventories are external. Frames prove recorded states, not action execution or PID attestation. Capture helper was not start-pinned.')
|
||||
if __name__=='__main__':main()
|
||||
@@ -0,0 +1,55 @@
|
||||
# Ordinary transition lifecycle and counterpart selection
|
||||
|
||||
Scope: issue 28 C1 cases 1–3 from the [published assessment](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/94a2bb2e5f4ad700f5d34b4fd818d421dcea6d66/harness/issue28-transition-overview-assessment-9e8r6t.md). Candidate branch `codex/transition-lifecycle-9e8r6t` extends ordinary/Text checkpoint `3f9e6a18af96b5cd10940da4093be8da28b9c835`. The behavioral change is `acbfb6cc929cb08b599b2e8ccf4d6752e63b84a8`; `d46854c2dc719bb8b44a0978102de44ecc3a6b39` adds only an inherited tuple-formatting correction. Live ownership and integration status remain in [issue 28](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/28#issuecomment-997).
|
||||
|
||||
## Findings and change
|
||||
|
||||
The existing endpoint deletion and ordinary transition engine conserves the retained counterpart in the six new lifecycle cases. These tests exercise both directions with independently authored root/child work, shared exchange-item definitions, SA typed ports, internal exchanges, placements, collapsed state, route labels and external artifact links. Expected deletions enumerate fixture-owned IDs independently of deletion implementation; whole-project equality detects incidental target changes. Old plans become stale, explicitly deleted target IDs are refused, a fresh implicit retry creates one counterpart, and a fresh subsequent retry reuses it without an undo entry. Recreating the source with the same name/alias but a new UUID does not silently recover its old correspondence. Explicit relinking changes only reviewed fields and adds the new trace.
|
||||
|
||||
These tests prove exact decoded-project JSON and canonical source round trips. They do not establish preservation of original source comments/formatting or file reopening in the packaged GUI. No tombstones, automatic name matching, structural merge policy, or new metamodel are introduced.
|
||||
|
||||
The native baseline exposed a separate obstacle: an Activity's long, unsorted counterpart menu offered opposite-layer ports, scenario records and other incompatible kinds. Selecting an offered output port caused an incompatibility error and disabled Apply. The correction shares the core's existing kind compatibility policy through `counterpart_compatible`, filters existing choices by name or alias, and sorts by name/alias/identity. Labels distinguish duplicate names using kind and alias. Explicit creation remains available.
|
||||
|
||||
Search state is separate from mappings and field resolutions. Typing does not replan or replace preview IDs; selected targets remain visible when filtered out. Missing and incompatible recovered selections remain identifiable and refused by the normal planner. Unique inferred correspondence counts distinct target IDs, so duplicate pair traces do not create false ambiguity; several distinct targets show an unresolved choice.
|
||||
|
||||
The chosen UI adds a text field to the existing picker. A searchable combo box was considered; it brings per-card cached option and selection state, while the separate field supports the needed filtering without changing reviewed mapping semantics. The inherited picker still requires pointer/touch interaction for opening and selection; this change is not complete keyboard accessibility.
|
||||
|
||||
## Verification record
|
||||
|
||||
Windows environment: Rust/Cargo 1.98.1, `stable-x86_64-pc-windows-gnullvm`, LLVM MinGW, locked offline dependencies, one Cargo job, incremental caching disabled. Linux work remains paused by the user.
|
||||
|
||||
- First lifecycle run: compiled, then six failures in the new fixture's incomplete warning expectation. No product failure was established. The fixture now supplies a system of interest and concrete item contracts and checks the exact remaining allocation/context warning multiset by ID, code and field.
|
||||
- Corrected core run: four compatibility tests and six lifecycle tests passed; 710 recorded inputs remained unchanged. Compatibility covers both-direction element/relation families, wrong layers/categories, missing/nonsemantic identities, and the observed real SA-port refusal against the full planner.
|
||||
- Desktop workflow filter: 25 passed, zero failed/ignored, 1,164 filtered; includes query preservation, duplicate-name selection, recovery refusal and trace inference. Existing core workflows: 28 passed, zero failed/ignored/filtered.
|
||||
- Strict Clippy: `cargo clippy --locked --offline --workspace --all-targets -- -D warnings` passed on `acbfb6c`. All successful test/lint input bytes match its 710 recorded Git blobs.
|
||||
- Initial `cargo fmt --all -- --check` found only the inherited tuple layout in `diagram/focus.rs`. Commit `d46854c` fixes those line breaks; the repeated format check passed with empty output. Tests/lint above were not rerun on this formatting-only commit.
|
||||
- Windows workspace/binaries build passed on `d46854c`, with the same 710 unchanged inputs as the final format check. GUI: 117,737,472 bytes, SHA256 `6d3b0996bb153ab55c21672feec1e7303eb6c59eaad01f8dd8aa09609e08086c`. This is a development build, not a packaged release.
|
||||
|
||||
Reproduction commands from the repository root with the [documented Windows toolchain/runtime](../README.md) on PATH (`CARGO_BUILD_JOBS=1`, `CARGO_INCREMENTAL=0` for this small disk):
|
||||
|
||||
```text
|
||||
cargo test --locked --offline -p oa-core --test transition_lifecycle --test transition_counterpart_compatibility -- --nocapture
|
||||
cargo test --locked --offline -p oa-core --test workflows -- --nocapture
|
||||
cargo test --locked --offline -p oa-desktop --bin arcadia-studio workflow:: -- --nocapture
|
||||
cargo clippy --locked --offline --workspace --all-targets -- -D warnings
|
||||
cargo fmt --all -- --check
|
||||
cargo build --locked --offline --workspace --bins
|
||||
```
|
||||
|
||||
See [closed Cargo evidence](experiments/transition-lifecycle-20260913/README.md) for source inventories, raw results, hashes and an offline verifier. Its initial failures remain separate from corrected runs. The parent independently ran the reviewed verifier against both working and exact staged package bytes.
|
||||
|
||||
## Native picker observation
|
||||
|
||||
The [native comparison package](experiments/transition-picker-native-20260913/README.md) retains all three launch attempts, original frames, copied teaching inputs, both build receipts and the independent frame review. It links the separate build/source evidence. The capture-helper source was retained from the earlier session but was not pinned at launch; frames establish recorded states, not independent action/PID attestation.
|
||||
|
||||
The corrected GUI trial ran 2026-09-13 15:22:22–15:27:13 UTC on `d46854c`. It reopened the copied teaching model from Recent models, selected **Assess pressure alarm**, and used **Create System counterpart…** to open the ordinary transition dialog. All 23 original state captures are retained. The copied files and executable remained byte-identical; the process exited zero with empty stdout/stderr. An earlier launch without the toolchain environment exited immediately with Windows code 3221225781 and empty logs; the same binary launched successfully after loading that environment. This is recorded as an invocation failure, not a passed launch or a reproduced in-app crash.
|
||||
|
||||
- Frames 06–07: two source mapping cards; Create plus six alphabetically sorted Function candidates, with full teaching-model aliases. Baseline frame 10 offered incompatible kinds; baseline 11 shows the resulting port-selection error.
|
||||
- Frames 10–12: uppercase `@SA_REPAIR` narrows the list to the matching function, retaining the current Assess mapping until the user explicitly selects Repair.
|
||||
- Frames 15 and 17: zero results retain Repair; two visible cards retain independent queries.
|
||||
- Frames 18–19: normal Name conflict requires review; Keep target enables Apply. Frame 22 shows that clearing search retains the selected target and Keep target decision.
|
||||
- Frame 23: Cancel dismisses the workflow and restores All changes saved. No reviewed transition was applied in this trial.
|
||||
|
||||
Independent read-only reviews found no blocking defect in the shared predicate, selection/query handling, recovery behavior, or lifecycle conservation evaluator. Two refinements were incorporated: empty-query feedback no longer asks to clear an already empty search, and query-isolation tests use two actual OA source cards. A separate review of original native frames confirmed the bounded observations above without a blocking visual regression. Remaining friction: disabled Apply can have its required field-review explanation below the fold, requiring a scroll. Keyboard-only picker operation and broader transition-dialog feedback remain incomplete.
|
||||
|
||||
The native trial establishes this finite Windows selection/review/cancel workflow. It does not establish native endpoint deletion/recreation/relink, saving an applied transition, packaged launch, or whole-project equality from screenshots. Those lifecycle operations have the core evidence above; the broader C1 native acceptance and integration/release decision remain open.
|
||||
Reference in New Issue
Block a user