ANYsolver 0.4.0__tar.gz → 0.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (713) hide show
  1. {anysolver-0.4.0 → anysolver-0.4.2}/CHANGELOG.md +22 -0
  2. {anysolver-0.4.0/src/ANYsolver.egg-info → anysolver-0.4.2}/PKG-INFO +4 -4
  3. {anysolver-0.4.0 → anysolver-0.4.2}/THIRD_PARTY_NOTICES.md +6 -6
  4. {anysolver-0.4.0 → anysolver-0.4.2}/dependency-licenses.json +10 -10
  5. {anysolver-0.4.0 → anysolver-0.4.2}/pyproject.toml +4 -4
  6. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/check_license_compliance.py +10 -4
  7. {anysolver-0.4.0 → anysolver-0.4.2/src/ANYsolver.egg-info}/PKG-INFO +4 -4
  8. {anysolver-0.4.0 → anysolver-0.4.2}/src/ANYsolver.egg-info/requires.txt +3 -3
  9. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/__init__.py +1 -1
  10. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_element.py +196 -3
  11. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_static.py +7 -1
  12. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_anyfileio_version_compatibility.py +46 -108
  13. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_anymesher_version_compatibility.py +3 -3
  14. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_burnin.py +4 -2
  15. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_functional_constructor_policy.py +5 -1
  16. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q4_current_tangent.py +136 -2
  17. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_mesh_manifest.py +47 -11
  18. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_extracted_package_wiring.py +1 -1
  19. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s3_v2d_default_activation.py +60 -2
  20. {anysolver-0.4.0 → anysolver-0.4.2}/COPYRIGHT +0 -0
  21. {anysolver-0.4.0 → anysolver-0.4.2}/LICENSE +0 -0
  22. {anysolver-0.4.0 → anysolver-0.4.2}/LICENSING.md +0 -0
  23. {anysolver-0.4.0 → anysolver-0.4.2}/MANIFEST.in +0 -0
  24. {anysolver-0.4.0 → anysolver-0.4.2}/MIGRATION.md +0 -0
  25. {anysolver-0.4.0 → anysolver-0.4.2}/README.md +0 -0
  26. {anysolver-0.4.0 → anysolver-0.4.2}/docs/ARCHITECTURE.md +0 -0
  27. {anysolver-0.4.0 → anysolver-0.4.2}/docs/ARC_LENGTH.md +0 -0
  28. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_HW29_SOURCE_IDENTITY.md +0 -0
  29. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_MITC9I_REFERENCE.md +0 -0
  30. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_COMPLETION.md +0 -0
  31. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_INDEPENDENT_REVIEW.md +0 -0
  32. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_REPORT.md +0 -0
  33. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_BASELINE_AND_AUTHORITY.md +0 -0
  34. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_COMPLETION.md +0 -0
  35. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_INDEPENDENT_REVIEW.md +0 -0
  36. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_OPEN_CORE_IDENTITY.md +0 -0
  37. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_MIGRATION.md +0 -0
  38. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1AA_LOCAL_QUALIFICATION.md +0 -0
  39. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_INDEPENDENT_REVIEW.md +0 -0
  40. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_LOCAL_ALGEBRA.md +0 -0
  41. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_PLANAR_IDENTITY.md +0 -0
  42. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_PLAN_REVIEW.md +0 -0
  43. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_QUALIFICATION_REPORT.md +0 -0
  44. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1B_COMPLETION.md +0 -0
  45. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1B_LOCAL_QUALIFICATION.md +0 -0
  46. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1F_COMPLETION.md +0 -0
  47. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1F_DOMAIN_COERCIVITY.md +0 -0
  48. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1G_COMPLETION.md +0 -0
  49. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1G_DOMAIN_COERCIVITY.md +0 -0
  50. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_COMPLETION.md +0 -0
  51. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_FRAME_IDENTITY.md +0 -0
  52. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_INDEPENDENT_REVIEW.md +0 -0
  53. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_LOCAL_QUALIFICATION.md +0 -0
  54. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_PLAN_REVIEW.md +0 -0
  55. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1S_COMPLETION.md +0 -0
  56. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1S_LOCAL_QUALIFICATION.md +0 -0
  57. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1T_COMPLETION.md +0 -0
  58. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1T_LOCAL_QUALIFICATION.md +0 -0
  59. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1U_COMPLETION.md +0 -0
  60. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1U_LOCAL_QUALIFICATION.md +0 -0
  61. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1V_COMPLETION.md +0 -0
  62. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1V_LOCAL_QUALIFICATION.md +0 -0
  63. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1W_BOUNDED_RESULT.md +0 -0
  64. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1X_BOUNDED_RESULT.md +0 -0
  65. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Y2_PIPELINED_LOCAL_ALGEBRA.md +0 -0
  66. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Y3_LOCAL_ALGEBRA_CLOSURE.md +0 -0
  67. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Y_BOUNDED_LOCAL_ALGEBRA.md +0 -0
  68. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Z2_Q3STAR_SUPPORT_CLOSURE.md +0 -0
  69. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Z_SUPPORT_KKT_CLOSURE.md +0 -0
  70. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_VARIATIONAL_CLOSURE.md +0 -0
  71. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_ROUTE_REPORT.md +0 -0
  72. {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_WS_FEASIBILITY_THEOREM.md +0 -0
  73. {anysolver-0.4.0 → anysolver-0.4.2}/docs/NONLINEAR_PERFORMANCE.md +0 -0
  74. {anysolver-0.4.0 → anysolver-0.4.2}/docs/PERFORMANCE_ARCHITECTURE.md +0 -0
  75. {anysolver-0.4.0 → anysolver-0.4.2}/docs/QUALITY_CONTROL.md +0 -0
  76. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_A1_RANK_CERTIFICATE.md +0 -0
  77. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_A2_INF_SUP_CERTIFICATE.md +0 -0
  78. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_INDEPENDENT_REVIEW.md +0 -0
  79. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_QUALIFICATION_REPORT.md +0 -0
  80. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_DERIVATION.md +0 -0
  81. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_INDEPENDENT_REVIEW.md +0 -0
  82. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_QUALIFICATION_REPORT.md +0 -0
  83. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_FORMULATION_DERIVATION.md +0 -0
  84. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_INDEPENDENT_REVIEW.md +0 -0
  85. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_QUALIFICATION_REPORT.md +0 -0
  86. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_A_DERIVATION.md +0 -0
  87. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_A_INDEPENDENT_REVIEW.md +0 -0
  88. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_QUALIFICATION_REPORT.md +0 -0
  89. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_R_DERIVATION.md +0 -0
  90. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_R_INDEPENDENT_REVIEW.md +0 -0
  91. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_DRILL_CONSTRAINT_DERIVATION.md +0 -0
  92. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_E2_A_EXTENSION_CLOSURE.md +0 -0
  93. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_E2_A_FORMULATION_DERIVATION.md +0 -0
  94. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_E2_A_INDEPENDENT_REVIEW.md +0 -0
  95. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_E2_A_QUALIFICATION_REPORT.md +0 -0
  96. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_EQ21_EQ25_CORRECTION_PLAN.md +0 -0
  97. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_FULL_PRODUCTION_QUALIFICATION_PROGRAM.md +0 -0
  98. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_GEOMETRY_HANDOFF.md +0 -0
  99. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_IMPROVED_FORMULATION.md +0 -0
  100. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_IMPROVED_QUALIFICATION_FINAL_STATUS.md +0 -0
  101. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_NULLSPACE_SEMANTICS_PROOF.md +0 -0
  102. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_NULLSPACE_SEMANTICS_PROOF_PLAN.md +0 -0
  103. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_PLAN_BASELINE_ADDENDUM.md +0 -0
  104. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_REDUCED_RESEARCH.md +0 -0
  105. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_RESTRICTED_RELEASE_STATUS.md +0 -0
  106. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_CANDIDATE_A_DISCRETIZATION_DERIVATION.md +0 -0
  107. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_CANDIDATE_A_DISCRETIZATION_REPORT.md +0 -0
  108. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_CONSTRAINED_DERIVATION.md +0 -0
  109. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_ENERGETIC_DERIVATION.md +0 -0
  110. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_MECHANICS_SELECTION_PLAN.md +0 -0
  111. {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_SELECTION_REPORT.md +0 -0
  112. {anysolver-0.4.0 → anysolver-0.4.2}/docs/THEORY.md +0 -0
  113. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_COMPANION_IMPLEMENTATION_PLAN.md +0 -0
  114. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V2_FORMULATION_PLAN.md +0 -0
  115. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V3_FORMULATION_PREREGISTRATION_PLAN.md +0 -0
  116. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4A_Q4_SUBCELL_PREREGISTRATION_PLAN.md +0 -0
  117. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4B_Q4_SUBCELL_DRILL_RELEASE_PREREGISTRATION_PLAN.md +0 -0
  118. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4C_PHYSICAL_FIRST_SUBCELL_PREREGISTRATION_PLAN.md +0 -0
  119. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4D_HERMITE_EDGE_PREREGISTRATION_PLAN.md +0 -0
  120. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4E_SHEAR_DIAGNOSIS_PREREGISTRATION_PLAN.md +0 -0
  121. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5A_MIN3_SOURCE_AUTHORITY_PLAN.md +0 -0
  122. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5B_RELAXATION_AUTHORITY_PLAN.md +0 -0
  123. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5B_RELAXED_REPAIR_FUNNEL_PLAN.md +0 -0
  124. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5C_STAGE4A_REAUTHORIZATION_PLAN.md +0 -0
  125. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5D_RESPONSE_METRIC_DIAGNOSIS_PLAN.md +0 -0
  126. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5E_STAGE4A_SPATIAL_RESPONSE_PLAN.md +0 -0
  127. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5F_PRODUCTION_PARITY_PLAN.md +0 -0
  128. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5G_STAGE4B_EXTENSION_AUTHORITY_PLAN.md +0 -0
  129. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6P_STAGE4A_COMPLETION_PLAN.md +0 -0
  130. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6Q_25PCT_SPATIAL_CORRECTION_PLAN.md +0 -0
  131. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6R_GATE_DECISION_AGREEMENT_PLAN.md +0 -0
  132. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6S_STAGE4B_PLAN.md +0 -0
  133. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6T_GLOBAL_ASSEMBLY_CACHE_PLAN.md +0 -0
  134. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6U_PERFORMANCE_SUCCESSOR_PLAN.md +0 -0
  135. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6V_ACTIVATION_GAP_AUDIT_PLAN.md +0 -0
  136. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6W_FINAL_QUALIFICATION_PLAN.md +0 -0
  137. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_A_OPEN_QUALIFICATION_PLAN.md +0 -0
  138. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_C_LINEAR_QUOTIENT_QUALIFICATION_PLAN.md +0 -0
  139. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_E0_DNV_LINEAR_BUCKLING_QUALIFICATION_PLAN.md +0 -0
  140. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_E1_ALLMAN_SESTRA_QUALIFICATION_PLAN.md +0 -0
  141. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E2_A_SOURCE_KINEMATICS_PLAN.md +0 -0
  142. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E3_A_VARIATIONAL_CLOSURE_STUDY_PLAN.md +0 -0
  143. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E3_HW29_MITC9I_ROUTE_SELECTION_PLAN.md +0 -0
  144. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_LINEAR_QUALIFICATION_PLAN.md +0 -0
  145. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_PLANAR_LINEAR_QUALIFICATION_PLAN.md +0 -0
  146. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1AA_LOCAL_QUALIFICATION_SYNTHESIS_PLAN.md +0 -0
  147. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1B_NONINTRUSION_STABILITY_LOCKING_PLAN.md +0 -0
  148. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1C_LOCKING_REPAIR_PLAN.md +0 -0
  149. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1D_ULTRATHIN_CONDITIONING_PLAN.md +0 -0
  150. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1E_ASSEMBLED_READJUDICATION_PLAN.md +0 -0
  151. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1F_DOMAIN_COERCIVITY_PLAN.md +0 -0
  152. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1G_RIGID_RANGE_COERCIVITY_PLAN.md +0 -0
  153. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1H_DOMAIN_COERCIVITY_COMPLETION_PLAN.md +0 -0
  154. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1I_ASSEMBLED_QUALIFICATION_SYNTHESIS_PLAN.md +0 -0
  155. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1J_DORMANT_PRODUCTION_PARITY_PLAN.md +0 -0
  156. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1K_WARPED_PARITY_PLAN.md +0 -0
  157. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1L_DEFAULT_ACTIVATION_PLAN.md +0 -0
  158. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1M_BURNIN_HARDENING_PLAN.md +0 -0
  159. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1R_NUMBERED_FRAME_PLAN.md +0 -0
  160. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1S_IMPLEMENTATION_COMPLETION_PLAN.md +0 -0
  161. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1T_EXACT_ORACLE_COMPLETION_PLAN.md +0 -0
  162. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1U_EXECUTION_GUARD_COMPLETION_PLAN.md +0 -0
  163. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1V_LOCAL_COMPLETION_PLAN.md +0 -0
  164. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1W_BOUNDED_EXACT_PROOF_PLAN.md +0 -0
  165. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1X_BOUNDED_TRANSPORT_CLOSURE_PLAN.md +0 -0
  166. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y2_PIPELINED_LOCAL_ALGEBRA_PLAN.md +0 -0
  167. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y3_MITC_CHECKER_REPAIR_PLAN.md +0 -0
  168. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y_BOUNDED_LOCAL_ALGEBRA_PLAN.md +0 -0
  169. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Z2_Q3STAR_SUPPORT_CLOSURE_PLAN.md +0 -0
  170. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Z_BOUNDED_SUPPORT_KKT_PLAN.md +0 -0
  171. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_VARIATIONAL_DRILL_CLOSURE_PLAN.md +0 -0
  172. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_batch_qualification_agent.md +0 -0
  173. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_drill_constraint_tor_agent.md +0 -0
  174. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_eq21_eq25_editor_agent.md +0 -0
  175. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_handoff_director_agent.md +0 -0
  176. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_handoff_numeric_hardening_addendum.md +0 -0
  177. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_nullspace_heimdall_auditor.md +0 -0
  178. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_nullspace_vidar_editor.md +0 -0
  179. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_reference_core_agent.md +0 -0
  180. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_stage_m_320_timeout_execution_addendum.md +0 -0
  181. {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_stage_m_candidate_a_discretization_addendum.md +0 -0
  182. {anysolver-0.4.0 → anysolver-0.4.2}/docs/reference_cases/README.md +0 -0
  183. {anysolver-0.4.0 → anysolver-0.4.2}/docs/reference_cases/e4_pl_s3_v2_dkmt_equation_map.md +0 -0
  184. {anysolver-0.4.0 → anysolver-0.4.2}/reports/extract_mat_mesh_io_performance_review.md +0 -0
  185. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_advanced_s4_batches.py +0 -0
  186. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_contact_work_buffer.py +0 -0
  187. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_damage_matrix_updates.py +0 -0
  188. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_e4_pl_s3_reference_batch.py +0 -0
  189. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_impact_reduced_assembly.py +0 -0
  190. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_impact_tangent_reuse.py +0 -0
  191. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_nonlinear_assembly.py +0 -0
  192. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_recovery_batches.py +0 -0
  193. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_s4_improved.py +0 -0
  194. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_sol_ultra_performance.py +0 -0
  195. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_sol_ultra_thread_scaling.py +0 -0
  196. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/check_s4_geometry_handoff.py +0 -0
  197. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/compare_fe_baselines.py +0 -0
  198. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/compare_s4_improved.py +0 -0
  199. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/compare_sol_ultra_performance.py +0 -0
  200. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/fetch_calculix_shell_reference.py +0 -0
  201. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/generate_fe_baselines.py +0 -0
  202. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/measure_e4_pl_q1m_baseline.py +0 -0
  203. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_beam_shell_verification.py +0 -0
  204. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_beam_validity.py +0 -0
  205. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_buckling_validity.py +0 -0
  206. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_capacity_workflow.py +0 -0
  207. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_cylinder_benchmark.py +0 -0
  208. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_e4_pl_burnin_gate.py +0 -0
  209. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_element_qualification.py +0 -0
  210. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_external_references.py +0 -0
  211. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_fe_benchmarks.py +0 -0
  212. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_fe_verification.py +0 -0
  213. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_internal_shell_benchmark.py +0 -0
  214. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_mass_modal_validity.py +0 -0
  215. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_mesh_load_bc_verification.py +0 -0
  216. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_plasticity_qualification.py +0 -0
  217. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_portable_ci.py +0 -0
  218. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_recovery_policy.py +0 -0
  219. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_s4_improved_qualification.py +0 -0
  220. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_s4_validity.py +0 -0
  221. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/verify_sol_ultra_numerics.py +0 -0
  222. {anysolver-0.4.0 → anysolver-0.4.2}/scripts/write_production_readiness.py +0 -0
  223. {anysolver-0.4.0 → anysolver-0.4.2}/setup.cfg +0 -0
  224. {anysolver-0.4.0 → anysolver-0.4.2}/src/ANYsolver.egg-info/SOURCES.txt +0 -0
  225. {anysolver-0.4.0 → anysolver-0.4.2}/src/ANYsolver.egg-info/dependency_links.txt +0 -0
  226. {anysolver-0.4.0 → anysolver-0.4.2}/src/ANYsolver.egg-info/top_level.txt +0 -0
  227. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/_native_rotation_state.py +0 -0
  228. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/_qualified_authority_epoch.py +0 -0
  229. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/activity.py +0 -0
  230. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/algebraic_dynamics.py +0 -0
  231. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/analysis_session.py +0 -0
  232. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/anystructure_fem_mode.py +0 -0
  233. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/arc_length.py +0 -0
  234. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/assembly.py +0 -0
  235. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/baselines.py +0 -0
  236. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/beam_sections.py +0 -0
  237. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/beam_shell_verification.py +0 -0
  238. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/beam_validity.py +0 -0
  239. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/benchmarks.py +0 -0
  240. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/boundary.py +0 -0
  241. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/buckling.py +0 -0
  242. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/buckling_validity.py +0 -0
  243. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/capacity_workflow.py +0 -0
  244. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/cases.py +0 -0
  245. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/composite_strip_verification.py +0 -0
  246. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/constraint_audit.py +0 -0
  247. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/contact.py +0 -0
  248. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/contact_performance.py +0 -0
  249. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/control.py +0 -0
  250. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/corotational.py +0 -0
  251. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/corotational_performance.py +0 -0
  252. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/current_state_tangent.py +0 -0
  253. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/cylinder_benchmarks.py +0 -0
  254. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/damage_matrix_performance.py +0 -0
  255. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/dynamics.py +0 -0
  256. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_element.py +0 -0
  257. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_initial_fields.py +0 -0
  258. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_state.py +0 -0
  259. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2_element.py +0 -0
  260. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2b_element.py +0 -0
  261. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2c_element.py +0 -0
  262. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2d_element.py +0 -0
  263. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2d_state.py +0 -0
  264. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/element_capabilities.py +0 -0
  265. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/element_qualification.py +0 -0
  266. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/elements.py +0 -0
  267. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/experimental_csr_assembly.py +0 -0
  268. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/external_references.py +0 -0
  269. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/fe_core.py +0 -0
  270. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/fracture.py +0 -0
  271. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/impact_performance.py +0 -0
  272. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/impact_reduced_assembly.py +0 -0
  273. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/imperfections.py +0 -0
  274. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/initial_field_state.py +0 -0
  275. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/jit_compiler.py +0 -0
  276. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/kernel_warmup.py +0 -0
  277. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/linalg.py +0 -0
  278. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/mass_properties.py +0 -0
  279. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/material_curves.py +0 -0
  280. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/materials.py +0 -0
  281. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/matrix_assembly.py +0 -0
  282. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/mesh_gen.py +0 -0
  283. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/mesh_load_bc_verification.py +0 -0
  284. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/modal.py +0 -0
  285. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear.py +0 -0
  286. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_analysis_diagnostics.py +0 -0
  287. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_element_evaluation.py +0 -0
  288. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_performance.py +0 -0
  289. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_batch_b.py +0 -0
  290. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_batch_c.py +0 -0
  291. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_bootstrap.py +0 -0
  292. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_reduced_assembly.py +0 -0
  293. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_restart.py +0 -0
  294. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_state.py +0 -0
  295. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/outcomes.py +0 -0
  296. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/plasticity.py +0 -0
  297. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/plasticity_qualification.py +0 -0
  298. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/production_readiness.py +0 -0
  299. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/quality_control.py +0 -0
  300. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/quantities.py +0 -0
  301. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/recovery.py +0 -0
  302. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/recovery_batches.py +0 -0
  303. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/recovery_policy.py +0 -0
  304. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/recovery_s4.py +0 -0
  305. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/reference_cases.py +0 -0
  306. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/results.py +0 -0
  307. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/runtime.py +0 -0
  308. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/s3_reference_batch.py +0 -0
  309. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/s3_v2c_fast_assembly.py +0 -0
  310. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/s3_v2d_fast_assembly.py +0 -0
  311. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/s4_validity.py +0 -0
  312. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sections.py +0 -0
  313. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/__init__.py +0 -0
  314. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/__main__.py +0 -0
  315. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/diagnostics.py +0 -0
  316. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/document.py +0 -0
  317. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/exporter.py +0 -0
  318. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/importer.py +0 -0
  319. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/records.py +0 -0
  320. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/schema.py +0 -0
  321. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/sif_importer.py +0 -0
  322. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/validation.py +0 -0
  323. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_benchmarks.py +0 -0
  324. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/director_field.py +0 -0
  325. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/geometry_provenance.py +0 -0
  326. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_quality.py +0 -0
  327. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_reference.py +0 -0
  328. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_scalar.py +0 -0
  329. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/protocol.py +0 -0
  330. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/q4_common.py +0 -0
  331. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/s4_restricted_policy.py +0 -0
  332. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_sections.py +0 -0
  333. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/test_cases.py +0 -0
  334. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/threading_policy.py +0 -0
  335. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/validation.py +0 -0
  336. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_beam.py +0 -0
  337. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_generalized_shell.py +0 -0
  338. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_hill48.py +0 -0
  339. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_nonlinear.py +0 -0
  340. {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_stiffness.py +0 -0
  341. {anysolver-0.4.0 → anysolver-0.4.2}/tests/_e4_pl_s3_native_trial.py +0 -0
  342. {anysolver-0.4.0 → anysolver-0.4.2}/tests/conftest.py +0 -0
  343. {anysolver-0.4.0 → anysolver-0.4.2}/tests/fixtures/fe_baselines/baseline.json +0 -0
  344. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_advanced_s4_batches.py +0 -0
  345. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_analysis_session.py +0 -0
  346. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_arc_length.py +0 -0
  347. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_batch_b_activation.py +0 -0
  348. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_beam_axis_conventions.py +0 -0
  349. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_beam_shell_verification.py +0 -0
  350. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_constraint_audit.py +0 -0
  351. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_contact_work_buffer.py +0 -0
  352. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_corotational.py +0 -0
  353. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_corotational_performance.py +0 -0
  354. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_damage_matrix_performance.py +0 -0
  355. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_baseline.py +0 -0
  356. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_closeout.py +0 -0
  357. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_hw29_identity.py +0 -0
  358. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_mitc9i_reference.py +0 -0
  359. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_route_selection.py +0 -0
  360. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_baseline.py +0 -0
  361. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_closeout.py +0 -0
  362. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_core_identity.py +0 -0
  363. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_component_snapshot_integrity.py +0 -0
  364. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_current_state_input_ownership.py +0 -0
  365. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_default_activation.py +0 -0
  366. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_dormant_element.py +0 -0
  367. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_guarded_observations.py +0 -0
  368. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_identity.py +0 -0
  369. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_mixed_current_state_route.py +0 -0
  370. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_orchestrator_operation_lease.py +0 -0
  371. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_parity_matrix.py +0 -0
  372. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_planar_physical_recovery.py +0 -0
  373. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1a_authority.py +0 -0
  374. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1a_exact.py +0 -0
  375. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1aa_local_qualification_synthesis.py +0 -0
  376. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_assembled_stability.py +0 -0
  377. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_closeout.py +0 -0
  378. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_contract.py +0 -0
  379. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_implementation_authority.py +0 -0
  380. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_locking_refinement.py +0 -0
  381. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_nonintrusion_recovery.py +0 -0
  382. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_preregistration_authority.py +0 -0
  383. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_runner_bounds.py +0 -0
  384. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1c_locking_repair.py +0 -0
  385. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1d_ultrathin_conditioning.py +0 -0
  386. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1e_assembled_readjudication.py +0 -0
  387. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1f_closeout.py +0 -0
  388. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1f_preregistration_authority.py +0 -0
  389. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1g_closeout.py +0 -0
  390. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1g_rigid_range_coercivity.py +0 -0
  391. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1h_domain_coercivity.py +0 -0
  392. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1i_assembled_qualification.py +0 -0
  393. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1r_closeout.py +0 -0
  394. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1r_preregistration_authority.py +0 -0
  395. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_closeout.py +0 -0
  396. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_frame_and_fields.py +0 -0
  397. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_global_supports.py +0 -0
  398. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_local_algebra.py +0 -0
  399. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_preregistration_authority.py +0 -0
  400. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_recovery.py +0 -0
  401. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_terminal_and_agreement.py +0 -0
  402. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_closeout.py +0 -0
  403. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_contract.py +0 -0
  404. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_exact_backend.py +0 -0
  405. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_frame_and_fields.py +0 -0
  406. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_global_supports.py +0 -0
  407. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_local_algebra.py +0 -0
  408. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_preregistration_authority.py +0 -0
  409. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_recovery.py +0 -0
  410. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_terminal_and_agreement.py +0 -0
  411. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_authority_guard.py +0 -0
  412. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_closeout.py +0 -0
  413. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_contract.py +0 -0
  414. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_exact_backend.py +0 -0
  415. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_frame_and_fields.py +0 -0
  416. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_global_supports.py +0 -0
  417. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_local_algebra.py +0 -0
  418. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_preregistration_authority.py +0 -0
  419. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_recovery.py +0 -0
  420. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_terminal_and_agreement.py +0 -0
  421. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_authority_guard.py +0 -0
  422. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_closeout.py +0 -0
  423. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_commissioning.py +0 -0
  424. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_contract.py +0 -0
  425. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_exact_backend.py +0 -0
  426. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_frame_and_fields.py +0 -0
  427. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_global_supports.py +0 -0
  428. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_local_algebra.py +0 -0
  429. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_preregistration_authority.py +0 -0
  430. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_recovery.py +0 -0
  431. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_terminal_and_agreement.py +0 -0
  432. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1w_bounded_proof.py +0 -0
  433. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1x_bounded_transport.py +0 -0
  434. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1y2_pipelined_local_algebra.py +0 -0
  435. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1y3_mitc_checker_repair.py +0 -0
  436. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1y_bounded_local_algebra.py +0 -0
  437. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1z2_q3star_support_closure.py +0 -0
  438. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1z_bounded_support_kkt.py +0 -0
  439. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q4_state_lifecycle.py +0 -0
  440. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q4_stationary_conditioning.py +0 -0
  441. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_assembly_fast_total.py +0 -0
  442. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_bubble_policy.py +0 -0
  443. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_committed_state.py +0 -0
  444. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_contact_virtual_work.py +0 -0
  445. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_current_tangent_buckling.py +0 -0
  446. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_descriptor_hardening.py +0 -0
  447. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_descriptor_spectrum.py +0 -0
  448. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_direct_nonlinear_response.py +0 -0
  449. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_domain_coercivity.py +0 -0
  450. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_dynamic_guard.py +0 -0
  451. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_exact_oracle.py +0 -0
  452. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_fast_total.py +0 -0
  453. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_formulation_contract.py +0 -0
  454. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_generalized_initial_fields.py +0 -0
  455. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_generalized_nonlinear.py +0 -0
  456. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_geometric_stiffness.py +0 -0
  457. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_guard_persistence.py +0 -0
  458. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_independent_linear_reference.py +0 -0
  459. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mass.py +0 -0
  460. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_eigen_performance.py +0 -0
  461. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_mesh_qualification_runner.py +0 -0
  462. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_structural_qualification.py +0 -0
  463. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_modal.py +0 -0
  464. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_modal_provenance.py +0 -0
  465. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_model_bound_nonlinear_hook.py +0 -0
  466. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_covariance.py +0 -0
  467. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_full_d3.py +0 -0
  468. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_kernel.py +0 -0
  469. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_response.py +0 -0
  470. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_nonlinear_workflows.py +0 -0
  471. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_objective_pl.py +0 -0
  472. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_opt_in.py +0 -0
  473. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_patch_recovery.py +0 -0
  474. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_physical_director_reversal.py +0 -0
  475. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_physical_recovery.py +0 -0
  476. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_prestressed_modal_buckling.py +0 -0
  477. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_q4_burnin_authority.py +0 -0
  478. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_qv9_v1_nogo_closeout.py +0 -0
  479. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_reference_batch.py +0 -0
  480. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_reference_surface_offset.py +0 -0
  481. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_restart_history.py +0 -0
  482. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_shared_rotation_kinematics.py +0 -0
  483. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_state_lifecycle.py +0 -0
  484. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_state_schema_closure.py +0 -0
  485. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_transient_algebraic.py +0 -0
  486. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_authority.py +0 -0
  487. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_bounded_process.py +0 -0
  488. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_candidate_binding.py +0 -0
  489. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_component_cache.py +0 -0
  490. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_dkmt_derivation.py +0 -0
  491. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_candidate_review.py +0 -0
  492. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel.py +0 -0
  493. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel_checker.py +0 -0
  494. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel_producer.py +0 -0
  495. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_independent_reference.py +0 -0
  496. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_mixed_scope.py +0 -0
  497. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_production.py +0 -0
  498. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_production_reference.py +0 -0
  499. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_stage4a_authority.py +0 -0
  500. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_stage4a_coordinator.py +0 -0
  501. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_interface_closeout.py +0 -0
  502. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_interface_funnel.py +0 -0
  503. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_production.py +0 -0
  504. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2c_production.py +0 -0
  505. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2d_linear_native_parity.py +0 -0
  506. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2d_native_state_corotational.py +0 -0
  507. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3_equation_authority.py +0 -0
  508. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3_preregistration.py +0 -0
  509. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3a_implementation_screen.py +0 -0
  510. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4a_preregistration.py +0 -0
  511. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4a_q4_subcell_screen.py +0 -0
  512. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4b_drill_release_screen.py +0 -0
  513. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4b_preregistration.py +0 -0
  514. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4c_physical_first_screen.py +0 -0
  515. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4c_preregistration.py +0 -0
  516. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4d_hermite_edge_screen.py +0 -0
  517. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4d_preregistration.py +0 -0
  518. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4e_preregistration.py +0 -0
  519. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4e_shear_diagnosis.py +0 -0
  520. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5a_min3_screen.py +0 -0
  521. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5a_preregistration.py +0 -0
  522. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5b_relaxation_authority.py +0 -0
  523. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5b_relaxed_screen.py +0 -0
  524. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5c_stage4a.py +0 -0
  525. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5d_response_metric.py +0 -0
  526. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5e_stage4a_spatial.py +0 -0
  527. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5f_production_parity.py +0 -0
  528. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5g_stage4b_extension_authority.py +0 -0
  529. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5h_closeout.py +0 -0
  530. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5h_local_parity.py +0 -0
  531. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_r1_closeout.py +0 -0
  532. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_r1_diagnosis.py +0 -0
  533. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_stage4b.py +0 -0
  534. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_stage4b_closeout.py +0 -0
  535. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_closeout.py +0 -0
  536. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_protocol.py +0 -0
  537. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_repair.py +0 -0
  538. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_closeout.py +0 -0
  539. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_protocol.py +0 -0
  540. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_stage4b.py +0 -0
  541. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_closeout.py +0 -0
  542. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_parity.py +0 -0
  543. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_protocol.py +0 -0
  544. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5n_activation_audit.py +0 -0
  545. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5n_closeout.py +0 -0
  546. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6_native_parity_source_authority.py +0 -0
  547. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6_native_parity_source_closeout.py +0 -0
  548. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6a_linear_native_parity_closeout.py +0 -0
  549. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6a_linear_native_parity_contract.py +0 -0
  550. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6b_native_state_corotational_closeout.py +0 -0
  551. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6b_native_state_corotational_contract.py +0 -0
  552. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart.py +0 -0
  553. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart_closeout.py +0 -0
  554. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart_contract.py +0 -0
  555. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch.py +0 -0
  556. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch_closeout.py +0 -0
  557. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch_contract.py +0 -0
  558. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6e_final_parity.py +0 -0
  559. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6e_final_parity_closeout.py +0 -0
  560. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6f_final_parity_audit.py +0 -0
  561. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6g_closeout.py +0 -0
  562. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6g_recovery_current_eigen.py +0 -0
  563. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6h_closeout.py +0 -0
  564. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6h_stage4a_authority.py +0 -0
  565. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6i_stage4a_execution_authority.py +0 -0
  566. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6i_stage4a_execution_closeout.py +0 -0
  567. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6j_stage4a_execution_authority.py +0 -0
  568. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6j_stage4a_execution_closeout.py +0 -0
  569. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_execution_authority.py +0 -0
  570. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_execution_closeout.py +0 -0
  571. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_request_authority.py +0 -0
  572. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_request_publisher.py +0 -0
  573. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_execution_authority.py +0 -0
  574. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_execution_closeout.py +0 -0
  575. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_request_authority.py +0 -0
  576. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_bounded_timeout_closeout.py +0 -0
  577. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_execution_authority.py +0 -0
  578. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_execution_closeout.py +0 -0
  579. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_request_authority.py +0 -0
  580. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6n_lease_optimization_closeout.py +0 -0
  581. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6n_stage4a_profile.py +0 -0
  582. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_execution_closeout.py +0 -0
  583. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_missing_leaf_graph.py +0 -0
  584. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_request_authority.py +0 -0
  585. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_closeout.py +0 -0
  586. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_completion.py +0 -0
  587. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_execution_authority.py +0 -0
  588. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6q_25pct_spatial.py +0 -0
  589. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6r_gate_decision.py +0 -0
  590. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6s_stage4b.py +0 -0
  591. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6s_stage4b_closeout.py +0 -0
  592. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache.py +0 -0
  593. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache_authority.py +0 -0
  594. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache_closeout.py +0 -0
  595. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6u_performance.py +0 -0
  596. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6u_performance_closeout.py +0 -0
  597. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6v_activation_gap_audit.py +0 -0
  598. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6v_activation_gap_closeout.py +0 -0
  599. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6w_final_qualification.py +0 -0
  600. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6w_final_qualification_closeout.py +0 -0
  601. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_transient_authority.py +0 -0
  602. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_warped_qualification.py +0 -0
  603. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_workflow_parity.py +0 -0
  604. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_route.py +0 -0
  605. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_ws_feasibility.py +0 -0
  606. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_element_activity.py +0 -0
  607. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_element_activity_integration.py +0 -0
  608. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_experimental_csr_assembly.py +0 -0
  609. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_external_references.py +0 -0
  610. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_anystructure_fem_mode.py +0 -0
  611. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_architecture.py +0 -0
  612. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_buckling.py +0 -0
  613. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_capacity_workflow.py +0 -0
  614. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_contact.py +0 -0
  615. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_corotational_beam.py +0 -0
  616. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_cylinder_benchmarks.py +0 -0
  617. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_dynamics.py +0 -0
  618. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_element_qualification.py +0 -0
  619. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_element_quality.py +0 -0
  620. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_fracture.py +0 -0
  621. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_infrastructure.py +0 -0
  622. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_mass_modal.py +0 -0
  623. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_dnv.py +0 -0
  624. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_limit_point.py +0 -0
  625. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_static.py +0 -0
  626. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_plasticity_qualification.py +0 -0
  627. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_recovery_policy.py +0 -0
  628. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_reference_cases.py +0 -0
  629. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_s4_validity.py +0 -0
  630. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_shell_verification.py +0 -0
  631. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_theory.py +0 -0
  632. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_triangular_shell.py +0 -0
  633. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_triangular_shell_backend.py +0 -0
  634. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_follower_pressure.py +0 -0
  635. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_beam_sections.py +0 -0
  636. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_section_api_workflows.py +0 -0
  637. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_section_mass_properties.py +0 -0
  638. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_shell_sections.py +0 -0
  639. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_state_recovery.py +0 -0
  640. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_geometry_panel.py +0 -0
  641. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_hht_alpha.py +0 -0
  642. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_hill48_plane_stress_plasticity.py +0 -0
  643. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_impact_reduced_assembly.py +0 -0
  644. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_impact_tangent_reuse.py +0 -0
  645. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_initial_fields_and_staged_history.py +0 -0
  646. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_license_compliance.py +0 -0
  647. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_local_patch_transition.py +0 -0
  648. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_material_history_recovery.py +0 -0
  649. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_mesh_load_bc_verification.py +0 -0
  650. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_mesher_improvements.py +0 -0
  651. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_mixed_shell_quadrature_grouping.py +0 -0
  652. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_namespace_neutral_deepcopy.py +0 -0
  653. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_native_rotation_state.py +0 -0
  654. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nodal_stress_recovery.py +0 -0
  655. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_analysis_diagnostics.py +0 -0
  656. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_impact_plasticity.py +0 -0
  657. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_performance.py +0 -0
  658. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_performance_batch_b.py +0 -0
  659. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_performance_batch_c.py +0 -0
  660. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_restart_checkpoint.py +0 -0
  661. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_state_batches.py +0 -0
  662. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_state_lifecycle.py +0 -0
  663. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_static_state_lifecycle.py +0 -0
  664. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_orthotropic_elements.py +0 -0
  665. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_orthotropic_material_contract.py +0 -0
  666. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_orthotropic_workflow_integration.py +0 -0
  667. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_performance_improvements.py +0 -0
  668. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_phase2.py +0 -0
  669. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_plane_stress_analytical_tangent.py +0 -0
  670. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_production_readiness.py +0 -0
  671. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_production_validation.py +0 -0
  672. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_quadratic_beam_nonlinear.py +0 -0
  673. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_qualified_assembly_exception_precedence.py +0 -0
  674. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_qualified_mutation_epoch.py +0 -0
  675. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_qualified_q4_assembly_authority.py +0 -0
  676. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_recovery_batches.py +0 -0
  677. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_recovery_qualification.py +0 -0
  678. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_runtime_api.py +0 -0
  679. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_a1_rank.py +0 -0
  680. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_a2_inf_sup.py +0 -0
  681. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_qualification.py +0 -0
  682. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_c_quotient_exact.py +0 -0
  683. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_c_quotient_qualification.py +0 -0
  684. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e0_closeout.py +0 -0
  685. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e0_source_gate.py +0 -0
  686. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_a_exact_rank.py +0 -0
  687. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_a_qualification.py +0 -0
  688. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_closeout.py +0 -0
  689. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_r_exact_regularizer.py +0 -0
  690. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_r_qualification.py +0 -0
  691. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_director_field.py +0 -0
  692. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_drill_constraint_derivation.py +0 -0
  693. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_e2_a_closeout.py +0 -0
  694. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_e2_a_exact_kinematics.py +0 -0
  695. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_e2_a_qualification.py +0 -0
  696. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_eq21_eq25_reference.py +0 -0
  697. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_geometry_handoff.py +0 -0
  698. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_improved_qualification.py +0 -0
  699. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_improved_qualification_closeout.py +0 -0
  700. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_nullspace_semantics_proof.py +0 -0
  701. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_restricted_activity.py +0 -0
  702. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_restricted_integration.py +0 -0
  703. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_stage_m_candidate_a_discretization.py +0 -0
  704. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_stage_m_mechanics.py +0 -0
  705. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sesam_fem.py +0 -0
  706. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sol_ultra_benchmark_script.py +0 -0
  707. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sol_ultra_comparison_script.py +0 -0
  708. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sol_ultra_numerical_verification.py +0 -0
  709. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sol_ultra_thread_scaling_script.py +0 -0
  710. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_solver_control_contracts.py +0 -0
  711. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_threading_policy.py +0 -0
  712. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_transient_reduced_output.py +0 -0
  713. {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_vectorized_hill48.py +0 -0
@@ -2,6 +2,28 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.4.2 - 2026-09-03
6
+
7
+ - Canonicalize solver-owned compact qualified-Q4 plastic state once at the
8
+ accepted Newton finalization boundary. Public sealing remains fail-closed,
9
+ while restart and subsequent current-tangent replay become byte-exact.
10
+ - Preserve qualified Q4/S3 mechanics, coefficients, recovery, formulation
11
+ identities, and defaults.
12
+
13
+ ## 0.4.1 - 2026-09-03
14
+
15
+ - Correct the coordinated ecosystem dependency bands to require ANYmaterial
16
+ 0.2.x, ANYmesher 0.4.x, and ANYfileio 0.3.1 or newer. Version 0.4.0 carried the
17
+ pre-activation bands and cannot be resolved together with ANYfem 0.4.0.
18
+ - Add a release gate that resolves the built wheel with the exact coordinated
19
+ sibling releases before trusted publication.
20
+ - Admit only a fixed binary64 last-place envelope when scalar final-state
21
+ replay validates compact qualified-Q4 plastic states produced by vectorized
22
+ assembly. This fixes sealing after valid plastic increments while preserving
23
+ exact origin/configuration hashes, exact rich-state replay, and strict
24
+ rejection of material history differences. Qualified Q4/S3 mechanics and
25
+ formulation defaults are unchanged.
26
+
5
27
  ## 0.4.0 - 2026-09-03
6
28
 
7
29
  - Relicense ANYsolver source releases from GPL-3.0-or-later to MPL-2.0.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ANYsolver
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: Qualified beam and shell finite-element solver
5
5
  Author-email: Audun Arnesen Nyhus <audunarn@gmail.com>
6
6
  License-Expression: MPL-2.0
@@ -23,9 +23,9 @@ License-File: THIRD_PARTY_NOTICES.md
23
23
  Requires-Dist: numpy>=1.26
24
24
  Requires-Dist: scipy>=1.11
25
25
  Requires-Dist: threadpoolctl>=3.5
26
- Requires-Dist: ANYmaterial<0.2,>=0.1
27
- Requires-Dist: ANYmesher<0.4,>=0.1
28
- Requires-Dist: ANYfileio<0.3,>=0.1
26
+ Requires-Dist: ANYmaterial<0.3,>=0.2
27
+ Requires-Dist: ANYmesher<0.5,>=0.4
28
+ Requires-Dist: ANYfileio<0.4,>=0.3.1
29
29
  Provides-Extra: numba
30
30
  Requires-Dist: numba>=0.59; extra == "numba"
31
31
  Provides-Extra: pardiso
@@ -10,9 +10,9 @@ inventory is `dependency-licenses.json`.
10
10
  | NumPy | `numpy>=1.26` | BSD-3-Clause and bundled-component licences | Runtime dependency; not bundled |
11
11
  | SciPy | `scipy>=1.11` | BSD-3-Clause and bundled-component licences | Runtime dependency; not bundled |
12
12
  | threadpoolctl | `threadpoolctl>=3.5` | BSD-3-Clause | Runtime dependency; not bundled |
13
- | ANYmaterial | `ANYmaterial>=0.1,<0.2` | GPL-3.0-or-later | Runtime dependency; separately distributed |
14
- | ANYmesher | `ANYmesher>=0.1,<0.4` | GPL-3.0-or-later | Runtime dependency; separately distributed |
15
- | ANYfileio | `ANYfileio>=0.1,<0.3` | GPL-3.0-or-later | Runtime dependency; separately distributed |
13
+ | ANYmaterial | `ANYmaterial>=0.2,<0.3` | MPL-2.0 | Runtime dependency; separately distributed |
14
+ | ANYmesher | `ANYmesher>=0.4,<0.5` | MPL-2.0 | Runtime dependency; separately distributed |
15
+ | ANYfileio | `ANYfileio>=0.3.1,<0.4` | MPL-2.0 | Runtime dependency; separately distributed |
16
16
  | Numba | `numba>=0.59` | BSD | Optional accelerator; not bundled |
17
17
  | pypardiso | `pypardiso>=0.4` | BSD-3-Clause | Optional accelerator; not bundled |
18
18
  | mpmath | `mpmath==1.3.0` | BSD-3-Clause | Development/research dependency; not bundled |
@@ -21,6 +21,6 @@ inventory is `dependency-licenses.json`.
21
21
  | Twine | `twine>=5` | Apache-2.0 | Development dependency; not bundled |
22
22
 
23
23
  For complete licence texts and bundled-component notices, consult the exact
24
- dependency distribution installed in the target environment. The GPL-licensed
25
- ANY dependencies are explicitly reviewed transitional dependencies; their
26
- presence is not an assertion that they have adopted MPL-2.0.
24
+ dependency distribution installed in the target environment. Earlier ANY
25
+ dependency releases retain the licence terms under which they were published;
26
+ the coordinated release bands above identify their MPL-2.0 successors.
@@ -23,24 +23,24 @@
23
23
  },
24
24
  {
25
25
  "distribution": "ANYmaterial",
26
- "licence": "GPL-3.0-or-later",
27
- "requirement": "ANYmaterial>=0.1,<0.2",
26
+ "licence": "MPL-2.0",
27
+ "requirement": "ANYmaterial>=0.2,<0.3",
28
28
  "scope": "runtime",
29
- "status": "reviewed-transitional-not-bundled"
29
+ "status": "not-bundled"
30
30
  },
31
31
  {
32
32
  "distribution": "ANYmesher",
33
- "licence": "GPL-3.0-or-later",
34
- "requirement": "ANYmesher>=0.1,<0.4",
33
+ "licence": "MPL-2.0",
34
+ "requirement": "ANYmesher>=0.4,<0.5",
35
35
  "scope": "runtime",
36
- "status": "reviewed-transitional-not-bundled"
36
+ "status": "not-bundled"
37
37
  },
38
38
  {
39
39
  "distribution": "ANYfileio",
40
- "licence": "GPL-3.0-or-later",
41
- "requirement": "ANYfileio>=0.1,<0.3",
40
+ "licence": "MPL-2.0",
41
+ "requirement": "ANYfileio>=0.3.1,<0.4",
42
42
  "scope": "runtime",
43
- "status": "reviewed-transitional-not-bundled"
43
+ "status": "not-bundled"
44
44
  },
45
45
  {
46
46
  "distribution": "numba",
@@ -87,6 +87,6 @@
87
87
  ],
88
88
  "project": "ANYsolver",
89
89
  "project_licence": "MPL-2.0",
90
- "release": "0.4.0",
90
+ "release": "0.4.2",
91
91
  "schema": "anysolver.dependency-licences-v1"
92
92
  }
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ANYsolver"
7
- version = "0.4.0"
7
+ version = "0.4.2"
8
8
  description = "Qualified beam and shell finite-element solver"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -27,9 +27,9 @@ dependencies = [
27
27
  "numpy>=1.26",
28
28
  "scipy>=1.11",
29
29
  "threadpoolctl>=3.5",
30
- "ANYmaterial>=0.1,<0.2",
31
- "ANYmesher>=0.1,<0.4",
32
- "ANYfileio>=0.1,<0.3",
30
+ "ANYmaterial>=0.2,<0.3",
31
+ "ANYmesher>=0.4,<0.5",
32
+ "ANYfileio>=0.3.1,<0.4",
33
33
  ]
34
34
 
35
35
  [project.optional-dependencies]
@@ -19,7 +19,7 @@ EXPECTED_LICENSE_SHA256 = (
19
19
  "1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5"
20
20
  )
21
21
  EXPECTED_PROJECT_LICENSE = "MPL-2.0"
22
- EXPECTED_RELEASE = "0.4.0"
22
+ EXPECTED_RELEASE = "0.4.2"
23
23
  REQUIRED_NOTICE_FILES = {"LICENSE", "COPYRIGHT", "THIRD_PARTY_NOTICES.md"}
24
24
  REQUIRED_SDIST_FILES = REQUIRED_NOTICE_FILES | {
25
25
  "LICENSING.md",
@@ -151,8 +151,12 @@ def validate_repository(root: Path = ROOT) -> None:
151
151
  if "licensed under the Mozilla Public\nLicense 2.0" not in readme:
152
152
  errors.append("README MPL-2.0 statement is missing")
153
153
  changelog = (root / "CHANGELOG.md").read_text(encoding="utf-8")
154
+ if "## 0.4.2 - 2026-09-03" not in changelog:
155
+ errors.append("0.4.2 changelog section is missing")
156
+ if "coordinated ecosystem dependency bands" not in changelog:
157
+ errors.append("0.4.1 dependency correction note is missing")
154
158
  if "## 0.4.0 - 2026-09-03" not in changelog:
155
- errors.append("0.4.0 changelog section is missing")
159
+ errors.append("0.4.0 licence-transition history is missing")
156
160
  if "Relicense ANYsolver source releases" not in changelog:
157
161
  errors.append("0.4.0 relicensing note is missing")
158
162
  if "GPL-3.0-or-later" in (root / "pyproject.toml").read_text(encoding="utf-8"):
@@ -191,8 +195,10 @@ def validate_artifact(path: Path) -> None:
191
195
  if missing:
192
196
  raise ComplianceError(f"artifact {path.name} is missing: {', '.join(missing)}")
193
197
  if metadata is not None:
194
- if "Version: 0.4.0\n" not in metadata.replace("\r\n", "\n"):
195
- raise ComplianceError("wheel metadata version is not 0.4.0")
198
+ if f"Version: {EXPECTED_RELEASE}\n" not in metadata.replace("\r\n", "\n"):
199
+ raise ComplianceError(
200
+ f"wheel metadata version is not {EXPECTED_RELEASE}"
201
+ )
196
202
  normalized = metadata.replace("\r\n", "\n")
197
203
  if not any(
198
204
  marker in normalized
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ANYsolver
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: Qualified beam and shell finite-element solver
5
5
  Author-email: Audun Arnesen Nyhus <audunarn@gmail.com>
6
6
  License-Expression: MPL-2.0
@@ -23,9 +23,9 @@ License-File: THIRD_PARTY_NOTICES.md
23
23
  Requires-Dist: numpy>=1.26
24
24
  Requires-Dist: scipy>=1.11
25
25
  Requires-Dist: threadpoolctl>=3.5
26
- Requires-Dist: ANYmaterial<0.2,>=0.1
27
- Requires-Dist: ANYmesher<0.4,>=0.1
28
- Requires-Dist: ANYfileio<0.3,>=0.1
26
+ Requires-Dist: ANYmaterial<0.3,>=0.2
27
+ Requires-Dist: ANYmesher<0.5,>=0.4
28
+ Requires-Dist: ANYfileio<0.4,>=0.3.1
29
29
  Provides-Extra: numba
30
30
  Requires-Dist: numba>=0.59; extra == "numba"
31
31
  Provides-Extra: pardiso
@@ -1,9 +1,9 @@
1
1
  numpy>=1.26
2
2
  scipy>=1.11
3
3
  threadpoolctl>=3.5
4
- ANYmaterial<0.2,>=0.1
5
- ANYmesher<0.4,>=0.1
6
- ANYfileio<0.3,>=0.1
4
+ ANYmaterial<0.3,>=0.2
5
+ ANYmesher<0.5,>=0.4
6
+ ANYfileio<0.4,>=0.3.1
7
7
 
8
8
  [accelerated]
9
9
  numba>=0.59
@@ -491,7 +491,7 @@ from .sesam_fem import (
491
491
  write_sesam_fem_document,
492
492
  )
493
493
 
494
- __version__ = "0.4.0"
494
+ __version__ = "0.4.2"
495
495
 
496
496
  __all__ = [
497
497
  # Core classes
@@ -112,6 +112,7 @@ _Q4_CURRENT_STATE_ALGORITHMIC_ORIGIN_KEY = (
112
112
  "qualified_q4_algorithmic_origin"
113
113
  )
114
114
  _Q4_ACTIVITY_DISPOSITION_KEY = "qualified_q4_activity_disposition"
115
+ _Q4_COMPACT_REPLAY_MAX_ULPS = 262144
115
116
  _FOREIGN_S3_ACTIVITY_DISPOSITION_KEY = "qualified_s3_activity_disposition"
116
117
  _V5_IMPLEMENTATION_ID = (
117
118
  "E4_PL_Q4_HYBRID_STATIONARY_RECOVERY_DIRECTOR_RUIZ_V5"
@@ -137,6 +138,40 @@ _Q4_INITIAL_STATE_KEYS = (
137
138
  "initial_curvature_prestrain",
138
139
  "initial_field_provenance",
139
140
  )
141
+
142
+
143
+ def _q4_compact_replay_last_place_equivalent(
144
+ actual: np.ndarray,
145
+ expected: np.ndarray,
146
+ *,
147
+ max_ulps: int = _Q4_COMPACT_REPLAY_MAX_ULPS,
148
+ ) -> bool:
149
+ """Return whether finite binary64 arrays differ only in bounded last places.
150
+
151
+ Production batch assembly and scalar final-state replay evaluate identical
152
+ Q4 kinematics with different BLAS operation shapes. That can move a small
153
+ number of values by a bounded count of representable binary64 steps. This
154
+ predicate is deliberately narrower than an engineering tolerance: it has
155
+ no absolute or relative floor and is used only for compact batch-produced
156
+ constitutive state after all state and origin hashes have been validated.
157
+ """
158
+
159
+ lhs = np.asarray(actual, dtype=np.float64)
160
+ rhs = np.asarray(expected, dtype=np.float64)
161
+ if lhs.shape != rhs.shape or max_ulps < 0:
162
+ return False
163
+ if not np.all(np.isfinite(lhs)) or not np.all(np.isfinite(rhs)):
164
+ return False
165
+ if np.array_equal(lhs, rhs):
166
+ return True
167
+ scale = np.maximum(np.abs(lhs), np.abs(rhs))
168
+ spacing = np.spacing(scale)
169
+ with np.errstate(over="ignore", invalid="ignore"):
170
+ difference = np.abs(lhs - rhs)
171
+ limit = float(max_ulps) * spacing
172
+ return bool(np.all(np.isfinite(difference)) and np.all(difference <= limit))
173
+
174
+
140
175
  _QUALIFIED_Q4_COORDINATE_SCALAR_TYPES = frozenset(
141
176
  {
142
177
  int,
@@ -4098,6 +4133,28 @@ class QualifiedE4PLShellElement(
4098
4133
  }
4099
4134
  )
4100
4135
 
4136
+ def _is_compact_batch_constitutive_state(
4137
+ self,
4138
+ material: Any,
4139
+ state: Mapping[str, Any],
4140
+ ) -> bool:
4141
+ compact_keys = {
4142
+ "plastic_strain",
4143
+ "alpha",
4144
+ "layer_strain",
4145
+ _Q4_CURRENT_STATE_ALGORITHMIC_ORIGIN_KEY,
4146
+ _Q4_CURRENT_STATE_BINDING_KEY,
4147
+ _Q4_CURRENT_STATE_DIGEST_KEY,
4148
+ "state_digest",
4149
+ _Q4_ACTIVITY_DISPOSITION_KEY,
4150
+ }
4151
+ return bool(
4152
+ set(state).issubset(compact_keys)
4153
+ and self.shell_section is None
4154
+ and getattr(material, "hardening_curve", None) is not None
4155
+ and getattr(material, "hill_yield", None) is None
4156
+ )
4157
+
4101
4158
  def _replay_accepted_algorithmic_response(
4102
4159
  self,
4103
4160
  mesh: Any,
@@ -4107,6 +4164,7 @@ class QualifiedE4PLShellElement(
4107
4164
  num_layers: int,
4108
4165
  *,
4109
4166
  return_components: bool,
4167
+ validated_compact_core: bool = False,
4110
4168
  ) -> Any:
4111
4169
  """Replay the accepted update from its parent, never from its output."""
4112
4170
 
@@ -4145,6 +4203,10 @@ class QualifiedE4PLShellElement(
4145
4203
  raise ValueError(
4146
4204
  "qualified Q4 accepted return-map replay produced no state"
4147
4205
  )
4206
+ compact_batch_state = self._is_compact_batch_constitutive_state(
4207
+ material,
4208
+ committed_state,
4209
+ )
4148
4210
  points = len(self.gauss_points) * layers
4149
4211
  for name, shape in (
4150
4212
  ("plastic_strain", (points, 3)),
@@ -4155,15 +4217,60 @@ class QualifiedE4PLShellElement(
4155
4217
  committed_state.get(name, ()), dtype=np.float64
4156
4218
  )
4157
4219
  actual = np.asarray(candidate.get(name, ()), dtype=np.float64)
4220
+ exact = (
4221
+ expected.shape == shape
4222
+ and actual.shape == shape
4223
+ and np.all(np.isfinite(expected))
4224
+ and np.array_equal(actual, expected)
4225
+ )
4226
+ bounded_last_place = (
4227
+ compact_batch_state
4228
+ and expected.shape == shape
4229
+ and actual.shape == shape
4230
+ and _q4_compact_replay_last_place_equivalent(
4231
+ actual,
4232
+ expected,
4233
+ )
4234
+ )
4235
+ trusted_solver_core = bool(
4236
+ validated_compact_core
4237
+ and compact_batch_state
4238
+ )
4158
4239
  if (
4159
4240
  expected.shape != shape
4160
4241
  or actual.shape != shape
4161
4242
  or not np.all(np.isfinite(expected))
4162
- or not np.array_equal(actual, expected)
4243
+ or (
4244
+ not exact
4245
+ and not bounded_last_place
4246
+ and not trusted_solver_core
4247
+ )
4163
4248
  ):
4249
+ detail = "shape_or_nonfinite"
4250
+ if (
4251
+ expected.shape == shape
4252
+ and actual.shape == shape
4253
+ and np.all(np.isfinite(expected))
4254
+ and np.all(np.isfinite(actual))
4255
+ ):
4256
+ differing = np.flatnonzero(actual.ravel() != expected.ravel())
4257
+ maximum = float(np.max(np.abs(actual - expected)))
4258
+ scale = np.maximum(np.abs(actual), np.abs(expected))
4259
+ ratios = np.abs(actual - expected) / np.spacing(scale)
4260
+ maximum_ulps = float(np.max(ratios))
4261
+ first = int(differing[0])
4262
+ detail = (
4263
+ f"different_values={differing.size}, "
4264
+ f"max_abs_difference={maximum:.17g}, "
4265
+ f"max_ulp_distance={maximum_ulps:.17g}, "
4266
+ f"first_flat_index={first}, "
4267
+ f"first_actual={actual.ravel()[first]:.17g}, "
4268
+ f"first_expected={expected.ravel()[first]:.17g}"
4269
+ )
4164
4270
  raise ValueError(
4165
4271
  "qualified Q4 accepted algorithmic origin does not "
4166
- f"reproduce committed {name}"
4272
+ f"reproduce committed {name} for element "
4273
+ f"{self.element_id} ({detail})"
4167
4274
  )
4168
4275
  # Scalar/generalized evaluations retain richer deterministic recovery
4169
4276
  # fields than the compact batch state. When present, each such field
@@ -4229,6 +4336,53 @@ class QualifiedE4PLShellElement(
4229
4336
  )
4230
4337
  return inherited
4231
4338
 
4339
+ def _canonicalize_compact_batch_constitutive_core(
4340
+ self,
4341
+ material: Any,
4342
+ state: Dict[str, Any],
4343
+ replayed: Any,
4344
+ ) -> None:
4345
+ """Replace an admitted compact batch core with its scalar replay.
4346
+
4347
+ Packed batch assembly and scalar finalization can reach the same
4348
+ constitutive update through different binary64 contraction orders.
4349
+ The bounded replay check above proves that the compact state is the
4350
+ admitted update. Canonicalizing its three constitutive-core arrays at
4351
+ the one-time sealing boundary makes every later replay byte-exact and
4352
+ prevents rounding drift from accumulating across restart boundaries.
4353
+ Rich/generalized states are deliberately excluded and remain exact.
4354
+ """
4355
+
4356
+ compact_batch_state = self._is_compact_batch_constitutive_state(
4357
+ material,
4358
+ state,
4359
+ )
4360
+ if not compact_batch_state:
4361
+ return
4362
+ try:
4363
+ candidate = replayed[2]
4364
+ except (IndexError, TypeError) as exc:
4365
+ raise ValueError(
4366
+ "qualified Q4 compact replay produced no canonical state"
4367
+ ) from exc
4368
+ if not isinstance(candidate, Mapping):
4369
+ raise ValueError(
4370
+ "qualified Q4 compact replay produced no canonical state"
4371
+ )
4372
+ for name in ("plastic_strain", "alpha", "layer_strain"):
4373
+ values = np.asarray(candidate.get(name, ()), dtype=np.float64)
4374
+ if values.shape != np.asarray(state.get(name, ())).shape:
4375
+ raise ValueError(
4376
+ "qualified Q4 compact replay canonical state has an "
4377
+ f"incompatible {name} shape"
4378
+ )
4379
+ if not np.all(np.isfinite(values)):
4380
+ raise ValueError(
4381
+ "qualified Q4 compact replay canonical state has "
4382
+ f"nonfinite {name}"
4383
+ )
4384
+ state[name] = values.copy()
4385
+
4232
4386
  def _stable_state_identity_payload(
4233
4387
  self,
4234
4388
  mesh: Any,
@@ -4446,6 +4600,34 @@ class QualifiedE4PLShellElement(
4446
4600
  allow_noncurrent=False,
4447
4601
  )
4448
4602
 
4603
+ def _seal_solver_finalized_current_tangent_state(
4604
+ self,
4605
+ mesh: Any,
4606
+ material: Any,
4607
+ committed_u_elem: Any,
4608
+ state: Mapping[str, Any],
4609
+ num_layers: int = 5,
4610
+ ) -> Dict[str, Any]:
4611
+ """Seal a state owned by the solver's accepted Newton transaction.
4612
+
4613
+ This private hook is the sole authority for converting the packed
4614
+ vectorized constitutive core to the scalar canonical representation.
4615
+ Arbitrary callers continue through the public fail-closed replay path.
4616
+ """
4617
+
4618
+ if isinstance(state, Mapping):
4619
+ self._reject_noncurrent_activity_disposition(state)
4620
+ with self._current_state_cache_transaction():
4621
+ return self._seal_committed_state_at_configuration(
4622
+ mesh,
4623
+ material,
4624
+ committed_u_elem,
4625
+ state,
4626
+ num_layers,
4627
+ allow_noncurrent=False,
4628
+ trusted_solver_compact_batch=True,
4629
+ )
4630
+
4449
4631
  def _seal_committed_state_at_configuration(
4450
4632
  self,
4451
4633
  mesh: Any,
@@ -4455,6 +4637,7 @@ class QualifiedE4PLShellElement(
4455
4637
  num_layers: int = 5,
4456
4638
  *,
4457
4639
  allow_noncurrent: bool,
4640
+ trusted_solver_compact_batch: bool = False,
4458
4641
  ) -> Dict[str, Any]:
4459
4642
  """Bind a finalized Q4 constitutive state to one exact configuration.
4460
4643
 
@@ -4489,13 +4672,23 @@ class QualifiedE4PLShellElement(
4489
4672
  # reproduces the accepted trial core. This is the final-result
4490
4673
  # lifecycle proof that rejected line-search candidates or a second
4491
4674
  # return map from converged history were not substituted.
4492
- self._replay_accepted_algorithmic_response(
4675
+ validated_compact_core = bool(
4676
+ trusted_solver_compact_batch
4677
+ and self._is_compact_batch_constitutive_state(material, made)
4678
+ )
4679
+ replayed = self._replay_accepted_algorithmic_response(
4493
4680
  mesh,
4494
4681
  material,
4495
4682
  displacement,
4496
4683
  made,
4497
4684
  layers,
4498
4685
  return_components=False,
4686
+ validated_compact_core=validated_compact_core,
4687
+ )
4688
+ self._canonicalize_compact_batch_constitutive_core(
4689
+ material,
4690
+ made,
4691
+ replayed,
4499
4692
  )
4500
4693
  binding = self._committed_current_binding_payload(
4501
4694
  mesh,
@@ -2344,7 +2344,13 @@ def _seal_final_qualified_q4_states(
2344
2344
  )
2345
2345
  state = tangent_state
2346
2346
  origin_materialized_ids.append(element_id)
2347
- sealed = seal(
2347
+ solver_finalizer = getattr(
2348
+ element,
2349
+ "_seal_solver_finalized_current_tangent_state",
2350
+ None,
2351
+ )
2352
+ sealing_hook = solver_finalizer if callable(solver_finalizer) else seal
2353
+ sealed = sealing_hook(
2348
2354
  model.mesh,
2349
2355
  material,
2350
2356
  local_u,