Final current-head RC proof and fresh package hashes
Summary¶
Run and record the final RC proof on the selected reviewed main commit after
all RC-blocking items are closed or explicitly accepted. This item owns the
fresh command evidence, package hashes, and final tag-readiness record for
emulebb-v0.7.3-rc.1.
Current Proof¶
Final live proof and package refresh resumed by operator direction on
2026-05-17. Run and record fresh evidence on the selected reviewed main
heads. Do not create Git tags until the operator gives a separate tagging
instruction after proof and package evidence are complete.
The release backlog is narrowed to this item. CI-038 is Done with a
current-head ui-resource-depth pass for all 43 release languages. CI-035
stays Open because the quick RC proof gates, full overnight proof set, and
final package hash record are incomplete.
Final package evidence now includes the package-local SPDX 2.3 JSON SBOMs and
the release-root SBOM sidecars written next to each ZIP and manifest.
2026-05-17 Release Freeze and Test Hold¶
The operator froze RC 0.7.3 and paused eMule test execution plus
test-harness edits. This checkpoint is documentation-only; it does not add final
proof evidence and does not close any acceptance row.
Known non-final proof state at the time of the hold:
CI-038is now superseded by the 2026-05-23 current-headui-resource-depthpass recorded below.- The latest observed fast certification artifact failed in a live/UI lane.
- The latest observed overnight certification artifact was not final release evidence.
- Existing x64, ARM64, and optional aMuTorrent x64 package hashes remain non-final because package evidence, including SBOM hashes, must be regenerated from the selected heads after proof succeeds.
No feature, refactor, UI polish, warning-debt, dependency refresh, or roadmap
work may enter RC 0.7.3 unless a current release gate exposes a direct
blocker and the promotion is recorded explicitly.
2026-05-14 Closeout Prep Audit¶
Release closeout prep was performed without running live E2E, regenerating packages, or creating tags. Current repo heads at the audit point:
- App
main:201d2ad - Build orchestration
main:4a8bf07 - Build tests
main:b5e0735 - Tooling docs
main:ce35476
Documentation hygiene:
- The completed qBittorrent-style keyboard/menu slice is now tracked as
historical
FEAT-057. - Active
FEAT-056remains reserved for post-0.7.3release proof automation and operator evidence UX. - The already-pushed implementation commit messages that mention
FEAT-056are left intact as historical commit metadata.
Recent live-report audit:
repos\emulebb-build-tests\reports\live-e2e-suite\20260513-204910-emulebb-main-releasepassedrest-api,amutorrent-browser-smoke,prowlarr-emulebb,radarr-emulebb, andsonarr-emulebbwith no inconclusive suites. This is useful controller-surface signal, but it predates current app head201d2adand is not final current-head proof.repos\emulebb-build-tests\reports\live-e2e-suite\20260514-115418-emulebb-main-releasepassed focusedshared-files-uionly. It is not full live release proof.repos\emulebb-build-tests\reports\live-e2e-suite\20260514-124016-emulebb-main-releasepassed focusedpreference-uionly. It is not full live release proof.repos\emulebb-build-tests\reports\live-e2e-suite\20260516-213444-emulebb-main-releasepassed the fullrelease-expandedweak-path profile on current heads with100/100required REST live download triggers. The aggregate recordedrest-cold-start-dump-stressas inconclusive because that extra cold-start lane found only40/150safe active-download candidates; all other children passed.
Package audit:
- Existing x64 and ARM64 package manifests were generated from app commit
805dda8, build commit24b5b04, build-tests commitb7477a3, and tooling commitdac7389. - Those packages remain rehearsal evidence only. Final x64 and ARM64 packages, manifests, SBOMs, and SHA-256 hashes must be regenerated from current release-ready heads after proof resumes.
2026-05-17 Non-UI Package Evidence¶
The operator requested the non-UI/package portion of release closeout while
holding UI testing. The following packages were regenerated and passed package
content verification, but this does not complete final proof because
ui-resource-depth, certification --profile fast, and the current quick
release proof gates were not run.
Selected package provenance recorded by the manifests:
- App
main:3ab2744 - Build orchestration
main:d9ce06f - Build tests
main:f314423 - Tooling docs
main:03d6d79 - aMuTorrent
main:b32efc5for the optional aMuTorrent controller package
Core x64 package:
- command:
python -m emule_workspace package-release --config Release --platform x64 - build summary:
workspaces\workspace\state\build-logs\20260517-135916\summary.json - package:
workspaces\workspace\state\release\emulebb-v0.7.3\emulebb-0.7.3-x64.zip - manifest:
workspaces\workspace\state\release\emulebb-v0.7.3\emulebb-0.7.3-x64.manifest.json - SHA-256:
4e8929cd1f1ce7f8c8ec27862a349a4fcc2037b7d48afa6f9ca7e663e76a87ca - package content check: 53 entries, 43 language DLLs
- package build warnings: 0
Core ARM64 package:
- command:
python -m emule_workspace package-release --config Release --platform ARM64 - build summary:
workspaces\workspace\state\build-logs\20260517-135931\summary.json - package:
workspaces\workspace\state\release\emulebb-v0.7.3\emulebb-0.7.3-arm64.zip - manifest:
workspaces\workspace\state\release\emulebb-v0.7.3\emulebb-0.7.3-arm64.manifest.json - SHA-256:
5c7712ae327a0f3cd49d68c6783e8bbe5431cc4ae8b29a484c1169a9d5d4c10c - package content check: 53 entries, 43 language DLLs
- package build warnings: 564
Optional aMuTorrent x64 controller package:
- command:
python -m emule_workspace package-amutorrent --config Release --platform x64 - package:
workspaces\workspace\state\release\emulebb-v0.7.3\emulebb-0.7.3-amutorrent-x64.zip - manifest:
workspaces\workspace\state\release\emulebb-v0.7.3\emulebb-0.7.3-amutorrent-x64.manifest.json - SHA-256:
1b4d2c74728c9752b335dd0e8dd4f62f5233c0137b5ca8f400c54d2020416117 - package content check: 6624 entries
Cleanliness:
python repos\emulebb-tooling\ci\check-clean-worktree.pypassed.python -m emule_workspace statusreported all managed repos clean.- The interrupted
ui-resource-depthprocess tree was stopped before package generation, and noemulebb.exe,ui-resource-depth, orresource-ui-smokeprocess remained afterward.
Acceptance Criteria¶
- [x]
python -m emule_workspace test certification --profile fastpasses on the selected release commit. - [ ] Quick release-campaign proof passes or records accepted external inconclusive conditions for live-network-only lanes.
- [x]
CI-038records a passed current-headui-resource-depthrelease-scope language/resource smoke. - [ ] x64 and ARM64 RC packages are regenerated from current release-ready heads.
- [ ] Optional aMuTorrent x64 controller package is regenerated from current clean provenance inputs.
- [ ] Package paths, SHA-256 hashes, app/build/build-tests/tooling commits, SBOM paths and hashes, app/build/build-tests/tooling commits, optional aMuTorrent commit, certification reports, and child report paths are recorded here and in the release checklist.
- [ ] Main app package manifests and per-file hashes confirm that legacy
template-based
eMule/webserverpayload is absent from RC assets. - [ ] The release checklist confirms the annotated tag target before the operator gives the separate tagging instruction.
Validation¶
Use RELEASE-0.7.3-CHECKLIST as the command source of truth.
2026-05-23 RC Identity And Language Gate Refresh¶
Release package tooling and the release campaign were aligned with the documented RC identity before final package proof:
- Build orchestration commit
5dd105bdefaultspackage-releaseandpackage-amutorrentto0.7.3-rc.1, acceptsMAJOR.MINOR.PATCH-rc.NandMAJOR.MINOR.PATCH-beta.Npackage labels, and compares only the baseMAJOR.MINOR.PATCHvalue against the appMOD_RELEASE_VERSION. - Build-tests commit
d63feb0updates the campaign package evidence paths torelease\emulebb-v0.7.3-rc.1\.... - Focused validation passed:
python -m pytest tests\test_release.py tests\test_cleanup.py tests\test_cli.py -qpython -m pytest tests\python\test_release_campaigns.py tests\python\test_release_coverage.py -qpython -m emule_workspace test release-campaign --campaign emulebb-0.7.3
CI-038 current-head proof passed:
- command:
python -m emule_workspace test live-e2e --profile ui-resource-depth --fail-fast - app commit:
ae562c1 - build commit:
5dd105b - build-tests commit:
d63feb0 - tooling commit:
88877cb - aggregate:
workspaces\workspace\state\test-reports\live-e2e-suite\20260523T192728Z-emulebb-main-release-8228\live-e2e-suite-result.json - resource smoke:
workspaces\workspace\state\test-reports\resource-ui-smoke\20260523T192729Z-emulebb-main-release-11900\resource-ui-smoke-summary.json - Preferences companion:
workspaces\workspace\state\test-reports\preference-ui-e2e\20260523T193413Z-emulebb-main-release-15452\preference-ui-e2e-summary.json - result: aggregate
passed;resource-ui-smokepassedwith 43 selected release languages, no missing language DLLs, isolated profile launches, representative view-command dispatch, and Preferences tree verification; Preferences companionpassed.
Fast certification was attempted after the CI-038 pass:
- command:
python -m emule_workspace test certification --profile fast - certification report:
workspaces\workspace\state\certification\20260523T193804Z-fast\certification-result.json - result:
failedafter 1123.698 seconds atlive-fast-ui-rest - passed before the live failure: validate; app builds for Debug x64, Release x64, and Release ARM64; test builds for Debug x64 and Release x64; Python harness; native Debug x64 tests; native Release x64 tests.
- failing child report:
workspaces\workspace\state\test-reports\rest-api-smoke\20260523T195610Z-emulebb-main-release-5332\rest-api-smoke-result.json - child status:
failedatnat_backend_order; HTTPS PEM readiness and HTTPS certificate validation both passed. - external blocker observed: the run correctly requested
p2p_bind_interface_name=hide.me, but the local adapter inventory did not include an availablehide.meinterface, so eMuleBB disabled networking for that session.
Build-tests commit 3e8bd02 now classifies this specific startup log message
as LiveNetworkUnavailableError instead of waiting for a generic NAT backend
timeout. Focused validation passed:
python -m pytest tests\python\test_rest_api_smoke.py -qpassed with 112 tests.python -m emule_workspace test live-e2e --suite rest-api --fail-fast --skip-live-seed-refreshproduced an inconclusive REST child report atworkspaces\workspace\state\test-reports\rest-api-smoke\20260523T200230Z-emulebb-main-release-18976\rest-api-smoke-result.jsonwithLiveNetworkUnavailableErrorfor missinghide.me.
This failed attempt is superseded by the passed 2026-05-23 fast certification run below.
Fast certification passed after the hide.me interface was restored:
- command:
python -m emule_workspace test certification --profile fast - certification report:
workspaces\workspace\state\certification\20260523T202011Z-fast\certification-result.json - result:
passedin 1122.13 seconds - commits:
- app
main:ae562c1f0492 - build orchestration:
5dd105b51167 - build tests:
3e8bd0223bf0 - tooling docs:
ca3f99fb2845 - passed steps: validate; app builds for Debug x64, Release x64, and Release
ARM64; test builds for Debug x64 and Release x64; Python harness; native
Debug x64 tests; native Release x64 tests;
live-fast-ui-rest. - live aggregate:
workspaces\workspace\state\test-reports\live-e2e-suite\20260523T202122Z-emulebb-main-release-14020\live-e2e-suite-result.json - live children:
preference-ui,shared-files-ui,config-stability-ui,shared-hash-ui,startup-profile,shared-directories-rest, andrest-apiall passed. - REST child:
workspaces\workspace\state\test-reports\rest-api-smoke\20260523T203347Z-emulebb-main-release-6560\rest-api-smoke-result.json - local crash dumps: aggregate recorded
0local dump files.
This closes the fast certification acceptance row. Overnight certification, expanded live-wire proof, heavy/real-profile stress rows, package regeneration, SBOM/hash recording, and final clean-worktree proof remain open.
Stabilization Harness Hardening Before Proof Resume¶
Before final proof resumed, the emulebb-build-tests harness was hardened for the
next release-proof attempt:
b271cc5adds a focusedstabilization-stressaggregate profile and REST stress operation coverage accounting so scheduler starvation cannot pass as a green aggregate stress run.447c1b4keeps pre-crash manual dump evidence separate from crash-time dump channels inlocal-dumps-crash-smoke.4369407requires enabled REST leak churn to collect observable resource metrics before resource thresholds can pass.756457cenriches cold-start resource telemetry with CPU sample counts and high-CPU counters.a80e953records REST socket/TLS adversity and leak-churn settings in aggregate live E2E reports.550bcc9adds compact slowest-request diagnostics and API-key-safe failure samples for REST stress latency triage.69108b4requireslocal-dumps-crash-smoketo prove an access-violation exit, not just any process stop, before crash evidence can pass.4a8bf07exposes thestabilization-stressprofile through the supportedpython -m emule_workspace test live-e2ewrapper.60043bfrecords cold-start resource-monitor enable/start/stop state.61213efsummarizes WER LocalDumps by executable image so eMule dumps are distinguishable from diagnostic-tool dumps.d2a0751fails cold-start stress when enabled resource monitoring produces no samples or does not stop cleanly.cc6b952treats signed and unsigned Windows access-violation exit codes as equivalent crash evidence.a373ef8classifies REST stress response failures as status, kind, body, or native JSON mismatches instead of leaving generic/blank reasons.eb328f8records resource deltas for the REST stop/start-after-churn relaunch path.4a8c6c9lists inconclusive child suite names in aggregate live E2E summaries.28b7331splits REST stress retry recoveries from failures that still needed retries.
Non-live verification after these harness changes:
python -m emule_workspace test python --workspace-root ..\.. -qpassed with 417 tests.python -m emule_workspace validate --workspace-root ..\..passed.
These changes improve the next proof attempt but do not complete CI-035.
2026-05-16 Certification Matrix¶
The release proof flow was rationalized under CI-036. The supported command source of truth is now:
python -m emule_workspace test certification --profile fastpython -m emule_workspace test release-campaign --campaign emulebb-0.7.3
The quick release campaign composes the blocking UI, REST, live-network, Arr, aMuTorrent, stabilization, and crash-smoke lanes. The full overnight campaign tracks full certification, generated CPU-heavy stress, and real-profile monitoring as the long-form soak proof set.
This improves the next proof attempt but does not complete CI-035; fresh
certification reports and final package hashes still need to be generated on
the selected release-ready heads after proof resumes.
Partial Evidence Captured Before Pause¶
These commands are current-head evidence, but they are not a complete final proof:
- 2026-05-13:
python -m emule_workspace validatepassed. - 2026-05-13:
python -m emule_workspace build app --config Debug --platform x64passed. Summary:workspaces\workspace\state\build-logs\20260513-115827\summary.json. - 2026-05-13:
python -m emule_workspace build app --config Release --platform x64passed. Summary:workspaces\workspace\state\build-logs\20260513-115904\summary.json. - 2026-05-13:
python -m emule_workspace build app --config Release --platform ARM64passed. Summary:workspaces\workspace\state\build-logs\20260513-115913\summary.json. - 2026-05-13:
python -m emule_workspace build tests --config Debug --platform x64passed. Logs:workspaces\workspace\state\build-logs\20260513-115929. - 2026-05-13:
python -m emule_workspace build tests --config Release --platform x64passed. Logs:workspaces\workspace\state\build-logs\20260513-115940. - 2026-05-13:
python -m emule_workspace test all --config Debug --platform x64passed. - 2026-05-13:
python -m emule_workspace test all --config Release --platform x64passed. - 2026-05-13:
python -m emule_workspace test live-e2e --profile controller-surface --fail-faststopped at Radarr. REST and Prowlarr passed; Radarr app/network/setup checks completed, but Radarr returned HTTP 200 with zero eMuleBB release rows until timeout. Report:repos\emulebb-build-tests\reports\radarr-emulebb-live\20260513-120641-emulebb-main-release. - 2026-05-13:
python -m emule_workspace test live-e2e --config Release --platform x64was operator-aborted and is not release evidence.
Rehearsal Package Evidence¶
These packages were generated during CI-034 proof, before this docs update.
They prove package flow and provenance recording, but they are not final
CI-035 release hashes:
- x64 rehearsal SHA-256:
3f12e40a33fc02ef9f7b4e7858a7e450ef0524d26eabc72f05d28dc47b47079e - ARM64 rehearsal SHA-256:
5f4a3735a765a64cb0dea0a488d0ffd9e7d97ecf502d8859997c4e2cc26cb1c3
Final package hashes must be regenerated and recorded after final proof resumes.
2026-05-14 Closeout UX Polish Reset¶
The operator accepted one last small closeout polish slice under
FEAT-058. The app README now points beta
0.7.3 release source truth at reviewed main proof and no longer depends on
a broadband stabilization branch.
This resets the final candidate heads for proof purposes. The earlier live reports and package manifests remain supporting or rehearsal evidence only; final proof, x64/ARM64 packages, manifests, and SHA-256 hashes must be regenerated from the pushed heads after this polish lands.
Closeout audit report:
docs\history\release-0.7.3\audits\BETA-CLOSEOUT-UX-POLISH-2026-05-14.md.
2026-05-14 Tray Preference UI Reset¶
The operator accepted one additional beta UI polish slice under
FEAT-059. Preferences > Display now places
Always show tray icon next to Minimize to system tray, and the old Tweaks
tree copy was removed.
This resets the final candidate app head for proof purposes. Final proof, x64/ARM64 packages, manifests, and SHA-256 hashes must be regenerated from the pushed heads after this polish lands.
2026-05-14 Preference Inventory Reset¶
The operator accepted preference persistence hardening under
FEAT-060. The app now centralizes native REST
mutable preference metadata, and emulebb-build-tests now guards the
Preferences.cpp CIni key inventory with Python drift tests.
This resets the final candidate app and build-tests heads for proof purposes. Final proof, x64/ARM64 packages, manifests, and SHA-256 hashes must be regenerated from the pushed heads after this hardening lands.
Audit report:
docs\history\release-0.7.3\audits\BETA-PREFERENCE-INVENTORY-2026-05-14.md.
2026-05-14 Preference Schema Reset¶
The operator accepted stronger preference schema validation under
FEAT-061. emulebb-build-tests now generates
and validates a section-qualified preference schema with REST and Preferences
UI source bindings.
This resets the final candidate build-tests head for proof purposes. Final proof, x64/ARM64 packages, manifests, and SHA-256 hashes must be regenerated from the pushed heads after this schema hardening lands.
Audit report:
docs\history\release-0.7.3\audits\BETA-PREFERENCE-SCHEMA-2026-05-14.md.