@massu/core 1.15.5 → 1.15.7

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.
Files changed (88) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/agents/massu-architecture-reviewer.md +20 -0
  3. package/agents/massu-blast-radius-analyzer.md +20 -0
  4. package/agents/massu-competitive-scorer.md +20 -0
  5. package/agents/massu-help-sync.md +20 -0
  6. package/agents/massu-migration-writer.md +20 -0
  7. package/agents/massu-output-scorer.md +20 -0
  8. package/agents/massu-pattern-reviewer.md +20 -0
  9. package/agents/massu-plan-auditor.md +20 -0
  10. package/agents/massu-schema-sync-verifier.md +20 -0
  11. package/agents/massu-security-reviewer.md +20 -0
  12. package/agents/massu-ux-reviewer.md +20 -0
  13. package/commands/_shared-preamble.md +21 -0
  14. package/commands/_shared-references/auto-learning-protocol.md +2 -0
  15. package/commands/_shared-references/blast-radius-protocol.md +2 -0
  16. package/commands/_shared-references/security-pre-screen.md +2 -0
  17. package/commands/_shared-references/test-first-protocol.md +2 -0
  18. package/commands/_shared-references/verification-table.md +2 -0
  19. package/commands/_verification-laws.md +131 -0
  20. package/commands/_verification-laws.md.sha256 +1 -0
  21. package/commands/massu-data/references/common-queries.md +2 -0
  22. package/commands/massu-data/references/table-guide.md +2 -0
  23. package/commands/massu-data.md +2 -0
  24. package/commands/massu-debug/references/auto-learning.md +2 -0
  25. package/commands/massu-debug/references/codegraph-tracing.md +2 -0
  26. package/commands/massu-debug/references/common-shortcuts.md +2 -0
  27. package/commands/massu-debug/references/investigation-phases.md +2 -0
  28. package/commands/massu-debug/references/report-format.md +2 -0
  29. package/commands/massu-deploy.python-docker.md +2 -0
  30. package/commands/massu-deploy.python-fly.md +2 -0
  31. package/commands/massu-deploy.python-launchd.md +2 -0
  32. package/commands/massu-deploy.python-systemd.md +2 -0
  33. package/commands/massu-full-audit.md +2 -0
  34. package/commands/massu-golden-path/references/approval-points.md +2 -0
  35. package/commands/massu-golden-path/references/phase-0-requirements.md +2 -0
  36. package/commands/massu-golden-path/references/phase-1-plan-creation.md +2 -0
  37. package/commands/massu-golden-path/references/phase-2-implementation.md +2 -0
  38. package/commands/massu-golden-path/references/phase-2.5-gap-analyzer.md +2 -0
  39. package/commands/massu-golden-path/references/phase-3-simplify.md +2 -0
  40. package/commands/massu-golden-path/references/phase-3.5-security-audit.md +110 -0
  41. package/commands/massu-golden-path/references/phase-4-commit.md +2 -0
  42. package/commands/massu-golden-path/references/phase-5-push.md +2 -0
  43. package/commands/massu-golden-path/references/phase-5.5-production-verify.md +2 -0
  44. package/commands/massu-golden-path/references/phase-6-completion.md +2 -0
  45. package/commands/massu-golden-path/references/qa-evaluator-spec.md +2 -0
  46. package/commands/massu-golden-path/references/sprint-contract-protocol.md +2 -0
  47. package/commands/massu-golden-path/references/vr-visual-calibration.md +2 -0
  48. package/commands/massu-golden-path.md +30 -0
  49. package/commands/massu-guide.md +2 -0
  50. package/commands/massu-hooks.md +2 -0
  51. package/commands/massu-learning-audit.md +2 -0
  52. package/commands/massu-loop/references/auto-learning.md +2 -0
  53. package/commands/massu-loop/references/checkpoint-audit.md +2 -0
  54. package/commands/massu-loop/references/guardrails.md +2 -0
  55. package/commands/massu-loop/references/iteration-structure.md +2 -0
  56. package/commands/massu-loop/references/loop-controller.md +2 -0
  57. package/commands/massu-loop/references/plan-extraction.md +2 -0
  58. package/commands/massu-loop/references/vr-plan-spec.md +2 -0
  59. package/commands/massu-parity.md +2 -0
  60. package/commands/massu-push.md +2 -0
  61. package/commands/massu-scaffold-hook.md +2 -0
  62. package/commands/massu-scaffold-page.md +2 -0
  63. package/commands/massu-scaffold-page.swift.md +2 -0
  64. package/commands/massu-scaffold-router.md +2 -0
  65. package/commands/massu-scaffold-router.python-django.md +2 -0
  66. package/commands/massu-scaffold-router.python-fastapi.md +2 -0
  67. package/commands/massu-scaffold-router.python.md +2 -0
  68. package/dist/cli.js +69 -13
  69. package/package.json +4 -3
  70. package/patterns/build-patterns.md +2 -0
  71. package/patterns/component-patterns.md +2 -0
  72. package/patterns/display-patterns.md +2 -0
  73. package/patterns/form-patterns.md +2 -0
  74. package/patterns/integration-testing-checklist.md +2 -0
  75. package/patterns/security-patterns.md +2 -0
  76. package/patterns/testing-patterns.md +2 -0
  77. package/patterns/tool-routing.md +2 -0
  78. package/patterns/ui-patterns.md +2 -0
  79. package/protocols/plan-implementation.md +2 -0
  80. package/protocols/recovery.md +2 -0
  81. package/protocols/verification.md +2 -0
  82. package/reference/cr-rules-reference.md +2 -0
  83. package/reference/hook-execution-order.md +2 -0
  84. package/reference/lessons-learned.md +2 -0
  85. package/reference/patterns-quickref.md +2 -0
  86. package/reference/standards.md +2 -0
  87. package/reference/subagents-reference.md +2 -0
  88. package/reference/vr-verification-reference.md +2 -0
package/dist/cli.js CHANGED
@@ -4132,11 +4132,15 @@ var init_permissions = __esm({
4132
4132
  // src/commands/install-commands.ts
4133
4133
  var install_commands_exports = {};
4134
4134
  __export(install_commands_exports, {
4135
+ MASSU_OWNED_PATHS: () => MASSU_OWNED_PATHS,
4135
4136
  buildTemplateVars: () => buildTemplateVars,
4137
+ canonicalizeOwned: () => canonicalizeOwned,
4136
4138
  hashContent: () => hashContent,
4137
4139
  installAll: () => installAll,
4138
4140
  installCommands: () => installCommands,
4141
+ isMassuOwned: () => isMassuOwned,
4139
4142
  loadManifest: () => loadManifest,
4143
+ massuOwnedSourceIsValid: () => massuOwnedSourceIsValid,
4140
4144
  pickVariant: () => pickVariant,
4141
4145
  resolveAssetDir: () => resolveAssetDir,
4142
4146
  resolveCommandsDir: () => resolveCommandsDir,
@@ -4155,25 +4159,51 @@ import {
4155
4159
  import { resolve as resolve6, dirname as dirname7, join as join6 } from "path";
4156
4160
  import { fileURLToPath as fileURLToPath2 } from "url";
4157
4161
  import { createHash as createHash3 } from "crypto";
4162
+ function dirHoldsAssets(dir) {
4163
+ if (!existsSync9(dir)) return false;
4164
+ try {
4165
+ return readdirSync3(dir).some(
4166
+ (e2) => e2.endsWith(".md") || statSync2(resolve6(dir, e2)).isDirectory()
4167
+ );
4168
+ } catch {
4169
+ return false;
4170
+ }
4171
+ }
4158
4172
  function resolveAssetDir(assetName) {
4159
4173
  const cwd = process.cwd();
4160
- const nodeModulesPath = resolve6(cwd, "node_modules/@massu/core", assetName);
4161
- if (existsSync9(nodeModulesPath)) {
4162
- return nodeModulesPath;
4163
- }
4164
- const distRelPath = resolve6(__dirname, "..", assetName);
4165
- if (existsSync9(distRelPath)) {
4166
- return distRelPath;
4167
- }
4168
- const srcRelPath = resolve6(__dirname, "../..", assetName);
4169
- if (existsSync9(srcRelPath)) {
4170
- return srcRelPath;
4174
+ const candidates = [
4175
+ // 1. npm-installed: node_modules/@massu/core/{assetName}
4176
+ resolve6(cwd, "node_modules/@massu/core", assetName),
4177
+ // 2. Relative to compiled dist/cli.js → ../{assetName}
4178
+ resolve6(__dirname, "..", assetName),
4179
+ // 3. Relative to source src/commands/ → ../../{assetName}
4180
+ resolve6(__dirname, "../..", assetName)
4181
+ ];
4182
+ for (const c2 of candidates) {
4183
+ if (dirHoldsAssets(c2)) return c2;
4171
4184
  }
4172
4185
  return null;
4173
4186
  }
4174
4187
  function resolveCommandsDir() {
4175
4188
  return resolveAssetDir("commands");
4176
4189
  }
4190
+ function isMassuOwned(manifestKey) {
4191
+ return MASSU_OWNED_PATHS.includes(manifestKey);
4192
+ }
4193
+ function canonicalizeOwned(content) {
4194
+ return content.replace(/\r\n/g, "\n").split("\n").map((l2) => l2.replace(/\s+$/, "")).join("\n").trim();
4195
+ }
4196
+ function massuOwnedSourceIsValid(resolvedSourcePath, content) {
4197
+ const sidecar = `${resolvedSourcePath}.sha256`;
4198
+ if (!existsSync9(sidecar)) return false;
4199
+ let expected;
4200
+ try {
4201
+ expected = readFileSync6(sidecar, "utf-8").trim();
4202
+ } catch {
4203
+ return false;
4204
+ }
4205
+ return hashContent(canonicalizeOwned(content)) === expected;
4206
+ }
4177
4207
  function hashContent(content) {
4178
4208
  return createHash3("sha256").update(content, "utf-8").digest("hex");
4179
4209
  }
@@ -4349,13 +4379,38 @@ function syncDirectory(sourceDir, targetDir, framework, manifest, manifestKeyPre
4349
4379
  const manifestKey = manifestKeyPrefix === "" ? targetFilename : `${manifestKeyPrefix}/${targetFilename}`;
4350
4380
  const lastInstalledHash = manifest.entries[manifestKey];
4351
4381
  if (existsSync9(targetPath)) {
4352
- const existingContent = readFileSync6(targetPath, "utf-8");
4382
+ let existingContent;
4383
+ try {
4384
+ if (!statSync2(targetPath).isFile()) throw new Error("not a regular file");
4385
+ existingContent = readFileSync6(targetPath, "utf-8");
4386
+ } catch (err) {
4387
+ process.stderr.write(
4388
+ `massu: skipping ${manifestKey}: target is not a readable file (${err instanceof Error ? err.message : String(err)}). Remove it and re-install.
4389
+ `
4390
+ );
4391
+ stats.skipped++;
4392
+ continue;
4393
+ }
4353
4394
  const existingHash = hashContent(existingContent);
4354
4395
  if (existingHash === sourceHash) {
4355
4396
  manifest.entries[manifestKey] = sourceHash;
4356
4397
  stats.skipped++;
4357
4398
  continue;
4358
4399
  }
4400
+ if (isMassuOwned(manifestKey)) {
4401
+ if (!massuOwnedSourceIsValid(resolvedSourcePath, sourceContent)) {
4402
+ process.stderr.write(
4403
+ `massu: REFUSING to overwrite massu-owned ${manifestKey} \u2014 the source failed its integrity hash (${resolvedSourcePath}.sha256 missing or mismatched). Your installed @massu/core may be stale or tampered; run \`npm i @massu/core@latest\` and re-install. Kept the existing file.
4404
+ `
4405
+ );
4406
+ stats.kept++;
4407
+ continue;
4408
+ }
4409
+ atomicWriteFile(targetPath, sourceContent);
4410
+ manifest.entries[manifestKey] = sourceHash;
4411
+ stats.updated++;
4412
+ continue;
4413
+ }
4359
4414
  if (lastInstalledHash === void 0) {
4360
4415
  process.stderr.write(
4361
4416
  `First-install: keeping existing ${targetPath} (differs from upstream, and massu has no record of writing it).
@@ -4531,7 +4586,7 @@ async function runInstallCommands() {
4531
4586
  console.log(" Restart your Claude Code session to use them.");
4532
4587
  console.log("");
4533
4588
  }
4534
- var __filename, __dirname, ASSET_TYPES, MANIFEST_VERSION, MANIFEST_RELPATH, PASSTHROUGH_LANG_KEYS;
4589
+ var __filename, __dirname, ASSET_TYPES, MANIFEST_VERSION, MANIFEST_RELPATH, MASSU_OWNED_PATHS, PASSTHROUGH_LANG_KEYS;
4535
4590
  var init_install_commands = __esm({
4536
4591
  "src/commands/install-commands.ts"() {
4537
4592
  "use strict";
@@ -4550,6 +4605,7 @@ var init_install_commands = __esm({
4550
4605
  ];
4551
4606
  MANIFEST_VERSION = 1;
4552
4607
  MANIFEST_RELPATH = join6(".massu", "install-manifest.json");
4608
+ MASSU_OWNED_PATHS = ["commands/_verification-laws.md"];
4553
4609
  PASSTHROUGH_LANG_KEYS = [
4554
4610
  "typescript",
4555
4611
  "javascript",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@massu/core",
3
- "version": "1.15.5",
3
+ "version": "1.15.7",
4
4
  "type": "module",
5
5
  "description": "AI Engineering Governance MCP Server - Session memory, knowledge system, feature registry, code intelligence, rule enforcement, tiered tooling (12 free / 73 total), 56 workflow commands, 11 agents, 20+ patterns",
6
6
  "main": "./dist/cli.js",
@@ -24,14 +24,15 @@
24
24
  "start": "npx tsx src/server.ts",
25
25
  "test": "vitest run",
26
26
  "build": "tsc --noEmit && npm run build:cli && npm run build:hooks && npm run build:assets && npm run build:adapter-types && npm run build:adapter-subpath && npm run build:bundle-adapters",
27
- "build:assets": "node scripts/copy-embedder-assets.mjs",
27
+ "build:assets": "node scripts/gen-owned-sidecars.mjs && node scripts/copy-embedder-assets.mjs",
28
28
  "build:adapter-types": "tsc -p tsconfig.adapter-types.json",
29
29
  "build:adapter-subpath": "tsx scripts/bundle-adapters.ts --subpath-only",
30
30
  "build:bundle-adapters": "tsx scripts/bundle-adapters.ts",
31
31
  "build:cli": "esbuild --bundle --platform=node --format=esm --outfile=dist/cli.js src/cli.ts --external:better-sqlite3 --external:yaml --external:zod --external:chokidar --external:proper-lockfile --external:fsevents --external:web-tree-sitter --external:tweetnacl --external:tar --external:smol-toml --external:vscode-languageserver-protocol --external:onnxruntime-web --external:@massu/adapter-rails --external:@massu/adapter-spring --banner:js='#!/usr/bin/env node\nimport{createRequire as __cr}from\"module\";const require=__cr(import.meta.url);'",
32
32
  "build:hooks": "esbuild --bundle --platform=node --format=esm --outdir=dist/hooks src/hooks/*.ts --external:better-sqlite3 --external:yaml --external:zod --external:chokidar --external:proper-lockfile --external:fsevents --external:web-tree-sitter --external:tweetnacl --external:tar --external:smol-toml --external:vscode-languageserver-protocol --external:onnxruntime-web --external:@massu/adapter-rails --external:@massu/adapter-spring --banner:js='import{createRequire as __cr}from\"module\";const require=__cr(import.meta.url);'",
33
33
  "prepublishOnly": "bash ../../scripts/prepublish-check.sh && node ../../scripts/bundle-pubkey.mjs && node ../../scripts/bundle-license-pubkey.mjs && node ../../scripts/bundle-promotion-pubkey.mjs && node ../../scripts/bundle-audit-export-pubkey.mjs && cp ../../CHANGELOG.md ./CHANGELOG.md && npm run build && bash ../../scripts/npm-publish-guard.sh",
34
- "bench:watch": "tsx test/perf/watch-benchmark.ts"
34
+ "bench:watch": "tsx test/perf/watch-benchmark.ts",
35
+ "build:owned-sidecars": "node scripts/gen-owned-sidecars.mjs"
35
36
  },
36
37
  "dependencies": {
37
38
  "@clack/prompts": "^0.9.1",
@@ -1,5 +1,7 @@
1
1
  # Build Patterns
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Patterns for resolving build issues in Next.js applications with Prisma, native modules, and Edge Runtime.
4
6
 
5
7
  **When to Read**: When encountering build errors, hangs, or warnings. Before adding heavy dependencies.
@@ -1,5 +1,7 @@
1
1
  # Component Patterns
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Standard patterns for UI components, forms, search inputs, and common interactive elements.
4
6
 
5
7
  **When to Read**: Before creating or modifying UI components.
@@ -1,5 +1,7 @@
1
1
  # Display Patterns
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Centralized formatting functions and display conventions for data presentation.
4
6
 
5
7
  **When to Read**: Before displaying formatted data (currency, phone numbers, dates, names, file sizes).
@@ -1,5 +1,7 @@
1
1
  # Form Field Patterns
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Form patterns for semantic TextField types, PhoneInputField, AddressForm, react-hook-form + Zod setup, register() vs Controller, edit forms, submission patterns.
4
6
 
5
7
  **When to Read**: Before creating or modifying forms.
@@ -1,5 +1,7 @@
1
1
  # Integration Testing Checklist
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Router contract verification, pre-test writing steps, test templates, common anti-patterns, prevention system.
4
6
 
5
7
  **When to Read**: Before writing integration tests.
@@ -1,5 +1,7 @@
1
1
  # Security Patterns
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Security patterns for credential management, authentication, and code safety.
4
6
 
5
7
  **When to Read**: Before handling secrets, authentication, or security-sensitive code.
@@ -1,5 +1,7 @@
1
1
  # Testing Patterns
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Testing pyramid, patterns, and best practices for unit, integration, and E2E tests.
4
6
 
5
7
  **When to Read**: Before writing tests, setting up test infrastructure, or debugging test failures.
@@ -1,5 +1,7 @@
1
1
  # Tool Routing Patterns
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Decision trees for selecting the correct tool/MCP for browser automation, Google services, and code search.
4
6
 
5
7
  **When to Read**: Before using any browser automation, Google service, or code search tool.
@@ -1,5 +1,7 @@
1
1
  # UI Patterns
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Layout, theming, component selection, and UI quality standards.
4
6
 
5
7
  **When to Read**: Before creating or modifying UI components, pages, or styles.
@@ -1,5 +1,7 @@
1
1
  # Plan Implementation Protocol
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Unified protocol for implementing and auditing multi-step plans. Merges Plan Implementation, Plan Audit, and Pre-Completion protocols.
4
6
 
5
7
  **When to Read**: When implementing any multi-step plan, before claiming a plan is complete.
@@ -1,5 +1,7 @@
1
1
  # Post-Compaction Recovery Protocol
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Restore context after session compaction. Execute IMMEDIATELY when compaction summary appears.
4
6
 
5
7
  **When to Read**: Automatically after any session compaction.
@@ -1,5 +1,7 @@
1
1
  # Verification Protocol - Unified
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Single source of truth for all verification requirements. Referenced by CR-1 (Canonical Rule 1).
4
6
 
5
7
  **When to Read**: Before claiming ANY task is complete, before any database operation, before any commit.
@@ -1,5 +1,7 @@
1
1
  # Canonical Rules (CR) — Full Reference
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  All CR rules with verification types and reference links.
4
6
 
5
7
  | ID | Rule | Verification Type | Reference |
@@ -1,5 +1,7 @@
1
1
  # Hook Execution Order Reference
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Authoritative reference for hook execution ordering across all event types in `.claude/settings.json`.
4
6
 
5
7
  **Scope**: Project hooks only (`.claude/settings.json`). User hooks (`~/.claude/settings.json`) run in a separate pipeline and are not covered here.
@@ -1,5 +1,7 @@
1
1
  # Lessons Learned & Accountability
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Part of Prime Directive** | [Back to Main](../CLAUDE.md)
4
6
 
5
7
  ---
@@ -1,5 +1,7 @@
1
1
  # Pattern Quick Reference
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Condensed pattern reference. Full patterns with code examples in `patterns/*.md`.
4
6
 
5
7
  **When to Read**: Quick lookup during implementation. For full details, read the linked pattern file.
@@ -1,5 +1,7 @@
1
1
  # Code Quality & Communication Standards
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Part of Prime Directive** | [Back to Main](../CLAUDE.md)
4
6
 
5
7
  ---
@@ -1,5 +1,7 @@
1
1
  # Subagent Reference
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Subagents**: Use the Task tool for spawning agents. **One task per agent** (Principle #20). Use for exploration to keep main context clean.
4
6
 
5
7
  | Agent | Focus | Trigger |
@@ -1,5 +1,7 @@
1
1
  # VR-* Verification Reference
2
2
 
3
+ > **Verification laws apply.** Read `.claude/commands/_verification-laws.md` — CR-64 (a gate must prove it can fail), CR-65 (broken and empty may never render identically), and: an audit that does not run commands is not an audit.
4
+
3
5
  **Purpose**: Master reference for ALL verification types used across massu commands. Every verification prevents a specific class of bugs from reaching production.
4
6
 
5
7
  **When to Read**: Before claiming ANY work is complete. During massu command execution. After any audit failure.