beqforge 0.2.7__tar.gz → 0.2.8__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 (211) hide show
  1. {beqforge-0.2.7 → beqforge-0.2.8}/PKG-INFO +1 -1
  2. {beqforge-0.2.7 → beqforge-0.2.8}/TODO.md +1 -1
  3. {beqforge-0.2.7 → beqforge-0.2.8}/beq_common/__init__.py +1 -1
  4. {beqforge-0.2.7 → beqforge-0.2.8}/.dockerignore +0 -0
  5. {beqforge-0.2.7 → beqforge-0.2.8}/.gitattributes +0 -0
  6. {beqforge-0.2.7 → beqforge-0.2.8}/.github/dependabot.yml +0 -0
  7. {beqforge-0.2.7 → beqforge-0.2.8}/.github/workflows/build-designer-image.yml +0 -0
  8. {beqforge-0.2.7 → beqforge-0.2.8}/.github/workflows/build-device-check.yml +0 -0
  9. {beqforge-0.2.7 → beqforge-0.2.8}/.github/workflows/build-executable.yml +0 -0
  10. {beqforge-0.2.7 → beqforge-0.2.8}/.github/workflows/dependabot-auto-merge.yaml +0 -0
  11. {beqforge-0.2.7 → beqforge-0.2.8}/.github/workflows/tests.yml +0 -0
  12. {beqforge-0.2.7 → beqforge-0.2.8}/.gitignore +0 -0
  13. {beqforge-0.2.7 → beqforge-0.2.8}/.idea/.gitignore +0 -0
  14. {beqforge-0.2.7 → beqforge-0.2.8}/.idea/beqforge.iml +0 -0
  15. {beqforge-0.2.7 → beqforge-0.2.8}/.idea/editor.xml +0 -0
  16. {beqforge-0.2.7 → beqforge-0.2.8}/.idea/jsonSchemas.xml +0 -0
  17. {beqforge-0.2.7 → beqforge-0.2.8}/.idea/misc.xml +0 -0
  18. {beqforge-0.2.7 → beqforge-0.2.8}/.idea/modules.xml +0 -0
  19. {beqforge-0.2.7 → beqforge-0.2.8}/.idea/vcs.xml +0 -0
  20. {beqforge-0.2.7 → beqforge-0.2.8}/AGENTS.md +0 -0
  21. {beqforge-0.2.7 → beqforge-0.2.8}/CLAUDE.md +0 -0
  22. {beqforge-0.2.7 → beqforge-0.2.8}/LICENCE.md +0 -0
  23. {beqforge-0.2.7 → beqforge-0.2.8}/README.md +0 -0
  24. {beqforge-0.2.7 → beqforge-0.2.8}/beq_common/AGENTS.md +0 -0
  25. {beqforge-0.2.7 → beqforge-0.2.8}/beq_common/biquad.py +0 -0
  26. {beqforge-0.2.7 → beqforge-0.2.8}/beq_common/provenance.py +0 -0
  27. {beqforge-0.2.7 → beqforge-0.2.8}/beq_common/publication.py +0 -0
  28. {beqforge-0.2.7 → beqforge-0.2.8}/beq_common/types.py +0 -0
  29. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/AGENTS.md +0 -0
  30. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/__init__.py +0 -0
  31. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/accept.py +0 -0
  32. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/beqd.py +0 -0
  33. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/biquad.py +0 -0
  34. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/cache.py +0 -0
  35. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/charts.py +0 -0
  36. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/cli.py +0 -0
  37. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/design.py +0 -0
  38. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/designer.py +0 -0
  39. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/diagnose.py +0 -0
  40. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/explain.py +0 -0
  41. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/extraction.py +0 -0
  42. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/filters.py +0 -0
  43. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/harness.py +0 -0
  44. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/identify.py +0 -0
  45. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/material.py +0 -0
  46. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/pipeline.py +0 -0
  47. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/record.py +0 -0
  48. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/reference.py +0 -0
  49. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/rolloff.py +0 -0
  50. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge/verify.py +0 -0
  51. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge-device-check.spec +0 -0
  52. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge.spec +0 -0
  53. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/AGENTS.md +0 -0
  54. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/__init__.py +0 -0
  55. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/analyse.py +0 -0
  56. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/audio.py +0 -0
  57. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/catalogue.py +0 -0
  58. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/cli.py +0 -0
  59. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/coefficients.py +0 -0
  60. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/engines.py +0 -0
  61. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/evidence.py +0 -0
  62. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/manifest.py +0 -0
  63. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/measurement.py +0 -0
  64. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/profiles.py +0 -0
  65. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/qualification.py +0 -0
  66. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/report.py +0 -0
  67. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/transactions.py +0 -0
  68. {beqforge-0.2.7 → beqforge-0.2.8}/beqforge_device_check/verify.py +0 -0
  69. {beqforge-0.2.7 → beqforge-0.2.8}/beqoptimiser/AGENTS.md +0 -0
  70. {beqforge-0.2.7 → beqforge-0.2.8}/beqoptimiser/__init__.py +0 -0
  71. {beqforge-0.2.7 → beqforge-0.2.8}/beqoptimiser/cache.py +0 -0
  72. {beqforge-0.2.7 → beqforge-0.2.8}/beqoptimiser/cli.py +0 -0
  73. {beqforge-0.2.7 → beqforge-0.2.8}/beqoptimiser/core.py +0 -0
  74. {beqforge-0.2.7 → beqforge-0.2.8}/beqoptimiser/data/seed-manifest.json +0 -0
  75. {beqforge-0.2.7 → beqforge-0.2.8}/beqoptimiser/data/seed.json.gz +0 -0
  76. {beqforge-0.2.7 → beqforge-0.2.8}/beqoptimiser/parameters.py +0 -0
  77. {beqforge-0.2.7 → beqforge-0.2.8}/docs/device-check-examples/minidsp-2x4hd-usb-loopback.json +0 -0
  78. {beqforge-0.2.7 → beqforge-0.2.8}/docs/device-check-examples/simulation.json +0 -0
  79. {beqforge-0.2.7 → beqforge-0.2.8}/docs/device-check.md +0 -0
  80. {beqforge-0.2.7 → beqforge-0.2.8}/docs/optimiser-report/README.md +0 -0
  81. {beqforge-0.2.7 → beqforge-0.2.8}/docs/optimiser-report/assets/aggregate-48000.png +0 -0
  82. {beqforge-0.2.7 → beqforge-0.2.8}/docs/optimiser-report/assets/aggregate-96000.png +0 -0
  83. {beqforge-0.2.7 → beqforge-0.2.8}/docs/optimiser-report/assets/example-1.png +0 -0
  84. {beqforge-0.2.7 → beqforge-0.2.8}/docs/optimiser-report/assets/example-2.png +0 -0
  85. {beqforge-0.2.7 → beqforge-0.2.8}/docs/optimiser-report/entry-results.json.gz +0 -0
  86. {beqforge-0.2.7 → beqforge-0.2.8}/docs/optimiser-report/statistics.json +0 -0
  87. {beqforge-0.2.7 → beqforge-0.2.8}/docs/optimiser.md +0 -0
  88. {beqforge-0.2.7 → beqforge-0.2.8}/evidence_validation.json +0 -0
  89. {beqforge-0.2.7 → beqforge-0.2.8}/negative_corpus.json +0 -0
  90. {beqforge-0.2.7 → beqforge-0.2.8}/packaging/designer/Dockerfile +0 -0
  91. {beqforge-0.2.7 → beqforge-0.2.8}/packaging/designer/beqforge-designer.cmd +0 -0
  92. {beqforge-0.2.7 → beqforge-0.2.8}/packaging/designer/smoke.py +0 -0
  93. {beqforge-0.2.7 → beqforge-0.2.8}/packaging/device-check/NOTICE.txt +0 -0
  94. {beqforge-0.2.7 → beqforge-0.2.8}/plans/F2-catalogue-filter-optimisation.md +0 -0
  95. {beqforge-0.2.7 → beqforge-0.2.8}/plans/F2-device-precision-validation.md +0 -0
  96. {beqforge-0.2.7 → beqforge-0.2.8}/plans/F2-package-consolidation.md +0 -0
  97. {beqforge-0.2.7 → beqforge-0.2.8}/plans/R2a-server-stage-cache.md +0 -0
  98. {beqforge-0.2.7 → beqforge-0.2.8}/plans/default-record-and-log-locations.md +0 -0
  99. {beqforge-0.2.7 → beqforge-0.2.8}/plans/design-version.md +0 -0
  100. {beqforge-0.2.7 → beqforge-0.2.8}/plans/done-baseline-evidence.md +0 -0
  101. {beqforge-0.2.7 → beqforge-0.2.8}/plans/done-design-and-pipeline.md +0 -0
  102. {beqforge-0.2.7 → beqforge-0.2.8}/plans/parameter-space-optimisation.md +0 -0
  103. {beqforge-0.2.7 → beqforge-0.2.8}/plans/research-design-decisions.md +0 -0
  104. {beqforge-0.2.7 → beqforge-0.2.8}/plans/test-portability-and-runtime.md +0 -0
  105. {beqforge-0.2.7 → beqforge-0.2.8}/plans/texture-yardstick-sub-band.md +0 -0
  106. {beqforge-0.2.7 → beqforge-0.2.8}/plans/texture-yardstick-sub-band.patch +0 -0
  107. {beqforge-0.2.7 → beqforge-0.2.8}/pyproject.toml +0 -0
  108. {beqforge-0.2.7 → beqforge-0.2.8}/tests/__init__.py +0 -0
  109. {beqforge-0.2.7 → beqforge-0.2.8}/tests/conftest.py +0 -0
  110. {beqforge-0.2.7 → beqforge-0.2.8}/tests/fixtures/design_golden.json +0 -0
  111. {beqforge-0.2.7 → beqforge-0.2.8}/tests/fixtures/optimiser_seed_entry.json +0 -0
  112. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_cli.py +0 -0
  113. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_accept.py +0 -0
  114. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_cache.py +0 -0
  115. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_cache_stores.py +0 -0
  116. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_channel_evidence.py +0 -0
  117. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_charts.py +0 -0
  118. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_corpus.py +0 -0
  119. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_design.py +0 -0
  120. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_designer.py +0 -0
  121. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_designer_server.py +0 -0
  122. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_device_rate.py +0 -0
  123. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_diagnose.py +0 -0
  124. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_evidence.py +0 -0
  125. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_evidence_excess.py +0 -0
  126. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_exclusions.py +0 -0
  127. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_explain.py +0 -0
  128. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_extraction.py +0 -0
  129. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_filters.py +0 -0
  130. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_frozen_cache.py +0 -0
  131. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_golden.py +0 -0
  132. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_guard.py +0 -0
  133. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_harness.py +0 -0
  134. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_headroom.py +0 -0
  135. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_hum.py +0 -0
  136. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_identify.py +0 -0
  137. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_jacobian.py +0 -0
  138. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_parallel.py +0 -0
  139. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_pipeline.py +0 -0
  140. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_playback.py +0 -0
  141. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_playback_headroom.py +0 -0
  142. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_publication.py +0 -0
  143. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_record.py +0 -0
  144. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_record_fingerprint.py +0 -0
  145. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_reference.py +0 -0
  146. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_references.py +0 -0
  147. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_ripple_band.py +0 -0
  148. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_rolloff.py +0 -0
  149. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_strategy_config.py +0 -0
  150. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_target_fit.py +0 -0
  151. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_timings.py +0 -0
  152. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_design_verify.py +0 -0
  153. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_designer_image.py +0 -0
  154. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_designer_server_startup.py +0 -0
  155. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_analyse.py +0 -0
  156. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_catalogue.py +0 -0
  157. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_catalogue_predict.py +0 -0
  158. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_cli.py +0 -0
  159. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_engines.py +0 -0
  160. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_evidence.py +0 -0
  161. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_examples.py +0 -0
  162. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_manifest.py +0 -0
  163. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_measurement.py +0 -0
  164. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_qualification.py +0 -0
  165. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_transactions.py +0 -0
  166. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_device_check_verify.py +0 -0
  167. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_extract_layout.py +0 -0
  168. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_optimiser.py +0 -0
  169. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_optimiser_cache.py +0 -0
  170. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_optimiser_parameters.py +0 -0
  171. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_optimiser_report.py +0 -0
  172. {beqforge-0.2.7 → beqforge-0.2.8}/tests/test_package_boundaries.py +0 -0
  173. {beqforge-0.2.7 → beqforge-0.2.8}/tools/__init__.py +0 -0
  174. {beqforge-0.2.7 → beqforge-0.2.8}/tools/build_optimiser_seed.py +0 -0
  175. {beqforge-0.2.7 → beqforge-0.2.8}/tools/design_beq.py +0 -0
  176. {beqforge-0.2.7 → beqforge-0.2.8}/tools/designer_server.py +0 -0
  177. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/a1_sweep.py +0 -0
  178. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/compare_records.py +0 -0
  179. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/compare_verdicts.py +0 -0
  180. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/inject_variants.py +0 -0
  181. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p14_compare.py +0 -0
  182. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p14_jacobian.py +0 -0
  183. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p14_run_pipeline.py +0 -0
  184. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p14_surrogate.py +0 -0
  185. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p18_compare_greedy.py +0 -0
  186. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p18_compare_seeded.py +0 -0
  187. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p18_compare_structure.py +0 -0
  188. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p18_greedy.py +0 -0
  189. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p18_seeded.py +0 -0
  190. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p18_structure.py +0 -0
  191. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/p20_smooth_drift.py +0 -0
  192. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/parameter_benchmark.py +0 -0
  193. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/probe.py +0 -0
  194. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/refit_probe.py +0 -0
  195. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/request_timing.py +0 -0
  196. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/score_injected.py +0 -0
  197. {beqforge-0.2.7 → beqforge-0.2.8}/tools/experiments/t8_floor_rules.py +0 -0
  198. {beqforge-0.2.7 → beqforge-0.2.8}/tools/extract.py +0 -0
  199. {beqforge-0.2.7 → beqforge-0.2.8}/tools/ledger_template.html +0 -0
  200. {beqforge-0.2.7 → beqforge-0.2.8}/tools/negative_corpus.py +0 -0
  201. {beqforge-0.2.7 → beqforge-0.2.8}/tools/optimiser_catalogue_report.py +0 -0
  202. {beqforge-0.2.7 → beqforge-0.2.8}/tools/prepare_device_check_helper.py +0 -0
  203. {beqforge-0.2.7 → beqforge-0.2.8}/tools/render_ledger.py +0 -0
  204. {beqforge-0.2.7 → beqforge-0.2.8}/tools/replay.py +0 -0
  205. {beqforge-0.2.7 → beqforge-0.2.8}/tools/seed_optimiser_cache.py +0 -0
  206. {beqforge-0.2.7 → beqforge-0.2.8}/tools/smoke_test_device_check.py +0 -0
  207. {beqforge-0.2.7 → beqforge-0.2.8}/tools/smoke_test_exe.py +0 -0
  208. {beqforge-0.2.7 → beqforge-0.2.8}/tools/smoke_test_install.py +0 -0
  209. {beqforge-0.2.7 → beqforge-0.2.8}/tools/summarise.py +0 -0
  210. {beqforge-0.2.7 → beqforge-0.2.8}/tools/validate_evidence.py +0 -0
  211. {beqforge-0.2.7 → beqforge-0.2.8}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: beqforge
3
- Version: 0.2.7
3
+ Version: 0.2.8
4
4
  Summary: Audio-derived BEQ design, published filter optimisation and DSP validation
5
5
  License-File: LICENCE.md
6
6
  Requires-Python: <3.15,>=3.13
@@ -43,7 +43,7 @@ are retained so records and code comments remain traceable. Completed items are
43
43
  | 25 | Documentation citations | open | Remove or repoint orphan references and stale descriptions of shipped behaviour. Low filter impact, but prevents future changes being based on obsolete assumptions. |
44
44
  | 26 | Texture yardstick retune (library review) | parked | The cubic (row 2) keeps the 200 Hz band only because the sub-band cap admitted one synthetic negative, `broadband/5`: chance unevenness in noise bursts, at a 2.6 dB boost. With 45 gated cases a single case moves the gate's upper bound from 0.079 to 0.118. Carrie is still declined (0.85x about a cubic, 1.33x with the cap). Reopen when the beqdesigner library review (~1,290 titles) is complete. Then retune against its declines: the band edge, the trend degree, and whether the gate weights a false acceptance by its boost. The library holds no known negative, so it can expose wrong declines but not measure false acceptances. Any retune still needs the corpus or a fresh E10 set for that, ideally with negatives built from real programme texture (row 5). See [the outcome](plans/texture-yardstick-sub-band.md#outcome-17-october-2026). |
45
45
  | 27 | Keep run records and logs by default | open | `serve-designer` keeps no run record and no log file unless told to, so the Windows designer's 432 library titles (111 declines) have no records and can be reviewed only from their responses. Default records and a rotating log to the platform's per-user data directory (as the `.cmd` already does for the cache), set and declare `/records` in the image, report `record_dir` on `/health`. See [the handoff](plans/default-record-and-log-locations.md). |
46
- | 28 | Fit sensitivity to arithmetic | open | The same request can get a different filter on a different processor. On the synthetic BW4 24 Hz title, `counterfactual` gave 2 sections here and 3 on Linux and macOS CI; `parametric`'s boost was 15.21 dB on this AVX-512 machine, 15.78 dB with Haswell BLAS kernels and 16.49 dB on CI. `flatten` matched everywhere. It's repeatable on one machine, so last-digit differences grow into a different local optimum. Measure it on real titles first: run the baseline set under `OPENBLAS_CORETYPE=Haswell` (or on another CPU) and compare verdicts and corrected curves. Then decide whether the fit needs a deterministic tie-break or a conditioning fix, or whether only the golden's coverage does. See [the correction](plans/design-version.md#correction-after-the-v026-release-tests). |
46
+ | 28 | Fit sensitivity to arithmetic | open | The same request can get a different filter on a different processor. On the synthetic BW4 24 Hz title, `counterfactual` gave 2 sections here and 3 on Linux and macOS CI; `parametric`'s boost was 15.21 dB on this AVX-512 machine, 15.78 dB with Haswell BLAS kernels and 16.49 dB on CI. `flatten` matched everywhere. It's repeatable on one machine, so last-digit differences grow into a different local optimum. This already matters in practice: beqdesigner's library run uses two designers on different hardware (the unraid container and the Windows exe), so the same title may come back different depending on which one designed it. beqdesigner's out-of-date filter compares only design version and settings, so it can't catch that. Measure it on real titles first: run the baseline set under `OPENBLAS_CORETYPE=Haswell` (or on another CPU) and compare verdicts and corrected curves. Then decide whether the fit needs a deterministic tie-break or a conditioning fix, or whether only the golden's coverage does. See [the correction](plans/design-version.md#correction-after-the-v026-release-tests). |
47
47
 
48
48
  ## Review evidence
49
49
 
@@ -1,6 +1,6 @@
1
1
  """Shared filter primitives; no workflow package dependencies."""
2
2
 
3
- __version__ = "0.2.7"
3
+ __version__ = "0.2.8"
4
4
 
5
5
  from .types import BiquadSpec as BiquadSpec
6
6
  from .types import BiquadType as BiquadType
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes