@paths.design/caws-cli 11.1.1 → 11.1.3

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
@@ -1,21 +1,22 @@
1
1
  # @paths.design/caws-cli
2
2
 
3
- **CAWS CLI v11.0.0 — the governed core for the Coding Agent Working Standard.**
3
+ **CAWS CLI v11.1 — the governed core plus lifecycle for the Coding Agent
4
+ Working Standard.**
4
5
 
5
6
  CAWS (Coding Agent Working Standard) gives coding agents a deterministic
6
7
  substrate for project state, scope, claims, gates, waivers, and audit
7
- evidence. v11.0.0 is a ground-up rewrite around a pure kernel, an I/O
8
+ evidence. v11 is a ground-up rewrite around a pure kernel, an I/O
8
9
  store, and a thin shell. It replaces v10.x.
9
10
 
10
11
  ## What v11 ships
11
12
 
12
- Exactly eight command groups. Nothing else.
13
+ ### Governed core (v11.0)
13
14
 
14
15
  | Command | What it does |
15
16
  |---|---|
16
17
  | `caws init` | Bootstrap the canonical `.caws/` project state. Idempotent. Refuses to overwrite legacy single-spec layout. |
17
18
  | `caws doctor` | Drift detection over `.caws/` state. Exits 0 (clean) / 1 (findings or load errors) / 2 (composition failure). |
18
- | `caws status` | Read-only dashboard: project, current context, claim, doctor findings. Always exits 0; never mutates `.caws/`. |
19
+ | `caws status` | Read-only dashboard: project, current context, claim, doctor findings. Always exits 0; never mutates governance state. |
19
20
  | `caws scope show <path>` | Explain the scope decision for `<path>`. Always exits 0. |
20
21
  | `caws scope check <path>` | Enforce the scope decision for `<path>`. Exits 0 on admit, 1 on refuse. |
21
22
  | `caws claim [--takeover]` | Surface or take ownership of the current worktree. Writes a `prior_owners` audit on takeover. |
@@ -23,35 +24,39 @@ Exactly eight command groups. Nothing else.
23
24
  | `caws evidence record --type <kind> --spec <id> --data <json>` | Append a typed evidence event (`test`/`gate`/`ac`) to `.caws/events.jsonl`. |
24
25
  | `caws waiver create/list/show/revoke` | Manage waiver records that filter matching gate violations. Singular surface — no plural alias. |
25
26
 
27
+ ### Lifecycle (v11.1)
28
+
29
+ | Command | What it does |
30
+ |---|---|
31
+ | `caws worktree create/list/bind/destroy/merge` | Worktree lifecycle on the vNext substrate. Canonical path for parallel agent work. |
32
+ | `caws specs` | vNext spec lifecycle. |
33
+
26
34
  Run `caws <group> --help` for full options.
27
35
 
28
- ## Posture: what v11 does NOT ship
29
-
30
- v11.0.0 is the **governed core**. It is not a complete lifecycle CLI.
31
- The following commands existed in v10.2.x and are **removed** in v11:
32
-
33
- - `caws scaffold` — installed legacy templates and git hooks.
34
- - `caws validate`, `caws verify-acs`, `caws evaluate`, `caws iterate`,
35
- `caws diagnose`, `caws burnup` used legacy spec resolution
36
- (`working-spec.yaml` fallback) and a parallel event-log writer.
37
- - `caws specs`, `caws worktree`, `caws archive`, `caws parallel` —
38
- spec/worktree lifecycle (returns in v11.1).
39
- - `caws provenance`, `caws hooks` superseded by `.caws/events.jsonl`
40
- and `caws gates run`. Generated git hooks called the removed
41
- commands.
42
- - `caws sidecar`, `caws mode`, `caws tutorial`, `caws plan`,
43
- `caws agents`, `caws session`, `caws templates`, `caws workflow`,
44
- `caws quality-monitor`, `caws tool`, `caws test-analysis`
45
- peripherals not part of the governed core under A1.
46
-
47
- If your project depends on the legacy spec or worktree lifecycle
48
- commands, **pin to `caws-cli@^10.2.x` until v11.1 ships** vNext
49
- lifecycle commands. The two CLIs cannot coexist on the same project —
50
- they write to overlapping state.
36
+ ## Posture
37
+
38
+ v11 is structured as kernel + store + shell. The kernel has no `fs`,
39
+ `path`, or clock access; the store owns all I/O and the hash-chained
40
+ event log; the shell composes them into commands.
41
+
42
+ Commands that existed in v10.2.x and were **removed in v11.0** (no
43
+ replacement is planned in any current milestone): `scaffold`, `validate`,
44
+ `verify-acs`, `evaluate`, `iterate`, `diagnose`, `burnup`, `archive`,
45
+ `provenance` (superseded by `events.jsonl`), `sidecar`, `mode`,
46
+ `tutorial`, `plan`, `templates`, `workflow`, `quality-monitor`, `tool`,
47
+ `test-analysis`, legacy `hooks` install (users wire their own hooks
48
+ against `caws gates run`).
49
+
50
+ Currently absent from v11.1 and **planned for v11.2** (multi-agent
51
+ authority and observability): `caws agents list/show`, `caws claim
52
+ --spec <id>` (bridge claims), `caws worktree prune/repair/reconcile`.
53
+
54
+ Explicitly deferred to v11.3+: `caws session` and `caws parallel`. The
55
+ `caws worktree create` loop pattern replaces `parallel` for multi-agent
56
+ setup today.
51
57
 
52
58
  See `docs/architecture/caws-vnext-command-surface.md` in the repo for
53
- the complete cutover doctrine, removal table, and architectural
54
- invariants.
59
+ the complete doctrine, command surface, and architectural invariants.
55
60
 
56
61
  ## Installation
57
62
 
@@ -49,8 +49,11 @@ function initializeGlobalSetup() {
49
49
  function loadProvenanceTools() {
50
50
  if (provenanceTools) return provenanceTools; // Already loaded
51
51
 
52
- // Provenance tools are now handled by CLI command (caws provenance)
53
- // Legacy tool loading removed - use CLI instead
52
+ // v10 had a `caws provenance` command that loaded these tools. That
53
+ // command was removed in v11.0.0; the hash-chained .caws/events.jsonl
54
+ // is now the canonical audit surface (write via the v11 events-store
55
+ // or `caws evidence record`). This loader remains for legacy installs
56
+ // that still drop a local provenance.js into the search paths below.
54
57
  // Try multiple possible locations for provenance tools (legacy support)
55
58
  const possiblePaths = [
56
59
  // 1. New location (if someone manually adds it)
@@ -134,17 +134,30 @@ function safeSync(operation, context = '', includeTiming = false) {
134
134
  /**
135
135
  * Command-specific error suggestions
136
136
  */
137
+ // v11 command surface. Mirrors docs/architecture/caws-vnext-command-surface.md
138
+ // §2 — the eight v11.0 governed-core groups plus `specs` and `worktree`
139
+ // restored in v11.1. When v11.2 lands `agents` and bridge claims, extend
140
+ // this list in the same commit as the doctrine update.
141
+ const V11_COMMANDS = [
142
+ 'init',
143
+ 'doctor',
144
+ 'status',
145
+ 'scope',
146
+ 'claim',
147
+ 'gates',
148
+ 'evidence',
149
+ 'waiver',
150
+ 'specs',
151
+ 'worktree',
152
+ ];
153
+
137
154
  const COMMAND_SUGGESTIONS = {
138
155
  'unknown option': (option, command) => {
139
156
  const suggestions = [];
140
157
 
141
- // Common typos and alternatives
142
158
  const optionMap = {
143
- '--suggestions': 'Validation includes suggestions by default. Try: caws validate',
144
- '--suggest': 'Validation includes suggestions by default. Try: caws validate',
145
159
  '--help': 'Try: caws --help or caws <command> --help',
146
- '--json': 'For JSON output, try: caws provenance show --format=json',
147
- '--dashboard': 'Try: caws provenance show --format=dashboard',
160
+ '--json': 'v11 commands accept --json for machine-readable output where supported',
148
161
  };
149
162
 
150
163
  if (optionMap[option]) {
@@ -157,60 +170,45 @@ const COMMAND_SUGGESTIONS = {
157
170
  },
158
171
 
159
172
  'unknown command': (command) => {
160
- const validCommands = [
161
- 'init',
162
- 'validate',
163
- 'scaffold',
164
- 'status',
165
- 'diagnose',
166
- 'evaluate',
167
- 'iterate',
168
- 'waivers',
169
- 'templates',
170
- 'provenance',
171
- 'hooks',
172
- 'workflow',
173
- 'quality-monitor',
174
- 'test-analysis',
175
- ];
176
- const similar = findSimilarCommand(command, validCommands);
173
+ const similar = findSimilarCommand(command, V11_COMMANDS);
177
174
 
178
175
  const suggestions = [];
179
176
  if (similar) {
180
177
  suggestions.push(`Did you mean: caws ${similar}?`);
181
178
  }
182
179
 
183
- // Suggest category based on what user might be trying to do
184
- if (command.includes('setup') || command.includes('start') || command.includes('create')) {
180
+ // Suggest category based on what the user might be trying to do.
181
+ // Each branch points only at the v11 surface — no removed-command leakage.
182
+ if (command.includes('setup') || command.includes('start')) {
185
183
  suggestions.push('For project setup: caws init');
184
+ } else if (command.includes('new') || command.includes('create')) {
185
+ suggestions.push('For a new spec: caws specs create <id>');
186
+ suggestions.push('For a new worktree: caws worktree create <name> --spec <id>');
186
187
  } else if (
187
188
  command.includes('check') ||
188
189
  command.includes('verify') ||
189
- command.includes('test')
190
+ command.includes('valid')
190
191
  ) {
191
- suggestions.push('For validation: caws validate');
192
+ suggestions.push('For drift detection: caws doctor');
193
+ suggestions.push('For policy and quality gates: caws gates run --spec <id>');
194
+ suggestions.push('For path scope: caws scope check <path>');
192
195
  } else if (command.includes('list') || command.includes('show') || command.includes('get')) {
193
- suggestions.push('For status: caws status');
196
+ suggestions.push('For project status: caws status');
197
+ suggestions.push('For specs: caws specs list / caws specs show <id>');
198
+ suggestions.push('For worktrees: caws worktree list');
199
+ } else if (command.includes('evidence') || command.includes('record')) {
200
+ suggestions.push('To record test/gate/ac evidence: caws evidence record --type <kind> --spec <id> --data <json>');
194
201
  }
195
202
 
196
- suggestions.push(
197
- 'Available commands: init, validate, scaffold, status, diagnose, evaluate, iterate, waivers, templates, provenance, hooks, workflow, quality-monitor'
198
- );
203
+ suggestions.push(`Available v11 commands: ${V11_COMMANDS.join(', ')}`);
199
204
  suggestions.push('Try: caws --help for full command list with descriptions');
200
205
 
201
206
  return suggestions;
202
207
  },
203
208
 
204
- 'template not found': () => [
205
- 'Templates are bundled with CAWS CLI',
206
- 'Try: caws scaffold (should work automatically)',
207
- 'If issue persists: npm i -g @paths.design/caws-cli@latest',
208
- ],
209
-
210
209
  'not a caws project': () => [
211
- 'Initialize CAWS first: caws init .',
212
- 'Or create new project: caws init <project-name>',
213
- 'Check for .caws/working-spec.yaml file',
210
+ 'Initialize CAWS first: caws init',
211
+ 'Verify .caws/ exists in the current directory',
214
212
  ],
215
213
  };
216
214
 
@@ -309,15 +307,15 @@ function getRecoverySuggestions(error, category, context = {}) {
309
307
  break;
310
308
 
311
309
  case ERROR_CATEGORIES.VALIDATION:
312
- suggestions.push('Run: caws validate for detailed validation help');
313
- suggestions.push('Check your working spec format against the schema');
314
- suggestions.push('See: docs/api/schema.md for specification details');
310
+ suggestions.push('Run: caws doctor for spec and policy drift detection');
311
+ suggestions.push('Run: caws gates run --spec <id> for policy and quality gates');
312
+ suggestions.push('Check .caws/specs/<id>.yaml against the spec schema in packages/caws-kernel');
315
313
  break;
316
314
 
317
315
  case ERROR_CATEGORIES.CONFIGURATION:
318
- suggestions.push('Run: caws init --interactive to reconfigure');
319
- suggestions.push('Check your .caws directory and configuration files');
320
- suggestions.push('Try: caws diagnose to identify configuration issues');
316
+ suggestions.push('Run: caws init to bootstrap canonical .caws/ state (idempotent)');
317
+ suggestions.push('Run: caws doctor to surface configuration drift');
318
+ suggestions.push('Inspect .caws/ contents directly to confirm expected layout');
321
319
  break;
322
320
 
323
321
  case ERROR_CATEGORIES.NETWORK:
@@ -352,12 +350,20 @@ function getDocumentationLink(category, context = {}) {
352
350
  };
353
351
 
354
352
  if (context.command) {
353
+ // v11 doc anchors. Generic fallback to the architecture doctrine if a
354
+ // specific command page is not yet authored.
355
+ const doctrine = `${baseUrl}/docs/architecture/caws-vnext-command-surface.md`;
355
356
  const commandLinks = {
356
- init: `${baseUrl}/docs/agents/tutorial.md#initialization`,
357
- validate: `${baseUrl}/docs/api/cli.md#validate`,
358
- scaffold: `${baseUrl}/docs/api/cli.md#scaffold`,
359
- provenance: `${baseUrl}/docs/api/cli.md#provenance`,
360
- hooks: `${baseUrl}/docs/guides/hooks-and-agent-workflows.md`,
357
+ init: doctrine,
358
+ doctor: doctrine,
359
+ status: doctrine,
360
+ scope: doctrine,
361
+ claim: doctrine,
362
+ gates: doctrine,
363
+ evidence: doctrine,
364
+ waiver: doctrine,
365
+ specs: doctrine,
366
+ worktree: doctrine,
361
367
  };
362
368
 
363
369
  if (commandLinks[context.command]) {
@@ -522,29 +528,29 @@ const TROUBLESHOOTING_GUIDES = {
522
528
  ],
523
529
  },
524
530
 
525
- 'working-spec-validation': {
526
- title: 'Working Spec Validation Errors',
531
+ 'spec-validation': {
532
+ title: 'Spec Validation Errors',
527
533
  symptoms: [
528
- 'Working spec fails validation',
529
- 'Schema errors in .caws/working-spec.yaml',
530
- 'Invalid risk tier or scope configuration',
534
+ 'A spec under .caws/specs/<id>.yaml fails to load',
535
+ 'doctor reports spec.schema errors',
536
+ 'Invalid risk tier, scope, or acceptance criteria',
531
537
  ],
532
538
  rootCauses: [
533
539
  'Invalid YAML syntax',
534
540
  'Missing required fields',
535
541
  'Incorrect schema structure',
536
- 'Invalid scope paths',
542
+ 'Invalid scope paths (e.g., globs in scope.out)',
537
543
  ],
538
544
  solutions: [
539
- 'Run validation with suggestions: caws validate --suggestions',
540
- 'Auto-fix safe issues: caws validate --auto-fix',
541
- 'Check schema documentation',
542
- 'Use caws init to generate valid spec',
545
+ 'Run: caws doctor drift detection over .caws/ state',
546
+ 'Inspect the failing spec at .caws/specs/<id>.yaml directly',
547
+ 'Compare against existing specs in .caws/specs/ for shape',
548
+ 'See packages/caws-kernel for the canonical spec schema',
543
549
  ],
544
550
  commands: [
545
- 'caws validate --suggestions',
546
- 'caws validate --auto-fix',
547
- 'caws init --interactive',
551
+ 'caws doctor',
552
+ 'caws specs show <id>',
553
+ 'caws specs list',
548
554
  ],
549
555
  },
550
556
 
@@ -570,7 +576,7 @@ const TROUBLESHOOTING_GUIDES = {
570
576
  commands: [
571
577
  'cat package.json | grep workspaces',
572
578
  'find packages -name package.json',
573
- 'caws diagnose',
579
+ 'caws doctor',
574
580
  'caws status',
575
581
  ],
576
582
  },
@@ -607,8 +613,14 @@ function suggestTroubleshootingGuide(errorMessage) {
607
613
  if (lowerMessage.includes('mutation') && lowerMessage.includes('not found')) {
608
614
  return 'mutation-report-not-found';
609
615
  }
610
- if (lowerMessage.includes('working spec') || lowerMessage.includes('validation')) {
611
- return 'working-spec-validation';
616
+ // 'spec' (per-feature .caws/specs/<id>.yaml) replaces the v10 'working spec' term.
617
+ // Match either for compatibility with errors that quote either phrase.
618
+ if (
619
+ lowerMessage.includes('spec') ||
620
+ lowerMessage.includes('validation') ||
621
+ lowerMessage.includes('schema')
622
+ ) {
623
+ return 'spec-validation';
612
624
  }
613
625
  if (lowerMessage.includes('workspace') || lowerMessage.includes('monorepo')) {
614
626
  return 'monorepo-detection';
@@ -15,8 +15,7 @@ export interface WorktreeCreateOptions extends BaseCommandOptions {
15
15
  readonly branch?: string;
16
16
  }
17
17
  export declare function runWorktreeCreateCommand(opts: WorktreeCreateOptions): number;
18
- export interface WorktreeListOptions extends BaseCommandOptions {
19
- }
18
+ export type WorktreeListOptions = BaseCommandOptions;
20
19
  export declare function runWorktreeListCommand(opts?: WorktreeListOptions): number;
21
20
  export interface WorktreeBindOptions extends BaseCommandOptions {
22
21
  readonly name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/worktree.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,2BAA2B,CAAC;AAcjE,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAkED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAuC5E;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;CAAG;AAElE,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,CAwB7E;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA+BxE;AAID,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAkC9E;AAID,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA0C1E"}
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/worktree.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,2BAA2B,CAAC;AAcjE,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAkED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAuC5E;AAID,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,CAwB7E;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA+BxE;AAID,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAkC9E;AAID,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA0C1E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paths.design/caws-cli",
3
- "version": "11.1.1",
3
+ "version": "11.1.3",
4
4
  "description": "CAWS CLI - the governed core for CAWS project state, scope, claims, gates, waivers, and evidence (v11.1). Restores canonical spec/worktree lifecycle on the vNext kernel/store/shell architecture.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -71,14 +71,14 @@ DENY_SEGMENT_PATTERNS: list[tuple[str, str]] = [
71
71
  (r"\binit\s+[06]\b", "system runlevel change"),
72
72
  # CAWS spec/policy/waiver protection (RC defect #8).
73
73
  # Naked rm/mv on .caws/specs/, .caws/policy.yaml, or .caws/waivers/ bypasses
74
- # the audit trail. Use `caws specs delete|archive`, `caws waivers revoke`,
74
+ # the audit trail. Use `caws specs close|archive`, `caws waiver revoke`,
75
75
  # or edit policy.yaml in place via Edit (not Bash) instead.
76
76
  (r"\b(rm|mv)\b[^\n]*\.caws/specs/[^\s'\"]*\.ya?ml\b",
77
- "naked rm/mv on .caws/specs/*.yaml — use `caws specs delete|archive <id>`"),
77
+ "naked rm/mv on .caws/specs/*.yaml — use `caws specs close|archive <id>`"),
78
78
  (r"\b(rm|mv)\b[^\n]*\.caws/policy\.ya?ml\b",
79
79
  "naked rm/mv on .caws/policy.yaml — policy is governed; use Edit and a CAWS waiver"),
80
80
  (r"\b(rm|mv)\b[^\n]*\.caws/waivers/[^\s'\"]*\.ya?ml\b",
81
- "naked rm/mv on .caws/waivers/*.yaml — use `caws waivers revoke <id>`"),
81
+ "naked rm/mv on .caws/waivers/*.yaml — use `caws waiver revoke <id>`"),
82
82
  ]
83
83
 
84
84
  # Segment-level regex patterns that require user confirmation.