repo-harness 0.16.2 → 0.17.1

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 (203) hide show
  1. package/AGENTS.md +15 -18
  2. package/CLAUDE.md +15 -18
  3. package/README.es.md +5 -5
  4. package/README.fr.md +5 -5
  5. package/README.ja.md +5 -5
  6. package/README.md +19 -6
  7. package/README.zh-CN.md +6 -6
  8. package/agents/engineers/profiles/verification-evals-checks.json +18 -0
  9. package/agents/engineers/profiles/workflow-engine-contract-assets.json +18 -0
  10. package/agents/engineers/sops/verification-evals-checks.md +9 -0
  11. package/agents/engineers/sops/workflow-engine-contract-assets.md +9 -0
  12. package/agents/fleet/gatekeeper.md +1 -1
  13. package/assets/hooks/lib/workflow-state.sh +39 -9
  14. package/assets/reference-configs/agentic-development-flow.md +1 -1
  15. package/assets/reference-configs/external-tooling.md +16 -12
  16. package/assets/reference-configs/sprint-contracts.md +1 -1
  17. package/assets/skill-commands/manifest.json +1 -1
  18. package/assets/skill-version.json +11 -3
  19. package/assets/skills/repo-harness-chatgpt/SKILL.md +6 -2
  20. package/assets/skills/repo-harness-chatgpt/references/orchestrate.md +225 -0
  21. package/assets/skills/repo-harness-chatgpt/references/setup.md +66 -0
  22. package/assets/skills/repo-harness-cross-review/SKILL.md +8 -8
  23. package/assets/skills/repo-harness-cross-review/references/codex-mode.md +1 -0
  24. package/assets/skills/repo-harness-cross-review/references/codex-plugin-mode.md +55 -0
  25. package/assets/templates/contract.template.md +8 -1
  26. package/assets/templates/helpers/acceptance-receipt.ts +60 -11
  27. package/assets/templates/helpers/check-agent-tooling.sh +155 -0
  28. package/assets/templates/helpers/check-task-sync.sh +4 -0
  29. package/assets/templates/helpers/contract-worktree.sh +90 -15
  30. package/assets/templates/helpers/ensure-task-workflow.sh +2 -2
  31. package/assets/templates/helpers/harness-trace-grade.sh +1 -1
  32. package/assets/templates/helpers/install-agent-fleet.sh +8 -5
  33. package/assets/templates/helpers/plan-to-todo.sh +23 -1
  34. package/assets/templates/helpers/prepare-handoff.sh +3 -2
  35. package/assets/templates/helpers/refresh-current-status.sh +105 -18
  36. package/assets/templates/helpers/ship-worktrees.sh +240 -6
  37. package/assets/templates/helpers/sprint-backlog.sh +39 -20
  38. package/assets/templates/helpers/verify-contract.sh +612 -71
  39. package/assets/templates/helpers/verify-sprint.sh +177 -6
  40. package/dist/hook-entry.js +1623 -418
  41. package/dist/operator-ui/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  42. package/dist/operator-ui/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  43. package/dist/operator-ui/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  44. package/dist/operator-ui/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  45. package/dist/operator-ui/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  46. package/dist/operator-ui/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  47. package/dist/operator-ui/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff +0 -0
  48. package/dist/operator-ui/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2 +0 -0
  49. package/dist/operator-ui/assets/index-BeJ0Y3XF.js +9 -0
  50. package/dist/operator-ui/assets/index-CX-_E5gG.css +1 -0
  51. package/dist/operator-ui/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  52. package/dist/operator-ui/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  53. package/dist/operator-ui/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  54. package/dist/operator-ui/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  55. package/dist/operator-ui/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2 +0 -0
  56. package/dist/operator-ui/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff +0 -0
  57. package/dist/operator-ui/assets/space-grotesk-latin-400-normal-BnQMeOim.woff +0 -0
  58. package/dist/operator-ui/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2 +0 -0
  59. package/dist/operator-ui/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff +0 -0
  60. package/dist/operator-ui/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2 +0 -0
  61. package/dist/operator-ui/assets/space-grotesk-latin-600-normal-BflQw4A9.woff +0 -0
  62. package/dist/operator-ui/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2 +0 -0
  63. package/dist/operator-ui/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff +0 -0
  64. package/dist/operator-ui/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2 +0 -0
  65. package/dist/operator-ui/index.html +15 -0
  66. package/docs/repo-harness-chatgpt-browser-engine.md +43 -0
  67. package/install.ps1 +1 -1
  68. package/install.sh +1 -1
  69. package/package.json +19 -7
  70. package/scripts/acceptance-receipt.ts +60 -11
  71. package/scripts/axr5-archctx-clean-room.ts +1 -1
  72. package/scripts/axr6-stop-host-cycle.ts +8 -8
  73. package/scripts/axr7-consumer-e2e.ts +17 -7
  74. package/scripts/check-agent-tooling.sh +155 -0
  75. package/scripts/check-tarball-install-smoke.sh +138 -3
  76. package/scripts/check-task-sync.sh +4 -0
  77. package/scripts/contract-worktree.sh +90 -15
  78. package/scripts/ensure-task-workflow.sh +2 -2
  79. package/scripts/harness-trace-grade.sh +1 -1
  80. package/scripts/hook-dispatch-diet-report.ts +4 -1
  81. package/scripts/install-agent-fleet.sh +8 -5
  82. package/scripts/lib/project-init-lib.sh +2 -2
  83. package/scripts/me2b-runtime-admission-canary.ts +342 -0
  84. package/scripts/plan-to-todo.sh +23 -1
  85. package/scripts/prepare-handoff.sh +3 -2
  86. package/scripts/refresh-current-status.sh +105 -18
  87. package/scripts/ship-worktrees.sh +240 -6
  88. package/scripts/sprint-backlog.sh +39 -20
  89. package/scripts/verify-contract.sh +612 -71
  90. package/scripts/verify-sprint.sh +177 -6
  91. package/src/cli/chatgpt-skill/source.ts +1 -0
  92. package/src/cli/commands/architecture-projection.ts +1 -1
  93. package/src/cli/commands/cross-review.ts +5 -21
  94. package/src/cli/commands/delegation.ts +223 -0
  95. package/src/cli/commands/engineer.ts +644 -0
  96. package/src/cli/commands/fleet.ts +902 -0
  97. package/src/cli/commands/global-runtime.ts +8 -2
  98. package/src/cli/commands/init.ts +80 -4
  99. package/src/cli/commands/integration.ts +215 -0
  100. package/src/cli/commands/interface-change.ts +139 -0
  101. package/src/cli/commands/mcp.ts +2 -2
  102. package/src/cli/commands/operator.ts +125 -0
  103. package/src/cli/commands/publication.ts +474 -0
  104. package/src/cli/commands/sprint.ts +81 -777
  105. package/src/cli/commands/state.ts +1 -6
  106. package/src/cli/commands/verified-context.ts +141 -0
  107. package/src/cli/hook/handler-registry.ts +12 -0
  108. package/src/cli/hook/mutation-guard.ts +9 -1
  109. package/src/cli/hook/prompt-handler.ts +4 -8
  110. package/src/cli/hook/route-registry.ts +10 -0
  111. package/src/cli/hook/runtime.ts +1 -0
  112. package/src/cli/hook/task-inbox-handler.ts +137 -0
  113. package/src/cli/index.ts +37 -2
  114. package/src/cli/installer/managed-entries.ts +1 -0
  115. package/src/cli/mcp/auth.ts +3 -0
  116. package/src/cli/mcp/engineer-tools.ts +653 -0
  117. package/src/cli/mcp/fleet-tools.ts +545 -0
  118. package/src/cli/mcp/instructions.ts +9 -1
  119. package/src/cli/mcp/oauth.ts +48 -11
  120. package/src/cli/mcp/policy.ts +16 -2
  121. package/src/cli/mcp/server.ts +10 -5
  122. package/src/cli/mcp/setup.ts +42 -20
  123. package/src/cli/mcp/tools.ts +14 -0
  124. package/src/cli/mcp/transports/http.ts +54 -40
  125. package/src/cli/mcp/transports/stdio.ts +5 -0
  126. package/src/cli/mcp/types.ts +1 -1
  127. package/src/cli/runtime/helper-runner.ts +11 -0
  128. package/src/core/architecture/projection.ts +79 -4
  129. package/src/core/engineers/delegation.ts +737 -0
  130. package/src/core/engineers/engineering-overlay.ts +429 -0
  131. package/src/core/engineers/interface-change.ts +578 -0
  132. package/src/core/engineers/module-message.ts +522 -0
  133. package/src/core/engineers/principal-claim.ts +289 -0
  134. package/src/core/engineers/profile-binding.ts +620 -0
  135. package/src/core/engineers/provider-thread-effect.ts +607 -0
  136. package/src/core/engineers/scheduling.ts +620 -0
  137. package/src/core/engineers/task-freeze.ts +235 -0
  138. package/src/core/engineers/verified-context.ts +722 -0
  139. package/src/core/fleet/board.ts +293 -0
  140. package/src/core/fleet/task-message.ts +401 -0
  141. package/src/core/fleet/task-offer.ts +251 -0
  142. package/src/core/integration/product-acceptance.ts +371 -0
  143. package/src/core/loop/loop-event-protocol.ts +4 -3
  144. package/src/core/messages/mechanics.ts +65 -0
  145. package/src/core/operator/fleet-snapshot.ts +144 -0
  146. package/src/core/publication/feedback.ts +941 -0
  147. package/src/core/publication/merge-readiness.ts +178 -0
  148. package/src/core/publication/publication-lifecycle.ts +246 -0
  149. package/src/core/publication/publication-receipt.ts +354 -0
  150. package/src/core/review/cross-review.ts +7 -137
  151. package/src/core/state/attempt-ledger.ts +11 -14
  152. package/src/core/state/command-outcome.ts +11 -0
  153. package/src/core/state/coordination-identity.ts +299 -12
  154. package/src/core/state/no-progress.ts +35 -0
  155. package/src/core/state/project-board.ts +38 -5
  156. package/src/core/state/types.ts +8 -0
  157. package/src/effects/architecture/archctx-provider.ts +95 -9
  158. package/src/effects/architecture/projection-jobs.ts +15 -6
  159. package/src/effects/architecture/projection-orchestrator.ts +30 -8
  160. package/src/effects/engineers/acquire.ts +161 -0
  161. package/src/effects/engineers/binding-store.ts +582 -0
  162. package/src/effects/engineers/bound-task-rotation.ts +30 -0
  163. package/src/effects/engineers/claim-actor-store.ts +184 -0
  164. package/src/effects/engineers/delegated-run-store.ts +940 -0
  165. package/src/effects/engineers/engineering-overlay.ts +279 -0
  166. package/src/effects/engineers/interface-change-store.ts +487 -0
  167. package/src/effects/engineers/module-inbox.ts +759 -0
  168. package/src/effects/engineers/principal-store.ts +172 -0
  169. package/src/effects/engineers/principal.ts +76 -0
  170. package/src/effects/engineers/profile-store.ts +271 -0
  171. package/src/effects/engineers/provider-thread-effect-store.ts +823 -0
  172. package/src/effects/engineers/scheduling-acquire.ts +183 -0
  173. package/src/effects/engineers/scheduling.ts +388 -0
  174. package/src/effects/engineers/task-freeze-store.ts +437 -0
  175. package/src/effects/engineers/verified-context-store.ts +446 -0
  176. package/src/effects/evidence/checks-materializer.ts +8 -2
  177. package/src/effects/fleet/acquire.ts +874 -0
  178. package/src/effects/fleet/board.ts +483 -0
  179. package/src/effects/fleet/task-inbox.ts +813 -0
  180. package/src/effects/integration/product-acceptance.ts +553 -0
  181. package/src/effects/locking/exclusive-directory-lock.ts +30 -5
  182. package/src/effects/operator/server.ts +400 -0
  183. package/src/effects/publication/feedback-store.ts +648 -0
  184. package/src/effects/publication/feedback.ts +1588 -0
  185. package/src/effects/publication/merge-readiness.ts +688 -0
  186. package/src/effects/publication/publication-lifecycle.ts +941 -0
  187. package/src/effects/publication/publication-receipt.ts +690 -0
  188. package/src/effects/repo-registry.ts +188 -10
  189. package/src/effects/review/codex-plugin-provider.ts +406 -0
  190. package/src/effects/review/cross-review-runner.ts +248 -263
  191. package/src/effects/state/coordination-canonical-source.ts +219 -0
  192. package/src/effects/state/coordination-claim-token.ts +162 -4
  193. package/src/effects/state/coordination-lease-store.ts +26 -19
  194. package/src/effects/state/coordination-sprint.ts +838 -0
  195. package/src/operator-web/App.tsx +639 -0
  196. package/src/operator-web/fixture.ts +182 -0
  197. package/src/operator-web/icons.tsx +100 -0
  198. package/src/operator-web/index.html +14 -0
  199. package/src/operator-web/main.tsx +13 -0
  200. package/src/operator-web/styles.css +341 -0
  201. package/src/operator-web/styles.d.ts +4 -0
  202. package/src/operator-web/types.ts +380 -0
  203. package/assets/skills/repo-harness-cross-review/references/claude-mode.md +0 -50
package/AGENTS.md CHANGED
@@ -71,37 +71,34 @@ bun src/cli/index.ts init --repo . --dry-run
71
71
  <!-- BEGIN ARCHITECTURE CONTRACT -->
72
72
  ## Architecture Contract
73
73
 
74
- - Functional block: `scripts/verify-sprint.sh`
75
- - Capability ID: `verification-evals-checks`
76
- - Matched prefix: `scripts/verify-sprint.sh`
77
- - Architecture domain: `verification`
78
- - Architecture capability: `evals-checks`
79
- - Architecture module: `docs/architecture/modules/verification/evals-checks.md`
80
- - Last architecture event: 2026-08-05T00:46:11+0800
81
- - Last changed path: `tasks/workstreams/verification/evals-checks/github-issues-158-159.md`
82
- - Severity: medium
83
- - Change type: workstream-sync
74
+ - Functional block: `src/cli/mcp`
75
+ - Capability ID: `runtime-harness-mcp-sidecar`
76
+ - Matched prefix: `src/cli/mcp`
77
+ - Architecture domain: `runtime-harness`
78
+ - Architecture capability: `mcp-sidecar`
79
+ - Architecture module: `docs/architecture/modules/runtime-harness/mcp-sidecar.md`
80
+ - Last architecture event: 2026-08-27T03:12:23+0800
81
+ - Last changed path: `src/cli/mcp/engineer-tools.ts`
82
+ - Severity: low
83
+ - Change type: source-change
84
84
  - Module responsibility: Keep this block aligned with the local boundary described by surrounding human-owned context.
85
- - Entrypoints: `scripts/verify-sprint.sh`
85
+ - Entrypoints: `src/cli/mcp`
86
86
  - Allowed dependencies: Follow root `AGENTS.md` / `CLAUDE.md` and this local contract.
87
87
  - Forbidden dependencies: Do not cross sibling app/service/package boundaries without an architecture snapshot or explicit plan.
88
- - Runtime path: `scripts/verify-sprint.sh`
88
+ - Runtime path: `src/cli/mcp`
89
89
  - LSP/tooling profile: `typescript-lsp`
90
90
  - Verification: Use root required checks plus local commands recorded in this capability contract.
91
91
  - Latest snapshot: `(none yet)`
92
- - Semantic diagram source: `docs/architecture/modules/verification/evals-checks.md`
92
+ - Semantic diagram source: `docs/architecture/modules/runtime-harness/mcp-sidecar.md`
93
93
  - Pending architecture request: `(none)`
94
94
 
95
95
  ## Active Workstreams
96
96
 
97
- - `tasks/workstreams/verification/evals-checks/github-issues-158-159.md`
98
- - status: completed
99
- - current_slice: completed-20260805-deployed-emitter-binding
100
- - source_plan: plans/plan-20260805-0001-github-issues-158-159.md
97
+ - (none yet)
101
98
 
102
99
  ## Current Session Projection
103
100
 
104
- - Durable progress lives under `tasks/workstreams/verification/evals-checks`.
101
+ - Durable progress lives under `tasks/workstreams/runtime-harness/mcp-sidecar`.
105
102
  - `tasks/current.md` is the tracked derived status snapshot; it is not a live lock or task source.
106
103
  - `tasks/todos.md` is the deferred-goal ledger; current execution slices stay in the active plan's `## Task Breakdown`.
107
104
  <!-- END ARCHITECTURE CONTRACT -->
package/CLAUDE.md CHANGED
@@ -71,37 +71,34 @@ bun src/cli/index.ts init --repo . --dry-run
71
71
  <!-- BEGIN ARCHITECTURE CONTRACT -->
72
72
  ## Architecture Contract
73
73
 
74
- - Functional block: `scripts/verify-sprint.sh`
75
- - Capability ID: `verification-evals-checks`
76
- - Matched prefix: `scripts/verify-sprint.sh`
77
- - Architecture domain: `verification`
78
- - Architecture capability: `evals-checks`
79
- - Architecture module: `docs/architecture/modules/verification/evals-checks.md`
80
- - Last architecture event: 2026-08-05T00:46:11+0800
81
- - Last changed path: `tasks/workstreams/verification/evals-checks/github-issues-158-159.md`
82
- - Severity: medium
83
- - Change type: workstream-sync
74
+ - Functional block: `src/cli/mcp`
75
+ - Capability ID: `runtime-harness-mcp-sidecar`
76
+ - Matched prefix: `src/cli/mcp`
77
+ - Architecture domain: `runtime-harness`
78
+ - Architecture capability: `mcp-sidecar`
79
+ - Architecture module: `docs/architecture/modules/runtime-harness/mcp-sidecar.md`
80
+ - Last architecture event: 2026-08-27T03:12:23+0800
81
+ - Last changed path: `src/cli/mcp/engineer-tools.ts`
82
+ - Severity: low
83
+ - Change type: source-change
84
84
  - Module responsibility: Keep this block aligned with the local boundary described by surrounding human-owned context.
85
- - Entrypoints: `scripts/verify-sprint.sh`
85
+ - Entrypoints: `src/cli/mcp`
86
86
  - Allowed dependencies: Follow root `AGENTS.md` / `CLAUDE.md` and this local contract.
87
87
  - Forbidden dependencies: Do not cross sibling app/service/package boundaries without an architecture snapshot or explicit plan.
88
- - Runtime path: `scripts/verify-sprint.sh`
88
+ - Runtime path: `src/cli/mcp`
89
89
  - LSP/tooling profile: `typescript-lsp`
90
90
  - Verification: Use root required checks plus local commands recorded in this capability contract.
91
91
  - Latest snapshot: `(none yet)`
92
- - Semantic diagram source: `docs/architecture/modules/verification/evals-checks.md`
92
+ - Semantic diagram source: `docs/architecture/modules/runtime-harness/mcp-sidecar.md`
93
93
  - Pending architecture request: `(none)`
94
94
 
95
95
  ## Active Workstreams
96
96
 
97
- - `tasks/workstreams/verification/evals-checks/github-issues-158-159.md`
98
- - status: completed
99
- - current_slice: completed-20260805-deployed-emitter-binding
100
- - source_plan: plans/plan-20260805-0001-github-issues-158-159.md
97
+ - (none yet)
101
98
 
102
99
  ## Current Session Projection
103
100
 
104
- - Durable progress lives under `tasks/workstreams/verification/evals-checks`.
101
+ - Durable progress lives under `tasks/workstreams/runtime-harness/mcp-sidecar`.
105
102
  - `tasks/current.md` is the tracked derived status snapshot; it is not a live lock or task source.
106
103
  - `tasks/todos.md` is the deferred-goal ledger; current execution slices stay in the active plan's `## Task Breakdown`.
107
104
  <!-- END ARCHITECTURE CONTRACT -->
package/README.es.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/repo-harness.svg)](https://www.npmjs.com/package/repo-harness)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
- [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.1.35-black.svg)](https://bun.sh)
11
+ [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.4.0-black.svg)](https://bun.sh)
12
12
 
13
13
  [English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Español](README.es.md)
14
14
 
@@ -43,7 +43,7 @@ de agente tasks-first que mantiene alineados a Claude y Codex.
43
43
  ### 1. Instalar el CLI
44
44
 
45
45
  Prerrequisitos: un Git working tree, `bash` y `bun`; `jq` es opcional. No se
46
- necesita Node.js — el instalador usa Bun >= 1.1.35 como runtime, instalando o
46
+ necesita Node.js — el instalador usa Bun >= 1.4.0 como runtime, instalando o
47
47
  actualizando Bun primero si hace falta.
48
48
 
49
49
  ```bash
@@ -54,7 +54,7 @@ curl -fsSL https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/instal
54
54
  irm https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/install.ps1 | iex
55
55
  ```
56
56
 
57
- Si ya tienes Bun >= 1.1.35 en el PATH, omite el instalador de shell. Las
57
+ Si ya tienes Bun >= 1.4.0 en el PATH, omite el instalador de shell. Las
58
58
  instalaciones de Bun gestionadas por un gestor de paquetes fallan de forma
59
59
  cerrada (fail closed) con el comando de actualización correspondiente
60
60
  (`brew upgrade bun`), en lugar de sobrescribir archivos que pertenecen a ese
@@ -467,8 +467,8 @@ repositorio adopte la misma política.
467
467
 
468
468
  ## Versión actual
469
469
 
470
- - Paquete npm: `repo-harness@0.16.2`
471
- - Sello de workflow generado: `repo-harness@0.16.2+template@0.16.2`
470
+ - Paquete npm: `repo-harness@0.17.1`
471
+ - Sello de workflow generado: `repo-harness@0.17.1+template@0.17.1`
472
472
  - Repositorio de GitHub: `Ancienttwo/repo-harness`
473
473
  - Notas de versión e historial: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
474
474
 
package/README.fr.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/repo-harness.svg)](https://www.npmjs.com/package/repo-harness)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
- [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.1.35-black.svg)](https://bun.sh)
11
+ [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.4.0-black.svg)](https://bun.sh)
12
12
 
13
13
  [English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Español](README.es.md)
14
14
 
@@ -43,7 +43,7 @@ d'agent tasks-first qui maintient Claude et Codex alignés.
43
43
  ### 1. Installer le CLI
44
44
 
45
45
  Prérequis : un working tree Git, `bash` et `bun` ; `jq` est optionnel. Node.js
46
- n'est pas nécessaire — l'installateur utilise Bun >= 1.1.35 comme runtime, en
46
+ n'est pas nécessaire — l'installateur utilise Bun >= 1.4.0 comme runtime, en
47
47
  l'installant ou en le mettant à niveau d'abord si besoin.
48
48
 
49
49
  ```bash
@@ -54,7 +54,7 @@ curl -fsSL https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/instal
54
54
  irm https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/install.ps1 | iex
55
55
  ```
56
56
 
57
- Si Bun >= 1.1.35 est déjà sur le PATH, l'installateur shell peut être ignoré.
57
+ Si Bun >= 1.4.0 est déjà sur le PATH, l'installateur shell peut être ignoré.
58
58
  Les installations de Bun gérées par un package manager échouent en mode
59
59
  fail-closed avec la commande de mise à niveau correspondante (`brew upgrade
60
60
  bun`), plutôt que d'écraser les fichiers appartenant au manager.
@@ -462,8 +462,8 @@ adopte la même policy.
462
462
 
463
463
  ## Release actuelle
464
464
 
465
- - Package npm : `repo-harness@0.16.2`
466
- - Generated workflow stamp : `repo-harness@0.16.2+template@0.16.2`
465
+ - Package npm : `repo-harness@0.17.1`
466
+ - Generated workflow stamp : `repo-harness@0.17.1+template@0.17.1`
467
467
  - Dépôt GitHub : `Ancienttwo/repo-harness`
468
468
  - Notes et historique de release : [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
469
469
 
package/README.ja.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/repo-harness.svg)](https://www.npmjs.com/package/repo-harness)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
- [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.1.35-black.svg)](https://bun.sh)
11
+ [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.4.0-black.svg)](https://bun.sh)
12
12
 
13
13
  [English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Español](README.es.md)
14
14
 
@@ -42,7 +42,7 @@
42
42
  ### 1. CLI をインストールする
43
43
 
44
44
  前提条件は Git working tree、`bash`、`bun` です。`jq` は任意です。Node.js は
45
- 不要です — installer は runtime として Bun >= 1.1.35 を使用し、必要であれば
45
+ 不要です — installer は runtime として Bun >= 1.4.0 を使用し、必要であれば
46
46
  先に Bun のインストールまたはアップグレードを行います。
47
47
 
48
48
  ```bash
@@ -53,7 +53,7 @@ curl -fsSL https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/instal
53
53
  irm https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/install.ps1 | iex
54
54
  ```
55
55
 
56
- Bun >= 1.1.35 がすでに PATH 上にある場合は、shell installer をスキップできます。
56
+ Bun >= 1.4.0 がすでに PATH 上にある場合は、shell installer をスキップできます。
57
57
  Package manager が所有する Bun のインストールでは、manager が管理するファイルを
58
58
  上書きする代わりに、対応する upgrade コマンド(`brew upgrade bun`)を伴って
59
59
  fail closed します。
@@ -470,8 +470,8 @@ commit script や hooks に組み込まないでください。
470
470
 
471
471
  ## 現在の Release
472
472
 
473
- - npm package:`repo-harness@0.16.2`
474
- - Generated workflow stamp:`repo-harness@0.16.2+template@0.16.2`
473
+ - npm package:`repo-harness@0.17.1`
474
+ - Generated workflow stamp:`repo-harness@0.17.1+template@0.17.1`
475
475
  - GitHub repository:`Ancienttwo/repo-harness`
476
476
  - Release notes and history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
477
477
 
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/repo-harness.svg)](https://www.npmjs.com/package/repo-harness)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
- [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.1.35-black.svg)](https://bun.sh)
11
+ [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.4.0-black.svg)](https://bun.sh)
12
12
 
13
13
  [English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Español](README.es.md)
14
14
 
@@ -44,7 +44,7 @@ with a tasks-first agent contract that keeps Claude and Codex aligned.
44
44
  Prerequisites: a Git working tree and `bun`; macOS/Linux also require `bash`,
45
45
  while Windows requires Git for Windows (including its Bash and `usr/bin`
46
46
  tools). `jq` is optional. No Node.js required — the installer uses Bun >=
47
- 1.1.35 as the runtime, installing or upgrading Bun first when needed.
47
+ 1.4.0 as the runtime, installing or upgrading Bun first when needed.
48
48
 
49
49
  ```bash
50
50
  # macOS / Linux
@@ -54,7 +54,7 @@ curl -fsSL https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/instal
54
54
  irm https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/install.ps1 | iex
55
55
  ```
56
56
 
57
- With Bun >= 1.1.35 already on PATH, skip the shell installer. Package-manager-owned
57
+ With Bun >= 1.4.0 already on PATH, skip the shell installer. Package-manager-owned
58
58
  Bun installs fail closed with the matching upgrade command (`brew upgrade bun`)
59
59
  instead of overwriting manager-owned files.
60
60
 
@@ -302,6 +302,19 @@ claimed before the contract passed), and `WorktreeGuard` (writes from the wrong
302
302
  worktree). Full playbook:
303
303
  [`docs/reference-configs/hook-operations.md`](docs/reference-configs/hook-operations.md).
304
304
 
305
+ ## Local Human Control Board
306
+
307
+ Run the read-only operator view on the same machine as the adopted repositories:
308
+
309
+ ```bash
310
+ repo-harness operator serve
311
+ ```
312
+
313
+ The command binds to loopback only and prints the local URL. The browser shows
314
+ the canonical Fleet summary, five columns, attention owners, task details, and
315
+ degraded snapshot states. Refresh is explicit; this surface does not acquire
316
+ tasks, mutate workflow state, launch agents, or expose repository paths.
317
+
305
318
  ## MCP Connector
306
319
 
307
320
  As an optional sidecar, `repo-harness mcp` exposes workflow artifacts to MCP
@@ -375,7 +388,7 @@ hooks own execution.
375
388
  | `repo-harness-check` | Workflow and release checks plus a deploy-readiness reference |
376
389
  | `repo-harness-ship` | Validate finished worktrees, push branches, and open PRs |
377
390
  | `repo-harness-architecture` | Architecture docs, drift requests, and diagrams without a full harness refresh |
378
- | `repo-harness-cross-review` | Host-aware Claude/Codex independent cross-model review |
391
+ | `repo-harness-cross-review` | Independent outside review: Claude hosts use direct Codex; Codex hosts use OpenAI's official `codex@openai-codex` plugin app-server runtime |
379
392
  | `claude-plan` | Codex-side provider skill: independent Claude plan-mode consult for a design fork or high-stakes decision; not a direct user entrypoint |
380
393
  | `repo-harness-chatgpt` | Oracle browser/GPT Pro consults, MCP Connector setup, and bridge handoff; explicit setup only |
381
394
  | `merge-gate` (external) | Exact-candidate final gate; repo-harness ships no merge-gate Skill — see [external tooling](docs/reference-configs/external-tooling.md) |
@@ -450,8 +463,8 @@ repo-harness commit scripts or hooks unless that repo adopts the same policy.
450
463
 
451
464
  ## Current Release
452
465
 
453
- - npm package: `repo-harness@0.16.2`
454
- - Generated workflow stamp: `repo-harness@0.16.2+template@0.16.2`
466
+ - npm package: `repo-harness@0.17.1`
467
+ - Generated workflow stamp: `repo-harness@0.17.1+template@0.17.1`
455
468
  - GitHub repository: `Ancienttwo/repo-harness`
456
469
  - Release notes and history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
457
470
 
package/README.zh-CN.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/repo-harness.svg)](https://www.npmjs.com/package/repo-harness)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
- [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.1.35-black.svg)](https://bun.sh)
11
+ [![Runtime: Bun](https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.4.0-black.svg)](https://bun.sh)
12
12
 
13
13
  [English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Español](README.es.md)
14
14
 
@@ -43,7 +43,7 @@ checks 和 review evidence 写回项目文件,让下一个 agent 会话从文
43
43
 
44
44
  前置条件:一个 Git working tree 和 `bun`;macOS/Linux 还需要 `bash`,
45
45
  Windows 则需要 Git for Windows(包括其 Bash 与 `usr/bin` 工具)。`jq`
46
- 可选。不需要 Node.js——installer 使用 Bun >= 1.1.35 作为 runtime,需要时会
46
+ 可选。不需要 Node.js——installer 使用 Bun >= 1.4.0 作为 runtime,需要时会
47
47
  先安装或升级 Bun。
48
48
 
49
49
  ```bash
@@ -54,7 +54,7 @@ curl -fsSL https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/instal
54
54
  irm https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/install.ps1 | iex
55
55
  ```
56
56
 
57
- 如果 Bun >= 1.1.35 已经在 PATH 上,可以跳过 shell installer。由包管理器
57
+ 如果 Bun >= 1.4.0 已经在 PATH 上,可以跳过 shell installer。由包管理器
58
58
  安装的 Bun 会 fail closed,并提示对应的升级命令(如 `brew upgrade bun`),
59
59
  而不是覆盖包管理器管理的文件。
60
60
 
@@ -379,7 +379,7 @@ Canonical 的 rule-owner package 放在 `assets/skills/` 和
379
379
  | `repo-harness-check` | Workflow 和 release check,附带 deploy-readiness reference |
380
380
  | `repo-harness-ship` | 校验完成的 worktree,push 分支并开 PR |
381
381
  | `repo-harness-architecture` | Architecture 文档、drift request 和图表,不需要完整刷新 harness |
382
- | `repo-harness-cross-review` | Host-aware 的 Claude/Codex 独立 cross-model review |
382
+ | `repo-harness-cross-review` | 独立 outside review:Claude 环境直连 Codex;Codex 环境走 OpenAI 官方 `codex@openai-codex` plugin app-server runtime |
383
383
  | `claude-plan` | Codex 端 provider skill:面向设计分叉或高风险决策的独立 Claude plan mode consult;不是用户直呼入口 |
384
384
  | `repo-harness-chatgpt` | Oracle browser/GPT Pro consult、MCP Connector setup 和 bridge handoff;仅限显式 setup |
385
385
  | `merge-gate`(外部) | Exact-candidate 的 final gate;repo-harness 本身不附带 merge-gate Skill——见 [external tooling](docs/reference-configs/external-tooling.md) |
@@ -457,8 +457,8 @@ policy。
457
457
 
458
458
  ## 当前 Release
459
459
 
460
- - npm package:`repo-harness@0.16.2`
461
- - Generated workflow stamp:`repo-harness@0.16.2+template@0.16.2`
460
+ - npm package:`repo-harness@0.17.1`
461
+ - Generated workflow stamp:`repo-harness@0.17.1+template@0.17.1`
462
462
  - GitHub repository:`Ancienttwo/repo-harness`
463
463
  - Release notes 和 history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
464
464
 
@@ -0,0 +1,18 @@
1
+ {
2
+ "protocol": 1,
3
+ "kind": "repo-harness-module-engineer-profile",
4
+ "engineer_id": "engineer:capability.verification.evals-checks",
5
+ "capability_id": "capability.verification.evals-checks",
6
+ "sop_ref": "agents/engineers/sops/verification-evals-checks.md",
7
+ "delegation_policy": {
8
+ "allowed_roles": ["explorer", "root-cause-prover", "fast-worker", "deep-worker", "gatekeeper"],
9
+ "max_depth": 1,
10
+ "max_parallel_readers": 3,
11
+ "max_parallel_writers": 1
12
+ },
13
+ "max_active_claims": 1,
14
+ "escalation_policy": {
15
+ "cross_capability_change": "interface_request",
16
+ "acceptance": "independent_plane"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "protocol": 1,
3
+ "kind": "repo-harness-module-engineer-profile",
4
+ "engineer_id": "engineer:capability.workflow-engine.contract-assets",
5
+ "capability_id": "capability.workflow-engine.contract-assets",
6
+ "sop_ref": "agents/engineers/sops/workflow-engine-contract-assets.md",
7
+ "delegation_policy": {
8
+ "allowed_roles": ["explorer", "root-cause-prover", "fast-worker", "deep-worker", "gatekeeper"],
9
+ "max_depth": 1,
10
+ "max_parallel_readers": 3,
11
+ "max_parallel_writers": 1
12
+ },
13
+ "max_active_claims": 1,
14
+ "escalation_policy": {
15
+ "cross_capability_change": "interface_request",
16
+ "acceptance": "independent_plane"
17
+ }
18
+ }
@@ -0,0 +1,9 @@
1
+ # Verification / Evals Engineer SOP
2
+
3
+ Own the verification and evaluation capability through its canonical ArchContext contract. Begin every slice by resolving that capability context, then trace the exact evidence producer, consumer, and acceptance boundary before changing behavior.
4
+
5
+ Use temporary workers only within the Profile delegation limits. Writers receive disjoint file ownership and never become durable authorities. Acceptance stays on the independent review plane.
6
+
7
+ Fail closed when required evidence, canonical inputs, or ownership is missing. Do not turn smoke output into authoritative evidence, synthesize fallback results, or edit another capability without an interface request.
8
+
9
+ Deliver one reviewable unit with focused checks, repository-required checks, durable conclusions in the owning repo artifact, and explicit residual risk.
@@ -0,0 +1,9 @@
1
+ # Workflow Contract Assets Engineer SOP
2
+
3
+ Own workflow contract assets through the canonical ArchContext capability. Before editing, trace one generated artifact from source template through initialization and verification so source-of-truth and projection boundaries remain explicit.
4
+
5
+ Delegate bounded read, implementation, diagnosis, or acceptance slices only within the Profile limits. Workers do not gain contract authority, and acceptance remains independent.
6
+
7
+ Keep one semantic authority for each contract field. Reject malformed or stale state instead of adding compatibility aliases, shadow parsers, or best-effort projection. Cross-capability changes require an interface request.
8
+
9
+ Deliver a minimal coherent patch with fixture readback, required checks, durable repo evidence, and a rollback surface.
@@ -10,7 +10,7 @@ You are the read-only acceptance and ship gate. Execution workers deliver work;
10
10
 
11
11
  - **Verdict first.** Your opening line is exactly one of `VERDICT: PASS`, `VERDICT: FAIL`, `VERDICT: BLOCKED`. PASS means every gate is clean and you state the recommended next action without performing it. FAIL means blocking findings and nothing touched. BLOCKED means a precondition prevents judgment, such as no verification command, auth failure, merge conflict, moved HEAD, or missing goal manifest.
12
12
  - **Worktree safety.** Start with `git status --short --branch -uall` and record `git rev-parse HEAD`. Modified, staged, and untracked files are user work. Never switch branch, stash, reset, clean, discard, stage, or commit them. If HEAD moves or unknown commits appear during review, stop and return BLOCKED.
13
- - **Acceptance gates.** Scope: every changed file traces to the stated goal. Verification: run the project's real commands and report their actual output. Hard stops include unknown identifiers, version skew, stale generated output, surprise dependencies, hardcoded secrets, and sleeps standing in for a completion signal.
13
+ - **Acceptance gates.** Scope: every changed file traces to the stated goal. Verification: run the project's real commands and report their actual output. Hard stops include unknown identifiers, version skew, stale generated output, surprise dependencies, hardcoded secrets, sleeps standing in for a completion signal, near-duplicates of an existing canonical helper, special-case branches or one-off mode flags bolted into shared flows the goal does not cover, and pass-through wrappers or `any`/cast churn that obscure an existing contract without the goal requiring it.
14
14
  - **Decomposition is recommendation only.** Given a goal manifest, map changes to goals and propose file-granular commit or PR groups. A file entangling goals is a FAIL finding. Unmapped changes are user work and remain untouched. The orchestrator performs any approved split or ship action.
15
15
  - **Evidence before claim.** A test, CI result, or ship state counts only if checked in this turn. Before recommending merge, re-read PR and CI status; before recommending push, check local versus remote sync. Never recommend merge on red or stale evidence.
16
16
  - **FAIL returns findings, not fixes.** Each finding is `[CRITICAL|HIGH|MEDIUM] file:line — problem — concrete fix instruction — class(safe_auto|gated_auto|manual)`. You do not edit or patch through any tool.
@@ -1443,7 +1443,7 @@ workflow_current_review_target_revision() {
1443
1443
  printf '%s' "$target_rev"
1444
1444
  }
1445
1445
 
1446
- workflow_acceptance_expected_reviewer() {
1446
+ workflow_acceptance_policy_json() {
1447
1447
  local contract_file="${1:-}" policy_json
1448
1448
  contract_file="${contract_file:-$(workflow_active_contract 2>/dev/null || true)}"
1449
1449
  [[ -n "$contract_file" && -f "$contract_file" ]] || return 1
@@ -1454,11 +1454,19 @@ workflow_acceptance_expected_reviewer() {
1454
1454
  block { print }
1455
1455
  ' "$contract_file")"
1456
1456
  [[ -n "$policy_json" ]] || return 1
1457
+ printf '%s' "$policy_json"
1458
+ }
1459
+
1460
+ workflow_acceptance_expected_reviewer() {
1461
+ local policy_json
1462
+ policy_json="$(workflow_acceptance_policy_json "${1:-}")" || return 1
1457
1463
  if command -v jq >/dev/null 2>&1; then
1458
1464
  printf '%s' "$policy_json" | jq -er '
1459
- select(.protocol == 1)
1460
- | select((keys | sort) == ["protocol", "reviewer", "user_waiver"])
1461
- | select(.reviewer == "Claude" or .reviewer == "Codex")
1465
+ select(
1466
+ (.protocol == 1 and (keys | sort) == ["protocol", "reviewer", "user_waiver"] and (.reviewer == "Claude" or .reviewer == "Codex"))
1467
+ or
1468
+ (.protocol == 2 and (keys | sort) == ["protocol", "reviewer", "source", "user_waiver"] and .reviewer == "Codex" and (.source == "codex-review" or .source == "codex-plugin"))
1469
+ )
1462
1470
  | select(.user_waiver == "allowed" or .user_waiver == "forbidden")
1463
1471
  | .reviewer
1464
1472
  ' 2>/dev/null
@@ -1476,9 +1484,17 @@ workflow_acceptance_source_for_reviewer() {
1476
1484
  }
1477
1485
 
1478
1486
  workflow_acceptance_expected_source() {
1479
- local reviewer="${1:-}"
1480
- reviewer="${reviewer:-$(workflow_acceptance_expected_reviewer)}"
1481
- workflow_acceptance_source_for_reviewer "$reviewer"
1487
+ local policy_json
1488
+ policy_json="$(workflow_acceptance_policy_json)" || return 1
1489
+ command -v jq >/dev/null 2>&1 || return 1
1490
+ printf '%s' "$policy_json" | jq -er '
1491
+ select(.user_waiver == "allowed" or .user_waiver == "forbidden")
1492
+ | if .protocol == 1 and (keys | sort) == ["protocol", "reviewer", "user_waiver"] then
1493
+ if .reviewer == "Claude" then "claude-review" elif .reviewer == "Codex" then "codex-review" else empty end
1494
+ elif .protocol == 2 and (keys | sort) == ["protocol", "reviewer", "source", "user_waiver"] and .reviewer == "Codex" and (.source == "codex-review" or .source == "codex-plugin") then
1495
+ .source
1496
+ else empty end
1497
+ ' 2>/dev/null
1482
1498
  }
1483
1499
 
1484
1500
  # Parses the contract's fenced yaml block that declares `evidence_requirements:`
@@ -1857,7 +1873,7 @@ workflow_contract_allows_path() {
1857
1873
  }
1858
1874
  workflow_write_handoff() {
1859
1875
  local reason="${1:-session-stop}"
1860
- local source_plan parent_run_id bun_bin
1876
+ local source_plan parent_run_id bun_bin helper_source recovery_view_cli
1861
1877
 
1862
1878
  # EPC-07: independent handoff/resume content assembly retired same-package
1863
1879
  # (Phase A/B: tasks/contracts/20260722-2246-epc-07-recovery-view-cutover.contract.md).
@@ -1871,7 +1887,21 @@ workflow_write_handoff() {
1871
1887
  # EPC-07's four named recovery views.
1872
1888
  workflow_ensure_harness_surface
1873
1889
  bun_bin="${REPO_HARNESS_BUN_BIN:-bun}"
1874
- "$bun_bin" "scripts/recovery-view-cli.ts" --reason "$reason" --quiet
1890
+ helper_source="${REPO_HARNESS_HELPER_SOURCE_PATH:-}"
1891
+ if [[ -n "$helper_source" ]]; then
1892
+ if [[ ! -f "$helper_source" || "$(basename "$helper_source")" != "prepare-handoff.sh" ]]; then
1893
+ echo "workflow_write_handoff: invalid REPO_HARNESS_HELPER_SOURCE_PATH for prepare-handoff" >&2
1894
+ return 1
1895
+ fi
1896
+ recovery_view_cli="$(cd "$(dirname "$helper_source")" && pwd)/recovery-view-cli.ts"
1897
+ else
1898
+ recovery_view_cli="scripts/recovery-view-cli.ts"
1899
+ fi
1900
+ if [[ ! -f "$recovery_view_cli" ]]; then
1901
+ echo "workflow_write_handoff: recovery materializer is missing: $recovery_view_cli" >&2
1902
+ return 1
1903
+ fi
1904
+ "$bun_bin" "$recovery_view_cli" --reason "$reason" --quiet
1875
1905
 
1876
1906
  source_plan="$(get_todo_source_plan || true)"
1877
1907
  if [[ "$source_plan" == "(none)" ]]; then
@@ -53,7 +53,7 @@ cross-review/merge-gate rows.
53
53
  | Check deploy and ops config | `repo-harness-check` (deploy-readiness reference) | Read-only deploy/_ops readiness check without publishing |
54
54
  | Fix broken current harness behavior | `repo-harness-setup` (repair mode) | Task sync, hook routing, handoff, context, policy, or helper drift |
55
55
  | Verify readiness | `repo-harness-check` | Workflow gates, task sync, inspector, migration dry-run, and readiness yellow flags |
56
- | Independent cross-model review | `repo-harness-cross-review` | Host-aware Claude/Codex provider modes; installed on both hosts for full; never produces a merge-gate receipt |
56
+ | Independent outside review | `repo-harness-cross-review` | Claude host uses direct Codex; Codex host uses OpenAI's official `codex@openai-codex` plugin app-server mode; installed on both hosts for full; never produces a merge-gate receipt |
57
57
  | Generate an upper-layer PRD | `repo-harness-product` (PRD mode) | `$geju` direction pass, Claude-first `claude -p --model opus` drafting, Codex fallback only when needed, PRD in `plans/prds/*.prd.md`; geju thesis/falsifier are pre-contract only and freeze into a delegated contract's `## Why`/`## Falsifier` |
58
58
  | Plan and run a program-level sprint | `repo-harness-product` (Sprint mode) | Upper-layer PRD in `plans/prds/`, sprint backlog in `plans/sprints/`; each row expands through `$think` before plan -> contract -> worktree |
59
59
  | Prepare a bounded native goal session | `repo-harness-product` (Goal mode) | Codex/Claude `/goal` prompt from detailed PRD or Sprint artifacts; stops to request those documents when missing |
@@ -30,10 +30,11 @@ Codex/Claude hook adapters, Waza (`think`, `hunt`, `check`, `health`), brain
30
30
  root persistence, Mermaid, and CodeGraph CLI/MCP configuration.
31
31
  `repo-harness init` remains a compatibility alias for existing automation. The
32
32
  bootstrap path must not silently install unrelated toolchains or Claude
33
- marketplace plugins.
33
+ marketplace plugins. The one explicit exception is OpenAI's official
34
+ `codex@openai-codex` plugin for the Codex-host outside-review capability.
34
35
 
35
36
  `repo-harness uninstall` removes repo-harness managed Codex/Claude hook
36
- adapters. It intentionally does not uninstall Waza, Mermaid, Reverse Skill, CodeGraph,
37
+ adapters. It intentionally does not uninstall Waza, Mermaid, Reverse Skill, the official Codex plugin, CodeGraph,
37
38
  brain config, package-manager globals, or user-authored sibling hook entries.
38
39
 
39
40
  `repo-harness update` is a reconciliation command, not a best-effort package
@@ -48,16 +49,19 @@ Waza and Mermaid providers remain behind explicit `--with-external-skills`;
48
49
  Repo-local workflow refresh stays on `repo-harness init`; `setup check
49
50
  --check-updates` remains the read-only advisory surface.
50
51
 
51
- The cross-review skill is **harness-owned and self-contained** — its source
52
- lives in `assets/skills/repo-harness-cross-review/` and it wraps the peer CLI
53
- (`codex exec` / `claude -p`) in a read-only sandbox with no external
54
- planning-provider runtime, so installing it is a workflow-owned runtime
55
- concern, not an unrelated toolchain. `repo-harness-cross-review` installs
52
+ The cross-review skill is **harness-owned** — its routing source lives in
53
+ `assets/skills/repo-harness-cross-review/`. Claude hosts wrap `codex exec` in a
54
+ read-only sandbox. Codex hosts discover and invoke OpenAI's official
55
+ `codex@openai-codex` plugin companion/app-server runtime; they never launch
56
+ Claude as the reviewer and never fall back when the plugin is unavailable.
57
+ Installing that single plugin is therefore a workflow-owned runtime concern,
58
+ not an unrelated toolchain. `repo-harness-cross-review` installs
56
59
  host-aware during `repo-harness install`/`init` and explicit external-skill
57
60
  refreshes: it installs into **both** `~/.claude/skills` (a Claude session
58
61
  asking Codex for an independent review, via its Codex provider mode) and
59
- `~/.codex/skills` (a Codex session asking Claude for a review, via its Claude
60
- provider mode) for the full profile. `claude-plan` installs only into
62
+ `~/.codex/skills` (a Codex session asking Codex through the official plugin,
63
+ via its `codex-plugin` provider mode) for the full profile. Review Gate is not
64
+ enabled. `claude-plan` installs only into
61
65
  `~/.codex/skills` (a Codex session using Claude's headless plan mode for a
62
66
  plan consult on a mid-execution design fork) and is unaffected by this
63
67
  package's host-aware installation. These harness skills ship with the full
@@ -712,9 +716,9 @@ six source files before mutating any target; a missing, malformed, mismatched,
712
716
  or unmapped source makes the whole run fail closed and leaves installed files
713
717
  untouched.
714
718
 
715
- The installer requires Bun >= 1.1.35, matching repo-harness's package runtime
716
- contract and the first supported `Bun.TOML.parse` behavior for the generated
717
- multiline agent files.
719
+ The installer requires Bun >= 1.4.0, matching repo-harness's package runtime
720
+ contract and its verified subprocess environment-inheritance behavior.
721
+ The CLI entry rejects older or unparseable Bun runtimes before command dispatch.
718
722
  The top-level Unix and Windows bootstrap installers upgrade an older detected
719
723
  Bun before installing repo-harness, rather than relying on package-engine
720
724
  metadata that older Bun releases do not enforce.
@@ -92,7 +92,7 @@ evidence_requirements:
92
92
 
93
93
  ## Acceptance Policy and Receipt
94
94
 
95
- Every new contract freezes one reviewer and the waiver rule in a strict `## Acceptance Policy` JSON block. `verify-sprint --prepare-acceptance` produces the final local evidence bundle; one semantic reviewer then returns `external_pass` or `reject`, or the named contract owner creates one typed UserWaiverGrant when the policy allows it. The grant binds the normalized contract and goal authorities, not a subject hash. Each user-waiver AcceptanceReceipt is then materialized from that grant and still binds the exact normalized implementation subject, verification and benchmark evidence, target revision, and reviewed paths. A semantic change invalidates the old receipt and requires fresh passing verification, but the same unchanged grant may materialize the new exact receipt without another owner prompt. Contract/goal authority changes or revocation invalidate the grant. Review Markdown is a deterministic projection, never authoring authority; user waiver never becomes external pass and never authorizes provider disclosure or merge.
95
+ Every new contract freezes reviewer, source, and waiver rule in a strict protocol-2 `## Acceptance Policy` JSON block. Claude hosts use `reviewer=Codex, source=codex-review`; Codex hosts use `reviewer=Codex, source=codex-plugin`, backed by OpenAI's official Claude Code Codex plugin app-server runtime. Protocol 1 remains readable only for historical receipts. `verify-sprint --prepare-acceptance` produces the final local evidence bundle; one semantic reviewer then returns `external_pass` or `reject`, or the named contract owner creates one typed UserWaiverGrant when the policy allows it. The grant binds the normalized contract and goal authorities, not a subject hash. Each user-waiver AcceptanceReceipt is then materialized from that grant and still binds the exact normalized implementation subject, verification and benchmark evidence, target revision, and reviewed paths. A semantic change invalidates the old receipt and requires fresh passing verification, but the same unchanged grant may materialize the new exact receipt without another owner prompt. Contract/goal authority changes or revocation invalidate the grant. Review Markdown is a deterministic projection, never authoring authority; user waiver never becomes external pass and never authorizes provider disclosure or merge.
96
96
 
97
97
  Every new contract also carries exactly one strict `## Change Assessment` JSON
98
98
  block. Its v1 shape is `{"protocol":1,"oracles":[...]}`; every oracle has a
@@ -507,7 +507,7 @@
507
507
  {
508
508
  "name": "claude-review",
509
509
  "replacement": "repo-harness-cross-review",
510
- "note": "Consolidated into repo-harness-cross-review's claude-mode reference; installed on the Codex host."
510
+ "note": "Retired from active review. Codex hosts use repo-harness-cross-review's official codex-plugin mode."
511
511
  },
512
512
  {
513
513
  "name": "repo-harness-chatgpt-bridge",
@@ -1,11 +1,11 @@
1
1
  {
2
- "version": "0.16.2",
3
- "templateVersion": "0.16.2",
2
+ "version": "0.17.1",
3
+ "templateVersion": "0.17.1",
4
4
  "skillName": "repo-harness",
5
5
  "contractId": "tasks-first-harness-v1",
6
6
  "compatibility": {
7
7
  "minClaudeCodeVersion": "1.0.0",
8
- "minBunVersion": "1.0.0"
8
+ "minBunVersion": "1.4.0"
9
9
  },
10
10
  "breakingChanges": [
11
11
  {
@@ -263,6 +263,14 @@
263
263
  {
264
264
  "version": "0.16.2",
265
265
  "description": "Fixes MCP runtime issues from #204, binds MCP HTTP sessions to the startup profile with fail-closed config-flip handling, publishes the architecture queue lock owner record atomically via staged hard-link creation, requires and fail-closed-validates sandbox_mode in Codex custom-agent TOMLs with EXECUTION_BOUNDARY persona de-duplication, and adds artifact-hygiene rules (final-diff-only comments and PR text) to the global working rules and generated agent contracts"
266
+ },
267
+ {
268
+ "version": "0.17.0",
269
+ "description": "Adds the Git-backed Fleet control plane: immutable PublicationReceiptV1 identity and recovery, Lease protocol 2 reviewing/reopen/takeover lifecycle, fenced merge readiness and integration reconcile, deterministic cross-repo offers/acquire and FleetBoardSnapshotV1/watch, immutable provider feedback and task inbox delivery, GPT Pro advisory orchestration, Fleet MCP mirrors, and a Bun 1.4 runtime floor"
270
+ },
271
+ {
272
+ "version": "0.17.1",
273
+ "description": "Delivers the persistent module-engineer control plane on the existing early-access line: durable engineer records, bindings and authenticated principal claims, a task/claim-scoped engineer inbox, the loopback operator control board, fail-closed read-only delegation admission, verified evidence context, interface change authority, integration acceptance, and the exclusive engineer MCP profile; pins ArchContext 0.4.7 and isolates fixture HOME outside the repo under test"
266
274
  }
267
275
  ],
268
276
  "generatedProjectStamp": {