litclaude-ai 0.3.30 → 0.3.32

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,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.32 - 2026-07-23 — bounded-authority start-work lifecycle
4
+
5
+ - Added a code-owned schema-3 start-work runtime with canonical authority roots,
6
+ semantic grants, monotonic revisions, idempotency, lock ownership, and durable
7
+ ledger reconciliation.
8
+ - Enforced active authority through Claude Code PreToolUse, exact single-use
9
+ UserPromptSubmit resume grants, and fail-closed forbidden release boundaries.
10
+ - Bound root sessions, subagent lanes, Claude-owned worktrees, fenced-safe plan
11
+ progress, and bounded Stop continuation receipts into completion checks.
12
+ - Kept zero-dependency CI executable without lockfile-only npm setup, made Stop
13
+ re-entry non-blocking with fresh normal-event progress checks, and made invalid
14
+ no-state resume attempts side-effect-free.
15
+
16
+ ## 0.3.31 - 2026-07-22 — litgoal lifecycle and visual QA hardening
17
+
18
+ - Made duplicate litgoal creation byte-preserving, required explicit replacement
19
+ for a different active objective, and rejected completion with empty criteria.
20
+ - Made all-pass autoloops complete and disarm durably with idempotent completion
21
+ receipts, repairable ledger writes, and fail-open preservation of corrupt counters.
22
+ - Clarified visual QA backend ownership, authentication boundaries, bounded waits,
23
+ advisory metrics, blocked states, and observed cleanup receipts.
24
+
3
25
  ## 0.3.30 - 2026-07-19 — LitResearch scientific records and public-reader hardening
4
26
 
5
27
  - Added root-owned append-only claim/evidence records, bounded expansion and
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.30-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.3.32-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>
@@ -22,10 +22,10 @@
22
22
  > `litclaude@litclaude-ai`, so normal `claude` launches can load the
23
23
  > LitClaude skills and hooks without a long `--plugin-dir` command.
24
24
 
25
- This checkout is prepared as `litclaude-ai@0.3.30` for personal install
25
+ This checkout is prepared as `litclaude-ai@0.3.32` for personal install
26
26
  convenience. The repo can remain quiet; preparing npm package metadata here does
27
27
  not imply public repo promotion, marketplace publication, or advertisement.
28
- Future package releases still require explicit user approval. The v0.3.30 release material strengthens LitResearch with root-owned scientific evidence records, DOI/PDF lifecycle receipts, bounded route coverage, and a connection-pinned public-source reader with inert-content and secret-redaction guarantees. The v0.3.29 release material bundles exact-source `lit-handoff` and `lit-scientific-visualization` skills with Claude-native commands, exact-bare hook invocation, visible LITBURN banners, installed-payload integrity checks, and read-only scientific dependency diagnostics. The v0.3.28 release material requires explicit leading start-work invocations so diagnostic or copied mentions remain inert. The v0.3.27 release material adds a structured, animated five-stage installer with a success or failure receipt while preserving deterministic automation output. The v0.3.26 release material adds adaptive objective-achievable planning, draft-plan review, and orchestration readiness hardening. The v0.3.25 release material aligns portable details, public-read, litgoal status JSON, and evidence wording. The v0.3.24 release material aligns auxiliary skill inventories and advisory probes. The v0.3.23
28
+ Future package releases still require explicit user approval. The v0.3.32 release material adds the code-owned schema-3 start-work lifecycle with canonical bounded authority, explicit single-use resume grants, PreToolUse enforcement, root/subagent lane identity, progress-bound Stop continuation receipts, and fail-closed release boundaries. The v0.3.31 release material hardens litgoal creation, replacement, completion, and autoloop receipts while making visual QA browser ownership, bounded waits, blocked states, and cleanup evidence explicit. The v0.3.30 release material strengthens LitResearch with root-owned scientific evidence records, DOI/PDF lifecycle receipts, bounded route coverage, and a connection-pinned public-source reader with inert-content and secret-redaction guarantees. The v0.3.29 release material bundles exact-source `lit-handoff` and `lit-scientific-visualization` skills with Claude-native commands, exact-bare hook invocation, visible LITBURN banners, installed-payload integrity checks, and read-only scientific dependency diagnostics. The v0.3.28 release material requires explicit leading start-work invocations so diagnostic or copied mentions remain inert. The v0.3.27 release material adds a structured, animated five-stage installer with a success or failure receipt while preserving deterministic automation output. The v0.3.26 release material adds adaptive objective-achievable planning, draft-plan review, and orchestration readiness hardening. The v0.3.25 release material aligns portable details, public-read, litgoal status JSON, and evidence wording. The v0.3.24 release material aligns auxiliary skill inventories and advisory probes. The v0.3.23
29
29
  release materials inject the bundled skill bodies for bare `hyperplan`,
30
30
  `litresearch`, `lit research`, `init-deep`, and explicit `$start-work` prompt-hook routes while
31
31
  preserving the v0.3.19 adversarial planning skill, the v0.3.18 read-only `lit-recap` session recap surface, the v0.3.17 separate-worker native `/goal` launcher, the v0.3.16
@@ -131,7 +131,7 @@ directory, the normal install command works:
131
131
 
132
132
  ```bash
133
133
  cd /tmp
134
- npx --yes litclaude-ai@0.3.30 install
134
+ npx --yes litclaude-ai@0.3.32 install
135
135
  ```
136
136
 
137
137
  Validate the installed plugin:
@@ -144,7 +144,7 @@ The installer also sets Claude Code's `statusLine` command to the packaged
144
144
  LitClaude HUD. A typical no-color render starts like:
145
145
 
146
146
  ```text
147
- [🔥LITCLAUDE v0.3.30] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
147
+ [🔥LITCLAUDE v0.3.32] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
148
148
  ```
149
149
 
150
150
  The `↻` suffix is a compact rate-limit reset countdown. It is separated from
@@ -332,12 +332,48 @@ When a long `$start-work` run is interrupted, compacted, or resumed in a new
332
332
  terminal pane, use the continuation helper from the checkout:
333
333
 
334
334
  ```bash
335
- litclaude-ai start-work-next --json
335
+ litclaude-ai start-work-next --session-id <claude-session> --json
336
336
  ```
337
337
 
338
338
  It reads `.litclaude/boulder.json` and `.litclaude/start-work/ledger.jsonl`, then prints the
339
- active plan, ledger path, and first unchecked top-level task. If the plan is
340
- complete, it returns `{"status":"idle","directive":null}`.
339
+ active plan, ledger path, and first unchecked top-level task. Schema-3 state
340
+ requires the owning Claude session id and otherwise fails closed to idle. If the
341
+ plan is complete, it returns `{"status":"idle","directive":null}`.
342
+
343
+ Start-work now has a code-owned schema-3 bounded-authority lifecycle:
344
+
345
+ ```bash
346
+ litclaude-ai start-work init --plan plans/example-plan.md --work-id work-1 --session-id <claude-session> --grant read:"$PWD" --grant write:"$PWD" --grant execute:"$PWD" --grant test:"$PWD" --idempotency-key init-1 --json
347
+ litclaude-ai start-work status --json
348
+ litclaude-ai start-work progress --work-id work-1 --session-id <claude-session> --expected-revision <n> --idempotency-key progress-1 --json
349
+ ```
350
+
351
+ The runtime owns monotonic revisions, nonce/PID-owned locks, strict reconciliation,
352
+ canonical plan/worktree/authority roots, bounded state history, fenced-safe
353
+ top-level checkbox progress, and semantic action/root grants. Null worktree is
354
+ cwd only when cwd is authorized. A new non-forbidden authority boundary pauses
355
+ the work; forbidden release, registry, host-config, destructive VCS, commit,
356
+ push, publish, tag, and version-bump boundaries fail closed. Paused work cannot
357
+ complete.
358
+
359
+ Resume has no generic CLI or agent approval route. The trusted user submits exactly:
360
+
361
+ ```text
362
+ /litclaude:start-work resume --work-id <id> --revision <n> --boundary-id <id> --prompt-id <id> --grant-id <id>
363
+ ```
364
+
365
+ `UserPromptSubmit` validates the active Claude session, origin prompt, and exact
366
+ pending boundary, records the single-use consumed grant durably, and injects
367
+ bounded structured context without echoing prompt text. Official `PreToolUse`
368
+ enforces semantic action/root grants before execution; `PostToolUse` only
369
+ observes. Bash paths are canonicalized against their effective grant, while
370
+ outside operands, relocation flags, and shell forms requiring speculative
371
+ parsing are denied. Stop uses `prompt_id` and strict boolean `stop_hook_active`:
372
+ each normal Stop event re-evaluates current plan progress and emits once for a
373
+ new fingerprint, while host re-entry with `stop_hook_active: true` stays silent
374
+ instead of replaying stale blocking output. Subagent hooks
375
+ bind root-session, child-lane, and Claude-owned worktree identity; active lanes
376
+ gate completion.
341
377
 
342
378
  For v0.2.0 workflow parity, `review-work` is the dedicated review route. It is a
343
379
  5-lane review: scope/diff verification, tests/evidence execution,
@@ -470,6 +506,7 @@ unavailable capabilities are reported as `DEGRADED` with the affected workflow.
470
506
  | `npx --yes litclaude-ai --version` | Print the packaged LitClaude version |
471
507
  | `npx --yes litclaude-ai doctor` | Validate files, Claude plugin validation, and plugin details |
472
508
  | `npx --yes litclaude-ai path` | Print the installed Claude plugin path |
509
+ | `npx --yes litclaude-ai start-work <command> --json` | Manage schema-3 bounded-authority work state |
473
510
  | `npx --yes litclaude-ai public-read <url> --json` | Read a public source with SSRF/auth safety stops |
474
511
  | `npx --yes litclaude-ai run -- --help` | Run plain `claude` after verifying install state |
475
512
  | `npx --yes litclaude-ai update` | Reinstall the current package version |
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.30-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.3.32-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>
@@ -26,11 +26,11 @@
26
26
  > 설치되므로, 매번 긴 `--plugin-dir` 없이 일반 `claude` 실행에서
27
27
  > LitClaude skill과 hook을 불러올 수 있습니다.
28
28
 
29
- 현재 checkout은 `litclaude-ai@0.3.30` 배포 준비용으로 정리되어 있습니다. 목적은
29
+ 현재 checkout은 `litclaude-ai@0.3.32` 배포 준비용으로 정리되어 있습니다. 목적은
30
30
  다른 PC에서도 빠르게 설치하기 위한 개인용 package metadata를 갖추는 것입니다.
31
31
  npm package metadata를 준비했다고 해서 홍보, 공개 저장소 운영, Claude
32
32
  marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적
33
- 승인 후에 진행합니다. v0.3.30 release material은 root-owned scientific evidence record, DOI/PDF lifecycle receipt, bounded route coverage, connection-pinned public-source reader, inert-content 및 secret-redaction 보장을 포함하는 LitResearch 강화판입니다. v0.3.29 release material은 exact-source `lit-handoff`와 `lit-scientific-visualization` skill, Claude-native command, exact-bare hook invocation, visible LITBURN banner, installed-payload integrity check, read-only scientific dependency diagnostic을 함께 포함합니다. v0.3.28 release material은 start-work 호출을 prompt 선두의 명시적 invocation으로 제한해 진단문이나 복사된 언급을 비활성 상태로 유지합니다. v0.3.27 release material은 success/failure receipt와 deterministic automation output을 갖춘 5-stage animated installer를 추가합니다. v0.3.26 release material은 adaptive objective-achievable planning, draft-plan review, orchestration readiness hardening을 추가합니다. v0.3.25 release material은 portable details, public-read, litgoal status JSON, evidence wording을 정렬합니다. v0.3.24 release material은 auxiliary skill inventory와 advisory probe를 정렬합니다. v0.3.23 release material은 bare `hyperplan`,
33
+ 승인 후에 진행합니다. v0.3.32 release material은 canonical bounded authority, single-use resume grant, PreToolUse enforcement, root/subagent lane identity, progress-bound Stop continuation receipt, fail-closed release boundary를 갖춘 code-owned schema-3 start-work lifecycle을 추가합니다. v0.3.31 release material은 litgoal 생성·교체·완료와 autoloop receipt를 강화하고 visual QA의 browser ownership, bounded wait, blocked state, cleanup evidence를 명확히 합니다. v0.3.30 release material은 root-owned scientific evidence record, DOI/PDF lifecycle receipt, bounded route coverage, connection-pinned public-source reader, inert-content 및 secret-redaction 보장을 포함하는 LitResearch 강화판입니다. v0.3.29 release material은 exact-source `lit-handoff`와 `lit-scientific-visualization` skill, Claude-native command, exact-bare hook invocation, visible LITBURN banner, installed-payload integrity check, read-only scientific dependency diagnostic을 함께 포함합니다. v0.3.28 release material은 start-work 호출을 prompt 선두의 명시적 invocation으로 제한해 진단문이나 복사된 언급을 비활성 상태로 유지합니다. v0.3.27 release material은 success/failure receipt와 deterministic automation output을 갖춘 5-stage animated installer를 추가합니다. v0.3.26 release material은 adaptive objective-achievable planning, draft-plan review, orchestration readiness hardening을 추가합니다. v0.3.25 release material은 portable details, public-read, litgoal status JSON, evidence wording을 정렬합니다. v0.3.24 release material은 auxiliary skill inventory와 advisory probe를 정렬합니다. v0.3.23 release material은 bare `hyperplan`,
34
34
  `litresearch`, `lit research`, `init-deep`, explicit `$start-work` prompt-hook route에
35
35
  bundled skill body를 주입하면서, v0.3.19 adversarial planning
36
36
  skill, v0.3.18 read-only `lit-recap` session recap surface, v0.3.17 별도 worker 기반 native `/goal`
@@ -131,7 +131,7 @@ checkout을 먼저 해석해서 `sh: litclaude-ai: command not found`로 실패
131
131
 
132
132
  ```bash
133
133
  cd /tmp
134
- npx --yes litclaude-ai@0.3.30 install
134
+ npx --yes litclaude-ai@0.3.32 install
135
135
  ```
136
136
 
137
137
  설치 상태를 확인합니다.
@@ -144,7 +144,7 @@ installer는 Claude Code의 `statusLine` command도 packaged LitClaude HUD로
144
144
  설정합니다. 색상을 제거한 예시는 다음처럼 시작합니다.
145
145
 
146
146
  ```text
147
- [🔥LITCLAUDE v0.3.30] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
147
+ [🔥LITCLAUDE v0.3.32] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
148
148
  ```
149
149
 
150
150
  `↻` 표시는 rate-limit reset까지 남은 시간을 짧게 보여주는 countdown입니다.
@@ -307,7 +307,7 @@ litclaude-ai workflow-check --json
307
307
  checkout에서 continuation helper를 실행합니다.
308
308
 
309
309
  ```bash
310
- litclaude-ai start-work-next --json
310
+ litclaude-ai start-work-next --session-id <claude-session> --json
311
311
  ```
312
312
 
313
313
  이 명령은 `.litclaude/boulder.json`과 `.litclaude/start-work/ledger.jsonl`을 읽고 active
@@ -1,7 +1,12 @@
1
1
  # LitClaude Release Checklist
2
2
 
3
- Status: `litclaude-ai@0.3.30` is the current release candidate — root-owned
4
- scientific evidence records, DOI/PDF lifecycle receipts, bounded route coverage,
3
+ Status: `litclaude-ai@0.3.32` is the current release candidate — a code-owned
4
+ schema-3 start-work lifecycle with canonical bounded authority, single-use
5
+ resume grants, PreToolUse enforcement, root/subagent lane identity, bounded Stop
6
+ continuation receipts, and fail-closed release boundaries, plus guarded litgoal
7
+ creation and replacement, durable idempotent autoloop completion, and explicit
8
+ visual QA backend ownership, bounded waits, blocked states, and cleanup receipts,
9
+ plus root-owned scientific evidence records, DOI/PDF lifecycle receipts, bounded route coverage,
5
10
  connection-pinned public-source reads, inert-content receipts, and deep secret
6
11
  redaction, plus bundled
7
12
  exact-source `lit-handoff` and `lit-scientific-visualization` skills with
@@ -23,9 +28,9 @@ side-effect-free, the launcher starts only a separate Claude Code
23
28
  print/background worker, and the release preserves the Korean polishing
24
29
  command, strict multi-agent review pipeline, fidelity guardrails, package
25
30
  hygiene checks, native route gates, and safe start-work handoff behavior.
26
- `package.json` is aligned to `0.3.30`,
27
- `plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.30`, and the
28
- plugin-local MCP server reports `0.3.30`.
31
+ `package.json` is aligned to `0.3.32`,
32
+ `plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.32`, and the
33
+ plugin-local MCP server reports `0.3.32`.
29
34
 
30
35
  This release carries the v0.2.2 Dynamic workflow hardening surfaces:
31
36
  `/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
@@ -69,6 +74,28 @@ Use this track when testing from the current checkout:
69
74
 
70
75
  No npm publication is required for this track.
71
76
 
77
+ ## v0.3.32 Bounded-Authority Start-Work Gates
78
+
79
+ Before requesting publication approval, confirm schema-3 state remains
80
+ monotonic and reconciled, semantic action/root grants are canonicalized,
81
+ forbidden release actions fail closed, and only the exact single-use
82
+ `/litclaude:start-work resume` UserPromptSubmit route can resume paused work.
83
+ Confirm PreToolUse denies unauthorized tools before execution, root/subagent
84
+ lane identity gates completion, fenced examples do not count as plan progress,
85
+ normal Stop events re-evaluate progress while `stop_hook_active: true` re-entry
86
+ never replays a stale block, and an exact invalid no-state resume creates no
87
+ `.litclaude` state. Confirm the zero-dependency GitHub Actions path uses neither
88
+ lockfile-only npm caching nor a dependency-install step.
89
+
90
+ ## v0.3.31 Litgoal Lifecycle and Visual QA Gates
91
+
92
+ Before requesting publication approval, confirm duplicate objectives remain
93
+ byte-preserving, different active objectives require explicit replacement, and
94
+ empty criteria cannot complete. Confirm all-pass autoloops complete and disarm
95
+ once with repairable ledger receipts, corrupt counters remain untouched on the
96
+ fail-open path, and visual QA uses only an owned project Playwright setup or an
97
+ explicit current-session Chrome binding with bounded waits and observed cleanup.
98
+
72
99
  ## v0.3.30 LitResearch and Public Reader Gates
73
100
 
74
101
  Before requesting publication approval, confirm the installed LitResearch body
@@ -111,9 +138,9 @@ checkout and from an isolated install of the packed tarball:
111
138
  Before requesting publication approval, confirm these artifacts from the current
112
139
  checkout:
113
140
 
114
- - `package.json` version is `0.3.30`.
115
- - `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.30`.
116
- - `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.30`.
141
+ - `package.json` version is `0.3.32`.
142
+ - `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.32`.
143
+ - `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.32`.
117
144
  - 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.
118
145
  - `lit search` and `lit query` route to `/litclaude:litresearch` without activating on slash mentions, code spans, or non-lit prompts.
119
146
  - Litresearch web lanes require public API/feed preference, validator-first checks, route traces, prompt-injection quarantine, and honest auth/paywall/private-data stop reasons.
@@ -123,7 +150,7 @@ checkout:
123
150
  - `node bin/litclaude-ai.js workflow-check --json` reports `status: pass`.
124
151
  - `node bin/litclaude-ai.js workflow-check --json` reports
125
152
  `subagentReliability` and `commandHookAgreement` as true.
126
- - `node bin/litclaude-ai.js start-work-next --json` is available for active
153
+ - `node bin/litclaude-ai.js start-work-next --session-id <claude-session> --json` is available for active
127
154
  `.litclaude/boulder.json` continuation state and returns idle when no task remains.
128
155
  - PostToolUse hook tests cover patch-shaped mutated-file extraction.
129
156
  - SessionStart hook tests cover context-pressure resume guidance.
@@ -19,6 +19,7 @@ import { HUD_ACCENT_THEMES, normalizeHudAccent, themeForAccent } from "../plugin
19
19
  import { readPublicSource } from "../plugins/litclaude/lib/public-source-reader/reader.mjs";
20
20
  import { verifyBundledSkillsIntegrity } from "../plugins/litclaude/lib/bundled-skills-integrity.mjs";
21
21
  import { runStartWorkContinuationCli } from "../plugins/litclaude/lib/start-work-continuation.mjs";
22
+ import { runStartWorkCli } from "../plugins/litclaude/lib/start-work-cli.mjs";
22
23
  import { runLitgoalCli } from "../plugins/litclaude/lib/litgoal/cli.mjs";
23
24
  import { runWorkflowCheckCli } from "../plugins/litclaude/lib/workflow-check.mjs";
24
25
 
@@ -26,7 +27,7 @@ const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
26
27
  const packageJson = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
27
28
  const version = packageJson.version;
28
29
 
29
- const usage = `Usage: litclaude-ai [--dry-run] <install|doctor|path|run|update|uninstall|litgoal|workflow-check|start-work-next|public-read> [...args]
30
+ const usage = `Usage: litclaude-ai [--dry-run] <install|doctor|path|run|update|uninstall|litgoal|workflow-check|start-work|start-work-next|public-read> [...args]
30
31
  litclaude-ai --version
31
32
 
32
33
  Commands:
@@ -36,6 +37,7 @@ Commands:
36
37
  run -- ... Run Claude Code after the global plugin install.
37
38
  litgoal Manage litgoal runtime state and evidence.
38
39
  workflow-check Verify Dynamic workflow, /goal, and subagent delegation readiness.
40
+ start-work Manage schema-3 bounded-authority lifecycle state.
39
41
  start-work-next Print the next active start-work continuation directive.
40
42
  public-read Read a public http(s) source with FetchAttempt/FetchVerdict JSON.
41
43
  update Reinstall this package version and refresh the Claude plugin registry.
@@ -638,6 +640,10 @@ const verifyInstalledPayload = ({ home, litClaudeHome, targetPlugin }) => {
638
640
  ".claude-plugin/plugin.json",
639
641
  "hooks/hooks.json",
640
642
  "bin/litclaude-hook.js",
643
+ "lib/start-work-lifecycle.mjs",
644
+ "lib/start-work-cli.mjs",
645
+ "skills/start-work/SKILL.md",
646
+ "commands/start-work.md",
641
647
  "bin/litclaude-scientific-visualization-doctor.js",
642
648
  "skills/lit-handoff/SKILL.md",
643
649
  "commands/lit-handoff.md",
@@ -793,6 +799,10 @@ const doctor = ({ dryRun }) => {
793
799
  "hooks/hooks.json",
794
800
  "bin/litclaude-hook.js",
795
801
  "bin/litclaude-mcp.js",
802
+ "lib/start-work-lifecycle.mjs",
803
+ "lib/start-work-cli.mjs",
804
+ "skills/start-work/SKILL.md",
805
+ "commands/start-work.md",
796
806
  "skills/lit-loop/SKILL.md",
797
807
  "skills/lit-plan/SKILL.md",
798
808
  "skills/lit-handoff/SKILL.md",
@@ -973,6 +983,9 @@ const main = async () => {
973
983
  case "start-work-next":
974
984
  process.exit(runStartWorkContinuationCli(root, parsed.rest));
975
985
  break;
986
+ case "start-work":
987
+ process.exit(runStartWorkCli(parsed.rest, undefined, process.cwd()));
988
+ break;
976
989
  case "uninstall":
977
990
  uninstall(parsed);
978
991
  break;
package/docs/hooks.md CHANGED
@@ -10,7 +10,7 @@ contract_schema_version: litclaude.llm-contract.v1
10
10
  artifact_type: hook-doc
11
11
  surface: Claude Code plugin hooks
12
12
  runtime: plugins/litclaude/bin/litclaude-hook.js
13
- events: [SessionStart, UserPromptSubmit, PostToolUse, PostCompact, Stop]
13
+ events: [SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PostCompact, Stop, SubagentStart, SubagentStop, SessionEnd]
14
14
  verdicts: [PASS, FAIL, BLOCKED]
15
15
  ```
16
16
 
@@ -31,10 +31,13 @@ verdicts: [PASS, FAIL, BLOCKED]
31
31
  | Event or route | Contract mode | Hard boundary |
32
32
  | --- | --- | --- |
33
33
  | `SessionStart` | rules bootstrap | Adds context only; no file mutation. |
34
- | `UserPromptSubmit` | route classifier | Adds guidance only; never runs prompt text or slash commands. |
34
+ | `UserPromptSubmit` | route classifier and explicit resume gate | Adds guidance; only the exact start-work resume route may mutate code-owned lifecycle state. |
35
+ | `PreToolUse` | bounded-authority enforcement | Allows normal Claude permission handling only for classified, authorized action/root pairs; otherwise denies before execution. |
35
36
  | `PostToolUse` | post-edit reminder | Names touched paths and asks for checks; does not claim completion. |
36
37
  | `PostCompact` | context reset | Emits a compact cache reminder only. |
37
- | `Stop` | litgoal autoloop gate | Default-off and fail-safe; no unbounded loop. |
38
+ | `Stop` | start-work continuation, then litgoal autoloop gate | Root-session and progress-bound; no unbounded loop. |
39
+ | `SubagentStart` / `SubagentStop` | lane identity observation | Records the root session, child lane, and Claude-owned worktree without emitting child continuation. |
40
+ | `SessionEnd` | root-session receipt | Records the observed end and emits no continuation. |
38
41
 
39
42
  ## #contract.procedure
40
43
 
@@ -60,7 +63,7 @@ verdicts: [PASS, FAIL, BLOCKED]
60
63
 
61
64
  - Do not echo dangerous prompt substrings, secrets, or command text into hook output.
62
65
  - Do not claim native `/goal`, Dynamic workflow, EnterWorktree, MCP, LSP, or agent-team success unless Claude Code exposes and confirms that surface.
63
- - Do not mutate files, ledgers, host settings, registries, or remote state from UserPromptSubmit context.
66
+ - Do not mutate files, host settings, registries, or remote state from UserPromptSubmit. The sole ledger exception is the exact trusted start-work resume route, which mutates only code-owned schema-3 lifecycle state after identity checks.
64
67
 
65
68
  ## #contract.anti_patterns
66
69
 
@@ -75,8 +78,52 @@ verdicts: [PASS, FAIL, BLOCKED]
75
78
  | --- | --- | --- |
76
79
  | `SessionStart` | `plugins/litclaude/bin/litclaude-hook.js session-start` | Adds a compact rules-loaded context line. |
77
80
  | `UserPromptSubmit` | `plugins/litclaude/bin/litclaude-hook.js user-prompt-submit` | Detects litwork/lit prompts and injects workflow context. |
81
+ | `PreToolUse` | `plugins/litclaude/bin/litclaude-hook.js pre-tool-use` | Enforces semantic action/root grants before Write, Edit, MultiEdit, NotebookEdit, Bash, Agent, and bounded read tools execute. |
78
82
  | `PostToolUse` | `plugins/litclaude/bin/litclaude-hook.js post-tool-use` | Reminds the session to run post-edit checks. |
79
83
  | `PostCompact` | `plugins/litclaude/bin/litclaude-hook.js post-compact` | Resets compacted rule context after summarization. |
84
+ | `Stop` | `plugins/litclaude/bin/litclaude-hook.js stop` | Emits bounded start-work continuation on new progress, otherwise applies the opt-in litgoal autoloop gate. |
85
+ | `SubagentStart` | `plugins/litclaude/bin/litclaude-hook.js subagent-start` | Registers child-lane and Claude-owned worktree identity. |
86
+ | `SubagentStop` | `plugins/litclaude/bin/litclaude-hook.js subagent-stop` | Finalizes the lane without child continuation. |
87
+ | `SessionEnd` | `plugins/litclaude/bin/litclaude-hook.js session-end` | Records root-session end without blocking Claude. |
88
+
89
+ ## Bounded-authority start-work lifecycle
90
+
91
+ The hook and CLI share `plugins/litclaude/lib/start-work-lifecycle.mjs`.
92
+ Schema-3 `.litclaude/boulder.json` owns active work/session identity, monotonic
93
+ revision, canonical roots, semantic action/root grants, consumed grants,
94
+ fenced-safe progress, bounded events/history, and terminal state. CLI mutations
95
+ use exact idempotency keys, exclusive locks, and ledger reconciliation.
96
+ PreToolUse Bash handling recognizes only a small command grammar: every
97
+ permitted path operand is canonicalized and checked against the matching
98
+ semantic grant, while relocation flags, shell syntax that would require a
99
+ speculative parser, and unverified or outside targets are denied without
100
+ creating an approval boundary.
101
+
102
+ Resume is the only mutating `UserPromptSubmit` exception. It accepts only the
103
+ complete prompt below, with no surrounding explanation or extra arguments:
104
+
105
+ ```text
106
+ /litclaude:start-work resume --work-id <id> --revision <n> --boundary-id <id> --prompt-id <id> --grant-id <id>
107
+ ```
108
+
109
+ The hook matches the owning Claude session and exact paused boundary before
110
+ recording the grant. There is no generic CLI resume or agent-callable approval
111
+ bypass. Returned `<litclaude-start-work-context>` JSON is bounded structured
112
+ data and contains no raw prompt. Stop ignores subagents and stale work/revision
113
+ events; each normal Stop re-evaluates progress, a new fingerprint emits once,
114
+ and `stop_hook_active: true` re-entry stays silent so stale output cannot block
115
+ again. Later unchanged turns are silent. Transcript pressure checks read only regular,
116
+ non-symlink files at or below 256 KiB.
117
+ Continuation receipts use the same bounded window as retained state events.
118
+ They remain bounded audit receipts, not re-entry instructions; neither retained
119
+ nor evicted receipts reconstructs a blocking continuation.
120
+
121
+ LitClaude intentionally does not register `WorktreeCreate` or `WorktreeRemove`.
122
+ Registering `WorktreeCreate` replaces Claude Code's native git-worktree
123
+ implementation and obligates the hook to create and return the worktree itself.
124
+ Instead, `SubagentStart.cwd` observes each Claude-owned worktree and binds it to
125
+ the root session and lane; `SubagentStop` marks host removal as expected without
126
+ pretending LitClaude owns creation or deletion.
80
127
 
81
128
  ## Workflow Trigger Phrases
82
129
 
package/docs/migration.md CHANGED
@@ -95,7 +95,7 @@ agreement. Operators can verify availability with:
95
95
  litclaude-ai workflow-check --json
96
96
  ```
97
97
 
98
- Long `$start-work` runs can also use `litclaude-ai start-work-next --json` to
98
+ Long `$start-work` runs can also use `litclaude-ai start-work-next --session-id <claude-session> --json` to
99
99
  recover the active plan, ledger path, and first unchecked top-level task from
100
100
  local `.litclaude` state after a compacted or interrupted session.
101
101
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litclaude-ai",
3
- "version": "0.3.30",
3
+ "version": "0.3.32",
4
4
  "description": "Claude Code-native workflow distribution.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "litclaude",
3
- "description": "Claude Code-native workflow plugin.",
4
- "version": "0.3.30",
3
+ "description": "Claude Code-native workflow plugin with a bounded-authority start-work lifecycle.",
4
+ "version": "0.3.32",
5
5
  "author": {
6
6
  "name": "LitClaude contributors"
7
7
  },
8
8
  "homepage": "https://github.com/wjgoarxiv/litclaude",
9
9
  "repository": "https://github.com/wjgoarxiv/litclaude",
10
10
  "license": "MIT",
11
- "keywords": ["claude-code", "hooks", "skills", "agents", "lsp", "workflow"],
11
+ "keywords": ["claude-code", "hooks", "skills", "agents", "lsp", "workflow", "start-work-lifecycle"],
12
12
  "skills": "./skills",
13
13
  "mcpServers": "./.mcp.json",
14
14
  "lspServers": "./.lsp.json",
@@ -79,3 +79,21 @@ replace the approved plan unless evidence proves a blocker or stale state. Write
79
79
  the failing test first, make the smallest change, run verification, capture
80
80
  real-surface evidence, and report cleanup. Your DoneClaim must name changed
81
81
  files, exact tests, real-surface evidence, risks, and cleanup receipt.
82
+
83
+ The code-owned start-work lifecycle is the executor's authority boundary. Read
84
+ schema-3 `.litclaude/boulder.json`; match the active work, Claude session, and
85
+ revision before mutation; and act only under semantic action/root grants in its
86
+ bounded-authority envelope. The official `PreToolUse` hook classifies native
87
+ Write/Edit/MultiEdit/NotebookEdit/Bash/Agent calls and denies forbidden, unknown, paused,
88
+ wrong-session, or unauthorized mutations before execution; `PostToolUse` is
89
+ observation-only. A new non-forbidden boundary is paused by that hook. Resume
90
+ exists only through the user's exact
91
+ `/litclaude:start-work resume --work-id <id> --revision <n> --boundary-id <id> --prompt-id <id> --grant-id <id>` UserPromptSubmit route: there is no generic resume bypass
92
+ or agent-callable approval route, and the generated grant token is single-use.
93
+ A paused work cannot complete, and commit, push, publish, tag,
94
+ release, version bump, registry write, host-config write, and destructive VCS
95
+ remain fail-closed.
96
+
97
+ When Claude starts this executor as a child, `SubagentStart` binds its agent id,
98
+ root session, and observed Claude-owned worktree. `SubagentStop` finalizes that
99
+ lane without continuation; completion remains blocked while any lane is active.