@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.
- package/CHANGELOG.md +70 -0
- package/agents/massu-architecture-reviewer.md +20 -0
- package/agents/massu-blast-radius-analyzer.md +20 -0
- package/agents/massu-competitive-scorer.md +20 -0
- package/agents/massu-help-sync.md +20 -0
- package/agents/massu-migration-writer.md +20 -0
- package/agents/massu-output-scorer.md +20 -0
- package/agents/massu-pattern-reviewer.md +20 -0
- package/agents/massu-plan-auditor.md +20 -0
- package/agents/massu-schema-sync-verifier.md +20 -0
- package/agents/massu-security-reviewer.md +20 -0
- package/agents/massu-ux-reviewer.md +20 -0
- package/commands/_shared-preamble.md +21 -0
- package/commands/_shared-references/auto-learning-protocol.md +2 -0
- package/commands/_shared-references/blast-radius-protocol.md +2 -0
- package/commands/_shared-references/security-pre-screen.md +2 -0
- package/commands/_shared-references/test-first-protocol.md +2 -0
- package/commands/_shared-references/verification-table.md +2 -0
- package/commands/_verification-laws.md +131 -0
- package/commands/_verification-laws.md.sha256 +1 -0
- package/commands/massu-data/references/common-queries.md +2 -0
- package/commands/massu-data/references/table-guide.md +2 -0
- package/commands/massu-data.md +2 -0
- package/commands/massu-debug/references/auto-learning.md +2 -0
- package/commands/massu-debug/references/codegraph-tracing.md +2 -0
- package/commands/massu-debug/references/common-shortcuts.md +2 -0
- package/commands/massu-debug/references/investigation-phases.md +2 -0
- package/commands/massu-debug/references/report-format.md +2 -0
- package/commands/massu-deploy.python-docker.md +2 -0
- package/commands/massu-deploy.python-fly.md +2 -0
- package/commands/massu-deploy.python-launchd.md +2 -0
- package/commands/massu-deploy.python-systemd.md +2 -0
- package/commands/massu-full-audit.md +2 -0
- package/commands/massu-golden-path/references/approval-points.md +2 -0
- package/commands/massu-golden-path/references/phase-0-requirements.md +2 -0
- package/commands/massu-golden-path/references/phase-1-plan-creation.md +2 -0
- package/commands/massu-golden-path/references/phase-2-implementation.md +2 -0
- package/commands/massu-golden-path/references/phase-2.5-gap-analyzer.md +2 -0
- package/commands/massu-golden-path/references/phase-3-simplify.md +2 -0
- package/commands/massu-golden-path/references/phase-3.5-security-audit.md +110 -0
- package/commands/massu-golden-path/references/phase-4-commit.md +2 -0
- package/commands/massu-golden-path/references/phase-5-push.md +2 -0
- package/commands/massu-golden-path/references/phase-5.5-production-verify.md +2 -0
- package/commands/massu-golden-path/references/phase-6-completion.md +2 -0
- package/commands/massu-golden-path/references/qa-evaluator-spec.md +2 -0
- package/commands/massu-golden-path/references/sprint-contract-protocol.md +2 -0
- package/commands/massu-golden-path/references/vr-visual-calibration.md +2 -0
- package/commands/massu-golden-path.md +30 -0
- package/commands/massu-guide.md +2 -0
- package/commands/massu-hooks.md +2 -0
- package/commands/massu-learning-audit.md +2 -0
- package/commands/massu-loop/references/auto-learning.md +2 -0
- package/commands/massu-loop/references/checkpoint-audit.md +2 -0
- package/commands/massu-loop/references/guardrails.md +2 -0
- package/commands/massu-loop/references/iteration-structure.md +2 -0
- package/commands/massu-loop/references/loop-controller.md +2 -0
- package/commands/massu-loop/references/plan-extraction.md +2 -0
- package/commands/massu-loop/references/vr-plan-spec.md +2 -0
- package/commands/massu-parity.md +2 -0
- package/commands/massu-push.md +2 -0
- package/commands/massu-scaffold-hook.md +2 -0
- package/commands/massu-scaffold-page.md +2 -0
- package/commands/massu-scaffold-page.swift.md +2 -0
- package/commands/massu-scaffold-router.md +2 -0
- package/commands/massu-scaffold-router.python-django.md +2 -0
- package/commands/massu-scaffold-router.python-fastapi.md +2 -0
- package/commands/massu-scaffold-router.python.md +2 -0
- package/dist/cli.js +69 -13
- package/package.json +4 -3
- package/patterns/build-patterns.md +2 -0
- package/patterns/component-patterns.md +2 -0
- package/patterns/display-patterns.md +2 -0
- package/patterns/form-patterns.md +2 -0
- package/patterns/integration-testing-checklist.md +2 -0
- package/patterns/security-patterns.md +2 -0
- package/patterns/testing-patterns.md +2 -0
- package/patterns/tool-routing.md +2 -0
- package/patterns/ui-patterns.md +2 -0
- package/protocols/plan-implementation.md +2 -0
- package/protocols/recovery.md +2 -0
- package/protocols/verification.md +2 -0
- package/reference/cr-rules-reference.md +2 -0
- package/reference/hook-execution-order.md +2 -0
- package/reference/lessons-learned.md +2 -0
- package/reference/patterns-quickref.md +2 -0
- package/reference/standards.md +2 -0
- package/reference/subagents-reference.md +2 -0
- 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
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
const
|
|
4169
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
package/patterns/tool-routing.md
CHANGED
|
@@ -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.
|
package/patterns/ui-patterns.md
CHANGED
|
@@ -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.
|
package/protocols/recovery.md
CHANGED
|
@@ -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.
|
package/reference/standards.md
CHANGED
|
@@ -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.
|