@dzhechkov/keysarium 1.7.15 → 1.7.18

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 (82) hide show
  1. package/.dz-manifest.json +213 -53
  2. package/README.md +29 -6
  3. package/README.ru.md +17 -0
  4. package/package.json +3 -3
  5. package/sbom.json +454 -54
  6. package/src/cli.js +32 -2
  7. package/src/commands/doctor.js +25 -1
  8. package/src/commands/init.js +46 -12
  9. package/src/utils.js +1 -0
  10. package/templates/.agents/skills/casarium/SKILL.md +29 -0
  11. package/templates/.claude/agents/code-goal-planner.md +9 -0
  12. package/templates/.claude/commands/casarium.md +3 -1
  13. package/templates/.claude/commands/cjm-prototype.md +2 -2
  14. package/templates/.claude/commands/research.md +4 -1
  15. package/templates/.claude/rules/checkpoint-protocol.md +2 -1
  16. package/templates/.claude/rules/research-quality.md +11 -6
  17. package/templates/.claude/shards/phase-2-research.shard.md +12 -8
  18. package/templates/.claude/shards/phase-25-cjm.shard.md +5 -3
  19. package/templates/.claude/skills/feature-adr/SKILL.md +17 -15
  20. package/templates/.claude/skills/feature-adr/modules/03-adr.md +1 -1
  21. package/templates/.claude/skills/feature-adr/modules/03.5-ideation-swarm.md +1 -1
  22. package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +2 -2
  23. package/templates/.claude/skills/feature-adr/modules/08-qe.md +1 -1
  24. package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +12 -12
  25. package/templates/.claude/skills/feature-adr/references/agentic-qe/LICENSE.agentic-qe +21 -0
  26. package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +20 -16
  27. package/templates/.claude/skills/feature-adr/references/agentic-qe/UPSTREAM-MANIFEST.json +246 -0
  28. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/README.md +218 -0
  29. package/templates/.claude/skills/feature-adr/references/agentic-qe/{brutal-honesty-review.md → qe-ref-brutal-honesty-review/REFERENCE.md} +14 -1
  30. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/resources/assessment-rubrics.md +295 -0
  31. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/resources/review-template.md +102 -0
  32. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/schemas/output.json +291 -0
  33. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/assess-code.sh +179 -0
  34. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/assess-tests.sh +223 -0
  35. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/validate-config.json +34 -0
  36. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/REFERENCE.md +758 -0
  37. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
  38. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/schemas/output.json +74 -0
  39. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/scripts/validate-config.json +25 -0
  40. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/REFERENCE.md +226 -0
  41. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
  42. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/schemas/output.json +568 -0
  43. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/scripts/validate-config.json +25 -0
  44. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/01-flag-detection.md +57 -0
  45. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/02-core-agents.md +29 -0
  46. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/03-batch1-results.md +15 -0
  47. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/04-conditional-agents.md +23 -0
  48. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/05-decision-synthesis.md +29 -0
  49. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/06-report-generation.md +18 -0
  50. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/07-learning-persistence.md +29 -0
  51. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/08-final-output.md +18 -0
  52. package/templates/.claude/skills/feature-adr/references/agentic-qe/{qe-coverage-analysis.md → qe-ref-qe-coverage-analysis/REFERENCE.md} +42 -3
  53. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -0
  54. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/schemas/output.json +286 -0
  55. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/scripts/validate-config.json +42 -0
  56. package/templates/.claude/skills/feature-adr/references/agentic-qe/{qe-requirements-validation.md → qe-ref-qe-requirements-validation/REFERENCE.md} +13 -3
  57. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -0
  58. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/schemas/output.json +587 -0
  59. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/scripts/validate-config.json +37 -0
  60. package/templates/.claude/skills/feature-adr/references/agentic-qe/{regression-testing.md → qe-ref-regression-testing/REFERENCE.md} +30 -49
  61. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/evals/regression-testing.yaml +504 -0
  62. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/schemas/output.json +311 -0
  63. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/scripts/validate-config.json +50 -0
  64. package/templates/.claude/skills/feature-adr/references/agentic-qe/{risk-based-testing.md → qe-ref-risk-based-testing/REFERENCE.md} +23 -52
  65. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/evals/risk-based-testing.yaml +141 -0
  66. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/schemas/output.json +480 -0
  67. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/scripts/validate-config.json +25 -0
  68. package/templates/.claude/skills/feature-adr/references/agentic-qe/{shift-left-testing.md → qe-ref-shift-left-testing/REFERENCE.md} +33 -88
  69. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/evals/shift-left-testing.yaml +145 -0
  70. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/schemas/output.json +459 -0
  71. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/scripts/validate-config.json +25 -0
  72. package/templates/CLAUDE.md +3 -1
  73. package/templates/docs/feature-adr/04-admin-guide.md +1 -1
  74. package/templates/docs/improvement-directions.md +3 -3
  75. package/templates/docs/keysarium/02-admin-guide.md +2 -2
  76. package/templates/docs/keysarium/03-user-guide.md +3 -3
  77. package/templates/docs/keysarium/05-architecture.md +9 -8
  78. package/templates/docs/keysarium/06-user-flows.md +4 -4
  79. package/templates/lib/platform-templates/copilot.md +1 -1
  80. package/templates/lib/platform-templates/opencode.md +1 -1
  81. package/templates/.claude/skills/feature-adr/references/agentic-qe/enterprise-integration-testing.md +0 -111
  82. package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-ideation-swarm.md +0 -126
package/src/cli.js CHANGED
@@ -10,7 +10,7 @@ function showBanner() {
10
10
  console.log('');
11
11
  console.log(cyan('╔══════════════════════════════════════════════════════╗'));
12
12
  console.log(cyan('║') + bold(' \uD83D\uDD2C DZ-KEYSARIUM — AI Research Toolkit ') + cyan('║'));
13
- console.log(cyan('║') + ' Full 7-phase pipeline for Claude Code ' + cyan('║'));
13
+ console.log(cyan('║') + ' Full 7-phase research pipeline ' + cyan('║'));
14
14
  console.log(cyan('╚══════════════════════════════════════════════════════╝'));
15
15
  console.log('');
16
16
  }
@@ -40,6 +40,8 @@ function showHelp() {
40
40
  console.log(' ' + yellow('--minimal') + ' Install only .claude/ directory (skills, commands, rules)');
41
41
  console.log(' ' + yellow('--force') + ' Overwrite existing files without prompting');
42
42
  console.log(' ' + yellow('--with-docs') + ' Include docs/ directory');
43
+ console.log(' ' + yellow('--target') + ' Install for claude (default) or codex');
44
+ console.log(' ' + yellow('--project') + ' Project directory (default: current directory)');
43
45
  console.log(' ' + yellow('--dry-run') + ' Show what would be done without making changes');
44
46
  console.log(' ' + yellow('--help, -h') + ' Show this help message');
45
47
  console.log(' ' + yellow('--version, -v') + ' Show version number');
@@ -47,6 +49,7 @@ function showHelp() {
47
49
  console.log(bold('Examples:'));
48
50
  console.log(dim(' $ ') + 'npx @dzhechkov/keysarium init');
49
51
  console.log(dim(' $ ') + 'npx @dzhechkov/keysarium init --minimal --force');
52
+ console.log(dim(' $ ') + 'npx @dzhechkov/keysarium init --target codex --project ./my-case');
50
53
  console.log(dim(' $ ') + 'npx @dzhechkov/keysarium update --dry-run');
51
54
  console.log(dim(' $ ') + 'npx @dzhechkov/keysarium doctor');
52
55
  console.log('');
@@ -64,11 +67,14 @@ function parseArgs(argv) {
64
67
  withDocs: false,
65
68
  dryRun: false,
66
69
  targetDir: process.cwd(),
70
+ target: 'claude',
71
+ targetSpecified: false,
67
72
  };
68
73
 
69
74
  let command = null;
70
75
 
71
- for (const arg of args) {
76
+ for (let index = 0; index < args.length; index += 1) {
77
+ const arg = args[index];
72
78
  switch (arg) {
73
79
  case '--minimal':
74
80
  flags.minimal = true;
@@ -82,6 +88,25 @@ function parseArgs(argv) {
82
88
  case '--dry-run':
83
89
  flags.dryRun = true;
84
90
  break;
91
+ case '--target': {
92
+ const value = args[++index];
93
+ if (value !== 'claude' && value !== 'codex') {
94
+ error('--target must be claude or codex');
95
+ process.exit(1);
96
+ }
97
+ flags.target = value;
98
+ flags.targetSpecified = true;
99
+ break;
100
+ }
101
+ case '--project': {
102
+ const value = args[++index];
103
+ if (!value || value.startsWith('-')) {
104
+ error('--project requires a directory path');
105
+ process.exit(1);
106
+ }
107
+ flags.targetDir = path.resolve(value);
108
+ break;
109
+ }
85
110
  case '--help':
86
111
  case '-h':
87
112
  command = 'help';
@@ -132,6 +157,11 @@ function main() {
132
157
 
133
158
  // Route to command handlers
134
159
  const resolvedCommand = command || 'init';
160
+ if (flags.targetSpecified && resolvedCommand !== 'init') {
161
+ error('--target is supported only by init; update and doctor use the installation manifest');
162
+ process.exitCode = 1;
163
+ return;
164
+ }
135
165
 
136
166
  switch (resolvedCommand) {
137
167
  case 'init':
@@ -293,6 +293,28 @@ function checkSettingsValid(targetDir) {
293
293
  });
294
294
  }
295
295
 
296
+ function checkCodexEntrypoint(targetDir) {
297
+ return check('Codex entrypoint', () => {
298
+ const entry = path.join(targetDir, '.agents', 'skills', 'casarium', 'SKILL.md');
299
+ const command = path.join(targetDir, '.claude', 'commands', 'casarium.md');
300
+ const shards = path.join(targetDir, '.claude', 'shards');
301
+ const missing = [entry, command, shards].filter((item) => !fileExists(item));
302
+ if (missing.length > 0) {
303
+ return { passed: false, detail: `Missing ${missing.map((item) => path.relative(targetDir, item)).join(', ')}`,
304
+ fix: 'Run keysarium update to restore the installed Codex entrypoint.' };
305
+ }
306
+ const body = fs.readFileSync(entry, 'utf8');
307
+ const frontmatter = body.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n/);
308
+ if (!frontmatter || !/^name:\s*casarium\s*$/m.test(frontmatter[1])
309
+ || !/^description:\s*\S.+$/m.test(frontmatter[1])
310
+ || !body.includes('.claude/commands/casarium.md')) {
311
+ return { passed: false, detail: 'SKILL.md lacks Codex discovery metadata or the canonical command reference',
312
+ fix: 'Run keysarium update to restore the Codex entrypoint.' };
313
+ }
314
+ return { passed: true, detail: 'Project skill and canonical pipeline references present' };
315
+ });
316
+ }
317
+
296
318
  /**
297
319
  * Check 8: researches/ directory exists.
298
320
  */
@@ -372,7 +394,9 @@ async function run(options) {
372
394
  checkRulesPresent(targetDir),
373
395
  checkShardsPresent(targetDir),
374
396
  checkAgentsPresent(targetDir),
375
- checkSettingsValid(targetDir),
397
+ manifest.components?.includes('codex_entry')
398
+ ? checkCodexEntrypoint(targetDir)
399
+ : checkSettingsValid(targetDir),
376
400
  checkResearchDir(targetDir),
377
401
  ];
378
402
 
@@ -22,8 +22,10 @@ const {
22
22
  * --with-docs: add docs group
23
23
  */
24
24
  function resolveComponents(options) {
25
- const { minimal, withDocs } = options;
26
- const coreKeys = ['skills', 'commands', 'rules', 'shards', 'agents', 'hooks', 'claude_md', 'harvest'];
25
+ const { minimal, withDocs, target } = options;
26
+ const coreKeys = ['skills', 'commands', 'rules', 'shards', 'agents', 'claude_md', 'harvest'];
27
+ if (target === 'codex') coreKeys.push('codex_entry');
28
+ else coreKeys.push('hooks');
27
29
  const keys = [...coreKeys];
28
30
 
29
31
  if (!minimal) {
@@ -81,9 +83,10 @@ function installComponent(comp, templatesDir, targetDir, force) {
81
83
  * @param {boolean} options.withDocs — Include docs/ directory
82
84
  * @param {boolean} options.dryRun — Preview without writing anything
83
85
  * @param {string} options.targetDir — Destination project root
86
+ * @param {string} options.target — claude (default) or codex
84
87
  */
85
88
  async function run(options) {
86
- const { force, dryRun, targetDir } = options;
89
+ const { force, dryRun, targetDir, target = 'claude' } = options;
87
90
  const manifestPath = path.join(targetDir, MANIFEST_FILE);
88
91
 
89
92
  // ── a) Check for existing installation ──────────────────────────────────
@@ -93,9 +96,25 @@ async function run(options) {
93
96
  info(`Run ${cyan('npx @dzhechkov/keysarium update')} to update, or use ${yellow('--force')} to overwrite.`);
94
97
  process.exit(1);
95
98
  }
99
+ const existing = readJSON(manifestPath);
100
+ if (!existing || !Array.isArray(existing.components)) {
101
+ logError('Existing .keysarium.json is invalid; refusing to overwrite its ownership record.');
102
+ process.exit(1);
103
+ }
104
+ const existingTarget = existing.components.includes('codex_entry') ? 'codex' : 'claude';
105
+ if (existingTarget !== target) {
106
+ logError(`Cannot switch an installed ${existingTarget} toolkit to ${target} with --force. Remove it first, then init for the new target.`);
107
+ process.exit(1);
108
+ }
96
109
  warn('Existing installation found — overwriting (--force).');
97
110
  }
98
111
 
112
+ const codexEntryPath = path.join(targetDir, '.agents', 'skills', 'casarium', 'SKILL.md');
113
+ if (target === 'codex' && fileExists(codexEntryPath) && !force) {
114
+ logError('A project skill named casarium already exists. Use --force only if it may be replaced.');
115
+ process.exit(1);
116
+ }
117
+
99
118
  // ── b) Determine components ─────────────────────────────────────────────
100
119
  const componentKeys = resolveComponents(options);
101
120
  const templatesDir = getTemplatesDir();
@@ -103,6 +122,7 @@ async function run(options) {
103
122
  // ── c) Show plan ────────────────────────────────────────────────────────
104
123
  console.log('');
105
124
  info(bold('Installation plan:'));
125
+ info(`Target: ${target}; project: ${targetDir}`);
106
126
  console.log('');
107
127
 
108
128
  for (const key of componentKeys) {
@@ -161,16 +181,30 @@ async function run(options) {
161
181
 
162
182
  console.log('');
163
183
  console.log(bold('Next steps:'));
164
- console.log(` 1. Open ${cyan('Claude Code')} in this directory`);
165
- console.log(` 2. Run ${cyan('/casarium [your case description]')}`);
166
- console.log(` 3. Follow the 7-phase pipeline`);
167
- console.log('');
168
- console.log(bold('Available commands:'));
169
- console.log(` ${cyan('/casarium')} ${dim('\u2014 Full pipeline')}`);
170
- console.log(` ${cyan('/new-research')} ${dim('\u2014 New research')}`);
171
- console.log(` ${cyan('/parallel-research')} ${dim('\u2014 Multiple cases in parallel')}`);
172
- console.log(` ${cyan('/harvest')} ${dim('\u2014 Extract knowledge')}`);
184
+ if (target === 'codex') {
185
+ console.log(` 1. Open ${cyan('Codex')} in ${targetDir}`);
186
+ console.log(` 2. Invoke ${cyan('$casarium [your case description]')}`);
187
+ console.log(` 3. Confirm each phase checkpoint and select a CJM variant`);
188
+ console.log('');
189
+ console.log(bold('Codex integration status:'));
190
+ console.log(' Bundled workflow skills: installed under .claude/skills/ as phase references');
191
+ console.log(' Full pipeline entrypoint: installed at .agents/skills/casarium/SKILL.md');
192
+ console.log(' Codex hooks and MCP integrations: not installed');
193
+ console.log(' Claude settings/hooks: not installed for this target');
194
+ } else {
195
+ console.log(` 1. Open ${cyan('Claude Code')} in this directory`);
196
+ console.log(` 2. Run ${cyan('/casarium [your case description]')}`);
197
+ console.log(` 3. Follow the 7-phase pipeline`);
198
+ }
173
199
  console.log('');
200
+ if (target === 'claude') {
201
+ console.log(bold('Available commands:'));
202
+ console.log(` ${cyan('/casarium')} ${dim('\u2014 Full pipeline')}`);
203
+ console.log(` ${cyan('/new-research')} ${dim('\u2014 New research')}`);
204
+ console.log(` ${cyan('/parallel-research')} ${dim('\u2014 Multiple cases in parallel')}`);
205
+ console.log(` ${cyan('/harvest')} ${dim('\u2014 Extract knowledge')}`);
206
+ console.log('');
207
+ }
174
208
 
175
209
  process.exit(0);
176
210
  }
package/src/utils.js CHANGED
@@ -311,6 +311,7 @@ const COMPONENT_SPECS = {
311
311
  docs: { src: 'docs', name: 'Documentation', unit: 'guides', countMode: 'files', group: 'docs' },
312
312
  claude_md: { src: 'CLAUDE.md', name: 'Master instructions', group: 'core', isFile: true },
313
313
  harvest: { src: 'TOOLKIT_HARVEST.md', name: 'Knowledge harvest tracker', group: 'core', isFile: true },
314
+ codex_entry: { src: '.agents/skills/casarium', name: 'Codex pipeline entrypoint', unit: 'entrypoint', countMode: 'files', group: 'codex' },
314
315
  };
315
316
 
316
317
  /**
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: casarium
3
+ description: Run the installed Keysarium seven-phase case research pipeline in Codex, with phase artifacts and user checkpoints. Use when the user invokes $casarium or asks to work through a Keysarium case.
4
+ ---
5
+
6
+ # Casarium in Codex
7
+
8
+ This project contains the complete Keysarium workflow. Start by reading
9
+ `.claude/commands/casarium.md`; it is the source of truth for phase order, outputs and
10
+ checkpoints. Treat its `$ARGUMENTS` as the user's request after `$casarium`. If the case is
11
+ missing, ask for it.
12
+
13
+ For each phase, read only its `.claude/shards/phase-*.shard.md` and the skill files it names
14
+ under `.claude/skills/`. Read `.claude/rules/checkpoint-protocol.md` and
15
+ `.claude/rules/research-quality.md` when reaching their gates. Create phase artifacts under
16
+ `researches/<case-name>/` as the phase runs. Show the checkpoint and wait for the user's
17
+ confirmation before advancing. Phase 2.5 requires an explicit CJM choice; preserve that
18
+ choice in later phases. A failed research gate cannot emit a success promise.
19
+
20
+ The `.claude/` files are workflow references in Codex. Claude slash commands, Agent tool
21
+ calls, hook settings and model names inside them are not Codex commands or installed Codex
22
+ integrations. Use available Codex tools for the work and state any unavailable capability;
23
+ do not claim that a named Claude agent or hook ran. Parallel work is optional when the host
24
+ supports it. The research mode requirements still apply to every worker.
25
+
26
+ If the case asks for AI Factory mapping, read
27
+ `.claude/shards/phase-ai-factory.shard.md` and its referenced skill before Phase 0. Otherwise
28
+ leave that branch inactive. The project-local `$casarium` skill is the Codex entrypoint;
29
+ `/casarium` remains the Claude Code entrypoint.
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: code-goal-planner
3
+ description: Plans software changes with the bundled SPARC-GOAP protocol and testable milestones.
4
+ color: blue
5
+ ---
6
+
7
+ Read `.claude/skills/feature-adr/references/agentic-qe/code-goal-planner.md` before planning. It is the canonical protocol for this project agent.
8
+
9
+ Use the feature requirements, ADR decisions, quality risks and current repository evidence to propose an ordered implementation plan. Give each milestone a deliverable and a check that could disprove completion. Identify unresolved inputs instead of inventing metrics or claiming that code has already been verified. Return the plan to Step 6 of feature-ADR; the lead checks it before recording the plan artifact.
@@ -195,7 +195,9 @@ researches/CASE_NAME/
195
195
  - Файлы создаются в момент фазы, не в Phase 6
196
196
  - ⭐ Phase 2.5 (CJM Prototype) — НИКОГДА НЕ ПРОПУСКАТЬ
197
197
  - ⭐ 08_executive_summary.md — ОБЯЗАТЕЛЕН
198
- - Research в paranoid mode — ноль непроверенных утверждений
198
+ - Research: `moderate` для обычных источников; `strict`/`paranoid` только после проверки
199
+ `issuer_keys_available` и `source_class_verified` по `.claude/rules/research-quality.md`.
200
+ Недостижимая цель исследования останавливает checkpoint и следующие фазы.
199
201
  - {CHOSEN_CJM} передаётся в Phase 3-5
200
202
  - Если банк: on-premise, ФЗ-152, ЦБ, GigaChat/YandexGPT
201
203
  - Если мало времени: Quick Mode
@@ -23,7 +23,7 @@ $ARGUMENTS
23
23
  4. **Step 2:** Определить 3 варианта CJM (A/B/C)
24
24
  5. **Step 2.5:** VARIANT D — Future-Ready CJM (Trend-Based)
25
25
  - Загрузи `.claude/skills/goap-research-ed25519/SKILL.md` для trend research
26
- - Исследуй 5 категорий трендов (PARANOID mode)
26
+ - Исследуй 5 категорий трендов в режиме, разрешённом `.claude/rules/research-quality.md`
27
27
  - Создай Trend Brief
28
28
  - Синтезируй Variant D
29
29
  6. **Step 3:** Сгенерируй React-прототип (.jsx) с 4 вариантами
@@ -38,5 +38,5 @@ $ARGUMENTS
38
38
  Запусти 3 агента параллельно:
39
39
  - Agent 1: CJM Variant A — один подход к точке входа
40
40
  - Agent 2: CJM Variant B + C — альтернативные подходы
41
- - Agent 3: Trend Research для Variant D (GOAP PARANOID)
41
+ - Agent 3: Trend Research для Variant D (GOAP `moderate` для обычных источников)
42
42
  Затем синтезируй в единый прототип с 4 вариантами.
@@ -12,7 +12,10 @@ $ARGUMENTS
12
12
 
13
13
  1. **Загрузи скилл:** Прочитай `.claude/skills/goap-research-ed25519/SKILL.md`
14
14
  2. **Прочитай Phase 0-1** для контекста
15
- 3. **Режим: PARANOID** — ноль непроверенных утверждений
15
+ 3. **Выбери режим по `.claude/rules/research-quality.md`:** `moderate` для обычных
16
+ источников; `strict`/`paranoid` только при подтверждённых ключах издателей и
17
+ подписанной выдаче. Если GOAP вернул `GOAL_UNREACHABLE`, покажи причину и не
18
+ отмечай фазу завершённой.
16
19
 
17
20
  4. **Исследуй по направлениям:**
18
21
  - Аналоги — кто решал похожую задачу
@@ -29,7 +29,7 @@ Promises are machine-readable markers that formalize phase gates.
29
29
  |-------|------------|---------|
30
30
  | Phase 0 | `<promise>DISCOVERY_COMPLETE</promise>` | JTBD + competitors + ROI analyzed |
31
31
  | Phase 1 | `<promise>CASE_EXPLORED</promise>` | Case fully understood, brief created |
32
- | Phase 2 | `<promise>RESEARCH_PARANOID_PASSED</promise>` | All claims verified, zero unverified |
32
+ | Phase 2 | `<promise>RESEARCH_PARANOID_PASSED</promise>` | Legacy tag: evidence gate passed in the selected GOAP mode; no issuer-signature claim unless independently confirmed |
33
33
  | Phase 2.5 | `<promise>CJM_VALIDATED</promise>` | CJM prototype created and variant chosen |
34
34
  | Phase 3 | `<promise>SOLUTION_DESIGNED</promise>` | Solution strategy formulated |
35
35
  | Phase 4 | `<promise>ARCHITECTURE_DEFINED</promise>` | C4 diagrams + sequence flows ready |
@@ -57,6 +57,7 @@ Files created: [list] ✅
57
57
  ### Promise Validation Rules
58
58
 
59
59
  - A promise tag MUST only be emitted AFTER its conditions are verifiably met
60
+ - GOAP `GOAL_UNREACHABLE` cannot satisfy the Phase 2 promise; report the missing capability and stop
60
61
  - If conditions are NOT met, emit `<promise>[TAG]_INCOMPLETE</promise>` instead
61
62
  - Downstream phases SHOULD check for upstream promises before starting
62
63
  - Promise tags serve as formal phase gates — they replace informal "phase done" signals
@@ -1,10 +1,15 @@
1
1
  # Research Quality Rules
2
2
 
3
- ## PARANOID Mode (Default for all research)
4
- - Every factual claim MUST have a verifiable source
5
- - Zero tolerance for hallucinated citations
6
- - Confidence threshold: 0.99 minimum
7
- - If source cannot be verified → mark as [UNVERIFIED] and flag
3
+ ## Research mode selection
4
+ - Use GOAP `moderate` for ordinary web and publication sources. Cite material factual claims,
5
+ identify uncertainty and do not turn an unverified claim into a decisive conclusion.
6
+ - Select GOAP `strict` or `paranoid` only after confirming both `issuer_keys_available` (real
7
+ pinned Ed25519 issuer keys) and `source_class_verified` (signed delivery for that source
8
+ class). A URL or citation alone establishes neither capability.
9
+ - If the requested mode returns `GOAL_UNREACHABLE`, record the missing capabilities and stop
10
+ the research checkpoint. Do not emit a success promise or advance to the next phase.
11
+ - Zero tolerance for invented citations applies in every mode. Source attribution and issuer
12
+ signature verification are different claims.
8
13
 
9
14
  ## Citation Requirements
10
15
  - Format: `[Claim] — Source: [URL or publication], [Date]`
@@ -14,7 +19,7 @@
14
19
  ## Verification Checklist
15
20
  Before completing any research phase:
16
21
  - [ ] All claims have sources
17
- - [ ] No unverified statistics or percentages
22
+ - [ ] No unverified statistics or percentages presented as established facts
18
23
  - [ ] Competitor names verified to exist
19
24
  - [ ] Technology recommendations are for real, available products
20
25
  - [ ] Regulatory references cite actual laws/standards
@@ -13,12 +13,14 @@ Load: `.claude/skills/goap-research-ed25519/SKILL.md`
13
13
  ## Mandatory Outputs
14
14
  - `02_research_findings.md`
15
15
 
16
- ## PARANOID Mode — ACTIVE
17
- - Every factual claim MUST have a verifiable source
18
- - Zero tolerance for hallucinated citations
19
- - Confidence threshold: 0.99 minimum
20
- - Unverifiable claims: mark as [UNVERIFIED] and flag
21
- - Citation format: `[Claim] — Source: [URL or publication], [Date]`
16
+ ## Research mode and evidence
17
+ - Follow `.claude/rules/research-quality.md`: default GOAP `moderate` for ordinary sources.
18
+ - Use `strict`/`paranoid` only if both issuer-key and signed-delivery capabilities are
19
+ confirmed for the selected source class. Do not infer signature verification from a URL.
20
+ - Cite material factual claims; label unsupported claims `[UNVERIFIED]` and keep them out of
21
+ decisive conclusions. Invented citations are never acceptable.
22
+ - Citation format: `[Claim] — Source: [URL or publication], [Date]`.
23
+ - A `GOAL_UNREACHABLE` result blocks the checkpoint and transition to Phase 2.5.
22
24
 
23
25
  ## Agent Swarm (3 parallel, model: sonnet)
24
26
  - Agent 1: Analogues + Benchmarks
@@ -28,13 +30,15 @@ Load: `.claude/skills/goap-research-ed25519/SKILL.md`
28
30
 
29
31
  ## Quality Gates
30
32
  - ALL claims have sources
31
- - No unverified statistics or percentages
33
+ - No unverified statistics or percentages presented as established facts
32
34
  - Competitor names verified to exist
33
35
  - Technology recommendations are for real, available products
34
36
  - Regulatory references cite actual laws/standards
35
37
 
36
38
  ## Promise
37
- On completion: `<promise>RESEARCH_PARANOID_PASSED</promise>`
39
+ On successful evidence review in the selected mode: `<promise>RESEARCH_PARANOID_PASSED</promise>`.
40
+ The tag name is retained for downstream compatibility; it does not assert GOAP paranoid mode or
41
+ cryptographic issuer verification. On failure, emit the incomplete marker and do not advance.
38
42
 
39
43
  ## Anti-Patterns to Check
40
44
  - Bare claims without attribution → BLOCK
@@ -21,14 +21,15 @@
21
21
  ## Process
22
22
  1. Extract: primary_user, segments, aha_moment, solution_concept from Phases 0-2
23
23
  2. Define 3 CJM variants (A/B/C) with different approaches
24
- 3. Research 5 trend categories for Variant D (PARANOID mode)
24
+ 3. Research 5 trend categories for Variant D in the GOAP mode allowed by
25
+ `.claude/rules/research-quality.md`; ordinary sources use `moderate`
25
26
  4. Generate React .jsx prototype with all 4 variants
26
27
  5. User selects winning variant → sets `{CHOSEN_CJM}`
27
28
 
28
29
  ## Agent Swarm (3 parallel)
29
30
  - Agent 1 (opus): CJM Variant A design
30
31
  - Agent 2 (opus): CJM Variants B + C design
31
- - Agent 3 (sonnet): Trend Research for Variant D (PARANOID mode, 5 categories)
32
+ - Agent 3 (sonnet): Trend Research for Variant D (selected GOAP mode, 5 categories)
32
33
 
33
34
  ## Critical Variable
34
35
  `{CHOSEN_CJM}` — MUST be set by user selection. Passed to Phases 3-5.
@@ -36,7 +37,8 @@
36
37
  ## Quality Gates
37
38
  - Minimum 3 CJM variants (A/B/C) + 1 trend variant (D)
38
39
  - Prototype must be valid React JSX
39
- - Trend research in PARANOID mode (verified sources)
40
+ - Trend research cites sources, labels uncertainty and does not claim issuer verification
41
+ without confirmed capabilities
40
42
  - User MUST explicitly select a variant
41
43
 
42
44
  ## Promise
@@ -60,17 +60,19 @@ Trigger on:
60
60
  │ ├── adr-template.md ← ADR document template
61
61
  │ ├── c4-template.md ← C4 diagram templates
62
62
  │ ├── qe-checklist.md ← Quality engineering checklist
63
- │ └── agentic-qe/ ← Integrated agentic-qe skills (15 total)
63
+ │ └── agentic-qe/ ← 15 QE references (8 pinned protocols)
64
64
  │ ├── README.md ← Skill mapping, modes, install guide
65
- │ ├── shift-left-testing.md ← Step 3: ADR testability (Tier 3)
66
- │ ├── qcsd-ideation-swarm.md ← Step 3.5: Quality swarm (Tier 3)
65
+ │ ├── UPSTREAM-MANIFEST.json ← Pinned upstream paths and hashes
66
+ │ ├── LICENSE.agentic-qe ← Upstream MIT notice
67
+ │ ├── qe-ref-shift-left-testing/REFERENCE.md ← Step 3: ADR testability (Tier 3)
68
+ │ ├── qe-ref-qcsd-ideation-swarm/REFERENCE.md ← Step 3.5: Quality swarm (Tier 3)
67
69
  │ ├── code-goal-planner.md ← Step 6: SPARC-GOAP agent
68
- │ ├── brutal-honesty-review.md ← Step 8: Code review (Tier 2)
69
- │ ├── qe-requirements-validation.md ← Step 9: Traceability (Tier 3)
70
- │ ├── risk-based-testing.md ← Step 9: Risk scoring (Tier 3)
71
- │ ├── enterprise-integration-testing.md ← Step 9: Integration (Tier 3, condensed)
72
- │ ├── regression-testing.md ← Step 9: Regression (Tier 3)
73
- │ ├── qe-coverage-analysis.md ← Step 9: Coverage (Tier 3)
70
+ │ ├── qe-ref-brutal-honesty-review/REFERENCE.md ← Step 8: Code review (Tier 2)
71
+ │ ├── qe-ref-qe-requirements-validation/REFERENCE.md ← Step 9: Traceability (Tier 3)
72
+ │ ├── qe-ref-risk-based-testing/REFERENCE.md ← Step 9: Risk scoring (Tier 3)
73
+ │ ├── qe-ref-enterprise-integration-testing/REFERENCE.md ← Step 9: Integration
74
+ │ ├── qe-ref-regression-testing/REFERENCE.md ← Step 9: Regression (Tier 3)
75
+ │ ├── qe-ref-qe-coverage-analysis/REFERENCE.md ← Step 9: Coverage (Tier 3)
74
76
  │ ├── chaos-engineering-resilience.md ← Extended: Chaos (Tier 3)
75
77
  │ ├── security-testing.md ← Extended: OWASP (Tier 3)
76
78
  │ ├── performance-testing.md ← Extended: Load/stress (Tier 3)
@@ -649,17 +651,17 @@ statusline/JSON and its ETA keep their existing behavior. Do not start a termina
649
651
 
650
652
  ### What changes with `--full-qe`
651
653
 
652
- Full agentic-qe protocols for the same 9 core skills. No new agents, just deeper methodology.
654
+ The eight vendored core skills already provide pinned full protocols in Reference Mode. Direct Mode adds the installed aqe runtime, its MCP pattern memory, and the steps explicitly listed below; it does not make the bundled references more complete.
653
655
 
654
656
  | Step | Reference Mode (default) | Direct Mode (`--full-qe`) |
655
657
  |------|--------------------------|---------------------------|
656
658
  | Step 0 | Standard routing | + pattern recall → `{LEARNED_PATTERNS}` |
657
- | Step 3 | Condensed shift-left protocol | Full Level 1-4 shift-left with BDD generators |
658
- | Step 3.5 | 3 core + flag-based conditionals | Full QCSD swarm with all 9 agents + DDD mapping |
659
- | Step 6 | SPARC-GOAP goal state analysis | Full agent with milestone tracking + success metrics |
659
+ | Step 3 | Pinned shift-left protocol | Same protocol; installed aqe tooling when available |
660
+ | Step 3.5 | Bundled QCSD protocol and conditional perspectives | Installed aqe runtime can coordinate its full swarm |
661
+ | Step 6 | SPARC-GOAP goal state analysis | Installed planner agent when available |
660
662
  | Step 7 | Standard code generation | Standard code generation (no change) |
661
- | Step 8 | Brutal-honesty 3-mode review | Full calibration levels (1-3) + evidence protocol + QE pattern recall/store |
662
- | Step 9 | 4 agents with condensed protocols | 4 agents with full agentic-qe protocols + fleet pattern recall/store |
663
+ | Step 8 | Pinned brutal-honesty protocol | Same review plus aqe pattern recall/store |
664
+ | Step 9 | 4 agents with pinned full protocols | Same agents plus aqe fleet pattern recall/store |
663
665
 
664
666
  ### What `--full-qe-extended` adds on top
665
667
 
@@ -227,7 +227,7 @@ Fitness readiness:
227
227
 
228
228
  After all ADRs are drafted, apply **shift-left-testing** protocol (Level 4: Risk Analysis in Design).
229
229
 
230
- > Load: `references/agentic-qe/shift-left-testing.md`
230
+ > Load: `references/agentic-qe/qe-ref-shift-left-testing/REFERENCE.md`
231
231
 
232
232
  ### Testability Check per ADR
233
233
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  Adapted from [agentic-qe qcsd-ideation-swarm](https://github.com/proffesor-for-testing/agentic-qe) (Tier 3: Verified).
8
8
 
9
- > Load: `references/agentic-qe/qcsd-ideation-swarm.md`
9
+ > Load: `references/agentic-qe/qe-ref-qcsd-ideation-swarm/REFERENCE.md`
10
10
 
11
11
  ## When
12
12
 
@@ -13,7 +13,7 @@ Always runs, and ALWAYS writes `features/<slug>/06_implementation_plan.md` — e
13
13
 
14
14
  ## Model
15
15
 
16
- sonnet (analytical decomposition) + code-goal-planner SPARC-GOAP methodology
16
+ Use the planning model selected by the active feature-ADR routing policy, distinct from the coding model, with code-goal-planner SPARC-GOAP methodology.
17
17
 
18
18
  ## Input
19
19
 
@@ -25,7 +25,7 @@ sonnet (analytical decomposition) + code-goal-planner SPARC-GOAP methodology
25
25
 
26
26
  ## Protocol
27
27
 
28
- > Load: `references/agentic-qe/code-goal-planner.md` for SPARC-GOAP methodology.
28
+ In Claude Code, if the `code-goal-planner` agent is available, delegate goal-state analysis to it with the requirements, ADR decisions and quality risks. Check its proposed milestones against the project evidence before writing the plan. In Codex, or whenever that agent surface is unavailable, load `references/agentic-qe/code-goal-planner.md` and apply the same methodology directly. Do not report agent execution when only the reference was read.
29
29
 
30
30
  ### 0. Apply SPARC-GOAP Goal State Analysis
31
31
 
@@ -249,7 +249,7 @@ produced blockers. Non-blocking: empty result or error → proceed with the stan
249
249
 
250
250
  ### 3. Code Review via Brutal Honesty Review (M+)
251
251
 
252
- > Load: `references/agentic-qe/brutal-honesty-review.md`
252
+ > Load: `references/agentic-qe/qe-ref-brutal-honesty-review/REFERENCE.md`
253
253
 
254
254
  Apply the **brutal-honesty-review** protocol from agentic-qe (Tier 2: Validated).
255
255
 
@@ -28,11 +28,11 @@ sonnet (analytical fleet coordination — multiple parallel agents)
28
28
  ### 1. Fleet Assembly
29
29
 
30
30
  > Load agent protocols:
31
- > - Agent 1: `references/agentic-qe/qe-requirements-validation.md`
32
- > - Agent 2: `references/agentic-qe/risk-based-testing.md`
33
- > - Agent 3: `references/agentic-qe/enterprise-integration-testing.md`
34
- > - Agent 4: `references/agentic-qe/regression-testing.md`
35
- > - Shared: `references/agentic-qe/qe-coverage-analysis.md`
31
+ > - Agent 1: `references/agentic-qe/qe-ref-qe-requirements-validation/REFERENCE.md`
32
+ > - Agent 2: `references/agentic-qe/qe-ref-risk-based-testing/REFERENCE.md`
33
+ > - Agent 3: `references/agentic-qe/qe-ref-enterprise-integration-testing/REFERENCE.md`
34
+ > - Agent 4: `references/agentic-qe/qe-ref-regression-testing/REFERENCE.md`
35
+ > - Shared: `references/agentic-qe/qe-ref-qe-coverage-analysis/REFERENCE.md`
36
36
 
37
37
  Spawn a QE fleet of 4 parallel assessment agents:
38
38
 
@@ -100,7 +100,7 @@ Any UNMITIGATED critical risk (score ≥ 20) = GAP.
100
100
 
101
101
  ### 4. Integration Check (Agent 3)
102
102
 
103
- > Protocol from: `enterprise-integration-testing` (Tier 3, condensed)
103
+ > Protocol from: `enterprise-integration-testing` (pinned upstream protocol)
104
104
 
105
105
  Apply the **enterprise-integration-testing** hierarchical testing strategy:
106
106
 
@@ -251,17 +251,17 @@ Gaps requiring attention:
251
251
  ## Direct Mode (`--full-qe`)
252
252
 
253
253
  When `{AGENTIC_QE_MODE}` = `direct` (activated via `--full-qe` flag), Step 9
254
- uses full agentic-qe protocols for the same 4 core agents. No additional agents
255
- are added — the same fleet runs with deeper methodology from the full skill files.
254
+ uses the same four pinned full protocols as Reference Mode. No additional agents
255
+ are added; the installed aqe runtime adds its memory and fleet services.
256
256
 
257
257
  ### What changes
258
258
 
259
259
  | Agent | Reference Mode | Direct Mode (`--full-qe`) |
260
260
  |-------|---------------|---------------------------|
261
- | Agent 1 | Condensed qe-requirements-validation | Full SMART + BDD + sprint coverage protocol |
262
- | Agent 2 | Condensed risk-based-testing | Full 5×5 matrix + ML-enhanced + dynamic reassessment |
263
- | Agent 3 | Condensed enterprise-integration | Full hierarchical fleet + QCSD flags |
264
- | Agent 4 | Condensed regression-testing | Full change-based + historical + time-budget strategies |
261
+ | Agent 1 | Pinned qe-requirements-validation protocol | Same protocol; aqe runtime services |
262
+ | Agent 2 | Pinned risk-based-testing protocol | Same protocol; aqe runtime services |
263
+ | Agent 3 | Pinned enterprise-integration protocol | Same protocol; aqe fleet services |
264
+ | Agent 4 | Pinned regression-testing protocol | Same protocol; aqe runtime services |
265
265
 
266
266
  ## Pattern Memory Loop (Direct Modes)
267
267
 
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Agentic QE Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.