repo-harness 0.11.0 → 0.11.2
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 +12 -4
- package/CLAUDE.md +12 -4
- package/README.es.md +3 -3
- package/README.fr.md +3 -3
- package/README.ja.md +3 -3
- package/README.md +17 -14
- package/README.zh-CN.md +3 -3
- package/assets/AGENTS.md +9 -5
- package/assets/CLAUDE.md +9 -5
- package/assets/hooks/lib/workflow-state.sh +77 -8
- package/assets/reference-configs/agentic-development-flow.md +2 -2
- package/assets/reference-configs/external-tooling.md +32 -7
- package/assets/skill-commands/manifest.json +22 -52
- package/assets/skill-version.json +10 -2
- package/assets/skills/repo-harness-chatgpt/SKILL.md +2 -2
- package/assets/templates/helpers/archive-workflow.sh +361 -159
- package/assets/templates/helpers/capability-resolver.ts +18 -1
- package/assets/templates/helpers/check-task-workflow.sh +46 -6
- package/assets/templates/helpers/classify-historical-plans.ts +241 -0
- package/assets/templates/helpers/ensure-task-workflow.sh +8 -1
- package/assets/templates/helpers/install-agent-fleet.sh +173 -10
- package/assets/templates/helpers/ship-worktrees.sh +2 -2
- package/assets/templates/helpers/verify-contract.sh +8 -2
- package/assets/workflow-contract.v1.json +4 -0
- package/package.json +1 -1
- package/scripts/AGENTS.md +8 -8
- package/scripts/CLAUDE.md +8 -8
- package/scripts/archive-workflow.sh +361 -159
- package/scripts/check-task-workflow.sh +46 -6
- package/scripts/classify-historical-plans.ts +241 -0
- package/scripts/ensure-task-workflow.sh +8 -1
- package/scripts/install-agent-fleet.sh +173 -10
- package/scripts/lib/project-init-lib.sh +7 -0
- package/scripts/run-harness-profile-benchmark.ts +1 -1
- package/scripts/run-skill-routing-eval.ts +6 -4
- package/scripts/ship-worktrees.sh +2 -2
- package/scripts/skill-surface-select.ts +11 -1
- package/scripts/sync-codex-installed-copies.sh +33 -6
- package/scripts/verify-contract.sh +8 -2
- package/src/cli/commands/global-runtime.ts +4 -4
- package/src/cli/commands/init-hook.ts +32 -3
- package/src/cli/commands/status.ts +39 -15
- package/src/cli/hook/command-observed.ts +4 -7
- package/src/cli/hook/handler-contract.ts +2 -1
- package/src/cli/hook/handler-registry.ts +6 -1
- package/src/cli/hook/mutation-guard.ts +151 -62
- package/src/cli/hook/runtime.ts +139 -91
- package/src/cli/hook/session-context-budget.ts +64 -1
- package/src/cli/hook/session-context.ts +26 -13
- package/src/cli/index.ts +46 -9
- package/src/cli/installer/install-profile.ts +236 -92
- package/src/cli/installer/managed-entries.ts +10 -8
- package/src/core/adoption/gitignore-plan.ts +1 -0
- package/src/core/adoption/standard-plan.ts +10 -0
- package/src/core/capabilities/registry.ts +17 -0
- package/src/core/skill-surface/catalog.ts +2 -2
- package/src/core/skill-surface/profile-components.ts +4 -9
- package/src/effects/evidence/checks-materializer.ts +46 -42
- package/src/effects/review/diff-fingerprint.ts +1 -0
- package/src/effects/state/resolve-effective-state.ts +24 -5
package/AGENTS.md
CHANGED
|
@@ -77,10 +77,10 @@ bun src/cli/index.ts adopt --repo . --dry-run
|
|
|
77
77
|
- Architecture domain: `workflow-engine`
|
|
78
78
|
- Architecture capability: `inspection-migration`
|
|
79
79
|
- Architecture module: `docs/architecture/modules/workflow-engine/inspection-migration.md`
|
|
80
|
-
- Last architecture event: 2026-07-
|
|
81
|
-
- Last changed path: `
|
|
80
|
+
- Last architecture event: 2026-07-03T14:07:48+0800
|
|
81
|
+
- Last changed path: `scripts/inspect-project-state.ts`
|
|
82
82
|
- Severity: high
|
|
83
|
-
- Change type:
|
|
83
|
+
- Change type: workflow-surface
|
|
84
84
|
- Module responsibility: Keep this block aligned with the local boundary described by surrounding human-owned context.
|
|
85
85
|
- Entrypoints: `scripts/inspect-project-state.ts`
|
|
86
86
|
- Allowed dependencies: Follow root `AGENTS.md` / `CLAUDE.md` and this local contract.
|
|
@@ -96,9 +96,17 @@ bun src/cli/index.ts adopt --repo . --dry-run
|
|
|
96
96
|
## Active Workstreams
|
|
97
97
|
|
|
98
98
|
- `tasks/workstreams/workflow-engine/inspection-migration/20260703-inspection-migration.md`
|
|
99
|
-
- status:
|
|
99
|
+
- status: completed
|
|
100
100
|
- current_slice: completed-20260703-architecture-closeout
|
|
101
101
|
- source_plan: (none)
|
|
102
|
+
- `tasks/workstreams/workflow-engine/inspection-migration/20260712-inspection-migration.md`
|
|
103
|
+
- status: completed
|
|
104
|
+
- current_slice: completed-20260712-repo-owned-agent-fleet
|
|
105
|
+
- source_plan: `plans/archive/plan-20260712-2053-repo-owned-agent-fleet.md`
|
|
106
|
+
- `tasks/workstreams/workflow-engine/inspection-migration/agent-fleet-specialists.md`
|
|
107
|
+
- status: completed
|
|
108
|
+
- current_slice: completed-20260713-policy-seed
|
|
109
|
+
- source_plan: `plans/archive/plan-20260712-2215-agent-fleet-specialists.md`
|
|
102
110
|
|
|
103
111
|
## Current Session Projection
|
|
104
112
|
|
package/CLAUDE.md
CHANGED
|
@@ -77,10 +77,10 @@ bun src/cli/index.ts adopt --repo . --dry-run
|
|
|
77
77
|
- Architecture domain: `workflow-engine`
|
|
78
78
|
- Architecture capability: `inspection-migration`
|
|
79
79
|
- Architecture module: `docs/architecture/modules/workflow-engine/inspection-migration.md`
|
|
80
|
-
- Last architecture event: 2026-07-
|
|
81
|
-
- Last changed path: `
|
|
80
|
+
- Last architecture event: 2026-07-03T14:07:48+0800
|
|
81
|
+
- Last changed path: `scripts/inspect-project-state.ts`
|
|
82
82
|
- Severity: high
|
|
83
|
-
- Change type:
|
|
83
|
+
- Change type: workflow-surface
|
|
84
84
|
- Module responsibility: Keep this block aligned with the local boundary described by surrounding human-owned context.
|
|
85
85
|
- Entrypoints: `scripts/inspect-project-state.ts`
|
|
86
86
|
- Allowed dependencies: Follow root `AGENTS.md` / `CLAUDE.md` and this local contract.
|
|
@@ -96,9 +96,17 @@ bun src/cli/index.ts adopt --repo . --dry-run
|
|
|
96
96
|
## Active Workstreams
|
|
97
97
|
|
|
98
98
|
- `tasks/workstreams/workflow-engine/inspection-migration/20260703-inspection-migration.md`
|
|
99
|
-
- status:
|
|
99
|
+
- status: completed
|
|
100
100
|
- current_slice: completed-20260703-architecture-closeout
|
|
101
101
|
- source_plan: (none)
|
|
102
|
+
- `tasks/workstreams/workflow-engine/inspection-migration/20260712-inspection-migration.md`
|
|
103
|
+
- status: completed
|
|
104
|
+
- current_slice: completed-20260712-repo-owned-agent-fleet
|
|
105
|
+
- source_plan: `plans/archive/plan-20260712-2053-repo-owned-agent-fleet.md`
|
|
106
|
+
- `tasks/workstreams/workflow-engine/inspection-migration/agent-fleet-specialists.md`
|
|
107
|
+
- status: completed
|
|
108
|
+
- current_slice: completed-20260713-policy-seed
|
|
109
|
+
- source_plan: `plans/archive/plan-20260712-2215-agent-fleet-specialists.md`
|
|
102
110
|
|
|
103
111
|
## Current Session Projection
|
|
104
112
|
|
package/README.es.md
CHANGED
|
@@ -82,7 +82,7 @@ artifacts.
|
|
|
82
82
|
## Novedades
|
|
83
83
|
|
|
84
84
|
Las notas de versión viven en [`docs/CHANGELOG.md`](docs/CHANGELOG.md). La línea
|
|
85
|
-
actual es `0.11.
|
|
85
|
+
actual es `0.11.2`.
|
|
86
86
|
|
|
87
87
|
## Cómo funciona
|
|
88
88
|
|
|
@@ -413,8 +413,8 @@ Guards habituales:
|
|
|
413
413
|
|
|
414
414
|
## Release actual
|
|
415
415
|
|
|
416
|
-
- npm package: `repo-harness@0.11.
|
|
417
|
-
- Generated workflow stamp: `repo-harness@0.11.
|
|
416
|
+
- npm package: `repo-harness@0.11.2`
|
|
417
|
+
- Generated workflow stamp: `repo-harness@0.11.2+template@0.11.2`
|
|
418
418
|
- GitHub repository: `Ancienttwo/repo-harness`
|
|
419
419
|
- Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
420
420
|
|
package/README.fr.md
CHANGED
|
@@ -82,7 +82,7 @@ l'emportent.
|
|
|
82
82
|
## Nouveautés
|
|
83
83
|
|
|
84
84
|
Les notes de version vivent dans [`docs/CHANGELOG.md`](docs/CHANGELOG.md). La
|
|
85
|
-
ligne actuelle est `0.11.
|
|
85
|
+
ligne actuelle est `0.11.2`.
|
|
86
86
|
|
|
87
87
|
## Comment ça marche
|
|
88
88
|
|
|
@@ -414,8 +414,8 @@ Guards courants :
|
|
|
414
414
|
|
|
415
415
|
## Release actuelle
|
|
416
416
|
|
|
417
|
-
- npm package : `repo-harness@0.11.
|
|
418
|
-
- Generated workflow stamp : `repo-harness@0.11.
|
|
417
|
+
- npm package : `repo-harness@0.11.2`
|
|
418
|
+
- Generated workflow stamp : `repo-harness@0.11.2+template@0.11.2`
|
|
419
419
|
- GitHub repository : `Ancienttwo/repo-harness`
|
|
420
420
|
- Release history : [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
421
421
|
|
package/README.ja.md
CHANGED
|
@@ -71,7 +71,7 @@ review、checks、handoff と食い違う場合は、source artifacts を優先
|
|
|
71
71
|
## What's New
|
|
72
72
|
|
|
73
73
|
リリースノートは [`docs/CHANGELOG.md`](docs/CHANGELOG.md) にあります。現在の
|
|
74
|
-
ラインは `0.11.
|
|
74
|
+
ラインは `0.11.2` です。
|
|
75
75
|
|
|
76
76
|
## 仕組み
|
|
77
77
|
|
|
@@ -389,8 +389,8 @@ hook がブロックしたときは、まず terminal の構造化された出
|
|
|
389
389
|
|
|
390
390
|
## 現在の Release
|
|
391
391
|
|
|
392
|
-
- npm package:`repo-harness@0.11.
|
|
393
|
-
- Generated workflow stamp:`repo-harness@0.11.
|
|
392
|
+
- npm package:`repo-harness@0.11.2`
|
|
393
|
+
- Generated workflow stamp:`repo-harness@0.11.2+template@0.11.2`
|
|
394
394
|
- GitHub repository:`Ancienttwo/repo-harness`
|
|
395
395
|
- Release history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
396
396
|
|
package/README.md
CHANGED
|
@@ -88,7 +88,7 @@ active plan, contract, review, checks, or handoff, the source artifacts win.
|
|
|
88
88
|
## What's New
|
|
89
89
|
|
|
90
90
|
Release notes live in [`docs/CHANGELOG.md`](docs/CHANGELOG.md). The current line
|
|
91
|
-
is `0.11.
|
|
91
|
+
is `0.11.2`.
|
|
92
92
|
|
|
93
93
|
## How It Works
|
|
94
94
|
|
|
@@ -279,18 +279,21 @@ npx -y repo-harness@latest install
|
|
|
279
279
|
### 2. Bootstrap the host runtime once
|
|
280
280
|
|
|
281
281
|
```bash
|
|
282
|
-
repo-harness install
|
|
282
|
+
repo-harness install
|
|
283
283
|
```
|
|
284
284
|
|
|
285
285
|
`install` is the first-run global bootstrap path. It installs the current npm
|
|
286
286
|
package as the global CLI, refreshes repo-harness skill aliases, installs
|
|
287
|
-
user-level hook adapters, and records an explicit install profile.
|
|
288
|
-
is
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
`--
|
|
293
|
-
|
|
287
|
+
user-level hook adapters, and records an explicit install profile. The profile
|
|
288
|
+
vocabulary is exactly `minimal|full`: `full` is the default and projects all 11
|
|
289
|
+
Codex routes plus planning, agent-fleet, verifier, cross-model, and release
|
|
290
|
+
surfaces; explicit `--profile minimal` projects the bounded 7-route baseline.
|
|
291
|
+
The retired 5-route tier is not available. The command is idempotent.
|
|
292
|
+
`--dry-run --json` lists components to install, skip, and remove; `--state
|
|
293
|
+
--json` reads the effective installed state; `--rollback` restores the previous
|
|
294
|
+
protocol-2 profile transaction. A protocol-1 state must be replaced explicitly
|
|
295
|
+
with `--migrate-profile-state --profile minimal|full`; normal reads never
|
|
296
|
+
reinterpret its old `minimal` meaning. See
|
|
294
297
|
[`docs/reference-configs/install-profiles.md`](docs/reference-configs/install-profiles.md).
|
|
295
298
|
|
|
296
299
|
It does not apply repo-local workflow files to the current directory.
|
|
@@ -635,8 +638,8 @@ Most common guards:
|
|
|
635
638
|
|
|
636
639
|
## Current Release
|
|
637
640
|
|
|
638
|
-
- npm package: `repo-harness@0.11.
|
|
639
|
-
- Generated workflow stamp: `repo-harness@0.11.
|
|
641
|
+
- npm package: `repo-harness@0.11.2`
|
|
642
|
+
- Generated workflow stamp: `repo-harness@0.11.2+template@0.11.2`
|
|
640
643
|
- GitHub repository: `Ancienttwo/repo-harness`
|
|
641
644
|
- Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
642
645
|
|
|
@@ -695,13 +698,13 @@ execution:
|
|
|
695
698
|
- Release: `repo-harness-ship`
|
|
696
699
|
- Architecture: `repo-harness-architecture`
|
|
697
700
|
- Cross-model review: `repo-harness-cross-review` (host-aware Claude/Codex
|
|
698
|
-
provider modes; installed on both hosts for the
|
|
701
|
+
provider modes; installed on both hosts for the full profile)
|
|
699
702
|
- Exact-candidate final gate: `merge-gate` (classification-only row in the
|
|
700
|
-
|
|
703
|
+
full-profile discovery matrix; repo-harness ships no merge-gate Skill —
|
|
701
704
|
see [external tooling](docs/reference-configs/external-tooling.md))
|
|
702
705
|
- ChatGPT integration: `repo-harness-chatgpt` (Oracle browser/GPT Pro consult
|
|
703
706
|
and continuation, MCP Connector setup, bridge handoff, and read-back
|
|
704
|
-
evidence; explicit setup only, never implied by
|
|
707
|
+
evidence; explicit setup only, never implied by either install profile)
|
|
705
708
|
|
|
706
709
|
The planning chain is intentionally layered:
|
|
707
710
|
|
package/README.zh-CN.md
CHANGED
|
@@ -71,7 +71,7 @@ review、checks 或 handoff 冲突,以 source artifacts 为准。
|
|
|
71
71
|
|
|
72
72
|
## What's New
|
|
73
73
|
|
|
74
|
-
Release notes 见 [`docs/CHANGELOG.md`](docs/CHANGELOG.md),当前版本线是 `0.11.
|
|
74
|
+
Release notes 见 [`docs/CHANGELOG.md`](docs/CHANGELOG.md),当前版本线是 `0.11.2`。
|
|
75
75
|
|
|
76
76
|
## 工作原理
|
|
77
77
|
|
|
@@ -449,8 +449,8 @@ hook block 工作时,先看 terminal 里的结构化输出。核心字段是
|
|
|
449
449
|
|
|
450
450
|
## 当前 Release
|
|
451
451
|
|
|
452
|
-
- npm package:`repo-harness@0.11.
|
|
453
|
-
- Generated workflow stamp:`repo-harness@0.11.
|
|
452
|
+
- npm package:`repo-harness@0.11.2`
|
|
453
|
+
- Generated workflow stamp:`repo-harness@0.11.2+template@0.11.2`
|
|
454
454
|
- GitHub repository:`Ancienttwo/repo-harness`
|
|
455
455
|
- Release history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
456
456
|
|
package/assets/AGENTS.md
CHANGED
|
@@ -56,16 +56,20 @@ Owns the workflow-engine-contract-assets capability boundary declared in .ai/con
|
|
|
56
56
|
## Active Workstreams
|
|
57
57
|
|
|
58
58
|
- `tasks/workstreams/workflow-engine/contract-assets/20260712-contract-assets.md`
|
|
59
|
-
- status:
|
|
60
|
-
- current_slice:
|
|
61
|
-
- source_plan:
|
|
59
|
+
- status: completed
|
|
60
|
+
- current_slice: completed-20260712-repo-owned-agent-fleet
|
|
61
|
+
- source_plan: `plans/archive/plan-20260712-2053-repo-owned-agent-fleet.md`
|
|
62
|
+
- `tasks/workstreams/workflow-engine/contract-assets/20260714-merge-gate-enforcement.md`
|
|
63
|
+
- status: completed
|
|
64
|
+
- current_slice: completed-20260715-merge-gate-enforcement
|
|
65
|
+
- source_plan: `plans/archive/plan-20260714-1713-merge-gate-enforcement.md`
|
|
62
66
|
- `tasks/workstreams/workflow-engine/contract-assets/agent-fleet-specialists.md`
|
|
63
67
|
- status: completed
|
|
64
68
|
- current_slice: completed-20260713-specialist-roles
|
|
65
|
-
- source_plan: plans/plan-20260712-2215-agent-fleet-specialists.md
|
|
69
|
+
- source_plan: `plans/archive/plan-20260712-2215-agent-fleet-specialists.md`
|
|
66
70
|
- `tasks/workstreams/workflow-engine/contract-assets/cleanup-script-policy.md`
|
|
67
71
|
- status: completed
|
|
68
|
-
- current_slice:
|
|
72
|
+
- current_slice: completed-20260529-cleanup-script-policy
|
|
69
73
|
- source_plan: (none)
|
|
70
74
|
|
|
71
75
|
## Current Session Projection
|
package/assets/CLAUDE.md
CHANGED
|
@@ -56,16 +56,20 @@ Owns the workflow-engine-contract-assets capability boundary declared in .ai/con
|
|
|
56
56
|
## Active Workstreams
|
|
57
57
|
|
|
58
58
|
- `tasks/workstreams/workflow-engine/contract-assets/20260712-contract-assets.md`
|
|
59
|
-
- status:
|
|
60
|
-
- current_slice:
|
|
61
|
-
- source_plan:
|
|
59
|
+
- status: completed
|
|
60
|
+
- current_slice: completed-20260712-repo-owned-agent-fleet
|
|
61
|
+
- source_plan: `plans/archive/plan-20260712-2053-repo-owned-agent-fleet.md`
|
|
62
|
+
- `tasks/workstreams/workflow-engine/contract-assets/20260714-merge-gate-enforcement.md`
|
|
63
|
+
- status: completed
|
|
64
|
+
- current_slice: completed-20260715-merge-gate-enforcement
|
|
65
|
+
- source_plan: `plans/archive/plan-20260714-1713-merge-gate-enforcement.md`
|
|
62
66
|
- `tasks/workstreams/workflow-engine/contract-assets/agent-fleet-specialists.md`
|
|
63
67
|
- status: completed
|
|
64
68
|
- current_slice: completed-20260713-specialist-roles
|
|
65
|
-
- source_plan: plans/plan-20260712-2215-agent-fleet-specialists.md
|
|
69
|
+
- source_plan: `plans/archive/plan-20260712-2215-agent-fleet-specialists.md`
|
|
66
70
|
- `tasks/workstreams/workflow-engine/contract-assets/cleanup-script-policy.md`
|
|
67
71
|
- status: completed
|
|
68
|
-
- current_slice:
|
|
72
|
+
- current_slice: completed-20260529-cleanup-script-policy
|
|
69
73
|
- source_plan: (none)
|
|
70
74
|
|
|
71
75
|
## Current Session Projection
|
|
@@ -46,6 +46,62 @@ workflow_policy_get() {
|
|
|
46
46
|
printf '%s' "$default_value"
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
# Projects lifecycle roles from the single policy-owned ordered status array.
|
|
50
|
+
# The anchors carry semantics; every projected value must be a member of the
|
|
51
|
+
# same array and the lifecycle order must remain coherent or the projection
|
|
52
|
+
# fails closed.
|
|
53
|
+
workflow_plan_status_projection() {
|
|
54
|
+
local projection="$1"
|
|
55
|
+
local policy_file
|
|
56
|
+
|
|
57
|
+
policy_file="$(workflow_policy_file)"
|
|
58
|
+
[[ -f "$policy_file" ]] || return 1
|
|
59
|
+
command -v jq >/dev/null 2>&1 || return 1
|
|
60
|
+
jq -er --arg projection "$projection" '
|
|
61
|
+
.active_plan as $active
|
|
62
|
+
| $active.statuses as $statuses
|
|
63
|
+
| $active.lifecycle as $lifecycle
|
|
64
|
+
| select(($statuses | type) == "array" and ($statuses | length) > 0)
|
|
65
|
+
| select(all($statuses[]; type == "string" and length > 0))
|
|
66
|
+
| select(($statuses | unique | length) == ($statuses | length))
|
|
67
|
+
| select(($lifecycle | type) == "object")
|
|
68
|
+
| $lifecycle.annotation_end as $annotation_end
|
|
69
|
+
| $lifecycle.approved as $approved
|
|
70
|
+
| $lifecycle.executing as $executing
|
|
71
|
+
| $lifecycle.terminal_start as $terminal_start
|
|
72
|
+
| select([$annotation_end, $approved, $executing, $terminal_start] | all(.[]; type == "string"))
|
|
73
|
+
| ($statuses | index($annotation_end)) as $annotation_index
|
|
74
|
+
| ($statuses | index($approved)) as $approved_index
|
|
75
|
+
| ($statuses | index($executing)) as $executing_index
|
|
76
|
+
| ($statuses | index($terminal_start)) as $terminal_index
|
|
77
|
+
| select(
|
|
78
|
+
$annotation_index != null and $annotation_index >= 1
|
|
79
|
+
and $approved_index == ($annotation_index + 1)
|
|
80
|
+
and $executing_index == ($approved_index + 1)
|
|
81
|
+
and $terminal_index > $executing_index
|
|
82
|
+
)
|
|
83
|
+
| if $projection == "known" then $statuses[]
|
|
84
|
+
elif $projection == "pre_approval" then $statuses[0:$approved_index][]
|
|
85
|
+
elif $projection == "terminal" then $statuses[$terminal_index:][]
|
|
86
|
+
elif $projection == "draft" then $statuses[0]
|
|
87
|
+
elif $projection == "annotation_end" then $annotation_end
|
|
88
|
+
elif $projection == "approved" then $approved
|
|
89
|
+
elif $projection == "executing" then $executing
|
|
90
|
+
else empty
|
|
91
|
+
end
|
|
92
|
+
' "$policy_file" 2>/dev/null
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
workflow_plan_status_is_known() {
|
|
96
|
+
local status="$1"
|
|
97
|
+
workflow_plan_status_projection known | grep -Fqx -- "$status"
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
workflow_plan_status_is_terminal() {
|
|
101
|
+
local status="$1"
|
|
102
|
+
workflow_plan_status_projection terminal | grep -Fqx -- "$status"
|
|
103
|
+
}
|
|
104
|
+
|
|
49
105
|
workflow_repo_relative_path() {
|
|
50
106
|
local value="$1"
|
|
51
107
|
local default_value="$2"
|
|
@@ -973,29 +1029,42 @@ validate_plan_transition() {
|
|
|
973
1029
|
local current_status="$1"
|
|
974
1030
|
local next_status="$2"
|
|
975
1031
|
local note_count="$3"
|
|
1032
|
+
local draft annotation_end approved executing
|
|
1033
|
+
|
|
1034
|
+
draft="$(workflow_plan_status_projection draft)" \
|
|
1035
|
+
&& annotation_end="$(workflow_plan_status_projection annotation_end)" \
|
|
1036
|
+
&& approved="$(workflow_plan_status_projection approved)" \
|
|
1037
|
+
&& executing="$(workflow_plan_status_projection executing)" || {
|
|
1038
|
+
echo "Plan-status authority is unavailable or malformed."
|
|
1039
|
+
return 1
|
|
1040
|
+
}
|
|
1041
|
+
if ! workflow_plan_status_is_known "$current_status" || ! workflow_plan_status_is_known "$next_status"; then
|
|
1042
|
+
echo "Unknown plan status transition ${current_status} -> ${next_status}."
|
|
1043
|
+
return 1
|
|
1044
|
+
fi
|
|
976
1045
|
|
|
977
1046
|
case "${current_status}:${next_status}" in
|
|
978
|
-
|
|
1047
|
+
"${draft}:${annotation_end}")
|
|
979
1048
|
if [[ "$note_count" -lt 1 ]]; then
|
|
980
|
-
echo "
|
|
1049
|
+
echo "${draft} -> ${annotation_end} requires at least one [NOTE]: annotation."
|
|
981
1050
|
return 1
|
|
982
1051
|
fi
|
|
983
1052
|
;;
|
|
984
|
-
|
|
1053
|
+
"${annotation_end}:${approved}")
|
|
985
1054
|
if [[ "$note_count" -gt 0 ]]; then
|
|
986
|
-
echo "
|
|
1055
|
+
echo "${annotation_end} -> ${approved} requires all [NOTE]: annotations to be resolved."
|
|
987
1056
|
return 1
|
|
988
1057
|
fi
|
|
989
1058
|
;;
|
|
990
|
-
|
|
991
|
-
echo "[PlanState] Rollback:
|
|
1059
|
+
"${annotation_end}:${draft}")
|
|
1060
|
+
echo "[PlanState] Rollback: ${annotation_end} -> ${draft} (plan direction rethink)."
|
|
992
1061
|
return 0
|
|
993
1062
|
;;
|
|
994
|
-
|
|
1063
|
+
"${draft}:${approved}"|"${draft}:${executing}"|"${annotation_end}:${executing}")
|
|
995
1064
|
echo "Status jump ${current_status} -> ${next_status} skips required workflow gates."
|
|
996
1065
|
return 1
|
|
997
1066
|
;;
|
|
998
|
-
|
|
1067
|
+
"${approved}:${draft}"|"${approved}:${annotation_end}"|"${executing}:${draft}"|"${executing}:${annotation_end}"|"${executing}:${approved}")
|
|
999
1068
|
echo "Backward transition ${current_status} -> ${next_status} is not allowed."
|
|
1000
1069
|
return 1
|
|
1001
1070
|
;;
|
|
@@ -34,7 +34,7 @@ root prompt concise; this file owns the detailed routing.
|
|
|
34
34
|
Use these canonical packages when the work is about installing, migrating,
|
|
35
35
|
repairing, planning, or verifying this repo-local harness. `assets/skill-commands/manifest.json`
|
|
36
36
|
is the runtime discovery authority for which profile installs which package;
|
|
37
|
-
see [external tooling](external-tooling.md) for the
|
|
37
|
+
see [external tooling](external-tooling.md) for the full-profile
|
|
38
38
|
cross-review/merge-gate rows.
|
|
39
39
|
|
|
40
40
|
| Work type | Command | Boundary |
|
|
@@ -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
|
|
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 |
|
|
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 |
|
|
@@ -52,12 +52,12 @@ host-aware during `repo-harness install`/`init` and explicit external-skill
|
|
|
52
52
|
refreshes: it installs into **both** `~/.claude/skills` (a Claude session
|
|
53
53
|
asking Codex for an independent review, via its Codex provider mode) and
|
|
54
54
|
`~/.codex/skills` (a Codex session asking Claude for a review, via its Claude
|
|
55
|
-
provider mode) for the
|
|
55
|
+
provider mode) for the full profile. `claude-plan` installs only into
|
|
56
56
|
`~/.codex/skills` (a Codex session using Claude's headless plan mode for a
|
|
57
57
|
plan consult on a mid-execution design fork) and is unaffected by this
|
|
58
|
-
package's host-aware installation.
|
|
59
|
-
|
|
60
|
-
the typed `AcceptanceReceipt`;
|
|
58
|
+
package's host-aware installation. These harness skills ship with the full
|
|
59
|
+
profile (the default for `init`) and provide the peer acceptance gate surface
|
|
60
|
+
for the typed `AcceptanceReceipt`; the review section is projection only.
|
|
61
61
|
|
|
62
62
|
The review scope is the current reviewable diff, not just committed branch
|
|
63
63
|
history: branch diff against the default base, staged changes, unstaged tracked
|
|
@@ -582,8 +582,29 @@ stale managed target can be deactivated.
|
|
|
582
582
|
|
|
583
583
|
The installer is **never-clobber by default**: an existing target file that
|
|
584
584
|
differs from the newly resolved content is reported as `drift` and left
|
|
585
|
-
untouched. Pass `--force` to overwrite drifted files.
|
|
586
|
-
|
|
585
|
+
untouched. Pass `--force` to overwrite drifted files.
|
|
586
|
+
|
|
587
|
+
An operator who intentionally owns a customized, complete fleet can acknowledge
|
|
588
|
+
the current bytes once:
|
|
589
|
+
|
|
590
|
+
```bash
|
|
591
|
+
repo-harness run install-agent-fleet --accept-user-managed
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
The acknowledgement validates all twelve target files before writing
|
|
595
|
+
`~/.repo-harness/agent-fleet-user-managed.json`. Claude files must have
|
|
596
|
+
well-formed frontmatter with the target role identity, model, effort, and body;
|
|
597
|
+
Codex files must be valid TOML with a pinned model, supported reasoning effort,
|
|
598
|
+
and developer instructions. Symlinks, missing files, malformed files, or
|
|
599
|
+
role-name mismatches fail closed without changing the receipt.
|
|
600
|
+
|
|
601
|
+
Only customized files are recorded, by absolute path and SHA-256. Later
|
|
602
|
+
installer and full-profile runs report those exact bytes as `user-managed`
|
|
603
|
+
and do not claim transaction ownership over them. Any subsequent byte change
|
|
604
|
+
invalidates the acknowledgement and returns to `drift` until the operator
|
|
605
|
+
reviews and accepts the new content. `--force` restores packaged content and
|
|
606
|
+
removes the user-managed receipt. Re-running with no packaged-source changes
|
|
607
|
+
reports packaged files as `up-to-date`.
|
|
587
608
|
|
|
588
609
|
### Readiness
|
|
589
610
|
|
|
@@ -596,7 +617,7 @@ the deterministic generation.
|
|
|
596
617
|
|
|
597
618
|
### Uninstall
|
|
598
619
|
|
|
599
|
-
There is no uninstall command. Removing the fleet means deleting the
|
|
620
|
+
There is no uninstall command. Removing the fleet means deleting the twelve
|
|
600
621
|
managed files by hand:
|
|
601
622
|
|
|
602
623
|
```text
|
|
@@ -604,10 +625,14 @@ managed files by hand:
|
|
|
604
625
|
~/.claude/agents/deep-reasoner.md
|
|
605
626
|
~/.claude/agents/fast-worker.md
|
|
606
627
|
~/.claude/agents/gatekeeper.md
|
|
628
|
+
~/.claude/agents/root-cause-prover.md
|
|
629
|
+
~/.claude/agents/harness-evaluator.md
|
|
607
630
|
~/.codex/agents/explorer.toml
|
|
608
631
|
~/.codex/agents/deep-reasoner.toml
|
|
609
632
|
~/.codex/agents/fast-worker.toml
|
|
610
633
|
~/.codex/agents/gatekeeper.toml
|
|
634
|
+
~/.codex/agents/root-cause-prover.toml
|
|
635
|
+
~/.codex/agents/harness-evaluator.toml
|
|
611
636
|
```
|
|
612
637
|
|
|
613
638
|
## Manual Brain Vault Export
|