Publish packaged server restart and release asset evidence

This commit is contained in:
2026-09-24 15:02:07 -07:00
parent 206f3b9694
commit c82eca1eca
7 changed files with 4736 additions and 0 deletions
+1
View File
@@ -88,3 +88,4 @@ harness/prerelease37-windows-gates-20260924/attempts-8dd/** -text -whitespace
harness/prerelease37-windows-gates-20260924/state-picker-a9cd/** -text -whitespace
harness/prerelease37-windows-gates-20260924/final04-tests/** -text -whitespace
harness/prerelease37-windows-gates-20260924/final04-complete/** -text -whitespace
harness/prerelease37-windows-gates-20260924/package-server/** -text -whitespace
@@ -0,0 +1,3 @@
# Package and server restart evidence
Exact source `715036e132677dd2bc2fb37ed316d93dc9987aec`. Main package SHA-256 `5554e32533e3cb2c33fb4143a5a0902733d5a8d47577303cb2842d268e7bc76d` (34,168,661 bytes, 565 files) was verified against the extraction receipt; the package ZIP and binaries are not included. This evidence ZIP preserves package receipts/notices, extraction identities, the failed first server attempt, all 16 successful second-attempt requests/responses and stores, both server recipes/reviews, and supplemental converter-build evidence. Both owned servers were closed after acknowledged requests; restart reads retain exact source/model/resource/revision/ETag. This is neither GUI acceptance nor a claim of graceful shutdown/crash durability. The converter is preparation, not a GUI result. Full gates are separately published at `206f3b96`. manifest.json records every archived member SHA-256/CRC and independent ZIP readback. No commit or upload was performed by this collector.
@@ -0,0 +1,22 @@
{
"release_id": 7,
"draft": true,
"assets": [
{
"id": 25,
"name": "ArcadiaStudio-0.2.0-preview.integrated.20260924-x86_64-pc-windows-gnullvm.zip",
"url": "http://217.177.34.108:3000/attachments/75854b51-e09a-47af-b960-0f9efc37427e",
"bytes": 34168661,
"sha256": "5554e32533e3cb2c33fb4143a5a0902733d5a8d47577303cb2842d268e7bc76d",
"exact_local_bytes": true
},
{
"id": 26,
"name": "ArcadiaStudio-0.2.0-preview.integrated.20260924-x86_64-pc-windows-gnullvm.zip.sha256",
"url": "http://217.177.34.108:3000/attachments/22879a28-8055-4c5e-89ed-15eb60034938",
"bytes": 144,
"sha256": "41c7b1257660b66a44f27555e0e9613e7f6e4c0b119522347e3ccff54d60cea1",
"exact_local_bytes": true
}
]
}
@@ -0,0 +1,41 @@
from pathlib import Path
import hashlib
import importlib.util
import json
import urllib.request
ROOT = Path(__file__).resolve().parent.parent
script = ROOT / '.local/publication-ytr83r/gitea_publication.py'
spec = importlib.util.spec_from_file_location('publication', script)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
client = module.Client()
status, release = client.get('/repos/sorokin.oleg.edu/ARCADIA-Studio/releases/7')
assert status == 200 and release['draft'] and release['prerelease']
assert release['tag_name'] == 'v0.2.0-preview.integrated.20260924'
out = ROOT / '.local/prerelease-upload-readback-20260924-02'
out.mkdir(exist_ok=False)
rows = []
for aid in (25, 26):
entries = [a for a in release['assets'] if a['id'] == aid]
assert len(entries) == 1
asset = entries[0]
expected_uuids = {25: '75854b51-e09a-47af-b960-0f9efc37427e', 26: '22879a28-8055-4c5e-89ed-15eb60034938'}
assert asset['uuid'] == expected_uuids[aid]
url = 'http://217.177.34.108:3000/attachments/' + asset['uuid']
local = ROOT / '.local/prerelease-package-715036e-20260924' / asset['name']
expected = local.read_bytes()
request = urllib.request.Request(url, headers={'Authorization': 'token ' + client.token})
try:
with client.opener.open(request, timeout=60) as response:
assert response.status == 200
actual = response.read()
except Exception:
raise RuntimeError('Asset download failed; request details suppressed') from None
assert actual == expected and len(actual) == asset['size']
with (out / asset['name']).open('xb') as f:
f.write(actual)
rows.append(dict(id=aid, name=asset['name'], url=url, bytes=len(actual), sha256=hashlib.sha256(actual).hexdigest(), exact_local_bytes=True))
with (out/'receipt.json').open('x') as f:
json.dump(dict(release_id=7,draft=True,assets=rows),f,indent=2)
print(json.dumps(rows,indent=2))
@@ -0,0 +1,18 @@
# Package/server evidence acceptance review — 2026-09-24
**Ready for publication within its stated package/server scope; no findings.** Independently audited the assembled archive and collector, including actual response bodies and the immutable application ZIP. The collector was not executed. Audit commands only read completed evidence/package files; no server, compiler, build, target binary, or mutable GUI trial was accessed.
## Verified evidence
- **Archive integrity:** `package-server-715036e.zip` is 2,514,810 bytes, SHA-256 `cd303aebf1f87c92132ed5e981cca0aa3ce4c9688d275f6bd35e1e4b75f63996`. Independently read all **162 members**, checked exact unique ordered membership, every length/SHA-256/CRC against `manifest.json`, and ZIP CRC readback. Counts: converter 17, extraction 2, gate reference 4, package 9, package command 7, recipes 11, reviews 4, failed attempt 38, successful attempt 70. Archived collector bytes equal the current collector, SHA-256 `bc44f2cc568300f113ef4c8ad593440295f89b19bd630db1a467ef8afa21fd90`.
- **Actual package attribution:** independently verified the completed main ZIP, **34,168,661 bytes / 565 members**, SHA-256 `5554e32533e3cb2c33fb4143a5a0902733d5a8d47577303cb2842d268e7bc76d`. Every member's bytes/hash/CRC matches the archived extraction and package-member manifests; the internal `SHA256SUMS.txt` exactly covers all other files. Archived package metadata/notices/readmes equal the ZIP copies. GUI `2c03bd6c…`, server `6cebacc1…`, and runtime `aa282fa4…` equal the preserved final-04 identities. These are the selected individual-build artifacts, not the differing supplemental combined-build outputs. Package-command receipts report exit 0, unchanged exact canonical source maps, and no patch. Full source pin is `715036e132677dd2bc2fb37ed316d93dc9987aec`.
- **Substantive v2 server behavior:** independently compared all 16 archived request/response pairs and expected HTTP statuses. Readiness/health succeed, wrong bearer is rejected both before and after restart, initial private catalog is empty, and create/import use distinct resources. The imported complete source bundle equals the predeclared submitted schema-7 fixture. The fixed comment is the only update; accepted source equals that request, complete model stays equal, revision advances 1→2, ETag changes, and stale If-Match receives 412 `revision_conflict`. After relaunch both resources retain exact complete response bodies and ETags. Both archived stored resources' fields also equal their restart responses. No server error appears in the two logs; stderr contains the expected listening/store lines.
- **Independent expected input:** original→submitted fixture has identical file names/includes and exactly one UTF-8 byte change, offset 8, `5`→`7`. The submitted fixture equals the actual import request and returned source. The update is derived from that fixture, not a response. Preflight/postflight input maps match exactly. Both successful-attempt launches match their owned stop PIDs and record exited/not-already-exited outcomes.
- **Failed attempt retained:** all 38 v1 members remain, result `failed`, with `Import changed authored bundle` traceback. The request equals the recorded original fixture; returned bundle equals the v2 submitted fixture. The migration report is 5→7 with empty delta arrays. Thus the preserved failure agrees with the documented diagnosis; it is not retroactively counted as a pass. Its postflight inputs are unchanged and its owned child is recorded closed.
- **Supplemental helper provenance:** exact candidate source maps and frozen final-04 gate/environment references agree. Archived wrapper `e79c59f6…`, converter source `acbcc955…`, and gate runner match their context hashes; compiler/linker/runtime records are in the frozen environment. All three step results/log records match, each exits 0. The selected core rlib event equals the unique successful Cargo event; original/preserved rlib hashes agree. Library inventories are equal across direct compilation. Output identities are retained, including converter `c318ea38…`; excluded helper binaries are accurately declared. This proves the archived build provenance record, not a fresh runtime test of the omitted binaries.
## Scope and publication
The README/manifest correctly limit acceptance to package integrity and server restart after acknowledged writes. TerminateProcess/relaunch is recorded explicitly; no graceful shutdown, crash-durability, or GUI acceptance is claimed. The application ZIP and helper binaries are intentionally omitted from this evidence ZIP, with exact identities retained. Full gate evidence remains linked to the separate `206f3b96` publication; this audit did not re-publish or independently fetch that remote commit.
Audited external archive manifest SHA-256: `d0a6994c614db944e99d3cede751e53951d721c13368abf514ee633828462b30`. Archive location: `.local/behavior-anchor-plan-ytr83r-20260912/harness/prerelease37-windows-gates-20260924/package-server`. No required correction or further check is identified for this bounded evidence publication.
File diff suppressed because it is too large Load Diff