repo-harness 0.2.4 → 0.4.0

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 (135) hide show
  1. package/AGENTS.md +8 -6
  2. package/CLAUDE.md +8 -6
  3. package/README.es.md +8 -9
  4. package/README.fr.md +8 -9
  5. package/README.ja.md +9 -9
  6. package/README.md +103 -70
  7. package/README.zh-CN.md +65 -43
  8. package/SKILL.md +8 -9
  9. package/assets/hooks/codex.hooks.template.json +9 -13
  10. package/assets/hooks/hook-input.sh +14 -2
  11. package/assets/hooks/lib/session-state.sh +4 -1
  12. package/assets/hooks/lib/workflow-state.sh +132 -19
  13. package/assets/hooks/post-bash.sh +6 -0
  14. package/assets/hooks/post-edit-guard.sh +59 -14
  15. package/assets/hooks/{context-pressure-hook.sh → post-tool-observer.sh} +100 -19
  16. package/assets/hooks/pre-edit-guard.sh +80 -0
  17. package/assets/hooks/prompt-guard.sh +455 -902
  18. package/assets/hooks/run-hook.sh +26 -26
  19. package/assets/hooks/session-start-context.sh +111 -4
  20. package/assets/hooks/settings.template.json +9 -13
  21. package/assets/partials/04-project-structure.partial.md +1 -1
  22. package/assets/partials/05-workflow.partial.md +3 -3
  23. package/assets/partials/07-footer.partial.md +2 -2
  24. package/assets/partials/08-orchestration.partial.md +2 -2
  25. package/assets/partials-agents/02-operating-mode.partial.md +3 -3
  26. package/assets/partials-agents/03-orchestration.partial.md +3 -3
  27. package/assets/partials-agents/04-task-protocol.partial.md +4 -4
  28. package/assets/partials-agents/08-deep-docs.partial.md +2 -2
  29. package/assets/reference-configs/agentic-development-flow.md +2 -1
  30. package/assets/reference-configs/external-tooling.md +2 -2
  31. package/assets/reference-configs/harness-overview.md +4 -2
  32. package/assets/reference-configs/heartbeat-triage.md +57 -0
  33. package/assets/reference-configs/hook-operations.md +33 -49
  34. package/assets/reference-configs/sprint-contracts.md +25 -0
  35. package/assets/skill-commands/manifest.json +7 -0
  36. package/assets/skill-commands/repo-harness-architecture/SKILL.md +2 -0
  37. package/assets/skill-commands/repo-harness-migrate/SKILL.md +1 -1
  38. package/assets/skill-commands/repo-harness-sprint/SKILL.md +39 -0
  39. package/assets/skill-version.json +9 -7
  40. package/assets/templates/contract.template.md +18 -0
  41. package/assets/templates/helpers/architecture-event.ts +373 -4
  42. package/assets/templates/helpers/architecture-queue.sh +647 -0
  43. package/assets/templates/helpers/archive-architecture-request.sh +40 -8
  44. package/assets/templates/helpers/archive-workflow.sh +49 -16
  45. package/assets/templates/helpers/capability-resolver.ts +35 -4
  46. package/assets/templates/helpers/capture-plan.sh +2 -2
  47. package/assets/templates/helpers/check-architecture-sync.sh +287 -0
  48. package/assets/templates/helpers/check-skill-version.ts +24 -5
  49. package/assets/templates/helpers/check-task-sync.sh +5 -2
  50. package/assets/templates/helpers/check-task-workflow.sh +127 -5
  51. package/assets/templates/helpers/codex-handoff-resume.sh +4 -4
  52. package/assets/templates/helpers/context-contract-sync.sh +23 -4
  53. package/assets/templates/helpers/contract-run.ts +402 -0
  54. package/assets/templates/helpers/contract-worktree.sh +66 -0
  55. package/assets/templates/helpers/ensure-task-workflow.sh +50 -31
  56. package/assets/templates/helpers/heartbeat-triage.sh +317 -0
  57. package/assets/templates/helpers/inspect-project-state.ts +2 -2
  58. package/assets/templates/helpers/migrate-project-template.sh +0 -3
  59. package/assets/templates/helpers/migrate-workflow-docs.ts +64 -31
  60. package/assets/templates/helpers/new-plan.sh +1 -1
  61. package/assets/templates/helpers/plan-to-todo.sh +21 -3
  62. package/assets/templates/helpers/refresh-current-status.sh +59 -1
  63. package/assets/templates/helpers/select-agent-context-blocks.sh +2 -2
  64. package/assets/templates/helpers/sprint-backlog.sh +815 -0
  65. package/assets/templates/helpers/sync-brain-docs.sh +74 -4
  66. package/assets/templates/helpers/workflow-contract.ts +1 -8
  67. package/assets/templates/implementation-notes.template.md +1 -1
  68. package/assets/templates/plan.template.md +1 -1
  69. package/assets/templates/sprint.template.md +66 -0
  70. package/assets/workflow-contract.v1.json +63 -10
  71. package/docs/reference-configs/agentic-development-flow.md +2 -1
  72. package/docs/reference-configs/external-tooling.md +2 -2
  73. package/docs/reference-configs/harness-overview.md +4 -2
  74. package/docs/reference-configs/heartbeat-triage.md +57 -0
  75. package/docs/reference-configs/hook-operations.md +33 -49
  76. package/docs/reference-configs/loop-engine-cutover-gate.md +39 -0
  77. package/docs/reference-configs/loop-engine-nl-decision-table.md +137 -0
  78. package/docs/reference-configs/sprint-contracts.md +25 -0
  79. package/package.json +2 -1
  80. package/scripts/architecture-event.ts +373 -4
  81. package/scripts/architecture-queue.sh +647 -0
  82. package/scripts/archive-architecture-request.sh +40 -8
  83. package/scripts/archive-workflow.sh +49 -16
  84. package/scripts/capability-resolver.ts +35 -4
  85. package/scripts/capture-plan.sh +2 -2
  86. package/scripts/check-architecture-sync.sh +287 -0
  87. package/scripts/check-npm-release.sh +1 -0
  88. package/scripts/check-skill-version.ts +24 -5
  89. package/scripts/check-task-sync.sh +5 -2
  90. package/scripts/check-task-workflow.sh +127 -5
  91. package/scripts/codex-handoff-resume.sh +4 -4
  92. package/scripts/context-contract-sync.sh +23 -4
  93. package/scripts/contract-run.ts +402 -0
  94. package/scripts/contract-worktree.sh +66 -0
  95. package/scripts/create-project-dirs.sh +8 -21
  96. package/scripts/ensure-task-workflow.sh +50 -31
  97. package/scripts/heartbeat-triage.sh +317 -0
  98. package/scripts/hook-dispatch-diet-report.ts +234 -0
  99. package/scripts/hook-shim.sh +60 -4
  100. package/scripts/init-project.sh +8 -28
  101. package/scripts/inspect-project-state.ts +2 -2
  102. package/scripts/lib/project-init-lib.sh +103 -45
  103. package/scripts/loop-engine-cutover-gate.ts +324 -0
  104. package/scripts/migrate-project-template.sh +35 -36
  105. package/scripts/migrate-workflow-docs.ts +64 -31
  106. package/scripts/new-plan.sh +1 -1
  107. package/scripts/plan-to-todo.sh +21 -3
  108. package/scripts/refresh-current-status.sh +59 -1
  109. package/scripts/repo-harness.sh +152 -20
  110. package/scripts/route-nl-vs-ts-eval.ts +679 -0
  111. package/scripts/select-agent-context-blocks.sh +2 -2
  112. package/scripts/sprint-backlog.sh +815 -0
  113. package/scripts/sync-brain-docs.sh +74 -4
  114. package/scripts/sync-codex-installed-copies.sh +9 -64
  115. package/scripts/workflow-contract.ts +1 -8
  116. package/src/cli/commands/doctor.ts +52 -0
  117. package/src/cli/commands/hook.ts +2 -1
  118. package/src/cli/commands/prompt-guard-decision.ts +150 -0
  119. package/src/cli/commands/status.ts +1 -1
  120. package/src/cli/hook/prompt-intents.ts +534 -0
  121. package/src/cli/hook/route-registry.ts +1 -1
  122. package/src/cli/hook/runtime.ts +98 -6
  123. package/src/cli/hook/state-snapshot.ts +388 -0
  124. package/src/cli/hook-entry.ts +10 -2
  125. package/src/cli/index.ts +8 -10
  126. package/src/cli/installer/managed-entries.ts +2 -1
  127. package/assets/hooks/atomic-commit.sh +0 -78
  128. package/assets/hooks/atomic-pending.sh +0 -22
  129. package/assets/hooks/finalize-handoff.sh +0 -12
  130. package/assets/hooks/pre-code-change.sh +0 -33
  131. package/assets/hooks/tdd-guard-hook.sh +0 -78
  132. package/assets/hooks/trace-event.sh +0 -76
  133. package/assets/templates/helpers/architecture-drift.sh +0 -435
  134. package/scripts/architecture-drift.sh +0 -435
  135. package/scripts/check-versions.ts +0 -488
package/AGENTS.md CHANGED
@@ -1,15 +1,16 @@
1
1
  # repo-harness AGENTS.md
2
2
 
3
- This repository self-hosts the `repo-harness` contract, formerly `repo-harness-skill` and `project-initializer`. Claude and Codex should follow the same repo-local workflow surface.
3
+ This repository self-hosts the `repo-harness` contract; the former `repo-harness-skill` and `project-initializer` names are retired and removed by installed-copy sync. Claude and Codex should follow the same repo-local workflow surface.
4
4
 
5
5
  ## Canonical Workflow Files
6
6
 
7
7
  - `tasks/current.md` for the tracked current-status snapshot derived from workflow artifacts
8
8
  - `tasks/todo.md` for deferred medium/long-term goals, not active execution checklists
9
+ - `tasks/sprints/` for program-level sprint PRDs and ordered backlogs, operated by `scripts/sprint-backlog.sh` (Sprint = program layer; task contracts stay the execution slices)
9
10
  - `.ai/context/capabilities.json` for the capability registry and longest-prefix context boundaries
10
11
  - `tasks/workstreams/` for capability long-running workstreams that project durable progress into local contracts
11
12
  - `tasks/lessons.md` for correction-derived rules
12
- - `tasks/research.md` for deep repo knowledge
13
+ - `docs/researches/` for deep repo knowledge
13
14
  - `tasks/notes/` for task-local implementation decisions, deviations, tradeoffs, and open questions
14
15
  - `plans/` for timestamped plans, with `plans/archive/` for history
15
16
  - `.ai/harness/workflow-contract.json` for the installed workflow contract manifest
@@ -22,14 +23,14 @@ This repository self-hosts the `repo-harness` contract, formerly `repo-harness-s
22
23
 
23
24
  - Sync `tasks/` whenever substantive repo changes are made.
24
25
  - Use `tasks/notes/<plan-stem>.notes.md` only for non-obvious slice decisions, deviations, tradeoffs, and open questions; `<plan-stem>` is the active plan filename without `plan-` and `.md` (for example `20260531-0045-governance-workflow`). Do not use notes as durable memory or a task log, and archive/promote them deliberately when the slice closes.
25
- - Treat `.ai/hooks/` as the shared repo-local hook implementation; user-level `~/.claude/settings.json` and `~/.codex/hooks.json` are the host adapters.
26
+ - Treat hook execution as central-first: trusted repos run `~/.repo-harness/hooks/` (bash shim) or the packaged CLI copy; this self-host repo pins `"hook_source": "repo"` in `.ai/harness/policy.json` so `.ai/hooks/` stays the live development runtime, with `assets/hooks/` as the product source mirrored on install. User-level `~/.claude/settings.json` and `~/.codex/hooks.json` are the host adapters.
26
27
  - Keep the umbrella hierarchy explicit: architecture owns stable truth, capability contracts own local agent context, `tasks/workstreams/<domain>/<capability>/` owns durable progress, and `tasks/todo.md` owns only deferred medium/long-term goals with tradeoff and revisit trigger.
27
28
  - Treat `.ai/context/capabilities.json` as the source of truth for capability prefixes; `agent-context-blocks.txt` and nested agent files are compatibility inputs only.
28
- - Keep architecture drift handling split: `architecture-drift.sh` writes architecture requests/events, `workstream-sync.sh` maintains durable capability workstreams, and `context-contract-sync.sh` only updates controlled local `CLAUDE.md`/`AGENTS.md` architecture blocks.
29
+ - Keep architecture drift handling split: `architecture-queue.sh` writes architecture requests/events, `workstream-sync.sh` maintains durable capability workstreams, and `context-contract-sync.sh` only updates controlled local `CLAUDE.md`/`AGENTS.md` architecture blocks.
29
30
  - Keep `assets/workflow-contract.v1.json` and `.ai/harness/workflow-contract.json` in sync.
30
31
  - Keep `CLAUDE.md` and `AGENTS.md` short; put detailed guidance in `docs/reference-configs/`.
31
32
  - Treat Codex auto-compact as a fallback only; use `.ai/harness/handoff/current.md` and `.ai/harness/handoff/resume.md` for long-task rollover.
32
- - Treat `_ref/` as an occasional ignored external reference checkout cache, not a commit surface or daily workflow. Agents may read or refresh it for comparison; when it influences a decision, cite the source repo plus commit/tag and path in `tasks/notes/` or `tasks/research.md`.
33
+ - Treat `_ref/` as an occasional ignored external reference checkout cache, not a commit surface or daily workflow. Agents may read or refresh it for comparison; when it influences a decision, cite the source repo plus commit/tag and path in `tasks/notes/` or `docs/researches/`.
33
34
  - Treat `deploy/` as the trackable deployment and operations surface for runbooks, submission materials, release checklists, helper scripts, ordered SQL files under `deploy/sql/`, and env examples.
34
35
  - Treat `_ops/` as ignored local operations state for secrets, real env files, provider state, artifacts, logs, and scratch files; do not commit or agent-edit `_ops/*`.
35
36
  - Treat contract-level task execution as worktree-first: `scripts/plan-to-todo.sh --plan <approved-plan>` starts `scripts/contract-worktree.sh start --plan <approved-plan>` when policy enables it, and completed blocks finish through Waza `/check` plus `scripts/contract-worktree.sh finish`.
@@ -49,6 +50,7 @@ This repository self-hosts the `repo-harness` contract, formerly `repo-harness-s
49
50
  ```bash
50
51
  bun test
51
52
  bash scripts/check-deploy-sql-order.sh
53
+ bash scripts/check-architecture-sync.sh
52
54
  bash scripts/check-task-sync.sh
53
55
  bash scripts/check-task-workflow.sh --strict
54
56
  bun scripts/inspect-project-state.ts --repo . --format text
@@ -78,7 +80,7 @@ bash scripts/migrate-project-template.sh --repo . --dry-run
78
80
  - Latest snapshot: `(none yet)`
79
81
  - Semantic diagram source: `docs/architecture/modules/runtime-harness/hook-adapters.md`
80
82
  - Latest human diagram: `(none yet)`
81
- - Pending architecture request: `docs/architecture/requests/20260529-094446-ai-hooks-ai-hooks-session-start-context-sh.md`
83
+ - Pending architecture request: `(none)`
82
84
 
83
85
  ## Active Workstreams
84
86
 
package/CLAUDE.md CHANGED
@@ -1,15 +1,16 @@
1
1
  # repo-harness AGENTS.md
2
2
 
3
- This repository self-hosts the `repo-harness` contract, formerly `repo-harness-skill` and `project-initializer`. Claude and Codex should follow the same repo-local workflow surface.
3
+ This repository self-hosts the `repo-harness` contract; the former `repo-harness-skill` and `project-initializer` names are retired and removed by installed-copy sync. Claude and Codex should follow the same repo-local workflow surface.
4
4
 
5
5
  ## Canonical Workflow Files
6
6
 
7
7
  - `tasks/current.md` for the tracked current-status snapshot derived from workflow artifacts
8
8
  - `tasks/todo.md` for deferred medium/long-term goals, not active execution checklists
9
+ - `tasks/sprints/` for program-level sprint PRDs and ordered backlogs, operated by `scripts/sprint-backlog.sh` (Sprint = program layer; task contracts stay the execution slices)
9
10
  - `.ai/context/capabilities.json` for the capability registry and longest-prefix context boundaries
10
11
  - `tasks/workstreams/` for capability long-running workstreams that project durable progress into local contracts
11
12
  - `tasks/lessons.md` for correction-derived rules
12
- - `tasks/research.md` for deep repo knowledge
13
+ - `docs/researches/` for deep repo knowledge
13
14
  - `tasks/notes/` for task-local implementation decisions, deviations, tradeoffs, and open questions
14
15
  - `plans/` for timestamped plans, with `plans/archive/` for history
15
16
  - `.ai/harness/workflow-contract.json` for the installed workflow contract manifest
@@ -22,14 +23,14 @@ This repository self-hosts the `repo-harness` contract, formerly `repo-harness-s
22
23
 
23
24
  - Sync `tasks/` whenever substantive repo changes are made.
24
25
  - Use `tasks/notes/<plan-stem>.notes.md` only for non-obvious slice decisions, deviations, tradeoffs, and open questions; `<plan-stem>` is the active plan filename without `plan-` and `.md` (for example `20260531-0045-governance-workflow`). Do not use notes as durable memory or a task log, and archive/promote them deliberately when the slice closes.
25
- - Treat `.ai/hooks/` as the shared repo-local hook implementation; user-level `~/.claude/settings.json` and `~/.codex/hooks.json` are the host adapters.
26
+ - Treat hook execution as central-first: trusted repos run `~/.repo-harness/hooks/` (bash shim) or the packaged CLI copy; this self-host repo pins `"hook_source": "repo"` in `.ai/harness/policy.json` so `.ai/hooks/` stays the live development runtime, with `assets/hooks/` as the product source mirrored on install. User-level `~/.claude/settings.json` and `~/.codex/hooks.json` are the host adapters.
26
27
  - Keep the umbrella hierarchy explicit: architecture owns stable truth, capability contracts own local agent context, `tasks/workstreams/<domain>/<capability>/` owns durable progress, and `tasks/todo.md` owns only deferred medium/long-term goals with tradeoff and revisit trigger.
27
28
  - Treat `.ai/context/capabilities.json` as the source of truth for capability prefixes; `agent-context-blocks.txt` and nested agent files are compatibility inputs only.
28
- - Keep architecture drift handling split: `architecture-drift.sh` writes architecture requests/events, `workstream-sync.sh` maintains durable capability workstreams, and `context-contract-sync.sh` only updates controlled local `CLAUDE.md`/`AGENTS.md` architecture blocks.
29
+ - Keep architecture drift handling split: `architecture-queue.sh` writes architecture requests/events, `workstream-sync.sh` maintains durable capability workstreams, and `context-contract-sync.sh` only updates controlled local `CLAUDE.md`/`AGENTS.md` architecture blocks.
29
30
  - Keep `assets/workflow-contract.v1.json` and `.ai/harness/workflow-contract.json` in sync.
30
31
  - Keep `CLAUDE.md` and `AGENTS.md` short; put detailed guidance in `docs/reference-configs/`.
31
32
  - Treat Codex auto-compact as a fallback only; use `.ai/harness/handoff/current.md` and `.ai/harness/handoff/resume.md` for long-task rollover.
32
- - Treat `_ref/` as an occasional ignored external reference checkout cache, not a commit surface or daily workflow. Agents may read or refresh it for comparison; when it influences a decision, cite the source repo plus commit/tag and path in `tasks/notes/` or `tasks/research.md`.
33
+ - Treat `_ref/` as an occasional ignored external reference checkout cache, not a commit surface or daily workflow. Agents may read or refresh it for comparison; when it influences a decision, cite the source repo plus commit/tag and path in `tasks/notes/` or `docs/researches/`.
33
34
  - Treat `deploy/` as the trackable deployment and operations surface for runbooks, submission materials, release checklists, helper scripts, ordered SQL files under `deploy/sql/`, and env examples.
34
35
  - Treat `_ops/` as ignored local operations state for secrets, real env files, provider state, artifacts, logs, and scratch files; do not commit or agent-edit `_ops/*`.
35
36
  - Treat contract-level task execution as worktree-first: `scripts/plan-to-todo.sh --plan <approved-plan>` starts `scripts/contract-worktree.sh start --plan <approved-plan>` when policy enables it, and completed blocks finish through Waza `/check` plus `scripts/contract-worktree.sh finish`.
@@ -49,6 +50,7 @@ This repository self-hosts the `repo-harness` contract, formerly `repo-harness-s
49
50
  ```bash
50
51
  bun test
51
52
  bash scripts/check-deploy-sql-order.sh
53
+ bash scripts/check-architecture-sync.sh
52
54
  bash scripts/check-task-sync.sh
53
55
  bash scripts/check-task-workflow.sh --strict
54
56
  bun scripts/inspect-project-state.ts --repo . --format text
@@ -78,7 +80,7 @@ bash scripts/migrate-project-template.sh --repo . --dry-run
78
80
  - Latest snapshot: `(none yet)`
79
81
  - Semantic diagram source: `docs/architecture/modules/runtime-harness/hook-adapters.md`
80
82
  - Latest human diagram: `(none yet)`
81
- - Pending architecture request: `docs/architecture/requests/20260529-094446-ai-hooks-ai-hooks-session-start-context-sh.md`
83
+ - Pending architecture request: `(none)`
82
84
 
83
85
  ## Active Workstreams
84
86
 
package/README.es.md CHANGED
@@ -186,8 +186,8 @@ adoptar este workflow.
186
186
  npx -y repo-harness init
187
187
  ```
188
188
 
189
- La npm package release line es ahora `0.2.x`; el workflow compatibility model line
190
- generado se rastrea por separado como `5.x`. `repo-harness init` es el bootstrap
189
+ La npm package release line y el generated workflow stamp usan ahora la misma
190
+ línea `0.4.x`. `repo-harness init` es el bootstrap
191
191
  global y `repo-harness update` es el refresco repo-local. `repo-harness init`
192
192
  configura el CLI, los hook adapters de nivel usuario, Waza, Mermaid, el brain
193
193
  root y CodeGraph MCP; el viejo camino Claude plugin `scripts/setup-plugins.sh`
@@ -204,14 +204,13 @@ bun src/cli/index.ts init
204
204
  Modelo de rutas locales:
205
205
 
206
206
  - Repositorio fuente: `~/Projects/repo-harness`
207
- - Claude skill aliases: `~/.claude/skills/repo-harness`, `~/.claude/skills/repo-harness-skill`
207
+ - Claude skill alias: `~/.claude/skills/repo-harness`
208
208
  - Codex discoverable skill alias: `~/.codex/skills/repo-harness`
209
- - Codex compatibility fallback alias: `~/.codex/skills/repo-harness-skill`
210
209
 
211
210
  `~/Projects/repo-harness` es la única source of truth editable. Las rutas locales
212
211
  de Claude/Codex son runtime entrypoints respaldados por symlinks. Los directorios
213
- del runtime `project-initializer` ya retirado los limpia
214
- `scripts/sync-codex-installed-copies.sh`.
212
+ de los runtimes ya retirados `repo-harness-skill` y `project-initializer` los
213
+ elimina `scripts/sync-codex-installed-copies.sh`.
215
214
 
216
215
  ### Prerrequisitos mínimos
217
216
 
@@ -326,12 +325,12 @@ Guards habituales:
326
325
 
327
326
  ## Release actual
328
327
 
329
- - npm package: `repo-harness@0.2.4`
330
- - Generated workflow compatibility: `5.2.3`
328
+ - npm package: `repo-harness@0.4.0`
329
+ - Generated workflow stamp: `repo-harness@0.4.0+template@0.4.0`
331
330
  - GitHub repository: `Ancienttwo/repo-harness`
332
331
  - Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
333
332
 
334
- ## Current Model (5.2.3)
333
+ ## Current Model
335
334
 
336
335
  - El question flow usa **12 grouped decision points**, infiriendo primero los harness defaults.
337
336
  - El plan menu está por capas: los **Core Plans (A-F)** primero, los **Custom Presets (G-K)** solo cuando hace falta.
package/README.fr.md CHANGED
@@ -190,8 +190,8 @@ de ce workflow.
190
190
  npx -y repo-harness init
191
191
  ```
192
192
 
193
- La release line du package npm est désormais `0.2.x` ; la generated workflow
194
- compatibility model line est suivie séparément en `5.x`. `repo-harness init`
193
+ La release line du package npm et le generated workflow stamp utilisent
194
+ désormais la même ligne `0.4.x`. `repo-harness init`
195
195
  sert au bootstrap global et `repo-harness update` sert au rafraîchissement
196
196
  repo-local. `repo-harness init` configure le CLI, les hook adapters de niveau
197
197
  utilisateur, Waza, Mermaid, le brain root et CodeGraph MCP ; l'ancien chemin
@@ -208,14 +208,13 @@ bun src/cli/index.ts init
208
208
  Modèle de chemins locaux :
209
209
 
210
210
  - Dépôt source : `~/Projects/repo-harness`
211
- - Claude skill aliases : `~/.claude/skills/repo-harness`, `~/.claude/skills/repo-harness-skill`
211
+ - Claude skill alias : `~/.claude/skills/repo-harness`
212
212
  - Codex discoverable skill alias : `~/.codex/skills/repo-harness`
213
- - Codex compatibility fallback alias : `~/.codex/skills/repo-harness-skill`
214
213
 
215
214
  `~/Projects/repo-harness` est l'unique source of truth éditable. Les chemins
216
215
  Claude/Codex locaux sont des runtime entrypoints adossés à des symlinks. Les
217
- répertoires du runtime `project-initializer` retiré sont nettoyés par
218
- `scripts/sync-codex-installed-copies.sh`.
216
+ répertoires des runtimes retirés `repo-harness-skill` et `project-initializer`
217
+ sont supprimés par `scripts/sync-codex-installed-copies.sh`.
219
218
 
220
219
  ### Prérequis minimaux
221
220
 
@@ -330,12 +329,12 @@ Guards courants :
330
329
 
331
330
  ## Release actuelle
332
331
 
333
- - npm package : `repo-harness@0.2.4`
334
- - Generated workflow compatibility : `5.2.3`
332
+ - npm package : `repo-harness@0.4.0`
333
+ - Generated workflow stamp : `repo-harness@0.4.0+template@0.4.0`
335
334
  - GitHub repository : `Ancienttwo/repo-harness`
336
335
  - Release history : [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
337
336
 
338
- ## Current Model (5.2.3)
337
+ ## Current Model
339
338
 
340
339
  - Le question flow utilise **12 grouped decision points**, en inférant d'abord les harness defaults.
341
340
  - Le plan menu est hiérarchisé : **Core Plans (A-F)** en priorité, **Custom Presets (G-K)** uniquement quand c'est nécessaire.
package/README.ja.md CHANGED
@@ -159,8 +159,8 @@ flowchart TD
159
159
  npx -y repo-harness init
160
160
  ```
161
161
 
162
- npm package release line は現在 `0.2.x` です。生成される workflow compatibility model line
163
- 別途 `5.x` として追跡されます。`repo-harness init` は global bootstrap、`repo-harness update` は
162
+ npm package generated workflow stamp は現在同じ `0.4.x` release line を使います。
163
+ `repo-harness init` は global bootstrap、`repo-harness update` は
164
164
  repo-local refresh です。`repo-harness init` は CLI、user-level hook adapters、Waza、Mermaid、
165
165
  brain root、CodeGraph MCP を設定し、退役した `scripts/setup-plugins.sh` の Claude plugin path は使いません。
166
166
 
@@ -175,13 +175,13 @@ bun src/cli/index.ts init
175
175
  ローカルパスのモデル:
176
176
 
177
177
  - ソースリポジトリ:`~/Projects/repo-harness`
178
- - Claude skill aliases:`~/.claude/skills/repo-harness`、`~/.claude/skills/repo-harness-skill`
178
+ - Claude skill alias:`~/.claude/skills/repo-harness`
179
179
  - Codex discoverable skill alias:`~/.codex/skills/repo-harness`
180
- - Codex compatibility fallback alias:`~/.codex/skills/repo-harness-skill`
181
180
 
182
181
  `~/Projects/repo-harness` が唯一の編集可能な source of truth です。ローカルの Claude/Codex パスは
183
- symlink に裏打ちされた runtime entrypoint です。退役した `project-initializer` runtime ディレクトリは
184
- `scripts/sync-codex-installed-copies.sh` によって整理されます。
182
+ symlink に裏打ちされた runtime entrypoint です。退役した `repo-harness-skill`
183
+ `project-initializer` の runtime ディレクトリは
184
+ `scripts/sync-codex-installed-copies.sh` によって削除されます。
185
185
 
186
186
  ### 最小の前提条件
187
187
 
@@ -293,12 +293,12 @@ hook がブロックしたときは、まず terminal の構造化された出
293
293
 
294
294
  ## 現在の Release
295
295
 
296
- - npm package:`repo-harness@0.2.4`
297
- - Generated workflow compatibility:`5.2.3`
296
+ - npm package:`repo-harness@0.4.0`
297
+ - Generated workflow stamp:`repo-harness@0.4.0+template@0.4.0`
298
298
  - GitHub repository:`Ancienttwo/repo-harness`
299
299
  - Release history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
300
300
 
301
- ## Current Model (5.2.3)
301
+ ## Current Model
302
302
 
303
303
  - Question flow は **12 grouped decision points** を使い、まず harness defaults を推論します。
304
304
  - Plan menu は階層化されています。**Core Plans (A-F)** を優先し、**Custom Presets (G-K)** は必要なときだけ現れます。
package/README.md CHANGED
@@ -6,8 +6,8 @@
6
6
 
7
7
  Repo-local agentic development harness CLI and skill runtime for Claude/Codex
8
8
  workflows. The npm package and primary command are now `repo-harness`.
9
- `repo-harness-skill` remains a compatibility alias, while `project-initializer`
10
- install paths are retired and removed by installed-copy sync.
9
+ The legacy `repo-harness-skill` and `project-initializer` install paths are
10
+ retired and removed by installed-copy sync.
11
11
  Repository: `https://github.com/Ancienttwo/repo-harness`
12
12
 
13
13
  [English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Español](README.es.md)
@@ -34,30 +34,25 @@ This repository now dogfoods its own tasks-first contract. It is both:
34
34
  read a 1KB capability contract or query the index instead of spending thousands of
35
35
  tokens rediscovering structure.
36
36
 
37
- ## What's New in 0.2.4
38
-
39
- - **Plan consultation stays advisory.** Questions and status reports that mention
40
- plans, workflows, hooks, `new plan`, or `方案` no longer fall into
41
- `PlanStatusGuard` or create plan files unless they explicitly start execution.
42
- - **Autoresearch is no longer a background hook.** The self-host-only
43
- `autoresearch-advisory.sh` route is retired from `.ai/hooks`, generated hook
44
- installers, and user-level adapters. Autoresearch evidence is now gathered by
45
- an explicit agent-run workflow, not by an always-on hook.
46
- - **Hook parity is stricter.** Self-host `.ai/hooks/` and installable
47
- `assets/hooks/` now match without maintainer-only hook exceptions.
48
- - **Copied hook fallback.** Installed prompt hooks now keep PlanCaptureGate
49
- guidance working even when the copied runtime cannot reach the TypeScript
50
- decision engine.
51
- - **Darwin readiness gates.** Workflow checks now catch stale handoff/resume
52
- plan references, and public action-command skills have static quality gates
53
- for failure modes, boundaries, and high-risk checkpoints.
54
- - **Authoritative eval evidence.** Benchmark reports now include
55
- `full_test_count`, `dry_run_ratio`, `grader_pass_rate`, and
56
- `effectiveness_authority`, so dry-run smoke output cannot be mistaken for
57
- release-grade skill effectiveness proof.
58
- - **Tooling freshness.** The self-host CodeGraph dev dependency is refreshed to
59
- `0.9.9`, and gbrain readiness probes try `doctor --json --fast` before the
60
- full doctor path.
37
+ ## What's New in 0.4.0
38
+
39
+ - **Loop-engine evidence surfaces.** `repo-harness-hook state-snapshot --json`,
40
+ the NL decision-table reference, route A/B evals, and the cutover gate make
41
+ prompt-routing experiments measurable while keeping the TypeScript classifier
42
+ authoritative until evidence says otherwise.
43
+ - **Architecture queue gate.** `scripts/architecture-queue.sh`,
44
+ `scripts/check-architecture-sync.sh`, and the expanded architecture event
45
+ helper replace the retired append-only drift script with a derived request
46
+ index that can gate stale architecture state.
47
+ - **Contract delegation pilot.** Contract templates now include
48
+ `budget`, `permission_scope`, and `roles`, and `scripts/contract-run.ts`
49
+ can run explicit worker/verifier child commands against contract exit
50
+ criteria.
51
+ - **Heartbeat triage.** `scripts/heartbeat-triage.sh` records scheduled
52
+ workflow checks, sprint-next signals, and architecture request state into the
53
+ repo-local triage inbox.
54
+ - **Workflow asset sync.** New helpers, docs, tests, and generated-repo assets
55
+ keep the self-host runtime and installed template copies aligned.
61
56
 
62
57
  ## What repo-harness Does
63
58
 
@@ -87,19 +82,28 @@ The design has three layers:
87
82
  `.ai/harness/`, helper scripts, and `.ai/hooks/`.
88
83
  3. **Host adapters**: user-level `~/.claude/settings.json` and
89
84
  `~/.codex/hooks.json` route Claude/Codex events into `repo-harness-hook`.
90
- The hook entrypoint exits silently for non-opt-in repos and dispatches into
91
- the current repo's `.ai/hooks/*` scripts only when
92
- `.ai/harness/workflow-contract.json` exists.
85
+ The hook entrypoint exits silently for non-opt-in repos. For opted-in repos,
86
+ it resolves hooks central-first through the packaged install or
87
+ `~/.repo-harness/hooks/`, with repo policy able to pin self-host development
88
+ back to `.ai/hooks/*`.
93
89
 
94
90
  For `UserPromptSubmit`, the public adapter contract stays
95
91
  `repo-harness-hook UserPromptSubmit --route default`. The CLI route registry
96
92
  dispatches that route to `.ai/hooks/prompt-guard.sh`. The shell hook remains the
97
93
  repo-local adapter for host JSON parsing, workflow file reads, capture side
98
- effects, quality gate rendering, and host-safe stdout/stderr. The prompt intent
99
- and workflow-state decision is handled by the TypeScript decision engine behind
100
- `repo-harness-hook prompt-guard-decide`, which returns one action enum from an
101
- explicit decision table. That split keeps host configuration stable while moving
102
- the brittle classifier/state-machine layer out of shell conditionals.
94
+ effects, and host-safe stdout/stderr. It pipes the prompt text into
95
+ `repo-harness-hook prompt-guard-decide`, where every prompt-text intent
96
+ classifier (Unicode-aware, `src/cli/hook/prompt-intents.ts`) and the
97
+ `intent x plan state` decision table live; the engine returns one verdict JSON
98
+ line with the action, the classified intent facts, and derived strings. The
99
+ shell keeps no duplicate classifier or fallback decision table — when the
100
+ engine is unreachable the prompt layer degrades to a one-shot advisory.
101
+
102
+ Prompt-layer plan/spec/contract gates are advisory routing. Hard enforcement
103
+ lives at the edit boundary: `pre-edit-guard.sh` blocks implementation edits
104
+ unless the active plan is Approved/Executing (policy
105
+ `.guards.edit_plan_gate`: enforce | advice | off). Done-claim gates keep
106
+ blocking because they verify file-backed completion evidence, not language.
103
107
 
104
108
  The core invariant is that durable truth lives in the repo, not in a chat
105
109
  thread. Hooks are accelerators and guardrails; the authority remains the
@@ -108,14 +112,26 @@ file-backed plan, contract, review, checks, and handoff artifacts.
108
112
  ## Task Workflow: Plan to Closeout
109
113
 
110
114
  The diagram below assumes the harness is already installed in the repo. It shows
111
- the normal task lifecycle: plan, project into a sprint contract, check out the
115
+ the normal lifecycle from a program sprint backlog down to one contract task:
116
+ draft or select the task, project it into execution files, check out the
112
117
  contract worktree when policy requires it, implement under hooks, verify, review,
113
- and close out.
118
+ complete the sprint task when applicable, and close out. The 0.4.0 loop-system
119
+ surfaces add scheduled heartbeat discovery, state-snapshot/eval evidence for
120
+ routing changes, architecture queue freshness, and optional contract-run
121
+ delegation without changing the file-backed authority model.
114
122
 
115
123
  ```mermaid
116
124
  flowchart TD
117
- UserTask["User task or planning prompt"] --> Discovery["Due diligence<br/>P1 map, P2 trace, P3 decision"]
118
- Discovery --> PlanDraft["Draft plan<br/>plans/plan-*.md"]
125
+ Program["Program goal or release theme"] --> Sprint{"Sprint layer needed?"}
126
+ Sprint -->|yes| SprintDoc["Sprint PRD + backlog<br/>tasks/sprints/*.sprint.md"]
127
+ SprintDoc --> NextTask["Select next sprint task<br/>sprint-backlog.sh next"]
128
+ Sprint -->|no| UserTask["User task or planning prompt"]
129
+ Heartbeat["Heartbeat triage<br/>scripts/heartbeat-triage.sh<br/>.ai/harness/triage/"] --> UserTask
130
+ NextTask --> UserTask
131
+
132
+ UserTask --> Discovery["Due diligence<br/>P1 map, P2 trace, P3 decision"]
133
+ Discovery --> LoopEvidence["Loop evidence when routing changes<br/>state-snapshot --json<br/>route-nl-vs-ts / cutover gate"]
134
+ LoopEvidence --> PlanDraft["Draft plan<br/>plans/plan-*.md"]
119
135
  PlanDraft --> PlanReview{"Plan ready for execution?"}
120
136
  PlanReview -->|no| Refine["Refine plan, scope, evidence contract"]
121
137
  Refine --> PlanDraft
@@ -123,22 +139,28 @@ flowchart TD
123
139
 
124
140
  Approve --> Project["Project plan into execution<br/>capture-plan.sh --execute<br/>or plan-to-todo.sh --plan"]
125
141
  Project --> Active["Active markers<br/>.ai/harness/active-plan<br/>.ai/harness/active-worktree"]
142
+ Project --> SprintActive["Sprint projection<br/>active-sprint marker<br/>tasks/current.md"]
126
143
  Project --> Contract["Sprint contract<br/>tasks/contracts/YYYYMMDD-HHMM-task-slug.contract.md"]
127
144
  Project --> ReviewFile["Review file<br/>tasks/reviews/YYYYMMDD-HHMM-task-slug.review.md"]
128
145
  Project --> Notes["Task notes<br/>tasks/notes/YYYYMMDD-HHMM-task-slug.notes.md"]
129
146
 
130
- Contract --> WorktreePolicy{"Contract worktree required?"}
147
+ Contract --> Delegation["Delegation contract<br/>budget / permission_scope / roles"]
148
+ Delegation --> Delegate{"Use contract-run delegation?"}
149
+ Delegate -->|yes| ContractRun["Worker/verifier child run<br/>scripts/contract-run.ts"]
150
+ Delegate -->|no| WorktreePolicy{"Contract worktree required?"}
131
151
  WorktreePolicy -->|yes| Checkout["Checkout isolated worktree<br/>contract-worktree.sh start --plan<br/>branch codex/task-slug"]
132
152
  WorktreePolicy -->|no| CurrentTree["Use current worktree<br/>small or explicitly allowed slice"]
133
153
  Checkout --> Implement
134
154
  CurrentTree --> Implement
155
+ ContractRun --> Changes
135
156
 
136
157
  Implement["Edit and run commands"] --> PreHooks["Pre-edit guards<br/>PlanStatusGuard, ContractScopeGuard, WorktreeGuard"]
137
158
  PreHooks -->|blocked| ScopeFix["Fix plan, contract, worktree, or scope"]
138
159
  ScopeFix --> Implement
139
160
  PreHooks -->|allowed| Changes["Code, docs, tests, or config changes"]
140
161
  Changes --> PostHooks["Post-edit and post-bash hooks<br/>trace, drift request, handoff, check evidence"]
141
- PostHooks --> Verify["Run verification<br/>tests plus repo workflow checks"]
162
+ PostHooks --> ArchQueue["Architecture queue<br/>architecture-queue.sh record/reindex<br/>check-architecture-sync.sh"]
163
+ ArchQueue --> Verify["Run verification<br/>tests plus repo workflow checks"]
142
164
 
143
165
  Verify --> Checks["Structured evidence<br/>.ai/harness/checks/latest.json<br/>.ai/harness/runs/*.json"]
144
166
  Checks --> CheckReview["Evaluator review<br/>Waza /check -> review file"]
@@ -146,7 +168,10 @@ flowchart TD
146
168
  External --> DoneGate{"Contract, checks, review, and acceptance pass?"}
147
169
  DoneGate -->|no| Repair["Repair failing evidence or implementation"]
148
170
  Repair --> Implement
149
- DoneGate -->|yes| Closeout["Closeout<br/>scripts/contract-worktree.sh finish"]
171
+ DoneGate -->|yes| SprintComplete{"Sprint task active?"}
172
+ SprintComplete -->|yes| MarkSprint["Mark backlog item complete<br/>sprint-backlog.sh complete-task"]
173
+ SprintComplete -->|no| Closeout["Closeout<br/>scripts/contract-worktree.sh finish"]
174
+ MarkSprint --> Closeout
150
175
 
151
176
  Closeout --> Commit["Commit contract branch"]
152
177
  Commit --> Merge["Fast-forward target branch"]
@@ -183,14 +208,12 @@ npx -y repo-harness update
183
208
  repository to install or refresh workflow files, hook assets, host adapters,
184
209
  skill aliases, and repo-local verification surfaces from the current npm package.
185
210
 
186
- The npm package release line is now `0.2.x`; generated workflow compatibility is
187
- tracked separately as the `5.x` model line. The `0.2.4` package keeps first-run
211
+ The npm package and generated workflow stamp now share the `0.4.x` release line.
212
+ The `0.4.0` package keeps first-run
188
213
  global bootstrap (`repo-harness init`) separate from repo-local refresh
189
- (`repo-harness update`), preserves the typed global bootstrap and read-only
190
- config security sentinel, tightens hook parity, retires the self-host
191
- autoresearch advisory hook, prevents consultative plan/workflow prompts from
192
- being mistaken for execution, and adds copied-hook fallback, readiness checks,
193
- and skill-eval authority reporting.
214
+ (`repo-harness update`) while adding the loop-engine state snapshot, architecture
215
+ queue gate, contract delegation pilot, heartbeat triage helper, and generated
216
+ asset sync for those workflow surfaces.
194
217
  These sit on top of the renamed `repo-harness` CLI, user-level hook
195
218
  adapter bootstrap, AI-native scaffold overlays, the typed prompt-guard decision
196
219
  engine, plan-stem task artifact naming, `REPO_HARNESS_*` runtime aliases, Waza
@@ -207,16 +230,14 @@ bun src/cli/index.ts update
207
230
  Local path model:
208
231
 
209
232
  - Source repo: `~/Projects/repo-harness`
210
- - Claude skill aliases: `~/.claude/skills/repo-harness`, `~/.claude/skills/repo-harness-skill`
233
+ - Claude skill alias: `~/.claude/skills/repo-harness`
211
234
  - Codex discoverable skill alias: `~/.codex/skills/repo-harness`
212
- - Codex compatibility fallback alias: `~/.codex/skills/repo-harness-skill`
213
235
 
214
236
  The `~/Projects/repo-harness` repo is the only editable source of truth. Local
215
237
  Claude/Codex paths are symlink-backed runtime entrypoints. Only
216
238
  `~/.codex/skills/repo-harness` should expose `SKILL.md` and
217
- `assets/skill-commands/`; compatibility directories exist only so renamed
218
- repos can still resolve upstream assets without duplicate command discovery.
219
- The retired `project-initializer` directories under `~/.codex/skills` and
239
+ `assets/skill-commands/`. The retired `repo-harness-skill` and
240
+ `project-initializer` directories under `~/.codex/skills` and
220
241
  `~/.claude/skills` are deleted by `scripts/sync-codex-installed-copies.sh`.
221
242
 
222
243
  ### Minimum prerequisites
@@ -274,16 +295,29 @@ before applying anything.
274
295
  - Repo-local `.claude/settings.json` and `.codex/hooks.json` hook adapters are legacy project-level config and should be retired during migration.
275
296
  - Codex must mark `~/.codex/hooks.json` as trusted in Codex Settings before those hooks run.
276
297
  - Debug in this order: user-level adapter config -> `repo-harness-hook` (or fallback `repo-harness hook`) -> route registry -> `.ai/hooks/*`.
298
+ - If `repo-harness-hook` reports `.ai/hooks` drift, refresh the repo-local copy with `repo-harness update --repo <root>`.
277
299
 
278
- `SessionStart` runs two ordered scripts before work begins:
300
+ `SessionStart` resolves hooks central-first, then runs two ordered scripts before
301
+ work begins:
279
302
 
280
303
  ```mermaid
281
304
  flowchart LR
282
- SessionStart["Claude/Codex SessionStart"] --> Ctx["session-start-context.sh<br/>resume + handoff context"]
305
+ SessionStart["Claude/Codex SessionStart"] --> Adapter["user-level adapter"]
306
+ Adapter --> Entry["repo-harness-hook SessionStart --route default"]
307
+ Entry --> Source{"hook source"}
308
+ Source -->|central default| Central["packaged hooks<br/>or ~/.repo-harness/hooks"]
309
+ Source -->|repo policy pin| Repo["repo .ai/hooks<br/>self-host development"]
310
+ Central --> Ctx["session-start-context.sh<br/>resume + sprint + handoff context"]
311
+ Repo --> Ctx
283
312
  Ctx --> Sec["security-sentinel.sh<br/>read-only config scan, fingerprint-gated"]
284
313
  Sec --> SSOut["SessionStart additionalContext<br/>prior-session state + SecurityConfig findings"]
285
314
  ```
286
315
 
316
+ `SessionStart` and `Stop` hooks are advisory for missing repo-local scripts: stale
317
+ repos get a drift warning instead of a startup failure. Required guard routes,
318
+ including edit and prompt gates, still fail closed when their scripts are
319
+ missing.
320
+
287
321
  Prompt guard has one extra internal step:
288
322
 
289
323
  ```mermaid
@@ -292,15 +326,15 @@ flowchart LR
292
326
  Adapter --> CLI["repo-harness-hook UserPromptSubmit --route default"]
293
327
  CLI --> Route["route registry"]
294
328
  Route --> Shell[".ai/hooks/prompt-guard.sh"]
295
- Shell --> Decision["repo-harness-hook prompt-guard-decide<br/>TypeScript decision table"]
296
- Decision --> Action["single action enum"]
297
- Action --> Shell
329
+ Shell -->|"stdin {prompt}"| Decision["repo-harness-hook prompt-guard-decide<br/>TypeScript classifiers + decision table"]
330
+ Decision -->|"verdict JSON<br/>action + intent facts + derived"| Shell
298
331
  Shell --> RouteHint["Waza route hint<br/>explicit think/planning matched first → /think"]
299
- Shell --> HostOutput["host-safe allow, advice, block, or done gate output"]
332
+ Shell --> HostOutput["host-safe advice, done gate, or capture output"]
300
333
  ```
301
334
 
302
- The shell layer still owns filesystem authority and side effects. TypeScript owns
303
- only the classifier plus `intent x plan state` decision table.
335
+ The shell layer owns filesystem authority and side effects. TypeScript owns all
336
+ prompt-text classification plus the `intent x plan state` decision table.
337
+ Plan-state blocks render at the PreToolUse edit layer, not here.
304
338
 
305
339
  ## Hook Failure Playbook
306
340
 
@@ -313,7 +347,7 @@ fields are `guard`, `reason`, `fix`, `failure_class`, and `run_id`.
313
347
 
314
348
  Most common guards:
315
349
 
316
- - `PlanStatusGuard`: no active plan, or the plan is not ready to execute
350
+ - `PlanStatusGuard` (edit layer): an implementation edit was attempted with no active plan, or the plan is not ready to execute; the prompt layer emits the same guard name as advisory guidance
317
351
  - `ContractGuard`: approved execution has not yet produced the contract/review/notes scaffold
318
352
  - `ContractGuard`: completion was claimed before the task contract passed
319
353
  - `WorktreeGuard`: writes were attempted in the primary worktree while linked worktrees are enforced
@@ -330,12 +364,12 @@ Most common guards:
330
364
 
331
365
  ## Current Release
332
366
 
333
- - npm package: `repo-harness@0.2.4`
334
- - Generated workflow compatibility: `5.2.3`
367
+ - npm package: `repo-harness@0.4.0`
368
+ - Generated workflow stamp: `repo-harness@0.4.0+template@0.4.0`
335
369
  - GitHub repository: `Ancienttwo/repo-harness`
336
370
  - Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
337
371
 
338
- ## Current Model (5.2.3)
372
+ ## Current Model
339
373
 
340
374
  - Question flow uses **12 grouped decision points** with harness defaults inferred first.
341
375
  - Plan menu is tiered:
@@ -402,6 +436,7 @@ Source-owned command facades live in `assets/skill-commands/`. They keep host
402
436
  skill discovery compatible while the CLI and hooks own execution:
403
437
 
404
438
  - Planning and review: `repo-harness-plan`, `repo-harness-review`, `repo-harness-autoplan`
439
+ - Sprint program layer: `repo-harness-sprint` (PRD + ordered backlog in `tasks/sprints/`, executed task-by-task through the contract flow)
405
440
  - Repo workflow actions: `repo-harness-ship`, `repo-harness-init`, `repo-harness-migrate`, `repo-harness-upgrade`, `repo-harness-capability`, `repo-harness-architecture`, `repo-harness-handoff`, `repo-harness-deploy`, `repo-harness-repair`, `repo-harness-check`
406
441
  - Branch project creation command: `repo-harness-scaffold`
407
442
 
@@ -435,11 +470,9 @@ passes. These commands call existing repo-local helpers and keep their scope
435
470
  narrow instead of refreshing the full harness.
436
471
 
437
472
  Codex installed-copy rule: only `~/.codex/skills/repo-harness` exposes the root
438
- skill and `repo-harness-*` command facades. The compatibility directory
439
- `~/.codex/skills/repo-harness-skill` is a runtime fallback bundle only; it must
440
- not contain `SKILL.md` files or `assets/skill-commands/`. The retired
441
- `~/.codex/skills/project-initializer` and `~/.claude/skills/project-initializer`
442
- directories are removed during sync.
473
+ skill and `repo-harness-*` command facades. The retired `repo-harness-skill`
474
+ and `project-initializer` directories under `~/.codex/skills` and
475
+ `~/.claude/skills` are removed during sync.
443
476
 
444
477
  After cloning or moving this source repo, rebuild the local runtime aliases with:
445
478