steuermaschine 0.0.1__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 (924) hide show
  1. steuermaschine-0.0.1/.github/dependabot.yml +20 -0
  2. steuermaschine-0.0.1/.github/workflows/ci.yml +93 -0
  3. steuermaschine-0.0.1/.github/workflows/codeql.yml +22 -0
  4. steuermaschine-0.0.1/.github/workflows/release.yml +62 -0
  5. steuermaschine-0.0.1/.gitignore +7 -0
  6. steuermaschine-0.0.1/.gitleaks.toml +7 -0
  7. steuermaschine-0.0.1/.pre-commit-config.yaml +31 -0
  8. steuermaschine-0.0.1/AGENTS.md +113 -0
  9. steuermaschine-0.0.1/CHANGELOG.md +7 -0
  10. steuermaschine-0.0.1/CLAUDE.md +1 -0
  11. steuermaschine-0.0.1/Makefile +46 -0
  12. steuermaschine-0.0.1/PKG-INFO +135 -0
  13. steuermaschine-0.0.1/README.md +124 -0
  14. steuermaschine-0.0.1/REVIEW-INDEPENDENT-release.md +94 -0
  15. steuermaschine-0.0.1/REVIEW-callers-sm-only.md +49 -0
  16. steuermaschine-0.0.1/REVIEW-core-layering.md +42 -0
  17. steuermaschine-0.0.1/REVIEW-promote-pin.md +59 -0
  18. steuermaschine-0.0.1/REVIEW-sm-clean.md +66 -0
  19. steuermaschine-0.0.1/REVIEW-tools-gaps.md +46 -0
  20. steuermaschine-0.0.1/_typos.toml +12 -0
  21. steuermaschine-0.0.1/bin/check +46 -0
  22. steuermaschine-0.0.1/bin/debt.py +135 -0
  23. steuermaschine-0.0.1/bin/gate_known.py +70 -0
  24. steuermaschine-0.0.1/bin/merge-slice +36 -0
  25. steuermaschine-0.0.1/bin/migrate_config.py +105 -0
  26. steuermaschine-0.0.1/bin/promote +164 -0
  27. steuermaschine-0.0.1/bin/promote-allow.toml +10 -0
  28. steuermaschine-0.0.1/bin/promote_lib.sh +114 -0
  29. steuermaschine-0.0.1/bin/resolve-registrations.py +73 -0
  30. steuermaschine-0.0.1/bin/review_gate.py +68 -0
  31. steuermaschine-0.0.1/bin/rollback +26 -0
  32. steuermaschine-0.0.1/bin/sm-dev +8 -0
  33. steuermaschine-0.0.1/conftest.py +112 -0
  34. steuermaschine-0.0.1/docs/DEFINITION-OF-DONE.md +30 -0
  35. steuermaschine-0.0.1/docs/DESIGN.md +607 -0
  36. steuermaschine-0.0.1/docs/GAPS.md +45 -0
  37. steuermaschine-0.0.1/docs/INTEGRATION.md +277 -0
  38. steuermaschine-0.0.1/docs/NATIVE-PORT.md +44 -0
  39. steuermaschine-0.0.1/docs/RUNBOOK-release-cut.md +86 -0
  40. steuermaschine-0.0.1/docs/SWITCH-queue-daemon.md +62 -0
  41. steuermaschine-0.0.1/docs/SWITCH-state-paths.md +39 -0
  42. steuermaschine-0.0.1/docs/debt.json +10 -0
  43. steuermaschine-0.0.1/examples/layer/pyproject.toml +19 -0
  44. steuermaschine-0.0.1/examples/layer/src/steuermaschine_layer/__init__.py +0 -0
  45. steuermaschine-0.0.1/examples/layer/src/steuermaschine_layer/plugin.py +67 -0
  46. steuermaschine-0.0.1/examples/layer/tests/test_layer.py +89 -0
  47. steuermaschine-0.0.1/examples/layer/tests/test_layer_on_heinzel.py +149 -0
  48. steuermaschine-0.0.1/examples/layer/tests/test_layer_stack.py +128 -0
  49. steuermaschine-0.0.1/examples/toy/pyproject.toml +19 -0
  50. steuermaschine-0.0.1/examples/toy/src/steuermaschine_toy/__init__.py +0 -0
  51. steuermaschine-0.0.1/examples/toy/src/steuermaschine_toy/plugin.py +290 -0
  52. steuermaschine-0.0.1/examples/toy/src/steuermaschine_toy/reset.py +37 -0
  53. steuermaschine-0.0.1/examples/toy/tests/test_toy.py +103 -0
  54. steuermaschine-0.0.1/plugins/heinzel/launchd/io.github.helmut-hoffer-von-ankershoffen.sm-queue.plist +38 -0
  55. steuermaschine-0.0.1/plugins/heinzel/launchd/io.github.helmut-hoffer-von-ankershoffen.sm-train.plist +36 -0
  56. steuermaschine-0.0.1/plugins/heinzel/port/fakebin/bd +1 -0
  57. steuermaschine-0.0.1/plugins/heinzel/port/fakebin/gh +1 -0
  58. steuermaschine-0.0.1/plugins/heinzel/port/fakebin/tool.py +34 -0
  59. steuermaschine-0.0.1/plugins/heinzel/port/move.py +360 -0
  60. steuermaschine-0.0.1/plugins/heinzel/port/native_cli.py +35 -0
  61. steuermaschine-0.0.1/plugins/heinzel/port/parity.py +267 -0
  62. steuermaschine-0.0.1/plugins/heinzel/pyproject.toml +19 -0
  63. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/__init__.py +1 -0
  64. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/environment.py +99 -0
  65. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/guard_floor.py +204 -0
  66. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/__init__.py +73 -0
  67. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission.py +230 -0
  68. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/__init__.py +5 -0
  69. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/focused_admit.py +841 -0
  70. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/focused_replay.py +92 -0
  71. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/focused_resulting.py +339 -0
  72. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/focused_slots.py +934 -0
  73. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/focused_update.py +128 -0
  74. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/hold.py +37 -0
  75. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/identity.py +24 -0
  76. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/ops.py +392 -0
  77. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/receipt_guard.py +74 -0
  78. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/repair_main.py +281 -0
  79. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/admission_lib/wait.py +137 -0
  80. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/affected.py +188 -0
  81. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/affected_lib/__init__.py +1 -0
  82. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/affected_lib/ruff.toml +6 -0
  83. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/affected_lib/select.py +455 -0
  84. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/agents.py +65 -0
  85. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/agents_lib/__init__.py +1 -0
  86. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/agents_lib/table.py +108 -0
  87. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/alarm.py +99 -0
  88. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/alarm_lib/__init__.py +1 -0
  89. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/alarm_lib/rules.py +268 -0
  90. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/alarm_lib/watch.py +145 -0
  91. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/asks.py +74 -0
  92. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/asks_lib/__init__.py +1 -0
  93. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/asks_lib/asks.py +240 -0
  94. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/asks_lib/legacy.py +14 -0
  95. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/briefs.py +64 -0
  96. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/briefs_lib/__init__.py +1 -0
  97. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/briefs_lib/builder.py +185 -0
  98. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/briefs_lib/reviewer.py +60 -0
  99. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_classify.py +96 -0
  100. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_classify_lib/__init__.py +1 -0
  101. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_classify_lib/jev.py +234 -0
  102. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_evidence.py +131 -0
  103. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_evidence_lib/__init__.py +1 -0
  104. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_evidence_lib/main_evidence.py +27 -0
  105. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_lib/__init__.py +4 -0
  106. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_lib/cause.py +100 -0
  107. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_lib/faillog.py +12 -0
  108. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_lib/triage.py +229 -0
  109. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops.py +606 -0
  110. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/__init__.py +1 -0
  111. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/checks.py +30 -0
  112. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/defer.py +235 -0
  113. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/deferred.py +67 -0
  114. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/legacy.py +36 -0
  115. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/quarantine.py +292 -0
  116. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/rerun.py +155 -0
  117. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/rerun_plan.py +83 -0
  118. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_ops_lib/sonar_close.py +192 -0
  119. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_read.py +354 -0
  120. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ci_triage.py +157 -0
  121. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/combine.py +199 -0
  122. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/combine_lib/__init__.py +1 -0
  123. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/combine_lib/combine.py +435 -0
  124. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/coord.py +73 -0
  125. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/coord_lib/__init__.py +1 -0
  126. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/coord_lib/base.py +58 -0
  127. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/coord_lib/journal.py +203 -0
  128. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/dispatch.py +269 -0
  129. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/dispatch_lib/__init__.py +0 -0
  130. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/dispatch_lib/focused.py +751 -0
  131. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/dispatch_lib/rules.py +241 -0
  132. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/docs.py +63 -0
  133. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/flakes.py +201 -0
  134. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/flakes_lib/__init__.py +1 -0
  135. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/flakes_lib/count.py +118 -0
  136. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/flakes_lib/reads.py +70 -0
  137. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go.py +207 -0
  138. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go_lib/__init__.py +2 -0
  139. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go_lib/decide.py +562 -0
  140. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go_lib/legacy.py +262 -0
  141. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go_lib/live.py +65 -0
  142. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go_lib/probes.py +626 -0
  143. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go_lib/views.py +441 -0
  144. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go_lib/views_moved.py +180 -0
  145. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/go_lib/words.py +132 -0
  146. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/guards.py +407 -0
  147. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/guards_lib/__init__.py +1 -0
  148. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/guards_lib/governor.py +214 -0
  149. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/guards_lib/hooks.py +114 -0
  150. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/guards_lib/legacy.py +33 -0
  151. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/guards_lib/loadguard.py +156 -0
  152. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/guards_lib/uvguard.py +78 -0
  153. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/handoff.py +61 -0
  154. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/handoff_lib/__init__.py +1 -0
  155. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/handoff_lib/hour.py +70 -0
  156. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/handoff_lib/snapshot.py +181 -0
  157. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/junit.py +105 -0
  158. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/leakwatch.py +161 -0
  159. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/leakwatch_lib/__init__.py +1 -0
  160. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/leakwatch_lib/watch.py +458 -0
  161. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/loadguard.py +73 -0
  162. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/lock.py +97 -0
  163. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/lock_lib/__init__.py +0 -0
  164. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/lock_lib/refuse.py +124 -0
  165. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/loops.py +151 -0
  166. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/merge_ledger.py +331 -0
  167. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/merge_ready.py +134 -0
  168. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/merge_tier.py +120 -0
  169. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/merges.py +31 -0
  170. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/merges_lib/__init__.py +1 -0
  171. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/merges_lib/combine_close.py +86 -0
  172. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/mini.py +276 -0
  173. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet.py +322 -0
  174. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/__init__.py +1 -0
  175. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/admit_wave.py +634 -0
  176. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/check_ops.py +84 -0
  177. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/collect_cases.py +198 -0
  178. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/floor_check.py +155 -0
  179. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/focused_manifest.py +754 -0
  180. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/ops.py +255 -0
  181. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/wave_ops.py +137 -0
  182. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/packet_lib/wave_size.py +164 -0
  183. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/plugin_gallery.py +356 -0
  184. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/pr_owned.py +45 -0
  185. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/preflight.py +382 -0
  186. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/preflight_lib/__init__.py +2 -0
  187. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/preflight_lib/ci_meta.py +107 -0
  188. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/preflight_lib/head.py +1043 -0
  189. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/preflight_lib/scoped_cov.py +74 -0
  190. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/preflight_lib/texts.py +103 -0
  191. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue.py +487 -0
  192. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_hold.py +139 -0
  193. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/__init__.py +0 -0
  194. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/bead_stamp.py +89 -0
  195. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/combine_notes.py +26 -0
  196. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/diff_guard.py +165 -0
  197. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/edge.py +217 -0
  198. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/flakes_read.py +57 -0
  199. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/hzlib.py +498 -0
  200. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/job_proof.py +50 -0
  201. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/known_failures.py +80 -0
  202. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/known_main_infra.py +86 -0
  203. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/main_batch.py +366 -0
  204. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/main_checkpoint.py +749 -0
  205. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/main_checkpoint_reader.py +192 -0
  206. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/main_plan.py +97 -0
  207. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/merge_gate.py +257 -0
  208. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/merge_train.py +278 -0
  209. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/moved_map.py +130 -0
  210. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/queue_daemon.py +1829 -0
  211. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/release_candidate.py +616 -0
  212. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/release_flow.py +106 -0
  213. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/ruff.toml +22 -0
  214. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_lib/stall.py +243 -0
  215. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/queue_main.py +89 -0
  216. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/refill.py +86 -0
  217. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/refill_lib/__init__.py +1 -0
  218. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/refill_lib/ruff.toml +5 -0
  219. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/refill_lib/slots.py +79 -0
  220. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/rehearse.py +448 -0
  221. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/rehearse_lib/__init__.py +5 -0
  222. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/rehearse_lib/legacy.py +25 -0
  223. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/rehearse_lib/others.py +62 -0
  224. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/rehearse_lib/rehearsal.py +519 -0
  225. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/rejudge.py +327 -0
  226. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release.py +388 -0
  227. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_admit.py +94 -0
  228. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_admit_lib/__init__.py +1 -0
  229. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_admit_lib/focused_release.py +460 -0
  230. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_admit_lib/release_identity.py +50 -0
  231. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_admit_lib/release_ops.py +124 -0
  232. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_admit_lib/release_scope.py +137 -0
  233. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_admit_lib/release_slots.py +296 -0
  234. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/__init__.py +0 -0
  235. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/approved.py +33 -0
  236. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/approved_sources/ci.yml +1211 -0
  237. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/approved_sources/release_candidate.py.txt +615 -0
  238. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/binding.py +95 -0
  239. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/candidate_capacity.py +543 -0
  240. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/candidate_policy.py +212 -0
  241. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/edge.py +69 -0
  242. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/moved_map.py +183 -0
  243. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/names.py +46 -0
  244. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/notes_audit.py +43 -0
  245. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/rejection.py +569 -0
  246. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/runner.py +2824 -0
  247. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_lib/snapshot.py +134 -0
  248. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_read.py +441 -0
  249. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_read_lib/__init__.py +0 -0
  250. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_read_lib/assets.py +124 -0
  251. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_read_lib/chores.py +90 -0
  252. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_read_lib/edge.py +9 -0
  253. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_read_lib/moved_map.py +74 -0
  254. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_read_lib/status.py +90 -0
  255. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_read_lib/verify.py +99 -0
  256. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/release_window.py +80 -0
  257. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship.py +183 -0
  258. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/__init__.py +6 -0
  259. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/deps.py +102 -0
  260. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/edge.py +5 -0
  261. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/moved_map.py +48 -0
  262. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/pr.py +213 -0
  263. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/push_gate.py +74 -0
  264. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/push_gate_cli.py +100 -0
  265. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/push_gate_rules.py +127 -0
  266. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/ship_lib/ship.py +92 -0
  267. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/skills.py +134 -0
  268. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/slots.py +236 -0
  269. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/slots_lib/__init__.py +0 -0
  270. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/slots_lib/collect.py +173 -0
  271. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/slots_lib/legacy.py +30 -0
  272. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/slots_lib/registry_lock.py +21 -0
  273. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/status.py +180 -0
  274. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/status_lib/__init__.py +1 -0
  275. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/status_lib/gate.py +109 -0
  276. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/status_lib/table.py +120 -0
  277. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/sweep.py +38 -0
  278. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/sweep_lib/__init__.py +1 -0
  279. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/sweep_lib/evidence.py +258 -0
  280. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tasks.py +132 -0
  281. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tasks_lib/__init__.py +1 -0
  282. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tasks_lib/beads.py +204 -0
  283. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tick.py +447 -0
  284. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tick_lib/__init__.py +1 -0
  285. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tick_lib/checks.py +87 -0
  286. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tick_lib/hub.py +110 -0
  287. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tick_lib/legacy.py +25 -0
  288. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tick_lib/timing.py +375 -0
  289. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/tick_lib/watch.py +161 -0
  290. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train.py +429 -0
  291. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/__init__.py +0 -0
  292. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/batch_next.py +146 -0
  293. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/digest.py +97 -0
  294. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/edge.py +59 -0
  295. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/legacy.py +25 -0
  296. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/moved_map.py +394 -0
  297. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/names.py +33 -0
  298. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/plan.py +140 -0
  299. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/resume_ci.py +78 -0
  300. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/ruff.toml +10 -0
  301. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_lib/train.py +1173 -0
  302. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/train_status.py +24 -0
  303. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/updater_hold.py +42 -0
  304. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/velocity.py +136 -0
  305. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/velocity_lib/__init__.py +1 -0
  306. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/velocity_lib/ruff.toml +6 -0
  307. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/velocity_lib/samples.py +338 -0
  308. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/why.py +187 -0
  309. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/native/window.py +816 -0
  310. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/README.md +1 -0
  311. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/alarm-check.md +20 -0
  312. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/alarm-list.md +20 -0
  313. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/beads-agents.md +5 -0
  314. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/beads-brief.md +7 -0
  315. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/beads-stamp.md +8 -0
  316. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/beads-sweep.md +15 -0
  317. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/beads-tasks.md +11 -0
  318. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-classify.md +19 -0
  319. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-defer.md +25 -0
  320. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-deferred.md +6 -0
  321. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-faillog.md +16 -0
  322. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-flakes.md +36 -0
  323. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-main.md +11 -0
  324. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-merge-gate.md +7 -0
  325. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-one-dispatch.md +20 -0
  326. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-one-repeats.md +3 -0
  327. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-one-rerun.md +3 -0
  328. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-one-status.md +3 -0
  329. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-one-watch.md +3 -0
  330. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-quarantine-flag.md +13 -0
  331. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-quarantine-list.md +13 -0
  332. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-rerun.md +21 -0
  333. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-sonar-close.md +15 -0
  334. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-triage-prs.md +17 -0
  335. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-watch.md +35 -0
  336. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-why.md +28 -0
  337. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-window-release.md +5 -0
  338. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-window-run.md +3 -0
  339. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/ci-window-status.md +3 -0
  340. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/daemon-governor.md +25 -0
  341. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/daemon-loadguard.md +38 -0
  342. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/daemon-queue.md +3 -0
  343. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/daemon-rehearse.md +3 -0
  344. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/doc-ask.md +12 -0
  345. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/doc-handoff.md +9 -0
  346. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/doc-section.md +9 -0
  347. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/doc-skills.md +10 -0
  348. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/doc-velocity.md +8 -0
  349. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/gate-status.md +3 -0
  350. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/go-views.md +28 -0
  351. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/go.md +29 -0
  352. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/guard-git.md +19 -0
  353. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/guard-heavy.md +25 -0
  354. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/guard-uv.md +27 -0
  355. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-apply.md +42 -0
  356. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-cases.md +21 -0
  357. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-combine-close.md +5 -0
  358. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-combine-status.md +14 -0
  359. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-coverage.md +30 -0
  360. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-floor.md +13 -0
  361. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-guard.md +3 -0
  362. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-manifest.md +29 -0
  363. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-merge-ready.md +9 -0
  364. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-meta.md +51 -0
  365. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-packet.md +64 -0
  366. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-pr.md +3 -0
  367. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-preflight.md +100 -0
  368. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-prepare.md +54 -0
  369. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-push.md +3 -0
  370. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-review-brief.md +8 -0
  371. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-select.md +13 -0
  372. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-ship.md +63 -0
  373. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-size.md +12 -0
  374. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/head-validate.md +3 -0
  375. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/lim.md +21 -0
  376. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/mini-governor.md +20 -0
  377. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/mini-leakwatch-check.md +21 -0
  378. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/mini-loadguard.md +6 -0
  379. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/mini-loops.md +43 -0
  380. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/mini-verify.md +12 -0
  381. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/note.md +6 -0
  382. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/queue-add.md +83 -0
  383. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/queue-drop.md +3 -0
  384. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/queue-list.md +3 -0
  385. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/queue-main-rerun.md +7 -0
  386. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/queue-why.md +3 -0
  387. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-drop.md +14 -0
  388. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-reads.md +18 -0
  389. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-rehearse-cancel.md +3 -0
  390. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-rehearse-consumers.md +3 -0
  391. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-rehearse-plan.md +3 -0
  392. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-rehearse-start.md +33 -0
  393. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-rehearse-status.md +3 -0
  394. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-rehearse-step.md +3 -0
  395. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/release-resume.md +22 -0
  396. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/retired-popup-guard.md +22 -0
  397. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/retired-reload-loops.md +17 -0
  398. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/status.md +30 -0
  399. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/tick.md +135 -0
  400. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/timing-gate.md +59 -0
  401. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/timing-hosted.md +26 -0
  402. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/timing-stages.md +27 -0
  403. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/parity/why.md +13 -0
  404. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/pipelines/__init__.py +20 -0
  405. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/pipelines/common.py +117 -0
  406. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/pipelines/head_admit.py +618 -0
  407. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/pipelines/release_cut.py +420 -0
  408. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/plugin.py +132 -0
  409. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/README.md +2 -0
  410. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/admission-originals.sha256 +22 -0
  411. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/beads-agents-add.md +139 -0
  412. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/beads-brief.md +138 -0
  413. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/beads-stamp-released.md +124 -0
  414. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/beads-stamp.md +134 -0
  415. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/beads-tasks.md +178 -0
  416. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-classify.md +190 -0
  417. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-defer.md +244 -0
  418. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-flake-ledger.md +84 -0
  419. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-merge-gate-rejudge.md +123 -0
  420. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-one-dispatch.md +350 -0
  421. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-quarantine-flag.md +223 -0
  422. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-rerun.md +221 -0
  423. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-sonar-close.md +211 -0
  424. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/ci-window-drop.md +79 -0
  425. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/daemon-governor.md +182 -0
  426. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/daemon-loadguard.md +162 -0
  427. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/daemon-queue.md +475 -0
  428. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/daemon-train.md +436 -0
  429. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/doc-ask.md +143 -0
  430. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/doc-asks-ack.md +120 -0
  431. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/doc-handoff.md +145 -0
  432. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/doc-hour.md +127 -0
  433. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/doc-skills-generate.md +114 -0
  434. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/doc-skills-link.md +106 -0
  435. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/doc-velocity-record.md +117 -0
  436. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-admit.md +274 -0
  437. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-apply.md +584 -0
  438. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-combine-close.md +161 -0
  439. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-junit.md +42 -0
  440. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-packet-writes.md +221 -0
  441. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-pr.md +278 -0
  442. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-prepare.md +178 -0
  443. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-ship.md +450 -0
  444. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-slots-apply.md +78 -0
  445. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/head-validate.md +461 -0
  446. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/mini-leakwatch-sample.md +153 -0
  447. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/note.md +131 -0
  448. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/plugin-gallery.md +62 -0
  449. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/queue-add.md +438 -0
  450. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/queue-checkpoint.md +190 -0
  451. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/queue-drop.md +438 -0
  452. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/queue-hold.md +47 -0
  453. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/queue-main-proof.md +89 -0
  454. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/queue-main-rerun.md +241 -0
  455. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-admit-apply.md +350 -0
  456. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-admit-frozen.patch +133 -0
  457. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-assets.md +136 -0
  458. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-cut.md +240 -0
  459. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-drop.md +295 -0
  460. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-originals.sha256 +17 -0
  461. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-pr.md +221 -0
  462. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-rehearse-start.md +362 -0
  463. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-repair-receipt.md +127 -0
  464. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/reviews/release-resume.md +364 -0
  465. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/state.py +113 -0
  466. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/toolmap.py +98 -0
  467. steuermaschine-0.0.1/plugins/heinzel/src/steuermaschine_heinzel/traps.py +17 -0
  468. steuermaschine-0.0.1/plugins/heinzel/tests/admission_mutants.py +75 -0
  469. steuermaschine-0.0.1/plugins/heinzel/tests/admission_parity.py +199 -0
  470. steuermaschine-0.0.1/plugins/heinzel/tests/admission_paths.py +7 -0
  471. steuermaschine-0.0.1/plugins/heinzel/tests/admission_verbatim.py +156 -0
  472. steuermaschine-0.0.1/plugins/heinzel/tests/alarm_cases.py +74 -0
  473. steuermaschine-0.0.1/plugins/heinzel/tests/ci_ops_kit.py +110 -0
  474. steuermaschine-0.0.1/plugins/heinzel/tests/ci_verbatim.py +175 -0
  475. steuermaschine-0.0.1/plugins/heinzel/tests/conftest.py +67 -0
  476. steuermaschine-0.0.1/plugins/heinzel/tests/coord_kit.py +58 -0
  477. steuermaschine-0.0.1/plugins/heinzel/tests/coord_verbatim.py +104 -0
  478. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/INDEX.json +42 -0
  479. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/batch1/apply.out +1 -0
  480. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/batch1/prepare.out +1 -0
  481. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/batch1/receipt.json +1 -0
  482. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/batch2/apply.out +0 -0
  483. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/batch2/prepare.out +1 -0
  484. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/consumer-pin__m-38676849/REVIEW.md +83 -0
  485. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/consumer-pin__m-38676849/apply.out +1 -0
  486. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/consumer-pin__m-38676849/packet.json +149 -0
  487. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/consumer-pin__m-38676849/prepare.out +1 -0
  488. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/consumer-pin__m-38676849/receipt.json +1 -0
  489. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-daemon-race__predict__bound-f19a3782232c/REVIEW.md +134 -0
  490. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-daemon-race__predict__bound-f19a3782232c/apply.out +0 -0
  491. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-daemon-race__predict__bound-f19a3782232c/packet.json +95 -0
  492. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-daemon-race__predict__bound-f19a3782232c/prepare.out +1 -0
  493. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details-2__m-437bb247/REVIEW.md +157 -0
  494. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details-2__m-437bb247/apply.out +1 -0
  495. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details-2__m-437bb247/packet.json +113 -0
  496. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details-2__m-437bb247/prepare.out +1 -0
  497. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details-2__m-437bb247/receipt.json +1 -0
  498. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details__m-437bb247/REVIEW.md +137 -0
  499. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details__m-437bb247/apply.out +1 -0
  500. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details__m-437bb247/packet.json +113 -0
  501. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details__m-437bb247/prepare.out +1 -0
  502. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/e2e-details__m-437bb247/receipt.json +1 -0
  503. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-all__m-8c21af0e/REVIEW.md +77 -0
  504. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-all__m-8c21af0e/apply.out +1 -0
  505. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-all__m-8c21af0e/packet.json +115 -0
  506. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-all__m-8c21af0e/prepare.out +1 -0
  507. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-all__m-8c21af0e/receipt.json +1 -0
  508. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-1__m-4bef51c3/REVIEW.md +232 -0
  509. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-1__m-4bef51c3/apply.out +1 -0
  510. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-1__m-4bef51c3/packet.json +275 -0
  511. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-1__m-4bef51c3/prepare.out +1 -0
  512. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-1__m-4bef51c3/receipt.json +1 -0
  513. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-2__m-e60922e5/REVIEW.md +195 -0
  514. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-2__m-e60922e5/apply.out +1 -0
  515. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-2__m-e60922e5/packet.json +163 -0
  516. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-2__m-e60922e5/prepare.out +1 -0
  517. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-2__m-e60922e5/receipt.json +1 -0
  518. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-3__m-38676849/REVIEW.md +155 -0
  519. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-3__m-38676849/apply.out +1 -0
  520. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-3__m-38676849/packet.json +167 -0
  521. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-3__m-38676849/prepare.out +1 -0
  522. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/admission/recorded/web-wave-3__m-38676849/receipt.json +1 -0
  523. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/alarm/rules.json +280 -0
  524. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/pr-585-rollup.json +214 -0
  525. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/pr-784-rollup.json +344 -0
  526. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/run-42398276348-old-cause.txt +1 -0
  527. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/run-42398276348-old-faillog.txt +30 -0
  528. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/run-42398276348.json +261 -0
  529. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/run-42398276348.log +39 -0
  530. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/run-43186264208-old-cause.txt +1 -0
  531. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/run-43186264208-old-faillog.txt +27 -0
  532. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/run-43186264208.json +261 -0
  533. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/ci/run-43186264208.log +34 -0
  534. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/go/go-apply-running.json +3142 -0
  535. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/go/go-matrix.json +6242 -0
  536. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/REVIEW.md +125 -0
  537. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/REVIEW.md +134 -0
  538. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/browser.main-collected.xml +2 -0
  539. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/manifest.err +36 -0
  540. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/manifest.final.err +36 -0
  541. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/packet.json +95 -0
  542. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/python.main-collected.xml +2 -0
  543. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/sel.json +9 -0
  544. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/verify.err +36 -0
  545. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/bound-f19a3782232c/wave.json +26 -0
  546. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/browser.case-diff.txt +0 -0
  547. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/browser.main-collected.xml +2 -0
  548. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/browser.pr-collected.xml +2 -0
  549. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/collect.err +8 -0
  550. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/collected.txt +2 -0
  551. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/manifest.err +36 -0
  552. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/manifest.final.err +36 -0
  553. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/packet.json +95 -0
  554. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/python.case-diff.txt +0 -0
  555. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/python.main-collected.xml +2 -0
  556. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/python.pr-collected.xml +2 -0
  557. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/sel.json +9 -0
  558. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/verify.err +36 -0
  559. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-daemon-race/predict/wave.json +36 -0
  560. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/REVIEW.md +137 -0
  561. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/browser.case-diff.txt +0 -0
  562. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/browser.main-collected.xml +2 -0
  563. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/browser.pr-collected.xml +2 -0
  564. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/collect.err +8 -0
  565. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/collected.txt +2 -0
  566. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/manifest.err +29 -0
  567. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/manifest.final.err +29 -0
  568. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/packet.json +113 -0
  569. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/python.case-diff.txt +0 -0
  570. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/python.main-collected.xml +2 -0
  571. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/python.pr-collected.xml +2 -0
  572. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/sel.json +18 -0
  573. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/verify.err +29 -0
  574. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details/m-437bb247/wave.json +23 -0
  575. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/REVIEW.md +157 -0
  576. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/browser.case-diff.txt +0 -0
  577. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/browser.main-collected.xml +2 -0
  578. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/browser.pr-collected.xml +2 -0
  579. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/collect.err +8 -0
  580. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/collected.txt +2 -0
  581. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/manifest.err +29 -0
  582. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/manifest.final.err +29 -0
  583. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/packet.json +113 -0
  584. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/python.case-diff.txt +0 -0
  585. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/python.main-collected.xml +2 -0
  586. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/python.pr-collected.xml +2 -0
  587. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/sel.json +18 -0
  588. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/verify.err +29 -0
  589. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/packet/recorded/e2e-details-2/m-437bb247/wave.json +23 -0
  590. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/queue/state-2026-11-12.json +719 -0
  591. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/flow/v0.9.40.json +1 -0
  592. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/packet/RELEASE-REVIEW.md +109 -0
  593. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/packet/commit-generated.log +38 -0
  594. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/packet/pair-packet.json +111 -0
  595. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/packet/release-reservation-packet.json +90 -0
  596. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/receipt-0.9.40-pretag.json +1 -0
  597. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/tails/v0.9.38.json +1 -0
  598. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/tails/v0.9.39.json +1 -0
  599. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/train/train.json +8 -0
  600. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/train/v0.9.35.json +23 -0
  601. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/train/v0.9.36.json +21 -0
  602. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/transcripts/absorb-accepted-refused.json +36 -0
  603. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/transcripts/absorb.json +59 -0
  604. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/transcripts/drop-close-pr.json +197 -0
  605. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/transcripts/drop-published-refused.json +57 -0
  606. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/transcripts/drop.json +114 -0
  607. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/release/transcripts/resume-main-red.json +106 -0
  608. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/status/status-20261112.json +2315 -0
  609. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/tick/watch-ignore.toml +5 -0
  610. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/why/pr-690-old.txt +10 -0
  611. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/why/pr-797-check-runs.jsonl +3 -0
  612. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/why/pr-797-old.txt +10 -0
  613. steuermaschine-0.0.1/plugins/heinzel/tests/fixtures/why/pr-797-view.json +1 -0
  614. steuermaschine-0.0.1/plugins/heinzel/tests/guards_runtime.py +27 -0
  615. steuermaschine-0.0.1/plugins/heinzel/tests/lock_entry.py +41 -0
  616. steuermaschine-0.0.1/plugins/heinzel/tests/moved/conftest.py +57 -0
  617. steuermaschine-0.0.1/plugins/heinzel/tests/moved/fixtures/acceptance-snapshot.yml +166 -0
  618. steuermaschine-0.0.1/plugins/heinzel/tests/moved/fixtures/candidate-reused-carriers.json +656 -0
  619. steuermaschine-0.0.1/plugins/heinzel/tests/moved/fixtures/pypi-legacy.yml +163 -0
  620. steuermaschine-0.0.1/plugins/heinzel/tests/moved/fixtures/rejection-compose.yml +111 -0
  621. steuermaschine-0.0.1/plugins/heinzel/tests/moved/moved_support.py +29 -0
  622. steuermaschine-0.0.1/plugins/heinzel/tests/moved/ruff.toml +5 -0
  623. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_combine_notes.py +38 -0
  624. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_fix_forward.py +251 -0
  625. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_guard_and_neighbours.py +390 -0
  626. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_main_batch.py +359 -0
  627. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_main_cancelled_timeout.py +181 -0
  628. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_main_plan.py +179 -0
  629. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_main_rerun.py +532 -0
  630. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_merge_train.py +503 -0
  631. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_recheck.py +90 -0
  632. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_wake.py +215 -0
  633. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_queue_watch_queue.py +1315 -0
  634. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_acceptance_identity.py +331 -0
  635. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_acceptance_marker.py +48 -0
  636. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_acceptance_rerun_replacement.py +202 -0
  637. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_ask_verify_brief.py +394 -0
  638. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_assets.py +57 -0
  639. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_candidate_capacity.py +540 -0
  640. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_candidate_policy.py +259 -0
  641. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_chores.py +23 -0
  642. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_compose_held.py +78 -0
  643. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_drop_candidate.py +460 -0
  644. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_handoff.py +260 -0
  645. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_notes_audit.py +27 -0
  646. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_pause.py +458 -0
  647. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_pr_acceptance_advisory.py +106 -0
  648. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_pr_gate.py +401 -0
  649. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_producer.py +209 -0
  650. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_promote.py +135 -0
  651. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_rejection.py +616 -0
  652. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_snapshot.py +469 -0
  653. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_status_summary.py +39 -0
  654. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_release_tag_on_main.py +393 -0
  655. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_ship_push_gate.py +93 -0
  656. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_train_main_gate.py +217 -0
  657. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_train_next_start.py +75 -0
  658. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_train_pipelined.py +507 -0
  659. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_train_plan.py +41 -0
  660. steuermaschine-0.0.1/plugins/heinzel/tests/moved/test_native_train_self_test.py +17 -0
  661. steuermaschine-0.0.1/plugins/heinzel/tests/packet_parity.py +287 -0
  662. steuermaschine-0.0.1/plugins/heinzel/tests/packet_paths.py +15 -0
  663. steuermaschine-0.0.1/plugins/heinzel/tests/packet_verbatim.py +105 -0
  664. steuermaschine-0.0.1/plugins/heinzel/tests/record_alarm_fixtures.py +19 -0
  665. steuermaschine-0.0.1/plugins/heinzel/tests/record_ci_fixtures.py +75 -0
  666. steuermaschine-0.0.1/plugins/heinzel/tests/record_go_fixtures.py +84 -0
  667. steuermaschine-0.0.1/plugins/heinzel/tests/record_release_transcripts.py +173 -0
  668. steuermaschine-0.0.1/plugins/heinzel/tests/record_status_fixtures.py +90 -0
  669. steuermaschine-0.0.1/plugins/heinzel/tests/rehearse_plugins_kit.py +151 -0
  670. steuermaschine-0.0.1/plugins/heinzel/tests/sm_runtime_kit.py +17 -0
  671. steuermaschine-0.0.1/plugins/heinzel/tests/test_heinzel_plugin.py +77 -0
  672. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_apply_needs_verdict.py +137 -0
  673. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_apply_refuses_batch.py +82 -0
  674. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_batch.py +236 -0
  675. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_batch_ops.py +220 -0
  676. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_cov_a_focused_admit.py +421 -0
  677. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_cov_a_focused_admit_run.py +467 -0
  678. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_ghost_runs.py +111 -0
  679. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_hold.py +225 -0
  680. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_nonconsumers_setting.py +101 -0
  681. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_ops.py +510 -0
  682. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_pr_update.py +126 -0
  683. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_receipt_guard.py +211 -0
  684. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_recorded.py +52 -0
  685. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_repair.py +434 -0
  686. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_resulting.py +351 -0
  687. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_slots.py +830 -0
  688. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_stuck_queued.py +204 -0
  689. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_admission_wait.py +92 -0
  690. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_alarm.py +210 -0
  691. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_alarm_cov_a_watch.py +184 -0
  692. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_alarm_edges.py +27 -0
  693. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_classify.py +94 -0
  694. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_classify_jev.py +203 -0
  695. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_evidence.py +136 -0
  696. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_flakes.py +185 -0
  697. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_ops_defer.py +421 -0
  698. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_ops_quarantine.py +291 -0
  699. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_ops_rerun.py +241 -0
  700. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_ops_sonar.py +344 -0
  701. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_read.py +324 -0
  702. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ci_triage.py +350 -0
  703. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_combine.py +140 -0
  704. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_combine_cov_b_plan.py +188 -0
  705. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_command_references.py +86 -0
  706. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_asks.py +221 -0
  707. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_briefs.py +237 -0
  708. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_docs.py +169 -0
  709. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_handoff.py +227 -0
  710. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_journal.py +243 -0
  711. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_merges.py +85 -0
  712. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_select.py +153 -0
  713. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_select_core.py +100 -0
  714. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_skills.py +117 -0
  715. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_sweep.py +154 -0
  716. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_tasks.py +270 -0
  717. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_velocity.py +71 -0
  718. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_coord_velocity_moved.py +347 -0
  719. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_digest_locality.py +70 -0
  720. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_dispatch.py +639 -0
  721. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_dispatch_cov_a_focused.py +256 -0
  722. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_dispatch_focused.py +782 -0
  723. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_go.py +475 -0
  724. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_go_cov_b_probes.py +363 -0
  725. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_go_cov_b_views.py +237 -0
  726. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_go_legacy_files.py +38 -0
  727. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_go_live_next.py +70 -0
  728. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_go_prepare_arguments.py +60 -0
  729. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_go_views.py +250 -0
  730. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_go_workload_stale.py +84 -0
  731. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_guards_floor.py +233 -0
  732. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_guards_floor_cov_rules.py +119 -0
  733. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_guards_governor.py +283 -0
  734. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_guards_hooks.py +149 -0
  735. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_guards_lim.py +74 -0
  736. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_guards_loadguard.py +224 -0
  737. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_guards_smprocs.py +258 -0
  738. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_guards_uv.py +127 -0
  739. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_head_junit.py +113 -0
  740. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_leakwatch.py +139 -0
  741. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_leakwatch_moved.py +289 -0
  742. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_lock.py +193 -0
  743. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_lock_edges.py +41 -0
  744. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_lock_refuse_matrix.py +66 -0
  745. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_merge_ledger.py +363 -0
  746. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_merge_tier_rules.py +148 -0
  747. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_merge_tier_validate.py +44 -0
  748. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_mini.py +179 -0
  749. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_mini_loops.py +117 -0
  750. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_old_name_literals.py +45 -0
  751. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet.py +221 -0
  752. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_cases.py +187 -0
  753. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_dirs.py +166 -0
  754. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_floor.py +109 -0
  755. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_g3_candidate_plan.py +35 -0
  756. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_manifest.py +380 -0
  757. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_manifest_merge_tier.py +231 -0
  758. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_parity.py +25 -0
  759. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_size.py +122 -0
  760. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_trusted_base.py +86 -0
  761. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_packet_wave.py +466 -0
  762. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_plugin_gallery.py +312 -0
  763. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_preflight.py +348 -0
  764. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_preflight_head.py +549 -0
  765. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_preflight_meta.py +33 -0
  766. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_preflight_parity.py +236 -0
  767. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_preflight_texts.py +107 -0
  768. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_commands.py +522 -0
  769. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_a_checkpoint.py +311 -0
  770. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_a_checkpoint_chain.py +361 -0
  771. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_a_checkpoint_reader.py +267 -0
  772. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_a_main_batch.py +264 -0
  773. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_a_merge_gate.py +256 -0
  774. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_a_merge_train.py +230 -0
  775. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_a_stall.py +245 -0
  776. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_b_daemon.py +209 -0
  777. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_cov_b_hzlib.py +444 -0
  778. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_edge.py +232 -0
  779. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_flakes_read.py +51 -0
  780. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_hold.py +98 -0
  781. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_main_commands.py +105 -0
  782. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_pin_bounds.py +136 -0
  783. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_repaired_main.py +142 -0
  784. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_queue_state_safety.py +100 -0
  785. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_rehearse.py +610 -0
  786. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_rehearse_lib.py +426 -0
  787. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_rejudge.py +259 -0
  788. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_admit.py +570 -0
  789. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_admit_cov_a_slots.py +320 -0
  790. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_admit_cov_refusals.py +86 -0
  791. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_admit_ops.py +257 -0
  792. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_admit_stuck.py +168 -0
  793. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_candidate_empty_steps.py +83 -0
  794. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_compose_refresh.py +124 -0
  795. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_cov_b_candidate.py +354 -0
  796. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_cov_b_capacity.py +616 -0
  797. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_cov_b_rejection.py +377 -0
  798. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_has_tag.py +39 -0
  799. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_plugin_pypi.py +62 -0
  800. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_plugin_receipt.py +84 -0
  801. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_plugin_runid.py +206 -0
  802. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_pr_open.py +170 -0
  803. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_reads.py +355 -0
  804. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_run_binding.py +113 -0
  805. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_window.py +92 -0
  806. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_release_writes.py +339 -0
  807. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_ship_commands.py +592 -0
  808. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_slots_collect.py +336 -0
  809. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_status.py +213 -0
  810. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_tick_deadline.py +352 -0
  811. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_tick_timing.py +413 -0
  812. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_tick_timing_commands.py +134 -0
  813. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_tick_watch.py +253 -0
  814. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_train_commands.py +510 -0
  815. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_train_cov_b_state.py +543 -0
  816. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_train_digest_known.py +87 -0
  817. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_updater_hold.py +63 -0
  818. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_why.py +94 -0
  819. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_why_gate_notes.py +24 -0
  820. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_window_detached.py +141 -0
  821. steuermaschine-0.0.1/plugins/heinzel/tests/test_native_window_waiters.py +161 -0
  822. steuermaschine-0.0.1/plugins/heinzel/tests/test_pipeline_admit_cut.py +656 -0
  823. steuermaschine-0.0.1/plugins/heinzel/tests/test_pipeline_cov_head_admit.py +306 -0
  824. steuermaschine-0.0.1/plugins/heinzel/tests/test_pipeline_cov_release_cut.py +273 -0
  825. steuermaschine-0.0.1/plugins/heinzel/tests/test_pipeline_head_admit_merge_tier.py +104 -0
  826. steuermaschine-0.0.1/plugins/heinzel/tests/test_pipeline_head_admit_rejected_packet.py +152 -0
  827. steuermaschine-0.0.1/plugins/heinzel/tests/test_release_packet_recut.py +233 -0
  828. steuermaschine-0.0.1/plugins/heinzel/tests/tick_support.py +49 -0
  829. steuermaschine-0.0.1/plugins/heinzel/tests/views_verbatim.py +95 -0
  830. steuermaschine-0.0.1/pyproject.toml +149 -0
  831. steuermaschine-0.0.1/scripts/check_confidentiality.py +227 -0
  832. steuermaschine-0.0.1/sonar-project.properties +6 -0
  833. steuermaschine-0.0.1/src/steuermaschine/__init__.py +14 -0
  834. steuermaschine-0.0.1/src/steuermaschine/app.py +842 -0
  835. steuermaschine-0.0.1/src/steuermaschine/commands/__init__.py +17 -0
  836. steuermaschine-0.0.1/src/steuermaschine/commands/doc.py +91 -0
  837. steuermaschine-0.0.1/src/steuermaschine/commands/gate.py +131 -0
  838. steuermaschine-0.0.1/src/steuermaschine/commands/lim.py +106 -0
  839. steuermaschine-0.0.1/src/steuermaschine/commands/window.py +38 -0
  840. steuermaschine-0.0.1/src/steuermaschine/config.py +273 -0
  841. steuermaschine-0.0.1/src/steuermaschine/defaults.py +221 -0
  842. steuermaschine-0.0.1/src/steuermaschine/digest.py +67 -0
  843. steuermaschine-0.0.1/src/steuermaschine/dispatch.py +116 -0
  844. steuermaschine-0.0.1/src/steuermaschine/docsection.py +78 -0
  845. steuermaschine-0.0.1/src/steuermaschine/engine.py +434 -0
  846. steuermaschine-0.0.1/src/steuermaschine/github/__init__.py +18 -0
  847. steuermaschine-0.0.1/src/steuermaschine/github/base.py +42 -0
  848. steuermaschine-0.0.1/src/steuermaschine/github/cli.py +217 -0
  849. steuermaschine-0.0.1/src/steuermaschine/github/client.py +118 -0
  850. steuermaschine-0.0.1/src/steuermaschine/github/forge.py +474 -0
  851. steuermaschine-0.0.1/src/steuermaschine/github/logs.py +81 -0
  852. steuermaschine-0.0.1/src/steuermaschine/github/models.py +410 -0
  853. steuermaschine-0.0.1/src/steuermaschine/github/settings.py +22 -0
  854. steuermaschine-0.0.1/src/steuermaschine/github/sonar.py +105 -0
  855. steuermaschine-0.0.1/src/steuermaschine/github/testing.py +55 -0
  856. steuermaschine-0.0.1/src/steuermaschine/go.py +104 -0
  857. steuermaschine-0.0.1/src/steuermaschine/guardhook.py +144 -0
  858. steuermaschine-0.0.1/src/steuermaschine/hashing.py +16 -0
  859. steuermaschine-0.0.1/src/steuermaschine/helpdoc.py +118 -0
  860. steuermaschine-0.0.1/src/steuermaschine/hookspecs.py +187 -0
  861. steuermaschine-0.0.1/src/steuermaschine/journal.py +106 -0
  862. steuermaschine-0.0.1/src/steuermaschine/lint.py +134 -0
  863. steuermaschine-0.0.1/src/steuermaschine/models.py +279 -0
  864. steuermaschine-0.0.1/src/steuermaschine/native.py +576 -0
  865. steuermaschine-0.0.1/src/steuermaschine/plugins.py +327 -0
  866. steuermaschine-0.0.1/src/steuermaschine/preflight.py +187 -0
  867. steuermaschine-0.0.1/src/steuermaschine/protocols.py +231 -0
  868. steuermaschine-0.0.1/src/steuermaschine/reviewgraph.py +117 -0
  869. steuermaschine-0.0.1/src/steuermaschine/reviews/ci-cancel.md +141 -0
  870. steuermaschine-0.0.1/src/steuermaschine/reviews/core-local-writers.md +162 -0
  871. steuermaschine-0.0.1/src/steuermaschine/reviews/gate-run.md +75 -0
  872. steuermaschine-0.0.1/src/steuermaschine/reviews/lim.md +51 -0
  873. steuermaschine-0.0.1/src/steuermaschine/reviews/usage-log.md +31 -0
  874. steuermaschine-0.0.1/src/steuermaschine/runlock.py +655 -0
  875. steuermaschine-0.0.1/src/steuermaschine/skillgen.py +165 -0
  876. steuermaschine-0.0.1/src/steuermaschine/smprocs.py +137 -0
  877. steuermaschine-0.0.1/src/steuermaschine/statemove.py +164 -0
  878. steuermaschine-0.0.1/src/steuermaschine/statsreport.py +179 -0
  879. steuermaschine-0.0.1/src/steuermaschine/testing/__init__.py +40 -0
  880. steuermaschine-0.0.1/src/steuermaschine/testing/conformance.py +94 -0
  881. steuermaschine-0.0.1/src/steuermaschine/testing/fakes.py +324 -0
  882. steuermaschine-0.0.1/src/steuermaschine/toolmap.py +51 -0
  883. steuermaschine-0.0.1/src/steuermaschine/usagelog.py +113 -0
  884. steuermaschine-0.0.1/src/steuermaschine/verdicts.py +53 -0
  885. steuermaschine-0.0.1/src/steuermaschine/window.py +363 -0
  886. steuermaschine-0.0.1/tests/gate_known.json +43 -0
  887. steuermaschine-0.0.1/tests/projects/heinzel/steuermaschine.toml +3 -0
  888. steuermaschine-0.0.1/tests/projects/layered/steuermaschine.toml +3 -0
  889. steuermaschine-0.0.1/tests/test_core_cli.py +433 -0
  890. steuermaschine-0.0.1/tests/test_core_commands.py +239 -0
  891. steuermaschine-0.0.1/tests/test_core_dispatch.py +224 -0
  892. steuermaschine-0.0.1/tests/test_core_engine.py +214 -0
  893. steuermaschine-0.0.1/tests/test_core_gate_units.py +241 -0
  894. steuermaschine-0.0.1/tests/test_core_github_cli.py +285 -0
  895. steuermaschine-0.0.1/tests/test_core_github_client.py +99 -0
  896. steuermaschine-0.0.1/tests/test_core_github_forge.py +302 -0
  897. steuermaschine-0.0.1/tests/test_core_github_live.py +79 -0
  898. steuermaschine-0.0.1/tests/test_core_github_logs.py +37 -0
  899. steuermaschine-0.0.1/tests/test_core_github_sonar.py +118 -0
  900. steuermaschine-0.0.1/tests/test_core_guardhook.py +111 -0
  901. steuermaschine-0.0.1/tests/test_core_help_order.py +34 -0
  902. steuermaschine-0.0.1/tests/test_core_json_contract.py +168 -0
  903. steuermaschine-0.0.1/tests/test_core_launcher.py +62 -0
  904. steuermaschine-0.0.1/tests/test_core_layers.py +158 -0
  905. steuermaschine-0.0.1/tests/test_core_live_path.py +105 -0
  906. steuermaschine-0.0.1/tests/test_core_migrate.py +58 -0
  907. steuermaschine-0.0.1/tests/test_core_names.py +103 -0
  908. steuermaschine-0.0.1/tests/test_core_native.py +409 -0
  909. steuermaschine-0.0.1/tests/test_core_preflight.py +136 -0
  910. steuermaschine-0.0.1/tests/test_core_reviewgraph.py +93 -0
  911. steuermaschine-0.0.1/tests/test_core_runlock.py +284 -0
  912. steuermaschine-0.0.1/tests/test_core_settings.py +204 -0
  913. steuermaschine-0.0.1/tests/test_core_smprocs.py +27 -0
  914. steuermaschine-0.0.1/tests/test_core_statemove.py +207 -0
  915. steuermaschine-0.0.1/tests/test_core_usagelog.py +154 -0
  916. steuermaschine-0.0.1/tests/test_core_verdicts.py +44 -0
  917. steuermaschine-0.0.1/tests/test_core_window.py +208 -0
  918. steuermaschine-0.0.1/tests/test_debt_ratchet.py +70 -0
  919. steuermaschine-0.0.1/tests/test_gate_structure.py +69 -0
  920. steuermaschine-0.0.1/tests/test_promote_e2e.py +134 -0
  921. steuermaschine-0.0.1/tests/test_promote_review_gate.py +64 -0
  922. steuermaschine-0.0.1/tests/test_promote_script.py +174 -0
  923. steuermaschine-0.0.1/tests/vulture_whitelist.py +13 -0
  924. steuermaschine-0.0.1/uv.lock +1345 -0
@@ -0,0 +1,20 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ commit-message:
8
+ prefix: ci
9
+ groups:
10
+ actions:
11
+ patterns: ["*"]
12
+ - package-ecosystem: uv
13
+ directory: /
14
+ schedule:
15
+ interval: weekly
16
+ commit-message:
17
+ prefix: build
18
+ groups:
19
+ python:
20
+ patterns: ["*"]
@@ -0,0 +1,93 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ pull_request:
5
+ permissions:
6
+ contents: read
7
+ jobs:
8
+ check:
9
+ runs-on: ubuntu-latest
10
+ timeout-minutes: 30
11
+ steps:
12
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
13
+ with:
14
+ fetch-depth: 0 # gitleaks scans the full history; cz checks the pushed commits
15
+ - uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
16
+ with:
17
+ version: "0.13.5"
18
+ python-version: "3.12"
19
+ enable-cache: true
20
+ - name: Install gitleaks
21
+ run: |
22
+ curl -sSfL -o gitleaks.tgz https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz
23
+ echo "551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb gitleaks.tgz" | sha256sum -c -
24
+ tar -xzf gitleaks.tgz -C /usr/local/bin gitleaks && rm gitleaks.tgz
25
+ - run: make install
26
+ - name: Private-term deny-list (tree and commit messages)
27
+ # The list lives in the repository secret PRIVATE_TERMS, never in the repository. On main a missing secret
28
+ # fails closed; on a pull request from a fork (no secrets) it is skipped with a notice.
29
+ env:
30
+ CONFIDENTIAL_TERMS: ${{ secrets.PRIVATE_TERMS }}
31
+ BEFORE: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
32
+ run: |
33
+ if [ -z "$CONFIDENTIAL_TERMS" ]; then
34
+ if [ "$GITHUB_REF" = refs/heads/main ]; then echo "::error::PRIVATE_TERMS secret missing"; exit 1; fi
35
+ echo "::notice::PRIVATE_TERMS not available; term guard skipped"; exit 0
36
+ fi
37
+ uv run --script scripts/check_confidentiality.py --require
38
+ case "$BEFORE" in ""|0000000000000000000000000000000000000000) BEFORE=$(git merge-base origin/main HEAD) ;; esac
39
+ if [ "$GITHUB_REF" = refs/heads/main ]; then range=HEAD; else range="$BEFORE..HEAD"; fi
40
+ uv run --script scripts/check_confidentiality.py --require --messages "$range"
41
+ - name: Conventional Commits (the commits this push or PR adds)
42
+ env:
43
+ BEFORE: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
44
+ run: |
45
+ case "$BEFORE" in ""|0000000000000000000000000000000000000000) BEFORE=$(git merge-base origin/main HEAD) ;; esac
46
+ if [ -n "$(git rev-list "$BEFORE..HEAD")" ]; then uv run cz check --rev-range "$BEFORE..HEAD"; fi
47
+ - run: make check
48
+ - run: make audit
49
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
50
+ if: always()
51
+ with:
52
+ name: coverage
53
+ path: coverage.xml
54
+ if-no-files-found: ignore
55
+ - name: Coverage summary
56
+ run: |
57
+ pct=$(python3 -c "import xml.etree.ElementTree as E; r=E.parse('coverage.xml').getroot().get; print(int(100*(int(r('lines-covered'))+int(r('branches-covered')))/(int(r('lines-valid'))+int(r('branches-valid')))))")
58
+ echo "### Coverage: $pct% (line + branch)" >> "$GITHUB_STEP_SUMMARY"
59
+ - name: SonarQube Cloud token present?
60
+ id: sonar
61
+ run: echo "token=${{ secrets.SONAR_TOKEN != '' }}" >> "$GITHUB_OUTPUT"
62
+ - name: SonarQube Cloud
63
+ if: steps.sonar.outputs.token == 'true'
64
+ uses: SonarSource/sonarqube-scan-action@e805d875275f728fac1885b413934be6d7c63f65 # v8.4.1
65
+ env:
66
+ SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
67
+ - name: SonarQube Cloud skipped
68
+ if: steps.sonar.outputs.token != 'true'
69
+ run: echo "::notice::SonarQube Cloud skipped - the SONAR_TOKEN secret is not set"
70
+
71
+ badge:
72
+ # The coverage badge: an SVG on the orphan branch `badges`, shown by the README as a repository file (works for a
73
+ # private repository, no external account).
74
+ needs: check
75
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
76
+ runs-on: ubuntu-latest
77
+ permissions:
78
+ contents: write
79
+ steps:
80
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
81
+ with:
82
+ name: coverage
83
+ - name: Write badges/coverage.svg
84
+ env:
85
+ GH_TOKEN: ${{ github.token }}
86
+ run: |
87
+ pct=$(python3 -c "import xml.etree.ElementTree as E; r=E.parse('coverage.xml').getroot().get; print(int(100*(int(r('lines-covered'))+int(r('branches-covered')))/(int(r('lines-valid'))+int(r('branches-valid')))))")
88
+ color=$([ "$pct" -ge 90 ] && echo brightgreen || { [ "$pct" -ge 75 ] && echo yellow || echo red; })
89
+ curl -sSfL -o coverage.svg "https://img.shields.io/badge/coverage-${pct}%25-${color}"
90
+ git init -q badges && mv coverage.svg badges/ && cd badges
91
+ git config user.name "github-actions[bot]" && git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
92
+ git checkout -q -b badges && git add coverage.svg && git commit -q -m "ci: coverage ${pct}%"
93
+ git push -qf "https://x-access-token:${GH_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" badges
@@ -0,0 +1,22 @@
1
+ name: CodeQL
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ pull_request:
6
+ schedule:
7
+ - cron: "17 4 * * 1"
8
+ permissions:
9
+ contents: read
10
+ jobs:
11
+ analyze:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ security-events: write
15
+ contents: read
16
+ actions: read
17
+ steps:
18
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
19
+ - uses: github/codeql-action/init@52cf1852265d99e9bea071b03366fc777a602909 # codeql-bundle-v2.27.4
20
+ with:
21
+ languages: python, actions
22
+ - uses: github/codeql-action/analyze@52cf1852265d99e9bea071b03366fc777a602909 # codeql-bundle-v2.27.4
@@ -0,0 +1,62 @@
1
+ name: Release
2
+ on:
3
+ push:
4
+ tags: ["v*"]
5
+ permissions:
6
+ contents: read
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
12
+ with:
13
+ fetch-depth: 0
14
+ - uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
15
+ with:
16
+ version: "0.13.5"
17
+ python-version: "3.12"
18
+ - name: Install gitleaks
19
+ run: |
20
+ curl -sSfL -o gitleaks.tgz https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz
21
+ echo "551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb gitleaks.tgz" | sha256sum -c -
22
+ tar -xzf gitleaks.tgz -C /usr/local/bin gitleaks && rm gitleaks.tgz
23
+ - name: The tag matches the package version
24
+ run: |
25
+ version=$(uv version --short --package steuermaschine)
26
+ [ "${GITHUB_REF_NAME}" = "v${version}" ] || { echo "::error::tag ${GITHUB_REF_NAME} != package version v${version}"; exit 1; }
27
+ - run: make install
28
+ - run: make check
29
+ - run: make build
30
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
31
+ with:
32
+ name: dist
33
+ path: dist/
34
+
35
+ pypi:
36
+ needs: build
37
+ runs-on: ubuntu-latest
38
+ environment: pypi
39
+ permissions:
40
+ id-token: write
41
+ steps:
42
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
43
+ with:
44
+ name: dist
45
+ path: dist/
46
+ - uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
47
+
48
+ github-release:
49
+ needs: pypi
50
+ runs-on: ubuntu-latest
51
+ permissions:
52
+ contents: write
53
+ steps:
54
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
55
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
56
+ with:
57
+ name: dist
58
+ path: dist/
59
+ - name: GitHub release with the built files
60
+ env:
61
+ GH_TOKEN: ${{ github.token }}
62
+ run: gh release create "$GITHUB_REF_NAME" dist/* --title "$GITHUB_REF_NAME" --notes "See [CHANGELOG.md](CHANGELOG.md)." --verify-tag
@@ -0,0 +1,7 @@
1
+ *.egg-info/
2
+ .coverage
3
+ .pytest_cache/
4
+ .venv/
5
+ __pycache__/
6
+ coverage.xml
7
+ dist/
@@ -0,0 +1,7 @@
1
+ # gitleaks defaults, plus recorded test fixtures whose "tokens" are digests and commit SHAs, not credentials.
2
+ [extend]
3
+ useDefault = true
4
+
5
+ [[allowlists]]
6
+ description = "recorded release freeze tokens (digests), branch->commit SHA maps, and a removed test's literal error text"
7
+ paths = ['''^plugins/heinzel/tests/fixtures/(release|go)/''', '''^plugins/heinzel/tests/test_native_rehearse\.py$''']
@@ -0,0 +1,31 @@
1
+ # Opt in: uvx pre-commit install --hook-type commit-msg --hook-type pre-commit
2
+ repos:
3
+ - repo: local
4
+ hooks:
5
+ - id: commitizen
6
+ name: Conventional Commits (cz check)
7
+ entry: uv run cz check --allow-abort --commit-msg-file
8
+ language: system
9
+ stages: [commit-msg]
10
+ - id: ruff
11
+ name: ruff check
12
+ entry: uv run ruff check src examples tests
13
+ language: system
14
+ pass_filenames: false
15
+ types: [python]
16
+ - id: gitleaks
17
+ name: gitleaks (staged changes)
18
+ entry: gitleaks git --staged --redact --no-banner --pre-commit
19
+ language: system
20
+ pass_filenames: false
21
+ stages: [pre-commit]
22
+ - id: confidentiality
23
+ name: private-term deny-list (files)
24
+ entry: uv run --script scripts/check_confidentiality.py
25
+ language: system
26
+ stages: [pre-commit]
27
+ - id: confidentiality-message
28
+ name: private-term deny-list (commit message)
29
+ entry: uv run --script scripts/check_confidentiality.py --identity --commit-msg
30
+ language: system
31
+ stages: [commit-msg]
@@ -0,0 +1,113 @@
1
+ # Agent instructions for this repository
2
+
3
+ You work on `steuermaschine` (`sm`), a Typer CLI that steers changes from commit to live release. Read
4
+ `docs/INTEGRATION.md` before your first change; it wins over your branch at merge. Binding goal:
5
+ `docs/DEFINITION-OF-DONE.md`. Where a rule here blocks you, say so in your hand-over note; do not work around it.
6
+
7
+ ## Layout
8
+
9
+ ```
10
+ src/steuermaschine/ core: generic, names no project, person, company or private path
11
+ plugins/heinzel/ the large plugin: src/steuermaschine_heinzel/{plugin.py,toolmap.py,traps.py,native/,reviews/,parity/}, tests/
12
+ examples/toy, layer/ small plugins; the toy is the quick start, the layer proves plugin stacking
13
+ tests/ core tests (tests/test_core_<module>.py), tests/projects, tests/gate_known.json
14
+ docs/ DESIGN, INTEGRATION (the contract), DEFINITION-OF-DONE, GAPS, NATIVE-PORT
15
+ bin/ check, promote, rollback, merge-slice, sm-dev, debt.py, gate_known.py
16
+ ```
17
+
18
+ Native commands live in `native/<area>.py` (plus `native/<area>_lib/`), tests in
19
+ `plugins/heinzel/tests/test_native_<area>*.py` with unique basenames repo-wide.
20
+
21
+ ## Hard rules (condensed from docs/INTEGRATION.md)
22
+
23
+ - **Review units and digests.** A write command (`writes=True`) is off until `reviews/<path>.md` ends with
24
+ `VERDICT: APPROVE` for the exact digest of its unit (module plus its `*_lib`). `sm self reviews` shows unit,
25
+ digest, state. Never write the `REVIEWED:` or `VERDICT:` lines yourself.
26
+ The digest also covers every first-party file the unit imports, transitively (core and other `_lib` packages):
27
+ a change to core voids the verdicts of the units that import it. Every writer is under the gate: core's own
28
+ writers (`review verdict`, `focus add|done`, `alarm ack`, `ci cancel`), engine pipelines (`Pipeline(unit=...)`)
29
+ and every native command whose Changes line names a write (`sm self lint` flags a `writes=` that disagrees). The
30
+ only exception is `exempt="reason"`, honoured only for a path on the core's allowlist `native.EXEMPT_PATHS`
31
+ (`gate run`, the run lock every review's tests run through); any other `exempt=` is still gated.
32
+ - **Reach the registry by name.** No module below `native/` or `pipelines/` imports `plugin.py` or `native/__init__.py`,
33
+ and a pipeline imports no command module: one such import puts the whole plugin into the unit's digest (23 commands had
34
+ 202 to 225 files that way). Use `pipelines.common.command(path)` or `runtime().commands()`.
35
+ `plugins/heinzel/tests/test_native_digest_locality.py` fails on a wider digest; `steuermaschine.reviewgraph` shows what
36
+ a digest reaches and which verdicts a change voids.
37
+ - **Pipelines compose, they do not reimplement.** `sm head admit` and `sm release cut` (plugin `pipelines/`) call
38
+ native commands through `native.call`, which applies that command's own gate; tests replace a step through
39
+ `pipelines.common.OVERRIDE`, never the gate.
40
+ - **Never edit an approved unit without a new review.** Any change voids the verdict. A conflict in one goes back to
41
+ its owner.
42
+ - **No wrappers.** No command starts an old script, and no `tools_dir` setting exists. A command exists only when it
43
+ is native; what is not ported shows as MISSING in `sm tools gaps`. Do not bring deleted files back.
44
+ - **No real-path setting defaults.** No default may point at a real file or directory of a machine (no `~/...`, no
45
+ absolute path); a per-machine value defaults to `None` and the command that needs it refuses and names the key.
46
+ Every setting has a `description`; secrets are `SecretStr`.
47
+ - **Tests are sandboxed.** The root `conftest.py` runs tests with HOME, XDG and state dirs in a temp directory and no
48
+ `SM_*`/`HZ_*`/`STEUERMASCHINE_*` variables. No network, no real `gh`, no sleep: use `fake_providers()`,
49
+ `FakeCommands`, `invoke(...)`. A test that writes a real file of the machine fails.
50
+ - **Narrow interfaces.** Processes only through `providers.commands`, GitHub through `providers.forge`/`.ci` or
51
+ `steuermaschine.github.Gh`, time through `providers.clock`, state through `providers.store`, digests through
52
+ `steuermaschine.hashing.canonical_sha256`. No `subprocess`, `time.sleep`, `os.environ` or `fcntl` in native code.
53
+ - **Never `git stash`.** The stash list is shared by all worktrees of the repository. Commit a WIP instead.
54
+ - **One worktree per slice.** `git worktree add ../steuermaschine-wt-<slice> -b <branch> origin/main`; do not work in
55
+ the main checkout, which belongs to the integrator.
56
+ - **Heavy runs go through the gate:** `sm gate run -- <command>` (full test suite, type checks, builds, pushes).
57
+ Focused tests may run directly.
58
+ - **The core is clean and stays so:** ruff, mypy strict, pyright, 90% line+branch coverage, no dead code (vulture);
59
+ `bin/check` gates all of it. The plugin's typing, ruff and environment-read debt may only fall: `docs/debt.json`
60
+ is the ratchet (`uv run python bin/debt.py --record` in the commit that improves a number).
61
+ - **Moved code stays verbatim.** Moved libraries and their moved tests keep their text so the diff against the
62
+ original is the review instrument; they get per-file ruff and mypy exceptions in `pyproject.toml`, and a verifier
63
+ (for example `plugins/heinzel/tests/packet_verbatim.py`) prints every changed line. Moved libraries expose functions only, no
64
+ `if __name__ == "__main__"`.
65
+ - **Help and output.** Help in contract form via `H(...)`, every argument and option with its own `help=`;
66
+ `sm self lint` (strict) and `tests/test_core_help_order.py` must stay clean. Every command is `@native` and
67
+ returns a typed `Model` (core commands: `emit(..., Model)`); text through `render()`, JSON from the model
68
+ (`tests/test_core_json_contract.py` runs every command in json and parses it with its model). Errors
69
+ are `Refuse`/`Wait`, never `sys.exit`.
70
+ - **Settings.** Typed only: a plugin field with a `description`, or `config.Environment` for a process variable.
71
+ Only `config.py` reads `os.environ` in the core; native modules read none (`tests/test_core_settings.py`).
72
+ - **Privacy.** Never print, log or commit a configuration value that may be private (URLs, repository names, tokens,
73
+ paths). No old tool names (`hz-...`) in native output, help or state paths.
74
+
75
+ ## Run the tests and the gate
76
+
77
+ ```sh
78
+ uv sync
79
+ uv run pytest plugins/heinzel/tests/test_native_<area>.py # focused
80
+ sm gate run -- uv run pytest # everything
81
+ bin/check --fast # tests, help lint per project, typos, ruff, mypy strict and pyright (core), vulture
82
+ bin/check # the same plus coverage >= 90 (core, plugin) and the plugin's debt ratchet (docs/debt.json)
83
+ ```
84
+
85
+ ## How a change reaches the live `sm`
86
+
87
+ 1. Build on a branch in your own worktree, small commits, tests green, rebased on `origin/main`.
88
+ 2. Hand over (branch, commit range, test count, files outside your area, settings added, what you could not verify;
89
+ see INTEGRATION.md section 7). The integrator merges with `bin/merge-slice BRANCH`, which refuses on red.
90
+ 3. Promotion: `bin/check`, then `bin/promote --check`, then `bin/promote`. It builds the committed HEAD into the
91
+ stable install and switches atomically; the coordinator decides when, never during a running admission or release.
92
+ It refuses while a gated write command is not approved at its digest: a change that moves a digest is not live
93
+ until that unit's new verdict is merged (`sm self reviews`).
94
+ 4. `bin/rollback` switches back to the previous release (run it again to go forward).
95
+
96
+ ## Commits
97
+
98
+ Small, one area or command per commit; subject at most 72 characters. End every commit message with the trailer of
99
+ the model that wrote it, for example:
100
+
101
+ ```
102
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
103
+ ```
104
+
105
+ ## Never
106
+
107
+ - Push to `main`, or merge into it, without the integrator.
108
+ - Edit the stable install (`~/Code/steuermaschine-stable` or whatever `SM_STABLE` names); it changes only through
109
+ `bin/promote` and `bin/rollback`.
110
+ - Print configuration values, or put a private value in help, a test or a commit.
111
+ - Edit an approved review unit, a `reviews/` verdict, or `tests/gate_known.json` by hand.
112
+ - Run an old script, or add a wrapper around one.
113
+ - Change repository settings, or open or merge a PR unless asked.
@@ -0,0 +1,7 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file. The format follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), versions follow [Semantic Versioning](https://semver.org).
5
+ Entries are generated from [Conventional Commits](https://www.conventionalcommits.org) by
6
+ [commitizen](https://commitizen-tools.github.io/commitizen/) (`make release`); edit wording by hand before tagging if needed.
7
+
@@ -0,0 +1 @@
1
+ Read and follow AGENTS.md in this directory.
@@ -0,0 +1,46 @@
1
+ # The single entry point for CI and release: standard tools only (uv, ruff, mypy, pyright, pytest, gitleaks, commitizen).
2
+ .PHONY: install lint format typecheck test secrets audit build check release clean
3
+
4
+ # The core with mypy's default rules; the codes below fail on today's code (debt: drop one when its findings are fixed).
5
+ # The repository's [tool.mypy] (strict) stays the debt measure of bin/debt.py, so the gate ignores it.
6
+ MYPY_DEBT := arg-type assignment attr-defined empty-body index operator union-attr var-annotated annotation-unchecked
7
+
8
+ install:
9
+ uv sync --all-packages --locked
10
+
11
+ # ruff format is not in the gate yet: most files predate it, and a mass reformat would collide with open branches.
12
+ lint:
13
+ uv run ruff check src examples tests
14
+
15
+ format: # apply ruff format (not yet enforced; see lint)
16
+ uv run ruff format src examples tests
17
+
18
+ typecheck:
19
+ uv run mypy --config-file= --python-version 3.12 $(MYPY_DEBT:%=--disable-error-code %) src/steuermaschine
20
+ uv run pyright
21
+
22
+ # Coverage floor of the gate (line+branch, core+heinzel plugin, as CI measures it today); [tool.coverage] fail_under
23
+ # = 90 stays the target that bin/check reports as debt.
24
+ COV_FLOOR := 82
25
+
26
+ # Typer forces colored help when GITHUB_ACTIONS, FORCE_COLOR or PY_COLORS is set; the help tests read plain text.
27
+ test:
28
+ env -u GITHUB_ACTIONS -u FORCE_COLOR -u PY_COLORS uv run pytest --cov --cov-report=term --cov-report=xml --cov-fail-under=$(COV_FLOOR)
29
+
30
+ secrets:
31
+ gitleaks git --redact --no-banner .
32
+ gitleaks dir --redact --no-banner .
33
+
34
+ audit:
35
+ uv audit --locked --preview-features audit-command
36
+
37
+ build:
38
+ rm -rf dist && uv build --package steuermaschine --out-dir dist
39
+
40
+ check: lint typecheck test secrets
41
+
42
+ release: # bump from Conventional Commits, write CHANGELOG.md, commit, tag v*; then: git push --follow-tags
43
+ uv run cz bump --yes
44
+
45
+ clean:
46
+ rm -rf dist .coverage coverage.xml .pytest_cache .mypy_cache .ruff_cache
@@ -0,0 +1,135 @@
1
+ Metadata-Version: 2.5
2
+ Name: steuermaschine
3
+ Version: 0.0.1
4
+ Summary: The artificial helmsman: a coordinator CLI that steers work from a change to a live release, for AI agents and a human owner.
5
+ Requires-Python: >=3.12
6
+ Requires-Dist: pluggy>=1.5
7
+ Requires-Dist: pydantic-settings>=2.6
8
+ Requires-Dist: pydantic>=2.7
9
+ Requires-Dist: typer>=0.15
10
+ Description-Content-Type: text/markdown
11
+
12
+ # steuermaschine
13
+
14
+ [![CI](https://github.com/helmut-hoffer-von-ankershoffen/steuermaschine/actions/workflows/ci.yml/badge.svg)](https://github.com/helmut-hoffer-von-ankershoffen/steuermaschine/actions/workflows/ci.yml)
15
+ [![Coverage](https://github.com/helmut-hoffer-von-ankershoffen/steuermaschine/raw/badges/coverage.svg)](https://github.com/helmut-hoffer-von-ankershoffen/steuermaschine/actions/workflows/ci.yml)
16
+ [![CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/steuermaschine/actions/workflows/codeql.yml/badge.svg)](https://github.com/helmut-hoffer-von-ankershoffen/steuermaschine/actions/workflows/codeql.yml)
17
+ [![PyPI](https://img.shields.io/pypi/v/steuermaschine)](https://pypi.org/project/steuermaschine/)
18
+ [![Python](https://img.shields.io/badge/python-3.12%2B-blue)](pyproject.toml)
19
+ <!-- SonarQube Cloud: the project is private, so its badges need a project badge token. Owner: SonarQube Cloud >
20
+ project > Information > Badges, copy the token, and replace BADGE_TOKEN below (all three). -->
21
+ [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_steuermaschine&metric=alert_status&token=BADGE_TOKEN)](https://sonarcloud.io/summary/overall?id=helmut-hoffer-von-ankershoffen_steuermaschine)
22
+ [![Security](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_steuermaschine&metric=security_rating&token=BADGE_TOKEN)](https://sonarcloud.io/summary/overall?id=helmut-hoffer-von-ankershoffen_steuermaschine)
23
+ [![Reliability](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_steuermaschine&metric=reliability_rating&token=BADGE_TOKEN)](https://sonarcloud.io/summary/overall?id=helmut-hoffer-von-ankershoffen_steuermaschine)
24
+
25
+ `sm` is a reusable coordinator that steers a change from commit to live release for projects in which AI agents do
26
+ the work. It keeps resumable state per head (a commit on a work branch) and per release, always knows the one next
27
+ command, and stops at review points where only the owner or an independent reviewer may continue. The core knows no
28
+ project; pipelines, providers, gates and traps come from plugins (core plus plugins, wired with pluggy).
29
+
30
+ The name: not a Steuermann or Steuerfrau, a human helmsman, but the artificial one: a Maschine that steers. The
31
+ owner sets the destination and decides at the review stops.
32
+
33
+ ## Status
34
+
35
+ Pre-release and private. Version 0.0.1. Every command is native; no command starts an old script
36
+ (`sm tools gaps --wrapped` prints 0, `sm tools gaps` the rows not ported yet). The binding goal for the first
37
+ release is [docs/DEFINITION-OF-DONE.md](docs/DEFINITION-OF-DONE.md). The plugin API (`steuermaschine.API_VERSION`)
38
+ may still change.
39
+
40
+ ## Install
41
+
42
+ From a clone, for now (PyPI later, project name `steuermaschine`):
43
+
44
+ ```sh
45
+ git clone <repository-url> steuermaschine && cd steuermaschine
46
+ uv tool install . # puts `sm` and `steuermaschine` on your PATH
47
+ ```
48
+
49
+ For development use `uv sync` and `bin/sm-dev` instead (see Development).
50
+
51
+ ## Quick start (toy plugin, no account needed)
52
+
53
+ ```sh
54
+ uv sync && export PATH="$PWD/.venv/bin:$PATH"
55
+ mkdir /tmp/toy && cd /tmp/toy && git init -q -b main && git commit -q --allow-empty -m init
56
+ printf '[project]\nname = "toy-demo"\nplugin = "toy"\n' > steuermaschine.toml
57
+ git checkout -q -b feat/hello && echo hi > hello.txt && git add hello.txt && git commit -q -m hello
58
+ sm # PHASE idle
59
+ sm head ship . # dry run: stops before the first write outside this machine, prints what it would do
60
+ sm head ship . --live # pushes, opens the PR, then WAITING on CI
61
+ sm sim ci green . # play the outside world: CI turns green
62
+ sm head ship . --live # continues where it stopped: merge, tag, finished
63
+ ```
64
+
65
+ Run the `uv sync` line in the clone, the rest in the scratch directory. The toy's forge and CI are a simulation in
66
+ `.sim/world.json`; the engine, state, dry run, waiting and resuming are real. State lives under
67
+ `~/.local/state/steuermaschine/<project>` (`STEUERMASCHINE_HOME` moves it).
68
+
69
+ ## The `go` contract
70
+
71
+ Bare `sm` (same as `sm go`) is read-only and prints, in this order:
72
+
73
+ - `PHASE`: where the project stands.
74
+ - `NEXT`: the one command to type now.
75
+ - `TRAP`: the mistake that is most likely at exactly this step. Read it before you run NEXT.
76
+
77
+ `WAITING` appears when the run waits on the outside world (CI, a reviewer); run the same command again later.
78
+ Exit codes: 0 done or a planned stop, 1 refused, 2 usage, 3 alarm, 70 tool error or plugin not loaded, 75 waiting.
79
+ Every command has `--format json` with exactly one document and a published schema (`sm self schema`).
80
+
81
+ ## The review gate
82
+
83
+ - A command that writes outside this machine, or changes state other commands act on, is a write command.
84
+ - Write commands stay closed (exit 70, naming the review file) until an independent review approves them.
85
+ - The approval names the exact digest of the reviewed code unit: the module, its `*_lib` package and every
86
+ first-party file it imports, transitively. Any edit to one of them voids it, also an edit to the core.
87
+ - The reviewer is never the author: `sm review verdict DIGEST --approve --reviewer NAME` records it.
88
+ - `sm self reviews` lists every write command, its unit, its digest and its state.
89
+
90
+ - `bin/promote` refuses a build in which a gated write command is not approved: promoting it would switch that
91
+ command off.
92
+
93
+ Writes that a pipeline step makes also need `--live`; without it a run stops with a dry-run plan. A pipeline
94
+ (`sm head admit`, `sm release cut` in the Heinzelmännchen plugin) runs each step as a native command through that
95
+ command's own gate, and stops at its review points until a different agent approved the digest.
96
+
97
+ ## Writing a plugin
98
+
99
+ A plugin is an object (or module) with functions marked `@hookimpl`; the core calls the ones it implements:
100
+ `sm_api_version`, `sm_settings`, `sm_pipelines`, `sm_gates`, `sm_traps`, providers such as `sm_forge` and `sm_ci`,
101
+ `sm_native` (commands: `@native` functions that return a result model) and more. Every command follows the help
102
+ contract (`sm self lint`, strict) and prints one typed JSON document with `--format json`. Register it as an
103
+ entry point in group `steuermaschine.plugins` and name it in the project's
104
+ `steuermaschine.toml` (`plugin = "..."`, or `plugins = ["base", "outer"]`; later entries are outer layers).
105
+ `sm self hooks` lists the specifications, `sm self plugins` the loaded stack. Start from `examples/toy` (a complete
106
+ plugin in one file), `examples/layer` (a second plugin layered on the first), `src/steuermaschine/hookspecs.py` and
107
+ section 5 of [docs/DESIGN.md](docs/DESIGN.md). Test with `steuermaschine.testing` (`fake_providers`, `invoke`,
108
+ conformance kit).
109
+
110
+ ## Development
111
+
112
+ ```sh
113
+ uv sync # workspace: core, plugins/heinzel, examples/toy, examples/layer
114
+ uv run pytest # all tests, sandboxed (see docs/INTEGRATION.md section 8.5)
115
+ bin/sm-dev ... # run the development tree
116
+ bin/check # the quality gate: tests, coverage >= 90, help lint, typos, ruff, mypy strict,
117
+ # pyright, dead code, the plugin's debt ratchet (docs/debt.json); --fast skips coverage
118
+ bin/promote --check # everything a promote would test, without switching
119
+ bin/promote # build the committed HEAD into the stable install and switch to it
120
+ bin/rollback # switch the stable install back to the previous release (again: forward)
121
+ ```
122
+
123
+ A stable install differs from the development tree: `sm` on the PATH runs a commit built with `git archive` into
124
+ its own directory and virtual environment, non-editable, and nothing in it points at the checkout. Only
125
+ `bin/promote` changes it, so editing or breaking the tree never breaks the live tool.
126
+
127
+ ## Docs
128
+
129
+ - [docs/DESIGN.md](docs/DESIGN.md): purpose, pipelines as state machines, providers, plugins, help contract, output.
130
+ - [docs/INTEGRATION.md](docs/INTEGRATION.md): the contract for every change handed to the integrator.
131
+ - [docs/DEFINITION-OF-DONE.md](docs/DEFINITION-OF-DONE.md): the binding goal for the first release.
132
+ - [docs/NATIVE-PORT.md](docs/NATIVE-PORT.md) and [docs/GAPS.md](docs/GAPS.md): how the old tools were ported.
133
+ - [docs/RUNBOOK-release-cut.md](docs/RUNBOOK-release-cut.md): a release with `sm release cut`.
134
+ - [docs/SWITCH-queue-daemon.md](docs/SWITCH-queue-daemon.md): switching the live queue daemon.
135
+ - [AGENTS.md](AGENTS.md): instructions for coding agents working in this repository.