fix: link empty Feature groups
Build and publish 3D Architecture Wizzard documentation / build (pull_request) Failing after 21s

This commit is contained in:
2026-09-02 09:45:36 +00:00
parent a4564001c4
commit 9b85ba4322
13 changed files with 93 additions and 1 deletions
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-1 Features"
description: "Review Features governed by 3DARCH-EP-1."
---
# Review 3DARCH-EP-1 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-1 boundary](../3darch-ep-1.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-10 Features"
description: "Review Features governed by 3DARCH-EP-10."
---
# Review 3DARCH-EP-10 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-10 boundary](../3darch-ep-10.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-2 Features"
description: "Review Features governed by 3DARCH-EP-2."
---
# Review 3DARCH-EP-2 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-2 boundary](../3darch-ep-2.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-3 Features"
description: "Review Features governed by 3DARCH-EP-3."
---
# Review 3DARCH-EP-3 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-3 boundary](../3darch-ep-3.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-4 Features"
description: "Review Features governed by 3DARCH-EP-4."
---
# Review 3DARCH-EP-4 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-4 boundary](../3darch-ep-4.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-5 Features"
description: "Review Features governed by 3DARCH-EP-5."
---
# Review 3DARCH-EP-5 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-5 boundary](../3darch-ep-5.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-6 Features"
description: "Review Features governed by 3DARCH-EP-6."
---
# Review 3DARCH-EP-6 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-6 boundary](../3darch-ep-6.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-7 Features"
description: "Review Features governed by 3DARCH-EP-7."
---
# Review 3DARCH-EP-7 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-7 boundary](../3darch-ep-7.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-8 Features"
description: "Review Features governed by 3DARCH-EP-8."
---
# Review 3DARCH-EP-8 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-8 boundary](../3darch-ep-8.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+8
View File
@@ -0,0 +1,8 @@
---
title: "3DARCH-EP-9 Features"
description: "Review Features governed by 3DARCH-EP-9."
---
# Review 3DARCH-EP-9 Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [3DARCH-EP-9 boundary](../3darch-ep-9.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
+11
View File
@@ -66,6 +66,16 @@ The approved catalogue was mined from legacy revision \`${epic.legacy_revision}\
${evidenceList(epic)} ${evidenceList(epic)}
`; `;
const featuresPage = (epic) => `---
title: "${epic.id} Features"
description: "Review Features governed by ${epic.id}."
---
# Review ${epic.id} Features
No child Features have been defined or approved for this Epic. Feature discovery must preserve the [${epic.id} boundary](../${epic.id.toLowerCase()}.md) and requires a separate human **Approved for Solution** decision before Architecture solution work begins.
`;
const epicLinks = records.map((epic) => `- [${epic.id} — ${epic.title}](./${epic.id.toLowerCase()}.md)`).join('\n'); const epicLinks = records.map((epic) => `- [${epic.id} — ${epic.title}](./${epic.id.toLowerCase()}.md)`).join('\n');
const epicIndex = `--- const epicIndex = `---
title: "Epics" title: "Epics"
@@ -110,6 +120,7 @@ const expected = new Map([
[join(root, 'scope/roadmap.md'), roadmap], [join(root, 'scope/roadmap.md'), roadmap],
[join(root, 'src/data/scopeIssues.ts'), ts], [join(root, 'src/data/scopeIssues.ts'), ts],
...records.map((epic) => [join(root, `scope/epics/${epic.id.toLowerCase()}.md`), epicPage(epic)]), ...records.map((epic) => [join(root, `scope/epics/${epic.id.toLowerCase()}.md`), epicPage(epic)]),
...records.map((epic) => [join(root, `scope/epics/${epic.id.toLowerCase()}/features.md`), featuresPage(epic)]),
]); ]);
let stale = false; let stale = false;
+1 -1
View File
@@ -16,7 +16,7 @@ const sidebars: SidebarsConfig = {
type: 'category' as const, type: 'category' as const,
label: id.toUpperCase(), label: id.toUpperCase(),
link: {type: 'doc' as const, id: `epics/${id}`}, link: {type: 'doc' as const, id: `epics/${id}`},
items: [{type: 'category' as const, label: 'Features', items: []}], items: [{type: 'category' as const, label: 'Features', link: {type: 'doc' as const, id: `epics/${id}/features`}, items: []}],
})), })),
}, },
], ],
+1
View File
@@ -41,6 +41,7 @@ test('approved Epic catalogue is complete, governed, and reader-linked', () => {
const slug = id.toLowerCase(); const slug = id.toLowerCase();
assert.ok(existsSync(`data/scope/epics/${slug}.yml`), id); assert.ok(existsSync(`data/scope/epics/${slug}.yml`), id);
assert.ok(existsSync(`scope/epics/${slug}.md`), id); assert.ok(existsSync(`scope/epics/${slug}.md`), id);
assert.ok(existsSync(`scope/epics/${slug}/features.md`), `${id} Features group`);
const record = JSON.parse(read(`data/scope/epics/${slug}.yml`)); const record = JSON.parse(read(`data/scope/epics/${slug}.yml`));
assert.equal(record.id, id); assert.equal(record.id, id);
assert.equal(record.status, 'IN_BACKLOG'); assert.equal(record.status, 'IN_BACKLOG');