@hunter-harness/workflow-harness 0.2.42 → 0.2.44

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 (334) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/contracts/build-profile-v3.schema.json +156 -1
  3. package/harness/bundles/general/claude-code/contracts/fixtures/managed-execution.json +341 -0
  4. package/harness/bundles/general/claude-code/contracts/process-identity.schema.json +132 -0
  5. package/harness/bundles/general/claude-code/contracts/run-session.schema.json +142 -0
  6. package/harness/bundles/general/claude-code/contracts/service-retirement-receipt.schema.json +85 -0
  7. package/harness/bundles/general/claude-code/contracts/service-session.schema.json +147 -0
  8. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
  9. package/harness/bundles/general/claude-code/harness-archive/reference.md +1 -0
  10. package/harness/bundles/general/claude-code/harness-archive/templates/render-summary.mjs +8 -0
  11. package/harness/bundles/general/claude-code/harness-archive/templates/summary-data-template.json +28 -0
  12. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  13. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  14. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  15. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +1 -1
  16. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  17. package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
  18. package/harness/bundles/general/claude-code/harness-run/reference.md +6 -1
  19. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  20. package/harness/bundles/general/claude-code/harness-submit/checklist.md +12 -0
  21. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  22. package/harness/bundles/general/claude-code/harness-test/SKILL.md +8 -2
  23. package/harness/bundles/general/claude-code/protocols/execution-session-protocol.md +52 -0
  24. package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +24 -1
  25. package/harness/bundles/general/claude-code/protocols/verification-graph-protocol.md +6 -0
  26. package/harness/bundles/general/claude-code/scripts/harness_archive.py +271 -22
  27. package/harness/bundles/general/claude-code/scripts/harness_change.py +137 -2
  28. package/harness/bundles/general/claude-code/scripts/harness_efficiency.py +443 -0
  29. package/harness/bundles/general/claude-code/scripts/harness_environment.py +760 -46
  30. package/harness/bundles/general/claude-code/scripts/harness_execution_contracts.py +596 -0
  31. package/harness/bundles/general/claude-code/scripts/harness_fixback.py +742 -0
  32. package/harness/bundles/general/claude-code/scripts/harness_integration.py +289 -52
  33. package/harness/bundles/general/claude-code/scripts/harness_ledger.py +5 -0
  34. package/harness/bundles/general/claude-code/scripts/harness_orchestration.py +344 -0
  35. package/harness/bundles/general/claude-code/scripts/harness_process.py +1065 -0
  36. package/harness/bundles/general/claude-code/scripts/harness_profile.py +278 -4
  37. package/harness/bundles/general/claude-code/scripts/harness_runtime.py +1576 -3
  38. package/harness/bundles/general/claude-code/scripts/harness_service.py +1528 -177
  39. package/harness/bundles/general/claude-code/scripts/harness_test_runner.py +224 -146
  40. package/harness/bundles/general/claude-code/scripts/harness_verification.py +487 -8
  41. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  42. package/harness/bundles/general/codebuddy/contracts/build-profile-v3.schema.json +156 -1
  43. package/harness/bundles/general/codebuddy/contracts/fixtures/managed-execution.json +341 -0
  44. package/harness/bundles/general/codebuddy/contracts/process-identity.schema.json +132 -0
  45. package/harness/bundles/general/codebuddy/contracts/run-session.schema.json +142 -0
  46. package/harness/bundles/general/codebuddy/contracts/service-retirement-receipt.schema.json +85 -0
  47. package/harness/bundles/general/codebuddy/contracts/service-session.schema.json +147 -0
  48. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  49. package/harness/bundles/general/codebuddy/harness-archive/reference.md +1 -0
  50. package/harness/bundles/general/codebuddy/harness-archive/templates/render-summary.mjs +8 -0
  51. package/harness/bundles/general/codebuddy/harness-archive/templates/summary-data-template.json +28 -0
  52. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  53. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  54. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  55. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +1 -1
  56. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  57. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
  58. package/harness/bundles/general/codebuddy/harness-run/reference.md +6 -1
  59. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  60. package/harness/bundles/general/codebuddy/harness-submit/checklist.md +12 -0
  61. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  62. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +8 -2
  63. package/harness/bundles/general/codebuddy/protocols/execution-session-protocol.md +52 -0
  64. package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +24 -1
  65. package/harness/bundles/general/codebuddy/protocols/verification-graph-protocol.md +6 -0
  66. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +271 -22
  67. package/harness/bundles/general/codebuddy/scripts/harness_change.py +137 -2
  68. package/harness/bundles/general/codebuddy/scripts/harness_efficiency.py +443 -0
  69. package/harness/bundles/general/codebuddy/scripts/harness_environment.py +760 -46
  70. package/harness/bundles/general/codebuddy/scripts/harness_execution_contracts.py +596 -0
  71. package/harness/bundles/general/codebuddy/scripts/harness_fixback.py +742 -0
  72. package/harness/bundles/general/codebuddy/scripts/harness_integration.py +289 -52
  73. package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +5 -0
  74. package/harness/bundles/general/codebuddy/scripts/harness_orchestration.py +344 -0
  75. package/harness/bundles/general/codebuddy/scripts/harness_process.py +1065 -0
  76. package/harness/bundles/general/codebuddy/scripts/harness_profile.py +278 -4
  77. package/harness/bundles/general/codebuddy/scripts/harness_runtime.py +1576 -3
  78. package/harness/bundles/general/codebuddy/scripts/harness_service.py +1528 -177
  79. package/harness/bundles/general/codebuddy/scripts/harness_test_runner.py +224 -146
  80. package/harness/bundles/general/codebuddy/scripts/harness_verification.py +487 -8
  81. package/harness/bundles/general/codex/.harness-build.json +1 -1
  82. package/harness/bundles/general/codex/contracts/build-profile-v3.schema.json +156 -1
  83. package/harness/bundles/general/codex/contracts/fixtures/managed-execution.json +341 -0
  84. package/harness/bundles/general/codex/contracts/process-identity.schema.json +132 -0
  85. package/harness/bundles/general/codex/contracts/run-session.schema.json +142 -0
  86. package/harness/bundles/general/codex/contracts/service-retirement-receipt.schema.json +85 -0
  87. package/harness/bundles/general/codex/contracts/service-session.schema.json +147 -0
  88. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  89. package/harness/bundles/general/codex/harness-archive/reference.md +1 -0
  90. package/harness/bundles/general/codex/harness-archive/templates/render-summary.mjs +8 -0
  91. package/harness/bundles/general/codex/harness-archive/templates/summary-data-template.json +28 -0
  92. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  93. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  94. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  95. package/harness/bundles/general/codex/harness-plan/SKILL.md +1 -1
  96. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  97. package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
  98. package/harness/bundles/general/codex/harness-run/reference.md +6 -1
  99. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  100. package/harness/bundles/general/codex/harness-submit/checklist.md +12 -0
  101. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  102. package/harness/bundles/general/codex/harness-test/SKILL.md +8 -2
  103. package/harness/bundles/general/codex/protocols/execution-session-protocol.md +52 -0
  104. package/harness/bundles/general/codex/protocols/state-layout-protocol.md +24 -1
  105. package/harness/bundles/general/codex/protocols/verification-graph-protocol.md +6 -0
  106. package/harness/bundles/general/codex/scripts/harness_archive.py +271 -22
  107. package/harness/bundles/general/codex/scripts/harness_change.py +137 -2
  108. package/harness/bundles/general/codex/scripts/harness_efficiency.py +443 -0
  109. package/harness/bundles/general/codex/scripts/harness_environment.py +760 -46
  110. package/harness/bundles/general/codex/scripts/harness_execution_contracts.py +596 -0
  111. package/harness/bundles/general/codex/scripts/harness_fixback.py +742 -0
  112. package/harness/bundles/general/codex/scripts/harness_integration.py +289 -52
  113. package/harness/bundles/general/codex/scripts/harness_ledger.py +5 -0
  114. package/harness/bundles/general/codex/scripts/harness_orchestration.py +344 -0
  115. package/harness/bundles/general/codex/scripts/harness_process.py +1065 -0
  116. package/harness/bundles/general/codex/scripts/harness_profile.py +278 -4
  117. package/harness/bundles/general/codex/scripts/harness_runtime.py +1576 -3
  118. package/harness/bundles/general/codex/scripts/harness_service.py +1528 -177
  119. package/harness/bundles/general/codex/scripts/harness_test_runner.py +224 -146
  120. package/harness/bundles/general/codex/scripts/harness_verification.py +487 -8
  121. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  122. package/harness/bundles/general/cursor/contracts/build-profile-v3.schema.json +156 -1
  123. package/harness/bundles/general/cursor/contracts/fixtures/managed-execution.json +341 -0
  124. package/harness/bundles/general/cursor/contracts/process-identity.schema.json +132 -0
  125. package/harness/bundles/general/cursor/contracts/run-session.schema.json +142 -0
  126. package/harness/bundles/general/cursor/contracts/service-retirement-receipt.schema.json +85 -0
  127. package/harness/bundles/general/cursor/contracts/service-session.schema.json +147 -0
  128. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  129. package/harness/bundles/general/cursor/harness-archive/reference.md +1 -0
  130. package/harness/bundles/general/cursor/harness-archive/templates/render-summary.mjs +8 -0
  131. package/harness/bundles/general/cursor/harness-archive/templates/summary-data-template.json +28 -0
  132. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  133. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  134. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  135. package/harness/bundles/general/cursor/harness-plan/SKILL.md +1 -1
  136. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  137. package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
  138. package/harness/bundles/general/cursor/harness-run/reference.md +6 -1
  139. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  140. package/harness/bundles/general/cursor/harness-submit/checklist.md +12 -0
  141. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  142. package/harness/bundles/general/cursor/harness-test/SKILL.md +8 -2
  143. package/harness/bundles/general/cursor/protocols/execution-session-protocol.md +52 -0
  144. package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +24 -1
  145. package/harness/bundles/general/cursor/protocols/verification-graph-protocol.md +6 -0
  146. package/harness/bundles/general/cursor/scripts/harness_archive.py +271 -22
  147. package/harness/bundles/general/cursor/scripts/harness_change.py +137 -2
  148. package/harness/bundles/general/cursor/scripts/harness_efficiency.py +443 -0
  149. package/harness/bundles/general/cursor/scripts/harness_environment.py +760 -46
  150. package/harness/bundles/general/cursor/scripts/harness_execution_contracts.py +596 -0
  151. package/harness/bundles/general/cursor/scripts/harness_fixback.py +742 -0
  152. package/harness/bundles/general/cursor/scripts/harness_integration.py +289 -52
  153. package/harness/bundles/general/cursor/scripts/harness_ledger.py +5 -0
  154. package/harness/bundles/general/cursor/scripts/harness_orchestration.py +344 -0
  155. package/harness/bundles/general/cursor/scripts/harness_process.py +1065 -0
  156. package/harness/bundles/general/cursor/scripts/harness_profile.py +278 -4
  157. package/harness/bundles/general/cursor/scripts/harness_runtime.py +1576 -3
  158. package/harness/bundles/general/cursor/scripts/harness_service.py +1528 -177
  159. package/harness/bundles/general/cursor/scripts/harness_test_runner.py +224 -146
  160. package/harness/bundles/general/cursor/scripts/harness_verification.py +487 -8
  161. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  162. package/harness/bundles/java/claude-code/contracts/build-profile-v3.schema.json +156 -1
  163. package/harness/bundles/java/claude-code/contracts/fixtures/managed-execution.json +341 -0
  164. package/harness/bundles/java/claude-code/contracts/process-identity.schema.json +132 -0
  165. package/harness/bundles/java/claude-code/contracts/run-session.schema.json +142 -0
  166. package/harness/bundles/java/claude-code/contracts/service-retirement-receipt.schema.json +85 -0
  167. package/harness/bundles/java/claude-code/contracts/service-session.schema.json +147 -0
  168. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  169. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  170. package/harness/bundles/java/claude-code/harness-archive/reference.md +1 -0
  171. package/harness/bundles/java/claude-code/harness-archive/templates/render-summary.mjs +8 -0
  172. package/harness/bundles/java/claude-code/harness-archive/templates/summary-data-template.json +28 -0
  173. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  174. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  175. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  176. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  177. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
  178. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  179. package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
  180. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  181. package/harness/bundles/java/claude-code/harness-submit/checklist.md +12 -0
  182. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  183. package/harness/bundles/java/claude-code/harness-test/SKILL.md +8 -2
  184. package/harness/bundles/java/claude-code/protocols/execution-session-protocol.md +52 -0
  185. package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +24 -1
  186. package/harness/bundles/java/claude-code/protocols/verification-graph-protocol.md +6 -0
  187. package/harness/bundles/java/claude-code/scripts/harness_archive.py +271 -22
  188. package/harness/bundles/java/claude-code/scripts/harness_change.py +137 -2
  189. package/harness/bundles/java/claude-code/scripts/harness_efficiency.py +443 -0
  190. package/harness/bundles/java/claude-code/scripts/harness_environment.py +760 -46
  191. package/harness/bundles/java/claude-code/scripts/harness_execution_contracts.py +596 -0
  192. package/harness/bundles/java/claude-code/scripts/harness_fixback.py +742 -0
  193. package/harness/bundles/java/claude-code/scripts/harness_integration.py +289 -52
  194. package/harness/bundles/java/claude-code/scripts/harness_ledger.py +5 -0
  195. package/harness/bundles/java/claude-code/scripts/harness_orchestration.py +344 -0
  196. package/harness/bundles/java/claude-code/scripts/harness_process.py +1065 -0
  197. package/harness/bundles/java/claude-code/scripts/harness_profile.py +278 -4
  198. package/harness/bundles/java/claude-code/scripts/harness_runtime.py +1576 -3
  199. package/harness/bundles/java/claude-code/scripts/harness_service.py +1528 -177
  200. package/harness/bundles/java/claude-code/scripts/harness_test_runner.py +224 -146
  201. package/harness/bundles/java/claude-code/scripts/harness_verification.py +487 -8
  202. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  203. package/harness/bundles/java/codebuddy/contracts/build-profile-v3.schema.json +156 -1
  204. package/harness/bundles/java/codebuddy/contracts/fixtures/managed-execution.json +341 -0
  205. package/harness/bundles/java/codebuddy/contracts/process-identity.schema.json +132 -0
  206. package/harness/bundles/java/codebuddy/contracts/run-session.schema.json +142 -0
  207. package/harness/bundles/java/codebuddy/contracts/service-retirement-receipt.schema.json +85 -0
  208. package/harness/bundles/java/codebuddy/contracts/service-session.schema.json +147 -0
  209. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  210. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  211. package/harness/bundles/java/codebuddy/harness-archive/reference.md +1 -0
  212. package/harness/bundles/java/codebuddy/harness-archive/templates/render-summary.mjs +8 -0
  213. package/harness/bundles/java/codebuddy/harness-archive/templates/summary-data-template.json +28 -0
  214. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  215. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  216. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  217. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  218. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
  219. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  220. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
  221. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  222. package/harness/bundles/java/codebuddy/harness-submit/checklist.md +12 -0
  223. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  224. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +8 -2
  225. package/harness/bundles/java/codebuddy/protocols/execution-session-protocol.md +52 -0
  226. package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +24 -1
  227. package/harness/bundles/java/codebuddy/protocols/verification-graph-protocol.md +6 -0
  228. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +271 -22
  229. package/harness/bundles/java/codebuddy/scripts/harness_change.py +137 -2
  230. package/harness/bundles/java/codebuddy/scripts/harness_efficiency.py +443 -0
  231. package/harness/bundles/java/codebuddy/scripts/harness_environment.py +760 -46
  232. package/harness/bundles/java/codebuddy/scripts/harness_execution_contracts.py +596 -0
  233. package/harness/bundles/java/codebuddy/scripts/harness_fixback.py +742 -0
  234. package/harness/bundles/java/codebuddy/scripts/harness_integration.py +289 -52
  235. package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +5 -0
  236. package/harness/bundles/java/codebuddy/scripts/harness_orchestration.py +344 -0
  237. package/harness/bundles/java/codebuddy/scripts/harness_process.py +1065 -0
  238. package/harness/bundles/java/codebuddy/scripts/harness_profile.py +278 -4
  239. package/harness/bundles/java/codebuddy/scripts/harness_runtime.py +1576 -3
  240. package/harness/bundles/java/codebuddy/scripts/harness_service.py +1528 -177
  241. package/harness/bundles/java/codebuddy/scripts/harness_test_runner.py +224 -146
  242. package/harness/bundles/java/codebuddy/scripts/harness_verification.py +487 -8
  243. package/harness/bundles/java/codex/.harness-build.json +1 -1
  244. package/harness/bundles/java/codex/contracts/build-profile-v3.schema.json +156 -1
  245. package/harness/bundles/java/codex/contracts/fixtures/managed-execution.json +341 -0
  246. package/harness/bundles/java/codex/contracts/process-identity.schema.json +132 -0
  247. package/harness/bundles/java/codex/contracts/run-session.schema.json +142 -0
  248. package/harness/bundles/java/codex/contracts/service-retirement-receipt.schema.json +85 -0
  249. package/harness/bundles/java/codex/contracts/service-session.schema.json +147 -0
  250. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  251. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  252. package/harness/bundles/java/codex/harness-archive/reference.md +1 -0
  253. package/harness/bundles/java/codex/harness-archive/templates/render-summary.mjs +8 -0
  254. package/harness/bundles/java/codex/harness-archive/templates/summary-data-template.json +28 -0
  255. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  256. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  257. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  258. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  259. package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
  260. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  261. package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
  262. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  263. package/harness/bundles/java/codex/harness-submit/checklist.md +12 -0
  264. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  265. package/harness/bundles/java/codex/harness-test/SKILL.md +8 -2
  266. package/harness/bundles/java/codex/protocols/execution-session-protocol.md +52 -0
  267. package/harness/bundles/java/codex/protocols/state-layout-protocol.md +24 -1
  268. package/harness/bundles/java/codex/protocols/verification-graph-protocol.md +6 -0
  269. package/harness/bundles/java/codex/scripts/harness_archive.py +271 -22
  270. package/harness/bundles/java/codex/scripts/harness_change.py +137 -2
  271. package/harness/bundles/java/codex/scripts/harness_efficiency.py +443 -0
  272. package/harness/bundles/java/codex/scripts/harness_environment.py +760 -46
  273. package/harness/bundles/java/codex/scripts/harness_execution_contracts.py +596 -0
  274. package/harness/bundles/java/codex/scripts/harness_fixback.py +742 -0
  275. package/harness/bundles/java/codex/scripts/harness_integration.py +289 -52
  276. package/harness/bundles/java/codex/scripts/harness_ledger.py +5 -0
  277. package/harness/bundles/java/codex/scripts/harness_orchestration.py +344 -0
  278. package/harness/bundles/java/codex/scripts/harness_process.py +1065 -0
  279. package/harness/bundles/java/codex/scripts/harness_profile.py +278 -4
  280. package/harness/bundles/java/codex/scripts/harness_runtime.py +1576 -3
  281. package/harness/bundles/java/codex/scripts/harness_service.py +1528 -177
  282. package/harness/bundles/java/codex/scripts/harness_test_runner.py +224 -146
  283. package/harness/bundles/java/codex/scripts/harness_verification.py +487 -8
  284. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  285. package/harness/bundles/java/cursor/contracts/build-profile-v3.schema.json +156 -1
  286. package/harness/bundles/java/cursor/contracts/fixtures/managed-execution.json +341 -0
  287. package/harness/bundles/java/cursor/contracts/process-identity.schema.json +132 -0
  288. package/harness/bundles/java/cursor/contracts/run-session.schema.json +142 -0
  289. package/harness/bundles/java/cursor/contracts/service-retirement-receipt.schema.json +85 -0
  290. package/harness/bundles/java/cursor/contracts/service-session.schema.json +147 -0
  291. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  292. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  293. package/harness/bundles/java/cursor/harness-archive/reference.md +1 -0
  294. package/harness/bundles/java/cursor/harness-archive/templates/render-summary.mjs +8 -0
  295. package/harness/bundles/java/cursor/harness-archive/templates/summary-data-template.json +28 -0
  296. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  297. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  298. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  299. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  300. package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
  301. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  302. package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
  303. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  304. package/harness/bundles/java/cursor/harness-submit/checklist.md +12 -0
  305. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  306. package/harness/bundles/java/cursor/harness-test/SKILL.md +8 -2
  307. package/harness/bundles/java/cursor/protocols/execution-session-protocol.md +52 -0
  308. package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +24 -1
  309. package/harness/bundles/java/cursor/protocols/verification-graph-protocol.md +6 -0
  310. package/harness/bundles/java/cursor/scripts/harness_archive.py +271 -22
  311. package/harness/bundles/java/cursor/scripts/harness_change.py +137 -2
  312. package/harness/bundles/java/cursor/scripts/harness_efficiency.py +443 -0
  313. package/harness/bundles/java/cursor/scripts/harness_environment.py +760 -46
  314. package/harness/bundles/java/cursor/scripts/harness_execution_contracts.py +596 -0
  315. package/harness/bundles/java/cursor/scripts/harness_fixback.py +742 -0
  316. package/harness/bundles/java/cursor/scripts/harness_integration.py +289 -52
  317. package/harness/bundles/java/cursor/scripts/harness_ledger.py +5 -0
  318. package/harness/bundles/java/cursor/scripts/harness_orchestration.py +344 -0
  319. package/harness/bundles/java/cursor/scripts/harness_process.py +1065 -0
  320. package/harness/bundles/java/cursor/scripts/harness_profile.py +278 -4
  321. package/harness/bundles/java/cursor/scripts/harness_runtime.py +1576 -3
  322. package/harness/bundles/java/cursor/scripts/harness_service.py +1528 -177
  323. package/harness/bundles/java/cursor/scripts/harness_test_runner.py +224 -146
  324. package/harness/bundles/java/cursor/scripts/harness_verification.py +487 -8
  325. package/harness/manifests/general/claude-code.json +76 -31
  326. package/harness/manifests/general/codebuddy.json +76 -31
  327. package/harness/manifests/general/codex.json +76 -31
  328. package/harness/manifests/general/cursor.json +76 -31
  329. package/harness/manifests/java/claude-code.json +77 -32
  330. package/harness/manifests/java/codebuddy.json +77 -32
  331. package/harness/manifests/java/codex.json +77 -32
  332. package/harness/manifests/java/cursor.json +77 -32
  333. package/hunter-workflow-family.json +6 -4
  334. package/package.json +1 -1
@@ -27,7 +27,7 @@ import sys
27
27
  import time
28
28
  import uuid
29
29
  from pathlib import Path
30
- from typing import Any
30
+ from typing import Any, Callable, Mapping
31
31
 
32
32
  SCRIPTS_DIR = Path(__file__).resolve().parent
33
33
  if str(SCRIPTS_DIR) not in sys.path:
@@ -586,12 +586,14 @@ def _claim_lease_locked(
586
586
  run_id: str,
587
587
  ttl_seconds: int,
588
588
  steal: bool = False,
589
+ expected_generation: int | None = None,
589
590
  ) -> dict[str, Any]:
590
591
  path = _lease_path(project_root, change_id)
591
592
  path.parent.mkdir(parents=True, exist_ok=True)
592
593
  now = dt.datetime.now().astimezone()
593
594
  expires = now + dt.timedelta(seconds=max(1, ttl_seconds))
594
595
  new_lease = {
596
+ "leaseId": str(uuid.uuid4()),
595
597
  "changeId": change_id,
596
598
  "phase": phase,
597
599
  "runId": run_id,
@@ -599,6 +601,7 @@ def _claim_lease_locked(
599
601
  "acquiredAt": now.isoformat(timespec="milliseconds"),
600
602
  "expiresAt": expires.isoformat(timespec="milliseconds"),
601
603
  "ttlSeconds": ttl_seconds,
604
+ "generation": 1,
602
605
  }
603
606
  if path.is_file():
604
607
  try:
@@ -606,6 +609,12 @@ def _claim_lease_locked(
606
609
  except (OSError, json.JSONDecodeError):
607
610
  existing = None
608
611
  if isinstance(existing, dict) and not _lease_expired(existing):
612
+ if expected_generation is not None and existing.get("generation") != expected_generation:
613
+ return {
614
+ "ok": False,
615
+ "code": "LEASE_GENERATION_CONFLICT",
616
+ "holder": existing,
617
+ }
609
618
  same_owner = str(existing.get("runId")) == run_id
610
619
  if same_owner:
611
620
  existing.update(
@@ -614,6 +623,7 @@ def _claim_lease_locked(
614
623
  "pid": os.getpid(),
615
624
  "expiresAt": expires.isoformat(timespec="milliseconds"),
616
625
  "refreshedAt": now.isoformat(timespec="milliseconds"),
626
+ "generation": int(existing.get("generation") or 1) + 1,
617
627
  }
618
628
  )
619
629
  _write_json(path, existing)
@@ -637,6 +647,7 @@ def claim_lease(
637
647
  run_id: str,
638
648
  ttl_seconds: int,
639
649
  steal: bool = False,
650
+ expected_generation: int | None = None,
640
651
  ) -> dict[str, Any]:
641
652
  path = _lease_path(project_root, change_id)
642
653
  with _exclusive_file_lock(path.with_suffix(".lock")):
@@ -647,6 +658,7 @@ def claim_lease(
647
658
  run_id=run_id,
648
659
  ttl_seconds=ttl_seconds,
649
660
  steal=steal,
661
+ expected_generation=expected_generation,
650
662
  )
651
663
 
652
664
 
@@ -656,6 +668,8 @@ def _release_lease_locked(
656
668
  change_id: str,
657
669
  phase: str,
658
670
  run_id: str,
671
+ lease_id: str | None = None,
672
+ generation: int | None = None,
659
673
  ) -> dict[str, Any]:
660
674
  path = _lease_path(project_root, change_id)
661
675
  if not path.is_file():
@@ -688,6 +702,18 @@ def _release_lease_locked(
688
702
  "message": f"lease phase is {existing.get('phase')}, not {phase}",
689
703
  "holder": existing,
690
704
  }
705
+ if lease_id is not None and str(existing.get("leaseId")) != lease_id:
706
+ return {
707
+ "ok": False,
708
+ "code": "LEASE_ID_MISMATCH",
709
+ "holder": existing,
710
+ }
711
+ if generation is not None and existing.get("generation") != generation:
712
+ return {
713
+ "ok": False,
714
+ "code": "LEASE_GENERATION_CONFLICT",
715
+ "holder": existing,
716
+ }
691
717
  path.unlink(missing_ok=True)
692
718
  return {"ok": True, "code": "LEASE_RELEASED", "changeId": change_id, "phase": phase}
693
719
 
@@ -698,11 +724,18 @@ def release_lease(
698
724
  change_id: str,
699
725
  phase: str,
700
726
  run_id: str,
727
+ lease_id: str | None = None,
728
+ generation: int | None = None,
701
729
  ) -> dict[str, Any]:
702
730
  path = _lease_path(project_root, change_id)
703
731
  with _exclusive_file_lock(path.with_suffix(".lock")):
704
732
  return _release_lease_locked(
705
- project_root, change_id=change_id, phase=phase, run_id=run_id
733
+ project_root,
734
+ change_id=change_id,
735
+ phase=phase,
736
+ run_id=run_id,
737
+ lease_id=lease_id,
738
+ generation=generation,
706
739
  )
707
740
 
708
741
 
@@ -712,6 +745,8 @@ def lease_port(
712
745
  change_id: str,
713
746
  run_id: str,
714
747
  port_range: tuple[int, int],
748
+ generation: int = 1,
749
+ listener_identity: Mapping[str, Any] | None = None,
715
750
  ) -> dict[str, Any]:
716
751
  start, end = port_range
717
752
  if start > end:
@@ -749,6 +784,7 @@ def lease_port(
749
784
  "leaseId": lease_id,
750
785
  "changeId": change_id,
751
786
  "runId": run_id,
787
+ "generation": generation,
752
788
  "pid": os.getpid(),
753
789
  "port": port,
754
790
  "acquiredAt": now_iso(),
@@ -756,6 +792,9 @@ def lease_port(
756
792
  dt.datetime.now().astimezone() + dt.timedelta(hours=4)
757
793
  ).isoformat(timespec="milliseconds"),
758
794
  }
795
+ if isinstance(listener_identity, Mapping):
796
+ entry["listenerIdentity"] = dict(listener_identity)
797
+ entry["listenerProofRequired"] = True
759
798
  leases.append(entry)
760
799
  registry["leases"] = leases
761
800
  _write_json(registry_path, registry)
@@ -774,6 +813,9 @@ def release_port(
774
813
  run_id: str,
775
814
  port: int | None = None,
776
815
  lease_id: str | None = None,
816
+ generation: int | None = None,
817
+ listener_identity: Mapping[str, Any] | None = None,
818
+ listener_observer: Callable[[int], Mapping[str, Any] | None] | None = None,
777
819
  ) -> dict[str, Any]:
778
820
  """Release port leases by subset (retro §5.16).
779
821
 
@@ -802,6 +844,12 @@ def release_port(
802
844
  ]
803
845
  # Validate that the lease belongs to this change
804
846
  for item in to_release:
847
+ if generation is not None and item.get("generation") != generation:
848
+ return {
849
+ "ok": False,
850
+ "code": "PORT_LEASE_GENERATION_CONFLICT",
851
+ "holder": item,
852
+ }
805
853
  if str(item.get("changeId")) != change_id:
806
854
  return {
807
855
  "ok": False,
@@ -818,6 +866,12 @@ def release_port(
818
866
  ]
819
867
  # Validate runId matches
820
868
  for item in to_release:
869
+ if generation is not None and item.get("generation") != generation:
870
+ return {
871
+ "ok": False,
872
+ "code": "PORT_LEASE_GENERATION_CONFLICT",
873
+ "holder": item,
874
+ }
821
875
  if str(item.get("runId")) != run_id:
822
876
  return {
823
877
  "ok": False,
@@ -840,6 +894,47 @@ def release_port(
840
894
  and str(item.get("changeId")) == change_id
841
895
  and str(item.get("runId")) == run_id
842
896
  ]
897
+ if generation is not None:
898
+ mismatched = [
899
+ item for item in to_release if item.get("generation") != generation
900
+ ]
901
+ if mismatched:
902
+ return {
903
+ "ok": False,
904
+ "code": "PORT_LEASE_GENERATION_CONFLICT",
905
+ "holder": mismatched[0],
906
+ }
907
+
908
+ for item in to_release:
909
+ expected_listener = item.get("listenerIdentity")
910
+ if not isinstance(expected_listener, Mapping):
911
+ continue
912
+ observed_listener = (
913
+ listener_observer(int(item["port"]))
914
+ if listener_observer is not None and isinstance(item.get("port"), int)
915
+ else listener_identity
916
+ )
917
+ if not isinstance(observed_listener, Mapping):
918
+ return {
919
+ "ok": False,
920
+ "code": "LISTENER_IDENTITY_UNVERIFIABLE",
921
+ "message": "listener identity could not be independently observed",
922
+ "holder": item,
923
+ }
924
+ try:
925
+ from harness_process import verify_process_identity
926
+
927
+ decision = verify_process_identity(expected_listener, observed_listener)
928
+ except (ImportError, TypeError, ValueError):
929
+ decision = {"ok": False, "reasonCode": "IDENTITY_UNVERIFIABLE"}
930
+ if decision.get("ok") is not True:
931
+ return {
932
+ "ok": False,
933
+ "code": "LISTENER_IDENTITY_UNVERIFIABLE",
934
+ "message": "listener identity did not match the leased service",
935
+ "details": decision,
936
+ "holder": item,
937
+ }
843
938
 
844
939
  if not to_release:
845
940
  # Check if there are other leases under this changeId (different runId)
@@ -1011,6 +1106,7 @@ def cmd_claim(args: argparse.Namespace) -> int:
1011
1106
  run_id=args.run_id,
1012
1107
  ttl_seconds=int(args.ttl_seconds),
1013
1108
  steal=bool(args.steal),
1109
+ expected_generation=getattr(args, "expected_generation", None),
1014
1110
  )
1015
1111
  if payload.get("ok"):
1016
1112
  emit(payload, as_json=bool(args.json))
@@ -1030,6 +1126,8 @@ def cmd_release(args: argparse.Namespace) -> int:
1030
1126
  change_id=args.change,
1031
1127
  phase=args.phase,
1032
1128
  run_id=args.run_id,
1129
+ lease_id=getattr(args, "lease_id", None),
1130
+ generation=getattr(args, "generation", None),
1033
1131
  )
1034
1132
  if payload.get("ok"):
1035
1133
  emit(payload, as_json=bool(args.json))
@@ -1051,11 +1149,26 @@ def cmd_lease_port(args: argparse.Namespace) -> int:
1051
1149
  f"expected --range <start-end>, got {args.range!r}",
1052
1150
  as_json=bool(args.json),
1053
1151
  )
1152
+ listener_identity = None
1153
+ if getattr(args, "listener_identity_json", None):
1154
+ try:
1155
+ parsed_listener = json.loads(args.listener_identity_json)
1156
+ if not isinstance(parsed_listener, dict):
1157
+ raise ValueError("listener identity must be an object")
1158
+ listener_identity = parsed_listener
1159
+ except (TypeError, ValueError, json.JSONDecodeError) as exc:
1160
+ return emit_error(
1161
+ "LISTENER_IDENTITY_UNVERIFIABLE",
1162
+ str(exc),
1163
+ as_json=bool(args.json),
1164
+ )
1054
1165
  payload = lease_port(
1055
1166
  project,
1056
1167
  change_id=args.change,
1057
1168
  run_id=args.run_id,
1058
1169
  port_range=parsed,
1170
+ generation=int(getattr(args, "generation", 1)),
1171
+ listener_identity=listener_identity,
1059
1172
  )
1060
1173
  if payload.get("ok"):
1061
1174
  emit(payload, as_json=bool(args.json))
@@ -1070,12 +1183,27 @@ def cmd_lease_port(args: argparse.Namespace) -> int:
1070
1183
 
1071
1184
  def cmd_release_port(args: argparse.Namespace) -> int:
1072
1185
  project = resolve_main_project_root()
1186
+ listener_identity = None
1187
+ if getattr(args, "listener_identity_json", None):
1188
+ try:
1189
+ parsed_listener = json.loads(args.listener_identity_json)
1190
+ if not isinstance(parsed_listener, dict):
1191
+ raise ValueError("listener identity must be an object")
1192
+ listener_identity = parsed_listener
1193
+ except (TypeError, ValueError, json.JSONDecodeError) as exc:
1194
+ return emit_error(
1195
+ "LISTENER_IDENTITY_UNVERIFIABLE",
1196
+ str(exc),
1197
+ as_json=bool(args.json),
1198
+ )
1073
1199
  payload = release_port(
1074
1200
  project,
1075
1201
  change_id=args.change,
1076
1202
  run_id=args.run_id,
1077
1203
  port=getattr(args, "port", None),
1078
1204
  lease_id=getattr(args, "lease_id", None),
1205
+ generation=getattr(args, "generation", None),
1206
+ listener_identity=listener_identity,
1079
1207
  )
1080
1208
  if payload.get("ok"):
1081
1209
  emit(payload, as_json=bool(args.json))
@@ -1329,18 +1457,23 @@ def build_parser() -> argparse.ArgumentParser:
1329
1457
  p_claim.add_argument("--run-id", required=True)
1330
1458
  p_claim.add_argument("--ttl-seconds", type=int, default=3600)
1331
1459
  p_claim.add_argument("--steal", action="store_true")
1460
+ p_claim.add_argument("--expected-generation", type=int, default=None)
1332
1461
  p_claim.set_defaults(func=cmd_claim)
1333
1462
 
1334
1463
  p_release = sub.add_parser("release", parents=[shared])
1335
1464
  p_release.add_argument("--change", required=True)
1336
1465
  p_release.add_argument("--phase", required=True)
1337
1466
  p_release.add_argument("--run-id", required=True)
1467
+ p_release.add_argument("--lease-id", default=None)
1468
+ p_release.add_argument("--generation", type=int, default=None)
1338
1469
  p_release.set_defaults(func=cmd_release)
1339
1470
 
1340
1471
  p_port = sub.add_parser("lease-port", parents=[shared])
1341
1472
  p_port.add_argument("--change", required=True)
1342
1473
  p_port.add_argument("--run-id", required=True)
1343
1474
  p_port.add_argument("--range", required=True)
1475
+ p_port.add_argument("--generation", type=int, default=1)
1476
+ p_port.add_argument("--listener-identity-json", default=None)
1344
1477
  p_port.set_defaults(func=cmd_lease_port)
1345
1478
 
1346
1479
  p_port_release = sub.add_parser("release-port", parents=[shared])
@@ -1348,6 +1481,8 @@ def build_parser() -> argparse.ArgumentParser:
1348
1481
  p_port_release.add_argument("--run-id", required=True)
1349
1482
  p_port_release.add_argument("--port", type=int, default=None)
1350
1483
  p_port_release.add_argument("--lease-id", default=None)
1484
+ p_port_release.add_argument("--generation", type=int, default=None)
1485
+ p_port_release.add_argument("--listener-identity-json", default=None)
1351
1486
  p_port_release.set_defaults(func=cmd_release_port)
1352
1487
 
1353
1488
  p_lock = sub.add_parser("integration-lock", parents=[shared])