hilt-core 1.0.0rc1__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 (250) hide show
  1. hilt_core-1.0.0rc1/.githooks/commit-msg +5 -0
  2. hilt_core-1.0.0rc1/.githooks/pre-commit +12 -0
  3. hilt_core-1.0.0rc1/.gitignore +35 -0
  4. hilt_core-1.0.0rc1/.gitlab/merge_request_templates/Release.md +89 -0
  5. hilt_core-1.0.0rc1/.python-version +1 -0
  6. hilt_core-1.0.0rc1/CHANGELOG.md +766 -0
  7. hilt_core-1.0.0rc1/LICENSE +202 -0
  8. hilt_core-1.0.0rc1/Makefile +183 -0
  9. hilt_core-1.0.0rc1/NOTICE +16 -0
  10. hilt_core-1.0.0rc1/PKG-INFO +226 -0
  11. hilt_core-1.0.0rc1/README.md +190 -0
  12. hilt_core-1.0.0rc1/STANDARDS.md +213 -0
  13. hilt_core-1.0.0rc1/artifacts/.gitkeep +2 -0
  14. hilt_core-1.0.0rc1/bench/FRICTION.md +290 -0
  15. hilt_core-1.0.0rc1/bench/README.md +80 -0
  16. hilt_core-1.0.0rc1/bench/__init__.py +10 -0
  17. hilt_core-1.0.0rc1/bench/_common.py +64 -0
  18. hilt_core-1.0.0rc1/bench/can_pair.py +64 -0
  19. hilt_core-1.0.0rc1/bench/coap_server.py +140 -0
  20. hilt_core-1.0.0rc1/bench/gpio_sim.py +109 -0
  21. hilt_core-1.0.0rc1/bench/i2c_stub.py +52 -0
  22. hilt_core-1.0.0rc1/bench/pihole.py +188 -0
  23. hilt_core-1.0.0rc1/bench/qemu_ssh.py +276 -0
  24. hilt_core-1.0.0rc1/bench/root_setup.sh +42 -0
  25. hilt_core-1.0.0rc1/bench/serial_pair.py +217 -0
  26. hilt_core-1.0.0rc1/bench/suites/__init__.py +6 -0
  27. hilt_core-1.0.0rc1/bench/suites/coap_device.py +153 -0
  28. hilt_core-1.0.0rc1/bench/suites/gpio_lines.py +201 -0
  29. hilt_core-1.0.0rc1/bench/suites/guest_acceptance.py +273 -0
  30. hilt_core-1.0.0rc1/bench/suites/pihole_lab.py +12 -0
  31. hilt_core-1.0.0rc1/bench/suites/pihole_rack.py +342 -0
  32. hilt_core-1.0.0rc1/bench/suites/rack.py +36 -0
  33. hilt_core-1.0.0rc1/bench/suites/serial_console.py +172 -0
  34. hilt_core-1.0.0rc1/bench/suites/ssh_lab.py +12 -0
  35. hilt_core-1.0.0rc1/dist-rc/.gitignore +1 -0
  36. hilt_core-1.0.0rc1/docs/api-stability.md +223 -0
  37. hilt_core-1.0.0rc1/docs/api.md +47 -0
  38. hilt_core-1.0.0rc1/docs/contracts.md +374 -0
  39. hilt_core-1.0.0rc1/docs/floor-technician.md +226 -0
  40. hilt_core-1.0.0rc1/docs/getting-started.md +142 -0
  41. hilt_core-1.0.0rc1/docs/hil/can.md +339 -0
  42. hilt_core-1.0.0rc1/docs/hil/device-api.md +495 -0
  43. hilt_core-1.0.0rc1/docs/hil/gpio.md +239 -0
  44. hilt_core-1.0.0rc1/docs/hil/i2c-spi.md +331 -0
  45. hilt_core-1.0.0rc1/docs/hil/index.md +89 -0
  46. hilt_core-1.0.0rc1/docs/hil/pwm.md +237 -0
  47. hilt_core-1.0.0rc1/docs/hil/serial.md +320 -0
  48. hilt_core-1.0.0rc1/docs/hilt-check.md +125 -0
  49. hilt_core-1.0.0rc1/docs/hilt-new.md +57 -0
  50. hilt_core-1.0.0rc1/docs/hilt-run.md +102 -0
  51. hilt_core-1.0.0rc1/docs/idioms.md +845 -0
  52. hilt_core-1.0.0rc1/docs/index.md +23 -0
  53. hilt_core-1.0.0rc1/docs/inspector-json.md +254 -0
  54. hilt_core-1.0.0rc1/docs/inspector.md +536 -0
  55. hilt_core-1.0.0rc1/docs/junit-xml.md +79 -0
  56. hilt_core-1.0.0rc1/docs/measurements.md +455 -0
  57. hilt_core-1.0.0rc1/docs/overview.md +241 -0
  58. hilt_core-1.0.0rc1/docs/schema/artifact-v1.schema.json +37 -0
  59. hilt_core-1.0.0rc1/docs/schema/result-v1.schema.json +238 -0
  60. hilt_core-1.0.0rc1/docs/schema/timeline-v1.schema.json +62 -0
  61. hilt_core-1.0.0rc1/docs/utilities.md +110 -0
  62. hilt_core-1.0.0rc1/examples/__init__.py +1 -0
  63. hilt_core-1.0.0rc1/examples/hardware_device_lifecycle.py +233 -0
  64. hilt_core-1.0.0rc1/examples/hello_world.py +57 -0
  65. hilt_core-1.0.0rc1/examples/networked_device.py +231 -0
  66. hilt_core-1.0.0rc1/examples/pi_hole_server.py +351 -0
  67. hilt_core-1.0.0rc1/examples/remote_device_ssh.py +137 -0
  68. hilt_core-1.0.0rc1/examples/run_data_evidence.py +140 -0
  69. hilt_core-1.0.0rc1/examples/ssh_tunneling.py +151 -0
  70. hilt_core-1.0.0rc1/examples/test_composition.py +145 -0
  71. hilt_core-1.0.0rc1/examples/wait_for_patterns.py +225 -0
  72. hilt_core-1.0.0rc1/hero.png +0 -0
  73. hilt_core-1.0.0rc1/mkdocs.yml +79 -0
  74. hilt_core-1.0.0rc1/pyproject.toml +223 -0
  75. hilt_core-1.0.0rc1/src/hilt/__init__.py +113 -0
  76. hilt_core-1.0.0rc1/src/hilt/arp.py +276 -0
  77. hilt_core-1.0.0rc1/src/hilt/artifacts.py +55 -0
  78. hilt_core-1.0.0rc1/src/hilt/base.py +2156 -0
  79. hilt_core-1.0.0rc1/src/hilt/cli.py +534 -0
  80. hilt_core-1.0.0rc1/src/hilt/device_api.py +1164 -0
  81. hilt_core-1.0.0rc1/src/hilt/errors.py +836 -0
  82. hilt_core-1.0.0rc1/src/hilt/evidence.py +116 -0
  83. hilt_core-1.0.0rc1/src/hilt/executor.py +349 -0
  84. hilt_core-1.0.0rc1/src/hilt/hooks.py +140 -0
  85. hilt_core-1.0.0rc1/src/hilt/inspector_app.py +654 -0
  86. hilt_core-1.0.0rc1/src/hilt/inspector_artifact_navigation.py +141 -0
  87. hilt_core-1.0.0rc1/src/hilt/inspector_artifact_view.py +261 -0
  88. hilt_core-1.0.0rc1/src/hilt/inspector_artifacts.py +114 -0
  89. hilt_core-1.0.0rc1/src/hilt/inspector_json.py +78 -0
  90. hilt_core-1.0.0rc1/src/hilt/inspector_rerun.py +312 -0
  91. hilt_core-1.0.0rc1/src/hilt/inspector_run.py +121 -0
  92. hilt_core-1.0.0rc1/src/hilt/inspector_selection.py +109 -0
  93. hilt_core-1.0.0rc1/src/hilt/inspector_timeline.py +149 -0
  94. hilt_core-1.0.0rc1/src/hilt/inspector_timeline_view.py +143 -0
  95. hilt_core-1.0.0rc1/src/hilt/inspector_tree.py +186 -0
  96. hilt_core-1.0.0rc1/src/hilt/junit.py +149 -0
  97. hilt_core-1.0.0rc1/src/hilt/lifecycle.py +734 -0
  98. hilt_core-1.0.0rc1/src/hilt/measurement.py +273 -0
  99. hilt_core-1.0.0rc1/src/hilt/mock.py +113 -0
  100. hilt_core-1.0.0rc1/src/hilt/py.typed +0 -0
  101. hilt_core-1.0.0rc1/src/hilt/redaction.py +132 -0
  102. hilt_core-1.0.0rc1/src/hilt/remote.py +257 -0
  103. hilt_core-1.0.0rc1/src/hilt/results.py +189 -0
  104. hilt_core-1.0.0rc1/src/hilt/routing.py +698 -0
  105. hilt_core-1.0.0rc1/src/hilt/run_data.py +132 -0
  106. hilt_core-1.0.0rc1/src/hilt/scaffold.py +222 -0
  107. hilt_core-1.0.0rc1/src/hilt/serial.py +665 -0
  108. hilt_core-1.0.0rc1/src/hilt/ssh.py +431 -0
  109. hilt_core-1.0.0rc1/src/hilt/timeline.py +140 -0
  110. hilt_core-1.0.0rc1/src/hilt/utils.py +1701 -0
  111. hilt_core-1.0.0rc1/src/hilt/verdict.py +94 -0
  112. hilt_core-1.0.0rc1/tests/conftest.py +97 -0
  113. hilt_core-1.0.0rc1/tests/fake_console.py +332 -0
  114. hilt_core-1.0.0rc1/tests/fixtures/hilt_check/clean_suite.py +43 -0
  115. hilt_core-1.0.0rc1/tests/fixtures/hilt_check/seeded_seams.py +37 -0
  116. hilt_core-1.0.0rc1/tests/fixtures/hilt_check/seeded_suite.py +113 -0
  117. hilt_core-1.0.0rc1/tests/inspector_rack.py +197 -0
  118. hilt_core-1.0.0rc1/tests/loopback_sshd.py +243 -0
  119. hilt_core-1.0.0rc1/tests/mock_connector.py +46 -0
  120. hilt_core-1.0.0rc1/tests/test_abort_phase_matrix.py +407 -0
  121. hilt_core-1.0.0rc1/tests/test_arp.py +388 -0
  122. hilt_core-1.0.0rc1/tests/test_artifacts.py +152 -0
  123. hilt_core-1.0.0rc1/tests/test_attribution_check.py +181 -0
  124. hilt_core-1.0.0rc1/tests/test_author_error_messages.py +792 -0
  125. hilt_core-1.0.0rc1/tests/test_base.py +195 -0
  126. hilt_core-1.0.0rc1/tests/test_base_subtree.py +156 -0
  127. hilt_core-1.0.0rc1/tests/test_check_constructor_hooks.py +182 -0
  128. hilt_core-1.0.0rc1/tests/test_check_ctx_provenance.py +483 -0
  129. hilt_core-1.0.0rc1/tests/test_check_env_via_utils.py +128 -0
  130. hilt_core-1.0.0rc1/tests/test_check_evidence_fulfilled.py +207 -0
  131. hilt_core-1.0.0rc1/tests/test_check_evidence_shadows_ctx.py +308 -0
  132. hilt_core-1.0.0rc1/tests/test_check_gated_pass.py +182 -0
  133. hilt_core-1.0.0rc1/tests/test_check_immutable_self.py +189 -0
  134. hilt_core-1.0.0rc1/tests/test_check_logger_not_print.py +107 -0
  135. hilt_core-1.0.0rc1/tests/test_check_measurement_in_node.py +169 -0
  136. hilt_core-1.0.0rc1/tests/test_check_measurement_name_unique.py +184 -0
  137. hilt_core-1.0.0rc1/tests/test_check_method_reference.py +141 -0
  138. hilt_core-1.0.0rc1/tests/test_check_model_resolution_failure.py +215 -0
  139. hilt_core-1.0.0rc1/tests/test_check_no_input_fallback.py +286 -0
  140. hilt_core-1.0.0rc1/tests/test_check_no_swallowed_cancel.py +156 -0
  141. hilt_core-1.0.0rc1/tests/test_check_no_verdict_in_cleanup.py +136 -0
  142. hilt_core-1.0.0rc1/tests/test_check_pure_build_suite.py +213 -0
  143. hilt_core-1.0.0rc1/tests/test_check_raise_test_failure.py +161 -0
  144. hilt_core-1.0.0rc1/tests/test_check_retired_names.py +145 -0
  145. hilt_core-1.0.0rc1/tests/test_check_shell_in_configure.py +205 -0
  146. hilt_core-1.0.0rc1/tests/test_check_unannotated_interface.py +171 -0
  147. hilt_core-1.0.0rc1/tests/test_cli.py +595 -0
  148. hilt_core-1.0.0rc1/tests/test_cli_inspect.py +304 -0
  149. hilt_core-1.0.0rc1/tests/test_composition.py +301 -0
  150. hilt_core-1.0.0rc1/tests/test_composition_properties.py +354 -0
  151. hilt_core-1.0.0rc1/tests/test_context_locality.py +131 -0
  152. hilt_core-1.0.0rc1/tests/test_context_sufficiency.py +366 -0
  153. hilt_core-1.0.0rc1/tests/test_credential_containment.py +333 -0
  154. hilt_core-1.0.0rc1/tests/test_device_api.py +1258 -0
  155. hilt_core-1.0.0rc1/tests/test_docs_site.py +201 -0
  156. hilt_core-1.0.0rc1/tests/test_env.py +169 -0
  157. hilt_core-1.0.0rc1/tests/test_errors.py +220 -0
  158. hilt_core-1.0.0rc1/tests/test_evidence_containment.py +61 -0
  159. hilt_core-1.0.0rc1/tests/test_evidence_on_verdict.py +377 -0
  160. hilt_core-1.0.0rc1/tests/test_examples.py +981 -0
  161. hilt_core-1.0.0rc1/tests/test_executor.py +583 -0
  162. hilt_core-1.0.0rc1/tests/test_floor_technician_guide.py +58 -0
  163. hilt_core-1.0.0rc1/tests/test_hilt_check.py +230 -0
  164. hilt_core-1.0.0rc1/tests/test_hooks.py +650 -0
  165. hilt_core-1.0.0rc1/tests/test_import_cycles.py +177 -0
  166. hilt_core-1.0.0rc1/tests/test_in_flight_termination.py +217 -0
  167. hilt_core-1.0.0rc1/tests/test_inspector_app.py +726 -0
  168. hilt_core-1.0.0rc1/tests/test_inspector_artifact_navigation.py +232 -0
  169. hilt_core-1.0.0rc1/tests/test_inspector_artifact_view.py +340 -0
  170. hilt_core-1.0.0rc1/tests/test_inspector_artifacts.py +251 -0
  171. hilt_core-1.0.0rc1/tests/test_inspector_rerun.py +311 -0
  172. hilt_core-1.0.0rc1/tests/test_inspector_run.py +355 -0
  173. hilt_core-1.0.0rc1/tests/test_inspector_schema.py +353 -0
  174. hilt_core-1.0.0rc1/tests/test_inspector_selection.py +297 -0
  175. hilt_core-1.0.0rc1/tests/test_inspector_timeline.py +233 -0
  176. hilt_core-1.0.0rc1/tests/test_inspector_timeline_paths.py +204 -0
  177. hilt_core-1.0.0rc1/tests/test_inspector_timeline_view.py +260 -0
  178. hilt_core-1.0.0rc1/tests/test_inspector_tree.py +340 -0
  179. hilt_core-1.0.0rc1/tests/test_integration_hooks.py +633 -0
  180. hilt_core-1.0.0rc1/tests/test_junit.py +362 -0
  181. hilt_core-1.0.0rc1/tests/test_lifecycle.py +692 -0
  182. hilt_core-1.0.0rc1/tests/test_lifecycle_engine.py +298 -0
  183. hilt_core-1.0.0rc1/tests/test_lsp.py +102 -0
  184. hilt_core-1.0.0rc1/tests/test_lsp_actions.py +431 -0
  185. hilt_core-1.0.0rc1/tests/test_lsp_edges.py +448 -0
  186. hilt_core-1.0.0rc1/tests/test_measurements.py +690 -0
  187. hilt_core-1.0.0rc1/tests/test_mock.py +126 -0
  188. hilt_core-1.0.0rc1/tests/test_nightly_soak.py +331 -0
  189. hilt_core-1.0.0rc1/tests/test_operator_interrupt.py +437 -0
  190. hilt_core-1.0.0rc1/tests/test_parallel.py +158 -0
  191. hilt_core-1.0.0rc1/tests/test_parent_route.py +342 -0
  192. hilt_core-1.0.0rc1/tests/test_public_surface.py +212 -0
  193. hilt_core-1.0.0rc1/tests/test_pylsp_plugin.py +196 -0
  194. hilt_core-1.0.0rc1/tests/test_rack_scale.py +383 -0
  195. hilt_core-1.0.0rc1/tests/test_redact_ctx.py +536 -0
  196. hilt_core-1.0.0rc1/tests/test_remote.py +294 -0
  197. hilt_core-1.0.0rc1/tests/test_results.py +413 -0
  198. hilt_core-1.0.0rc1/tests/test_routing.py +715 -0
  199. hilt_core-1.0.0rc1/tests/test_run_data.py +195 -0
  200. hilt_core-1.0.0rc1/tests/test_scaffold.py +341 -0
  201. hilt_core-1.0.0rc1/tests/test_serial.py +644 -0
  202. hilt_core-1.0.0rc1/tests/test_shell_in_configure.py +213 -0
  203. hilt_core-1.0.0rc1/tests/test_smoke.py +13 -0
  204. hilt_core-1.0.0rc1/tests/test_ssh.py +1181 -0
  205. hilt_core-1.0.0rc1/tests/test_structural_contracts.py +259 -0
  206. hilt_core-1.0.0rc1/tests/test_three_way_race.py +222 -0
  207. hilt_core-1.0.0rc1/tests/test_time_budget.py +982 -0
  208. hilt_core-1.0.0rc1/tests/test_timeline.py +287 -0
  209. hilt_core-1.0.0rc1/tests/test_transport_contract.py +276 -0
  210. hilt_core-1.0.0rc1/tests/test_transport_faults.py +258 -0
  211. hilt_core-1.0.0rc1/tests/test_typed_ctx.py +132 -0
  212. hilt_core-1.0.0rc1/tests/test_utils.py +912 -0
  213. hilt_core-1.0.0rc1/tests/test_verdict.py +93 -0
  214. hilt_core-1.0.0rc1/tools/attribution_check.py +184 -0
  215. hilt_core-1.0.0rc1/tools/coverage_floor.py +97 -0
  216. hilt_core-1.0.0rc1/tools/dependency_update.py +163 -0
  217. hilt_core-1.0.0rc1/tools/hilt_check/__init__.py +29 -0
  218. hilt_core-1.0.0rc1/tools/hilt_check/__main__.py +5 -0
  219. hilt_core-1.0.0rc1/tools/hilt_check/checker.py +70 -0
  220. hilt_core-1.0.0rc1/tools/hilt_check/cli.py +125 -0
  221. hilt_core-1.0.0rc1/tools/hilt_check/fixes.py +350 -0
  222. hilt_core-1.0.0rc1/tools/hilt_check/lsp.py +338 -0
  223. hilt_core-1.0.0rc1/tools/hilt_check/model.py +203 -0
  224. hilt_core-1.0.0rc1/tools/hilt_check/py.typed +0 -0
  225. hilt_core-1.0.0rc1/tools/hilt_check/pylsp_plugin.py +137 -0
  226. hilt_core-1.0.0rc1/tools/hilt_check/registry.py +74 -0
  227. hilt_core-1.0.0rc1/tools/hilt_check/rules/__init__.py +6 -0
  228. hilt_core-1.0.0rc1/tools/hilt_check/rules/constructor_hooks.py +83 -0
  229. hilt_core-1.0.0rc1/tools/hilt_check/rules/ctx_provenance.py +462 -0
  230. hilt_core-1.0.0rc1/tools/hilt_check/rules/env_via_utils.py +82 -0
  231. hilt_core-1.0.0rc1/tools/hilt_check/rules/evidence_fulfilled.py +171 -0
  232. hilt_core-1.0.0rc1/tools/hilt_check/rules/evidence_shadows_ctx.py +131 -0
  233. hilt_core-1.0.0rc1/tools/hilt_check/rules/gated_pass.py +79 -0
  234. hilt_core-1.0.0rc1/tools/hilt_check/rules/immutable_self.py +121 -0
  235. hilt_core-1.0.0rc1/tools/hilt_check/rules/logger_not_print.py +50 -0
  236. hilt_core-1.0.0rc1/tools/hilt_check/rules/measurement_in_node.py +115 -0
  237. hilt_core-1.0.0rc1/tools/hilt_check/rules/measurement_name_unique.py +93 -0
  238. hilt_core-1.0.0rc1/tools/hilt_check/rules/method_reference.py +98 -0
  239. hilt_core-1.0.0rc1/tools/hilt_check/rules/model_resolution_failure.py +144 -0
  240. hilt_core-1.0.0rc1/tools/hilt_check/rules/no_input_fallback.py +277 -0
  241. hilt_core-1.0.0rc1/tools/hilt_check/rules/no_swallowed_cancel.py +109 -0
  242. hilt_core-1.0.0rc1/tools/hilt_check/rules/no_verdict_in_cleanup.py +91 -0
  243. hilt_core-1.0.0rc1/tools/hilt_check/rules/pure_build_suite.py +124 -0
  244. hilt_core-1.0.0rc1/tools/hilt_check/rules/raise_test_failure.py +144 -0
  245. hilt_core-1.0.0rc1/tools/hilt_check/rules/retired_names.py +71 -0
  246. hilt_core-1.0.0rc1/tools/hilt_check/rules/shell_in_configure.py +82 -0
  247. hilt_core-1.0.0rc1/tools/hilt_check/rules/unannotated_interface.py +177 -0
  248. hilt_core-1.0.0rc1/tools/import_cycles.py +254 -0
  249. hilt_core-1.0.0rc1/tools/nightly_soak.py +312 -0
  250. hilt_core-1.0.0rc1/uv.lock +1668 -0
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+ # Refuse a commit message that credits an assistant (#149): a Co-Authored-By naming one,
3
+ # a "Generated with" footer, a session link. The record names people; the repo is public.
4
+ # make check runs the same check over origin/main..HEAD for a clone without the hook.
5
+ exec uv run python tools/attribution_check.py --message "$1"
@@ -0,0 +1,12 @@
1
+ #!/bin/sh
2
+ # Auto-format and auto-fix staged Python files, re-staging the fixes.
3
+ # Unfixable lint errors still block the commit.
4
+ set -e
5
+
6
+ files=$(git diff --cached --name-only --diff-filter=ACMR -- '*.py')
7
+ [ -z "$files" ] && exit 0
8
+
9
+ uv run ruff format $files
10
+ uv run ruff check --fix $files || true
11
+ git add $files
12
+ uv run ruff check $files
@@ -0,0 +1,35 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ dist/
6
+ .smoke/
7
+ build/
8
+ site/
9
+
10
+ # Environments
11
+ .venv/
12
+
13
+ # Tool caches
14
+ .pytest_cache/
15
+ .hypothesis/
16
+ .ruff_cache/
17
+ .coverage/
18
+ .audit/
19
+ .soak/
20
+ htmlcov/
21
+ .mutants/
22
+
23
+ # Editors
24
+ .idea/
25
+ .vscode/
26
+
27
+ # Secrets — GitLab project access tokens live in the working tree as *.gplat.
28
+ # This rule was present before the scaffold commit and was lost when that commit
29
+ # rewrote the file; restored here. Without it `git add -A` in a fresh clone
30
+ # commits a live credential.
31
+ *.gplat
32
+
33
+ # Evidence written by a run from the repo root. Keep the directory, never its contents.
34
+ artifacts/*
35
+ !artifacts/.gitkeep
@@ -0,0 +1,89 @@
1
+ # Release evidence
2
+
3
+ Version: <!-- MAJOR.MINOR.PATCH -->
4
+ Candidate commit: <!-- full SHA; refresh the evidence if the candidate changes -->
5
+ Previous release: <!-- tag, or "initial Python release" -->
6
+ Release issue: <!-- link -->
7
+
8
+ State what changed for the suite author and the Floor Technician. Link the dated
9
+ changelog section and name any upgrade action before requesting review.
10
+
11
+ ## Before the release cut
12
+
13
+ - [ ] Read `docs/overview.md`, `docs/contracts.md`, and `docs/idioms.md` in full.
14
+ Verify the candidate preserves runtime hardware and verdict integrity.
15
+ - [ ] Confirm the release scope and go/no-go decision with Ty and Zavala. For the
16
+ initial release, record outstanding phase exit criteria and their disposition;
17
+ merged hardening tooling alone does not establish release readiness.
18
+ - [ ] Resolve the distribution name and availability under
19
+ [#9](https://gitlab.com/Tyler-Meador/HILT/-/issues/9). Do not infer a publish
20
+ target from the current `hilt` development metadata. The legacy repositories
21
+ remain untouched; the decision leaves the TypeScript repository alone.
22
+ - [ ] Verify [#103](https://gitlab.com/Tyler-Meador/HILT/-/issues/103) supplies
23
+ the approved name, README, classifiers, URLs, and other package metadata, and
24
+ [#102](https://gitlab.com/Tyler-Meador/HILT/-/issues/102) supplies the wheel
25
+ build and clean-install smoke test (`make smoke`, run by the gate). There is no
26
+ publish pipeline: `make build` and the upload are bench steps below (#138).
27
+ These are prerequisites, not capabilities supplied by this checklist.
28
+ - [ ] Review the version against `docs/api-stability.md`. If a promise changes, link
29
+ Ty's `needs-sign-off` decision and update the public surface, reference table,
30
+ documenting section, and changelog together. Apply the deprecation policy from 1.0.0.
31
+
32
+ ## Candidate validation
33
+
34
+ - [ ] Run `uv sync --locked` and `make check` on the candidate at the bench (there is
35
+ no CI). State "green locally" on the MR and record the commit, test count, coverage
36
+ floors, strict docs build, and locked-dependency audit results. No checks or floors
37
+ are weakened.
38
+ - [ ] Run `make soak` on the candidate and link all eight successful full-suite runs.
39
+ For the initial release, one recorded bench soak on the candidate head is the
40
+ Phase 6 exit (Ty, 2026-09-11 on #138): `make nightly-record` green, rack repeats
41
+ included, posted to [#68](https://gitlab.com/Tyler-Meador/HILT/-/issues/68).
42
+ Link that note.
43
+ - [ ] Run `make build` at the bench (`uv build` into `dist/`). Inspect both wheel and
44
+ source distribution; verify the version, metadata, license, and packaged modules.
45
+ - [ ] Link the clean-environment wheel smoke test from #102: `hilt-check --list-rules`
46
+ and `hilt run examples/hello_world.py` succeed using the installed wheel and a
47
+ copied example outside the source checkout. Verify the expected PASS exit and
48
+ generated evidence, and that imports resolve to the installed distribution.
49
+ - [ ] Confirm `make docs` builds strictly. The site is not hosted: the release branch
50
+ cut below carries the build under `docs/site/`. Record the branch path readers
51
+ will be given.
52
+
53
+ ## Changelog cut and review
54
+
55
+ - [ ] Reconcile every notable merged change since the previous release with
56
+ `CHANGELOG.md`. For the initial Python release, retain the six-phase migration
57
+ history and the subsequent hardening/refinement entries; do not assign invented
58
+ versions or release dates to those phases.
59
+ - [ ] Move the selected Unreleased entries to `## [VERSION] - YYYY-MM-DD`, using the
60
+ actual release version and date. Leave a fresh Unreleased section for later MRs;
61
+ refresh its historical cutoff text and any release comparison links.
62
+ - [ ] Set the matching distribution version in `pyproject.toml`, refresh `uv.lock`
63
+ with uv, and rerun validation on the final candidate. `hilt.__version__` must
64
+ report the installed version.
65
+ - [ ] Request Commander Zavala's review with the evidence above. Leave the MR open
66
+ for him: only Zavala merges to `main`; never push the release commit there directly.
67
+
68
+ ## After Zavala's merge and release authorization
69
+
70
+ - [ ] Record the merged commit and run `make check` on it again. If merge resolution
71
+ changed the validated candidate, refresh the affected validation before the cut.
72
+ - [ ] The authorized releaser cuts `release/MAJOR.MINOR.PATCH` from that commit, runs
73
+ `make docs-release`, and commits `docs/site/` on that branch only; `main` never
74
+ carries the build. A new release branch is a new docs build. The branch is pushed
75
+ and never rebased.
76
+ - [ ] The authorized releaser creates the approved version tag at the release branch
77
+ head, then from the bench runs `make build` and uploads `dist/` to the approved
78
+ package index (#9) with `uv publish`. Record the tag, the branch, and the upload
79
+ output; a failed upload is not a released package, and an existing release tag is
80
+ never moved.
81
+ - [ ] Install the published version in a fresh environment, rerun the CLI smoke test,
82
+ and verify `hilt.__version__`. Confirm the public package page and the release
83
+ branch's `docs/site/index.html` open; record their URLs and the installation result.
84
+ - [ ] Attach the dated changelog and upgrade instructions to the release record so
85
+ station notes can cite the version and the behavior it establishes.
86
+
87
+ Evidence and remaining blockers:
88
+
89
+ <!-- Link each result. An unchecked prerequisite remains a blocker, not an assumption. -->
@@ -0,0 +1 @@
1
+ 3.14