create-harness-vibe-coding 0.8.5 → 0.8.6
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
CHANGED
|
@@ -18,7 +18,7 @@ npx create-harness-vibe-coding@latest my-project
|
|
|
18
18
|
|
|
19
19
|
## Your Agent Knows What to Do
|
|
20
20
|
|
|
21
|
-
Already have a project?
|
|
21
|
+
Already have a project? Paste this sentence. Your agent should use the script-first fast path: dry-run JSON first, read only files named in `agent.aiMergeRequired`, then run the structural validator.
|
|
22
22
|
|
|
23
23
|
```text
|
|
24
24
|
Read and follow https://github.com/zingspark/create-harness-vibe-coding exactly to configure this project with create-harness-vibe-coding.
|
|
@@ -41,7 +41,7 @@ Chinese README: [README-CN.md](README-CN.md)
|
|
|
41
41
|
| `subagent-orchestrator` | Runs parallel agents without collision |
|
|
42
42
|
| `memory-master` + `context-master` | Learns from failures, compresses when full |
|
|
43
43
|
| PRD + Research templates | Asks "what" and "why" before coding |
|
|
44
|
-
|
|
|
44
|
+
| 16 built-in agents | Research, plan, architecture, TDD, build, review, debug, verify, memory/context, WF-MAX managers |
|
|
45
45
|
| Architecture docs | Knows where boundaries live |
|
|
46
46
|
| Context-loading protocol | Loads only the docs each agent needs |
|
|
47
47
|
| `.claude/` + `.agents/skills/` | Claude Code and Codex skill adapters over the same Harness docs |
|
|
@@ -125,10 +125,15 @@ npx create-harness-vibe-coding@latest my-app . -y --dry-run --json
|
|
|
125
125
|
|
|
126
126
|
# Add only what's missing. Never overwrite.
|
|
127
127
|
npx create-harness-vibe-coding@latest my-app . -y --on-conflict skip --json
|
|
128
|
+
|
|
129
|
+
# Install-complete structural gate.
|
|
130
|
+
node Harness/scripts/validate-harness.mjs
|
|
128
131
|
```
|
|
129
132
|
|
|
130
133
|
The JSON output is the agent's install report: `scan` replaces hand-written root probes, `plan.create` is script-owned, and `agent.aiMergeRequired` is the only list that needs semantic AI review. Do not read package source or templates unless `agent.aiMergeRequired` names a conflicting file.
|
|
131
134
|
|
|
135
|
+
For existing projects, a passing non-strict validator is the install-complete gate. `--strict` is the bootstrap/release gate and may fail until PRD, research, and architecture placeholders have been resolved from real project facts.
|
|
136
|
+
|
|
132
137
|
`npx` is an install and safe-merge entry, not an update engine for an already installed Harness. Once `Harness/` exists, use `/wf-update` in Claude Code, `$wf-update` in Codex, or `node Harness/scripts/wf-update-check.mjs`; root entry conflicts such as `CLAUDE.md`, `AGENTS.md`, `.claude/`, `.agents/`, `.codex/`, and local Harness docs need agent-mediated merge decisions.
|
|
133
138
|
|
|
134
139
|
| Flag | Does |
|
|
@@ -182,6 +187,14 @@ npx create-harness-vibe-coding@latest my-app . -y --dry-run --json
|
|
|
182
187
|
|
|
183
188
|
Use `scan.markers` instead of manual top-level probes. Ask **at most 3 blocking questions** before touching files. Files in `plan.create` are handled by the script; only files in `agent.aiMergeRequired` need AI comparison and user-supervised merge decisions.
|
|
184
189
|
|
|
190
|
+
Fast path for an existing project with no installed `Harness/`:
|
|
191
|
+
|
|
192
|
+
1. Run the dry-run JSON command.
|
|
193
|
+
2. Run the JSON `agent.safeMergeCommand` to create only missing files.
|
|
194
|
+
3. Patch only files listed in `agent.aiMergeRequired`; preserve project-owned content.
|
|
195
|
+
4. Run `node Harness/scripts/validate-harness.mjs`.
|
|
196
|
+
5. Stop and report install status. Defer `--strict` until bootstrap fills project-fact placeholders.
|
|
197
|
+
|
|
185
198
|
Ask these only when they affect writes:
|
|
186
199
|
|
|
187
200
|
- If `CLAUDE.md` or `AGENTS.md` already exists, should missing Harness guidance be merged, kept separate, or skipped?
|
|
@@ -205,7 +218,10 @@ Harness docs always live in root `Harness/`; do not route Harness files through
|
|
|
205
218
|
# In this package repo
|
|
206
219
|
npm test
|
|
207
220
|
|
|
208
|
-
# In
|
|
221
|
+
# In an existing project immediately after safe-merge install
|
|
222
|
+
node Harness/scripts/validate-harness.mjs
|
|
223
|
+
|
|
224
|
+
# In a generated project after bootstrap, or before release
|
|
209
225
|
node Harness/scripts/validate-harness.mjs --strict
|
|
210
226
|
```
|
|
211
227
|
|
|
@@ -229,7 +245,7 @@ my-project/
|
|
|
229
245
|
│ ├── memory/ ← Durable self-learning
|
|
230
246
|
│ └── scripts/ ← Validator
|
|
231
247
|
├── .claude/
|
|
232
|
-
│ ├── agents/ ←
|
|
248
|
+
│ ├── agents/ ← 16 built-in agents
|
|
233
249
|
│ ├── skills/ ← Claude Code skill commands
|
|
234
250
|
│ └── rules/ ← Universal coding rules
|
|
235
251
|
├── .agents/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generator": "0.8.
|
|
3
|
-
"generated": "2026-07-02T10:
|
|
2
|
+
"generator": "0.8.6",
|
|
3
|
+
"generated": "2026-07-02T10:59:32.891Z",
|
|
4
4
|
"options": [],
|
|
5
5
|
"autoCheck": true,
|
|
6
6
|
"source": "https://raw.githubusercontent.com/zingspark/create-harness-vibe-coding/main/templates/common/",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"Harness/HARNESS_BRIDGE.md": "sha256-681dbeca9a590bbeb3a0c01b044e40e642e6d640632d8611064eb897ada8a48d",
|
|
57
57
|
"Harness/MEMORY.md": "sha256-038217c5407a526dca3bd186ec4880f266fa6a8a31d52ebcd27d55aa11f32bb0",
|
|
58
58
|
"Harness/MEMORY_PROTOCOL.md": "sha256-c24c232442a50f1dc7183480fc3b51c6171e32d3ba6648c056797ccd69fea717",
|
|
59
|
-
"Harness/README.md": "sha256-
|
|
60
|
-
"Harness/SETUP.md": "sha256-
|
|
59
|
+
"Harness/README.md": "sha256-95f5d0bd9e250669845c9c5e0724fdb474b1d84ec90d97588501b15f5ef183e9",
|
|
60
|
+
"Harness/SETUP.md": "sha256-490fdac08d5cff4e3b3de4c2155aac18a67f305aa659187923d8a54a4a759873",
|
|
61
61
|
"Harness/TDD-GUIDE.md": "sha256-602084530fd0dea7499a023ce75738351e5d97a0c222b64d405f36da6b59a162",
|
|
62
62
|
"Harness/WF-AUTO-SPARK.md": "sha256-48cc08e1a78cd4abb2ae9c2807ef1ac9a09544eb954220b9087b2032fabbd690",
|
|
63
63
|
"Harness/WF-AUTO.md": "sha256-d31b545249588a69c73e5e0ad8b1286ece1a53d9cd0e93b8ba0ae6dac6fdd119",
|
|
@@ -77,7 +77,7 @@ Routing priority: if a request explicitly says `/wf <task>`, `$wf`, `wf mode`, `
|
|
|
77
77
|
| Need subagents | subagent, role pack, context, inject, return format, orchestrator, isolation | [subagents.md](subagents.md), [context-loading.md](context-loading.md), [dispatch.md](dispatch.md), [AGENT_ISOLATION.md](AGENT_ISOLATION.md) | controller plan, role-specific context pack, isolation-aware dispatch pack |
|
|
78
78
|
| Need feature work | feature, implementation, TDD, test, review, closeout | [tasks/_template/PLAN.md](tasks/_template/PLAN.md), [agent-workflow.md](agent-workflow.md), [TDD-GUIDE.md](TDD-GUIDE.md), [ACCEPTANCE_PROTOCOL.md](ACCEPTANCE_PROTOCOL.md) | task plan, AC-linked RED tests, implementation loop |
|
|
79
79
|
| Review or release check | review, release, finding, risk, evidence, verification | [agent-workflow.md](agent-workflow.md), current feature doc | findings, verification evidence |
|
|
80
|
-
| Harness readiness check | validate, readiness, placeholder, missing file, release gate | `Harness/scripts/validate-harness.mjs`, `Harness/scripts/validate-harness.mjs --strict` |
|
|
80
|
+
| Harness readiness check | validate, readiness, placeholder, missing file, release gate | `Harness/scripts/validate-harness.mjs`, `Harness/scripts/validate-harness.mjs --strict` | structural install check; strict bootstrap/release placeholder check |
|
|
81
81
|
| Need harness update | /wf-update, $wf-update, update, check for updates, harness version | `.claude/skills/wf-update/SKILL.md`, `.agents/skills/wf-update/SKILL.md`, `Harness/.harness-version`, `Harness/scripts/wf-update-check.mjs` | script-driven comparison, SAFE/CONFLICT/PRESERVE classification, user decides conflicts |
|
|
82
82
|
| Need harness removal | /wf-remove, $wf-remove, wf remove, remove harness, uninstall harness | `.claude/skills/wf-remove/SKILL.md`, `.agents/skills/wf-remove/SKILL.md`, `Harness/scripts/wf-remove.mjs` | safe removal plan: auto-remove SAFE, confirm MODIFIED, never touch USER DATA |
|
|
83
83
|
|
|
@@ -103,7 +103,7 @@ Routing priority: if a request explicitly says `/wf <task>`, `$wf`, `wf mode`, `
|
|
|
103
103
|
- Do not add stack-specific agents or skills without following `extension.md`.
|
|
104
104
|
- Do not close work without tests or recorded manual verification.
|
|
105
105
|
- Do not mark work `Verified` until evidence is recorded in the current task's `tasks/<id>/PROGRESS.md` and `tasks/<id>/PLAN.md` or the feature doc.
|
|
106
|
-
- Run `node Harness/scripts/validate-harness.mjs` for scaffold structure; run `node Harness/scripts/validate-harness.mjs --strict` after bootstrap and before release.
|
|
106
|
+
- Run `node Harness/scripts/validate-harness.mjs` for install-complete scaffold structure; run `node Harness/scripts/validate-harness.mjs --strict` only after bootstrap resolves project-fact placeholders and before release.
|
|
107
107
|
- If a doc still has `{{...}}`, treat that section as a template, not project fact.
|
|
108
108
|
|
|
109
109
|
## Doc Map
|
|
@@ -31,7 +31,7 @@ First clarify the idea, then create Mini PRD, acceptance criteria, UI/API contra
|
|
|
31
31
|
|
|
32
32
|
## Required Bootstrap Sequence
|
|
33
33
|
|
|
34
|
-
Claude must follow this order
|
|
34
|
+
Claude or Codex must follow this order during bootstrap. This sequence is broader than installation; if the user only asked to install/configure the harness in an existing project, follow the "Existing Project Fast Path" below and stop after the non-strict validator passes.
|
|
35
35
|
|
|
36
36
|
0. **ECC Stack Configuration** — Detect the project's tech stack. If the repo is empty or has no stack markers (`package.json`, `go.mod`, `pyproject.toml`, `Cargo.toml`, `Gemfile`, `composer.json`, `build.gradle`, etc.), ask the user: "What's your tech stack? (language/framework)" Then install the matching ECC rule sets from `~/.claude/rules/ecc/`. See `Harness/ECC-GUIDE.md` for the stack→rules mapping. Minimum: always install `common/`. Verify with `ls .claude/rules/ecc/`.
|
|
37
37
|
1. Read `CLAUDE.md`, `Harness/MEMORY.md`, `Harness/README.md`, `Harness/lifecycle.md`, and `Harness/ACCEPTANCE_PROTOCOL.md`. Load `Harness/memory/*` only when the router or memory trigger applies.
|
|
@@ -45,8 +45,8 @@ Claude must follow this order:
|
|
|
45
45
|
9. Implement only after PRD-GATE, AC-GATE, CONTRACT-GATE, and TEST-GATE pass.
|
|
46
46
|
10. Independently validate with an AC-by-AC result matrix; use `Harness/HARNESS_BRIDGE.md` for browser/API/CDP flows.
|
|
47
47
|
11. For `/wf-auto` or memory scenario hints, read `Harness/WF-AUTO.md` and `Harness/MEMORY_PROTOCOL.md`; do not enable a background runner by default. The only allowed runtime hook is the optional `/wf-auto` bounded tick hook.
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
12. Run `node Harness/scripts/validate-harness.mjs --strict` after project-fact placeholders are resolved.
|
|
49
|
+
13. Record final verification and next feedback step in `Harness/tasks/<task-id>/PROGRESS.md`. If repeated tool failures, repeated user corrections, or reusable review/debug lessons appeared, record the concise reflection in the relevant `Harness/memory/` file.
|
|
50
50
|
|
|
51
51
|
## Install or Upgrade Path
|
|
52
52
|
|
|
@@ -59,20 +59,25 @@ Before writing, identify the project state:
|
|
|
59
59
|
| Legacy architecture or older project docs | Treat existing code/docs as source of truth, dry-run first, then fill PRD, research, architecture, and task plans from observed facts |
|
|
60
60
|
| Existing `Harness/` | Do not use `npx` as an updater; ask whether to run `/wf-update`, `$wf-update`, `node Harness/scripts/wf-update-check.mjs`, keep untouched, or remove/reinstall after approval |
|
|
61
61
|
|
|
62
|
-
When adding this harness to a project that already has source code, docs, CI, or tool configuration, treat the existing project as the source of truth before filling harness docs.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
When adding this harness to a project that already has source code, docs, CI, or tool configuration, treat the existing project as the source of truth before filling harness docs.
|
|
63
|
+
|
|
64
|
+
### Existing Project Fast Path
|
|
65
|
+
|
|
66
|
+
Use this path when the user asks only to install or configure the harness in an existing project. Do not bootstrap PRD, research, architecture, or task capsules unless the user explicitly asks for bootstrap.
|
|
67
|
+
|
|
68
|
+
1. Get the machine-readable install report first with `npx create-harness-vibe-coding@latest <project-name> <target-dir> -y --dry-run --on-conflict skip --json`. Use `scan.markers` and `agent.aiMergeRequired` instead of hand-written root probes for install decisions. Do manual project-fact reading only after the script has created missing Harness files.
|
|
69
|
+
2. Run the JSON `agent.safeMergeCommand` to create only missing files.
|
|
70
|
+
3. Record discovered facts in the final install summary. Create or update task capsules only when bootstrap or multi-step implementation work begins.
|
|
67
71
|
4. Existing configuration is project fact. Do not overwrite `CLAUDE.md`, `AGENTS.md`, `.claude/`, `.agents/`, `.codex/`, `.gitignore`, settings, package files, CI, docs routers, workflow docs, or installed skills/plugins/rules unless the user explicitly approves that exact overwrite.
|
|
68
|
-
5. When a harness file conflicts with an existing file, preserve the existing file and register any missing harness guidance manually using `Harness/extension.md`.
|
|
69
|
-
6. Run `node Harness/scripts/validate-harness.mjs
|
|
72
|
+
5. When a harness file conflicts with an existing file, preserve the existing file and register any missing harness guidance manually using `Harness/extension.md`.
|
|
73
|
+
6. Run `node Harness/scripts/validate-harness.mjs` as the install-complete gate.
|
|
74
|
+
7. Defer `node Harness/scripts/validate-harness.mjs --strict` until bootstrap removes project-fact placeholders. If placeholders intentionally remain, report strict validation as deferred rather than treating install as failed.
|
|
70
75
|
|
|
71
76
|
`npx create-harness-vibe-coding` is an install/safe-merge entry, not an update engine for a project that already has an installed Harness. If `Harness/` already exists, use `/wf-update`, `$wf-update`, or `node Harness/scripts/wf-update-check.mjs`; root entry files and user-modified Harness docs require agent-mediated merge decisions.
|
|
72
77
|
|
|
73
78
|
### Agent-Link Install Intake
|
|
74
79
|
|
|
75
|
-
When the user installs by pasting the GitHub link into an agent, get the JSON install report before editing or asking generic questions. Summarize `scan.markers`, then ask only questions that affect writes, architecture, security, or workflow. Ask at most three blocking questions up front, record safe defaults for the rest, and ask follow-ups only when that choice becomes active.
|
|
80
|
+
When the user installs by pasting the GitHub link into an agent, get the JSON install report before editing or asking generic questions. Do not fetch full template files or read package source until `agent.aiMergeRequired` names a file that needs semantic comparison. Summarize `scan.markers`, then ask only questions that affect writes, architecture, security, or workflow. Ask at most three blocking questions up front, record safe defaults for the rest, and ask follow-ups only when that choice becomes active.
|
|
76
81
|
|
|
77
82
|
| Topic | Ask When | Default If Unanswered |
|
|
78
83
|
| --- | --- | --- |
|
|
@@ -117,9 +122,9 @@ When `--on-conflict skip` leaves existing files untouched, the script still owns
|
|
|
117
122
|
- **[Overwrite]** — Replace with the template version. Optionally backup the original first (`--on-conflict backup`).
|
|
118
123
|
- **[Keep]** — Leave the existing file as-is. Skip this file.
|
|
119
124
|
|
|
120
|
-
4. For Merge: use
|
|
121
|
-
|
|
122
|
-
5. After all merges, run `node Harness/scripts/validate-harness.mjs --strict`
|
|
125
|
+
4. For Merge: use targeted edits, not a full-file rewrite. In Codex, use `apply_patch` or an equivalent patch operation. Only insert sections, headings, and text that are structurally required. Do not reorder or modify existing content. Do not remove custom project-specific registrations. After merging `CLAUDE.md` or `AGENTS.md`, inspect the heading outline and remove duplicate headings or repeated bullets introduced by the merge.
|
|
126
|
+
|
|
127
|
+
5. After all install merges, run `node Harness/scripts/validate-harness.mjs`. Run `node Harness/scripts/validate-harness.mjs --strict` only after project-fact placeholders are resolved during bootstrap or release preparation.
|
|
123
128
|
|
|
124
129
|
**File-specific gap checklists:**
|
|
125
130
|
|
|
@@ -131,12 +136,12 @@ The harness validator checks for specific structural invariants. When comparing
|
|
|
131
136
|
| `AGENTS.md` | Root agent entry points to `CLAUDE.md` and `Harness/README.md`; for existing projects, merge only after explicit user consent |
|
|
132
137
|
| `README.md` | Existing README is project-owned. Preserve by default; ask whether to append only Development notes or run `wf-readme` for a structure pass with tables/diagrams before broad edits |
|
|
133
138
|
| `Harness/MEMORY.md` | All common agents registered under `## Agents`; all common harness skills registered under `## Skills`; all 3 `Harness/memory/` files registered under `## Memory Folder`; `Harness/memory/` folder usage guidance; `Project Resource Index` in title |
|
|
134
|
-
| `.claude/rules/ecc/common.md` | `## Context`
|
|
139
|
+
| `.claude/rules/ecc/common.md` | Required project-local universal rules. Keep it even when global `~/.claude/rules/ecc/common/` exists; that directory and this file have different scopes. Required sections: `## Context` with the durable communication invariant (`project files are the only durable communication channel`); `## Memory` with three reflection file entries; `## Security` |
|
|
135
140
|
| `Harness/README.md` | `## Keyword Routing` heading; `## Load By Task` table with at minimum the rows: "Need WF mode", "Adding harness to existing project", "Need implementation plan", "Need parallel agents", "Need subagents", "Need durable memory or reflection"; WF routing keywords include `/wf`, `wf mode`, `workflow mode`, and `wk mode`; explicit WF/WK output says subagent docs load immediately; `## Doc Map` with `memory/` and `subagents.md` entries; the durable communication invariant text; `Harness/README.md is the primary router` |
|
|
136
141
|
| `Harness/WF.md` | `WF mode requires multi-subagent orchestration by default`; explicit `/wf`, `$wf`, `wf mode`, `workflow mode`, or `wk mode` requires at least 3 distinct role passes before second planning; `collaboration decision tree`; `Heartbeat Protocol` |
|
|
137
142
|
| `Harness/extension.md` | `## Non-Invasive Extension Rules` section with the "Preserve existing" rule; `## Agent Contract` section; `## Registration` section |
|
|
138
|
-
| `Harness/dispatch.md` | The durable communication invariant; common agent entries
|
|
139
|
-
| `Harness/context-loading.md` | The durable communication invariant; `Harness/README.md is the primary router`; all
|
|
143
|
+
| `Harness/dispatch.md` | The durable communication invariant; registered common agent entries; `## Handoff Format` heading |
|
|
144
|
+
| `Harness/context-loading.md` | The durable communication invariant; `Harness/README.md is the primary router`; all 12 subagent context packs (Explorer Pass, Planner, Researcher, Docs Researcher, Architect, Test Writer, Implementer, Reviewer, Debugger, Verifier, Memory Master, Context Master) |
|
|
140
145
|
| `Harness/subagents.md` | `## Source Attribution`; `## Built-in Agent Roster`; `## WF Default Fan-Out`; `Controller Role`; `Efficiency Ladder`; `Review Gates`; `collaboration decision tree`; source markers for `npx skills find`, `dispatching-parallel-agents`, and `subagent-driven-development` |
|
|
141
146
|
| `Harness/architecture.md` | `## 2. Interface Decoupling`; `## 3. State Design`; `Avoid speculative abstraction`; layer constraints derived from actual project facts |
|
|
142
147
|
| `Harness/PROGRESS.md` | global task index with Active Task and task history; cross-task decisions |
|
|
@@ -146,12 +151,14 @@ The harness validator checks for specific structural invariants. When comparing
|
|
|
146
151
|
| `Harness/workflows/browser-e2e.md` (if installed as optional) | `data-testid`, `accessible labels/roles`, and `inputs, buttons, filters, rows, empty/error/loading states` requirement |
|
|
147
152
|
| `Harness/workflows/ts-react-frontend.md` (if installed as optional) | Same UI selector contract as above |
|
|
148
153
|
|
|
149
|
-
**Files that do NOT need manual merge when the path does not already exist (auto-created by harness):**
|
|
154
|
+
**Files that do NOT need manual merge when the path does not already exist (auto-created by harness):**
|
|
155
|
+
|
|
156
|
+
The generated file list is authoritative by path, not by stale count labels. Current common scaffolds include WF-MAX manager agents and `tdd-guide`; keep every file created by the scaffold unless a removal workflow explicitly classifies it as safe to remove.
|
|
150
157
|
|
|
151
158
|
- `Harness/memory/tool-usage-reflections.md`, `Harness/memory/user-corrections-preferences.md`, `Harness/memory/agent-lessons-patterns.md` — these are new empty files
|
|
152
|
-
- `.claude/agents/*.md`
|
|
159
|
+
- `.claude/agents/*.md` - all built-in common agent files, including WF-MAX managers and `tdd-guide`
|
|
153
160
|
- `.claude/skills/*.md` and mirrored `.agents/skills/*.md` — Claude Code and Codex skill adapters over the same Harness docs
|
|
154
|
-
- `.claude/rules/ecc/common.md`
|
|
161
|
+
- `.claude/rules/ecc/common.md` - required project-local universal rules. Do not delete this file as a duplicate of a global `~/.claude/rules/ecc/common/` directory; they are different scopes.
|
|
155
162
|
- `.claude/settings.json` — harness settings
|
|
156
163
|
- `Harness/WF.md`, `Harness/lifecycle.md`, `Harness/subagents.md`, `Harness/agent-workflow.md`, `Harness/architecture.md` — harness runtime docs
|
|
157
164
|
- `Harness/research/*.md` — research protocol and templates
|
|
@@ -314,5 +321,5 @@ After scaffolding, use the JSON output first. Files in `plan.create[]` were hand
|
|
|
314
321
|
|
|
315
322
|
1. Read `CLAUDE.md`, `Harness/MEMORY.md`, and `Harness/README.md`.
|
|
316
323
|
2. Follow the Required Bootstrap Sequence above.
|
|
317
|
-
3. Run `node Harness/scripts/validate-harness.mjs --strict`
|
|
324
|
+
3. Run `node Harness/scripts/validate-harness.mjs` after install. Run `node Harness/scripts/validate-harness.mjs --strict` after bootstrap resolves project-fact placeholders.
|
|
318
325
|
4. Delete `Harness/SETUP.md`.
|