Skip to content

release: promote 0.10.0-beta.1 from dev to beta - #49

Merged
Quazmoz merged 43 commits into
betafrom
dev
Sep 17, 2026
Merged

Quazmoz merged 43 commits into
betafrom
dev

Conversation

@Quazmoz

@Quazmoz Quazmoz commented Sep 17, 2026

Copy link
Copy Markdown
Owner

Summary

Promote the current InferBridge development candidate to the beta channel as 0.10.0-beta.1.

This promotion carries the Benchmark Lab and hardware-advisor evidence work, recovery/storage resilience hardening, API/integration improvements, release/publisher hardening, and associated regression/browser coverage accumulated on dev since the current beta head.

Promotion audit

  • dev is a direct descendant of beta; there is no branch divergence to reconcile.
  • Canonical version is 0.10.0-beta.1; persistent data schema remains version 1.
  • Installer identity/location and mutable-data compatibility are intentionally retained.
  • Release publication is channel-bound: beta publishes only from beta, stable only from main, nightly only from dev.
  • Stable publication hard-requires independently verified Authenticode signatures; unsigned beta artifacts remain explicitly permitted as pre-release validation artifacts.
  • Advisor evidence rejects synthetic runs, wrong-hardware evidence, mismatched model identity, and results made stale by a newer conversion.
  • State-changing benchmark/lifecycle routes remain behind the configured API-key dependency.
  • Exact qualified Windows release dependencies remain pinned; latest-compatible dependencies are exercised separately on dev rather than silently redefining the release baseline.

Promotion-gate hardening included in this PR

The initial audit found that CI ran on pushes to beta but not on pull requests targeting beta. This candidate adds beta to the pull-request triggers for both:

  • .github/workflows/ci.yml
  • .github/workflows/model-lifecycle-windows.yml

Regression coverage in tests/test_release_promotion_gate.py and tests/test_ci_dependency_contract.py preserves that promotion contract.

Adversarial second pass

A second release-candidate review found and fixed two additional Benchmark Lab reliability/resource-safety gaps:

  1. Temporary-engine timeout ownership — the temporary benchmark stream path requested stop and waited for StreamHandle.wait_closed(), but previously did not enforce the returned timeout state with the cancellation-resilient ownership semantics used by normal serving. A native worker that exceeded the stop deadline could therefore reach temporary-engine close/storage-lease release too early. The benchmark path now preserves cancellation, defers temporary-engine close after a native stop timeout, and retains engine/storage ownership until the worker actually exits. Regression coverage proves that caller-side close remains a no-op during deferred cleanup and that ownership is released only after worker completion.
  2. Aggregate benchmark work bound — the request schema bounded models/devices, measured runs, and per-run output tokens independently, but their legal cross-product could still schedule more than one million measured output-token units in one local request. The runner now enforces a 65,536 measured output-token-unit budget before inference begins. All built-in Quick/Standard/Thorough configurations remain below the limit; pathological custom matrices fail through the existing sanitized HTTP 400 validation boundary.

Fresh CI also caught two defects in the first implementation of these guards before promotion: a formatting failure and a broken monkeypatch/privacy test seam plus an incorrectly propagated validation exception. Those were corrected rather than bypassed. The final implementation preserves the existing core runner seam and the API's validation semantics.

Validation completed on final head

Final candidate head: 77f343a72839de6ec4b3db2a1dd3badd4f742b9c.

The dev -> beta pull-request gate is green on that exact head:

  • Qualified Release Baseline — Windows / Python 3.11: passed
  • Python 3.11 / 3.12 / 3.13 / 3.14 lint + pytest: passed
  • External API Contract Smoke: passed
  • Windows Harness Syntax / release / security / packaging regressions: passed
  • Chromium Browser Behavior: passed
  • Windows Model Lifecycle — download / convert / load / recover regressions: passed

The latest-compatible dependency canary is intentionally skipped on a PR whose base is beta, so the same final head was also qualified by the dev push workflow. On 77f343a72839de6ec4b3db2a1dd3badd4f742b9c, the Latest-Compatible Canary — Windows / Python 3.11 also passed, including its full pytest suite.

Explicit non-blockers / follow-up

  • beta is currently not branch-protected and the repository has no ruleset enforcing the promotion path. Avoid direct pushes and use this PR for promotion.
  • Authenticode issue Authenticode signing for release artifacts #15 remains relevant for stable publication, but beta documentation explicitly permits unsigned pre-release artifacts and the stable publisher rejects unsigned stable publication.
  • Dependabot PR chore(deps): bump the python-runtime group across 1 directory with 22 updates #48 proposes a large release-stack update. It is intentionally excluded from this promotion; the qualified pinned release baseline remains unchanged.
  • Mock/source CI does not prove physical CPU/GPU/NPU behavior. Real-hardware certification remains required before making stable hardware claims.
  • If a native benchmark generation worker ignores stop indefinitely, InferBridge now intentionally retains that temporary engine and its storage lease rather than releasing resources underneath an active native worker. Process restart remains the ultimate recovery boundary for a native runtime that never exits.

After merge

Build beta artifacts from a clean beta checkout using the documented Windows release process, run packaged mock smoke/provenance/checksum gates, and publish v0.10.0-beta.1 as a GitHub pre-release only after those artifact-level checks pass.

Quinn-Reyes and others added 30 commits August 22, 2026 17:02
…storage safety

- Introduced `test_diagnostics_privacy.py` to validate redaction rules and archive path security for diagnostics bundles.
- Created `test_release_routes.py` to ensure proper handling of desktop release metadata and user preferences, including validation of settings and local UI header requirements.
- Developed `test_storage_safety.py` to enforce safety measures during storage cleanup, preventing unauthorized access and ensuring proper handling of symlinks and other unsafe paths.
Upgrade checkout, setup-python, and upload-artifact actions after successful CI and Windows model-lifecycle validation.
@Quazmoz
Quazmoz marked this pull request as ready for review September 17, 2026 11:16
@Quazmoz
Quazmoz merged commit ecc481d into beta Sep 17, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants