litclaude-ai 0.3.37 → 0.3.39

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/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.39 - 2026-08-04 — executable plan validation
4
+
5
+ - Require planner handoff to use a generated plan that passes
6
+ `PLAN_STRUCTURE_PASS`, and make start-work reject fresh initialization or a
7
+ stale replay when the plan has zero executable top-level checkbox tasks.
8
+ Rejection occurs before durable state creation or replay ledger
9
+ reconciliation, with generated-plan-to-start-work contract coverage.
10
+
11
+ ## 0.3.38 - 2026-08-02 — figure output safety
12
+
13
+ - `lit-scientific-visualization` now requires an explicit, user-approved output
14
+ path and forbids overwriting a figure the task did not create. The immutable
15
+ vendor examples it defers to save to fixed names (`figure1.pdf`, `figure1.png`,
16
+ `multi_panel.pdf`), and figures are written through Bash rather than the file
17
+ tools, so the harness read-before-write guard never sees them — copying an
18
+ example literally could clobber a file in the user's working directory.
19
+
3
20
  ## Unreleased — `lit-comprehend` explainer artifacts
4
21
 
5
22
  - Add the `lit-comprehend` skill, the `/litclaude:lit-comprehend` command, and the
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
  <p align="center">
11
11
  <img src="https://img.shields.io/badge/npm-litclaude--ai-cb3837" />
12
- <img src="https://img.shields.io/badge/version-0.3.37-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.3.39-2ea44f" />
13
13
  <img src="https://img.shields.io/badge/Claude%20Code-plugin-blueviolet" />
14
14
  <img src="https://img.shields.io/badge/license-MIT-blue" />
15
15
  </p>
@@ -41,11 +41,11 @@ later mode change or uninstall.
41
41
  Claude Code's native command surface and do not double-activate the hook
42
42
  - **Deep interview mode** - type `/deep-interview` or `$deep-interview` to
43
43
  turn broad intent into a spec before planning or implementation
44
- - **Workflow review discipline** - adds `review-work` 5-lane review discipline and
45
- litgoal runtime docs without claiming a package publication has completed
46
- - **Dynamic workflow hardening** - adds stricter subagent assignment
47
- contracts, `start-work-next`, context-pressure resume guidance, precise
48
- mutated-file detection, and richer `workflow-check --json` readiness checks
44
+ - **Workflow review discipline** - `review-work` audits a draft plan or completed
45
+ work across five evidence lanes and never implements what it reviewed
46
+ - **Dynamic workflow discipline** - subagent assignments carry `TASK:`,
47
+ `DELIVERABLE`, `SCOPE`, and `VERIFY`; `start-work-next` resumes an interrupted
48
+ run, and `workflow-check --json` reports readiness before full QA
49
49
  - **Build-decision gate** - a minimum-first check that runs before the
50
50
  language gate and prefers the standard library, a native feature, or an
51
51
  installed dependency over hand-rolled code, with a reuse review after writing
@@ -174,18 +174,18 @@ cd /tmp
174
174
  npx --yes litclaude-ai@latest install
175
175
  ```
176
176
 
177
- `0.3.37` is the version prepared by this checkout. Registry lookup is authoritative
177
+ `0.3.39` is the version prepared by this checkout. Registry lookup is authoritative
178
178
  for whether that exact version can be installed:
179
179
 
180
180
  ```bash
181
- npm view litclaude-ai@0.3.37 version
181
+ npm view litclaude-ai@0.3.39 version
182
182
  ```
183
183
 
184
- If that lookup returns 0.3.37, the exact install is available:
184
+ If that lookup returns 0.3.39, the exact install is available:
185
185
 
186
186
  ```bash
187
187
  cd /tmp
188
- npx --yes litclaude-ai@0.3.37 install
188
+ npx --yes litclaude-ai@0.3.39 install
189
189
  ```
190
190
 
191
191
  Otherwise, wait for explicit human publication and repeat the lookup before using
@@ -216,7 +216,7 @@ The installer also sets Claude Code's `statusLine` command to the packaged
216
216
  LitClaude HUD. A typical no-color render starts like:
217
217
 
218
218
  ```text
219
- [🔥LITCLAUDE v0.3.37] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
219
+ [🔥LITCLAUDE v0.3.39] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
220
220
  ```
221
221
 
222
222
  The `↻` suffix is a compact rate-limit reset countdown. It is separated from
@@ -297,50 +297,30 @@ After install, start Claude Code:
297
297
  ```bash
298
298
  claude
299
299
  ```
300
+ Then type one of these prompts. Each row is a natural phrase; the `$name` and `/name` forms of the
301
+ same route work too, and the full trigger list with activation rules lives in
302
+ [docs/hooks.md](./docs/hooks.md).
303
+
304
+ | Type this | What it does |
305
+ |---|---|
306
+ | `lit`, `litwork` | Start the Litwork execution loop — evidence-first, test-first |
307
+ | `lit plan <what>` | Planning only. Also `$lit-plan`, `/lit-plan` |
308
+ | `lit review <scope>` | Review a draft plan or completed work. Also `$review-work`, `/review-work` |
309
+ | `lit research <question>` | Saturating research with a claim/source graph. Also `$litresearch`, `/litclaude:litresearch` |
310
+ | `lit search <question>` | Public-source retrieval |
311
+ | `lit query <question>` | Evidence lookup against durable state |
312
+ | `lit goal <outcome>` | Bind one objective plus checkable criteria. Also `$litgoal`, `/litgoal` |
313
+ | `lit workflow <objective>` | Propose a Dynamic workflow for broad delegated work |
314
+ | `lit dynamic workflow`, `lit ultracode` | The same route, stronger opt-in wording |
315
+ | `lit team`, `lit team mode`, `lit teammates` | Native agent teams, when the experimental gate is on |
316
+ | `lit start work <plan>` | `BLOCKED:` by design — use `/start-work` or `$start-work` with the approved plan |
317
+ | `handoff`, `/litclaude:lit-handoff` | Write a verified continuation packet |
318
+ | `$deep-interview`, `/deep-interview` | Turn an underspecified request into a decision-complete brief |
319
+ | `$lit-loop`, `/lit-loop`, `/litclaude:lit-loop` | The explicit evidence loop |
320
+ | `lit-scientific-visualization` | Publication figures. Also `/litclaude:lit-scientific-visualization` |
321
+ | `autoresearch <mode> <objective>` | Autonomous research loop. Also `/litclaude:autoresearch` |
322
+ | `autoconference <mode> <objective>` | Multi-agent research conference. Also `/litclaude:autoconference` |
300
323
 
301
- Then type one of these prompts:
302
-
303
- ```text
304
- lit
305
- litwork
306
- lit plan <what you want planned>
307
- lit review <scope to review>
308
- lit research <research question>
309
- lit search <public-source question>
310
- lit query <evidence question>
311
- lit goal <outcome and criteria>
312
- lit workflow <parallel or delegated objective>
313
- lit dynamic workflow <parallel or delegated objective>
314
- lit ultracode <parallel or delegated objective>
315
- lit team <collaborative objective>
316
- lit team mode <collaborative objective>
317
- lit teammates <collaborative objective>
318
- lit start work <approved plan>
319
- $lit-plan <what you want planned>
320
- /lit-plan <what you want planned>
321
- $lit-loop <what you want executed with evidence>
322
- /lit-loop <what you want executed with evidence>
323
- $deep-interview <what needs clarification>
324
- /deep-interview <what needs clarification>
325
- $dynamic-workflow <parallel or delegated objective>
326
- /dynamic-workflow <parallel or delegated objective>
327
- $review-work <scope to review>
328
- /review-work <scope to review>
329
- $litgoal <goal operation>
330
- /litgoal <goal operation>
331
- $start-work plans/example-plan.md
332
- /start-work plans/example-plan.md
333
- handoff
334
- /litclaude:lit-handoff
335
- lit-scientific-visualization
336
- /litclaude:lit-scientific-visualization <publication figure request>
337
- autoresearch <mode> <objective>
338
- /litclaude:autoresearch <mode> <objective>
339
- autoconference <mode> <objective>
340
- /litclaude:autoconference <mode> <objective>
341
- wikify <init|ingest|query|save|lint> <scope or question>
342
- /litclaude:wikify <init|ingest|query|save|lint> <scope or question>
343
- ```
344
324
 
345
325
  Expected behavior: LitClaude's prompt hook adds mode-specific `LITWORK MODE
346
326
  ENABLED` context for natural LIT routes and shows `LitClaude lit hook active` as
package/README_ko-KR.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
  <p align="center">
11
11
  <img src="https://img.shields.io/badge/npm-litclaude--ai-cb3837" />
12
- <img src="https://img.shields.io/badge/version-0.3.37-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.3.39-2ea44f" />
13
13
  <img src="https://img.shields.io/badge/Claude%20Code-plugin-blueviolet" />
14
14
  <img src="https://img.shields.io/badge/license-MIT-blue" />
15
15
  </p>
@@ -183,18 +183,18 @@ cd /tmp
183
183
  npx --yes litclaude-ai@latest install
184
184
  ```
185
185
 
186
- `0.3.37`은 이 checkout에서 준비 중인 version입니다. exact version의 설치 가능
186
+ `0.3.39`은 이 checkout에서 준비 중인 version입니다. exact version의 설치 가능
187
187
  여부에는 registry 조회 결과를 authoritative한 기준으로 사용합니다.
188
188
 
189
189
  ```bash
190
- npm view litclaude-ai@0.3.37 version
190
+ npm view litclaude-ai@0.3.39 version
191
191
  ```
192
192
 
193
- 조회 결과가 0.3.37이면 exact install을 사용할 수 있습니다.
193
+ 조회 결과가 0.3.39이면 exact install을 사용할 수 있습니다.
194
194
 
195
195
  ```bash
196
196
  cd /tmp
197
- npx --yes litclaude-ai@0.3.37 install
197
+ npx --yes litclaude-ai@0.3.39 install
198
198
  ```
199
199
 
200
200
  그렇지 않으면 명시적인 human publication을 기다립니다. 게시 후 조회를 다시 실행해
@@ -225,7 +225,7 @@ installer는 Claude Code의 `statusLine` command도 packaged LitClaude HUD로
225
225
  설정합니다. 색상을 제거한 예시는 다음처럼 시작합니다.
226
226
 
227
227
  ```text
228
- [🔥LITCLAUDE v0.3.37] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
228
+ [🔥LITCLAUDE v0.3.39] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
229
229
  ```
230
230
 
231
231
  `↻` 표시는 rate-limit reset까지 남은 시간을 짧게 보여주는 countdown입니다.
@@ -1,6 +1,6 @@
1
1
  # LitClaude Release Checklist
2
2
 
3
- Status: `litclaude-ai@0.3.37` is the current release candidate — exact canonical
3
+ Status: `litclaude-ai@0.3.39` is the current release candidate — exact canonical
4
4
  frontend corpus plus Claude-native `autoresearch`, `autoconference`, and `wikify`
5
5
  workflow-family integration. It byte-pins the frontend library, legal companions,
6
6
  family source closures, and adapters through independent commitments and package
@@ -45,9 +45,9 @@ side-effect-free, the launcher starts only a separate Claude Code
45
45
  print/background worker, and the release preserves the Korean polishing
46
46
  command, strict multi-agent review pipeline, fidelity guardrails, package
47
47
  hygiene checks, native route gates, and safe start-work handoff behavior.
48
- `package.json` is aligned to `0.3.37`,
49
- `plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.37`, and the
50
- plugin-local MCP server reports `0.3.37`.
48
+ `package.json` is aligned to `0.3.39`,
49
+ `plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.39`, and the
50
+ plugin-local MCP server reports `0.3.39`.
51
51
 
52
52
  This release carries the v0.2.2 Dynamic workflow hardening surfaces:
53
53
  `/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
@@ -280,9 +280,9 @@ checkout and from an isolated install of the packed tarball:
280
280
  Before requesting publication approval, confirm these artifacts from the current
281
281
  checkout:
282
282
 
283
- - `package.json` version is `0.3.37`.
284
- - `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.37`.
285
- - `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.37`.
283
+ - `package.json` version is `0.3.39`.
284
+ - `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.39`.
285
+ - `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.39`.
286
286
  - Prompt-hook tests cover bundled `SKILL.md` body injection for bare `hyperplan`, `litresearch`, `lit research`, `init-deep`, and explicit leading `$start-work`; diagnostic/copy mentions stay inert while leading natural-language `lit start work` stays BLOCKED.
287
287
  - `lit search` and `lit query` route to `/litclaude:litresearch` without activating on slash mentions, code spans, or non-lit prompts.
288
288
  - Litresearch web lanes require public API/feed preference, validator-first checks, route traces, prompt-injection quarantine, and honest auth/paywall/private-data stop reasons.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litclaude-ai",
3
- "version": "0.3.37",
3
+ "version": "0.3.39",
4
4
  "description": "Claude Code-native workflow distribution.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "litclaude",
3
3
  "description": "Claude Code-native workflow plugin with a bounded-authority start-work lifecycle.",
4
- "version": "0.3.37",
4
+ "version": "0.3.39",
5
5
  "author": {
6
6
  "name": "LitClaude contributors"
7
7
  },
@@ -3,7 +3,7 @@
3
3
  import { readPublicSource } from "../lib/public-source-reader/reader.mjs";
4
4
 
5
5
  const protocolVersion = "2024-11-05";
6
- const serverVersion = "0.3.37";
6
+ const serverVersion = "0.3.39";
7
7
 
8
8
  const publicSourceReadTool = {
9
9
  name: "public_source_read",
@@ -504,6 +504,10 @@ export const initializeStartWork = (root, request) => withLock(root, () => {
504
504
  const fingerprint = requestHash("init", normalized);
505
505
  const replay = idempotentReplay(existing, request.idempotencyKey, fingerprint);
506
506
  if (replay) {
507
+ const replayPlan = canonicalPlan(canonicalCwd, request.plan);
508
+ if (readPlanProgress(replayPlan).total === 0) {
509
+ throw new StartWorkLifecycleError("plan has no top-level checkbox tasks");
510
+ }
507
511
  reconcileLedger(canonicalCwd, existing);
508
512
  return replay;
509
513
  }
@@ -531,6 +535,7 @@ export const initializeStartWork = (root, request) => withLock(root, () => {
531
535
 
532
536
  const timestamp = nowIso();
533
537
  const progress = readPlanProgress(plan);
538
+ if (progress.total === 0) throw new StartWorkLifecycleError("plan has no top-level checkbox tasks");
534
539
  const work = {
535
540
  work_id: request.workId,
536
541
  status: "active",
@@ -49,7 +49,8 @@ verdicts: [PASS, DEGRADED, FAIL, BLOCKED]
49
49
  5. Insert both the installed source root's `scripts/` and `assets/` directories into Python's module search path. Import `rcparams` and export helpers from `scripts/`, and import `color_palettes` from `assets/`; adding only `scripts/` is incomplete because the immutable source's palette example imports `color_palettes` as a top-level module. Resolve `.mplstyle` resources from that same `assets/` directory.
50
50
  6. Validate the data semantics before choosing a chart. Independent observations remain scatter-only; a line requires an ordered trajectory or justified model fit.
51
51
  7. Generate the smallest correct figure, export the requested vector and/or 600+ DPI raster artifacts, and inspect layout, clipping, legends, axes, labels, accessibility, and file integrity.
52
- 8. Report dependency status, exact outputs, verification observations, and residual limitations.
52
+ 8. Save to an explicit output path the user chose or approved. The immutable source examples save to fixed names such as `figure1.pdf`, `figure1.png`, and `multi_panel.pdf`; copying those literally writes into the user's working directory. Never overwrite an existing file that this task did not create — check first, and ask when the intended name is already taken.
53
+ 9. Report dependency status, exact outputs, verification observations, and residual limitations.
53
54
 
54
55
  ## #contract.outputs
55
56