create-harness-vibe-coding 0.8.10 → 0.8.12

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-CN.md CHANGED
@@ -2,7 +2,7 @@
2
2
  <img src="https://img.shields.io/npm/v/create-harness-vibe-coding?color=blue" alt="npm version">
3
3
  <img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="Node.js >= 18">
4
4
  <img src="https://img.shields.io/npm/l/create-harness-vibe-coding" alt="MIT license">
5
- <img src="https://img.shields.io/github/stars/zingspark/create-harness-vibe-coding?style=social" alt="GitHub stars">
5
+ <img src="https://img.shields.io/github/stars/LiWeny16/create-harness-vibe-coding?style=social" alt="GitHub stars">
6
6
  </p>
7
7
 
8
8
  <p align="center">
@@ -17,7 +17,7 @@
17
17
 
18
18
  <p align="center">
19
19
  <a href="README.md">English</a> ·
20
- <a href="https://github.com/zingspark/create-harness-vibe-coding">GitHub</a> ·
20
+ <a href="https://github.com/LiWeny16/create-harness-vibe-coding">GitHub</a> ·
21
21
  <a href="https://www.npmjs.com/package/create-harness-vibe-coding">npm</a>
22
22
  </p>
23
23
 
@@ -33,7 +33,7 @@
33
33
 
34
34
  把下面这句话原样丢给正在使用的 Agent:
35
35
 
36
- > 请根据 https://github.com/zingspark/create-harness-vibe-coding/blob/main/README-CN.md 安装 Harness 框架。
36
+ > 请根据 https://github.com/LiWeny16/create-harness-vibe-coding/blob/main/README-CN.md 安装 Harness 框架。
37
37
 
38
38
  ## 安装说明(Agent instruction)
39
39
 
@@ -219,4 +219,4 @@ my-project/
219
219
  └── .opencode/ ← OpenCode 配置
220
220
  ```
221
221
 
222
- MIT © [zingspark](https://github.com/zingspark)
222
+ MIT © [LiWeny16](https://github.com/LiWeny16)
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  <img src="https://img.shields.io/npm/v/create-harness-vibe-coding?color=blue" alt="npm version">
3
3
  <img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="Node.js >= 18">
4
4
  <img src="https://img.shields.io/npm/l/create-harness-vibe-coding" alt="MIT license">
5
- <img src="https://img.shields.io/github/stars/zingspark/create-harness-vibe-coding?style=social" alt="GitHub stars">
5
+ <img src="https://img.shields.io/github/stars/LiWeny16/create-harness-vibe-coding?style=social" alt="GitHub stars">
6
6
  </p>
7
7
 
8
8
  <p align="center">
@@ -17,7 +17,7 @@
17
17
 
18
18
  <p align="center">
19
19
  <a href="README-CN.md">Chinese</a> ·
20
- <a href="https://github.com/zingspark/create-harness-vibe-coding">GitHub</a> ·
20
+ <a href="https://github.com/LiWeny16/create-harness-vibe-coding">GitHub</a> ·
21
21
  <a href="https://www.npmjs.com/package/create-harness-vibe-coding">npm</a>
22
22
  </p>
23
23
 
@@ -44,7 +44,7 @@ Idea → Research → PRD → Architecture → Acceptance Criteria
44
44
 
45
45
  Paste this into your agent:
46
46
 
47
- > Please install the Harness framework by following https://github.com/zingspark/create-harness-vibe-coding/blob/main/README.md.
47
+ > Please install the Harness framework by following https://github.com/LiWeny16/create-harness-vibe-coding/blob/main/README.md.
48
48
 
49
49
  ## Installation instructions (Agent instruction)
50
50
 
@@ -147,7 +147,7 @@ The generated project starts with no business stack or generated application cod
147
147
  Paste this to your agent:
148
148
 
149
149
  ```text
150
- Read and follow https://github.com/zingspark/create-harness-vibe-coding exactly to configure this project with create-harness-vibe-coding.
150
+ Read and follow https://github.com/LiWeny16/create-harness-vibe-coding exactly to configure this project with create-harness-vibe-coding.
151
151
  ```
152
152
 
153
153
  The agent-first path previews the target before writing and preserves project-owned files. If you need the detailed CLI contract, the agent can read `Harness/SETUP.md` after setup.
@@ -204,4 +204,4 @@ node Harness/scripts/validate-harness.mjs --strict
204
204
 
205
205
  AI coding agent framework · agentic workflow · context engineering · long-running coding tasks · task orchestration · durable memory · safe merge · conflict handling · acceptance criteria · Claude Code · Codex · OpenCode · Node.js CLI · developer productivity
206
206
 
207
- MIT © [zingspark](https://github.com/zingspark)
207
+ MIT © [LiWeny16](https://github.com/LiWeny16)
@@ -106,7 +106,7 @@
106
106
  <mxCell id="80" value="One command. Zero drift. Agent success, life success." style="text;html=1;align=center;verticalAlign=middle;fontSize=12;fontStyle=0;fontColor=#374151;" vertex="1" parent="1" >
107
107
  <mxGeometry x="350" y="880" width="600" height="24" as="geometry" />
108
108
  </mxCell>
109
- <mxCell id="81" value="MIT © zingspark · github.com/zingspark/create-harness-vibe-coding" style="text;html=1;align=center;verticalAlign=middle;fontSize=10;fontStyle=0;fontColor=#9ca3af;" vertex="1" parent="1" >
109
+ <mxCell id="81" value="MIT © LiWeny16 · github.com/LiWeny16/create-harness-vibe-coding" style="text;html=1;align=center;verticalAlign=middle;fontSize=10;fontStyle=0;fontColor=#9ca3af;" vertex="1" parent="1">
110
110
  <mxGeometry x="400" y="910" width="500" height="18" as="geometry" />
111
111
  </mxCell>
112
112
  <mxCell id="82" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#4f46e5;strokeColor=none;opacity=30;" vertex="1" parent="1" >
@@ -161,4 +161,4 @@
161
161
  </root>
162
162
  </mxGraphModel>
163
163
  </diagram>
164
- </mxfile>
164
+ </mxfile>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-harness-vibe-coding",
3
- "version": "0.8.10",
3
+ "version": "0.8.12",
4
4
  "description": "Scaffold a 0-1 product harness for AI-assisted research, PRD, planning, architecture, build, test, and feedback loops",
5
5
  "type": "module",
6
6
  "bin": {
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "repository": {
35
35
  "type": "git",
36
- "url": "git+https://github.com/zingspark/create-harness-vibe-coding.git"
36
+ "url": "git+https://github.com/LiWeny16/create-harness-vibe-coding.git"
37
37
  },
38
38
  "keywords": [
39
39
  "claude-code",
@@ -1,6 +1,6 @@
1
1
  {
2
- "generator": "0.8.10",
3
- "generated": "2026-07-21T04:52:37.663Z",
2
+ "generator": "0.8.12",
3
+ "generated": "2026-07-22T08:15:49.785Z",
4
4
  "options": [],
5
5
  "autoCheck": true,
6
6
  "source": "https://raw.githubusercontent.com/zingspark/create-harness-vibe-coding/main/templates/common/",
@@ -92,14 +92,14 @@
92
92
  "Harness/MEMORY.md": "sha256-4cbb881b3e9893e917861dc250afaedf5b88da6c99626a9c7f6abb8132841b09",
93
93
  "Harness/MEMORY_PROTOCOL.md": "sha256-c8cda68bf25fbf7152c6049959a8bd6d39453976a651a1c4a9d3f7e349f823c4",
94
94
  "Harness/README.md": "sha256-4c8f30de9face43960088d240127860b43a2b821d1988c23a9cd1c0502ba35f7",
95
- "Harness/SETUP.md": "sha256-008472ad2be5681e2616af29ad57cccbca122065de7bddfe22c683e3470d9fd5",
95
+ "Harness/SETUP.md": "sha256-3265cec5114ce42200d0555771e07d2355bcb5dfdf26c8725226e28df67eeaa4",
96
96
  "Harness/TASK_ARCHIVE.md": "sha256-d815f2c99a7dc98b9956bb876e9ee07dfb66a283c758124d7b4eb8965dea1f6a",
97
97
  "Harness/TDD-GUIDE.md": "sha256-602084530fd0dea7499a023ce75738351e5d97a0c222b64d405f36da6b59a162",
98
98
  "Harness/WF-AUTO-ANGLES.md": "sha256-b9641d871f728e8112ad0d8c7f87bcbec0a06aa572c5f3060efdd26496abdf9b",
99
- "Harness/WF-AUTO-SPARK.md": "sha256-8fc879261f71f81c5a64e37a6aed8b72fd78ca01c5c9f318a15f4a0a594b4783",
99
+ "Harness/WF-AUTO-SPARK.md": "sha256-bfd5096d4994d87bc79e72e460cd291403f6240054bbc6ce4b08503196d29c1f",
100
100
  "Harness/WF-AUTO.md": "sha256-7898a38ee9ce9cf1c49aa7e3603c17afc68544981dca7d91e2e4149ca2fc5aea",
101
101
  "Harness/WF-KERNEL.md": "sha256-97c626574f62dceaa590829d99e46889b86cab5658d7827c704788e4afdda030",
102
- "Harness/WF-MAX.md": "sha256-a125dddc1e6a854f71fc360dd4fff7d576dbdd4e6141d29de2f5787d6f48b5e0",
102
+ "Harness/WF-MAX.md": "sha256-92f7d23ebaf935142cc741833a7cb98c3cfab1aa845551b291319e0f8817d018",
103
103
  "Harness/WF-STATE.md": "sha256-80fdaa4b133a9f632a252e4d2fca51bb96f9f9779dab2bc6f3d791d0d2d3aae8",
104
104
  "Harness/WF.md": "sha256-199f6c3899cf0d8c86d65fd61e90e85ee9f8aa4c8fc56889f995f05e11987816",
105
105
  "Harness/agent-workflow.md": "sha256-a91c3732ffb545506cec88c875d76ebe92248d0714da3e398d2a13b06349bef4",
@@ -109,11 +109,11 @@
109
109
  "Harness/lifecycle.md": "sha256-a2d025e52f3b4412d8439083aca0d2cf7a4458ad0e30de4fc6465f990379190f",
110
110
  "Harness/research/README.md": "sha256-956c154df01cb9376972eb8b88bb3be0fe4e2dda802a72457c0126e3476fa755",
111
111
  "Harness/scripts/archive-tasks.mjs": "sha256-07bba20c2f4b3baae737b8b9a951125a48e37dd482a1f1ca122b9cf88e90e956",
112
- "Harness/scripts/scan-clean.mjs": "sha256-76fb4212897ea3f366d33b7defee87611c01e9de75c745adfe828745c6fd0887",
113
- "Harness/scripts/validate-harness.mjs": "sha256-53339f20c291666fe703cda73325b0b9bca0b4a67dc703d7876a4b1a4d8d6bd9",
112
+ "Harness/scripts/scan-clean.mjs": "sha256-1278900563545d67d1d4057d66a03a95f5e9aede0d33ac5d6d0837a72a38d4b0",
113
+ "Harness/scripts/validate-harness.mjs": "sha256-a6174f918453943387df8015664f81599ea74a179bec351d22187ec0a19a1e7c",
114
114
  "Harness/scripts/wf-auto-update-prompt.mjs": "sha256-14210304dbd8e648b8939fc4c5d3664f943052153e689264c16b05b7b81bd39e",
115
115
  "Harness/scripts/wf-remove.mjs": "sha256-576bc92325bf63d4142eb6028d095f12abf9d845a1a178dfe247b813794476a9",
116
- "Harness/scripts/wf-update-check.mjs": "sha256-41f7a3c9324d006dc745557031c31d4b9319eaf7fc78df5cfdec671a24c90838",
116
+ "Harness/scripts/wf-update-check.mjs": "sha256-8d883930676126f4308ecdfedd3fccb7c62e170c8086723ed2c10d44e580a7e1",
117
117
  "Harness/subagents.md": "sha256-f2e81c21792b4d70c64c9bd22e9548d783d945dddb3504b4937e04ca1d04320d",
118
118
  "Harness/templates/ACCEPTANCE.template.md": "sha256-394a6c08b155b1d121f1d51da774f7988bdb891224c6d5f2ca2c131e8c95ffb3",
119
119
  "Harness/templates/API_CONTRACT.template.md": "sha256-e11ec9866576624982f35e77359e3f4ef3aea3e3f6b5895f6cc5419d29699fc5",
@@ -109,7 +109,7 @@ When `--on-conflict skip` leaves existing files untouched, the script still owns
109
109
 
110
110
  2. For each file in `agent.aiMergeRequired[]`, use its `templateHint` to locate the harness template counterpart only when semantic comparison is needed:
111
111
  - From npm: `node_modules/create-harness-vibe-coding/<templateHint>`
112
- - From GitHub: `https://raw.githubusercontent.com/zingspark/create-harness-vibe-coding/main/<templateHint>`
112
+ - From GitHub: `https://raw.githubusercontent.com/LiWeny16/create-harness-vibe-coding/main/<templateHint>`
113
113
 
114
114
  3. For each skipped file:
115
115
  - Read the existing project file.
@@ -24,6 +24,8 @@ WF-AUTO-SPARK is a `/wf` variant layered on WF-AUTO: it inherits the WF-KERNEL c
24
24
 
25
25
  Accepted spark candidates re-enter the standard W2-W5 gates per [WF-KERNEL.md](WF-KERNEL.md): implementer (one file_claim, ≤3 files, ≤50 lines), verifier, reviewer(s), reflector. Spark searchers are read-only. Any implementation must use the dispatch packet from `Harness/dispatch.md` with explicit write set, forbidden truth files, AC IDs, and verification commands. A candidate with no verifier evidence or no reflector PASS is not accepted, even if the idea is valuable.
26
26
 
27
+ For task-state writes, CEO provides concise bullets and decisions; task-scribe formats task-state writes for roadmap, cycle PLAN, heartbeat, evidence pointers, and closeout. If task-scribe is unavailable, CEO may write the smallest durable checkpoint and must record that degradation in `PROGRESS.md`. This keeps the high-reasoning controller focused on decisions instead of spending tokens formatting process files.
28
+
27
29
  ## Startup: Roadmap Declaration
28
30
 
29
31
  Before first spark cycle, CEO MUST declare a roadmap. This is written to `Harness/tasks/auto/SPARK-ROADMAP.md`.
@@ -89,12 +91,12 @@ STARTUP: Declare roadmap (North Star + Milestones) → user confirms
89
91
  │ ↓ │
90
92
  │ VERIFY + CROSS-REVIEW + REFLECTOR PASS │
91
93
  │ ↓ │
92
- │ VALUE REFLECTION: CEO writes in PROGRESS.md
94
+ │ VALUE REFLECTION: CEO gives bullets; task-scribe writes PROGRESS.md
93
95
  │ "Driven by [source]. Matters because [reason]. │
94
96
  │ Without this [consequence]. User notices [evidence]." │
95
97
  │ ↓ │
96
98
  │ MILESTONE CHECK: Is current milestone complete? │
97
- │ Yes → update SPARK-ROADMAP.md, celebrate in PROGRESS
99
+ │ Yes → task-scribe updates SPARK-ROADMAP.md + PROGRESS
98
100
  │ No → continue │
99
101
  │ ↓ │
100
102
  │ RE-ANCHOR GATE (every 10 cycles): │
@@ -122,6 +124,13 @@ STARTUP: Declare roadmap (North Star + Milestones) → user confirms
122
124
  | 7 | **Developer Experience** | WebSearch / Docs | New tooling, better CLI patterns, improved error messages |
123
125
  | 8 | **Performance Benchmarks** | WebSearch | Industry benchmarks, optimization techniques, profiling tools |
124
126
 
127
+ ### Spark Search Fallbacks
128
+
129
+ - If a researcher/search subagent is filtered, unavailable, or blocked by tool policy, CEO may run direct WebSearch/Tavily for discovery only and records `searchFallback: ceo-direct`.
130
+ - If a scoped skill name is unavailable, use the unscoped skill name plus a dispatch packet; if that still fails, continue with direct search and record the failure.
131
+ - Discovery fallback never authorizes source edits. Any accepted candidate still needs the standard implementer/verifier/reviewer/reflector chain.
132
+ - Search breadth is adaptive. Rotate source families and record skipped families; do not require a fixed count of external searches.
133
+
125
134
  ## Deviation Guard (50% Rule)
126
135
 
127
136
  ### What "50% deviation" means
@@ -161,7 +170,7 @@ Milestones CANNOT be changed without user confirmation IF:
161
170
 
162
171
  ## Value Reflection (per cycle)
163
172
 
164
- After EVERY spark cycle, CEO writes:
173
+ After EVERY spark cycle, CEO gives the value-reflection bullets and task-scribe writes:
165
174
 
166
175
  ```text
167
176
  ## Cycle N — Value Reflection
@@ -177,6 +186,10 @@ Cumulative deviation (10-cycle): [X]%
177
186
 
178
187
  If CEO CANNOT write a convincing value reflection → spark was NOT valuable → record as rejected and move on.
179
188
 
189
+ ### Reflector Escalation
190
+
191
+ CEO may self-score low-risk candidates during pre-implementation triage, but final acceptance for an implemented spark still requires verifier evidence, cross-review, and reflector PASS. Use a reflector subagent for milestone completion, cumulative deviation concerns, high-risk changes, multi-file implementation, conflicting reviewer findings, or unclear value.
192
+
180
193
  ## Stop Condition
181
194
 
182
195
  **Spark mode does NOT auto-stop.** Only these events stop it:
@@ -199,6 +212,10 @@ If CEO CANNOT write a convincing value reflection → spark was NOT valuable →
199
212
  | SP4 | **Silent North Star drift** | Small changes accumulate, direction shifts without noticing | Cumulative deviation check every 10 cycles |
200
213
  | SP5 | **Milestone rot** | Milestones become irrelevant but aren't updated | Milestone review at Re-Anchor Gate |
201
214
  | SP6 | **Spark tunnel vision** | Only looking at one type of source | Rotate through the registered source families and record skipped sources |
215
+ | SP7 | **Literal anti-pattern matching** | A rule only catches one exact phrase and misses nearby violations | State the invariant and forbidden behavior, not just a magic string |
216
+ | SP8 | **Checksum drift after doc changes** | Root docs, templates, or `.harness-version` disagree after edits | Sync root + templates, then run `node scripts/build-version.mjs --check` |
217
+ | SP9 | **Process-file token burn** | CEO spends high-reasoning tokens formatting PLAN/PROGRESS/ROADMAP | CEO sends bullets; task-scribe formats task-state writes |
218
+ | SP10 | **Fake delegation** | In-process helper calls are logged as independent workers | Record channel fallback honestly; discovery fallback is not implementation delegation |
202
219
 
203
220
  ## Integration with /wf-auto
204
221
 
@@ -260,7 +277,7 @@ WF-AUTO-SPARK uses a dedicated task capsule at `Harness/tasks/auto/`. Shared wit
260
277
 
261
278
  ### PLAN.md Format (per cycle)
262
279
 
263
- Before implementing, CEO writes one cycle plan:
280
+ Before implementing, CEO gives one cycle-plan brief and task-scribe writes:
264
281
 
265
282
  ```markdown
266
283
  # Cycle N Plan
@@ -26,9 +26,43 @@ WF-MAX is **explicit only**. Enter ONLY when the user explicitly types `/wf-max`
26
26
 
27
27
  CEO reads, plans, dispatches, synthesizes, and writes task state only.
28
28
  - **CEO never writes production source code.** All source edits are delegated to Workers.
29
- - CEO may spawn task-scribe (haiku) to maintain dispatch ledger and heartbeat.
29
+ - CEO spawns task-scribe (haiku) by default to maintain dispatch ledger, heartbeat, and evidence pointers; if unavailable, CEO records the degradation and writes only the smallest durable checkpoint.
30
30
  - CEO may spawn codebase-explorer(s) (haiku) for scoped source discovery.
31
31
 
32
+ ## Worker Channel Degradation & Independence
33
+
34
+ WF-MAX Workers MUST execute as **independent agent contexts** — never as in-process tool calls from the CEO thread. When a worker channel is unavailable, degrade honestly; never disguise an in-process tool call as a Worker.
35
+
36
+ ### Independence Levels
37
+
38
+ | Channel | Independence | Counts as Worker? |
39
+ |---|---|---|
40
+ | native subagent (Agent-tool dispatch) | independent | yes |
41
+ | peer CLI (`claude -p`, `codex exec`, `opencode run`) | independent (separate process) | yes |
42
+ | MCP tools (`mcp__codex.codex_implement`, `mcp__claude.claude_implement`, etc.) | inprocess (CEO thread) | NEVER |
43
+
44
+ ### Degradation Chain
45
+
46
+ When delegating source edits to a Worker, try channels in order; descend on failure; when all independent channels are unavailable, stop honestly and ask the user — do NOT fall back to an in-process MCP tool:
47
+
48
+ 0. **Probe first** — before dispatching any Worker, run `node Harness/scripts/probe-worker-channels.mjs` and read the live matrix (`Harness/tasks/auto/CHANNEL-MATRIX.md`). Degrade based on facts, not assumptions. Start the chain at the highest-priority channel the probe reports `available`.
49
+ 1. native subagent (preferred — independent context, bounded writeSet)
50
+ 2. `claude -p` peer CLI (independent process)
51
+ 3. `codex exec` peer CLI (independent process)
52
+ 4. all unavailable → honest pause + human escalation (record blocker in task PROGRESS.md)
53
+
54
+ ### Hard Prohibition
55
+
56
+ `mcp__codex.codex_implement`, `mcp__claude.claude_implement`, and any CEO-thread MCP tool call MUST NOT be recorded or used as Worker execution. An in-process tool call has no independent context boundary and no enforced writeSet — using it and logging "CEO did not edit source" is fake compliance. Historical instance: `tasks/task-framework-metrics-and-entry-contract/PLAN.md:791`.
57
+
58
+ ### Timeout & Retry
59
+
60
+ Every channel probe is bounded to ≤15s via `Promise.race` (see `probe-worker-channels.mjs`). A Worker dispatch that returns `unavailable-timeout` or `unavailable-error` (transient) is retried **once**; a second failure descends to the next channel in the chain. WF-MAX MUST NEVER hang on an unresponsive channel (historical failure: a 300s Codex read-only query hang, `tasks/task-framework-metrics-and-entry-contract/PLAN.md`). Bounded probes + single retry + honest descent replace silent hangs.
61
+
62
+ ### Probe the current environment
63
+
64
+ Run `node Harness/scripts/probe-worker-channels.mjs` to get the live availability + independence matrix (see `tasks/auto/CHANNEL-MATRIX.md`). Degrade based on facts, not assumptions.
65
+
32
66
  ## Parallelism Priority
33
67
 
34
68
  1. Read-only exploration — max parallel, all readSets
@@ -51,7 +85,7 @@ Manager_max = min(max(Manager_min * 2, Manager_min), 7)
51
85
  - One file_claim per write Worker
52
86
  - WriteSet must be disjoint across parallel Workers
53
87
  - Workers return <=250 tokens + evidence/file paths
54
- - task-scribe (haiku) runs alongside any wave
88
+ - task-scribe (haiku) runs alongside any wave when available; process-file delegation is the default, not a token-heavy CEO formatting task
55
89
 
56
90
  ## Token Budget and Fan-Out Caps
57
91
 
@@ -23,7 +23,7 @@ import { createInterface } from 'readline';
23
23
  const __dirname = dirname(fileURLToPath(import.meta.url));
24
24
  const ROOT = process.env.WF_ROOT ? resolve(process.env.WF_ROOT) : resolve(__dirname, '..', '..');
25
25
  const VERSION_FILE = resolve(ROOT, 'Harness', '.harness-version');
26
- const DEFAULT_SOURCE_BASE = 'https://raw.githubusercontent.com/zingspark/create-harness-vibe-coding/main/templates/common/';
26
+ const DEFAULT_SOURCE_BASE = 'https://raw.githubusercontent.com/LiWeny16/create-harness-vibe-coding/main/templates/common/';
27
27
 
28
28
  // ── Classification constants ────────────────────────────────────────
29
29
 
@@ -325,6 +325,23 @@ for (const taskDir of taskDirs) {
325
325
  }
326
326
  }
327
327
 
328
+ // M2: MCP-as-Worker fake-compliance guard.
329
+ // Task capsules MUST NOT record mcp__codex.codex_implement / mcp__claude.claude_implement
330
+ // as Worker execution. Historical do-not-repeat references are allowed only when the
331
+ // file is marked ANTI-PATTERN. See Harness/WF-MAX.md "Worker Channel Degradation & Independence".
332
+ const MCP_AS_WORKER_RE = /mcp__(?:codex)\.codex_implement|mcp__(?:claude)\.claude_implement/;
333
+ for (const taskDir of taskDirs) {
334
+ if (!taskDir.startsWith('task-')) continue;
335
+ for (const f of ['PLAN.md', 'PROGRESS.md']) {
336
+ const rel = `Harness/tasks/${taskDir}/${f}`;
337
+ const text = read(rel);
338
+ if (!text) continue;
339
+ if (MCP_AS_WORKER_RE.test(text) && !/ANTI-PATTERN/i.test(text)) {
340
+ errors.push(`${rel} records mcp__*.implement as Worker execution (fake compliance; see WF-MAX.md "Worker Channel Degradation & Independence"). Mark historical references with "ANTI-PATTERN" or remove the tool call.`);
341
+ }
342
+ }
343
+ }
344
+
328
345
  if (fs.existsSync(path.join(root, 'Harness/research/scaffolds.md'))) {
329
346
  errors.push('legacy research file should be renamed: Harness/research/scaffolds.md -> Harness/research/research-results.md');
330
347
  }
@@ -711,6 +728,12 @@ requireText('Harness/WF-AUTO.md', 'reflector PASS', 'wf-auto reflector gate');
711
728
  requireText('Harness/WF-AUTO-SPARK.md', 'Inherited Execution Chain', 'wf-auto-spark inherited execution chain');
712
729
  requireText('Harness/WF-AUTO-SPARK.md', 'External spark search replaces discovery only', 'wf-auto-spark discovery-only inheritance');
713
730
  requireText('Harness/WF-AUTO-SPARK.md', 'reflector PASS', 'wf-auto-spark reflector gate');
731
+ requireText('Harness/WF-AUTO-SPARK.md', 'task-scribe formats task-state writes', 'wf-auto-spark task-scribe recorder delegation');
732
+ requireText('Harness/WF-AUTO-SPARK.md', 'searchFallback: ceo-direct', 'wf-auto-spark search fallback');
733
+ requireText('Harness/WF-AUTO-SPARK.md', 'pre-implementation triage', 'wf-auto-spark reflector escalation');
734
+ requireText('Harness/WF-AUTO-SPARK.md', 'Literal anti-pattern matching', 'wf-auto-spark anti-pattern invariant guard');
735
+ requireText('Harness/WF-AUTO-SPARK.md', 'node scripts/build-version.mjs --check', 'wf-auto-spark checksum drift guard');
736
+ requireText('Harness/WF-MAX.md', 'process-file delegation is the default', 'WF-MAX task-scribe process-file delegation default');
714
737
  requireText('Harness/MEMORY_PROTOCOL.md', 'Scenario Memory Hints', 'memory protocol scenario hints');
715
738
  requireText('Harness/MEMORY_PROTOCOL.md', 'WF closeout', 'memory protocol WF closeout injection row');
716
739
  requireText('Harness/MEMORY_PROTOCOL.md', 'memory-master owns writes', 'memory protocol memory write ownership');
@@ -852,6 +875,7 @@ requireText('Harness/WF-KERNEL.md', 'small-fast', 'WF-KERNEL small-fast tier map
852
875
  // WF variants reference WF-KERNEL
853
876
  requireText('Harness/WF.md', 'WF-KERNEL.md', 'WF.md references WF-KERNEL');
854
877
  requireText('Harness/WF-MAX.md', 'WF-KERNEL.md', 'WF-MAX.md references WF-KERNEL');
878
+ requireText('Harness/WF-MAX.md', 'probe-worker-channels.mjs', 'WF-MAX references worker-channel probe (M3 anti-regression)');
855
879
 
856
880
  // Tier-aware acceptance: WF-Light must NOT require global cross-review/reflector
857
881
  requireText('Harness/WF.md', 'Cross-review and reflector NOT mandatory', 'WF.md WF-Light no mandatory cross-review');
@@ -23,7 +23,7 @@ import { fileURLToPath } from 'url';
23
23
  const __dirname = dirname(fileURLToPath(import.meta.url));
24
24
  const ROOT = process.env.WF_ROOT ? resolve(process.env.WF_ROOT) : resolve(__dirname, '..', '..');
25
25
  const VERSION_FILE = resolve(ROOT, 'Harness', '.harness-version');
26
- const GITHUB_REPO = 'zingspark/create-harness-vibe-coding';
26
+ const GITHUB_REPO = 'LiWeny16/create-harness-vibe-coding';
27
27
  const GITHUB_LATEST_STABLE = `https://api.github.com/repos/${GITHUB_REPO}/releases/latest`;
28
28
  const RAW_GITHUB = `https://raw.githubusercontent.com/${GITHUB_REPO}`;
29
29
  const TEMPLATE_SUBPATH = 'templates/common/';