ANYsolver 0.4.1__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.1 → anysolver-0.4.2}/CHANGELOG.md +8 -0
  2. {anysolver-0.4.1/src/ANYsolver.egg-info → anysolver-0.4.2}/PKG-INFO +1 -1
  3. {anysolver-0.4.1 → anysolver-0.4.2}/dependency-licenses.json +1 -1
  4. {anysolver-0.4.1 → anysolver-0.4.2}/pyproject.toml +1 -1
  5. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/check_license_compliance.py +3 -3
  6. {anysolver-0.4.1 → anysolver-0.4.2/src/ANYsolver.egg-info}/PKG-INFO +1 -1
  7. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/__init__.py +1 -1
  8. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_element.py +122 -17
  9. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_static.py +7 -1
  10. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_anyfileio_version_compatibility.py +3 -3
  11. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_functional_constructor_policy.py +5 -1
  12. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q4_current_tangent.py +13 -2
  13. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_mesh_manifest.py +19 -3
  14. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_extracted_package_wiring.py +1 -1
  15. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s3_v2d_default_activation.py +30 -2
  16. {anysolver-0.4.1 → anysolver-0.4.2}/COPYRIGHT +0 -0
  17. {anysolver-0.4.1 → anysolver-0.4.2}/LICENSE +0 -0
  18. {anysolver-0.4.1 → anysolver-0.4.2}/LICENSING.md +0 -0
  19. {anysolver-0.4.1 → anysolver-0.4.2}/MANIFEST.in +0 -0
  20. {anysolver-0.4.1 → anysolver-0.4.2}/MIGRATION.md +0 -0
  21. {anysolver-0.4.1 → anysolver-0.4.2}/README.md +0 -0
  22. {anysolver-0.4.1 → anysolver-0.4.2}/THIRD_PARTY_NOTICES.md +0 -0
  23. {anysolver-0.4.1 → anysolver-0.4.2}/docs/ARCHITECTURE.md +0 -0
  24. {anysolver-0.4.1 → anysolver-0.4.2}/docs/ARC_LENGTH.md +0 -0
  25. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E3_HW29_SOURCE_IDENTITY.md +0 -0
  26. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E3_MITC9I_REFERENCE.md +0 -0
  27. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_COMPLETION.md +0 -0
  28. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_INDEPENDENT_REVIEW.md +0 -0
  29. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_REPORT.md +0 -0
  30. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_BASELINE_AND_AUTHORITY.md +0 -0
  31. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_COMPLETION.md +0 -0
  32. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_INDEPENDENT_REVIEW.md +0 -0
  33. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_OPEN_CORE_IDENTITY.md +0 -0
  34. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_MIGRATION.md +0 -0
  35. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1AA_LOCAL_QUALIFICATION.md +0 -0
  36. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1A_INDEPENDENT_REVIEW.md +0 -0
  37. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1A_LOCAL_ALGEBRA.md +0 -0
  38. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1A_PLANAR_IDENTITY.md +0 -0
  39. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1A_PLAN_REVIEW.md +0 -0
  40. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1A_QUALIFICATION_REPORT.md +0 -0
  41. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1B_COMPLETION.md +0 -0
  42. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1B_LOCAL_QUALIFICATION.md +0 -0
  43. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1F_COMPLETION.md +0 -0
  44. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1F_DOMAIN_COERCIVITY.md +0 -0
  45. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1G_COMPLETION.md +0 -0
  46. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1G_DOMAIN_COERCIVITY.md +0 -0
  47. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1R_COMPLETION.md +0 -0
  48. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1R_FRAME_IDENTITY.md +0 -0
  49. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1R_INDEPENDENT_REVIEW.md +0 -0
  50. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1R_LOCAL_QUALIFICATION.md +0 -0
  51. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1R_PLAN_REVIEW.md +0 -0
  52. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1S_COMPLETION.md +0 -0
  53. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1S_LOCAL_QUALIFICATION.md +0 -0
  54. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1T_COMPLETION.md +0 -0
  55. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1T_LOCAL_QUALIFICATION.md +0 -0
  56. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1U_COMPLETION.md +0 -0
  57. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1U_LOCAL_QUALIFICATION.md +0 -0
  58. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1V_COMPLETION.md +0 -0
  59. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1V_LOCAL_QUALIFICATION.md +0 -0
  60. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1W_BOUNDED_RESULT.md +0 -0
  61. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1X_BOUNDED_RESULT.md +0 -0
  62. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1Y2_PIPELINED_LOCAL_ALGEBRA.md +0 -0
  63. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1Y3_LOCAL_ALGEBRA_CLOSURE.md +0 -0
  64. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1Y_BOUNDED_LOCAL_ALGEBRA.md +0 -0
  65. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1Z2_Q3STAR_SUPPORT_CLOSURE.md +0 -0
  66. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_Q1Z_SUPPORT_KKT_CLOSURE.md +0 -0
  67. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_PL_VARIATIONAL_CLOSURE.md +0 -0
  68. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_ROUTE_REPORT.md +0 -0
  69. {anysolver-0.4.1 → anysolver-0.4.2}/docs/E4_WS_FEASIBILITY_THEOREM.md +0 -0
  70. {anysolver-0.4.1 → anysolver-0.4.2}/docs/NONLINEAR_PERFORMANCE.md +0 -0
  71. {anysolver-0.4.1 → anysolver-0.4.2}/docs/PERFORMANCE_ARCHITECTURE.md +0 -0
  72. {anysolver-0.4.1 → anysolver-0.4.2}/docs/QUALITY_CONTROL.md +0 -0
  73. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_A1_RANK_CERTIFICATE.md +0 -0
  74. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_A2_INF_SUP_CERTIFICATE.md +0 -0
  75. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_INDEPENDENT_REVIEW.md +0 -0
  76. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_QUALIFICATION_REPORT.md +0 -0
  77. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_DERIVATION.md +0 -0
  78. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_INDEPENDENT_REVIEW.md +0 -0
  79. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_QUALIFICATION_REPORT.md +0 -0
  80. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_FORMULATION_DERIVATION.md +0 -0
  81. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_INDEPENDENT_REVIEW.md +0 -0
  82. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_QUALIFICATION_REPORT.md +0 -0
  83. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_A_DERIVATION.md +0 -0
  84. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_A_INDEPENDENT_REVIEW.md +0 -0
  85. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_QUALIFICATION_REPORT.md +0 -0
  86. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_R_DERIVATION.md +0 -0
  87. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_R_INDEPENDENT_REVIEW.md +0 -0
  88. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_DRILL_CONSTRAINT_DERIVATION.md +0 -0
  89. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_E2_A_EXTENSION_CLOSURE.md +0 -0
  90. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_E2_A_FORMULATION_DERIVATION.md +0 -0
  91. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_E2_A_INDEPENDENT_REVIEW.md +0 -0
  92. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_E2_A_QUALIFICATION_REPORT.md +0 -0
  93. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_EQ21_EQ25_CORRECTION_PLAN.md +0 -0
  94. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_FULL_PRODUCTION_QUALIFICATION_PROGRAM.md +0 -0
  95. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_GEOMETRY_HANDOFF.md +0 -0
  96. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_IMPROVED_FORMULATION.md +0 -0
  97. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_IMPROVED_QUALIFICATION_FINAL_STATUS.md +0 -0
  98. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_NULLSPACE_SEMANTICS_PROOF.md +0 -0
  99. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_NULLSPACE_SEMANTICS_PROOF_PLAN.md +0 -0
  100. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_PLAN_BASELINE_ADDENDUM.md +0 -0
  101. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_REDUCED_RESEARCH.md +0 -0
  102. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_RESTRICTED_RELEASE_STATUS.md +0 -0
  103. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_STAGE_M_CANDIDATE_A_DISCRETIZATION_DERIVATION.md +0 -0
  104. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_STAGE_M_CANDIDATE_A_DISCRETIZATION_REPORT.md +0 -0
  105. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_STAGE_M_CONSTRAINED_DERIVATION.md +0 -0
  106. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_STAGE_M_ENERGETIC_DERIVATION.md +0 -0
  107. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_STAGE_M_MECHANICS_SELECTION_PLAN.md +0 -0
  108. {anysolver-0.4.1 → anysolver-0.4.2}/docs/S4_STAGE_M_SELECTION_REPORT.md +0 -0
  109. {anysolver-0.4.1 → anysolver-0.4.2}/docs/THEORY.md +0 -0
  110. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_COMPANION_IMPLEMENTATION_PLAN.md +0 -0
  111. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V2_FORMULATION_PLAN.md +0 -0
  112. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V3_FORMULATION_PREREGISTRATION_PLAN.md +0 -0
  113. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4A_Q4_SUBCELL_PREREGISTRATION_PLAN.md +0 -0
  114. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4B_Q4_SUBCELL_DRILL_RELEASE_PREREGISTRATION_PLAN.md +0 -0
  115. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4C_PHYSICAL_FIRST_SUBCELL_PREREGISTRATION_PLAN.md +0 -0
  116. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4D_HERMITE_EDGE_PREREGISTRATION_PLAN.md +0 -0
  117. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4E_SHEAR_DIAGNOSIS_PREREGISTRATION_PLAN.md +0 -0
  118. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5A_MIN3_SOURCE_AUTHORITY_PLAN.md +0 -0
  119. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5B_RELAXATION_AUTHORITY_PLAN.md +0 -0
  120. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5B_RELAXED_REPAIR_FUNNEL_PLAN.md +0 -0
  121. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5C_STAGE4A_REAUTHORIZATION_PLAN.md +0 -0
  122. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5D_RESPONSE_METRIC_DIAGNOSIS_PLAN.md +0 -0
  123. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5E_STAGE4A_SPATIAL_RESPONSE_PLAN.md +0 -0
  124. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5F_PRODUCTION_PARITY_PLAN.md +0 -0
  125. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5G_STAGE4B_EXTENSION_AUTHORITY_PLAN.md +0 -0
  126. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6P_STAGE4A_COMPLETION_PLAN.md +0 -0
  127. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6Q_25PCT_SPATIAL_CORRECTION_PLAN.md +0 -0
  128. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6R_GATE_DECISION_AGREEMENT_PLAN.md +0 -0
  129. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6S_STAGE4B_PLAN.md +0 -0
  130. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6T_GLOBAL_ASSEMBLY_CACHE_PLAN.md +0 -0
  131. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6U_PERFORMANCE_SUCCESSOR_PLAN.md +0 -0
  132. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6V_ACTIVATION_GAP_AUDIT_PLAN.md +0 -0
  133. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6W_FINAL_QUALIFICATION_PLAN.md +0 -0
  134. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_A_OPEN_QUALIFICATION_PLAN.md +0 -0
  135. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_C_LINEAR_QUOTIENT_QUALIFICATION_PLAN.md +0 -0
  136. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_E0_DNV_LINEAR_BUCKLING_QUALIFICATION_PLAN.md +0 -0
  137. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_E1_ALLMAN_SESTRA_QUALIFICATION_PLAN.md +0 -0
  138. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E2_A_SOURCE_KINEMATICS_PLAN.md +0 -0
  139. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E3_A_VARIATIONAL_CLOSURE_STUDY_PLAN.md +0 -0
  140. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E3_HW29_MITC9I_ROUTE_SELECTION_PLAN.md +0 -0
  141. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_LINEAR_QUALIFICATION_PLAN.md +0 -0
  142. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_PLANAR_LINEAR_QUALIFICATION_PLAN.md +0 -0
  143. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1AA_LOCAL_QUALIFICATION_SYNTHESIS_PLAN.md +0 -0
  144. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1B_NONINTRUSION_STABILITY_LOCKING_PLAN.md +0 -0
  145. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1C_LOCKING_REPAIR_PLAN.md +0 -0
  146. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1D_ULTRATHIN_CONDITIONING_PLAN.md +0 -0
  147. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1E_ASSEMBLED_READJUDICATION_PLAN.md +0 -0
  148. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1F_DOMAIN_COERCIVITY_PLAN.md +0 -0
  149. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1G_RIGID_RANGE_COERCIVITY_PLAN.md +0 -0
  150. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1H_DOMAIN_COERCIVITY_COMPLETION_PLAN.md +0 -0
  151. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1I_ASSEMBLED_QUALIFICATION_SYNTHESIS_PLAN.md +0 -0
  152. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1J_DORMANT_PRODUCTION_PARITY_PLAN.md +0 -0
  153. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1K_WARPED_PARITY_PLAN.md +0 -0
  154. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1L_DEFAULT_ACTIVATION_PLAN.md +0 -0
  155. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1M_BURNIN_HARDENING_PLAN.md +0 -0
  156. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1R_NUMBERED_FRAME_PLAN.md +0 -0
  157. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1S_IMPLEMENTATION_COMPLETION_PLAN.md +0 -0
  158. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1T_EXACT_ORACLE_COMPLETION_PLAN.md +0 -0
  159. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1U_EXECUTION_GUARD_COMPLETION_PLAN.md +0 -0
  160. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1V_LOCAL_COMPLETION_PLAN.md +0 -0
  161. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1W_BOUNDED_EXACT_PROOF_PLAN.md +0 -0
  162. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1X_BOUNDED_TRANSPORT_CLOSURE_PLAN.md +0 -0
  163. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y2_PIPELINED_LOCAL_ALGEBRA_PLAN.md +0 -0
  164. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y3_MITC_CHECKER_REPAIR_PLAN.md +0 -0
  165. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y_BOUNDED_LOCAL_ALGEBRA_PLAN.md +0 -0
  166. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Z2_Q3STAR_SUPPORT_CLOSURE_PLAN.md +0 -0
  167. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Z_BOUNDED_SUPPORT_KKT_PLAN.md +0 -0
  168. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/S4_E4_VARIATIONAL_DRILL_CLOSURE_PLAN.md +0 -0
  169. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_batch_qualification_agent.md +0 -0
  170. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_drill_constraint_tor_agent.md +0 -0
  171. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_eq21_eq25_editor_agent.md +0 -0
  172. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_handoff_director_agent.md +0 -0
  173. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_handoff_numeric_hardening_addendum.md +0 -0
  174. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_nullspace_heimdall_auditor.md +0 -0
  175. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_nullspace_vidar_editor.md +0 -0
  176. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_reference_core_agent.md +0 -0
  177. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_stage_m_320_timeout_execution_addendum.md +0 -0
  178. {anysolver-0.4.1 → anysolver-0.4.2}/docs/agent_plans/s4_stage_m_candidate_a_discretization_addendum.md +0 -0
  179. {anysolver-0.4.1 → anysolver-0.4.2}/docs/reference_cases/README.md +0 -0
  180. {anysolver-0.4.1 → anysolver-0.4.2}/docs/reference_cases/e4_pl_s3_v2_dkmt_equation_map.md +0 -0
  181. {anysolver-0.4.1 → anysolver-0.4.2}/reports/extract_mat_mesh_io_performance_review.md +0 -0
  182. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_advanced_s4_batches.py +0 -0
  183. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_contact_work_buffer.py +0 -0
  184. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_damage_matrix_updates.py +0 -0
  185. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_e4_pl_s3_reference_batch.py +0 -0
  186. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_impact_reduced_assembly.py +0 -0
  187. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_impact_tangent_reuse.py +0 -0
  188. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_nonlinear_assembly.py +0 -0
  189. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_recovery_batches.py +0 -0
  190. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_s4_improved.py +0 -0
  191. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_sol_ultra_performance.py +0 -0
  192. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/benchmark_sol_ultra_thread_scaling.py +0 -0
  193. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/check_s4_geometry_handoff.py +0 -0
  194. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/compare_fe_baselines.py +0 -0
  195. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/compare_s4_improved.py +0 -0
  196. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/compare_sol_ultra_performance.py +0 -0
  197. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/fetch_calculix_shell_reference.py +0 -0
  198. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/generate_fe_baselines.py +0 -0
  199. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/measure_e4_pl_q1m_baseline.py +0 -0
  200. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_beam_shell_verification.py +0 -0
  201. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_beam_validity.py +0 -0
  202. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_buckling_validity.py +0 -0
  203. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_capacity_workflow.py +0 -0
  204. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_cylinder_benchmark.py +0 -0
  205. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_e4_pl_burnin_gate.py +0 -0
  206. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_element_qualification.py +0 -0
  207. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_external_references.py +0 -0
  208. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_fe_benchmarks.py +0 -0
  209. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_fe_verification.py +0 -0
  210. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_internal_shell_benchmark.py +0 -0
  211. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_mass_modal_validity.py +0 -0
  212. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_mesh_load_bc_verification.py +0 -0
  213. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_plasticity_qualification.py +0 -0
  214. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_portable_ci.py +0 -0
  215. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_recovery_policy.py +0 -0
  216. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_s4_improved_qualification.py +0 -0
  217. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/run_s4_validity.py +0 -0
  218. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/verify_sol_ultra_numerics.py +0 -0
  219. {anysolver-0.4.1 → anysolver-0.4.2}/scripts/write_production_readiness.py +0 -0
  220. {anysolver-0.4.1 → anysolver-0.4.2}/setup.cfg +0 -0
  221. {anysolver-0.4.1 → anysolver-0.4.2}/src/ANYsolver.egg-info/SOURCES.txt +0 -0
  222. {anysolver-0.4.1 → anysolver-0.4.2}/src/ANYsolver.egg-info/dependency_links.txt +0 -0
  223. {anysolver-0.4.1 → anysolver-0.4.2}/src/ANYsolver.egg-info/requires.txt +0 -0
  224. {anysolver-0.4.1 → anysolver-0.4.2}/src/ANYsolver.egg-info/top_level.txt +0 -0
  225. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/_native_rotation_state.py +0 -0
  226. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/_qualified_authority_epoch.py +0 -0
  227. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/activity.py +0 -0
  228. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/algebraic_dynamics.py +0 -0
  229. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/analysis_session.py +0 -0
  230. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/anystructure_fem_mode.py +0 -0
  231. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/arc_length.py +0 -0
  232. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/assembly.py +0 -0
  233. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/baselines.py +0 -0
  234. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/beam_sections.py +0 -0
  235. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/beam_shell_verification.py +0 -0
  236. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/beam_validity.py +0 -0
  237. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/benchmarks.py +0 -0
  238. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/boundary.py +0 -0
  239. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/buckling.py +0 -0
  240. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/buckling_validity.py +0 -0
  241. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/capacity_workflow.py +0 -0
  242. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/cases.py +0 -0
  243. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/composite_strip_verification.py +0 -0
  244. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/constraint_audit.py +0 -0
  245. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/contact.py +0 -0
  246. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/contact_performance.py +0 -0
  247. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/control.py +0 -0
  248. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/corotational.py +0 -0
  249. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/corotational_performance.py +0 -0
  250. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/current_state_tangent.py +0 -0
  251. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/cylinder_benchmarks.py +0 -0
  252. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/damage_matrix_performance.py +0 -0
  253. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/dynamics.py +0 -0
  254. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_element.py +0 -0
  255. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_initial_fields.py +0 -0
  256. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_state.py +0 -0
  257. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2_element.py +0 -0
  258. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2b_element.py +0 -0
  259. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2c_element.py +0 -0
  260. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2d_element.py +0 -0
  261. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2d_state.py +0 -0
  262. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/element_capabilities.py +0 -0
  263. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/element_qualification.py +0 -0
  264. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/elements.py +0 -0
  265. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/experimental_csr_assembly.py +0 -0
  266. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/external_references.py +0 -0
  267. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/fe_core.py +0 -0
  268. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/fracture.py +0 -0
  269. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/impact_performance.py +0 -0
  270. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/impact_reduced_assembly.py +0 -0
  271. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/imperfections.py +0 -0
  272. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/initial_field_state.py +0 -0
  273. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/jit_compiler.py +0 -0
  274. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/kernel_warmup.py +0 -0
  275. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/linalg.py +0 -0
  276. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/mass_properties.py +0 -0
  277. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/material_curves.py +0 -0
  278. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/materials.py +0 -0
  279. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/matrix_assembly.py +0 -0
  280. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/mesh_gen.py +0 -0
  281. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/mesh_load_bc_verification.py +0 -0
  282. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/modal.py +0 -0
  283. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear.py +0 -0
  284. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_analysis_diagnostics.py +0 -0
  285. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_element_evaluation.py +0 -0
  286. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_performance.py +0 -0
  287. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_batch_b.py +0 -0
  288. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_batch_c.py +0 -0
  289. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_bootstrap.py +0 -0
  290. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_reduced_assembly.py +0 -0
  291. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_restart.py +0 -0
  292. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/nonlinear_state.py +0 -0
  293. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/outcomes.py +0 -0
  294. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/plasticity.py +0 -0
  295. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/plasticity_qualification.py +0 -0
  296. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/production_readiness.py +0 -0
  297. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/quality_control.py +0 -0
  298. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/quantities.py +0 -0
  299. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/recovery.py +0 -0
  300. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/recovery_batches.py +0 -0
  301. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/recovery_policy.py +0 -0
  302. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/recovery_s4.py +0 -0
  303. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/reference_cases.py +0 -0
  304. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/results.py +0 -0
  305. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/runtime.py +0 -0
  306. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/s3_reference_batch.py +0 -0
  307. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/s3_v2c_fast_assembly.py +0 -0
  308. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/s3_v2d_fast_assembly.py +0 -0
  309. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/s4_validity.py +0 -0
  310. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sections.py +0 -0
  311. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/__init__.py +0 -0
  312. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/__main__.py +0 -0
  313. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/diagnostics.py +0 -0
  314. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/document.py +0 -0
  315. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/exporter.py +0 -0
  316. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/importer.py +0 -0
  317. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/records.py +0 -0
  318. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/schema.py +0 -0
  319. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/sif_importer.py +0 -0
  320. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/sesam_fem/validation.py +0 -0
  321. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_benchmarks.py +0 -0
  322. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_formulations/director_field.py +0 -0
  323. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_formulations/geometry_provenance.py +0 -0
  324. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_quality.py +0 -0
  325. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_reference.py +0 -0
  326. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_scalar.py +0 -0
  327. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_formulations/protocol.py +0 -0
  328. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_formulations/q4_common.py +0 -0
  329. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_formulations/s4_restricted_policy.py +0 -0
  330. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/shell_sections.py +0 -0
  331. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/test_cases.py +0 -0
  332. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/threading_policy.py +0 -0
  333. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/validation.py +0 -0
  334. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/vectorized_beam.py +0 -0
  335. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/vectorized_generalized_shell.py +0 -0
  336. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/vectorized_hill48.py +0 -0
  337. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/vectorized_nonlinear.py +0 -0
  338. {anysolver-0.4.1 → anysolver-0.4.2}/src/anysolver/vectorized_stiffness.py +0 -0
  339. {anysolver-0.4.1 → anysolver-0.4.2}/tests/_e4_pl_s3_native_trial.py +0 -0
  340. {anysolver-0.4.1 → anysolver-0.4.2}/tests/conftest.py +0 -0
  341. {anysolver-0.4.1 → anysolver-0.4.2}/tests/fixtures/fe_baselines/baseline.json +0 -0
  342. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_advanced_s4_batches.py +0 -0
  343. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_analysis_session.py +0 -0
  344. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_anymesher_version_compatibility.py +0 -0
  345. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_arc_length.py +0 -0
  346. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_batch_b_activation.py +0 -0
  347. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_beam_axis_conventions.py +0 -0
  348. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_beam_shell_verification.py +0 -0
  349. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_constraint_audit.py +0 -0
  350. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_contact_work_buffer.py +0 -0
  351. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_corotational.py +0 -0
  352. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_corotational_performance.py +0 -0
  353. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_damage_matrix_performance.py +0 -0
  354. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e3_baseline.py +0 -0
  355. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e3_closeout.py +0 -0
  356. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e3_hw29_identity.py +0 -0
  357. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e3_mitc9i_reference.py +0 -0
  358. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e3_route_selection.py +0 -0
  359. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_baseline.py +0 -0
  360. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_closeout.py +0 -0
  361. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_core_identity.py +0 -0
  362. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_burnin.py +0 -0
  363. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_component_snapshot_integrity.py +0 -0
  364. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_current_state_input_ownership.py +0 -0
  365. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_default_activation.py +0 -0
  366. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_dormant_element.py +0 -0
  367. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_guarded_observations.py +0 -0
  368. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_identity.py +0 -0
  369. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_mixed_current_state_route.py +0 -0
  370. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_orchestrator_operation_lease.py +0 -0
  371. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_parity_matrix.py +0 -0
  372. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_planar_physical_recovery.py +0 -0
  373. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1a_authority.py +0 -0
  374. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1a_exact.py +0 -0
  375. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1aa_local_qualification_synthesis.py +0 -0
  376. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1b_assembled_stability.py +0 -0
  377. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1b_closeout.py +0 -0
  378. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1b_contract.py +0 -0
  379. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1b_implementation_authority.py +0 -0
  380. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1b_locking_refinement.py +0 -0
  381. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1b_nonintrusion_recovery.py +0 -0
  382. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1b_preregistration_authority.py +0 -0
  383. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1b_runner_bounds.py +0 -0
  384. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1c_locking_repair.py +0 -0
  385. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1d_ultrathin_conditioning.py +0 -0
  386. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1e_assembled_readjudication.py +0 -0
  387. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1f_closeout.py +0 -0
  388. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1f_preregistration_authority.py +0 -0
  389. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1g_closeout.py +0 -0
  390. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1g_rigid_range_coercivity.py +0 -0
  391. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1h_domain_coercivity.py +0 -0
  392. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1i_assembled_qualification.py +0 -0
  393. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1r_closeout.py +0 -0
  394. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1r_preregistration_authority.py +0 -0
  395. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1s_closeout.py +0 -0
  396. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1s_frame_and_fields.py +0 -0
  397. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1s_global_supports.py +0 -0
  398. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1s_local_algebra.py +0 -0
  399. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1s_preregistration_authority.py +0 -0
  400. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1s_recovery.py +0 -0
  401. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1s_terminal_and_agreement.py +0 -0
  402. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_closeout.py +0 -0
  403. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_contract.py +0 -0
  404. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_exact_backend.py +0 -0
  405. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_frame_and_fields.py +0 -0
  406. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_global_supports.py +0 -0
  407. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_local_algebra.py +0 -0
  408. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_preregistration_authority.py +0 -0
  409. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_recovery.py +0 -0
  410. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1t_terminal_and_agreement.py +0 -0
  411. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_authority_guard.py +0 -0
  412. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_closeout.py +0 -0
  413. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_contract.py +0 -0
  414. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_exact_backend.py +0 -0
  415. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_frame_and_fields.py +0 -0
  416. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_global_supports.py +0 -0
  417. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_local_algebra.py +0 -0
  418. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_preregistration_authority.py +0 -0
  419. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_recovery.py +0 -0
  420. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1u_terminal_and_agreement.py +0 -0
  421. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_authority_guard.py +0 -0
  422. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_closeout.py +0 -0
  423. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_commissioning.py +0 -0
  424. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_contract.py +0 -0
  425. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_exact_backend.py +0 -0
  426. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_frame_and_fields.py +0 -0
  427. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_global_supports.py +0 -0
  428. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_local_algebra.py +0 -0
  429. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_preregistration_authority.py +0 -0
  430. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_recovery.py +0 -0
  431. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1v_terminal_and_agreement.py +0 -0
  432. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1w_bounded_proof.py +0 -0
  433. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1x_bounded_transport.py +0 -0
  434. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1y2_pipelined_local_algebra.py +0 -0
  435. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1y3_mitc_checker_repair.py +0 -0
  436. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1y_bounded_local_algebra.py +0 -0
  437. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1z2_q3star_support_closure.py +0 -0
  438. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q1z_bounded_support_kkt.py +0 -0
  439. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q4_state_lifecycle.py +0 -0
  440. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_q4_stationary_conditioning.py +0 -0
  441. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_assembly_fast_total.py +0 -0
  442. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_bubble_policy.py +0 -0
  443. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_committed_state.py +0 -0
  444. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_contact_virtual_work.py +0 -0
  445. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_current_tangent_buckling.py +0 -0
  446. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_descriptor_hardening.py +0 -0
  447. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_descriptor_spectrum.py +0 -0
  448. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_direct_nonlinear_response.py +0 -0
  449. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_domain_coercivity.py +0 -0
  450. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_dynamic_guard.py +0 -0
  451. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_exact_oracle.py +0 -0
  452. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_fast_total.py +0 -0
  453. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_formulation_contract.py +0 -0
  454. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_generalized_initial_fields.py +0 -0
  455. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_generalized_nonlinear.py +0 -0
  456. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_geometric_stiffness.py +0 -0
  457. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_guard_persistence.py +0 -0
  458. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_independent_linear_reference.py +0 -0
  459. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_mass.py +0 -0
  460. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_eigen_performance.py +0 -0
  461. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_mesh_qualification_runner.py +0 -0
  462. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_structural_qualification.py +0 -0
  463. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_modal.py +0 -0
  464. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_modal_provenance.py +0 -0
  465. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_model_bound_nonlinear_hook.py +0 -0
  466. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_covariance.py +0 -0
  467. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_full_d3.py +0 -0
  468. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_kernel.py +0 -0
  469. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_response.py +0 -0
  470. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_nonlinear_workflows.py +0 -0
  471. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_objective_pl.py +0 -0
  472. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_opt_in.py +0 -0
  473. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_patch_recovery.py +0 -0
  474. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_physical_director_reversal.py +0 -0
  475. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_physical_recovery.py +0 -0
  476. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_prestressed_modal_buckling.py +0 -0
  477. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_q4_burnin_authority.py +0 -0
  478. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_qv9_v1_nogo_closeout.py +0 -0
  479. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_reference_batch.py +0 -0
  480. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_reference_surface_offset.py +0 -0
  481. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_restart_history.py +0 -0
  482. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_shared_rotation_kinematics.py +0 -0
  483. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_state_lifecycle.py +0 -0
  484. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_state_schema_closure.py +0 -0
  485. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_transient_algebraic.py +0 -0
  486. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_authority.py +0 -0
  487. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_bounded_process.py +0 -0
  488. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_candidate_binding.py +0 -0
  489. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_component_cache.py +0 -0
  490. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_dkmt_derivation.py +0 -0
  491. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_candidate_review.py +0 -0
  492. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel.py +0 -0
  493. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel_checker.py +0 -0
  494. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel_producer.py +0 -0
  495. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_independent_reference.py +0 -0
  496. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_mixed_scope.py +0 -0
  497. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_production.py +0 -0
  498. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_production_reference.py +0 -0
  499. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_stage4a_authority.py +0 -0
  500. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_stage4a_coordinator.py +0 -0
  501. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_interface_closeout.py +0 -0
  502. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_interface_funnel.py +0 -0
  503. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_production.py +0 -0
  504. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2c_production.py +0 -0
  505. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2d_linear_native_parity.py +0 -0
  506. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2d_native_state_corotational.py +0 -0
  507. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3_equation_authority.py +0 -0
  508. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3_preregistration.py +0 -0
  509. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3a_implementation_screen.py +0 -0
  510. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4a_preregistration.py +0 -0
  511. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4a_q4_subcell_screen.py +0 -0
  512. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4b_drill_release_screen.py +0 -0
  513. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4b_preregistration.py +0 -0
  514. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4c_physical_first_screen.py +0 -0
  515. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4c_preregistration.py +0 -0
  516. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4d_hermite_edge_screen.py +0 -0
  517. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4d_preregistration.py +0 -0
  518. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4e_preregistration.py +0 -0
  519. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4e_shear_diagnosis.py +0 -0
  520. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5a_min3_screen.py +0 -0
  521. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5a_preregistration.py +0 -0
  522. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5b_relaxation_authority.py +0 -0
  523. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5b_relaxed_screen.py +0 -0
  524. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5c_stage4a.py +0 -0
  525. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5d_response_metric.py +0 -0
  526. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5e_stage4a_spatial.py +0 -0
  527. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5f_production_parity.py +0 -0
  528. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5g_stage4b_extension_authority.py +0 -0
  529. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5h_closeout.py +0 -0
  530. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5h_local_parity.py +0 -0
  531. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_r1_closeout.py +0 -0
  532. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_r1_diagnosis.py +0 -0
  533. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_stage4b.py +0 -0
  534. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_stage4b_closeout.py +0 -0
  535. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_closeout.py +0 -0
  536. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_protocol.py +0 -0
  537. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_repair.py +0 -0
  538. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_closeout.py +0 -0
  539. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_protocol.py +0 -0
  540. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_stage4b.py +0 -0
  541. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_closeout.py +0 -0
  542. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_parity.py +0 -0
  543. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_protocol.py +0 -0
  544. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5n_activation_audit.py +0 -0
  545. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5n_closeout.py +0 -0
  546. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6_native_parity_source_authority.py +0 -0
  547. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6_native_parity_source_closeout.py +0 -0
  548. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6a_linear_native_parity_closeout.py +0 -0
  549. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6a_linear_native_parity_contract.py +0 -0
  550. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6b_native_state_corotational_closeout.py +0 -0
  551. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6b_native_state_corotational_contract.py +0 -0
  552. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart.py +0 -0
  553. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart_closeout.py +0 -0
  554. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart_contract.py +0 -0
  555. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch.py +0 -0
  556. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch_closeout.py +0 -0
  557. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch_contract.py +0 -0
  558. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6e_final_parity.py +0 -0
  559. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6e_final_parity_closeout.py +0 -0
  560. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6f_final_parity_audit.py +0 -0
  561. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6g_closeout.py +0 -0
  562. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6g_recovery_current_eigen.py +0 -0
  563. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6h_closeout.py +0 -0
  564. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6h_stage4a_authority.py +0 -0
  565. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6i_stage4a_execution_authority.py +0 -0
  566. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6i_stage4a_execution_closeout.py +0 -0
  567. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6j_stage4a_execution_authority.py +0 -0
  568. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6j_stage4a_execution_closeout.py +0 -0
  569. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_execution_authority.py +0 -0
  570. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_execution_closeout.py +0 -0
  571. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_request_authority.py +0 -0
  572. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_request_publisher.py +0 -0
  573. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_execution_authority.py +0 -0
  574. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_execution_closeout.py +0 -0
  575. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_request_authority.py +0 -0
  576. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_bounded_timeout_closeout.py +0 -0
  577. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_execution_authority.py +0 -0
  578. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_execution_closeout.py +0 -0
  579. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_request_authority.py +0 -0
  580. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6n_lease_optimization_closeout.py +0 -0
  581. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6n_stage4a_profile.py +0 -0
  582. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_execution_closeout.py +0 -0
  583. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_missing_leaf_graph.py +0 -0
  584. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_request_authority.py +0 -0
  585. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_closeout.py +0 -0
  586. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_completion.py +0 -0
  587. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_execution_authority.py +0 -0
  588. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6q_25pct_spatial.py +0 -0
  589. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6r_gate_decision.py +0 -0
  590. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6s_stage4b.py +0 -0
  591. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6s_stage4b_closeout.py +0 -0
  592. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache.py +0 -0
  593. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache_authority.py +0 -0
  594. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache_closeout.py +0 -0
  595. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6u_performance.py +0 -0
  596. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6u_performance_closeout.py +0 -0
  597. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6v_activation_gap_audit.py +0 -0
  598. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6v_activation_gap_closeout.py +0 -0
  599. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6w_final_qualification.py +0 -0
  600. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6w_final_qualification_closeout.py +0 -0
  601. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_transient_authority.py +0 -0
  602. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_warped_qualification.py +0 -0
  603. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_pl_workflow_parity.py +0 -0
  604. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_route.py +0 -0
  605. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_e4_ws_feasibility.py +0 -0
  606. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_element_activity.py +0 -0
  607. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_element_activity_integration.py +0 -0
  608. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_experimental_csr_assembly.py +0 -0
  609. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_external_references.py +0 -0
  610. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_anystructure_fem_mode.py +0 -0
  611. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_architecture.py +0 -0
  612. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_buckling.py +0 -0
  613. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_capacity_workflow.py +0 -0
  614. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_contact.py +0 -0
  615. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_corotational_beam.py +0 -0
  616. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_cylinder_benchmarks.py +0 -0
  617. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_dynamics.py +0 -0
  618. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_element_qualification.py +0 -0
  619. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_element_quality.py +0 -0
  620. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_fracture.py +0 -0
  621. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_infrastructure.py +0 -0
  622. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_mass_modal.py +0 -0
  623. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_dnv.py +0 -0
  624. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_limit_point.py +0 -0
  625. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_static.py +0 -0
  626. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_plasticity_qualification.py +0 -0
  627. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_recovery_policy.py +0 -0
  628. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_reference_cases.py +0 -0
  629. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_s4_validity.py +0 -0
  630. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_shell_verification.py +0 -0
  631. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_theory.py +0 -0
  632. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_triangular_shell.py +0 -0
  633. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_fe_solver_triangular_shell_backend.py +0 -0
  634. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_follower_pressure.py +0 -0
  635. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_generalized_beam_sections.py +0 -0
  636. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_generalized_section_api_workflows.py +0 -0
  637. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_generalized_section_mass_properties.py +0 -0
  638. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_generalized_shell_sections.py +0 -0
  639. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_generalized_state_recovery.py +0 -0
  640. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_geometry_panel.py +0 -0
  641. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_hht_alpha.py +0 -0
  642. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_hill48_plane_stress_plasticity.py +0 -0
  643. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_impact_reduced_assembly.py +0 -0
  644. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_impact_tangent_reuse.py +0 -0
  645. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_initial_fields_and_staged_history.py +0 -0
  646. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_license_compliance.py +0 -0
  647. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_local_patch_transition.py +0 -0
  648. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_material_history_recovery.py +0 -0
  649. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_mesh_load_bc_verification.py +0 -0
  650. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_mesher_improvements.py +0 -0
  651. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_mixed_shell_quadrature_grouping.py +0 -0
  652. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_namespace_neutral_deepcopy.py +0 -0
  653. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_native_rotation_state.py +0 -0
  654. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nodal_stress_recovery.py +0 -0
  655. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_analysis_diagnostics.py +0 -0
  656. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_impact_plasticity.py +0 -0
  657. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_performance.py +0 -0
  658. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_performance_batch_b.py +0 -0
  659. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_performance_batch_c.py +0 -0
  660. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_restart_checkpoint.py +0 -0
  661. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_state_batches.py +0 -0
  662. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_state_lifecycle.py +0 -0
  663. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_nonlinear_static_state_lifecycle.py +0 -0
  664. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_orthotropic_elements.py +0 -0
  665. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_orthotropic_material_contract.py +0 -0
  666. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_orthotropic_workflow_integration.py +0 -0
  667. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_performance_improvements.py +0 -0
  668. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_phase2.py +0 -0
  669. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_plane_stress_analytical_tangent.py +0 -0
  670. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_production_readiness.py +0 -0
  671. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_production_validation.py +0 -0
  672. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_quadratic_beam_nonlinear.py +0 -0
  673. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_qualified_assembly_exception_precedence.py +0 -0
  674. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_qualified_mutation_epoch.py +0 -0
  675. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_qualified_q4_assembly_authority.py +0 -0
  676. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_recovery_batches.py +0 -0
  677. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_recovery_qualification.py +0 -0
  678. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_runtime_api.py +0 -0
  679. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_a1_rank.py +0 -0
  680. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_a2_inf_sup.py +0 -0
  681. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_qualification.py +0 -0
  682. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_c_quotient_exact.py +0 -0
  683. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_c_quotient_qualification.py +0 -0
  684. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_e0_closeout.py +0 -0
  685. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_e0_source_gate.py +0 -0
  686. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_e1_a_exact_rank.py +0 -0
  687. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_e1_a_qualification.py +0 -0
  688. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_e1_closeout.py +0 -0
  689. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_e1_r_exact_regularizer.py +0 -0
  690. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_candidate_e1_r_qualification.py +0 -0
  691. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_director_field.py +0 -0
  692. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_drill_constraint_derivation.py +0 -0
  693. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_e2_a_closeout.py +0 -0
  694. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_e2_a_exact_kinematics.py +0 -0
  695. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_e2_a_qualification.py +0 -0
  696. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_eq21_eq25_reference.py +0 -0
  697. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_geometry_handoff.py +0 -0
  698. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_improved_qualification.py +0 -0
  699. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_improved_qualification_closeout.py +0 -0
  700. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_nullspace_semantics_proof.py +0 -0
  701. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_restricted_activity.py +0 -0
  702. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_restricted_integration.py +0 -0
  703. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_stage_m_candidate_a_discretization.py +0 -0
  704. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_s4_stage_m_mechanics.py +0 -0
  705. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_sesam_fem.py +0 -0
  706. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_sol_ultra_benchmark_script.py +0 -0
  707. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_sol_ultra_comparison_script.py +0 -0
  708. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_sol_ultra_numerical_verification.py +0 -0
  709. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_sol_ultra_thread_scaling_script.py +0 -0
  710. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_solver_control_contracts.py +0 -0
  711. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_threading_policy.py +0 -0
  712. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_transient_reduced_output.py +0 -0
  713. {anysolver-0.4.1 → anysolver-0.4.2}/tests/test_vectorized_hill48.py +0 -0
@@ -2,6 +2,14 @@
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
+
5
13
  ## 0.4.1 - 2026-09-03
6
14
 
7
15
  - Correct the coordinated ecosystem dependency bands to require ANYmaterial
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ANYsolver
3
- Version: 0.4.1
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
@@ -87,6 +87,6 @@
87
87
  ],
88
88
  "project": "ANYsolver",
89
89
  "project_licence": "MPL-2.0",
90
- "release": "0.4.1",
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.1"
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"
@@ -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.1"
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,8 @@ 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.1 - 2026-09-03" not in changelog:
155
- errors.append("0.4.1 changelog section is missing")
154
+ if "## 0.4.2 - 2026-09-03" not in changelog:
155
+ errors.append("0.4.2 changelog section is missing")
156
156
  if "coordinated ecosystem dependency bands" not in changelog:
157
157
  errors.append("0.4.1 dependency correction note is missing")
158
158
  if "## 0.4.0 - 2026-09-03" not in changelog:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ANYsolver
3
- Version: 0.4.1
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
@@ -491,7 +491,7 @@ from .sesam_fem import (
491
491
  write_sesam_fem_document,
492
492
  )
493
493
 
494
- __version__ = "0.4.1"
494
+ __version__ = "0.4.2"
495
495
 
496
496
  __all__ = [
497
497
  # Core classes
@@ -4133,6 +4133,28 @@ class QualifiedE4PLShellElement(
4133
4133
  }
4134
4134
  )
4135
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
+
4136
4158
  def _replay_accepted_algorithmic_response(
4137
4159
  self,
4138
4160
  mesh: Any,
@@ -4142,6 +4164,7 @@ class QualifiedE4PLShellElement(
4142
4164
  num_layers: int,
4143
4165
  *,
4144
4166
  return_components: bool,
4167
+ validated_compact_core: bool = False,
4145
4168
  ) -> Any:
4146
4169
  """Replay the accepted update from its parent, never from its output."""
4147
4170
 
@@ -4180,21 +4203,9 @@ class QualifiedE4PLShellElement(
4180
4203
  raise ValueError(
4181
4204
  "qualified Q4 accepted return-map replay produced no state"
4182
4205
  )
4183
- compact_keys = {
4184
- "plastic_strain",
4185
- "alpha",
4186
- "layer_strain",
4187
- _Q4_CURRENT_STATE_ALGORITHMIC_ORIGIN_KEY,
4188
- _Q4_CURRENT_STATE_BINDING_KEY,
4189
- _Q4_CURRENT_STATE_DIGEST_KEY,
4190
- "state_digest",
4191
- _Q4_ACTIVITY_DISPOSITION_KEY,
4192
- }
4193
- compact_batch_state = (
4194
- set(committed_state).issubset(compact_keys)
4195
- and self.shell_section is None
4196
- and getattr(material, "hardening_curve", None) is not None
4197
- and getattr(material, "hill_yield", None) is None
4206
+ compact_batch_state = self._is_compact_batch_constitutive_state(
4207
+ material,
4208
+ committed_state,
4198
4209
  )
4199
4210
  points = len(self.gauss_points) * layers
4200
4211
  for name, shape in (
@@ -4221,11 +4232,19 @@ class QualifiedE4PLShellElement(
4221
4232
  expected,
4222
4233
  )
4223
4234
  )
4235
+ trusted_solver_core = bool(
4236
+ validated_compact_core
4237
+ and compact_batch_state
4238
+ )
4224
4239
  if (
4225
4240
  expected.shape != shape
4226
4241
  or actual.shape != shape
4227
4242
  or not np.all(np.isfinite(expected))
4228
- or (not exact and not bounded_last_place)
4243
+ or (
4244
+ not exact
4245
+ and not bounded_last_place
4246
+ and not trusted_solver_core
4247
+ )
4229
4248
  ):
4230
4249
  detail = "shape_or_nonfinite"
4231
4250
  if (
@@ -4317,6 +4336,53 @@ class QualifiedE4PLShellElement(
4317
4336
  )
4318
4337
  return inherited
4319
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
+
4320
4386
  def _stable_state_identity_payload(
4321
4387
  self,
4322
4388
  mesh: Any,
@@ -4534,6 +4600,34 @@ class QualifiedE4PLShellElement(
4534
4600
  allow_noncurrent=False,
4535
4601
  )
4536
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
+
4537
4631
  def _seal_committed_state_at_configuration(
4538
4632
  self,
4539
4633
  mesh: Any,
@@ -4543,6 +4637,7 @@ class QualifiedE4PLShellElement(
4543
4637
  num_layers: int = 5,
4544
4638
  *,
4545
4639
  allow_noncurrent: bool,
4640
+ trusted_solver_compact_batch: bool = False,
4546
4641
  ) -> Dict[str, Any]:
4547
4642
  """Bind a finalized Q4 constitutive state to one exact configuration.
4548
4643
 
@@ -4577,13 +4672,23 @@ class QualifiedE4PLShellElement(
4577
4672
  # reproduces the accepted trial core. This is the final-result
4578
4673
  # lifecycle proof that rejected line-search candidates or a second
4579
4674
  # return map from converged history were not substituted.
4580
- 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(
4581
4680
  mesh,
4582
4681
  material,
4583
4682
  displacement,
4584
4683
  made,
4585
4684
  layers,
4586
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,
4587
4692
  )
4588
4693
  binding = self._committed_current_binding_payload(
4589
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,
@@ -187,7 +187,7 @@ def _assert_complete_source_graphs(roots: dict[str, str]) -> None:
187
187
  "anyfileio": archives / "fileio-current",
188
188
  },
189
189
  {
190
- "anysolver": "0.4.1",
190
+ "anysolver": "0.4.2",
191
191
  "anymaterial": "0.2.0",
192
192
  "anygeometry": "0.4.2",
193
193
  "anymesher": "0.4.0",
@@ -632,7 +632,7 @@ def test_workflows_pin_compatibility_graph_and_actions() -> None:
632
632
 
633
633
  assert probe_environment(mesh_job) == "\n".join(
634
634
  (
635
- ' EXPECTED_ANYSOLVER_VERSION: "0.4.1"',
635
+ ' EXPECTED_ANYSOLVER_VERSION: "0.4.2"',
636
636
  ' EXPECTED_ANYMATERIAL_VERSION: "0.2.0"',
637
637
  " EXPECTED_ANYMESHER_VERSION: ${{ matrix.anymesher-version }}",
638
638
  " EXPECTED_ANYGEOMETRY_VERSION: ${{ matrix.anygeometry-version }}",
@@ -642,7 +642,7 @@ def test_workflows_pin_compatibility_graph_and_actions() -> None:
642
642
  )
643
643
  assert probe_environment(fileio_job) == "\n".join(
644
644
  (
645
- ' EXPECTED_ANYSOLVER_VERSION: "0.4.1"',
645
+ ' EXPECTED_ANYSOLVER_VERSION: "0.4.2"',
646
646
  ' EXPECTED_ANYMATERIAL_VERSION: "0.2.0"',
647
647
  " EXPECTED_ANYFILEIO_VERSION: ${{ matrix.anyfileio-version }}",
648
648
  " EXPECTED_ANYMESHER_VERSION: ${{ matrix.anymesher-version }}",
@@ -259,6 +259,10 @@ def test_functional_lane_direct_shell_calls_are_provably_non_q4() -> None:
259
259
  "tests/test_e4_pl_q4_current_tangent.py",
260
260
  "test_vectorized_q4_accepted_tangent_matches_sealed_scalar_replay_exactly",
261
261
  ): 1,
262
+ (
263
+ "tests/test_e4_pl_q4_current_tangent.py",
264
+ "test_distorted_vectorized_q4_plastic_history_replays_after_multiple_increments",
265
+ ): 1,
262
266
  ("tests/test_e4_pl_q4_state_lifecycle.py", "_loaded_q4_model"): 1,
263
267
  (
264
268
  "tests/test_e4_pl_q4_state_lifecycle.py",
@@ -309,7 +313,7 @@ def test_functional_lane_direct_shell_calls_are_provably_non_q4() -> None:
309
313
  }
310
314
  )
311
315
  assert calls["QualifiedE4PLShellElement"] == expected_qualified_q4
312
- assert sum(calls["QualifiedE4PLShellElement"].values()) == 53
316
+ assert sum(calls["QualifiedE4PLShellElement"].values()) == 54
313
317
 
314
318
 
315
319
  def test_functional_lane_legacy_q4_calls_are_explicit_and_closed_world() -> None:
@@ -983,9 +983,20 @@ def test_vectorized_q4_accepted_tangent_matches_sealed_scalar_replay_exactly() -
983
983
  3,
984
984
  tangent_evaluated=True,
985
985
  )
986
- sealed = element.seal_committed_current_tangent_state(
987
- mesh, material, displacement, trial, 3
986
+ canonical_plastic = np.asarray(plastic[0]).copy()
987
+ perturbed = copy.deepcopy(trial)
988
+ positive = int(np.flatnonzero(canonical_plastic > 0.0)[0])
989
+ changed = canonical_plastic.ravel().copy()
990
+ changed[positive] += 568728.0 * np.spacing(abs(changed[positive]))
991
+ perturbed["plastic_strain"] = changed.reshape(canonical_plastic.shape)
992
+ with pytest.raises(ValueError, match="does not reproduce committed"):
993
+ element.seal_committed_current_tangent_state(
994
+ mesh, material, displacement, perturbed, 3
995
+ )
996
+ sealed = element._seal_solver_finalized_current_tangent_state(
997
+ mesh, material, displacement, perturbed, 3
988
998
  )
999
+ np.testing.assert_array_equal(sealed["plastic_strain"], canonical_plastic)
989
1000
  components = element.compute_committed_current_tangent_components(
990
1001
  mesh, material, displacement, sealed, 3
991
1002
  )
@@ -36,6 +36,12 @@ Q4_REPLAY_HOTFIX = (
36
36
  / "reference_cases"
37
37
  / "e4_pl_q4_0_4_1_replay_hotfix.json"
38
38
  )
39
+ Q4_REPLAY_CANONICALIZATION = (
40
+ ROOT
41
+ / "docs"
42
+ / "reference_cases"
43
+ / "e4_pl_q4_0_4_2_replay_canonicalization.json"
44
+ )
39
45
  Q4_MECHANICS_AUTHORITY_SCHEMA = "anysolver.python-ast-mechanics-closure-v1"
40
46
  Q4_MECHANICS_CANONICALIZATION = (
41
47
  "AST_NODE_ORDERED_FIELDS_COMPACT_JSON_WITHOUT_LOCATIONS_DOCSTRINGS_"
@@ -479,18 +485,28 @@ def test_qualification_contract_and_replay_hotfix_bind_q4_mechanics_symbols() ->
479
485
  )
480
486
  hotfix = _strict_json(Q4_REPLAY_HOTFIX.read_bytes())
481
487
  correction = hotfix["source_correction"]
488
+ successor = _strict_json(Q4_REPLAY_CANONICALIZATION.read_bytes())
489
+ successor_correction = successor["correction"]
482
490
  changed = sorted(
483
491
  name
484
492
  for name, digest in expected.items()
485
493
  if actual["symbols"][name] != digest
486
494
  )
487
495
  added = sorted(set(actual["symbols"]) - set(expected))
488
- assert changed == correction["updated_existing_symbols"]
489
- assert added == correction["added_symbols"]
496
+ assert changed == successor_correction["cumulative_updated_existing_symbols"]
497
+ assert added == successor_correction["cumulative_added_symbols"]
498
+ assert correction["updated_existing_symbols"] == changed
499
+ assert set(correction["added_symbols"]) < set(added)
490
500
  assert authority["aggregate_sha256"] == correction[
491
501
  "prior_mechanics_aggregate_sha256"
492
502
  ]
493
- assert _q4_mechanics_aggregate(actual) == correction[
503
+ assert correction["current_mechanics_aggregate_sha256"] == successor_correction[
504
+ "prior_mechanics_aggregate_sha256"
505
+ ]
506
+ assert hashlib.sha256(Q4_REPLAY_HOTFIX.read_bytes()).hexdigest().upper() == successor[
507
+ "prior_evidence"
508
+ ]["sha256"]
509
+ assert _q4_mechanics_aggregate(actual) == successor_correction[
494
510
  "current_mechanics_aggregate_sha256"
495
511
  ]
496
512
 
@@ -37,4 +37,4 @@ def test_file_document_and_result_api_is_canonical_anyfileio() -> None:
37
37
 
38
38
 
39
39
  def test_distribution_version_marks_the_extraction_boundary() -> None:
40
- assert anysolver.__version__ == "0.4.1"
40
+ assert anysolver.__version__ == "0.4.2"
@@ -42,6 +42,12 @@ Q4_REPLAY_HOTFIX = (
42
42
  / "reference_cases"
43
43
  / "e4_pl_q4_0_4_1_replay_hotfix.json"
44
44
  )
45
+ Q4_REPLAY_CANONICALIZATION = (
46
+ ROOT
47
+ / "docs"
48
+ / "reference_cases"
49
+ / "e4_pl_q4_0_4_2_replay_canonicalization.json"
50
+ )
45
51
 
46
52
 
47
53
  def _strict_object(pairs: list[tuple[str, object]]) -> dict[str, object]:
@@ -67,6 +73,20 @@ def _q4_replay_hotfix() -> dict[str, object]:
67
73
  return payload
68
74
 
69
75
 
76
+ def _q4_replay_canonicalization() -> dict[str, object]:
77
+ raw = Q4_REPLAY_CANONICALIZATION.read_bytes()
78
+ payload = json.loads(raw, object_pairs_hook=_strict_object)
79
+ assert raw == (
80
+ json.dumps(payload, sort_keys=True, separators=(",", ":")) + "\n"
81
+ ).encode("utf-8")
82
+ prior = payload["prior_evidence"]
83
+ assert prior["path"] == Q4_REPLAY_HOTFIX.relative_to(ROOT).as_posix()
84
+ assert hashlib.sha256(Q4_REPLAY_HOTFIX.read_bytes()).hexdigest().upper() == prior[
85
+ "sha256"
86
+ ]
87
+ return payload
88
+
89
+
70
90
  def test_activation_candidate_binds_accepted_v6w_and_unchanged_q4() -> None:
71
91
  raw = ACTIVATION.read_bytes()
72
92
  payload = json.loads(raw, object_pairs_hook=_strict_object)
@@ -87,10 +107,14 @@ def test_activation_candidate_binds_accepted_v6w_and_unchanged_q4() -> None:
87
107
  f"blob {len(q4_data)}\0".encode("ascii") + q4_data
88
108
  ).hexdigest()
89
109
  hotfix = _q4_replay_hotfix()
110
+ successor = _q4_replay_canonicalization()
90
111
  assert payload["production_boundary"]["q4_mechanics_blob"] == hotfix[
91
112
  "source_correction"
92
113
  ]["prior_git_blob"]
93
- assert q4_blob == hotfix["source_correction"]["current_git_blob"]
114
+ assert hotfix["source_correction"]["current_git_blob"] == successor["correction"][
115
+ "prior_e4_pl_element_blob"
116
+ ]
117
+ assert q4_blob == successor["correction"]["e4_pl_element_blob"]
94
118
  assert hotfix["qualification_boundary"]["q4_coefficients_or_operators_changed"] is False
95
119
  assert payload["production_boundary"]["q4_mechanics_unchanged"] is True
96
120
  assert payload["production_boundary"]["publication_authorized"] is False
@@ -124,10 +148,14 @@ def test_integration_repair_preserves_qualification_and_q4_boundary() -> None:
124
148
  f"blob {len(q4_data)}\0".encode("ascii") + q4_data
125
149
  ).hexdigest()
126
150
  hotfix = _q4_replay_hotfix()
151
+ successor = _q4_replay_canonicalization()
127
152
  assert payload["production_boundary"]["q4_mechanics_blob"] == hotfix[
128
153
  "source_correction"
129
154
  ]["prior_git_blob"]
130
- assert q4_blob == hotfix["source_correction"]["current_git_blob"]
155
+ assert hotfix["source_correction"]["current_git_blob"] == successor["correction"][
156
+ "prior_e4_pl_element_blob"
157
+ ]
158
+ assert q4_blob == successor["correction"]["e4_pl_element_blob"]
131
159
  assert hotfix["qualification_boundary"]["s3_evidence_changed"] is False
132
160
  assert payload["production_boundary"]["v6w_evidence_changed"] is False
133
161
  assert payload["production_boundary"]["s3_linear_stiffness_operator_changed"] is False
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes