Merge pull request #467 from pbakaus/codex/issue-464-seed-components

Fix seed DESIGN.md coverage checks
This commit is contained in:
Paul Bakaus
2026-07-31 17:43:21 -07:00
committed by GitHub
2 changed files with 42 additions and 1 deletions
+10 -1
View File
@@ -129,6 +129,11 @@ function hasCoverageValue(value) {
return false;
}
const SEED_DESIGN_MARKERS = ['/', '$'].map((prefix) =>
'<!-- SEED: established with the user before implementation; '
+ `re-run ${prefix}impeccable document once there's code to capture the actual tokens and components. -->`
);
export function checkDesignCoverage({ design, designPath, parseDesignMd }) {
if (!design || typeof parseDesignMd !== 'function') return [];
let model;
@@ -137,7 +142,11 @@ export function checkDesignCoverage({ design, designPath, parseDesignMd }) {
} catch {
return [];
}
const missing = ['colors', 'typography', 'components']
const isSeed = SEED_DESIGN_MARKERS.some((marker) => design.includes(marker));
const requiredSections = isSeed
? ['colors', 'typography']
: ['colors', 'typography', 'components'];
const missing = requiredSections
.filter((section) => !model[section] && !hasCoverageValue(model.frontmatter?.[section]));
if (!missing.length) return [];
return [finding({
+32
View File
@@ -172,6 +172,38 @@ describe('checkDesignCoverage', () => {
assert.deepEqual(checkDesignCoverage({ design, designPath: 'DESIGN.md', parseDesignMd }), []);
});
it('allows Components to be absent from a marked seed document', () => {
for (const command of ['/impeccable', '$impeccable']) {
const design = [
`<!-- SEED: established with the user before implementation; re-run ${command} document once there's code to capture the actual tokens and components. -->`,
'',
'# Design System: X',
'',
'## Colors', '', '### Primary', '- **Ink** (#111): Text.', '',
'## Typography', '', '**Body Font:** Inter', '',
'### Hierarchy', '- **Body** (400, 16px, 1.5): Paragraphs.', '',
].join('\n');
assert.deepEqual(checkDesignCoverage({ design, designPath: 'DESIGN.md', parseDesignMd }), []);
}
});
it('still requires seed documents to cover Colors and Typography', () => {
for (const command of ['/impeccable', '$impeccable']) {
const design = [
`<!-- SEED: established with the user before implementation; re-run ${command} document once there's code to capture the actual tokens and components. -->`,
'',
'# Design System: X',
'',
'## Typography', '', '**Body Font:** Inter', '',
'### Hierarchy', '- **Body** (400, 16px, 1.5): Paragraphs.', '',
].join('\n');
const findings = checkDesignCoverage({ design, designPath: 'DESIGN.md', parseDesignMd });
assert.deepEqual(ids(findings), ['design-md-coverage']);
assert.match(findings[0].summary, /no colors section/);
assert.doesNotMatch(findings[0].summary, /components/);
}
});
it('counts machine-readable frontmatter as section coverage', () => {
const design = [
'---',