vibe-coding-master 0.3.27 → 0.3.29
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/README.md +30 -26
- package/dist/backend/api/task-routes.js +2 -2
- package/dist/backend/gateway/gateway-service.js +24 -5
- package/dist/backend/services/claude-hook-service.js +43 -26
- package/dist/backend/services/message-service.js +9 -6
- package/dist/backend/services/project-service.js +2 -2
- package/dist/backend/services/session-service.js +44 -10
- package/dist/shared/constants.js +6 -2
- package/dist-frontend/assets/{index-DVy34Iwn.js → index-K34QFpWK.js} +35 -35
- package/dist-frontend/index.html +1 -1
- package/docs/codex-translation-plan.md +74 -127
- package/docs/full-harness-baseline.md +113 -207
- package/docs/gate-review-gates.md +13 -5
- package/docs/gateway-design.md +6 -8
- package/docs/product-design.md +51 -14
- package/docs/v0.2-implementation-plan.md +4 -0
- package/docs/vcm-cc-best-practices.md +36 -33
- package/package.json +1 -1
|
@@ -1,259 +1,165 @@
|
|
|
1
1
|
# Full Harness Baseline
|
|
2
2
|
|
|
3
|
-
Last updated: 2026-06-
|
|
3
|
+
Last updated: 2026-06-21
|
|
4
4
|
|
|
5
|
-
Status:
|
|
5
|
+
Status: Current implementation reference.
|
|
6
6
|
|
|
7
|
-
This file tracks the
|
|
8
|
-
`
|
|
9
|
-
`
|
|
7
|
+
This file tracks the VCM fixed harness currently installed by
|
|
8
|
+
`src/backend/services/harness-service.ts` and
|
|
9
|
+
`src/backend/cli/install-vcm-harness.ts`.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
`docs/vcm-cc-best-practices.md` and delete this file.
|
|
11
|
+
## Principles
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
VCM separates three file classes:
|
|
15
14
|
|
|
16
|
-
VCM
|
|
15
|
+
- Harness-managed files: VCM installs, upgrades, repairs, and can overwrite
|
|
16
|
+
inside managed blocks or whole-file templates.
|
|
17
|
+
- Project-owned durable docs: VCM may create starter docs, but project roles own
|
|
18
|
+
their content afterward.
|
|
19
|
+
- Runtime state: VCM writes these during task execution and cleanup removes them
|
|
20
|
+
when the task is closed.
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
they become project truth and are not VCM-owned harness.
|
|
22
|
-
- Runtime state: VCM writes these during task execution and deletes them during
|
|
23
|
-
task cleanup. Runtime files are not manifest entries.
|
|
22
|
+
The current implementation no longer uses `.ai/vcm-harness-manifest.json`.
|
|
23
|
+
Harness ownership is defined by the deterministic installer and by managed
|
|
24
|
+
markers such as `<!-- VCM:BEGIN version=1 -->`.
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
VCM-managed rules, agents, skills, settings merges, harness tools, generated
|
|
27
|
-
context artifacts, PR template managed blocks, marker metadata, JSON ownership,
|
|
28
|
-
lifecycle labels, runtime roots, and uninstall actions.
|
|
26
|
+
## Fixed Harness Files
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
`docs/ARCHITECTURE.md`, `docs/TESTING.md`, `docs/known-issues.md`,
|
|
32
|
-
`docs/plans/`, or module-level `ARCHITECTURE.md` files as managed entries. It
|
|
33
|
-
should not list `.ai/vcm/**` runtime files as managed entries either.
|
|
34
|
-
|
|
35
|
-
## Install And Bootstrap Flow
|
|
36
|
-
|
|
37
|
-
VCM 0.2 uses a two-stage harness setup:
|
|
38
|
-
|
|
39
|
-
1. Fixed install: VCM runs the deterministic fixed installer. This creates or
|
|
40
|
-
updates VCM-owned managed blocks, whole-file skills, role agents, settings
|
|
41
|
-
hooks, harness tools, generated-context directories, the PR template, and
|
|
42
|
-
`.ai/vcm-harness-manifest.json`.
|
|
43
|
-
2. AI bootstrap: VCM starts a temporary Claude Code terminal in the repository
|
|
44
|
-
root and instructs it to use `vcm-harness-bootstrap`. This fills
|
|
45
|
-
project-owned content and generated artifacts.
|
|
46
|
-
|
|
47
|
-
The fixed install does not copy example project content. It may create blank
|
|
48
|
-
durable doc templates when missing, but project-specific facts are added only by
|
|
49
|
-
bootstrap or by later role work.
|
|
50
|
-
|
|
51
|
-
Bootstrap should produce or refresh:
|
|
28
|
+
Managed-block files:
|
|
52
29
|
|
|
53
30
|
```text
|
|
54
|
-
CLAUDE.md
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
.
|
|
59
|
-
.
|
|
31
|
+
CLAUDE.md
|
|
32
|
+
.gitignore
|
|
33
|
+
.github/pull_request_template.md
|
|
34
|
+
.claude/agents/project-manager.md
|
|
35
|
+
.claude/agents/architect.md
|
|
36
|
+
.claude/agents/coder.md
|
|
37
|
+
.claude/agents/reviewer.md
|
|
38
|
+
.claude/agents/gate-reviewer.md
|
|
39
|
+
.ai/codex-translator/AGENTS.md
|
|
60
40
|
```
|
|
61
41
|
|
|
62
|
-
|
|
42
|
+
Whole-file or raw-file harness files:
|
|
63
43
|
|
|
64
44
|
```text
|
|
65
|
-
.
|
|
66
|
-
.
|
|
45
|
+
.claude/skills/vcm-route-message/SKILL.md
|
|
46
|
+
.claude/skills/vcm-final-acceptance/SKILL.md
|
|
47
|
+
.claude/skills/vcm-long-running-validation/SKILL.md
|
|
48
|
+
.claude/skills/vcm-harness-bootstrap/SKILL.md
|
|
49
|
+
.claude/skills/vcm-gate-review/SKILL.md
|
|
50
|
+
.ai/codex-translator/config.toml
|
|
51
|
+
.ai/codex-translator/.codex/config.toml
|
|
52
|
+
.ai/codex-translator/.codex/hooks.json
|
|
53
|
+
.ai/tools/generate-module-index
|
|
54
|
+
.ai/tools/generate-public-surface
|
|
55
|
+
.ai/tools/request-gate-review
|
|
56
|
+
.ai/tools/run-long-check
|
|
57
|
+
.ai/tools/watch-job
|
|
58
|
+
.ai/tools/vcm-bash-guard
|
|
67
59
|
```
|
|
68
60
|
|
|
69
|
-
|
|
70
|
-
the generated artifacts and durable docs are complete.
|
|
71
|
-
|
|
72
|
-
## Current Manifest Entries
|
|
73
|
-
|
|
74
|
-
These entries match the current `example/rust-layered/.ai/vcm-harness-manifest.json`.
|
|
75
|
-
|
|
76
|
-
| Area | Path | Ownership | Lifecycle | Notes |
|
|
77
|
-
| --- | --- | --- | --- | --- |
|
|
78
|
-
| Manifest | `.ai/vcm-harness-manifest.json` | whole-file | Long-term | VCM harness ownership record. |
|
|
79
|
-
| Root rules | `CLAUDE.md` | managed-block | Long-term | VCM HTML marker block only; project context outside the block is project-owned. |
|
|
80
|
-
| Ignore rules | `.gitignore` | managed-block | Long-term | VCM hash-comment marker block. The example comments `.ai/vcm/` so readers can inspect runtime artifacts. |
|
|
81
|
-
| Claude settings | `.claude/settings.json` | json-merge | Long-term | VCM owns hook entries matching VCM command markers. |
|
|
82
|
-
| Agent directory | `.claude/agents/` | VCM-created directory | Long-term | Contains the four core VCM role agents. |
|
|
83
|
-
| Core agent | `.claude/agents/project-manager.md` | managed-block | Long-term | Project-manager role rules. |
|
|
84
|
-
| Core agent | `.claude/agents/architect.md` | managed-block | Long-term | Architect role rules: plan document, Scaffold Manifest, code scaffolding, Debug Mode, docs sync. |
|
|
85
|
-
| Core agent | `.claude/agents/coder.md` | managed-block | Long-term | Coder role rules: scaffold implementation, coding standards, baseline unit checks. |
|
|
86
|
-
| Core agent | `.claude/agents/reviewer.md` | managed-block | Long-term | Reviewer role rules: independent validation, TESTING.md strategy, integration/E2E case lists. |
|
|
87
|
-
| Skill directory | `.claude/skills/` | VCM-created directory | Conditional long-term | Keep while repo-local VCM skills are installed. |
|
|
88
|
-
| Skill directory | `.claude/skills/vcm-route-message/` | VCM-created directory | Conditional long-term | Claude Code registration directory for the route-message skill. |
|
|
89
|
-
| Skill directory | `.claude/skills/vcm-final-acceptance/` | VCM-created directory | Conditional long-term | Claude Code registration directory for the final-acceptance skill. |
|
|
90
|
-
| Skill directory | `.claude/skills/vcm-long-running-validation/` | VCM-created directory | Conditional long-term | Claude Code registration directory for the long-running-validation skill. |
|
|
91
|
-
| Skill directory | `.claude/skills/vcm-harness-bootstrap/` | VCM-created directory | Conditional long-term | Claude Code registration directory for the harness-bootstrap skill. |
|
|
92
|
-
| Skill | `.claude/skills/vcm-route-message/SKILL.md` | whole-file | Conditional long-term | Route-file authoring protocol. |
|
|
93
|
-
| Skill | `.claude/skills/vcm-final-acceptance/SKILL.md` | whole-file | Conditional long-term | PM final evidence audit. |
|
|
94
|
-
| Skill | `.claude/skills/vcm-long-running-validation/SKILL.md` | whole-file | Conditional long-term | Role-independent long-running command protocol: worker-enforced 60 minute ceiling, supervision lease, windowed foreground watching. |
|
|
95
|
-
| Skill | `.claude/skills/vcm-harness-bootstrap/SKILL.md` | whole-file | Conditional long-term | AI-assisted project understanding procedure. |
|
|
96
|
-
| Harness tool directory | `.ai/tools/` | VCM-created directory | Long-term | Repo-local harness tools. |
|
|
97
|
-
| Generated-context tool | `.ai/tools/generate-module-index` | whole-file | Long-term | Generates `.ai/generated/module-index.json`. |
|
|
98
|
-
| Generated-context tool | `.ai/tools/generate-public-surface` | whole-file | Long-term | Generates `.ai/generated/public-surface.json`. |
|
|
99
|
-
| Runtime tool | `.ai/tools/run-long-check` | whole-file | Conditional long-term | Starts the only VCM-allowed file-backed validation job; its worker enforces the job ceiling (max 60m) and a supervision lease, and refuses concurrent jobs. |
|
|
100
|
-
| Runtime tool | `.ai/tools/watch-job` | whole-file | Conditional long-term | Foreground watcher and lease renewer; watches in windows up to 8 minutes and exits 125 while the job still runs instead of killing it. |
|
|
101
|
-
| Runtime tool | `.ai/tools/vcm-bash-guard` | whole-file | Conditional long-term | PreToolUse hook guard; denies `run_in_background`, `nohup`, `setsid`, `disown`, and `&` background Bash in VCM role sessions. |
|
|
102
|
-
| Generated context directory | `.ai/generated/` | VCM-created directory | Long-term | Derived context artifacts. |
|
|
103
|
-
| Generated context | `.ai/generated/module-index.json` | derived artifact | Derived | Regenerated by `generate-module-index`; do not hand-edit as source truth. |
|
|
104
|
-
| Generated context | `.ai/generated/public-surface.json` | derived artifact | Derived | Regenerated by `generate-public-surface`; do not hand-edit as source truth. |
|
|
105
|
-
| PR template | `.github/pull_request_template.md` | managed-block | Long-term | VCM PR checklist block. |
|
|
106
|
-
|
|
107
|
-
Runtime roots recorded by the manifest:
|
|
61
|
+
Durable doc templates created only when missing:
|
|
108
62
|
|
|
109
63
|
```text
|
|
110
|
-
.
|
|
111
|
-
.
|
|
64
|
+
docs/ARCHITECTURE.md
|
|
65
|
+
docs/TESTING.md
|
|
66
|
+
docs/known-issues.md
|
|
112
67
|
```
|
|
113
68
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
## Project-Owned Bootstrap Outputs
|
|
117
|
-
|
|
118
|
-
The current example includes project-owned durable docs created or initialized
|
|
119
|
-
during harness bootstrap. They are important for the workflow, but they are not
|
|
120
|
-
VCM-owned harness and should not appear as manifest entries.
|
|
121
|
-
|
|
122
|
-
| Area | Path | Owner | Lifecycle | Notes |
|
|
123
|
-
| --- | --- | --- | --- | --- |
|
|
124
|
-
| Project context | `CLAUDE.md` content outside VCM block | Project | Long-term | Rust-layered project facts and constraints. |
|
|
125
|
-
| Project architecture | `docs/ARCHITECTURE.md` | Architect | Long-term | Project-level module overview, responsibilities, relationships, dependency direction, and links to module docs. |
|
|
126
|
-
| Module architecture | `<module>/ARCHITECTURE.md` | Architect | Long-term | Module-level boundaries, behavior, important public surface explanations, and risks. |
|
|
127
|
-
| Testing docs | `docs/TESTING.md` | Reviewer | Long-term | Validation levels, commands, selection rules, final-validation cleanup, integration/E2E case definitions, generated-context freshness checks, and testing gaps. |
|
|
128
|
-
| Known issues | `docs/known-issues.md` | Architect | Rolling durable doc | Confirmed unresolved issues and accepted limitations. Remove fixed, rejected, or obsolete entries. |
|
|
129
|
-
| Durable plans | `docs/plans/` | Project | Conditional long-term | Durable plans only when a large task needs them. Completed routine plans should be deleted after durable facts are promoted. |
|
|
130
|
-
|
|
131
|
-
Current `example/rust-layered` does not use these old separate docs:
|
|
69
|
+
Directory roots created by the installer:
|
|
132
70
|
|
|
133
71
|
```text
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
72
|
+
.claude/agents/
|
|
73
|
+
.claude/skills/
|
|
74
|
+
.claude/skills/vcm-final-acceptance/
|
|
75
|
+
.claude/skills/vcm-harness-bootstrap/
|
|
76
|
+
.claude/skills/vcm-long-running-validation/
|
|
77
|
+
.claude/skills/vcm-route-message/
|
|
78
|
+
.claude/skills/vcm-gate-review/
|
|
79
|
+
.ai/codex-translator/
|
|
80
|
+
.ai/codex-translator/.codex/
|
|
81
|
+
.ai/vcm/translations/
|
|
82
|
+
.ai/vcm/gate-reviews/
|
|
83
|
+
.ai/tools/
|
|
84
|
+
.ai/generated/
|
|
138
85
|
```
|
|
139
86
|
|
|
140
|
-
##
|
|
141
|
-
|
|
142
|
-
Runtime state is created while VCM manages a task. It is task-local and should be
|
|
143
|
-
deleted during task cleanup after useful facts are promoted to code, tests,
|
|
144
|
-
durable docs, PR text, or commit history.
|
|
145
|
-
|
|
146
|
-
| Area | Path | Lifecycle | Notes |
|
|
147
|
-
| --- | --- | --- | --- |
|
|
148
|
-
| Worktrees | `.claude/worktrees/<task-slug>/` | Runtime cleanup | One task worktree shared by all roles. |
|
|
149
|
-
| Handoff root | `.ai/vcm/handoffs/` | Runtime cleanup | Role artifacts and route files for the active task. |
|
|
150
|
-
| Route messages | `.ai/vcm/handoffs/messages/<from-role>-<to-role>.md` | Runtime cleanup | Pending route files written by `vcm-route-message`. |
|
|
151
|
-
| Architecture plan | `.ai/vcm/handoffs/architecture-plan.md` | Task-temporary | Architect handoff for one executable task. |
|
|
152
|
-
| Review report | `.ai/vcm/handoffs/review-report.md` | Task-temporary | Reviewer handoff for one executable task. |
|
|
153
|
-
| Docs sync report | `.ai/vcm/handoffs/docs-sync-report.md` | Task-temporary | Architect docs-sync handoff for one executable task. |
|
|
154
|
-
| Final acceptance | `.ai/vcm/handoffs/final-acceptance.md` | Task-temporary | PM final evidence-audit handoff for one executable task. |
|
|
155
|
-
| Task known issues | `.ai/vcm/handoffs/known-issues.md` | Task-temporary | Promote unresolved durable findings to `docs/known-issues.md`, then delete. |
|
|
156
|
-
| Long-running jobs | `.ai/vcm/jobs/<job-id>/` | Runtime cleanup | Status and logs from `run-long-check` / `watch-job`. |
|
|
157
|
-
| Bootstrap session | `.ai/vcm/bootstrap/session.json` | Runtime cleanup | Last harness-bootstrap terminal metadata. |
|
|
158
|
-
| Bootstrap log | `.ai/vcm/bootstrap/bootstrap.log` | Runtime cleanup | Terminal log for the harness-bootstrap session. |
|
|
159
|
-
| App-local task records | `<vcmDataDir>/projects/<project-id>/tasks/<task-slug>.json` | Runtime cleanup | VCM UI/lifecycle subtask records outside the connected repo. |
|
|
160
|
-
|
|
161
|
-
Runtime state under `.ai/vcm/**` is excluded from manifest entries. The manifest
|
|
162
|
-
records `.ai/vcm/` only as a runtime root.
|
|
163
|
-
|
|
164
|
-
## Current Skills
|
|
165
|
-
|
|
166
|
-
The current example installs these skills:
|
|
87
|
+
## Installed Skills
|
|
167
88
|
|
|
168
89
|
- `vcm-route-message`: route-file write protocol.
|
|
169
|
-
- `vcm-final-acceptance`: final
|
|
170
|
-
- `vcm-long-running-validation`:
|
|
171
|
-
- `vcm-harness-bootstrap`:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
`.ai/vcm/handoffs/docs-sync-report.md`.
|
|
90
|
+
- `vcm-final-acceptance`: PM final evidence audit.
|
|
91
|
+
- `vcm-long-running-validation`: foreground supervision protocol for long jobs.
|
|
92
|
+
- `vcm-harness-bootstrap`: AI-assisted project understanding and generated
|
|
93
|
+
context refresh.
|
|
94
|
+
- `vcm-gate-review`: PM protocol for requesting Gate Review and handling VCM
|
|
95
|
+
callbacks.
|
|
176
96
|
|
|
177
|
-
##
|
|
178
|
-
|
|
179
|
-
The current example keeps only five `.ai/tools/` files:
|
|
97
|
+
## Installed Tools
|
|
180
98
|
|
|
181
99
|
```text
|
|
182
100
|
.ai/tools/generate-module-index
|
|
183
101
|
.ai/tools/generate-public-surface
|
|
102
|
+
.ai/tools/request-gate-review
|
|
184
103
|
.ai/tools/run-long-check
|
|
185
104
|
.ai/tools/watch-job
|
|
186
105
|
.ai/tools/vcm-bash-guard
|
|
187
106
|
```
|
|
188
107
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
108
|
+
`generate-module-index` and `generate-public-surface` currently target Rust
|
|
109
|
+
projects. Non-Rust repositories can still install the fixed harness, but
|
|
110
|
+
generated context should be treated as unsupported until project-specific
|
|
111
|
+
generators exist.
|
|
112
|
+
|
|
113
|
+
## Runtime State
|
|
192
114
|
|
|
193
|
-
|
|
194
|
-
discovery wrappers:
|
|
115
|
+
Task runtime state lives in the task worktree:
|
|
195
116
|
|
|
196
117
|
```text
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
118
|
+
<taskRepoRoot>/.ai/vcm/sessions/<task>.json
|
|
119
|
+
<taskRepoRoot>/.ai/vcm/messages/<task>.jsonl
|
|
120
|
+
<taskRepoRoot>/.ai/vcm/orchestration/<task>.json
|
|
121
|
+
<taskRepoRoot>/.ai/vcm/translation/<task>/
|
|
122
|
+
<taskRepoRoot>/.ai/vcm/handoffs/
|
|
123
|
+
<taskRepoRoot>/.ai/vcm/handoffs/messages/<from-role>-<to-role>.md
|
|
124
|
+
<taskRepoRoot>/.ai/vcm/handoffs/architecture-plan.md
|
|
125
|
+
<taskRepoRoot>/.ai/vcm/handoffs/known-issues.md
|
|
126
|
+
<taskRepoRoot>/.ai/vcm/handoffs/review-report.md
|
|
127
|
+
<taskRepoRoot>/.ai/vcm/handoffs/docs-sync-report.md
|
|
128
|
+
<taskRepoRoot>/.ai/vcm/handoffs/final-acceptance.md
|
|
129
|
+
<taskRepoRoot>/.ai/vcm/jobs/<job-id>/
|
|
130
|
+
<taskRepoRoot>/.ai/vcm/gate-reviews/
|
|
207
131
|
```
|
|
208
132
|
|
|
209
|
-
|
|
210
|
-
by the responsible role. The harness does not need a fixed wrapper for every
|
|
211
|
-
validation level.
|
|
212
|
-
|
|
213
|
-
## Generated Context
|
|
214
|
-
|
|
215
|
-
The current example has two generated artifacts:
|
|
133
|
+
Project-scoped runtime state lives in the base repository:
|
|
216
134
|
|
|
217
135
|
```text
|
|
218
|
-
|
|
219
|
-
|
|
136
|
+
<baseRepoRoot>/.ai/vcm/gate-reviewer/session.json
|
|
137
|
+
<baseRepoRoot>/.ai/vcm/translations/
|
|
138
|
+
<baseRepoRoot>/.ai/vcm/bootstrap/session.json
|
|
139
|
+
<baseRepoRoot>/.ai/vcm/bootstrap/bootstrap.log
|
|
220
140
|
```
|
|
221
141
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
- `generate-module-index` reads Cargo workspace structure, auto-detects a
|
|
225
|
-
direct child `cargoRoot` when the project root has no `Cargo.toml`, and
|
|
226
|
-
filters workspace member paths that do not contain a crate.
|
|
227
|
-
- `generate-public-surface` indexes crate-external Rust `pub fn`,
|
|
228
|
-
`pub struct`, `pub enum`, and `pub trait` items, using `pub use` only to
|
|
229
|
-
resolve re-exported high-value API entries.
|
|
230
|
-
|
|
231
|
-
There is no `test-map.json`. Test files are discoverable through
|
|
232
|
-
`module-index.json` and Rust's normal Cargo test layout.
|
|
142
|
+
App-local state lives under `vcmDataDir`:
|
|
233
143
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
144
|
+
```text
|
|
145
|
+
<vcmDataDir>/settings.json
|
|
146
|
+
<vcmDataDir>/projects/index.json
|
|
147
|
+
<vcmDataDir>/projects/<project-id>/config.json
|
|
148
|
+
<vcmDataDir>/projects/<project-id>/tasks/<task>.json
|
|
149
|
+
<vcmDataDir>/gateway/
|
|
150
|
+
```
|
|
237
151
|
|
|
238
|
-
|
|
152
|
+
Ordinary VCM role sessions no longer persist raw terminal logs under
|
|
153
|
+
`.ai/vcm/handoffs/logs/`. Claude transcript JSONL files under
|
|
154
|
+
`~/.claude/projects/` remain the semantic source for output translation and
|
|
155
|
+
session recovery.
|
|
239
156
|
|
|
240
|
-
|
|
241
|
-
baseline:
|
|
157
|
+
## Cleanup
|
|
242
158
|
|
|
243
|
-
|
|
244
|
-
.
|
|
245
|
-
.
|
|
246
|
-
.ai/task-specs/
|
|
247
|
-
.ai/vcm/tasks/
|
|
248
|
-
.ai/vcm/handoffs/role-commands/
|
|
249
|
-
docs/plans/active/
|
|
250
|
-
docs/plans/completed/
|
|
251
|
-
docs/MODULE_MAP.md
|
|
252
|
-
docs/SECURITY.md
|
|
253
|
-
docs/DEPENDENCY_RULES.md
|
|
254
|
-
docs/AI_WORKFLOW.md
|
|
255
|
-
.ai/generated/test-map.json
|
|
256
|
-
```
|
|
159
|
+
Close Task removes the task-owned worktree, branch, app-local task record, and
|
|
160
|
+
task-local runtime state. It stops task-scoped VCM role sessions for that task.
|
|
161
|
+
It must not stop project-scoped Gate Reviewer or Codex Translator sessions.
|
|
257
162
|
|
|
258
|
-
|
|
259
|
-
|
|
163
|
+
Durable facts that should survive task cleanup must be promoted into code,
|
|
164
|
+
tests, durable docs, PR text, commit history, or release notes before closing
|
|
165
|
+
the task.
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
This document defines VCM Gate Review Gates.
|
|
4
4
|
|
|
5
5
|
Gate Review is an optional quality layer for complex tasks. It uses a fifth
|
|
6
|
-
role, `gate-reviewer`, powered by Claude Code. The role
|
|
7
|
-
|
|
6
|
+
VCM flow role, `gate-reviewer`, powered by Claude Code. The role uses the same
|
|
7
|
+
hook, Round, terminal, and translation path as the normal VCM roles, but it
|
|
8
|
+
does not participate in PM route-file dispatch.
|
|
8
9
|
|
|
9
10
|
## Gates
|
|
10
11
|
|
|
@@ -32,7 +33,8 @@ VCM owns:
|
|
|
32
33
|
- starting/resuming the project-scoped Gate Reviewer Claude Code session
|
|
33
34
|
- sending the gate prompt
|
|
34
35
|
- waiting for the report
|
|
35
|
-
-
|
|
36
|
+
- binding the project-scoped Gate Reviewer session to the current task for hook,
|
|
37
|
+
Round, and translation state
|
|
36
38
|
- sending the callback to PM
|
|
37
39
|
|
|
38
40
|
PM owns:
|
|
@@ -60,6 +62,11 @@ therefore name the current task and task worktree path explicitly. Prior
|
|
|
60
62
|
session memory can help orientation, but only current worktree evidence can
|
|
61
63
|
decide the gate.
|
|
62
64
|
|
|
65
|
+
When a task uses Gate Reviewer, VCM records the active task binding on the
|
|
66
|
+
project session. Hook events from the long-lived session are resolved through
|
|
67
|
+
that binding so Round state and translation output are written to the current
|
|
68
|
+
task.
|
|
69
|
+
|
|
63
70
|
Gate reports remain task-scoped:
|
|
64
71
|
|
|
65
72
|
```text
|
|
@@ -122,9 +129,10 @@ PM reaches gate
|
|
|
122
129
|
-> VCM checks global gate switch and task state
|
|
123
130
|
-> VCM starts or resumes project Gate Reviewer session
|
|
124
131
|
-> VCM sends short prompt with task/worktree/report paths
|
|
125
|
-
-> VCM
|
|
132
|
+
-> VCM binds Gate Reviewer to the current task
|
|
126
133
|
-> Gate Reviewer writes report
|
|
127
|
-
->
|
|
134
|
+
-> standard Claude hooks update Gate Reviewer activity/Round state
|
|
135
|
+
-> VCM validates report
|
|
128
136
|
-> VCM callbacks PM
|
|
129
137
|
-> PM continues or routes follow-up
|
|
130
138
|
```
|
package/docs/gateway-design.md
CHANGED
|
@@ -161,9 +161,8 @@ Task lifecycle commands:
|
|
|
161
161
|
- `/create-task <task-slug> [title]` creates a task worktree,
|
|
162
162
|
selects it as the mobile current task, applies the saved launch template, and
|
|
163
163
|
starts the four role sessions (`project-manager`, `architect`, `coder`,
|
|
164
|
-
`reviewer`)
|
|
165
|
-
|
|
166
|
-
translation.
|
|
164
|
+
`reviewer`) using the saved desktop launch-template values. The saved template
|
|
165
|
+
controls permission mode, model, effort, and auto orchestration.
|
|
167
166
|
If no template has been saved, VCM uses the default launch template.
|
|
168
167
|
- `/close-task` starts a destructive confirmation flow for the current task.
|
|
169
168
|
Gateway replies with the exact confirmation command.
|
|
@@ -248,7 +247,6 @@ Rules:
|
|
|
248
247
|
-> select it as gateway current task
|
|
249
248
|
-> load saved launch template from app preferences
|
|
250
249
|
-> set orchestration from template
|
|
251
|
-
-> set gateway/desktop translation state from template
|
|
252
250
|
-> start four role sessions with template permission/model/effort
|
|
253
251
|
-> switch mobile current role to project-manager
|
|
254
252
|
-> reply with task slug, branch, worktree, template summary, and session status
|
|
@@ -585,7 +583,7 @@ Service dependencies:
|
|
|
585
583
|
- `SessionService`: PM session state, Claude session metadata, and role session
|
|
586
584
|
start for launch-template initialization.
|
|
587
585
|
- `AppSettingsService`: saved launch template with permission mode, model,
|
|
588
|
-
effort, auto orchestration,
|
|
586
|
+
effort, auto orchestration, plus the global Gateway translation preference.
|
|
589
587
|
- `MessageService` / orchestration state service: set the newly created task to
|
|
590
588
|
template auto/manual orchestration mode.
|
|
591
589
|
- `TerminalRuntime`: controlled PM terminal submission.
|
|
@@ -672,8 +670,8 @@ Validation:
|
|
|
672
670
|
`POST /api/projects/current/pull` or the equivalent project service method.
|
|
673
671
|
- Implement `/create-task <task-slug> [title]` by creating a task worktree
|
|
674
672
|
task, selecting it as mobile current task, applying the saved launch template,
|
|
675
|
-
setting orchestration mode,
|
|
676
|
-
role sessions.
|
|
673
|
+
setting orchestration mode, applying the global Gateway translation state, and
|
|
674
|
+
starting the four core role sessions.
|
|
677
675
|
- Implement `/close-task` and `/close-task confirm <task-slug>` as a two-step
|
|
678
676
|
destructive confirmation around the same Close Task cleanup path as desktop
|
|
679
677
|
VCM.
|
|
@@ -779,7 +777,7 @@ Gateway MVP is complete when:
|
|
|
779
777
|
through VCM's fast-forward-only pull path.
|
|
780
778
|
- Bound phone can run `/create-task <task-slug> [title]` to create a task
|
|
781
779
|
worktree, select it, apply the saved launch template, and start
|
|
782
|
-
the four role sessions.
|
|
780
|
+
the four core role sessions.
|
|
783
781
|
- Bound phone can send Chinese plain text to current task PM.
|
|
784
782
|
- PM receives only the translated English prompt, without original Chinese.
|
|
785
783
|
- Gateway can push PM assistant replies to Weixin whenever enabled.
|
package/docs/product-design.md
CHANGED
|
@@ -44,7 +44,7 @@ This `Session` term is only for VCM statistics. It must not be confused with a C
|
|
|
44
44
|
VCM V1 must make multi-session Claude Code work visible and recoverable:
|
|
45
45
|
|
|
46
46
|
- Connect a local Git repository.
|
|
47
|
-
- Create a named task with its own branch and task-level worktree
|
|
47
|
+
- Create a named task with its own branch and task-level worktree.
|
|
48
48
|
- Start, stop, restart, and resume one Claude Code session per role.
|
|
49
49
|
- Keep role terminals embedded in one GUI.
|
|
50
50
|
- Preserve task state, session state, handoff files, and message history.
|
|
@@ -84,10 +84,11 @@ project-manager
|
|
|
84
84
|
|
|
85
85
|
### 4.1 Gate Review Gates
|
|
86
86
|
|
|
87
|
-
For complex tasks, VCM supports optional Gate Review Gates through
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
and
|
|
87
|
+
For complex tasks, VCM supports optional Gate Review Gates through a
|
|
88
|
+
`gate-reviewer` Claude Code role. Gate Reviewer is a VCM flow role with the same
|
|
89
|
+
hook, Round, terminal, and translation behavior as the core roles. Its session
|
|
90
|
+
is project-scoped and reusable across tasks, but each gate turn is bound to the
|
|
91
|
+
current task and task worktree so task evidence stays explicit.
|
|
91
92
|
|
|
92
93
|
```text
|
|
93
94
|
architect architecture plan
|
|
@@ -108,9 +109,9 @@ default to off.
|
|
|
108
109
|
|
|
109
110
|
When any gate is on, or when a Gate Reviewer session already exists, the task
|
|
110
111
|
workspace shows `Gate Reviewer` as a fifth terminal role. VCM sends a short gate
|
|
111
|
-
prompt into that session and
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
prompt into that project session and binds the session to the current task for
|
|
113
|
+
hooks, Round state, translation, and report polling. The role remains outside PM
|
|
114
|
+
route-file dispatch.
|
|
114
115
|
Architecture-plan findings return to architect, validation-adequacy findings
|
|
115
116
|
return to reviewer, and final-diff findings go to architect first for
|
|
116
117
|
assessment. Gate Reviewer role rules live in `.claude/agents/gate-reviewer.md`.
|
|
@@ -274,6 +275,9 @@ Sections:
|
|
|
274
275
|
- `Repository Path`
|
|
275
276
|
- `Connected Repository`
|
|
276
277
|
- `Settings`
|
|
278
|
+
- `Translation`
|
|
279
|
+
- `Gate Review Gates`
|
|
280
|
+
- `Gateway`
|
|
277
281
|
- `VCM Harness`
|
|
278
282
|
- `New Task`
|
|
279
283
|
- `Tasks`
|
|
@@ -327,6 +331,24 @@ Safari may still require the user to manually set `Safari > Website Settings > A
|
|
|
327
331
|
|
|
328
332
|
There is no separate `Pause orchestration` or `Resume orchestration` control in the GUI. The current product model is one on/off toggle in the role console toolbar.
|
|
329
333
|
|
|
334
|
+
`Translation` contains:
|
|
335
|
+
|
|
336
|
+
- `Conversation translation`
|
|
337
|
+
- `Auto-send`
|
|
338
|
+
- `Language`
|
|
339
|
+
- `Reply scope`
|
|
340
|
+
- `File translation`
|
|
341
|
+
- `Bootstrap`
|
|
342
|
+
- `Update memory`
|
|
343
|
+
- `Session status`
|
|
344
|
+
- `Open Session`
|
|
345
|
+
|
|
346
|
+
`Gate Review Gates` contains three independent switches:
|
|
347
|
+
|
|
348
|
+
- `Architecture plan`
|
|
349
|
+
- `Validation adequacy`
|
|
350
|
+
- `Final diff`
|
|
351
|
+
|
|
330
352
|
`VCM Harness` shows whether VCM managed blocks are installed/up to date in the project rules files and `.gitignore`.
|
|
331
353
|
|
|
332
354
|
`New Task` contains:
|
|
@@ -342,14 +364,16 @@ There is no optional title input in the current UI.
|
|
|
342
364
|
The task workspace header is one compact row:
|
|
343
365
|
|
|
344
366
|
```text
|
|
345
|
-
<task> [Project Manager] [Architect] [Coder] [Reviewer] [
|
|
367
|
+
<task> [Project Manager] [Architect] [Coder] [Reviewer] [Gate Reviewer?] [Auto orchestration] [Close Task]
|
|
346
368
|
```
|
|
347
369
|
|
|
348
370
|
The header does not show `TASK WORKSPACE`, branch, or worktree path. Task branch/worktree details remain task metadata, but they are not first-row chrome.
|
|
349
371
|
|
|
350
372
|
The task workspace does not show a manual `Refresh` button. Task status, role status, messages, orchestration state, and flow pause state refresh automatically. The only remaining `Refresh` control is inside the sidebar `VCM Harness` section, where it rechecks managed project files.
|
|
351
373
|
|
|
352
|
-
Role tabs show the session status for each role.
|
|
374
|
+
Role tabs show the session status for each visible role. `Gate Reviewer` appears
|
|
375
|
+
only when a Gate Review switch is enabled or a Gate Reviewer session already
|
|
376
|
+
exists.
|
|
353
377
|
|
|
354
378
|
The main task workspace only renders the active role console. Messages and Events are opened from the sidebar.
|
|
355
379
|
|
|
@@ -386,7 +410,7 @@ The split should stay close to 50/50 width. Both panes expand vertically to fill
|
|
|
386
410
|
|
|
387
411
|
## 8. Flow Pause Detection
|
|
388
412
|
|
|
389
|
-
VCM detects flow pauses from role hook events, not from terminal silence, message history, or pending route files. Claude Code roles report through `.claude/settings.json`;
|
|
413
|
+
VCM detects flow pauses from role hook events, not from terminal silence, message history, or pending route files. Claude Code VCM flow roles report through `.claude/settings.json`; Gate Reviewer follows the same hook path while VCM separately validates the assigned gate report.
|
|
390
414
|
|
|
391
415
|
Backend role state:
|
|
392
416
|
|
|
@@ -394,7 +418,7 @@ Backend role state:
|
|
|
394
418
|
- `Stop`: role becomes `idle` and records `lastTurnEndedAt`.
|
|
395
419
|
- `PostCompact`: refreshes role session metadata and records `lastCompactAt` without changing `running`/`idle`.
|
|
396
420
|
- `StopFailure`: first checks completion evidence. If the role already wrote an outgoing route file, VCM marks the role idle and dispatches normally. If not, VCM sends a recovery prompt to the same role without marking it idle.
|
|
397
|
-
- The role tab and flow pause state react to Claude Code hook events
|
|
421
|
+
- The role tab and flow pause state react to Claude Code hook events for all VCM flow roles, including Gate Reviewer.
|
|
398
422
|
|
|
399
423
|
Task-level Round state:
|
|
400
424
|
|
|
@@ -703,7 +727,11 @@ Translation panel `Auto-send` is separate from task `Auto orchestration`:
|
|
|
703
727
|
- `Auto-send` on: translate and send if there is no translation warning.
|
|
704
728
|
- `Auto-send` off: translate to English draft and wait for user send.
|
|
705
729
|
|
|
706
|
-
Task `Auto orchestration` is a compact selected/unselected button in the
|
|
730
|
+
Task `Auto orchestration` is a compact selected/unselected button in the task
|
|
731
|
+
workspace header next to `Close Task`. New tasks default to auto orchestration.
|
|
732
|
+
Conversation translation is controlled by the sidebar `Translation` group; when
|
|
733
|
+
enabled, each running core VCM role console shows the translation split, so
|
|
734
|
+
switching roles keeps the same global translation setting.
|
|
707
735
|
|
|
708
736
|
## 14. Mobile Gateway
|
|
709
737
|
|
|
@@ -769,7 +797,6 @@ and audit logs live under `vcmDataDir`. VCM resolves `vcmDataDir` from
|
|
|
769
797
|
Repository-level VCM state:
|
|
770
798
|
|
|
771
799
|
```text
|
|
772
|
-
.ai/vcm/tasks/<task>.json
|
|
773
800
|
.claude/worktrees/<task>/
|
|
774
801
|
```
|
|
775
802
|
|
|
@@ -789,10 +816,20 @@ Task worktree local files:
|
|
|
789
816
|
.claude/worktrees/<task>/.ai/vcm/messages/<task>.jsonl
|
|
790
817
|
.claude/worktrees/<task>/.ai/vcm/orchestration/<task>.json
|
|
791
818
|
.claude/worktrees/<task>/.ai/vcm/translation/<task>/
|
|
819
|
+
.claude/worktrees/<task>/.ai/vcm/gate-reviews/
|
|
792
820
|
.claude/worktrees/<task>/.ai/vcm/handoffs/
|
|
793
821
|
.claude/worktrees/<task>/.ai/vcm/handoffs/messages/<from-role>-<to-role>.md
|
|
794
822
|
```
|
|
795
823
|
|
|
824
|
+
Project-scoped local files:
|
|
825
|
+
|
|
826
|
+
```text
|
|
827
|
+
.ai/vcm/gate-reviewer/session.json
|
|
828
|
+
.ai/vcm/translations/
|
|
829
|
+
.ai/vcm/bootstrap/session.json
|
|
830
|
+
.ai/vcm/bootstrap/bootstrap.log
|
|
831
|
+
```
|
|
832
|
+
|
|
796
833
|
External Claude transcripts:
|
|
797
834
|
|
|
798
835
|
```text
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Last updated: 2026-06-10
|
|
4
4
|
|
|
5
|
+
> Archived historical plan. This document records the 0.2 design context and is
|
|
6
|
+
> not the current implementation reference. For current behavior, use
|
|
7
|
+
> `README.md`, `docs/gateway-design.md`, and `docs/full-harness-baseline.md`.
|
|
8
|
+
|
|
5
9
|
VCM 0.2 has two product tracks:
|
|
6
10
|
|
|
7
11
|
- Mobile gateway through Tencent iLink Bot API / Weixin DM.
|