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.
- package/AGENTS.md +15 -18
- package/CLAUDE.md +15 -18
- package/README.es.md +5 -5
- package/README.fr.md +5 -5
- package/README.ja.md +5 -5
- package/README.md +19 -6
- package/README.zh-CN.md +6 -6
- package/agents/engineers/profiles/verification-evals-checks.json +18 -0
- package/agents/engineers/profiles/workflow-engine-contract-assets.json +18 -0
- package/agents/engineers/sops/verification-evals-checks.md +9 -0
- package/agents/engineers/sops/workflow-engine-contract-assets.md +9 -0
- package/agents/fleet/gatekeeper.md +1 -1
- package/assets/hooks/lib/workflow-state.sh +39 -9
- package/assets/reference-configs/agentic-development-flow.md +1 -1
- package/assets/reference-configs/external-tooling.md +16 -12
- package/assets/reference-configs/sprint-contracts.md +1 -1
- package/assets/skill-commands/manifest.json +1 -1
- package/assets/skill-version.json +11 -3
- package/assets/skills/repo-harness-chatgpt/SKILL.md +6 -2
- package/assets/skills/repo-harness-chatgpt/references/orchestrate.md +225 -0
- package/assets/skills/repo-harness-chatgpt/references/setup.md +66 -0
- package/assets/skills/repo-harness-cross-review/SKILL.md +8 -8
- package/assets/skills/repo-harness-cross-review/references/codex-mode.md +1 -0
- package/assets/skills/repo-harness-cross-review/references/codex-plugin-mode.md +55 -0
- package/assets/templates/contract.template.md +8 -1
- package/assets/templates/helpers/acceptance-receipt.ts +60 -11
- package/assets/templates/helpers/check-agent-tooling.sh +155 -0
- package/assets/templates/helpers/check-task-sync.sh +4 -0
- package/assets/templates/helpers/contract-worktree.sh +90 -15
- package/assets/templates/helpers/ensure-task-workflow.sh +2 -2
- package/assets/templates/helpers/harness-trace-grade.sh +1 -1
- package/assets/templates/helpers/install-agent-fleet.sh +8 -5
- package/assets/templates/helpers/plan-to-todo.sh +23 -1
- package/assets/templates/helpers/prepare-handoff.sh +3 -2
- package/assets/templates/helpers/refresh-current-status.sh +105 -18
- package/assets/templates/helpers/ship-worktrees.sh +240 -6
- package/assets/templates/helpers/sprint-backlog.sh +39 -20
- package/assets/templates/helpers/verify-contract.sh +612 -71
- package/assets/templates/helpers/verify-sprint.sh +177 -6
- package/dist/hook-entry.js +1623 -418
- package/dist/operator-ui/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- package/dist/operator-ui/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- package/dist/operator-ui/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- package/dist/operator-ui/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- package/dist/operator-ui/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- package/dist/operator-ui/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- package/dist/operator-ui/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff +0 -0
- package/dist/operator-ui/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2 +0 -0
- package/dist/operator-ui/assets/index-BeJ0Y3XF.js +9 -0
- package/dist/operator-ui/assets/index-CX-_E5gG.css +1 -0
- package/dist/operator-ui/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/dist/operator-ui/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/dist/operator-ui/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
- package/dist/operator-ui/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
- package/dist/operator-ui/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2 +0 -0
- package/dist/operator-ui/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff +0 -0
- package/dist/operator-ui/assets/space-grotesk-latin-400-normal-BnQMeOim.woff +0 -0
- package/dist/operator-ui/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2 +0 -0
- package/dist/operator-ui/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff +0 -0
- package/dist/operator-ui/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2 +0 -0
- package/dist/operator-ui/assets/space-grotesk-latin-600-normal-BflQw4A9.woff +0 -0
- package/dist/operator-ui/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2 +0 -0
- package/dist/operator-ui/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff +0 -0
- package/dist/operator-ui/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2 +0 -0
- package/dist/operator-ui/index.html +15 -0
- package/docs/repo-harness-chatgpt-browser-engine.md +43 -0
- package/install.ps1 +1 -1
- package/install.sh +1 -1
- package/package.json +19 -7
- package/scripts/acceptance-receipt.ts +60 -11
- package/scripts/axr5-archctx-clean-room.ts +1 -1
- package/scripts/axr6-stop-host-cycle.ts +8 -8
- package/scripts/axr7-consumer-e2e.ts +17 -7
- package/scripts/check-agent-tooling.sh +155 -0
- package/scripts/check-tarball-install-smoke.sh +138 -3
- package/scripts/check-task-sync.sh +4 -0
- package/scripts/contract-worktree.sh +90 -15
- package/scripts/ensure-task-workflow.sh +2 -2
- package/scripts/harness-trace-grade.sh +1 -1
- package/scripts/hook-dispatch-diet-report.ts +4 -1
- package/scripts/install-agent-fleet.sh +8 -5
- package/scripts/lib/project-init-lib.sh +2 -2
- package/scripts/me2b-runtime-admission-canary.ts +342 -0
- package/scripts/plan-to-todo.sh +23 -1
- package/scripts/prepare-handoff.sh +3 -2
- package/scripts/refresh-current-status.sh +105 -18
- package/scripts/ship-worktrees.sh +240 -6
- package/scripts/sprint-backlog.sh +39 -20
- package/scripts/verify-contract.sh +612 -71
- package/scripts/verify-sprint.sh +177 -6
- package/src/cli/chatgpt-skill/source.ts +1 -0
- package/src/cli/commands/architecture-projection.ts +1 -1
- package/src/cli/commands/cross-review.ts +5 -21
- package/src/cli/commands/delegation.ts +223 -0
- package/src/cli/commands/engineer.ts +644 -0
- package/src/cli/commands/fleet.ts +902 -0
- package/src/cli/commands/global-runtime.ts +8 -2
- package/src/cli/commands/init.ts +80 -4
- package/src/cli/commands/integration.ts +215 -0
- package/src/cli/commands/interface-change.ts +139 -0
- package/src/cli/commands/mcp.ts +2 -2
- package/src/cli/commands/operator.ts +125 -0
- package/src/cli/commands/publication.ts +474 -0
- package/src/cli/commands/sprint.ts +81 -777
- package/src/cli/commands/state.ts +1 -6
- package/src/cli/commands/verified-context.ts +141 -0
- package/src/cli/hook/handler-registry.ts +12 -0
- package/src/cli/hook/mutation-guard.ts +9 -1
- package/src/cli/hook/prompt-handler.ts +4 -8
- package/src/cli/hook/route-registry.ts +10 -0
- package/src/cli/hook/runtime.ts +1 -0
- package/src/cli/hook/task-inbox-handler.ts +137 -0
- package/src/cli/index.ts +37 -2
- package/src/cli/installer/managed-entries.ts +1 -0
- package/src/cli/mcp/auth.ts +3 -0
- package/src/cli/mcp/engineer-tools.ts +653 -0
- package/src/cli/mcp/fleet-tools.ts +545 -0
- package/src/cli/mcp/instructions.ts +9 -1
- package/src/cli/mcp/oauth.ts +48 -11
- package/src/cli/mcp/policy.ts +16 -2
- package/src/cli/mcp/server.ts +10 -5
- package/src/cli/mcp/setup.ts +42 -20
- package/src/cli/mcp/tools.ts +14 -0
- package/src/cli/mcp/transports/http.ts +54 -40
- package/src/cli/mcp/transports/stdio.ts +5 -0
- package/src/cli/mcp/types.ts +1 -1
- package/src/cli/runtime/helper-runner.ts +11 -0
- package/src/core/architecture/projection.ts +79 -4
- package/src/core/engineers/delegation.ts +737 -0
- package/src/core/engineers/engineering-overlay.ts +429 -0
- package/src/core/engineers/interface-change.ts +578 -0
- package/src/core/engineers/module-message.ts +522 -0
- package/src/core/engineers/principal-claim.ts +289 -0
- package/src/core/engineers/profile-binding.ts +620 -0
- package/src/core/engineers/provider-thread-effect.ts +607 -0
- package/src/core/engineers/scheduling.ts +620 -0
- package/src/core/engineers/task-freeze.ts +235 -0
- package/src/core/engineers/verified-context.ts +722 -0
- package/src/core/fleet/board.ts +293 -0
- package/src/core/fleet/task-message.ts +401 -0
- package/src/core/fleet/task-offer.ts +251 -0
- package/src/core/integration/product-acceptance.ts +371 -0
- package/src/core/loop/loop-event-protocol.ts +4 -3
- package/src/core/messages/mechanics.ts +65 -0
- package/src/core/operator/fleet-snapshot.ts +144 -0
- package/src/core/publication/feedback.ts +941 -0
- package/src/core/publication/merge-readiness.ts +178 -0
- package/src/core/publication/publication-lifecycle.ts +246 -0
- package/src/core/publication/publication-receipt.ts +354 -0
- package/src/core/review/cross-review.ts +7 -137
- package/src/core/state/attempt-ledger.ts +11 -14
- package/src/core/state/command-outcome.ts +11 -0
- package/src/core/state/coordination-identity.ts +299 -12
- package/src/core/state/no-progress.ts +35 -0
- package/src/core/state/project-board.ts +38 -5
- package/src/core/state/types.ts +8 -0
- package/src/effects/architecture/archctx-provider.ts +95 -9
- package/src/effects/architecture/projection-jobs.ts +15 -6
- package/src/effects/architecture/projection-orchestrator.ts +30 -8
- package/src/effects/engineers/acquire.ts +161 -0
- package/src/effects/engineers/binding-store.ts +582 -0
- package/src/effects/engineers/bound-task-rotation.ts +30 -0
- package/src/effects/engineers/claim-actor-store.ts +184 -0
- package/src/effects/engineers/delegated-run-store.ts +940 -0
- package/src/effects/engineers/engineering-overlay.ts +279 -0
- package/src/effects/engineers/interface-change-store.ts +487 -0
- package/src/effects/engineers/module-inbox.ts +759 -0
- package/src/effects/engineers/principal-store.ts +172 -0
- package/src/effects/engineers/principal.ts +76 -0
- package/src/effects/engineers/profile-store.ts +271 -0
- package/src/effects/engineers/provider-thread-effect-store.ts +823 -0
- package/src/effects/engineers/scheduling-acquire.ts +183 -0
- package/src/effects/engineers/scheduling.ts +388 -0
- package/src/effects/engineers/task-freeze-store.ts +437 -0
- package/src/effects/engineers/verified-context-store.ts +446 -0
- package/src/effects/evidence/checks-materializer.ts +8 -2
- package/src/effects/fleet/acquire.ts +874 -0
- package/src/effects/fleet/board.ts +483 -0
- package/src/effects/fleet/task-inbox.ts +813 -0
- package/src/effects/integration/product-acceptance.ts +553 -0
- package/src/effects/locking/exclusive-directory-lock.ts +30 -5
- package/src/effects/operator/server.ts +400 -0
- package/src/effects/publication/feedback-store.ts +648 -0
- package/src/effects/publication/feedback.ts +1588 -0
- package/src/effects/publication/merge-readiness.ts +688 -0
- package/src/effects/publication/publication-lifecycle.ts +941 -0
- package/src/effects/publication/publication-receipt.ts +690 -0
- package/src/effects/repo-registry.ts +188 -10
- package/src/effects/review/codex-plugin-provider.ts +406 -0
- package/src/effects/review/cross-review-runner.ts +248 -263
- package/src/effects/state/coordination-canonical-source.ts +219 -0
- package/src/effects/state/coordination-claim-token.ts +162 -4
- package/src/effects/state/coordination-lease-store.ts +26 -19
- package/src/effects/state/coordination-sprint.ts +838 -0
- package/src/operator-web/App.tsx +639 -0
- package/src/operator-web/fixture.ts +182 -0
- package/src/operator-web/icons.tsx +100 -0
- package/src/operator-web/index.html +14 -0
- package/src/operator-web/main.tsx +13 -0
- package/src/operator-web/styles.css +341 -0
- package/src/operator-web/styles.d.ts +4 -0
- package/src/operator-web/types.ts +380 -0
- 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: `
|
|
75
|
-
- Capability ID: `
|
|
76
|
-
- Matched prefix: `
|
|
77
|
-
- Architecture domain: `
|
|
78
|
-
- Architecture capability: `
|
|
79
|
-
- Architecture module: `docs/architecture/modules/
|
|
80
|
-
- Last architecture event: 2026-08-
|
|
81
|
-
- Last changed path: `
|
|
82
|
-
- Severity:
|
|
83
|
-
- Change type:
|
|
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: `
|
|
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: `
|
|
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/
|
|
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
|
-
-
|
|
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/
|
|
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: `
|
|
75
|
-
- Capability ID: `
|
|
76
|
-
- Matched prefix: `
|
|
77
|
-
- Architecture domain: `
|
|
78
|
-
- Architecture capability: `
|
|
79
|
-
- Architecture module: `docs/architecture/modules/
|
|
80
|
-
- Last architecture event: 2026-08-
|
|
81
|
-
- Last changed path: `
|
|
82
|
-
- Severity:
|
|
83
|
-
- Change type:
|
|
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: `
|
|
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: `
|
|
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/
|
|
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
|
-
-
|
|
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/
|
|
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
|
[](https://www.npmjs.com/package/repo-harness)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
11
|
-
[](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.
|
|
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.
|
|
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.
|
|
471
|
-
- Sello de workflow generado: `repo-harness@0.
|
|
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
|
[](https://www.npmjs.com/package/repo-harness)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
11
|
-
[](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.
|
|
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.
|
|
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.
|
|
466
|
-
- Generated workflow stamp : `repo-harness@0.
|
|
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
|
[](https://www.npmjs.com/package/repo-harness)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
11
|
-
[](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.
|
|
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.
|
|
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.
|
|
474
|
-
- Generated workflow stamp:`repo-harness@0.
|
|
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
|
[](https://www.npmjs.com/package/repo-harness)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
11
|
-
[](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.
|
|
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.
|
|
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` |
|
|
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.
|
|
454
|
-
- Generated workflow stamp: `repo-harness@0.
|
|
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
|
[](https://www.npmjs.com/package/repo-harness)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
11
|
-
[](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.
|
|
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.
|
|
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` |
|
|
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.
|
|
461
|
-
- Generated workflow stamp:`repo-harness@0.
|
|
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,
|
|
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
|
-
|
|
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(
|
|
1460
|
-
|
|
1461
|
-
|
|
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
|
|
1480
|
-
|
|
1481
|
-
|
|
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
|
-
"$
|
|
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
|
|
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
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
|
60
|
-
provider mode) for the full profile.
|
|
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.
|
|
716
|
-
contract and
|
|
717
|
-
|
|
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
|
|
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": "
|
|
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.
|
|
3
|
-
"templateVersion": "0.
|
|
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.
|
|
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": {
|