| 123456789101112131415161718192021222324252627 |
- import fs from 'fs';
- import path from 'path';
- function assert(condition, message) {
- if (!condition) throw new Error(message);
- }
- console.log('\n── Compile-Fix Workflow Shape ──');
- const workflowPath = path.join(process.cwd(), '.vl-code', 'workflows', 'compile-fix.json');
- const workflow = JSON.parse(fs.readFileSync(workflowPath, 'utf-8'));
- assert(workflow.version === '3.16', 'compile-fix workflow should stay on spec v3.16');
- assert(workflow.registry.files.inputs.includes('.vl-code/last-compile.json'), 'compile-fix workflow should depend on the latest compile report');
- const stepIds = workflow.steps.map(step => step.id);
- assert(stepIds.includes('LLM_010_LoadCompileReport'), 'compile-fix workflow should load the persisted compile report first');
- assert(stepIds.includes('LLM_020_PlanFixes'), 'compile-fix workflow should plan file-level fixes');
- assert(stepIds.includes('LLM_031_ApplyFix'), 'compile-fix workflow should rewrite the affected files');
- assert(!stepIds.includes('LLM_010_Compile'), 'compile-fix workflow should not pretend to compile internally');
- assert(!stepIds.includes('LLM_040_Recompile'), 'compile-fix workflow should leave recompilation to the real compile tool');
- const applyFix = workflow.steps.find(step => step.id === 'LLM_031_ApplyFix');
- assert(Array.isArray(applyFix?.in?.readFiles) && applyFix.in.readFiles[0] === '=_item.file', 'file fix step should read the current file before rewriting it');
- assert(applyFix.out && Object.keys(applyFix.out).includes('/{_item.file}'), 'file fix step should write back to the affected file path');
- console.log('PASS test-compile-fix-workflow.js');
|