@hongmaple0820/scale-engine 0.16.0 → 0.17.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ToolOrchestrator.js","sourceRoot":"","sources":["../../src/tools/ToolOrchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolOrchestrator.js","sourceRoot":"","sources":["../../src/tools/ToolOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export type ContextFindingSeverity = 'error' | 'warn' | 'info';
2
+ export type ContextQuestionTopic = 'domain-language' | 'module-boundary' | 'acceptance-evidence' | 'risk-and-rollback';
3
+ export interface ContextFinding {
4
+ code: string;
5
+ severity: ContextFindingSeverity;
6
+ message: string;
7
+ path?: string;
8
+ }
9
+ export interface ContextGrillQuestion {
10
+ id: string;
11
+ topic: ContextQuestionTopic;
12
+ question: string;
13
+ reason: string;
14
+ blocking: boolean;
15
+ }
16
+ export interface ModuleDocStatus {
17
+ moduleName: string;
18
+ productDocPath: string;
19
+ architectureDocPath: string;
20
+ productDocExists: boolean;
21
+ architectureDocExists: boolean;
22
+ }
23
+ export interface ContextGovernanceReport {
24
+ ok: boolean;
25
+ projectDir: string;
26
+ request: string;
27
+ contextPath?: string;
28
+ contextMapPath?: string;
29
+ terms: string[];
30
+ moduleDocs: ModuleDocStatus[];
31
+ findings: ContextFinding[];
32
+ questions: ContextGrillQuestion[];
33
+ requiredArtifacts: string[];
34
+ }
35
+ export interface AnalyzeContextGovernanceInput {
36
+ projectDir: string;
37
+ request: string;
38
+ changedFiles?: string[];
39
+ }
40
+ export interface WriteContextGovernanceTemplatesInput {
41
+ projectDir: string;
42
+ projectName?: string;
43
+ force?: boolean;
44
+ }
45
+ export interface WriteContextGovernanceTemplatesResult {
46
+ created: string[];
47
+ skipped: string[];
48
+ }
49
+ export declare function analyzeContextGovernance(input: AnalyzeContextGovernanceInput): ContextGovernanceReport;
50
+ export declare function renderContextGrillPrompt(report: ContextGovernanceReport): string;
51
+ export declare function writeContextGovernanceTemplates(input: WriteContextGovernanceTemplatesInput): WriteContextGovernanceTemplatesResult;
@@ -0,0 +1,233 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join, normalize } from 'node:path';
3
+ const CONTEXT_CANDIDATES = ['CONTEXT.md', 'docs/CONTEXT.md'];
4
+ const CONTEXT_MAP_CANDIDATES = ['CONTEXT-MAP.md', 'docs/CONTEXT-MAP.md'];
5
+ export function analyzeContextGovernance(input) {
6
+ const projectDir = input.projectDir;
7
+ const contextPath = firstExisting(projectDir, CONTEXT_CANDIDATES);
8
+ const contextMapPath = firstExisting(projectDir, CONTEXT_MAP_CANDIDATES);
9
+ const findings = [];
10
+ const terms = contextPath ? parseContextTerms(readFileSync(contextPath, 'utf-8')) : [];
11
+ const contextMap = contextMapPath ? parseContextMap(readFileSync(contextMapPath, 'utf-8')) : new Map();
12
+ const moduleDocs = resolveModuleDocs(projectDir, input.changedFiles ?? [], contextMap);
13
+ if (!contextPath) {
14
+ findings.push({
15
+ code: 'missing-context-doc',
16
+ severity: 'error',
17
+ message: 'Missing CONTEXT.md. Domain language, aliases, and rejected meanings are not durable.',
18
+ });
19
+ }
20
+ if (!contextMapPath) {
21
+ findings.push({
22
+ code: 'missing-context-map',
23
+ severity: 'error',
24
+ message: 'Missing CONTEXT-MAP.md. Module ownership and product/architecture document links are not durable.',
25
+ });
26
+ }
27
+ for (const doc of moduleDocs) {
28
+ if (!doc.productDocExists || !doc.architectureDocExists) {
29
+ findings.push({
30
+ code: 'missing-module-doc',
31
+ severity: 'error',
32
+ path: doc.moduleName,
33
+ message: `Module ${doc.moduleName} is touched but product or architecture docs are missing.`,
34
+ });
35
+ }
36
+ }
37
+ const questions = buildContextQuestions(input.request, findings, moduleDocs);
38
+ const requiredArtifacts = unique([
39
+ !contextPath ? 'CONTEXT.md' : undefined,
40
+ !contextMapPath ? 'CONTEXT-MAP.md' : undefined,
41
+ ...moduleDocs.flatMap(doc => [
42
+ doc.productDocExists ? undefined : doc.productDocPath,
43
+ doc.architectureDocExists ? undefined : doc.architectureDocPath,
44
+ ]),
45
+ ].filter(Boolean));
46
+ return {
47
+ ok: !findings.some(finding => finding.severity === 'error'),
48
+ projectDir,
49
+ request: input.request,
50
+ contextPath,
51
+ contextMapPath,
52
+ terms,
53
+ moduleDocs,
54
+ findings,
55
+ questions,
56
+ requiredArtifacts,
57
+ };
58
+ }
59
+ export function renderContextGrillPrompt(report) {
60
+ const lines = [];
61
+ lines.push('# Context Grill');
62
+ lines.push('');
63
+ lines.push(`Request: ${report.request}`);
64
+ lines.push(`Status: ${report.ok ? 'ready' : 'blocked'}`);
65
+ lines.push('');
66
+ lines.push('## Evidence');
67
+ lines.push(`- CONTEXT.md: ${report.contextPath ?? 'missing'}`);
68
+ lines.push(`- CONTEXT-MAP.md: ${report.contextMapPath ?? 'missing'}`);
69
+ if (report.terms.length > 0)
70
+ lines.push(`- Terms: ${report.terms.join(', ')}`);
71
+ for (const finding of report.findings) {
72
+ lines.push(`- [${finding.severity.toUpperCase()}] ${finding.code}: ${finding.message}`);
73
+ }
74
+ lines.push('');
75
+ lines.push('## Questions');
76
+ for (const question of report.questions) {
77
+ const marker = question.blocking ? 'BLOCKING' : 'CHECK';
78
+ lines.push(`- [${marker}] ${question.question}`);
79
+ lines.push(` Reason: ${question.reason}`);
80
+ }
81
+ return lines.join('\n');
82
+ }
83
+ export function writeContextGovernanceTemplates(input) {
84
+ const projectName = input.projectName ?? 'Project';
85
+ const files = new Map([
86
+ ['CONTEXT.md', contextTemplate(projectName)],
87
+ ['docs/CONTEXT-MAP.md', contextMapTemplate(projectName)],
88
+ ]);
89
+ const created = [];
90
+ const skipped = [];
91
+ for (const [relativePath, content] of files) {
92
+ const filePath = join(input.projectDir, relativePath);
93
+ if (existsSync(filePath) && !input.force) {
94
+ skipped.push(filePath);
95
+ continue;
96
+ }
97
+ mkdirSync(dirname(filePath), { recursive: true });
98
+ writeFileSync(filePath, content, 'utf-8');
99
+ created.push(filePath);
100
+ }
101
+ return { created, skipped };
102
+ }
103
+ function firstExisting(projectDir, candidates) {
104
+ return candidates.map(candidate => join(projectDir, candidate)).find(path => existsSync(path));
105
+ }
106
+ function parseContextTerms(content) {
107
+ const terms = [];
108
+ for (const line of content.split(/\r?\n/)) {
109
+ if (!line.trim().startsWith('|'))
110
+ continue;
111
+ if (/\|\s*Term\s*\|/i.test(line) || /^\|\s*-+/.test(line.trim()))
112
+ continue;
113
+ const parts = line.split('|').map(part => part.trim()).filter(Boolean);
114
+ if (parts.length >= 2 && parts[0] !== '---')
115
+ terms.push(parts[0]);
116
+ }
117
+ return unique(terms);
118
+ }
119
+ function parseContextMap(content) {
120
+ const map = new Map();
121
+ for (const line of content.split(/\r?\n/)) {
122
+ if (!line.trim().startsWith('|'))
123
+ continue;
124
+ if (/\|\s*Module\s*\|/i.test(line) || /^\|\s*-+/.test(line.trim()))
125
+ continue;
126
+ const parts = line.split('|').map(part => part.trim()).filter(Boolean);
127
+ if (parts.length < 4 || parts[0] === '---')
128
+ continue;
129
+ map.set(parts[0], {
130
+ moduleName: parts[0],
131
+ productDocPath: parts[2],
132
+ architectureDocPath: parts[3],
133
+ });
134
+ }
135
+ return map;
136
+ }
137
+ function resolveModuleDocs(projectDir, changedFiles, contextMap) {
138
+ const modules = unique(changedFiles.map(inferModuleName).filter(Boolean));
139
+ return modules.map(moduleName => {
140
+ const mapped = contextMap.get(moduleName);
141
+ const productDocPath = mapped?.productDocPath ?? `docs/modules/${moduleName}/product.md`;
142
+ const architectureDocPath = mapped?.architectureDocPath ?? `docs/modules/${moduleName}/architecture.md`;
143
+ return {
144
+ moduleName,
145
+ productDocPath,
146
+ architectureDocPath,
147
+ productDocExists: existsSync(join(projectDir, productDocPath)),
148
+ architectureDocExists: existsSync(join(projectDir, architectureDocPath)),
149
+ };
150
+ });
151
+ }
152
+ function inferModuleName(filePath) {
153
+ const normalized = normalize(filePath).replace(/\\/g, '/');
154
+ const parts = normalized.split('/').filter(Boolean);
155
+ const roots = new Set(['src', 'app', 'lib', 'services', 'packages', 'modules']);
156
+ if (parts.length >= 2 && roots.has(parts[0]))
157
+ return parts[1];
158
+ return parts[0];
159
+ }
160
+ function buildContextQuestions(request, findings, moduleDocs) {
161
+ const questions = [];
162
+ if (findings.some(finding => finding.code === 'missing-context-doc')) {
163
+ questions.push({
164
+ id: 'context-domain-language',
165
+ topic: 'domain-language',
166
+ question: 'Which domain terms, aliases, and forbidden meanings must be captured before implementation?',
167
+ reason: 'Without a project glossary, agents can invent inconsistent product language.',
168
+ blocking: true,
169
+ });
170
+ }
171
+ if (findings.some(finding => finding.code === 'missing-context-map' || finding.code === 'missing-module-doc')) {
172
+ questions.push({
173
+ id: 'context-module-boundary',
174
+ topic: 'module-boundary',
175
+ question: `Which module owns ${moduleDocs.map(doc => doc.moduleName).join(', ') || 'this change'}, and which product/architecture docs must be updated?`,
176
+ reason: 'Module ownership and document links prevent stale specs and cross-module conflicts.',
177
+ blocking: true,
178
+ });
179
+ }
180
+ if (/\btenant|auth|permission|security|token|quota|delete|payment|migration\b/i.test(request)) {
181
+ questions.push({
182
+ id: 'context-risk-boundary',
183
+ topic: 'risk-and-rollback',
184
+ question: 'What tenant/user isolation, authorization, rollback, and audit evidence is required?',
185
+ reason: 'The request touches a security or data-boundary concern.',
186
+ blocking: true,
187
+ });
188
+ }
189
+ questions.push({
190
+ id: 'context-acceptance-evidence',
191
+ topic: 'acceptance-evidence',
192
+ question: 'Which command output, test report, screenshot, or product artifact will prove this is done?',
193
+ reason: 'Completion claims must be tied to durable evidence.',
194
+ blocking: false,
195
+ });
196
+ return questions;
197
+ }
198
+ function contextTemplate(projectName) {
199
+ return [
200
+ '# CONTEXT.md',
201
+ '',
202
+ `Project: ${projectName}`,
203
+ '',
204
+ '| Term | Definition | Examples | Aliases | Source |',
205
+ '|------|------------|----------|---------|--------|',
206
+ '| User | Person or service account using the product | login user | account | product |',
207
+ '',
208
+ '## Rejected Meanings',
209
+ '',
210
+ '- Record terms that agents must not reinterpret.',
211
+ '',
212
+ ].join('\n');
213
+ }
214
+ function contextMapTemplate(projectName) {
215
+ return [
216
+ '# CONTEXT-MAP.md',
217
+ '',
218
+ `Project: ${projectName}`,
219
+ '',
220
+ '| Module | Owner | Product Doc | Architecture Doc |',
221
+ '| --- | --- | --- | --- |',
222
+ '| example | team | docs/modules/example/product.md | docs/modules/example/architecture.md |',
223
+ '',
224
+ '## Cross-Module Rules',
225
+ '',
226
+ '- Record ownership, upstream/downstream dependencies, and document update triggers here.',
227
+ '',
228
+ ].join('\n');
229
+ }
230
+ function unique(items) {
231
+ return [...new Set(items)];
232
+ }
233
+ //# sourceMappingURL=ContextGovernance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextGovernance.js","sourceRoot":"","sources":["../../src/workflow/ContextGovernance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export interface DiagnosticLoopInput {
2
+ taskId: string;
3
+ symptom: string;
4
+ reproductionCommand?: string;
5
+ expectedFailure?: string;
6
+ changedFiles?: string[];
7
+ verificationCommands?: string[];
8
+ }
9
+ export interface DiagnosticHypothesis {
10
+ id: string;
11
+ statement: string;
12
+ evidenceToCollect: string;
13
+ falsification: string;
14
+ }
15
+ export interface DiagnosticInstrumentationStep {
16
+ description: string;
17
+ target: string;
18
+ cleanupRequired: boolean;
19
+ }
20
+ export interface DiagnosticLoop {
21
+ taskId: string;
22
+ symptom: string;
23
+ reproduction: {
24
+ command?: string;
25
+ expectedFailure?: string;
26
+ };
27
+ changedFiles: string[];
28
+ hypotheses: DiagnosticHypothesis[];
29
+ instrumentationPlan: DiagnosticInstrumentationStep[];
30
+ verificationCommands: string[];
31
+ cleanupChecklist: string[];
32
+ }
33
+ export interface DiagnosticValidation {
34
+ ready: boolean;
35
+ blockers: string[];
36
+ warnings: string[];
37
+ }
38
+ export declare function createDiagnosticLoop(input: DiagnosticLoopInput): DiagnosticLoop;
39
+ export declare function validateDiagnosticLoop(loop: DiagnosticLoop): DiagnosticValidation;
40
+ export declare function renderDiagnosticLoopMarkdown(loop: DiagnosticLoop): string;
@@ -0,0 +1,105 @@
1
+ export function createDiagnosticLoop(input) {
2
+ const changedFiles = input.changedFiles ?? [];
3
+ return {
4
+ taskId: input.taskId,
5
+ symptom: input.symptom,
6
+ reproduction: {
7
+ command: input.reproductionCommand,
8
+ expectedFailure: input.expectedFailure,
9
+ },
10
+ changedFiles,
11
+ hypotheses: createHypotheses(input.symptom, changedFiles),
12
+ instrumentationPlan: createInstrumentationPlan(changedFiles),
13
+ verificationCommands: input.verificationCommands ?? compact([input.reproductionCommand]),
14
+ cleanupChecklist: [
15
+ 'Remove debug logs, temporary traces, and noisy console output before review.',
16
+ 'Delete temporary scripts, fixtures, screenshots, and local-only data after evidence is captured.',
17
+ 'Keep only durable verification evidence referenced by the task artifact.',
18
+ ],
19
+ };
20
+ }
21
+ export function validateDiagnosticLoop(loop) {
22
+ const blockers = [];
23
+ const warnings = [];
24
+ if (!loop.reproduction.command)
25
+ blockers.push('Missing reproduction command; debugging cannot start from a verified failure.');
26
+ if (!loop.reproduction.expectedFailure)
27
+ blockers.push('Missing expected failure; the reproduction must identify the wrong behavior.');
28
+ if (loop.hypotheses.length < 3)
29
+ blockers.push('At least three falsifiable hypotheses are required.');
30
+ if (loop.verificationCommands.length === 0)
31
+ blockers.push('Missing verification commands for the final fix.');
32
+ if (!loop.instrumentationPlan.some(step => step.cleanupRequired))
33
+ warnings.push('No cleanup-required instrumentation step was recorded.');
34
+ return {
35
+ ready: blockers.length === 0,
36
+ blockers,
37
+ warnings,
38
+ };
39
+ }
40
+ export function renderDiagnosticLoopMarkdown(loop) {
41
+ const lines = [];
42
+ lines.push(`# Diagnostic Loop: ${loop.taskId}`);
43
+ lines.push('');
44
+ lines.push(`Symptom: ${loop.symptom}`);
45
+ lines.push('');
46
+ lines.push('## Reproduction');
47
+ lines.push(`- Command: ${loop.reproduction.command ?? 'MISSING'}`);
48
+ lines.push(`- Expected failure: ${loop.reproduction.expectedFailure ?? 'MISSING'}`);
49
+ lines.push('');
50
+ lines.push('## Hypotheses');
51
+ for (const hypothesis of loop.hypotheses) {
52
+ lines.push(`- ${hypothesis.id}: ${hypothesis.statement}`);
53
+ lines.push(` Evidence: ${hypothesis.evidenceToCollect}`);
54
+ lines.push(` Falsify by: ${hypothesis.falsification}`);
55
+ }
56
+ lines.push('');
57
+ lines.push('## Instrumentation');
58
+ for (const step of loop.instrumentationPlan) {
59
+ lines.push(`- ${step.description} (${step.target}) cleanup=${step.cleanupRequired}`);
60
+ }
61
+ lines.push('');
62
+ lines.push('## Cleanup');
63
+ for (const item of loop.cleanupChecklist)
64
+ lines.push(`- ${item}`);
65
+ lines.push('');
66
+ lines.push('## Verification');
67
+ for (const command of loop.verificationCommands)
68
+ lines.push(`- ${command}`);
69
+ return lines.join('\n');
70
+ }
71
+ function createHypotheses(symptom, changedFiles) {
72
+ const scope = changedFiles.length > 0 ? changedFiles.join(', ') : 'the touched module';
73
+ return [
74
+ {
75
+ id: 'H1',
76
+ statement: `The failing behavior is caused by an incorrect contract or route boundary in ${scope}.`,
77
+ evidenceToCollect: 'Compare the failing request, public interface, and registered handler or exported API.',
78
+ falsification: 'A direct contract check shows the request and handler agree.',
79
+ },
80
+ {
81
+ id: 'H2',
82
+ statement: `The state transition or persistence path behind "${symptom}" is incomplete.`,
83
+ evidenceToCollect: 'Trace the minimal state read/write path and capture before/after values with redacted data.',
84
+ falsification: 'State changes are correct and durable across the reproduction.',
85
+ },
86
+ {
87
+ id: 'H3',
88
+ statement: 'The issue is caused by configuration, dependency, environment, or fixture drift.',
89
+ evidenceToCollect: 'Record active config, dependency version, feature flag, and fixture setup used by the reproduction.',
90
+ falsification: 'The failure reproduces with a clean, documented configuration.',
91
+ },
92
+ ];
93
+ }
94
+ function createInstrumentationPlan(changedFiles) {
95
+ const targets = changedFiles.length > 0 ? changedFiles : ['affected module'];
96
+ return targets.slice(0, 3).map(target => ({
97
+ description: 'Add the smallest temporary trace needed to prove or disprove one hypothesis.',
98
+ target,
99
+ cleanupRequired: true,
100
+ }));
101
+ }
102
+ function compact(items) {
103
+ return items.filter((item) => item !== undefined);
104
+ }
105
+ //# sourceMappingURL=DiagnosticLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticLoop.js","sourceRoot":"","sources":["../../src/workflow/DiagnosticLoop.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import type { GateResult } from './types.js';
2
2
  import { type SkillPlan } from '../skills/routing/index.js';
3
+ import { type ContextGovernanceReport } from './ContextGovernance.js';
4
+ import { type DiagnosticLoop, type DiagnosticValidation } from './DiagnosticLoop.js';
5
+ import { type TddSlice } from './TddLoop.js';
3
6
  export type TaskArtifactLevel = 'S' | 'M' | 'L' | 'CRITICAL';
4
7
  export interface TaskArtifactScaffoldOptions {
5
8
  projectDir?: string;
@@ -31,6 +34,22 @@ export interface TaskArtifactCheckOptions {
31
34
  level: TaskArtifactLevel;
32
35
  skillRequiredArtifacts?: string[];
33
36
  }
37
+ export interface ContextGrillArtifactAppendOptions {
38
+ projectDir?: string;
39
+ artifactsDir?: string;
40
+ report: ContextGovernanceReport;
41
+ }
42
+ export interface DiagnosticLoopArtifactAppendOptions {
43
+ projectDir?: string;
44
+ artifactsDir?: string;
45
+ loop: DiagnosticLoop;
46
+ validation: DiagnosticValidation;
47
+ }
48
+ export interface TddSliceArtifactAppendOptions {
49
+ projectDir?: string;
50
+ artifactsDir?: string;
51
+ slice: TddSlice;
52
+ }
34
53
  export interface TaskArtifactIncompleteItem {
35
54
  file: string;
36
55
  reason: string;
@@ -44,4 +63,7 @@ export interface TaskArtifactCheckResult {
44
63
  }
45
64
  export declare function scaffoldTaskArtifacts(options: TaskArtifactScaffoldOptions): TaskArtifactScaffoldResult;
46
65
  export declare function appendVerificationArtifact(options: VerificationArtifactAppendOptions): string | null;
66
+ export declare function appendContextGrillArtifact(options: ContextGrillArtifactAppendOptions): string | null;
67
+ export declare function appendDiagnosticLoopArtifact(options: DiagnosticLoopArtifactAppendOptions): string | null;
68
+ export declare function appendTddSliceArtifact(options: TddSliceArtifactAppendOptions): string | null;
47
69
  export declare function checkTaskArtifactCompleteness(options: TaskArtifactCheckOptions): TaskArtifactCheckResult;
@@ -2,6 +2,9 @@ import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } fr
2
2
  import { isAbsolute, join, resolve } from 'node:path';
3
3
  import { governanceTemplateContent } from './GovernanceTemplates.js';
4
4
  import { skillPlanMarkdown } from '../skills/routing/index.js';
5
+ import { renderContextGrillPrompt } from './ContextGovernance.js';
6
+ import { renderDiagnosticLoopMarkdown } from './DiagnosticLoop.js';
7
+ import { evaluateTddSlice, renderTddSliceMarkdown } from './TddLoop.js';
5
8
  const TASK_ARTIFACTS = [
6
9
  'explore.md',
7
10
  'mini-prd.md',
@@ -67,6 +70,45 @@ export function appendVerificationArtifact(options) {
67
70
  appendFileSync(target, verificationRunMarkdown(options), 'utf-8');
68
71
  return target;
69
72
  }
73
+ export function appendContextGrillArtifact(options) {
74
+ return appendTaskArtifactSection({
75
+ projectDir: options.projectDir,
76
+ artifactsDir: options.artifactsDir,
77
+ fileName: 'explore.md',
78
+ title: 'SCALE Context Grill',
79
+ content: renderContextGrillPrompt(options.report),
80
+ });
81
+ }
82
+ export function appendDiagnosticLoopArtifact(options) {
83
+ const validationLines = [
84
+ `Ready: ${options.validation.ready}`,
85
+ ...options.validation.blockers.map(blocker => `Blocker: ${blocker}`),
86
+ ...options.validation.warnings.map(warning => `Warning: ${warning}`),
87
+ ];
88
+ return appendTaskArtifactSection({
89
+ projectDir: options.projectDir,
90
+ artifactsDir: options.artifactsDir,
91
+ fileName: 'plan.md',
92
+ title: 'SCALE Diagnostic Loop',
93
+ content: `${renderDiagnosticLoopMarkdown(options.loop)}\n\n## Validation\n${validationLines.map(line => `- ${line}`).join('\n')}`,
94
+ });
95
+ }
96
+ export function appendTddSliceArtifact(options) {
97
+ const evaluation = evaluateTddSlice(options.slice);
98
+ const evaluationLines = [
99
+ `Ready for implementation: ${evaluation.readyForImplementation}`,
100
+ `Ready for completion: ${evaluation.readyForCompletion}`,
101
+ ...evaluation.blockers.map(blocker => `Blocker: ${blocker}`),
102
+ ...evaluation.warnings.map(warning => `Warning: ${warning}`),
103
+ ];
104
+ return appendTaskArtifactSection({
105
+ projectDir: options.projectDir,
106
+ artifactsDir: options.artifactsDir,
107
+ fileName: 'verification.md',
108
+ title: 'SCALE TDD Vertical Slice',
109
+ content: `${renderTddSliceMarkdown(options.slice)}\n\n## Evaluation\n${evaluationLines.map(line => `- ${line}`).join('\n')}`,
110
+ });
111
+ }
70
112
  export function checkTaskArtifactCompleteness(options) {
71
113
  if (options.level === 'S') {
72
114
  return { complete: true, artifactsDir: options.artifactsDir, required: [], missing: [], incomplete: [] };
@@ -127,6 +169,19 @@ Final Status: ${options.passed ? 'passed' : 'failed'}
127
169
  ${rows.length ? rows.join('\n') : '| no command evidence | FAIL | no evidence items recorded |'}
128
170
  `;
129
171
  }
172
+ function appendTaskArtifactSection(options) {
173
+ if (!options.artifactsDir)
174
+ return null;
175
+ const projectDir = resolve(options.projectDir ?? process.cwd());
176
+ const dir = isAbsolute(options.artifactsDir) ? options.artifactsDir : resolve(projectDir, options.artifactsDir);
177
+ if (!existsSync(dir))
178
+ mkdirSync(dir, { recursive: true });
179
+ const target = join(dir, options.fileName);
180
+ if (!existsSync(target))
181
+ writeFileSync(target, `# ${options.fileName}\n`, 'utf-8');
182
+ appendFileSync(target, `\n\n## ${options.title} - ${new Date().toISOString()}\n\n${options.content}\n`, 'utf-8');
183
+ return target;
184
+ }
130
185
  function readTemplate(projectDir, name) {
131
186
  const templatePath = join(projectDir, 'docs', 'workflow', 'templates', name);
132
187
  if (existsSync(templatePath))