feat: implement governed wiki vertical slice
Module Package Release / publish-packages (push) Successful in 12s

This commit is contained in:
2026-08-22 13:08:12 +02:00
parent 572cb91dce
commit 66c91351c9
24 changed files with 4934 additions and 84 deletions
+25
View File
@@ -0,0 +1,25 @@
import assert from "node:assert/strict";
import fs from "node:fs";
const page = fs.readFileSync("src/features/wiki/WikiPage.tsx", "utf8");
const styles = fs.readFileSync("src/styles/wiki.css", "utf8");
assert.ok(page.includes("WorkspaceActionBar"), "Wiki uses the semantic shared action bar");
assert.ok(page.includes("refreshable"), "The refreshable Wiki workspace exposes Reload");
assert.ok(page.includes("DocumentationHelpLink"), "Wiki exposes configured-system help");
assert.ok(page.includes("PageScrollViewport"), "Wiki owns bounded tree and detail scrolling");
assert.ok(page.includes("SelectionList"), "Wiki uses the shared semantic selection list");
assert.ok(page.includes('<Dialog open={open} title={record ? "Edit Wiki page"'), "Wiki editing uses the shared focus-contained dialog");
assert.ok(page.includes('size="large"'), "Complex Wiki forms use the approved large dialog size");
assert.ok(page.includes("FieldLabel"), "Wiki fields use the shared label and help contract");
assert.ok(page.includes("StatusBadge"), "Wiki lifecycle state is not conveyed by color alone");
assert.ok(page.includes("<ConfirmDialog"), "Wiki archive operations are separately confirmed");
assert.ok(page.includes("wiki-destructive-actions"), "Page archival is visually separated from ordinary actions");
assert.ok(page.includes("listWikiRevisions"), "The workspace projects immutable revision history");
assert.ok(page.includes("compareWikiRevisions"), "The workspace offers revision comparison");
assert.ok(!page.includes("window.alert("), "Wiki must not use browser alerts");
assert.ok(!/<(div|span|li|tr)\b[^>]*\bonClick\s*=/.test(page), "Wiki uses semantic interactive elements");
assert.ok(styles.includes("@media (max-width: 760px)"), "Wiki retains a responsive tree-detail layout");
assert.ok(styles.includes(":focus-visible"), "Wiki retains visible keyboard focus");
console.log("Wiki interface pattern contract passed.");