Record portable ordinary-text integration gate evidence
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# Ordinary-text union: subsequent gates
|
||||
|
||||
Closed automated-gates checkpoint. Preserve the separately published initial evidence package
|
||||
at `../ordinary-text-integration-20260913/`.
|
||||
|
||||
Run `python verify.py` with Python 3.10 or newer. Verification uses only these
|
||||
five files and the standard library: no archived code execution, extraction,
|
||||
network, Git, Cargo, binaries or original-machine paths. All outer text files
|
||||
are UTF-8 with LF before hashing. Raw ZIP contents retain original bytes.
|
||||
`files.json` pins the archive, manifest, verifier and README; the manifest pins
|
||||
each member and maps each capture to exact source inventory/archive objects.
|
||||
Only byte-identical objects are deduplicated, including ZIP timestamps.
|
||||
|
||||
| Capture | Outcome |
|
||||
| --- | --- |
|
||||
| desktop-list-1 | 1,185 actual listed test names |
|
||||
| core-2 | 537 passed, 0 failed, 1 ignored |
|
||||
| desktop-1 | 1,179 passed, 0 failed, 6 ignored |
|
||||
| clippy-1 | Failed items_after_test_module lint; raw logs retained |
|
||||
| clippy-2 | Failed unused SymbolEvent::Close lint; raw logs retained |
|
||||
| clippy-3 | Passed strict workspace/all-target lint |
|
||||
| desktop-affected-2 | 83 passed, 0 failed, 1 known ignored, 1,101 filtered |
|
||||
| windows-build-1 | Workspace binaries built successfully; 3 binary artifact receipts |
|
||||
|
||||
The full suites use the e624d5b9c4f848eff3fba2ed83f9decf959e14d8 input
|
||||
state. The final lint inputs include the reviewed four-file fix committed as
|
||||
f714a25bbcd435941404104ad0cbb0fea3b89149. That change moves test-only
|
||||
helpers, removes the unconstructed Close variant and its handler, and changes
|
||||
existing tests to send the captured HideDrawer event already used by production
|
||||
UI. `fullSuiteToFinalInputChanges` records the exact four file/digest pairs.
|
||||
Per-run source inventories are authoritative; receipt HEADs can predate dirty
|
||||
changes. Full-suite outcomes are scoped to their recorded inputs; they are not
|
||||
a full-suite rerun of the later fix. The final affected-test recheck uses the
|
||||
same 707 input hashes as clippy-3. Its 84 names equal the OR-filter selection
|
||||
from the prior 1,185-name listing: `source_symbols::tests`, `text_workspace::`,
|
||||
`views::tests`, `palette_union`. All 83 enabled selected tests passed; the
|
||||
known ignored case is the source-symbol 100-module performance probe. This
|
||||
check introduces no test names and leaves 1,101 previous tests unexecuted on
|
||||
the final source state.
|
||||
The final Windows build uses those same 707 input hashes. Its three binary
|
||||
artifact records are preserved; the binaries themselves are not in this package.
|
||||
|
||||
Verification checks archive membership/hashes, nested source manifests and all
|
||||
707 inputs including 71 vendored iced_widget files, receipt relationships,
|
||||
helper identity, commands, outcomes, exact test summary rows, and artifact
|
||||
receipt records. It independently recomputes actual desktop names/outcomes,
|
||||
listing/execution equality, all 150 required matches (144 passed, 6 ignored),
|
||||
removed/retained names, and 24 original checklist Git blob bindings from archived
|
||||
source bytes. It checks the full-suite-to-final four-file input delta. The
|
||||
checklist's original pending-listing wording is preserved as raw historical
|
||||
input; desktop-admission.json records the completed admission.
|
||||
|
||||
`final-input-commit-readback.json` is a secondary parent-produced summary of
|
||||
comparison between all 707 final lint inputs and f714a25 committed blobs. Its
|
||||
helper and Git stream were not archived. Verification checks its relationship
|
||||
to the captured input manifest; it does not independently reproduce the Git
|
||||
comparison or authenticate that commit.
|
||||
|
||||
Integrity and internal consistency do not establish independent reproduction or
|
||||
authenticated provenance. Expected summary rows are frozen from raw logs.
|
||||
Ignored probes did not execute. Test membership/pass outcomes do not establish
|
||||
complete requirement coverage or native GUI acceptance. Compiler artifact hashes
|
||||
are retained as observations; binaries are intentionally absent and cannot be
|
||||
verified here. Source archives are not a hermetic compiler/dependency bundle.
|
||||
This package makes no native interaction, release publication or packaged-build
|
||||
claim. No credentials, dependency caches or whole user profile are included.
|
||||
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"evidence.zip": {
|
||||
"bytes": 8624040,
|
||||
"sha256": "b0da6611dd86e83c8f779c025786e473834298f9b9990b19a76b250b61137780"
|
||||
},
|
||||
"manifest.json": {
|
||||
"bytes": 19056,
|
||||
"sha256": "752d4c8e703cdbac361f959716a8a752096280727f9f0c966854d479aa68750d"
|
||||
},
|
||||
"verify.py": {
|
||||
"bytes": 12815,
|
||||
"sha256": "5157b5cadf38e59bd59693fe1d14235d2007788bb6c8bd9cbac938cb048b14f4"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 4177,
|
||||
"sha256": "9bfafd6506d1eb322e6efb8070a1599766d6d09532a678251a8b2414387edc6e"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,819 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"fullSuiteInputsCommit": "e624d5b9c4f848eff3fba2ed83f9decf959e14d8",
|
||||
"reviewedFixCommit": "f714a25bbcd435941404104ad0cbb0fea3b89149",
|
||||
"runs": {
|
||||
"desktop-list-1": {
|
||||
"kind": "cargo",
|
||||
"inputs": "inputs/bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48.json",
|
||||
"archive": "inputs/86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1.zip",
|
||||
"command": [
|
||||
"cargo",
|
||||
"test",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--bin",
|
||||
"arcadia-studio",
|
||||
"--message-format=json",
|
||||
"--",
|
||||
"--list"
|
||||
],
|
||||
"head": "e624d5b9c4f848eff3fba2ed83f9decf959e14d8",
|
||||
"exitCode": 0,
|
||||
"inputCount": 707,
|
||||
"testRows": [],
|
||||
"testTotals": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"core-2": {
|
||||
"kind": "cargo",
|
||||
"inputs": "inputs/bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48.json",
|
||||
"archive": "inputs/86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1.zip",
|
||||
"command": [
|
||||
"cargo",
|
||||
"test",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"-p",
|
||||
"oa-core",
|
||||
"--no-fail-fast",
|
||||
"--message-format=json",
|
||||
"--",
|
||||
"--nocapture"
|
||||
],
|
||||
"head": "cb941367d7748f7bfe7dda53641d395ad60a499f",
|
||||
"exitCode": 0,
|
||||
"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
|
||||
],
|
||||
[
|
||||
4,
|
||||
0,
|
||||
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": [
|
||||
537,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"desktop-1": {
|
||||
"kind": "cargo",
|
||||
"inputs": "inputs/bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48.json",
|
||||
"archive": "inputs/86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1.zip",
|
||||
"command": [
|
||||
"cargo",
|
||||
"test",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--bin",
|
||||
"arcadia-studio",
|
||||
"--no-fail-fast",
|
||||
"--message-format=json",
|
||||
"--",
|
||||
"--nocapture"
|
||||
],
|
||||
"head": "cb941367d7748f7bfe7dda53641d395ad60a499f",
|
||||
"exitCode": 0,
|
||||
"inputCount": 707,
|
||||
"testRows": [
|
||||
[
|
||||
1179,
|
||||
0,
|
||||
6,
|
||||
0,
|
||||
0
|
||||
]
|
||||
],
|
||||
"testTotals": [
|
||||
1179,
|
||||
0,
|
||||
6,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"clippy-1": {
|
||||
"kind": "cargo",
|
||||
"inputs": "inputs/bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48.json",
|
||||
"archive": "inputs/86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1.zip",
|
||||
"command": [
|
||||
"cargo",
|
||||
"clippy",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"--workspace",
|
||||
"--all-targets",
|
||||
"--message-format=json",
|
||||
"--",
|
||||
"-D",
|
||||
"warnings"
|
||||
],
|
||||
"head": "cb941367d7748f7bfe7dda53641d395ad60a499f",
|
||||
"exitCode": 101,
|
||||
"inputCount": 707,
|
||||
"testRows": [],
|
||||
"testTotals": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"clippy-2": {
|
||||
"kind": "cargo",
|
||||
"inputs": "inputs/6b2c2925c732b79150b1d3c2f9dc215f9221b89796bb1d8668d3ecc138095f82.json",
|
||||
"archive": "inputs/c5080fa78cb5cac2c6bdbf53f00d9d19313fa08de351153b9c5babd3a55b2f7d.zip",
|
||||
"command": [
|
||||
"cargo",
|
||||
"clippy",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"--workspace",
|
||||
"--all-targets",
|
||||
"--message-format=json",
|
||||
"--",
|
||||
"-D",
|
||||
"warnings"
|
||||
],
|
||||
"head": "cb941367d7748f7bfe7dda53641d395ad60a499f",
|
||||
"exitCode": 101,
|
||||
"inputCount": 707,
|
||||
"testRows": [],
|
||||
"testTotals": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"clippy-3": {
|
||||
"kind": "cargo",
|
||||
"inputs": "inputs/a36e2cbc29eb7a9217774464cda9da8aa1d3c39caae9b9aacd6cdb28df5bad95.json",
|
||||
"archive": "inputs/9346fba1be9bf4dd2225fe9965fd76a30429f086fd6a101f92d0963d3822f71c.zip",
|
||||
"command": [
|
||||
"cargo",
|
||||
"clippy",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"--workspace",
|
||||
"--all-targets",
|
||||
"--message-format=json",
|
||||
"--",
|
||||
"-D",
|
||||
"warnings"
|
||||
],
|
||||
"head": "cb941367d7748f7bfe7dda53641d395ad60a499f",
|
||||
"exitCode": 0,
|
||||
"inputCount": 707,
|
||||
"testRows": [],
|
||||
"testTotals": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"desktop-affected-2": {
|
||||
"kind": "cargo",
|
||||
"inputs": "inputs/a36e2cbc29eb7a9217774464cda9da8aa1d3c39caae9b9aacd6cdb28df5bad95.json",
|
||||
"archive": "inputs/9346fba1be9bf4dd2225fe9965fd76a30429f086fd6a101f92d0963d3822f71c.zip",
|
||||
"command": [
|
||||
"cargo",
|
||||
"test",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--bin",
|
||||
"arcadia-studio",
|
||||
"--message-format=json",
|
||||
"--",
|
||||
"source_symbols::tests",
|
||||
"text_workspace::",
|
||||
"views::tests",
|
||||
"palette_union",
|
||||
"--nocapture"
|
||||
],
|
||||
"head": "f714a25bbcd435941404104ad0cbb0fea3b89149",
|
||||
"exitCode": 0,
|
||||
"inputCount": 707,
|
||||
"testRows": [
|
||||
[
|
||||
83,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1101
|
||||
]
|
||||
],
|
||||
"testTotals": [
|
||||
83,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1101
|
||||
]
|
||||
},
|
||||
"windows-build-1": {
|
||||
"kind": "cargo",
|
||||
"inputs": "inputs/a36e2cbc29eb7a9217774464cda9da8aa1d3c39caae9b9aacd6cdb28df5bad95.json",
|
||||
"archive": "inputs/9346fba1be9bf4dd2225fe9965fd76a30429f086fd6a101f92d0963d3822f71c.zip",
|
||||
"command": [
|
||||
"cargo",
|
||||
"build",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"--workspace",
|
||||
"--bins",
|
||||
"--message-format=json"
|
||||
],
|
||||
"head": "f714a25bbcd435941404104ad0cbb0fea3b89149",
|
||||
"exitCode": 0,
|
||||
"inputCount": 707,
|
||||
"testRows": [],
|
||||
"testTotals": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
"members": {
|
||||
"helpers/desktop-admission.json": {
|
||||
"bytes": 289720,
|
||||
"sha256": "af2d601032f1f98217d841d181255dda5e123f48078f8d09815b498ee8975eb9"
|
||||
},
|
||||
"helpers/final-input-commit-readback.json": {
|
||||
"bytes": 260,
|
||||
"sha256": "9670f7400e358c5033b09ae4388cf577fb3db3f288a51d7ffe7b47c87bc377c0"
|
||||
},
|
||||
"helpers/gate-union.py": {
|
||||
"bytes": 3495,
|
||||
"sha256": "9cca2646b1bcf09961a9ad1a276d633d8e4296ff2c6f2f356f028afaf789f503"
|
||||
},
|
||||
"helpers/required-desktop-tests.json": {
|
||||
"bytes": 125261,
|
||||
"sha256": "6672e3f7ccfb92b7710310836af6933a8e58ef113353505ec4fc0c3d6908c136"
|
||||
},
|
||||
"inputs/6b2c2925c732b79150b1d3c2f9dc215f9221b89796bb1d8668d3ecc138095f82.json": {
|
||||
"bytes": 118403,
|
||||
"sha256": "6b2c2925c732b79150b1d3c2f9dc215f9221b89796bb1d8668d3ecc138095f82"
|
||||
},
|
||||
"inputs/86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1.zip": {
|
||||
"bytes": 2831327,
|
||||
"sha256": "86ac50e9cec8b39db91bbc98e5388e8c0f8466e6c217cf2f4eca5f1db087dde1"
|
||||
},
|
||||
"inputs/9346fba1be9bf4dd2225fe9965fd76a30429f086fd6a101f92d0963d3822f71c.zip": {
|
||||
"bytes": 2831326,
|
||||
"sha256": "9346fba1be9bf4dd2225fe9965fd76a30429f086fd6a101f92d0963d3822f71c"
|
||||
},
|
||||
"inputs/a36e2cbc29eb7a9217774464cda9da8aa1d3c39caae9b9aacd6cdb28df5bad95.json": {
|
||||
"bytes": 118403,
|
||||
"sha256": "a36e2cbc29eb7a9217774464cda9da8aa1d3c39caae9b9aacd6cdb28df5bad95"
|
||||
},
|
||||
"inputs/bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48.json": {
|
||||
"bytes": 118403,
|
||||
"sha256": "bbe8290d9cb11a7ee5dba250350451c5b7ec88069aa65f6be786a67922408c48"
|
||||
},
|
||||
"inputs/c5080fa78cb5cac2c6bdbf53f00d9d19313fa08de351153b9c5babd3a55b2f7d.zip": {
|
||||
"bytes": 2831320,
|
||||
"sha256": "c5080fa78cb5cac2c6bdbf53f00d9d19313fa08de351153b9c5babd3a55b2f7d"
|
||||
},
|
||||
"runs/clippy-1/process.json": {
|
||||
"bytes": 199,
|
||||
"sha256": "1af72ef6a92af65144a1faea8cae4f5c868799894bf539385b8f40912b0b50ae"
|
||||
},
|
||||
"runs/clippy-1/result.json": {
|
||||
"bytes": 1799,
|
||||
"sha256": "355929311a614bfd682e9dc47fa1afef98e14b22f76c856771564b9eb282af57"
|
||||
},
|
||||
"runs/clippy-1/started.json": {
|
||||
"bytes": 1400,
|
||||
"sha256": "4671c110e5e26a34e48470b0002322fc450b3844ee849f90ae6523091528ece1"
|
||||
},
|
||||
"runs/clippy-1/stderr.log": {
|
||||
"bytes": 1368,
|
||||
"sha256": "741e0cd2a2418cdb748703cf02cc72064e5b88b123a6fdacb5c6f87a2a6959c6"
|
||||
},
|
||||
"runs/clippy-1/stdout.log": {
|
||||
"bytes": 272957,
|
||||
"sha256": "37c21ea32cba74fbb54bc9e9f962fc7dfd5c018ac7f3750c2ae905e7cb51a542"
|
||||
},
|
||||
"runs/clippy-2/process.json": {
|
||||
"bytes": 199,
|
||||
"sha256": "6d11bf41b9461e19f6a06b64841ef1fa30c5129de4a4dad215866fc14c8f29d1"
|
||||
},
|
||||
"runs/clippy-2/result.json": {
|
||||
"bytes": 1797,
|
||||
"sha256": "0583fa653d2b2be928250b1845d2eec36886a5ea1dc12013ea853b68a79fe4be"
|
||||
},
|
||||
"runs/clippy-2/started.json": {
|
||||
"bytes": 1400,
|
||||
"sha256": "9d290135f4125ac119601b2704f1ac9b03ec5800a80624155ead21a35e7a4ec6"
|
||||
},
|
||||
"runs/clippy-2/stderr.log": {
|
||||
"bytes": 155,
|
||||
"sha256": "93a6965e0904eb30abe0657f4a9c30b5ba9e148c9d5274b3c3fb5e78d898c562"
|
||||
},
|
||||
"runs/clippy-2/stdout.log": {
|
||||
"bytes": 270250,
|
||||
"sha256": "bdc2338aab9fc18fb4e29fbb9e9192ccf9b67e1e9fb2cca828ec50acc90c1437"
|
||||
},
|
||||
"runs/clippy-3/process.json": {
|
||||
"bytes": 199,
|
||||
"sha256": "0d3a92e71ae9b33b703479a54fd1ca2491b67c1374b1a1e259816eebea9bb3b0"
|
||||
},
|
||||
"runs/clippy-3/result.json": {
|
||||
"bytes": 1796,
|
||||
"sha256": "cf49e16fa5cbecacf24edbf054036b1190a02771c61f1178c12c6f3d7d9477b0"
|
||||
},
|
||||
"runs/clippy-3/started.json": {
|
||||
"bytes": 1400,
|
||||
"sha256": "5499895565380e2efb1ccf6a9acc825318dfe09135815adf9512bf50530524a5"
|
||||
},
|
||||
"runs/clippy-3/stderr.log": {
|
||||
"bytes": 325,
|
||||
"sha256": "d2811192fb769c1a0f2e4258dd31c76f6a475e43bc6214e49db7c0757e7dad00"
|
||||
},
|
||||
"runs/clippy-3/stdout.log": {
|
||||
"bytes": 307989,
|
||||
"sha256": "319cad11af00c742a1436734b5daee273a112859c7775b06fada1948d54e93d6"
|
||||
},
|
||||
"runs/core-2/process.json": {
|
||||
"bytes": 197,
|
||||
"sha256": "50d3c62701417b7cf49de72139a71d5b26ede0ebec36eac6ecc254cf45f1594a"
|
||||
},
|
||||
"runs/core-2/result.json": {
|
||||
"bytes": 67027,
|
||||
"sha256": "2eb69042c0c6eecb89b11e739b9598005b8a26479564d299275817310011b5bb"
|
||||
},
|
||||
"runs/core-2/started.json": {
|
||||
"bytes": 1398,
|
||||
"sha256": "eadc9d64a5fedc1bea614c2ccae4d19616e2f7b0538bc5e08e84e9ee92f532e0"
|
||||
},
|
||||
"runs/core-2/stderr.log": {
|
||||
"bytes": 8930,
|
||||
"sha256": "0d5a5d2a4e64bd38c89fffafd8089de7b74a52f1dbbccb8cc59dae640bebba3b"
|
||||
},
|
||||
"runs/core-2/stdout.log": {
|
||||
"bytes": 131042,
|
||||
"sha256": "4185a25e52e52f3c6ee1dcd942a45e1a3ef57b3961ec7e7c4ca0aacc86967cfc"
|
||||
},
|
||||
"runs/desktop-1/process.json": {
|
||||
"bytes": 227,
|
||||
"sha256": "38ff4960fbcdf8282c8fc323a337b25f19b1ab424d7ed590917e6765f8a643c1"
|
||||
},
|
||||
"runs/desktop-1/result.json": {
|
||||
"bytes": 3154,
|
||||
"sha256": "f254ec40b83763f1398ab96fff16d96c9a0ff8a3113c2d16556c973eb5eaf93e"
|
||||
},
|
||||
"runs/desktop-1/started.json": {
|
||||
"bytes": 1438,
|
||||
"sha256": "ba43fbd949da1d6e453217c2f534d661b81dbe4b42fc1fe198c811234dc48aaf"
|
||||
},
|
||||
"runs/desktop-1/stderr.log": {
|
||||
"bytes": 552,
|
||||
"sha256": "c975782e7df7ce13b9f298d164fd4cc8e8161b6da7fd77c4607920fd8b3bf900"
|
||||
},
|
||||
"runs/desktop-1/stdout.log": {
|
||||
"bytes": 430091,
|
||||
"sha256": "1bfcc88362ef725cb3e4b9af7967d4bd18e65db3eccd342fe3264ea6ef95ec19"
|
||||
},
|
||||
"runs/desktop-affected-2/process.json": {
|
||||
"bytes": 287,
|
||||
"sha256": "b72fb9ac1c7400ef7af2ed80f26a1e13fc718342779c868e4cbad4a5152b131f"
|
||||
},
|
||||
"runs/desktop-affected-2/result.json": {
|
||||
"bytes": 3228,
|
||||
"sha256": "cfb3f9563f35977efe26d69d6a12040278f725bf09fb30ec812a984cab72dc02"
|
||||
},
|
||||
"runs/desktop-affected-2/started.json": {
|
||||
"bytes": 1513,
|
||||
"sha256": "cca30f43f1d79c10a996422f9a506a08fc91eba7fc15a02615105f7fed89a20a"
|
||||
},
|
||||
"runs/desktop-affected-2/stderr.log": {
|
||||
"bytes": 281,
|
||||
"sha256": "90504f37b7256fd61af78a6c636560b3646ec9bdb2bc954c6e5bc77f69f21306"
|
||||
},
|
||||
"runs/desktop-affected-2/stdout.log": {
|
||||
"bytes": 304036,
|
||||
"sha256": "adf50044a9f6947e7384dbd0193fe069276c2e78da1d6c45a55150d2b1defa26"
|
||||
},
|
||||
"runs/desktop-list-1/process.json": {
|
||||
"bytes": 204,
|
||||
"sha256": "139e8f5d11f45dd2b6d2151e0b0628d892f3ad228134032ab8c9bfb1989059db"
|
||||
},
|
||||
"runs/desktop-list-1/result.json": {
|
||||
"bytes": 3128,
|
||||
"sha256": "24eacbb644a6b82be7439e4f8895562356eb63485e82c30292b2951cb090d29d"
|
||||
},
|
||||
"runs/desktop-list-1/started.json": {
|
||||
"bytes": 1410,
|
||||
"sha256": "33adc56c5fad5bd53dd425f5c6ccf8faf550bd382867b848d04ebaafcb3d5c66"
|
||||
},
|
||||
"runs/desktop-list-1/stderr.log": {
|
||||
"bytes": 1427,
|
||||
"sha256": "97885faf304979ca43898f88d3ca7118100fd1c2358f9d4729984f7369788704"
|
||||
},
|
||||
"runs/desktop-list-1/stdout.log": {
|
||||
"bytes": 421428,
|
||||
"sha256": "32f0025d9205288e92c4031dc1b53298b8e79f1ccb8ce990a40d7c3d66f4305f"
|
||||
},
|
||||
"runs/windows-build-1/process.json": {
|
||||
"bytes": 167,
|
||||
"sha256": "b400c1f8076bcddb583424fe34d155655a41d25b5ccf0db8af26bda6b9b2685e"
|
||||
},
|
||||
"runs/windows-build-1/result.json": {
|
||||
"bytes": 5532,
|
||||
"sha256": "5e9e227c66a4b71ade734b8ebeb12070b8a5c64a9a6cf9d8d0b6d70379d4ffc2"
|
||||
},
|
||||
"runs/windows-build-1/started.json": {
|
||||
"bytes": 1353,
|
||||
"sha256": "15c54be09a881e6860735395569b22a7a9114789a1f8276cf79bc6fb095c8163"
|
||||
},
|
||||
"runs/windows-build-1/stderr.log": {
|
||||
"bytes": 261,
|
||||
"sha256": "480dff999944c756fff581db0f3fac088717e0d73cae20af9a28829446df746f"
|
||||
},
|
||||
"runs/windows-build-1/stdout.log": {
|
||||
"bytes": 295092,
|
||||
"sha256": "5a824ca91877328acd332585b39194b27fd2cb167279b99c4c78a89bf13bd19b"
|
||||
}
|
||||
},
|
||||
"fullSuiteToFinalInputChanges": {
|
||||
"crates/oa-desktop/src/app/source_symbols.rs": {
|
||||
"before": {
|
||||
"bytes": 26476,
|
||||
"sha256": "230b2d19b0aeb767a311bdc0eddfd69986ebc5f65b8892382cd033a69f86cb2d"
|
||||
},
|
||||
"after": {
|
||||
"bytes": 26369,
|
||||
"sha256": "9dbcb70a7eaa0b2f7ec011da1fcc808ba1e53ec1c29a3c9a09cf7517e058c7b7"
|
||||
}
|
||||
},
|
||||
"crates/oa-desktop/src/app/source_symbols/tests.rs": {
|
||||
"before": {
|
||||
"bytes": 85389,
|
||||
"sha256": "0e3ae6861ded52e7d137736f4ffe6bf55a00291bf685d3bbe6141174210eee9c"
|
||||
},
|
||||
"after": {
|
||||
"bytes": 85506,
|
||||
"sha256": "aebd05f3fa9f1e9c2e744948d4478d9f267365d063f01f8b8f4e67560bc23f32"
|
||||
}
|
||||
},
|
||||
"crates/oa-desktop/src/source_navigation/controller.rs": {
|
||||
"before": {
|
||||
"bytes": 3691,
|
||||
"sha256": "2042d608a4e9698c614c0d308d02896983480087908ecc353369b424eca3d124"
|
||||
},
|
||||
"after": {
|
||||
"bytes": 3680,
|
||||
"sha256": "938b8264c2d5166bd979439723d6fbec34c4cc5ed7f872f58c2cb9ba06a4a93d"
|
||||
}
|
||||
},
|
||||
"crates/oa-desktop/src/views.rs": {
|
||||
"before": {
|
||||
"bytes": 58364,
|
||||
"sha256": "46bb9410567d47e3043723fc3b8c7342c04e85b1b4a4c06a84e8497757cc04dc"
|
||||
},
|
||||
"after": {
|
||||
"bytes": 58364,
|
||||
"sha256": "e74da124914a54a3b757eb4728a5093157f172cd7f5e90b7744e526e3ec3f8d2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
"""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'] == 707, 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'])
|
||||
admission(z, manifest)
|
||||
print('PASS:', len(manifest['runs']), 'closed captures;', len(manifest['members']), 'members;', len(checked), 'input manifest/archive pairs')
|
||||
print('Integrity and recorded outcomes only; no rerun, binary verification, or native GUI claim.')
|
||||
|
||||
def admission(z, manifest):
|
||||
def obj(p): return json.loads(z.read(p))
|
||||
report = obj('helpers/desktop-admission.json')
|
||||
checklist = obj('helpers/required-desktop-tests.json')
|
||||
require(report['status'] == 'PASS', 'admission status')
|
||||
require({k:report['checklist'][k] for k in ('bytes','sha256')} == digest(z.read('helpers/required-desktop-tests.json')), 'checklist receipt')
|
||||
require(report['checklist']['sourceCommit'] == checklist['sourceCommit'], 'checklist source pin')
|
||||
for run, receipt in report['runs'].items():
|
||||
result = obj('runs/'+run+'/result.json')
|
||||
for field in ('head','command','exitCode','inputsUnchanged','inputCount'):
|
||||
require(receipt[field] == result[field], 'admission run relationship '+field)
|
||||
require(receipt['inputManifest'] == result['inputs'] and receipt['stdout'] == result['stdout'], 'admission inputs/log')
|
||||
require(receipt['resultReceipt'] == digest(z.read('runs/'+run+'/result.json')), 'admission result hash')
|
||||
listing = z.read('runs/desktop-list-1/stdout.log').decode('utf-8')
|
||||
execution = z.read('runs/desktop-1/stdout.log').decode('utf-8')
|
||||
names = re.findall(r'^([A-Za-z0-9_:]+): test$', listing, re.M)
|
||||
outcomes = re.findall(r'^test ([A-Za-z0-9_:]+) \.\.\. (ok|FAILED|ignored)(?:, (.*))?$', execution, re.M)
|
||||
require(len(names) == len(set(names)) == 1185, 'listing names/count/uniqueness')
|
||||
require(len(outcomes) == len({r[0] for r in outcomes}) == 1185, 'execution names/count/uniqueness')
|
||||
require(set(names) == {r[0] for r in outcomes}, 'listing/execution set equality')
|
||||
actual = {n:(status, reason or None) for n,status,reason in outcomes}
|
||||
require(actual == {r['name']:(r['status'],r['reason']) for r in report['allActualNamesAndOutcomes']}, 'admission raw outcomes')
|
||||
require(len(report['allActualNamesAndOutcomes']) == len(actual), 'admission duplicate outcomes')
|
||||
required = []
|
||||
for spec in checklist['required']:
|
||||
matches = [n for n in names if n.endswith(spec['match']['suffix'])]
|
||||
require(len(matches) == spec['match']['expectedOccurrences'] == 1, 'required unique match '+spec['name'])
|
||||
n = matches[0]
|
||||
require(actual[n][0] == ('ignored' if spec['expectedIgnored'] else 'ok'), 'required outcome '+n)
|
||||
required.append({'sourcePath':spec['sourcePath'],'expectedBasename':spec['name'],'actualName':n,'expectedIgnored':spec['expectedIgnored'],'status':actual[n][0],'reason':actual[n][1]})
|
||||
require(required == report['requiredOutcomes'], 'required admission relationships')
|
||||
removed=[]
|
||||
for spec in checklist['removedOrReplaced']:
|
||||
require(not any(n.endswith('::'+spec['name']) for n in names), 'removed test present')
|
||||
replacements=[n for replacement in spec.get('replacementNames',[]) for n in names if n.endswith('::'+replacement)]
|
||||
removed.append({'name':spec['name'],'absent':True,'replacementActualNames':replacements})
|
||||
require(removed == report['removedOrReplaced'], 'removed admission relationship')
|
||||
retained=[]
|
||||
for spec in checklist['duplicateDeparture']:
|
||||
require(actual[spec['requiredFullName']][0] == 'ok' and spec['removedFullName'] not in names, 'retained duplicate admission')
|
||||
require(sum(n.endswith('::'+spec['name']) for n in names) == spec['expectedTotalOccurrences'] == 1, 'retained duplicate count')
|
||||
retained.append({'name':spec['name'],'retainedName':spec['requiredFullName'],'retainedStatus':'ok','removedParentNameAbsent':True})
|
||||
require(retained == report['retainedDepartureCases'], 'retained admission relationship')
|
||||
before = obj(manifest['runs']['desktop-1']['inputs'])
|
||||
require(before == obj(manifest['runs']['desktop-list-1']['inputs']), 'listing/execution source equality')
|
||||
require(before == obj(manifest['runs']['core-2']['inputs']), 'core/desktop full-suite source equality')
|
||||
with zipfile.ZipFile(io.BytesIO(z.read(manifest['runs']['desktop-1']['archive']))) as source:
|
||||
bindings=[]
|
||||
for spec in checklist['sourceBindings']:
|
||||
b=source.read(spec['path'])
|
||||
blob=hashlib.sha1(b'blob '+str(len(b)).encode()+b'\0'+b).hexdigest()
|
||||
require(blob == spec['gitBlob'], 'original checklist source blob '+spec['path'])
|
||||
bindings.append({**spec,'capturedAndCurrentDigest':digest(b),'matchesOriginalChecklistBlob':True})
|
||||
require(bindings == report['sourceBindings'], 'source binding admission')
|
||||
summary={'listed':len(names),'executed':len(actual),'exactNameSetEquality':True,'duplicateListedNames':0,'duplicateExecutedNames':0,
|
||||
'passed':sum(v[0]=='ok' for v in actual.values()),'failed':sum(v[0]=='FAILED' for v in actual.values()),'ignored':sum(v[0]=='ignored' for v in actual.values()),
|
||||
'required':len(required),'requiredPassed':sum(r['status']=='ok' for r in required),'requiredIgnored':sum(r['status']=='ignored' for r in required),
|
||||
'removedNamesAbsent':len(checklist['removedOrReplaced']),'retainedDuplicateCasesPassExactlyOnce':len(checklist['duplicateDeparture']),
|
||||
'originalChecklistSourceFilesVerified':len(checklist['sourceBindings']),'listingAndExecutionInputManifestsEqual':True}
|
||||
require(summary == report['summary'], 'admission summary')
|
||||
after = obj(manifest['runs']['clippy-3']['inputs'])
|
||||
changed={p:{'before':before.get(p),'after':after.get(p)} for p in sorted(set(before)|set(after)) if before.get(p)!=after.get(p)}
|
||||
require(changed == manifest['fullSuiteToFinalInputChanges'] and len(changed)==4, 'four-file source delta')
|
||||
require(set(changed) == {'crates/oa-desktop/src/source_navigation/controller.rs','crates/oa-desktop/src/app/source_symbols.rs','crates/oa-desktop/src/app/source_symbols/tests.rs','crates/oa-desktop/src/views.rs'}, 'reviewed four-file scope')
|
||||
readback=obj('helpers/final-input-commit-readback.json')
|
||||
require(readback['status']=='PASS' and readback['commit']==manifest['reviewedFixCommit'], 'secondary readback summary')
|
||||
require(readback['inputCount']==len(after) and readback['inputManifestSha256']==digest(z.read(manifest['runs']['clippy-3']['inputs']))['sha256'], 'secondary readback input relationship')
|
||||
for run in ('desktop-affected-2','windows-build-1'):
|
||||
if run in manifest['runs']:
|
||||
require(obj(manifest['runs'][run]['inputs']) == after, run+': final source equality')
|
||||
if 'windows-build-1' in manifest['runs']:
|
||||
result=obj('runs/windows-build-1/result.json')
|
||||
require(result['exitCode']==0 and len(result['artifacts'])==3, 'final build outcome/artifacts')
|
||||
require({a['cargo']['target']['name'] for a in result['artifacts']}=={'arcadia','arcadia-server','arcadia-studio'}, 'final build target membership')
|
||||
if 'desktop-affected-2' in manifest['runs']:
|
||||
spec=manifest['runs']['desktop-affected-2']
|
||||
args=spec['command'][spec['command'].index('--')+1:]
|
||||
filters=[arg for arg in args if not arg.startswith('--')]
|
||||
require(filters==['source_symbols::tests','text_workspace::','views::tests','palette_union'], 'affected OR filters')
|
||||
selected={n for n in names if any(f in n for f in filters)}
|
||||
log=z.read('runs/desktop-affected-2/stdout.log').decode('utf-8')
|
||||
affected=re.findall(r'^test ([A-Za-z0-9_:]+) \.\.\. (ok|FAILED|ignored)(?:, (.*))?$',log,re.M)
|
||||
require(len(affected)==len({r[0] for r in affected})==len(selected)==84, 'affected count/unique names')
|
||||
require({n for n,s,r in affected}==selected, 'affected exact OR-filter selection from prior listing')
|
||||
require(sum(s=='ok' for n,s,r in affected)==83 and sum(s=='FAILED' for n,s,r in affected)==0, 'affected enabled passes')
|
||||
require([n for n,s,r in affected if s=='ignored']==['app::source_symbols::tests::source_symbols_100_modules_1000_definitions_10000_uses'], 'affected known ignored probe')
|
||||
require(spec['testTotals']==[83,0,1,0,len(names)-len(selected)], 'affected summary and filtered count')
|
||||
print('Affected recheck: exact prior-list OR selection; 83 passed, 1 known ignored, 1101 filtered')
|
||||
print('Desktop admission:', summary['passed'], 'passed,', summary['ignored'], 'ignored;',len(required),'required; four final changed input files')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -101,3 +101,45 @@ 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.
|
||||
|
||||
## Subsequent combined checks and lint repair
|
||||
|
||||
The final fixture/documentation state completed the full core suite: **537 passed,
|
||||
zero failed, one existing opt-in probe ignored**. Desktop listing and execution
|
||||
have exactly the same 1,185 unique names: **1,179 passed, zero failed, six existing
|
||||
opt-in probes ignored**. Independent admission checked all 144 enabled critical
|
||||
checklist cases, all six expected ignored cases and their reasons, five replaced
|
||||
names absent, four retained departure cases present exactly once, and all 24
|
||||
checklist source-file bindings. These runs use the same 707 input bytes as the
|
||||
successful consumers; full listing and execution are recorded separately.
|
||||
|
||||
Strict all-target Clippy then exposed two integration cleanups. The first was
|
||||
two unchanged test-only helper functions appearing after a test module in
|
||||
`views.rs`. The second was the unused internal `SymbolEvent::Close`: production
|
||||
already emits captured `TextWorkspace(Event::HideDrawer)` instead. Commit
|
||||
`f714a25bbcd435941404104ad0cbb0fea3b89149` moves the helpers before the test module,
|
||||
removes the obsolete event/handler, and switches four existing test sites to the
|
||||
actual UI close message without weakening their assertions. Current close tests
|
||||
therefore exercise document/session/visit authority and the presentation boundary;
|
||||
Query/Back/Choose continue to test source-file authority. Independent review
|
||||
accepted both changes. No production sender used the removed event.
|
||||
|
||||
Strict `cargo clippy --locked --offline --workspace --all-targets -- -D warnings`
|
||||
now passes. Its captured HEAD was `cb94136` plus those four files, with all 707
|
||||
inputs unchanged; exact Git-blob comparison binds those inputs to `f714a25`.
|
||||
The earlier complete suites remain scoped to the preceding input state.
|
||||
Affected desktop execution on `f714a25` passed: **83 passed, zero failed, one
|
||||
existing manual source-navigation performance probe ignored**, with 1,101 cases
|
||||
outside the selected scope. The filters cover source-symbol tests, Text workspace
|
||||
tests, surrounding view tests and the palette/drawer integration cases. The
|
||||
updated close assertions and both recovery-warning regressions passed. The
|
||||
matching Windows GUI, CLI and server then built successfully from `f714a25` with
|
||||
the same final inputs. Native acceptance remains pending at this checkpoint.
|
||||
|
||||
[The subsequent gate package](experiments/ordinary-text-gates-20260913/README.md)
|
||||
preserves these eight closed gates, both failed lint attempts, complete listing
|
||||
admission, the exact affected-test selection, and the three build artifact
|
||||
receipts. Its 8,624,040-byte ZIP has SHA-256
|
||||
`b0da6611dd86e83c8f779c025786e473834298f9b9990b19a76b250b61137780`.
|
||||
Independent review verified all 50 stored members against raw captures, source
|
||||
relationships, the safe read-only verifier, and prospective Git-clean outer bytes.
|
||||
|
||||
Reference in New Issue
Block a user