# v0.98.1: Qualified interim baseline > **Status:** Released (2026-09-09) > **Scope:** Large > **User promise:** *"The published build passed its required tests on the artifact that ships."* > **Blocked by:** [v0.98.0](v0.98.0.md) > **Series assessment:** [v0.98.x](v0.98.x.md) ## Theme Freeze the v0.98.0 implementation and qualify one exact interim release candidate against `tests/release/v0.98-qualification.json`. A required missing, skipped, unavailable, stale, or failed result blocks publication. This is not final v1.0 qualification. Releases v0.99.0 through v0.104.0 change the implementation and public contracts. v0.105.x must therefore rerun and extend these gates against the frozen v1.0 candidate. Any change to the candidate commit or package contents invalidates all v0.98.1 evidence and starts a new qualification run. ## Work ### QUAL-1: Candidate-bound evidence - Record the candidate commit, PostgreSQL version, platform, suite version, workload, configuration, start and end time, result, retained-log location, and digest for every shipped artifact. - Derive the overall result from the required structured suite results in the frozen qualification contract. Do not accept caller-supplied success strings. - Preserve `passed`, `failed`, `skipped`, `unavailable`, and `historical` as distinct states. Only fresh `passed` evidence satisfies a required gate. - Make stable tag publication depend on the complete evidence record. Use prerelease tags while qualification is incomplete. ### QUAL-2: Correctness and admission - Run the exact-result oracle and transaction-atomicity tests for every stable refresh strategy with trigger capture, as listed in the qualification contract. - Run the WAL negative-admission and no-slot-advance fault tests. - Run every Graph V1 and Delta V1 negative-admission test against the packaged candidate. Discovery and every public entry point must agree that the contracts are disabled and experimental. - Run the contract's security, concurrency, rollback, restart, restore, clone, lifecycle, and resource-pressure suites. ### QUAL-3: Upgrade and package qualification - Test every exact source version listed in the qualification contract against the v0.98.1 candidate with real old binaries, active stream tables, pending source changes, and a post-upgrade refresh. - Validate the list against `docs/upgrade-support-manifest.json`. Classify recreation boundaries separately from in-place upgrades. - Treat every package and platform artifact listed in the contract as blocking. Each must pass install, create, insert, update, delete, refresh, restart, and upgrade or documented recreation smoke tests. - Build each listed artifact twice in clean environments. Compare normalized package contents and record compiler, dependency, source, and binary provenance. ### QUAL-4: Longevity and optional soak - Measure memory, catalogs, CDC buffers, output logs, retained history, and disk use over the contract's fixed windows. Each series must remain within its numeric maximum slope and absolute-growth budget. - Run the frozen seven-day longevity workload across one upgrade from the released v0.98.0 package to the unchanged v0.98.1 candidate package. A recovery loop, result deviation, or exceeded growth budget fails the gate. - The 72-hour mixed-workload soak is optional for v0.98.1. Run it manually when resources permit and record the result as supplemental evidence. A missing, failed, or unavailable soak does not block v0.98.1. v0.105.x runs the soak for final v1.0 qualification. ### QUAL-5: Performance gates - Run every workload, sample count, warm-up rule, retry rule, metric, and numeric budget from the frozen qualification contract. Retain all attempts and evaluate the complete result set. - Assert the effective refresh strategy and result multiset in every benchmark. A fallback, skip, or mismatch fails the benchmark. - Record infrastructure failure separately from product regression. Neither state satisfies a required result. ### QUAL-6: Contract freeze - Verify that API signatures, catalog schema, GUCs, error and reason identifiers, monitoring names, package contents, and upgrade policy match the candidate artifacts. - Assign every remaining limitation to v0.99.0 through v0.105.x, an explicit v1.0 non-goal, or post-v1.0 work. - Record third-party repository publication separately. Repository acceptance does not replace package qualification or alter candidate evidence. ## Exit criteria - [ ] The qualification-contract validator passes without placeholders, wildcard versions, missing commands, or nonnumeric thresholds. - [ ] Every required result names the v0.98.1 candidate commit and shipped artifact digest and has fresh status `passed`. - [ ] The exact oracle, capture transaction tests, WAL rejection tests, and Graph V1 and Delta V1 negative-admission tests pass against the packaged candidate. - [ ] Every listed source version completes its documented upgrade or recreation path with active data and pending changes. - [ ] Every listed artifact is reproducible and passes its required package smoke tests. - [ ] The seven-day longevity run crosses from released v0.98.0 to the unchanged candidate without a result deviation, recovery loop, or numeric growth-budget violation. - [ ] Every performance result satisfies its frozen numeric budget under its prespecified evaluation rule. - [ ] The blocker ledger has zero open P0 or P1 entries, and the evidence record derives overall `passed` from all required results. - [ ] Public contracts and active documentation match the shipped artifacts. ## Scope control Accept only release-blocking correctness, security, compatibility, documentation, package, and test fixes. Each accepted change creates a new candidate and restarts qualification. Add no capability during this release.