Skip to content

QF Solver 0.2.5a0 release-readiness template

Candidate identity

Field Value
Candidate version 0.2.5a0
Qualified numerical source SHA 8047fb63c420609b510beaa1e30aa3ab31d9ad87
Qualified source tree clean true under the generated-evidence provenance contract
Owner evidence SHA Recorded by docs/generated/docs_manifest.json as source.revision after the documentary commit
Owner evidence manifest docs/generated/docs_manifest.json, generated from the Owner-evidence revision above
Qualified source SHA for G02 fec5380db3bcdba13799ce31f3ed042ac5d2557b
G02 source tree clean true
G02 Owner-evidence manifest qualification/reviews/qf_solver_0_2_5_g02_owner_evidence_manifest.json
Wheel/sdist digests Recorded in the final packaging run; recompute when artifacts are archived
Final release Owner decision APPROVED for the explicitly narrowed qualified scope; publication remains a separate Owner action

Owner scope decision

OWNER_SCOPE_REVISION = APPROVED and SCOPE_CHANGE = YES are recorded in the controlled Owner decision 0_2_5_owner_scope_revision.md. The original plan made G04 and G06 MUST; this record preserves that history and explicitly excludes their unqualified claims from the 0.2.5a0 release scope. No test, tolerance or historical result was lowered, so CONTRACT_LOWERED = NO.

G04 remains EXPERIMENTAL / NOT_QUALIFIED and G06 remains CODE_COMPLETE / EXPERIMENTAL / QUALIFICATION_DEFERRED. Their evidence is not converted to PASS. G07 remains outside the release scope.

Mandatory gate status

Gate Status Evidence Blocker/limit
025-G00 PASS exact 0.2.4 replay on e368c0ce00874c16ff1e8fa9158ea0a8cd2dd745; Owner decision ACCEPTED_HISTORICAL_BASELINE_LIMITATION 1440 passed, 1 failed, 32 skipped, 187 deselected; the single failure is limited to two historical RQ-G08 revisions and has no demonstrated numerical impact
025-G01 PASS results/vnv_0_2_5/g01_latest/summary.json, g01_code_aster_latest/summary.json, 0_2_5_j2_qualification_report.md Bounded J2 qualification only
025-G02 PASS results/vnv_0_2_5/g02_latest/summary.json, 0_2_5_g02_owner_review.md, Owner-evidence manifest Elastic Total-Lagrangian TET4/HEX8, bounded pre-limit domain only
025-G03 PASS results/vnv_0_2_5/g03_euler_final/summary.json, results/vnv_0_2_5/g03_final/summary.json, 0_2_5_g03_owner_review.md, Owner-evidence manifest Bounded first tangent-instability scope: TET4 Euler and Code_Aster probe; high-order external buckling and post-buckling excluded
025-G04 NOT_IN_RELEASE_SCOPE results/vnv_0_2_5/g04_latest/summary.json, 0_2_5_g04_owner_review.md, 0_2_5_g04_external_branch_diagnostic.md EXPERIMENTAL / NOT_QUALIFIED; published compatible reference and final four-level closure remain future work
025-G05 PASS results/vnv_0_2_5/g05_latest/evidence_manifest.json, 0_2_5_lot5a_contact_implementation_report.md Bounded node/patch-to-triangulated-surface frictionless contact; no general surface-to-surface, friction or unrestricted large sliding
025-G06 NOT_IN_RELEASE_SCOPE results/vnv_0_2_5/g06_latest/summary.json, report.md, evidence_manifest.json, coupled_histories.json, g06_diagnostic/summary.json, g06_geometry_contact_mesh/summary.json, g06_j2_geometry_code_aster/final_comparison.json, g06_j2_geometry_code_aster/green_lagrange/green_comparison.json, g06_geometry_contact_code_aster/summary_linear.json, g06_geometry_contact_code_aster/tet4_green_lagrange/comparison.json CODE_COMPLETE / EXPERIMENTAL / QUALIFICATION_DEFERRED; finite-kinematic J2 and coupled external correlation remain unqualified, including the 76.7% mapped-reaction deviation
025-G07 NOT_IN_RELEASE_SCOPE optional friction policy Owner promotion required before any release claim
025-G08 PASS results/vnv_0_2_5/g08_latest/summary.json + manifest Bounded performance characterization only
025-G09 PASS results/vnv_0_2_5/g09_latest/summary.json + manifest 22/22 failure cases; internal contract only
025-G10 PASS 0_2_5_external_correlation_matrix.md, G01/G02/G03/G05 evidence and final Owner scope decision Evaluated only on the remaining qualified MUST cells; G04/G06 external rows are explicitly excluded, and CalculiX SHOULD remains non-blocking
025-G11 PASS final controlled replay on 8047fb63c420609b510beaa1e30aa3ab31d9ad87 1719 passed, 183 skipped; coverage 88.37 %; external V&V 64 checks PASS; docs, package build, Twine and wheel smoke pass
025-G12 PASS this readiness record, gate matrix, Owner scope decision, final-SHA manifests and G11 replay Aggregate readiness is closed for the approved bounded scope; tag, GitHub Release and PyPI publication remain separately Owner-controlled

G07 is optional unless the Owner promotes friction into release scope. G02 is closed independently of the source-pack's pre-Owner OPEN decision: the qualified numerical source SHA and the documentary Owner-evidence SHA are intentionally distinct.

The final replay was executed with the candidate checkout explicitly first on PYTHONPATH; this was required because the machine also contains a neighboring QF_solver_public checkout. The replay reached tests, coverage, external V&V, documentation, provenance, package build, Twine and wheel smoke. The complete technical replay is qualified on source SHA 8047fb63c420609b510beaa1e30aa3ab31d9ad87. The documentary evidence revision is recorded by docs/generated/docs_manifest.json; it does not change numerical behavior. The generated manifest records its exact source_sha and source.dirty=false; generated outputs are excluded from source-tree cleanliness by the documented provenance contract.

Corrective sprint result

The architecture blocker was resolved by splitting the evidence builder into focused orchestration, study and publication modules. The entry point now has 147 lines and all source files satisfy the 700-line rule.

The buckling blocker was resolved without changing the physical buckling contract: indefinite shift-invert now tries deterministic strictly interior bracket-derived shifts, records attempted shifts and retains an explicit diagnostic fallback. Exact-singular, near-eigenvalue, multiple-mode and near-zero-mode cases are covered by focused tests; the G03 targeted suite remains green.

Final checks

  • [x] Version, changelog, README, metadata and qualification registry agree.
  • [x] No mandatory OPEN, BLOCKED, draft, pending signature or stale SHA; G04/G06 are explicitly Owner-excluded from the final qualified scope.
  • [x] Complete test/coverage policy passes on candidate SHA.
  • [x] Engineering/V&V and external correlation evidence matches candidate SHA.
  • [x] Documentation builds from a clean source checkout.
  • [x] Wheel and sdist build and pass metadata checks.
  • [x] Wheel installs into a clean target and public API/CLI smoke passes.
  • [ ] Optional dependencies remain optional and are tested where available.
  • [x] Skips/deselections match the approved inventory.
  • [x] Known limitations are visible in public documentation.
  • [x] No unsupported physical-validation or scale claim remains.
  • [ ] Owner explicitly authorizes tag/release/publication in a separate action.

The sha_consistency step in scripts/release_readiness_pipeline_025.py is fail-closed: it emits FINAL_SHA, TREE_CLEAN and EVIDENCE_SHA_MATCH, and returns a failure when the candidate has no resolvable Git revision, contains source changes, or its generated docs/generated/docs_manifest.json does not identify the qualified source through source_sha. Generated documentation and the readiness artifact directory are outputs produced after checkout and are excluded from the source-tree cleanliness decision. A manifest archived by a later release commit may therefore identify an ancestor SHA, but only when every intervening path is explicitly documentation/governance-only; any change under src, examples or qualification data fails the check. This prevents a manifest from having to contain the SHA of the commit that contains the manifest itself without allowing numerical changes to hide behind it. The check is evaluated only during candidate readiness; it does not alter the development workflow or publish anything.

The gate_check step is also fail-closed. It parses every mandatory row rather than looking only for the literal OPEN marker: missing, malformed, BLOCKED or otherwise non-closed mandatory rows are reported as OPEN_GATES and cause a failure. A mandatory NOT_IN_RELEASE_SCOPE row is accepted only when the gate matrix contains the explicit OWNER_SCOPE_REVISION = APPROVED and SCOPE_CHANGE = YES markers. This makes the G04/G06 exclusion auditable rather than implicit.

Verdict

READY FOR OWNER-CONTROLLED RELEASE for the explicitly narrowed 0.2.5a0 qualified scope. This record does not authorize tagging, GitHub Release creation or PyPI publication.