Skip to content

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-038 is now superseded by the 2026-05-23 current-head ui-resource-depth pass 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-056 remains reserved for post-0.7.3 release proof automation and operator evidence UX.
  • The already-pushed implementation commit messages that mention FEAT-056 are left intact as historical commit metadata.

Recent live-report audit:

  • repos\emulebb-build-tests\reports\live-e2e-suite\20260513-204910-emulebb-main-release passed rest-api, amutorrent-browser-smoke, prowlarr-emulebb, radarr-emulebb, and sonarr-emulebb with no inconclusive suites. This is useful controller-surface signal, but it predates current app head 201d2ad and is not final current-head proof.
  • repos\emulebb-build-tests\reports\live-e2e-suite\20260514-115418-emulebb-main-release passed focused shared-files-ui only. It is not full live release proof.
  • repos\emulebb-build-tests\reports\live-e2e-suite\20260514-124016-emulebb-main-release passed focused preference-ui only. It is not full live release proof.
  • repos\emulebb-build-tests\reports\live-e2e-suite\20260516-213444-emulebb-main-release passed the full release-expanded weak-path profile on current heads with 100/100 required REST live download triggers. The aggregate recorded rest-cold-start-dump-stress as inconclusive because that extra cold-start lane found only 40/150 safe active-download candidates; all other children passed.

Package audit:

  • Existing x64 and ARM64 package manifests were generated from app commit 805dda8, build commit 24b5b04, build-tests commit b7477a3, and tooling commit dac7389.
  • 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: b32efc5 for 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.py passed.
  • python -m emule_workspace status reported all managed repos clean.
  • The interrupted ui-resource-depth process tree was stopped before package generation, and no emulebb.exe, ui-resource-depth, or resource-ui-smoke process remained afterward.

Acceptance Criteria

  • [x] python -m emule_workspace test certification --profile fast passes on the selected release commit.
  • [ ] Quick release-campaign proof passes or records accepted external inconclusive conditions for live-network-only lanes.
  • [x] CI-038 records a passed current-head ui-resource-depth release-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/webserver payload 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 5dd105b defaults package-release and package-amutorrent to 0.7.3-rc.1, accepts MAJOR.MINOR.PATCH-rc.N and MAJOR.MINOR.PATCH-beta.N package labels, and compares only the base MAJOR.MINOR.PATCH value against the app MOD_RELEASE_VERSION.
  • Build-tests commit d63feb0 updates the campaign package evidence paths to release\emulebb-v0.7.3-rc.1\....
  • Focused validation passed:
  • python -m pytest tests\test_release.py tests\test_cleanup.py tests\test_cli.py -q
  • python -m pytest tests\python\test_release_campaigns.py tests\python\test_release_coverage.py -q
  • python -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-smoke passed with 43 selected release languages, no missing language DLLs, isolated profile launches, representative view-command dispatch, and Preferences tree verification; Preferences companion passed.

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: failed after 1123.698 seconds at live-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: failed at nat_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 available hide.me interface, 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 -q passed with 112 tests.
  • python -m emule_workspace test live-e2e --suite rest-api --fail-fast --skip-live-seed-refresh produced an inconclusive REST child report at workspaces\workspace\state\test-reports\rest-api-smoke\20260523T200230Z-emulebb-main-release-18976\rest-api-smoke-result.json with LiveNetworkUnavailableError for missing hide.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: passed in 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, and rest-api all 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 0 local 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:

  • b271cc5 adds a focused stabilization-stress aggregate profile and REST stress operation coverage accounting so scheduler starvation cannot pass as a green aggregate stress run.
  • 447c1b4 keeps pre-crash manual dump evidence separate from crash-time dump channels in local-dumps-crash-smoke.
  • 4369407 requires enabled REST leak churn to collect observable resource metrics before resource thresholds can pass.
  • 756457c enriches cold-start resource telemetry with CPU sample counts and high-CPU counters.
  • a80e953 records REST socket/TLS adversity and leak-churn settings in aggregate live E2E reports.
  • 550bcc9 adds compact slowest-request diagnostics and API-key-safe failure samples for REST stress latency triage.
  • 69108b4 requires local-dumps-crash-smoke to prove an access-violation exit, not just any process stop, before crash evidence can pass.
  • 4a8bf07 exposes the stabilization-stress profile through the supported python -m emule_workspace test live-e2e wrapper.
  • 60043bf records cold-start resource-monitor enable/start/stop state.
  • 61213ef summarizes WER LocalDumps by executable image so eMule dumps are distinguishable from diagnostic-tool dumps.
  • d2a0751 fails cold-start stress when enabled resource monitoring produces no samples or does not stop cleanly.
  • cc6b952 treats signed and unsigned Windows access-violation exit codes as equivalent crash evidence.
  • a373ef8 classifies REST stress response failures as status, kind, body, or native JSON mismatches instead of leaving generic/blank reasons.
  • eb328f8 records resource deltas for the REST stop/start-after-churn relaunch path.
  • 4a8c6c9 lists inconclusive child suite names in aggregate live E2E summaries.
  • 28b7331 splits 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 ..\.. -q passed 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 fast
  • python -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 validate passed.
  • 2026-05-13: python -m emule_workspace build app --config Debug --platform x64 passed. Summary: workspaces\workspace\state\build-logs\20260513-115827\summary.json.
  • 2026-05-13: python -m emule_workspace build app --config Release --platform x64 passed. Summary: workspaces\workspace\state\build-logs\20260513-115904\summary.json.
  • 2026-05-13: python -m emule_workspace build app --config Release --platform ARM64 passed. Summary: workspaces\workspace\state\build-logs\20260513-115913\summary.json.
  • 2026-05-13: python -m emule_workspace build tests --config Debug --platform x64 passed. Logs: workspaces\workspace\state\build-logs\20260513-115929.
  • 2026-05-13: python -m emule_workspace build tests --config Release --platform x64 passed. Logs: workspaces\workspace\state\build-logs\20260513-115940.
  • 2026-05-13: python -m emule_workspace test all --config Debug --platform x64 passed.
  • 2026-05-13: python -m emule_workspace test all --config Release --platform x64 passed.
  • 2026-05-13: python -m emule_workspace test live-e2e --profile controller-surface --fail-fast stopped 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 x64 was 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.