star-magic-program 0.402.0__tar.gz → 0.403.0__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 (143) hide show
  1. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/CHANGELOG.md +57 -0
  2. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/CITATION.cff +2 -2
  3. {star_magic_program-0.402.0/star_magic_program.egg-info → star_magic_program-0.403.0}/PKG-INFO +9 -8
  4. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/README.md +6 -6
  5. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/SESSION_LOG.md +77 -0
  6. star_magic_program-0.403.0/UNIFIED_REGISTRY_VERSION.txt +1 -0
  7. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_XGEO_QUEUE.csv +1 -0
  8. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_XGEO_ROUTES.csv +1 -0
  9. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/WHITEPAPER_INDEX.md +1 -1
  10. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/_BUILD_LOG.md +6 -0
  11. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/pyproject.toml +4 -3
  12. {star_magic_program-0.402.0 → star_magic_program-0.403.0/star_magic_program.egg-info}/PKG-INFO +9 -8
  13. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/star_magic_program.egg-info/SOURCES.txt +6 -0
  14. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/star_magic_program.egg-info/requires.txt +1 -0
  15. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_calculator.py +1 -1
  16. star_magic_program-0.403.0/uqff_downhole_simulator/BENCH_TEST_PROTOCOL.md +97 -0
  17. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/README.md +171 -0
  18. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/__init__.py +15 -1
  19. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/__main__.py +113 -5
  20. star_magic_program-0.403.0/uqff_downhole_simulator/acceptance_tests.py +449 -0
  21. star_magic_program-0.403.0/uqff_downhole_simulator/uqff_bench.py +141 -0
  22. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_downhole_engine.py +115 -8
  23. star_magic_program-0.403.0/uqff_downhole_simulator/uqff_gamma.py +173 -0
  24. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_modbus.py +8 -0
  25. star_magic_program-0.403.0/uqff_downhole_simulator/uqff_operator_app.py +439 -0
  26. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_ports.py +9 -2
  27. star_magic_program-0.403.0/uqff_downhole_simulator/uqff_well_assembler.py +350 -0
  28. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_fidelity_tests.py +300 -5
  29. star_magic_program-0.402.0/UNIFIED_REGISTRY_VERSION.txt +0 -1
  30. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/AUDIT_500_PAPER_REPORT.md +0 -0
  31. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/COMMERCIAL.md +0 -0
  32. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/LICENSE +0 -0
  33. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/LICENSE-AGPL-3.0.txt +0 -0
  34. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/LICENSE-MIT-INITIAL.txt +0 -0
  35. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/NOTICE +0 -0
  36. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_ANCHORS.csv +0 -0
  37. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_EXACT_IDENTITIES.csv +0 -0
  38. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_FALSIFIABILITY.md +0 -0
  39. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_OPEN_ITEMS.csv +0 -0
  40. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_PARADOX_CENSUS.csv +0 -0
  41. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_PREDICTIONS.csv +0 -0
  42. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_PROGRAM_PLAN.md +0 -0
  43. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_RESIDUALS.csv +0 -0
  44. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_RESULTS_TABLE.md +0 -0
  45. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_SCHEMA.md +0 -0
  46. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_STATUS_REPORT.md +0 -0
  47. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_XGEO_CONFIRMATIONS.csv +0 -0
  48. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/UNIFIED_REGISTRY_XGEO_EXTRACTED.csv +0 -0
  49. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/notebooks/00_quickstart.ipynb +0 -0
  50. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/reference/COMPLETE_UQFF_EQUATIONS_REFERENCE.pdf +0 -0
  51. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/reference/Star-Magic_manuscript_v5.pdf +0 -0
  52. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/reference/UQFF_VALIDATION_SYNC_AUDIT.pdf +0 -0
  53. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/reference/uqff_production_arxiv.pdf +0 -0
  54. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/registry_generator.py +0 -0
  55. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/setup.cfg +0 -0
  56. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/star_magic_program.egg-info/dependency_links.txt +0 -0
  57. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/star_magic_program.egg-info/top_level.txt +0 -0
  58. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_backbone_locks.py +0 -0
  59. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_derived_constants.py +0 -0
  60. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_derived_functions.py +0 -0
  61. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
  62. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/acex_lomonosov_age_depth_model.txt +0 -0
  63. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/agassiz77_canada_temperature.csv +0 -0
  64. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/agassiz77_canada_temperature.provenance.json +0 -0
  65. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
  66. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
  67. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/collingwood_1_28_ks_complete.las +0 -0
  68. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
  69. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
  70. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/dsdp_504b_physical_properties.txt +0 -0
  71. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
  72. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/dsdp_504b_sound_velocity.txt +0 -0
  73. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/gisp2_greenland_temperature.csv +0 -0
  74. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/gisp2_greenland_temperature.provenance.json +0 -0
  75. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
  76. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/iodp_u1324_pore_pressure.txt +0 -0
  77. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/kennetcook_2_p129_excerpt.las +0 -0
  78. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
  79. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_hb_bhgm_density.dat +0 -0
  80. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
  81. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_hb_hlog246_temperature.dat +0 -0
  82. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
  83. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_hb_rockmech_compress.dat +0 -0
  84. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
  85. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
  86. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
  87. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_vb_rockmech_compress.dat +0 -0
  88. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
  89. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_vb_vlog251_temperature.dat +0 -0
  90. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
  91. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/l06_06_nl_survey.csv +0 -0
  92. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/l06_06_nl_survey.provenance.json +0 -0
  93. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/l07_01_nl_excerpt.las +0 -0
  94. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/l07_01_nl_excerpt.provenance.json +0 -0
  95. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
  96. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/nankai_megasplay_shear_strength.txt +0 -0
  97. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
  98. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_1027b_thermal_conductivity.txt +0 -0
  99. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
  100. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_1027c_cork_temperature.txt +0 -0
  101. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
  102. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_1165b_thermal_conductivity.txt +0 -0
  103. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
  104. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
  105. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
  106. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
  107. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
  108. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
  109. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
  110. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
  111. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/scorpio_e1_sa_excerpt.las +0 -0
  112. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
  113. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/university_6_17_no1_tx_excerpt.las +0 -0
  114. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
  115. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/volve_15_9_19_sr_excerpt.las +0 -0
  116. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
  117. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
  118. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
  119. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/volve_f12_f14_production_excerpt.csv +0 -0
  120. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
  121. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/example_register_map.json +0 -0
  122. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/matplotlib_demo.py +0 -0
  123. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/qt6_downhole_app.py +0 -0
  124. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/sample_well_profile.csv +0 -0
  125. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_case_study.py +0 -0
  126. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_deviation.py +0 -0
  127. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_follower.py +0 -0
  128. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_gauge_specs.py +0 -0
  129. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_profile_catalog.py +0 -0
  130. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_quartz_hpht_extension.py +0 -0
  131. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_reconciler.py +0 -0
  132. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_service_life.py +0 -0
  133. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_telemetry.py +0 -0
  134. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_downhole_simulator/uqff_tool_library.py +0 -0
  135. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_fubii_variants.py +0 -0
  136. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_material_landmarks.py +0 -0
  137. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_ngc_catalog.py +0 -0
  138. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_primitive_identities.py +0 -0
  139. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_registry_graph.py +0 -0
  140. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_registry_primitives.py +0 -0
  141. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_registry_status.py +0 -0
  142. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_registry_xgeo.py +0 -0
  143. {star_magic_program-0.402.0 → star_magic_program-0.403.0}/uqff_session_closures.py +0 -0
@@ -7,6 +7,63 @@ Versioning: [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ---
9
9
 
10
+ ## v0.403.0 — 2026-08-27 — THE PRODUCT SHIP
11
+
12
+ The independent evaluation's finish sequence, **executed** (`uqff_downhole_simulator` v1.41.0–v1.48.0):
13
+
14
+ **Finish sequence (1–5) = FINISHED OFFLINE PRODUCT, by the evaluation's own criterion:**
15
+
16
+ - **v1.41** Modbus unified — registry entry IS the real client; disciplined
17
+ minimal refusal; static source discloses the runtime upgrade.
18
+ - **v1.42** The well assembler — WellAssembly per site family; strict
19
+ measured-coverage lookups; overburden from the site's own density;
20
+ engine bridge with Rule-7 method labels.
21
+ - **v1.43** Measured wells as engine defaults — `run --well ktb_hb` on the
22
+ 1994 log; Volve F-12 measured downhole P as the reconciler live leg
23
+ (drawdown → UNEXPLAINED_TREND: not drift).
24
+ - **v1.44** The operator surface — headless gate-tested OperatorSession +
25
+ Qt6 view; rating check BLOCKS the run on measured conditions; permanent
26
+ citations pane (suppression labeled DERIVED_HYBRID in the UI).
27
+ - **v1.45** The acceptance suite — in-package product gate (`accept`),
28
+ grown to 55 checks; independence from the physics corpus enforced by
29
+ construction (subprocess + static verification).
30
+
31
+ **Field tier:**
32
+
33
+ - **v1.46** (6a) Gamma/lithology from the catalogue's own curves — six
34
+ gamma-bearing entries under unit discipline; KTB pilot 80 intervals;
35
+ Volve sand/shale split; every number labeled.
36
+ - **v1.47** (6b) Mixed toolstrings — honest per-station legs; aggregates
37
+ over twin stations only; rating check inside the engine constructor.
38
+ - **v1.48** (8) Bench-test protocol — BENCH_TEST_PROTOCOL.md in-package;
39
+ falsifiable R = 1.0324 both directions; four-verdict analysis
40
+ self-verified as SIMULATION_SELF_TEST.
41
+
42
+ Mid-arc audit (Daniel): twin track verified by measurement at every layer;
43
+ three small gaps found and fixed in-arc (gui extra + matplotlib,
44
+ LAS-ingest button, twin-leg drift tab). Remaining: step 7 only (one live
45
+ site path — needs a real host + cited register map).
46
+
47
+ Gate 5,904 → 5,924, 0 failures. Acceptance 55/55. 23-file pass.
48
+
49
+ **REMANUFACTURED 2026-08-27 (same version; tag preserved, PyPI never
50
+ received the first push):** CI failed on all runners at the FINISH-SEQ 2
51
+ pin — `AttributeError: numpy has no attribute 'trapz'` (numpy ≥ 2.0
52
+ removed the alias; CI resolves newer numpy than the authoring sandbox's
53
+ proxy-pinned 2.2.6, which still carried it — every local repro was green
54
+ for exactly that reason). Fix: the assembler's overburden integral now
55
+ prefers `np.trapezoid` with a 1.x fallback; a portability-guard pin bans
56
+ direct `np.trapz` from the assembler and canonizes the standing rule
57
+ (local dependency versions are NOT the ship's — removed-alias sweeps are
58
+ ship prep). Also found in the same audit: the tracked
59
+ `star_magic_program-0.402.0/` sdist staging tree (129 stale files left
60
+ by a failed in-repo build on the mounted FS, committed by `add -A` at
61
+ v0.402.0) — `.gitignore` now blocks `star_magic_program-*/`; Daniel
62
+ removes the tree with `git rm -r star_magic_program-0.402.0` on Windows.
63
+ Acceptance A2's stochastic band widened; the gate's acceptance-subprocess
64
+ pin now embeds subprocess stderr in its failure message. Gate 5,925/0.
65
+
66
+ ---
10
67
  ## v0.402.0 — 2026-08-27 — THE POLE-TO-POLE SHIP
11
68
 
12
69
  The downhole catalogue grows **TWENTY → THIRTY entries** across ten
@@ -3,7 +3,7 @@ message: "If you use Star-Magic-Program (UQFF systematic rebuild) in your resear
3
3
  type: software
4
4
  title: "Star-Magic-Program: UQFF Systematic Rebuild"
5
5
  abbreviation: "UQFF"
6
- version: "0.402.0"
6
+ version: "0.403.0"
7
7
  date-released: "2026-08-27"
8
8
  authors:
9
9
  - family-names: "Murphy"
@@ -53,7 +53,7 @@ preferred-citation:
53
53
  - family-names: "Murphy"
54
54
  given-names: "Daniel T."
55
55
  year: 2026
56
- version: "0.402.0"
56
+ version: "0.403.0"
57
57
  url: "https://github.com/Daniel8Murphy0007/Star-Magic-Program"
58
58
  notes: >-
59
59
  Cite both the software and the relevant whitepapers by PAPER_N
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: star-magic-program
3
- Version: 0.402.0
4
- Summary: Star-Magic UQFF calculator v0.402.0: THE POLE-TO-POLE SHIP. 2,253 dispatches (2,308 keys), gate 5,906/0. Downhole catalogue 20->30 entries (v1.31-v1.40): live heat-flow closure q=k*dT/dz; 504B four-dataset family with cross-entry impedance join; Antarctica, Nankai, SW Indian Ridge, Mid-Atlantic, Chicxulub and central Arctic (87.9N) join; crust ladder complete from seafloor mud to mantle peridotite; ACEX age model = first time axis. 18 regions / 19 kinds. Next: PAPER_2258.
3
+ Version: 0.403.0
4
+ Summary: Star-Magic UQFF calculator v0.403.0: THE PRODUCT SHIP. 2,253 dispatches (2,308 keys), gate 5,924/0. The downhole simulator completes the adopted independent-evaluation plan (v1.41-v1.48): finish sequence 1-5 - modbus unified, well assembler, measured wells as engine defaults, operator surface, in-package 55-check acceptance suite = FINISHED OFFLINE PRODUCT; field tier 6a gamma/lithology from catalogue curves, 6b mixed toolstrings + in-engine rating block, 8 bench-test protocol. Next: PAPER_2258.
5
5
  Author-email: "Daniel T. Murphy" <daniel.murphy00@enrgyone.com>
6
6
  License: AGPL-3.0-or-later OR LicenseRef-StarMagic-Commercial
7
7
  Project-URL: Homepage, https://github.com/Daniel8Murphy0007/Star-Magic-Program
@@ -34,21 +34,22 @@ Provides-Extra: modbus
34
34
  Requires-Dist: pymodbus>=3.15; extra == "modbus"
35
35
  Provides-Extra: gui
36
36
  Requires-Dist: PyQt6; extra == "gui"
37
+ Requires-Dist: matplotlib; extra == "gui"
37
38
  Dynamic: license-file
38
39
 
39
40
  # Star-Magic-Program
40
41
 
41
- [![PyPI version](https://img.shields.io/pypi/v/star-magic-program.svg?cacheBust=0.402.0)](https://pypi.org/project/star-magic-program/)
42
- [![Python versions](https://img.shields.io/pypi/pyversions/star-magic-program.svg?cacheBust=0.402.0)](https://pypi.org/project/star-magic-program/)
42
+ [![PyPI version](https://img.shields.io/pypi/v/star-magic-program.svg?cacheBust=0.403.0)](https://pypi.org/project/star-magic-program/)
43
+ [![Python versions](https://img.shields.io/pypi/pyversions/star-magic-program.svg?cacheBust=0.403.0)](https://pypi.org/project/star-magic-program/)
43
44
  [![Documentation Status](https://readthedocs.org/projects/star-magic-program/badge/?version=latest)](https://star-magic-program.readthedocs.io/en/latest/?badge=latest)
44
45
  [![License: AGPL-3.0 + Commercial](https://img.shields.io/badge/License-AGPL--3.0%20%2B%20Commercial-blue.svg)](LICENSE)
45
- [![Fidelity gate](https://img.shields.io/badge/fidelity_gate-5906%2F0-brightgreen)](uqff_fidelity_tests.py)
46
+ [![Fidelity gate](https://img.shields.io/badge/fidelity_gate-5925%2F0-brightgreen)](uqff_fidelity_tests.py)
46
47
  [![Public surfaces](https://img.shields.io/badge/public_surfaces-2308-blue)](uqff_calculator.py)
47
48
  [![Whitepapers](https://img.shields.io/badge/whitepapers-2292-orange)](whitepapers/)
48
49
 
49
- **UQFF systematic rebuild — v0.402.0 complete-compile campaign live**
50
+ **UQFF systematic rebuild — v0.403.0 complete-compile campaign live**
50
51
 
51
- **This release (v0.402.0): THE POLE-TO-POLE SHIP — THE CATALOGUE GROWS FROM TWENTY TO THIRTY ENTRIES, AND THE SPAN IS MEASURED.** Ten catalogue packages (`uqff_downhole_simulator` v1.31.0–v1.40.0), each a complete public dataset transcribed verbatim with a provenance sidecar, each verified live by the gate. The arc opens with **the heat-flow closure** (entry 21: thermal conductivity of ODP 1027B pairs with entry 20's CORK temperatures — q = k·dT/dz ≈ 130 mW/m² computed from two catalogued datasets of one site, not quoted) and closes at the North Pole. **DSDP/ODP Hole 504B becomes a four-dataset family** — 1979 sound velocity, 1979 physical properties (the WBD identity closing on all 61 rows), 1986 sheeted-dike elastic moduli (four identities re-derived on every run), 1991 borehole fluids — and the two 1979 tables archive the same core suite, so the gate joins them sample-by-sample and computes a **live acoustic-impedance profile** (Z = ρ·Vp = 13.9–18.5 ×10⁶ kg/m²s) from independently archived datasets. **Six regions join**: Antarctica (entry 23, Prydz Bay — whose replicate audit caught a dropped-digit typo IN the source archive), the Nankai Trough (26, first subduction zone and first Chikyu data, with Ikari et al.'s slope-stability conclusion re-derived: FS 2.38–15.31, all stations stable), the Southwest Indian Ridge (27, Atlantis Bank gabbros — completing the **oceanic-crust ladder**: sediments → pillow basalt → sheeted dikes → layer-3 gabbro), the Mid-Atlantic Ridge (28, serpentinized **mantle peridotite** — the ladder goes below the crust, the five-identity lock closing at 0.0016 g/cm³), the **Chicxulub impact crater** (29, the K-Pg peak ring: 717 rows where no sample reaches 5,400 m/s against intact granite's 5,500–6,000 — the deficit IS the shock damage — in a dataset that checksums its own transcription), and the **central Arctic Ocean** (30, the ACEX age model at 87.89°N, 235 km from the North Pole: the catalogue's first time axis, 56 Myr of history, with a 26.2-Myr hiatus encoded as a duplicate-depth pair and all six sedimentation rates re-derived hiatus-aware). The ship pin measures the claim: the latitude span between catalogue endpoints — computed live from the entries' own in-file coordinates — exceeds 152 degrees. **THIRTY entries / EIGHTEEN regions / NINETEEN kinds: pole to pole, seafloor mud to mantle, 66-million-year-old impact shock to day-indexed production data — every dataset verbatim, every flaw kept, every derivable number re-earned by the gate on every run.** **Totals: 2,253 wired (2,308 DISPATCH keys) / gate 5,906 green / 4,180 defs. Next paper: PAPER_2258.**
52
+ **This release (v0.403.0): THE PRODUCT SHIP — THE INDEPENDENT EVALUATION'S FINISH SEQUENCE, EXECUTED.** An independent component-inventory and gap analysis of the v1.30.0 simulator (supplied 2026-08-27, verified claim-by-claim against the code, adopted verbatim as the standing plan) drew the line: after steps 1–5 it is a finished offline product. Eight package versions later (`uqff_downhole_simulator` v1.41.0–v1.48.0), the line is crossed and machine-verified. **The finish sequence:** (1) Modbus unified — the registry entry IS the real pymodbus client, refusal disciplined and minimal (refuses ONLY when host/register map are missing, naming which), the static source now disclosing what the runtime does; (2) the **well assembler** un-strands the catalogue — one WellAssembly per site family (KTB-HB, Site 1027, U1324, 504B), strict measured-coverage lookups that refuse rather than clamp, overburden integrated from the site's own density; (3) **measured wells are the engine defaults** — `run --well ktb_hb` simulates on the 1994 German deep-hole log, and the catalogued Volve F-12 measured downhole pressure becomes the reconciler's live leg, its −1,096 psi/yr drawdown classified UNEXPLAINED_TREND (reservoir physics correctly refused as gauge drift); (4) the **operator surface** — a headless, fully gate-tested OperatorSession under a Qt6 view: well picker, toolstring builder whose rating check BLOCKS the run against measured conditions (the 1994 KTB log is hotter than the 177 °C tool class at depth — no contrived kick needed), live P/T + twin-leg drift tabs, undervalued-stream alerts, and a citations pane that never disappears; (5) the **in-package acceptance suite** — `python -m uqff_downhole_simulator accept`, 55 checks across nine sections, independence from the physics corpus enforced by construction (the fidelity gate runs it as a subprocess AND statically verifies the module never references the calculator or any paper). **The field tier opens:** (6a) **lithology from the catalogue's own gamma curves** — six entries qualify under unit-disciplined detection (the catalogue's own trap cases pinned: KTB GRAV/mGals is gravimetry), the KTB pilot's 1,082-point log yielding 80 alternating intervals and Volve SR the textbook sand/shale split, every number labeled (INDUSTRY_STANDARD / STATISTICAL_PICKS / CONVENTION / no invented detector); (6b) **mixed toolstrings** — per-station tool models with honest legs (twin / reference-only / labeled class envelope / refused-but-still-streaming-well-P/T), aggregates computed over twin stations only with counts disclosed, and the rating check enforced INSIDE the engine constructor; (8) the **bench-test protocol** — BENCH_TEST_PROTOCOL.md ships in-package with the falsifiable prediction (paired GEOQ-class gauges, drift ratio R = 1.0324 at unity trims, ≥90 days honoring the reconciler's own 18-day floor), both-outcome labeling rules (confirmation → MEASURED_ON_BENCH with the full record attached; refutation → DERIVED_HYBRID with the refutation on record; no silent trim retuning), and `uqff_bench.py`'s four-verdict analysis self-verified on synthetic legs in output labeled SIMULATION_SELF_TEST — arithmetic verified, physics honestly unclaimed. **Remaining: step 7 only** — one live site path, blocked on what no code can supply (a real host and a cited register map from a real site). DERIVED_HYBRID stayed DERIVED_HYBRID throughout; U_i stays loaded-but-unused pending the Rule-10 derivation path; the twin solution track was audited by measurement at every layer mid-arc at Daniel's direction, and three small gaps that audit found were fixed in-arc, not deferred. **Totals: 2,253 wired (2,308 DISPATCH keys) / gate 5,925 green / 4,180 defs / acceptance 55 green. Next paper: PAPER_2258.**
52
53
 
53
54
  Author: Daniel T. Murphy · Star-Magic Research Program
54
55
  License: AGPL-3.0-or-later OR Commercial
@@ -106,7 +107,7 @@ Mizuno, Rossi).
106
107
  Full framework physics lives in the whitepaper corpus — the physics is the
107
108
  whitepapers; the calculator computes what the whitepapers derive.
108
109
 
109
- ## What is currently shipped (v0.402.0)
110
+ ## What is currently shipped (v0.403.0)
110
111
 
111
112
  ### Wiring campaign — LIVE (see `CLAUDE.md` charter)
112
113
 
@@ -1,16 +1,16 @@
1
1
  # Star-Magic-Program
2
2
 
3
- [![PyPI version](https://img.shields.io/pypi/v/star-magic-program.svg?cacheBust=0.402.0)](https://pypi.org/project/star-magic-program/)
4
- [![Python versions](https://img.shields.io/pypi/pyversions/star-magic-program.svg?cacheBust=0.402.0)](https://pypi.org/project/star-magic-program/)
3
+ [![PyPI version](https://img.shields.io/pypi/v/star-magic-program.svg?cacheBust=0.403.0)](https://pypi.org/project/star-magic-program/)
4
+ [![Python versions](https://img.shields.io/pypi/pyversions/star-magic-program.svg?cacheBust=0.403.0)](https://pypi.org/project/star-magic-program/)
5
5
  [![Documentation Status](https://readthedocs.org/projects/star-magic-program/badge/?version=latest)](https://star-magic-program.readthedocs.io/en/latest/?badge=latest)
6
6
  [![License: AGPL-3.0 + Commercial](https://img.shields.io/badge/License-AGPL--3.0%20%2B%20Commercial-blue.svg)](LICENSE)
7
- [![Fidelity gate](https://img.shields.io/badge/fidelity_gate-5906%2F0-brightgreen)](uqff_fidelity_tests.py)
7
+ [![Fidelity gate](https://img.shields.io/badge/fidelity_gate-5925%2F0-brightgreen)](uqff_fidelity_tests.py)
8
8
  [![Public surfaces](https://img.shields.io/badge/public_surfaces-2308-blue)](uqff_calculator.py)
9
9
  [![Whitepapers](https://img.shields.io/badge/whitepapers-2292-orange)](whitepapers/)
10
10
 
11
- **UQFF systematic rebuild — v0.402.0 complete-compile campaign live**
11
+ **UQFF systematic rebuild — v0.403.0 complete-compile campaign live**
12
12
 
13
- **This release (v0.402.0): THE POLE-TO-POLE SHIP — THE CATALOGUE GROWS FROM TWENTY TO THIRTY ENTRIES, AND THE SPAN IS MEASURED.** Ten catalogue packages (`uqff_downhole_simulator` v1.31.0–v1.40.0), each a complete public dataset transcribed verbatim with a provenance sidecar, each verified live by the gate. The arc opens with **the heat-flow closure** (entry 21: thermal conductivity of ODP 1027B pairs with entry 20's CORK temperatures — q = k·dT/dz ≈ 130 mW/m² computed from two catalogued datasets of one site, not quoted) and closes at the North Pole. **DSDP/ODP Hole 504B becomes a four-dataset family** — 1979 sound velocity, 1979 physical properties (the WBD identity closing on all 61 rows), 1986 sheeted-dike elastic moduli (four identities re-derived on every run), 1991 borehole fluids — and the two 1979 tables archive the same core suite, so the gate joins them sample-by-sample and computes a **live acoustic-impedance profile** (Z = ρ·Vp = 13.9–18.5 ×10⁶ kg/m²s) from independently archived datasets. **Six regions join**: Antarctica (entry 23, Prydz Bay — whose replicate audit caught a dropped-digit typo IN the source archive), the Nankai Trough (26, first subduction zone and first Chikyu data, with Ikari et al.'s slope-stability conclusion re-derived: FS 2.38–15.31, all stations stable), the Southwest Indian Ridge (27, Atlantis Bank gabbros — completing the **oceanic-crust ladder**: sediments → pillow basalt → sheeted dikes → layer-3 gabbro), the Mid-Atlantic Ridge (28, serpentinized **mantle peridotite** — the ladder goes below the crust, the five-identity lock closing at 0.0016 g/cm³), the **Chicxulub impact crater** (29, the K-Pg peak ring: 717 rows where no sample reaches 5,400 m/s against intact granite's 5,500–6,000 — the deficit IS the shock damage — in a dataset that checksums its own transcription), and the **central Arctic Ocean** (30, the ACEX age model at 87.89°N, 235 km from the North Pole: the catalogue's first time axis, 56 Myr of history, with a 26.2-Myr hiatus encoded as a duplicate-depth pair and all six sedimentation rates re-derived hiatus-aware). The ship pin measures the claim: the latitude span between catalogue endpoints — computed live from the entries' own in-file coordinates — exceeds 152 degrees. **THIRTY entries / EIGHTEEN regions / NINETEEN kinds: pole to pole, seafloor mud to mantle, 66-million-year-old impact shock to day-indexed production data — every dataset verbatim, every flaw kept, every derivable number re-earned by the gate on every run.** **Totals: 2,253 wired (2,308 DISPATCH keys) / gate 5,906 green / 4,180 defs. Next paper: PAPER_2258.**
13
+ **This release (v0.403.0): THE PRODUCT SHIP — THE INDEPENDENT EVALUATION'S FINISH SEQUENCE, EXECUTED.** An independent component-inventory and gap analysis of the v1.30.0 simulator (supplied 2026-08-27, verified claim-by-claim against the code, adopted verbatim as the standing plan) drew the line: after steps 1–5 it is a finished offline product. Eight package versions later (`uqff_downhole_simulator` v1.41.0–v1.48.0), the line is crossed and machine-verified. **The finish sequence:** (1) Modbus unified — the registry entry IS the real pymodbus client, refusal disciplined and minimal (refuses ONLY when host/register map are missing, naming which), the static source now disclosing what the runtime does; (2) the **well assembler** un-strands the catalogue — one WellAssembly per site family (KTB-HB, Site 1027, U1324, 504B), strict measured-coverage lookups that refuse rather than clamp, overburden integrated from the site's own density; (3) **measured wells are the engine defaults** — `run --well ktb_hb` simulates on the 1994 German deep-hole log, and the catalogued Volve F-12 measured downhole pressure becomes the reconciler's live leg, its −1,096 psi/yr drawdown classified UNEXPLAINED_TREND (reservoir physics correctly refused as gauge drift); (4) the **operator surface** — a headless, fully gate-tested OperatorSession under a Qt6 view: well picker, toolstring builder whose rating check BLOCKS the run against measured conditions (the 1994 KTB log is hotter than the 177 °C tool class at depth — no contrived kick needed), live P/T + twin-leg drift tabs, undervalued-stream alerts, and a citations pane that never disappears; (5) the **in-package acceptance suite** — `python -m uqff_downhole_simulator accept`, 55 checks across nine sections, independence from the physics corpus enforced by construction (the fidelity gate runs it as a subprocess AND statically verifies the module never references the calculator or any paper). **The field tier opens:** (6a) **lithology from the catalogue's own gamma curves** — six entries qualify under unit-disciplined detection (the catalogue's own trap cases pinned: KTB GRAV/mGals is gravimetry), the KTB pilot's 1,082-point log yielding 80 alternating intervals and Volve SR the textbook sand/shale split, every number labeled (INDUSTRY_STANDARD / STATISTICAL_PICKS / CONVENTION / no invented detector); (6b) **mixed toolstrings** — per-station tool models with honest legs (twin / reference-only / labeled class envelope / refused-but-still-streaming-well-P/T), aggregates computed over twin stations only with counts disclosed, and the rating check enforced INSIDE the engine constructor; (8) the **bench-test protocol** — BENCH_TEST_PROTOCOL.md ships in-package with the falsifiable prediction (paired GEOQ-class gauges, drift ratio R = 1.0324 at unity trims, ≥90 days honoring the reconciler's own 18-day floor), both-outcome labeling rules (confirmation → MEASURED_ON_BENCH with the full record attached; refutation → DERIVED_HYBRID with the refutation on record; no silent trim retuning), and `uqff_bench.py`'s four-verdict analysis self-verified on synthetic legs in output labeled SIMULATION_SELF_TEST — arithmetic verified, physics honestly unclaimed. **Remaining: step 7 only** — one live site path, blocked on what no code can supply (a real host and a cited register map from a real site). DERIVED_HYBRID stayed DERIVED_HYBRID throughout; U_i stays loaded-but-unused pending the Rule-10 derivation path; the twin solution track was audited by measurement at every layer mid-arc at Daniel's direction, and three small gaps that audit found were fixed in-arc, not deferred. **Totals: 2,253 wired (2,308 DISPATCH keys) / gate 5,925 green / 4,180 defs / acceptance 55 green. Next paper: PAPER_2258.**
14
14
 
15
15
  Author: Daniel T. Murphy · Star-Magic Research Program
16
16
  License: AGPL-3.0-or-later OR Commercial
@@ -68,7 +68,7 @@ Mizuno, Rossi).
68
68
  Full framework physics lives in the whitepaper corpus — the physics is the
69
69
  whitepapers; the calculator computes what the whitepapers derive.
70
70
 
71
- ## What is currently shipped (v0.402.0)
71
+ ## What is currently shipped (v0.403.0)
72
72
 
73
73
  ### Wiring campaign — LIVE (see `CLAUDE.md` charter)
74
74
 
@@ -12081,3 +12081,80 @@ release paragraph rewritten + badges (fidelity 5906, cacheBust ×2);
12081
12081
  CHANGELOG + _BUILD_LOG + SHIP_MESSAGE + RULINGS trail; 10 POLE_TO_POLE_ARC
12082
12082
  trail rows + WHITEPAPER_INDEX ship note. Gate 5,904 → 5,906, 0 failures.
12083
12083
  Awaiting Daniel: `.\ship.ps1` (clear .git/index.lock first).
12084
+
12085
+ ## Entry 275 — 2026-08-27 — v0.403.0 THE PRODUCT SHIP (downhole v1.41–v1.48: the finish sequence)
12086
+
12087
+ Daniel supplied an independent evaluation of the v1.30.0 simulator and
12088
+ ruled "I want to follow the plan if it looks right." Verified
12089
+ claim-by-claim against the code (all four spot-checks held; two stale
12090
+ catalogue counts corrected), adopted verbatim, executed step-by-step on
12091
+ GO-cadence:
12092
+
12093
+ 1 (v1.41) modbus unification — split was already unified AT RUNTIME (the
12094
+ evaluator's static read could not see it); fixed both real halves:
12095
+ source-honesty disclosure + disciplined config refusal. 2 (v1.42) well
12096
+ assembler — catalogue un-stranded; strict coverage; KTB overburden 190.9
12097
+ MPa under 253-MPa UCS. 3 (v1.43) measured defaults — demo_config +
12098
+ CLI --well/wells; production_live_stream (bar→psi labeled; 9-day stuck
12099
+ fault survives; station MD caller-supplied); Volve drawdown −1,096 psi/yr
12100
+ = UNEXPLAINED_TREND. 4 (v1.44) operator surface — headless session fully
12101
+ gate-tested + thin Qt view; blocking rating check demonstrated on REAL
12102
+ data (KTB window 184 C > 177 C tool class); ServiceLifeSimulator API
12103
+ mismatch found+fixed. 5 (v1.45) acceptance suite — in-package, grown to
12104
+ 55 checks; independence by construction; caught its own docstring
12105
+ violating the static check, a case-study --well gap, and its own A2
12106
+ string-luck flakiness. 6a (v1.46) gamma — unit-disciplined (trap cases
12107
+ GRAV/Density-grain pinned); KTB 80 intervals; labels everywhere.
12108
+ 6b (v1.47) mixed toolstrings — honest legs; in-engine rating block;
12109
+ first demo steered to the CORK column by the product's own rules.
12110
+ 8 (v1.48) bench protocol + four-verdict analysis (selftest R=1.0263
12111
+ ±0.0118 CONFIRMS; refute/span/SNR paths earned; SIMULATION_SELF_TEST
12112
+ self-labeled).
12113
+
12114
+ Mid-arc audit (Daniel's three questions): twin track verified by
12115
+ measurement at every layer; UQFF-catalogue coordination honestly
12116
+ inventoried (composition evaluated at measured conditions + envelope
12117
+ confronted with field data; no derivation-match yet — step 8 territory by
12118
+ design); sweep found 3 real gaps (gui extra, LAS button, drift tab),
12119
+ fixed in-arc; two sweep greps were substring false-positives, re-verified
12120
+ before certifying.
12121
+
12122
+ Ship prep: version sync 0.403.0 (desc 500 chars) across pyproject /
12123
+ calculator / gate / CITATION ×2 / registry version; SHIP GUARD marker
12124
+ POLE_TO_POLE_ARC→PRODUCT_ARC (+ GAPS id product_arc_rule7); +2 ship pins
12125
+ (live product-surface census + standing record); README release
12126
+ paragraph + campaign/shipped lines + badges; CHANGELOG + _BUILD_LOG +
12127
+ SHIP_MESSAGE + RULINGS trail; 10 PRODUCT_ARC trail rows + WHITEPAPER_INDEX
12128
+ note. Gate 5,922 → 5,924, 0 failures. Remaining: step 7 only (site
12129
+ details). Awaiting Daniel: `.\ship.ps1` (clear .git/index.lock first).
12130
+
12131
+ ## Entry 276 — 2026-08-27 — v0.403.0 REMANUFACTURE (numpy-2 trapz + stale staging tree)
12132
+
12133
+ CI failure diagnosed from Daniel's log screenshots: fidelity-gate (3.12)
12134
+ died at gate line 13695 (FINISH-SEQ 2 pin) -> uqff_well_assembler.py:136
12135
+ `np.trapz` -> AttributeError: numpy >= 2.0 removed the alias. Root cause
12136
+ of the blind-repro failure: the sandbox's proxy-pinned numpy 2.2.6 STILL
12137
+ carries trapz, so every local reproduction (build under setuptools 82/84,
12138
+ pip install ., gate without pymodbus/matplotlib, 36 s green) passed while
12139
+ every CI runner failed. Fix: module-level _TRAPEZOID = np.trapezoid with
12140
+ 1.x fallback; overburden call switched; PORTABILITY GUARD 2 pin bans
12141
+ np.trapz in the assembler and re-runs the 190.9-MPa KTB integral on the
12142
+ current interpreter's numpy. STANDING RULE canonized: local dependency
12143
+ versions are NOT the ship's dependency versions - removed-alias sweeps
12144
+ (trapz/in1d/alltrue/product/row_stack/NaN: repo-wide sweep found exactly
12145
+ the one hit) are part of ship prep.
12146
+
12147
+ Same audit found Daniel's 'stale files': the TRACKED
12148
+ star_magic_program-0.402.0/ sdist staging tree (129 files, ~5 MB - the
12149
+ failed in-repo v0.402-prep build could not delete its staging dir on the
12150
+ mounted FS and add -A committed it; it rode through v0.402.0's green CI
12151
+ as dead weight). Sandbox cannot delete it (same mount permission);
12152
+ .gitignore now carries star_magic_program-*/; Daniel removes it on
12153
+ Windows: git rm -r star_magic_program-0.402.0. Hardening kept from the
12154
+ diagnosis pass: acceptance A2 stochastic band widened, acceptance-
12155
+ subprocess pin embeds stderr tail + timeout.
12156
+
12157
+ Per Daniel: tag v0.403.0 NOT burned (PyPI never received it) - same
12158
+ version remanufactured. Gate 5,924 -> 5,925, 0 failures; acceptance
12159
+ 55/55; sdist/wheel rebuilt clean. Daniel: delete the stale tree, commit,
12160
+ re-tag v0.403.0 (move tag to the new commit), push.
@@ -0,0 +1 @@
1
+ v0.403.0
@@ -1729,3 +1729,4 @@ DEEPDATA_ARC,n/a,n/a,NOT_APPLICABLE,application real-data catalogue single-geome
1729
1729
  TWENTYWELLS_ARC,n/a,n/a,NOT_APPLICABLE,application real-data catalogue single-geometry,v0.400.0
1730
1730
  INCORPORATION_ARC,n/a,n/a,NOT_APPLICABLE,corporate record ship - no physics content,v0.401.0
1731
1731
  POLE_TO_POLE_ARC,n/a,n/a,NOT_APPLICABLE,real-data catalogue ship - no cross-geometry content,v0.402.0
1732
+ PRODUCT_ARC,n/a,n/a,NOT_APPLICABLE,product-engineering ship - no cross-geometry content,v0.403.0
@@ -1730,3 +1730,4 @@ DEEPDATA_ARC,n/a,XGEO_NOT_REQUIRED,none,v0.399.0
1730
1730
  TWENTYWELLS_ARC,n/a,XGEO_NOT_REQUIRED,none,v0.400.0
1731
1731
  INCORPORATION_ARC,n/a,XGEO_NOT_REQUIRED,none,v0.401.0
1732
1732
  POLE_TO_POLE_ARC,n/a,XGEO_NOT_REQUIRED,none,v0.402.0
1733
+ PRODUCT_ARC,n/a,XGEO_NOT_REQUIRED,none,v0.403.0
@@ -99,7 +99,7 @@ Every previously non-numeric key now carries a canonical PAPER number (2179-2212
99
99
  | 2233 | PAPER_1203b |
100
100
 
101
101
  - **Verification arc 2026-08-16 (v0.387.0):** paradox-corpus audit ZERO recalcs; grammar dragnet 110 family sites; origin term verified; AP text layer EXHAUSTED (458 docs). Runnable queue empty — remaining items Daniel-owned.
102
- - **Distinct wired papers: 2,253 (+55 canonical alias numbers 2179-2233; 2,308 DISPATCH keys). PAPER_2257 two-stream architecture landmark, 2026-08-24; v0.398.0 CATALOGUE SHIP (downhole v1.14-v1.20, ten real-data entries), 2026-08-25; v0.399.0 DEEP DATA SHIP (v1.21-v1.25, entries 11-15, KTB suite + live overburden integral), 2026-08-25; v0.400.0 TWENTY WELLS SHIP (v1.26-v1.30, entries 16-20, quantity ledger closed), 2026-08-25; v0.401.0 INCORPORATION SHIP (six ENRGYONE founding PDFs in pdf/), 2026-08-25; v0.402.0 POLE-TO-POLE SHIP (v1.31-v1.40, entries 21-30: heat-flow closure, 504B four-dataset family + impedance join, crust ladder complete to mantle, Chicxulub, ACEX at 87.89N - thirty entries pole to pole, latitude span >152 deg measured live), 2026-08-27.** = `wired_count()` = `len(DISPATCH)` (live at band 2121-2130, 2026-08-16; earlier eras' 1,417 figure superseded).
102
+ - **Distinct wired papers: 2,253 (+55 canonical alias numbers 2179-2233; 2,308 DISPATCH keys). PAPER_2257 two-stream architecture landmark, 2026-08-24; v0.398.0 CATALOGUE SHIP (downhole v1.14-v1.20, ten real-data entries), 2026-08-25; v0.399.0 DEEP DATA SHIP (v1.21-v1.25, entries 11-15, KTB suite + live overburden integral), 2026-08-25; v0.400.0 TWENTY WELLS SHIP (v1.26-v1.30, entries 16-20, quantity ledger closed), 2026-08-25; v0.401.0 INCORPORATION SHIP (six ENRGYONE founding PDFs in pdf/), 2026-08-25; v0.402.0 POLE-TO-POLE SHIP (v1.31-v1.40, entries 21-30: heat-flow closure, 504B four-dataset family + impedance join, crust ladder complete to mantle, Chicxulub, ACEX at 87.89N - thirty entries pole to pole, latitude span >152 deg measured live), 2026-08-27; v0.403.0 PRODUCT SHIP (v1.41-v1.48: evaluation finish sequence 1-5 executed = finished offline product + field tier 6a/6b/8; acceptance suite 55 checks in-package; step 7 alone remains, site-blocked), 2026-08-27.** = `wired_count()` = `len(DISPATCH)` (live at band 2121-2130, 2026-08-16; earlier eras' 1,417 figure superseded).
103
103
  - **Index table file-row marks:** **934 ✓ CLEAN**, **245 ⚠ OPEN_RULING**, **1076 ⬜** not-touched (934 + 245 + 1076 = 2255 ✓). Wired file-rows (934 + 245 = 1,179) sit below `wired_count()` = 1,417 because variant files share a base dispatch.
104
104
  - **ORPHAN-PHYSICS (v0.367.1 audit):** no paper numbers are missing, but 71 non-numbered `.md` files in the predecessor hold **6,615 equation blocks** outside the corpus. Queued as Q-ORPHAN-PHYSICS.
105
105
  - **OPEN targets:** 0
@@ -327,3 +327,9 @@ THE INCORPORATION SHIP: six ENRGYONE, Inc. founding documents (Articles, Bylaws,
327
327
 
328
328
  ## v0.402.0 — 2026-08-27
329
329
  THE POLE-TO-POLE SHIP: downhole v1.31-v1.40 — catalogue 20→30 entries / 18 regions / 19 kinds. Heat-flow closure computed live; 504B four-dataset family + cross-entry impedance join; Antarctica/Nankai/SW-Indian/Mid-Atlantic/Chicxulub/central-Arctic join; crust ladder complete seafloor-mud→mantle; ACEX age model = first time axis; two source-archive typos and two archival row-slips detected and disclosed, never repaired. Ship pin measures the latitude span (>152 deg) live. Gate 5,906/0. 23-file pass verified.
330
+
331
+ ## v0.403.0 — 2026-08-27
332
+ THE PRODUCT SHIP: downhole v1.41-v1.48 — the independent evaluation's finish sequence executed 1-5 (modbus unified, well assembler, measured-well engine defaults, operator surface, 55-check in-package acceptance suite) = FINISHED OFFLINE PRODUCT by the evaluation's own criterion; field tier 6a gamma/lithology, 6b mixed toolstrings + in-engine rating block, 8 bench-test protocol with four-verdict self-labeled analysis. Remaining: step 7 only (site details). Gate 5,924/0. Acceptance 55/55. 23-file pass verified.
333
+
334
+ ## v0.403.0-remanufacture — 2026-08-27
335
+ CI red on all runners: numpy>=2.0 removed np.trapz; assembler overburden now uses np.trapezoid (1.x fallback); PORTABILITY GUARD 2 pin + standing removed-alias-sweep rule. Stale TRACKED sdist staging tree star_magic_program-0.402.0/ identified (mounted-FS delete block; gitignored; Daniel removes on Windows). Same version per Daniel (tag preserved; PyPI untouched). Gate 5,925/0. Acceptance 55/55.
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "star-magic-program"
7
- version = "0.402.0"
8
- description = "Star-Magic UQFF calculator v0.402.0: THE POLE-TO-POLE SHIP. 2,253 dispatches (2,308 keys), gate 5,906/0. Downhole catalogue 20->30 entries (v1.31-v1.40): live heat-flow closure q=k*dT/dz; 504B four-dataset family with cross-entry impedance join; Antarctica, Nankai, SW Indian Ridge, Mid-Atlantic, Chicxulub and central Arctic (87.9N) join; crust ladder complete from seafloor mud to mantle peridotite; ACEX age model = first time axis. 18 regions / 19 kinds. Next: PAPER_2258."
7
+ version = "0.403.0"
8
+ description = "Star-Magic UQFF calculator v0.403.0: THE PRODUCT SHIP. 2,253 dispatches (2,308 keys), gate 5,924/0. The downhole simulator completes the adopted independent-evaluation plan (v1.41-v1.48): finish sequence 1-5 - modbus unified, well assembler, measured wells as engine defaults, operator surface, in-package 55-check acceptance suite = FINISHED OFFLINE PRODUCT; field tier 6a gamma/lithology from catalogue curves, 6b mixed toolstrings + in-engine rating block, 8 bench-test protocol. Next: PAPER_2258."
9
9
  readme = "README.md"
10
10
  authors = [
11
11
  { name = "Daniel T. Murphy", email = "daniel.murphy00@enrgyone.com" }
@@ -54,7 +54,7 @@ Issues = "https://github.com/Daniel8Murphy0007/Star-Magic-Program/issues"
54
54
 
55
55
  [project.optional-dependencies]
56
56
  modbus = ["pymodbus>=3.15"]
57
- gui = ["PyQt6"]
57
+ gui = ["PyQt6", "matplotlib"]
58
58
 
59
59
  [tool.setuptools]
60
60
  packages = ["uqff_downhole_simulator"]
@@ -163,6 +163,7 @@ py-modules = ["uqff_session_closures", "uqff_fubii_variants", "uqff_ngc_catalog"
163
163
  "uqff_downhole_simulator/catalog/odp_1274a_mantle_peridotite_mad.provenance.json",
164
164
  "uqff_downhole_simulator/catalog/chicxulub_m0077a_pwave_velocity.txt",
165
165
  "uqff_downhole_simulator/catalog/chicxulub_m0077a_pwave_velocity.provenance.json",
166
+ "uqff_downhole_simulator/BENCH_TEST_PROTOCOL.md",
166
167
  "uqff_downhole_simulator/catalog/acex_lomonosov_age_depth_model.txt",
167
168
  "uqff_downhole_simulator/catalog/acex_lomonosov_age_depth_model.provenance.json",
168
169
  "uqff_downhole_simulator/catalog/volve_15_9_19a_core_excerpt.provenance.json",
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: star-magic-program
3
- Version: 0.402.0
4
- Summary: Star-Magic UQFF calculator v0.402.0: THE POLE-TO-POLE SHIP. 2,253 dispatches (2,308 keys), gate 5,906/0. Downhole catalogue 20->30 entries (v1.31-v1.40): live heat-flow closure q=k*dT/dz; 504B four-dataset family with cross-entry impedance join; Antarctica, Nankai, SW Indian Ridge, Mid-Atlantic, Chicxulub and central Arctic (87.9N) join; crust ladder complete from seafloor mud to mantle peridotite; ACEX age model = first time axis. 18 regions / 19 kinds. Next: PAPER_2258.
3
+ Version: 0.403.0
4
+ Summary: Star-Magic UQFF calculator v0.403.0: THE PRODUCT SHIP. 2,253 dispatches (2,308 keys), gate 5,924/0. The downhole simulator completes the adopted independent-evaluation plan (v1.41-v1.48): finish sequence 1-5 - modbus unified, well assembler, measured wells as engine defaults, operator surface, in-package 55-check acceptance suite = FINISHED OFFLINE PRODUCT; field tier 6a gamma/lithology from catalogue curves, 6b mixed toolstrings + in-engine rating block, 8 bench-test protocol. Next: PAPER_2258.
5
5
  Author-email: "Daniel T. Murphy" <daniel.murphy00@enrgyone.com>
6
6
  License: AGPL-3.0-or-later OR LicenseRef-StarMagic-Commercial
7
7
  Project-URL: Homepage, https://github.com/Daniel8Murphy0007/Star-Magic-Program
@@ -34,21 +34,22 @@ Provides-Extra: modbus
34
34
  Requires-Dist: pymodbus>=3.15; extra == "modbus"
35
35
  Provides-Extra: gui
36
36
  Requires-Dist: PyQt6; extra == "gui"
37
+ Requires-Dist: matplotlib; extra == "gui"
37
38
  Dynamic: license-file
38
39
 
39
40
  # Star-Magic-Program
40
41
 
41
- [![PyPI version](https://img.shields.io/pypi/v/star-magic-program.svg?cacheBust=0.402.0)](https://pypi.org/project/star-magic-program/)
42
- [![Python versions](https://img.shields.io/pypi/pyversions/star-magic-program.svg?cacheBust=0.402.0)](https://pypi.org/project/star-magic-program/)
42
+ [![PyPI version](https://img.shields.io/pypi/v/star-magic-program.svg?cacheBust=0.403.0)](https://pypi.org/project/star-magic-program/)
43
+ [![Python versions](https://img.shields.io/pypi/pyversions/star-magic-program.svg?cacheBust=0.403.0)](https://pypi.org/project/star-magic-program/)
43
44
  [![Documentation Status](https://readthedocs.org/projects/star-magic-program/badge/?version=latest)](https://star-magic-program.readthedocs.io/en/latest/?badge=latest)
44
45
  [![License: AGPL-3.0 + Commercial](https://img.shields.io/badge/License-AGPL--3.0%20%2B%20Commercial-blue.svg)](LICENSE)
45
- [![Fidelity gate](https://img.shields.io/badge/fidelity_gate-5906%2F0-brightgreen)](uqff_fidelity_tests.py)
46
+ [![Fidelity gate](https://img.shields.io/badge/fidelity_gate-5925%2F0-brightgreen)](uqff_fidelity_tests.py)
46
47
  [![Public surfaces](https://img.shields.io/badge/public_surfaces-2308-blue)](uqff_calculator.py)
47
48
  [![Whitepapers](https://img.shields.io/badge/whitepapers-2292-orange)](whitepapers/)
48
49
 
49
- **UQFF systematic rebuild — v0.402.0 complete-compile campaign live**
50
+ **UQFF systematic rebuild — v0.403.0 complete-compile campaign live**
50
51
 
51
- **This release (v0.402.0): THE POLE-TO-POLE SHIP — THE CATALOGUE GROWS FROM TWENTY TO THIRTY ENTRIES, AND THE SPAN IS MEASURED.** Ten catalogue packages (`uqff_downhole_simulator` v1.31.0–v1.40.0), each a complete public dataset transcribed verbatim with a provenance sidecar, each verified live by the gate. The arc opens with **the heat-flow closure** (entry 21: thermal conductivity of ODP 1027B pairs with entry 20's CORK temperatures — q = k·dT/dz ≈ 130 mW/m² computed from two catalogued datasets of one site, not quoted) and closes at the North Pole. **DSDP/ODP Hole 504B becomes a four-dataset family** — 1979 sound velocity, 1979 physical properties (the WBD identity closing on all 61 rows), 1986 sheeted-dike elastic moduli (four identities re-derived on every run), 1991 borehole fluids — and the two 1979 tables archive the same core suite, so the gate joins them sample-by-sample and computes a **live acoustic-impedance profile** (Z = ρ·Vp = 13.9–18.5 ×10⁶ kg/m²s) from independently archived datasets. **Six regions join**: Antarctica (entry 23, Prydz Bay — whose replicate audit caught a dropped-digit typo IN the source archive), the Nankai Trough (26, first subduction zone and first Chikyu data, with Ikari et al.'s slope-stability conclusion re-derived: FS 2.38–15.31, all stations stable), the Southwest Indian Ridge (27, Atlantis Bank gabbros — completing the **oceanic-crust ladder**: sediments → pillow basalt → sheeted dikes → layer-3 gabbro), the Mid-Atlantic Ridge (28, serpentinized **mantle peridotite** — the ladder goes below the crust, the five-identity lock closing at 0.0016 g/cm³), the **Chicxulub impact crater** (29, the K-Pg peak ring: 717 rows where no sample reaches 5,400 m/s against intact granite's 5,500–6,000 — the deficit IS the shock damage — in a dataset that checksums its own transcription), and the **central Arctic Ocean** (30, the ACEX age model at 87.89°N, 235 km from the North Pole: the catalogue's first time axis, 56 Myr of history, with a 26.2-Myr hiatus encoded as a duplicate-depth pair and all six sedimentation rates re-derived hiatus-aware). The ship pin measures the claim: the latitude span between catalogue endpoints — computed live from the entries' own in-file coordinates — exceeds 152 degrees. **THIRTY entries / EIGHTEEN regions / NINETEEN kinds: pole to pole, seafloor mud to mantle, 66-million-year-old impact shock to day-indexed production data — every dataset verbatim, every flaw kept, every derivable number re-earned by the gate on every run.** **Totals: 2,253 wired (2,308 DISPATCH keys) / gate 5,906 green / 4,180 defs. Next paper: PAPER_2258.**
52
+ **This release (v0.403.0): THE PRODUCT SHIP — THE INDEPENDENT EVALUATION'S FINISH SEQUENCE, EXECUTED.** An independent component-inventory and gap analysis of the v1.30.0 simulator (supplied 2026-08-27, verified claim-by-claim against the code, adopted verbatim as the standing plan) drew the line: after steps 1–5 it is a finished offline product. Eight package versions later (`uqff_downhole_simulator` v1.41.0–v1.48.0), the line is crossed and machine-verified. **The finish sequence:** (1) Modbus unified — the registry entry IS the real pymodbus client, refusal disciplined and minimal (refuses ONLY when host/register map are missing, naming which), the static source now disclosing what the runtime does; (2) the **well assembler** un-strands the catalogue — one WellAssembly per site family (KTB-HB, Site 1027, U1324, 504B), strict measured-coverage lookups that refuse rather than clamp, overburden integrated from the site's own density; (3) **measured wells are the engine defaults** — `run --well ktb_hb` simulates on the 1994 German deep-hole log, and the catalogued Volve F-12 measured downhole pressure becomes the reconciler's live leg, its −1,096 psi/yr drawdown classified UNEXPLAINED_TREND (reservoir physics correctly refused as gauge drift); (4) the **operator surface** — a headless, fully gate-tested OperatorSession under a Qt6 view: well picker, toolstring builder whose rating check BLOCKS the run against measured conditions (the 1994 KTB log is hotter than the 177 °C tool class at depth — no contrived kick needed), live P/T + twin-leg drift tabs, undervalued-stream alerts, and a citations pane that never disappears; (5) the **in-package acceptance suite** — `python -m uqff_downhole_simulator accept`, 55 checks across nine sections, independence from the physics corpus enforced by construction (the fidelity gate runs it as a subprocess AND statically verifies the module never references the calculator or any paper). **The field tier opens:** (6a) **lithology from the catalogue's own gamma curves** — six entries qualify under unit-disciplined detection (the catalogue's own trap cases pinned: KTB GRAV/mGals is gravimetry), the KTB pilot's 1,082-point log yielding 80 alternating intervals and Volve SR the textbook sand/shale split, every number labeled (INDUSTRY_STANDARD / STATISTICAL_PICKS / CONVENTION / no invented detector); (6b) **mixed toolstrings** — per-station tool models with honest legs (twin / reference-only / labeled class envelope / refused-but-still-streaming-well-P/T), aggregates computed over twin stations only with counts disclosed, and the rating check enforced INSIDE the engine constructor; (8) the **bench-test protocol** — BENCH_TEST_PROTOCOL.md ships in-package with the falsifiable prediction (paired GEOQ-class gauges, drift ratio R = 1.0324 at unity trims, ≥90 days honoring the reconciler's own 18-day floor), both-outcome labeling rules (confirmation → MEASURED_ON_BENCH with the full record attached; refutation → DERIVED_HYBRID with the refutation on record; no silent trim retuning), and `uqff_bench.py`'s four-verdict analysis self-verified on synthetic legs in output labeled SIMULATION_SELF_TEST — arithmetic verified, physics honestly unclaimed. **Remaining: step 7 only** — one live site path, blocked on what no code can supply (a real host and a cited register map from a real site). DERIVED_HYBRID stayed DERIVED_HYBRID throughout; U_i stays loaded-but-unused pending the Rule-10 derivation path; the twin solution track was audited by measurement at every layer mid-arc at Daniel's direction, and three small gaps that audit found were fixed in-arc, not deferred. **Totals: 2,253 wired (2,308 DISPATCH keys) / gate 5,925 green / 4,180 defs / acceptance 55 green. Next paper: PAPER_2258.**
52
53
 
53
54
  Author: Daniel T. Murphy · Star-Magic Research Program
54
55
  License: AGPL-3.0-or-later OR Commercial
@@ -106,7 +107,7 @@ Mizuno, Rossi).
106
107
  Full framework physics lives in the whitepaper corpus — the physics is the
107
108
  whitepapers; the calculator computes what the whitepapers derive.
108
109
 
109
- ## What is currently shipped (v0.402.0)
110
+ ## What is currently shipped (v0.403.0)
110
111
 
111
112
  ### Wiring campaign — LIVE (see `CLAUDE.md` charter)
112
113
 
@@ -52,19 +52,24 @@ star_magic_program.egg-info/SOURCES.txt
52
52
  star_magic_program.egg-info/dependency_links.txt
53
53
  star_magic_program.egg-info/requires.txt
54
54
  star_magic_program.egg-info/top_level.txt
55
+ uqff_downhole_simulator/BENCH_TEST_PROTOCOL.md
55
56
  uqff_downhole_simulator/README.md
56
57
  uqff_downhole_simulator/__init__.py
57
58
  uqff_downhole_simulator/__main__.py
59
+ uqff_downhole_simulator/acceptance_tests.py
58
60
  uqff_downhole_simulator/example_register_map.json
59
61
  uqff_downhole_simulator/matplotlib_demo.py
60
62
  uqff_downhole_simulator/qt6_downhole_app.py
61
63
  uqff_downhole_simulator/sample_well_profile.csv
64
+ uqff_downhole_simulator/uqff_bench.py
62
65
  uqff_downhole_simulator/uqff_case_study.py
63
66
  uqff_downhole_simulator/uqff_deviation.py
64
67
  uqff_downhole_simulator/uqff_downhole_engine.py
65
68
  uqff_downhole_simulator/uqff_follower.py
69
+ uqff_downhole_simulator/uqff_gamma.py
66
70
  uqff_downhole_simulator/uqff_gauge_specs.py
67
71
  uqff_downhole_simulator/uqff_modbus.py
72
+ uqff_downhole_simulator/uqff_operator_app.py
68
73
  uqff_downhole_simulator/uqff_ports.py
69
74
  uqff_downhole_simulator/uqff_profile_catalog.py
70
75
  uqff_downhole_simulator/uqff_quartz_hpht_extension.py
@@ -72,6 +77,7 @@ uqff_downhole_simulator/uqff_reconciler.py
72
77
  uqff_downhole_simulator/uqff_service_life.py
73
78
  uqff_downhole_simulator/uqff_telemetry.py
74
79
  uqff_downhole_simulator/uqff_tool_library.py
80
+ uqff_downhole_simulator/uqff_well_assembler.py
75
81
  uqff_downhole_simulator/catalog/acex_lomonosov_age_depth_model.provenance.json
76
82
  uqff_downhole_simulator/catalog/acex_lomonosov_age_depth_model.txt
77
83
  uqff_downhole_simulator/catalog/agassiz77_canada_temperature.csv
@@ -5,6 +5,7 @@ scipy>=1.10
5
5
 
6
6
  [gui]
7
7
  PyQt6
8
+ matplotlib
8
9
 
9
10
  [modbus]
10
11
  pymodbus>=3.15
@@ -73,7 +73,7 @@ from uqff_registry_primitives import (
73
73
  DELTA_M2_21_EV2, DELTA_M2_32_EV2,
74
74
  )
75
75
 
76
- VERSION = "0.402.0"
76
+ VERSION = "0.403.0"
77
77
 
78
78
  # NAMED OBSERVED SI ANCHORS (constant drain 2026-08-16, PAPER_2141 bulk pattern + PAPER_2149 observation-headlining)
79
79
  # Bit-identical to the literals they replace; UQFF-derived counterparts live in uqff_registry_primitives.
@@ -0,0 +1,97 @@
1
+ # Bench-Test Protocol — Measuring the 1.0324 Suppression Ratio
2
+
3
+ **Field-tier step 8 (independent evaluation, adopted 2026-08-27).**
4
+ Status of the quantity under test: `canonical_suppression()` = **1.0324 at
5
+ unity trims** is today a **DERIVED_HYBRID** composition — industry baseline
6
+ drift (0.215 %FS/yr class) with HPHT stress dressing, divided by a
7
+ locked-primitive UQFF composition. It is **not** a measured constant, and the
8
+ product labels it so everywhere it appears. This protocol is the experiment
9
+ that would change — or refuse to change — that label.
10
+
11
+ ---
12
+
13
+ ## 1. Falsifiable prediction
14
+
15
+ Two matched GEOQ-177-class quartz P/T gauges (same spec, same batch
16
+ preferred), one operated with the UQFF-informed configuration and one as the
17
+ conventional reference, co-located at a fixed HPHT setpoint, will exhibit a
18
+ long-term drift-rate ratio
19
+
20
+ ```
21
+ R = drift_conventional / drift_uqff = 1.0324 (at unity trims)
22
+ ```
23
+
24
+ equivalently a predicted separation rate of ~2.3 psi/yr at a 30,000-psi
25
+ full scale (the service-life module's number for these conditions). The
26
+ prediction is falsifiable in both directions: a measured R statistically
27
+ inconsistent with 1.0324 **refutes the composition at bench conditions**.
28
+
29
+ ## 2. Apparatus
30
+
31
+ - 2× (minimum; 3+ pairs preferred for scatter) quartz P/T gauges,
32
+ 177 °C / 30 kpsi class, from the same vendor lot.
33
+ - Temperature-controlled bath or HPHT vessel holding a setpoint in the
34
+ 150 °C / 10,000 psi class (inside every rating — the rating_check rule
35
+ applies on the bench too).
36
+ - Reference pressure standard, 0.01 %-class (deadweight tester or
37
+ transfer standard), for baseline and periodic checks.
38
+ - Logging at ≥ 1 reading/day per gauge into the package's historian CSV
39
+ format (`time_s` + one raw pressure column per gauge).
40
+
41
+ ## 3. Duration — the package's own rule applies
42
+
43
+ The reconciler refuses trend verdicts below its minimum span
44
+ (`ReconcilerConfig.min_trend_span_years`, the ≥18-day slope rule). The bench
45
+ protocol requires **≥ 90 days** at setpoint for slope confidence; 180+ days
46
+ preferred. The analysis tool enforces the 18-day floor mechanically and
47
+ reports `INSUFFICIENT_SPAN` below it — the bench cannot be rushed past the
48
+ product's own honesty rule.
49
+
50
+ ## 4. Procedure
51
+
52
+ 1. Baseline both gauges against the reference standard; record offsets.
53
+ 2. Install co-located at the setpoint; log continuously.
54
+ 3. Weekly: verify setpoint stability against the reference (do not adjust
55
+ the gauges under test).
56
+ 4. Export each leg as a historian CSV; run
57
+ `python -m uqff_downhole_simulator bench --uqff-csv A.csv --conv-csv B.csv`.
58
+ 5. Repeat with roles swapped on a second pair (control for unit-to-unit
59
+ scatter — the piezo lesson: individual units scatter around class curves).
60
+
61
+ ## 5. Analysis and verdict vocabulary
62
+
63
+ `uqff_bench.bench_analysis()` fits each leg's drift slope (OLS, psi/yr →
64
+ %FS/yr), propagates slope uncertainties into the ratio, and returns one of:
65
+
66
+ - `MEASURED_CONFIRMS` — R within its own propagated uncertainty of 1.0324.
67
+ - `MEASURED_REFUTES` — R inconsistent with 1.0324 (the uncertainty is small
68
+ enough to exclude it). **This is a valid and useful outcome** — the
69
+ composition is falsified at bench conditions and the label stays
70
+ DERIVED_HYBRID with the refutation on record.
71
+ - `INSUFFICIENT_SPAN` — under the 18-day floor: no verdict.
72
+ - `INSUFFICIENT_SNR` — the uncertainty band contains both 1.0324 and 1.0
73
+ (cannot distinguish suppression from no-suppression): no verdict, more
74
+ data required.
75
+
76
+ ## 6. Outcome handling (labeling rules)
77
+
78
+ - **Confirmed:** `canonical_suppression()`'s label may move from
79
+ DERIVED_HYBRID to MEASURED_ON_BENCH **with the test ID, dates, apparatus
80
+ and per-pair results attached**. The composition's primitives are then a
81
+ measured-consistent model, not just a labeled one.
82
+ - **Refuted:** the label stays DERIVED_HYBRID; the refutation (conditions,
83
+ measured R, uncertainty) is recorded beside it. No silent retuning of
84
+ trims to fit the bench — a post-hoc trim fit would be a new calibration
85
+ claim, labeled as such, never a derivation.
86
+ - **Either way:** `U_i` remains loaded-but-unused in the drift formula until
87
+ a UQFF derivation path for its role is supplied (Rule 10 — the framework
88
+ author provides the physics; the product does not invent it).
89
+
90
+ ## 7. Analysis-tool verification (available today, and labeled)
91
+
92
+ The analysis tool is verified NOW against the simulator's own twin legs:
93
+ `bench --selftest` generates synthetic paired-leg data from the engine's
94
+ models and must return `MEASURED_CONFIRMS` at R ≈ 1.0324. **This is a
95
+ SIMULATION_SELF_TEST — it verifies the analysis arithmetic, not the
96
+ physics.** It proves the bench pipeline is ready; it proves nothing about
97
+ gauges. The acceptance suite runs it on every gate.