diff --git a/.claude/skills/simic-design/_adherence.oxlintrc.json b/.claude/skills/simic-design/_adherence.oxlintrc.json index 54b4616..a87fb60 100644 --- a/.claude/skills/simic-design/_adherence.oxlintrc.json +++ b/.claude/skills/simic-design/_adherence.oxlintrc.json @@ -121,7 +121,6 @@ "--amber-400", "--amber-700", "--color-accent", - "--color-accent-quiet", "--color-bg", "--color-bg-code", "--color-bg-note", @@ -189,7 +188,6 @@ "--color-border": "color", "--color-border-firm": "color", "--color-accent": "color", - "--color-accent-quiet": "color", "--color-warn": "color", "--color-link": "color", "--color-link-hover": "color", diff --git a/.claude/skills/simic-design/_ds_manifest.json b/.claude/skills/simic-design/_ds_manifest.json index 0cda52e..8bd6840 100644 --- a/.claude/skills/simic-design/_ds_manifest.json +++ b/.claude/skills/simic-design/_ds_manifest.json @@ -1 +1 @@ -{"namespace":"SimicDesignSystem_5a908e","components":[{"name":"CanonQuote","sourcePath":"components/content/CanonQuote.jsx"},{"name":"Note","sourcePath":"components/content/Note.jsx"},{"name":"PageHead","sourcePath":"components/content/PageHead.jsx"},{"name":"Spine","sourcePath":"components/content/Spine.jsx"},{"name":"CardGrid","sourcePath":"components/data/CardGrid.jsx"},{"name":"DataTable","sourcePath":"components/data/DataTable.jsx"},{"name":"Diagram","sourcePath":"components/data/Diagram.jsx"},{"name":"Split","sourcePath":"components/data/Split.jsx"},{"name":"Masthead","sourcePath":"components/navigation/Masthead.jsx"},{"name":"SiteFooter","sourcePath":"components/navigation/SiteFooter.jsx"}],"startingPoints":[{"name":"Masthead","path":"components/navigation/Masthead.jsx","previewPath":"components/navigation/navigation.card.html","kind":"component","section":"Website","subtitle":"Masthead with wordmark and primary nav","viewport":"1100x80"},{"name":"website","path":"ui_kits/website/index.html","previewPath":"ui_kits/website/index.html","kind":"screen","section":"Website","subtitle":"Simic overview page with masthead, status note, spine, diagram","viewport":"1280x900"},{"name":"wiki","path":"ui_kits/wiki/index.html","previewPath":"ui_kits/wiki/index.html","kind":"screen","section":"Wiki","subtitle":"MkDocs Material docs page: teal header, nav sections, TOC","viewport":"1280x860"}],"cards":[{"path":"guidelines/callouts.html","group":"Brand","viewport":"700x240","subtitle":"3px left spine: teal = note, amber = status; mono uppercase label","name":"Callouts"},{"path":"guidelines/diagrams.html","group":"Brand","viewport":"700x300","subtitle":"Pre-rendered Mermaid SVGs, shipped in light/dark pairs — the brand's only imagery","name":"Diagrams"},{"path":"guidelines/mark.html","group":"Brand","viewport":"700x150","subtitle":"A teal diamond — favicon, and ◈ before the live-text wordmark. No logo image exists.","name":"The mark"},{"path":"guidelines/quotes.html","group":"Brand","viewport":"700x170","subtitle":"Canon quotes get the accent spine and a mono-path cite","name":"Quotes"},{"path":"guidelines/accents.html","group":"Colors","viewport":"700x110","subtitle":"Hue 175 (teal) carries emphasis; hue 85 (amber) is the only warning","name":"Accents"},{"path":"guidelines/ink-ramp.html","group":"Colors","viewport":"700x110","subtitle":"Hue 225 carries structure — backgrounds, text, borders","name":"Ink ramp"},{"path":"guidelines/links.html","group":"Colors","viewport":"700x120","subtitle":"Hover shifts color only — no underline games, no motion","name":"Links & states"},{"path":"guidelines/semantic-dark.html","group":"Colors","viewport":"700x230","subtitle":"Same tokens, dark side of every light-dark() pair","name":"Semantic tokens — dark"},{"path":"guidelines/semantic-light.html","group":"Colors","viewport":"700x230","subtitle":"One declaration each, via light-dark()","name":"Semantic tokens — light"},{"path":"components/content/content.card.html","group":"Components","viewport":"700x760","subtitle":"PageHead, Note (+status), CanonQuote, Spine","name":"Content"},{"path":"components/data/data.card.html","group":"Components","viewport":"700x720","subtitle":"CardGrid, DataTable, Split, Diagram","name":"Data & layout"},{"path":"components/navigation/navigation.card.html","group":"Components","viewport":"700x320","subtitle":"Masthead + SiteFooter — page frame chrome","name":"Navigation"},{"path":"guidelines/layout.html","group":"Spacing","viewport":"700x160","subtitle":"Prose 46rem; tables, diagrams and grids opt out to 62rem","name":"Measure & page"},{"path":"guidelines/spacing.html","group":"Spacing","viewport":"700x180","subtitle":"8px base: 4 / 8 / 16 / 24 / 32 / 48 / 72","name":"Spacing scale"},{"path":"guidelines/type-body.html","group":"Type","viewport":"700x190","subtitle":"1rem / 1.65, strong at 650 in heading color, em for contrastive stress","name":"Body & inline"},{"path":"guidelines/type-headings.html","group":"Type","viewport":"700x260","subtitle":"System stack, fluid clamp() sizes, sentence case","name":"Headings"},{"path":"guidelines/type-mono.html","group":"Type","viewport":"700x200","subtitle":"ui-monospace is the display voice: wordmark, taglines, labels, invariant chips","name":"Mono voice"},{"path":"ui_kits/website/index.html","group":"Website","viewport":"1280x900","subtitle":"simic.foundryside.dev — zero-JS static site, recreated click-through","name":"Overview page"},{"path":"ui_kits/wiki/index.html","group":"Wiki","viewport":"1280x860","subtitle":"simic.foundryside.dev/design/ — MkDocs Material (teal, system fonts), recreated","name":"Design docs — HLD index"}],"templates":[],"hasThumbnailHtml":true,"globalCssPaths":["tokens/colors.css","tokens/typography.css","tokens/spacing.css","tokens/base.css","styles.css"],"tokens":[{"name":"--ink-050","value":"oklch(0.985 0.004 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-100","value":"oklch(0.955 0.008 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-200","value":"oklch(0.905 0.012 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-300","value":"oklch(0.825 0.016 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-500","value":"oklch(0.495 0.024 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-700","value":"oklch(0.375 0.030 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-850","value":"oklch(0.235 0.026 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-900","value":"oklch(0.185 0.024 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-950","value":"oklch(0.145 0.020 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--teal-400","value":"oklch(0.780 0.110 175)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--teal-600","value":"oklch(0.560 0.105 175)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--teal-700","value":"oklch(0.470 0.098 175)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--amber-400","value":"oklch(0.800 0.105 85)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--amber-700","value":"oklch(0.520 0.105 85)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg","value":"light-dark(var(--ink-050), var(--ink-950))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg-subtle","value":"light-dark(var(--ink-100), var(--ink-900))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg-code","value":"light-dark(var(--ink-100), var(--ink-850))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg-note","value":"light-dark(oklch(0.965 0.020 175), oklch(0.235 0.030 195))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg-note-status","value":"light-dark(oklch(0.975 0.022 85), oklch(0.235 0.028 75))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-text","value":"light-dark(var(--ink-900), var(--ink-100))","kind":"font","definedIn":"tokens/colors.css"},{"name":"--color-text-muted","value":"light-dark(var(--ink-500), var(--ink-300))","kind":"font","definedIn":"tokens/colors.css"},{"name":"--color-heading","value":"light-dark(var(--ink-950), var(--ink-050))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-border","value":"light-dark(var(--ink-200), oklch(0.300 0.020 225))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-border-firm","value":"light-dark(var(--ink-300), oklch(0.380 0.024 225))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-accent","value":"light-dark(var(--teal-700), var(--teal-400))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-accent-quiet","value":"light-dark(var(--teal-600), oklch(0.660 0.080 175))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-warn","value":"light-dark(var(--amber-700), var(--amber-400))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-link","value":"var(--color-accent)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-link-hover","value":"color-mix(in oklch, var(--color-link) 72%, var(--color-text) 28%)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--font-body","value":"system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif","kind":"font","definedIn":"tokens/typography.css"},{"name":"--font-code","value":"ui-monospace, \"SFMono-Regular\", Menlo, Consolas, \"Liberation Mono\", monospace","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-h1","value":"clamp(2rem, calc(1.45rem + 2.6vw), 3.1rem)","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-h2","value":"clamp(1.35rem, calc(1.18rem + 0.8vw), 1.75rem)","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-h3","value":"clamp(1.08rem, calc(1.02rem + 0.3vw), 1.22rem)","kind":"font","definedIn":"tokens/typography.css"},{"name":"--space-1","value":"0.25rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-2","value":"0.5rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-3","value":"1rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-4","value":"1.5rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-5","value":"2rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-6","value":"3rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-7","value":"4.5rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--measure","value":"46rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--page","value":"62rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--radius","value":"4px","kind":"radius","definedIn":"tokens/spacing.css"}],"themes":[],"fonts":[],"brandFonts":[],"source":"spa"} +{"namespace":"SimicDesignSystem_5a908e","components":[{"name":"CanonQuote","sourcePath":"components/content/CanonQuote.jsx"},{"name":"Note","sourcePath":"components/content/Note.jsx"},{"name":"PageHead","sourcePath":"components/content/PageHead.jsx"},{"name":"Spine","sourcePath":"components/content/Spine.jsx"},{"name":"CardGrid","sourcePath":"components/data/CardGrid.jsx"},{"name":"DataTable","sourcePath":"components/data/DataTable.jsx"},{"name":"Diagram","sourcePath":"components/data/Diagram.jsx"},{"name":"Split","sourcePath":"components/data/Split.jsx"},{"name":"Masthead","sourcePath":"components/navigation/Masthead.jsx"},{"name":"SiteFooter","sourcePath":"components/navigation/SiteFooter.jsx"}],"startingPoints":[{"name":"Masthead","path":"components/navigation/Masthead.jsx","previewPath":"components/navigation/navigation.card.html","kind":"component","section":"Website","subtitle":"Masthead with wordmark and primary nav","viewport":"1100x80"},{"name":"website","path":"ui_kits/website/index.html","previewPath":"ui_kits/website/index.html","kind":"screen","section":"Website","subtitle":"Simic overview page with masthead, status note, spine, diagram","viewport":"1280x900"},{"name":"wiki","path":"ui_kits/wiki/index.html","previewPath":"ui_kits/wiki/index.html","kind":"screen","section":"Wiki","subtitle":"MkDocs Material docs page: teal header, nav sections, TOC","viewport":"1280x860"}],"cards":[{"path":"guidelines/callouts.html","group":"Brand","viewport":"700x240","subtitle":"3px left spine: teal = note, amber = status; mono uppercase label","name":"Callouts"},{"path":"guidelines/diagrams.html","group":"Brand","viewport":"700x300","subtitle":"Pre-rendered Mermaid SVGs, shipped in light/dark pairs \u2014 the brand's only imagery","name":"Diagrams"},{"path":"guidelines/mark.html","group":"Brand","viewport":"700x150","subtitle":"A teal diamond \u2014 favicon, and \u25c8 before the live-text wordmark. No logo image exists.","name":"The mark"},{"path":"guidelines/quotes.html","group":"Brand","viewport":"700x170","subtitle":"Canon quotes get the accent spine and a mono-path cite","name":"Quotes"},{"path":"guidelines/accents.html","group":"Colors","viewport":"700x110","subtitle":"Hue 175 (teal) carries emphasis; hue 85 (amber) is the only warning","name":"Accents"},{"path":"guidelines/ink-ramp.html","group":"Colors","viewport":"700x110","subtitle":"Hue 225 carries structure \u2014 backgrounds, text, borders","name":"Ink ramp"},{"path":"guidelines/links.html","group":"Colors","viewport":"700x120","subtitle":"Hover shifts color only \u2014 no underline games, no motion","name":"Links & states"},{"path":"guidelines/semantic-dark.html","group":"Colors","viewport":"700x230","subtitle":"Same tokens, dark side of every light-dark() pair","name":"Semantic tokens \u2014 dark"},{"path":"guidelines/semantic-light.html","group":"Colors","viewport":"700x230","subtitle":"One declaration each, via light-dark()","name":"Semantic tokens \u2014 light"},{"path":"components/content/content.card.html","group":"Components","viewport":"700x760","subtitle":"PageHead, Note (+status), CanonQuote, Spine","name":"Content"},{"path":"components/data/data.card.html","group":"Components","viewport":"700x720","subtitle":"CardGrid, DataTable, Split, Diagram","name":"Data & layout"},{"path":"components/navigation/navigation.card.html","group":"Components","viewport":"700x320","subtitle":"Masthead + SiteFooter \u2014 page frame chrome","name":"Navigation"},{"path":"guidelines/layout.html","group":"Spacing","viewport":"700x160","subtitle":"Prose 46rem; tables, diagrams and grids opt out to 62rem","name":"Measure & page"},{"path":"guidelines/spacing.html","group":"Spacing","viewport":"700x180","subtitle":"8px base: 4 / 8 / 16 / 24 / 32 / 48 / 72","name":"Spacing scale"},{"path":"guidelines/type-body.html","group":"Type","viewport":"700x190","subtitle":"1rem / 1.65, strong at 650 in heading color, em for contrastive stress","name":"Body & inline"},{"path":"guidelines/type-headings.html","group":"Type","viewport":"700x260","subtitle":"System stack, fluid clamp() sizes, sentence case","name":"Headings"},{"path":"guidelines/type-mono.html","group":"Type","viewport":"700x200","subtitle":"ui-monospace is the display voice: wordmark, taglines, labels, invariant chips","name":"Mono voice"},{"path":"ui_kits/website/index.html","group":"Website","viewport":"1280x900","subtitle":"simic.foundryside.dev \u2014 zero-JS static site, recreated click-through","name":"Overview page"},{"path":"ui_kits/wiki/index.html","group":"Wiki","viewport":"1280x860","subtitle":"simic.foundryside.dev/design/ \u2014 MkDocs Material (teal, system fonts), recreated","name":"Design docs \u2014 HLD index"}],"templates":[],"hasThumbnailHtml":true,"globalCssPaths":["tokens/colors.css","tokens/typography.css","tokens/spacing.css","tokens/base.css","styles.css"],"tokens":[{"name":"--ink-050","value":"oklch(0.985 0.004 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-100","value":"oklch(0.955 0.008 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-200","value":"oklch(0.905 0.012 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-300","value":"oklch(0.825 0.016 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-500","value":"oklch(0.495 0.024 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-700","value":"oklch(0.375 0.030 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-850","value":"oklch(0.235 0.026 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-900","value":"oklch(0.185 0.024 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ink-950","value":"oklch(0.145 0.020 225)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--teal-400","value":"oklch(0.780 0.110 175)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--teal-600","value":"oklch(0.560 0.105 175)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--teal-700","value":"oklch(0.470 0.098 175)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--amber-400","value":"oklch(0.800 0.105 85)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--amber-700","value":"oklch(0.520 0.105 85)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg","value":"light-dark(var(--ink-050), var(--ink-950))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg-subtle","value":"light-dark(var(--ink-100), var(--ink-900))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg-code","value":"light-dark(var(--ink-100), var(--ink-850))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg-note","value":"light-dark(oklch(0.965 0.020 175), oklch(0.235 0.030 175))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-bg-note-status","value":"light-dark(oklch(0.975 0.022 85), oklch(0.235 0.028 85))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-text","value":"light-dark(var(--ink-900), var(--ink-100))","kind":"font","definedIn":"tokens/colors.css"},{"name":"--color-text-muted","value":"light-dark(var(--ink-500), var(--ink-300))","kind":"font","definedIn":"tokens/colors.css"},{"name":"--color-heading","value":"light-dark(var(--ink-950), var(--ink-050))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-border","value":"light-dark(var(--ink-200), oklch(0.300 0.020 225))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-border-firm","value":"light-dark(var(--ink-300), oklch(0.380 0.024 225))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-accent","value":"light-dark(var(--teal-700), var(--teal-400))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-warn","value":"light-dark(var(--amber-700), var(--amber-400))","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-link","value":"var(--color-accent)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--color-link-hover","value":"color-mix(in oklch, var(--color-link) 72%, var(--color-text) 28%)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--font-body","value":"system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif","kind":"font","definedIn":"tokens/typography.css"},{"name":"--font-code","value":"ui-monospace, \"SFMono-Regular\", Menlo, Consolas, \"Liberation Mono\", monospace","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-h1","value":"clamp(2rem, calc(1.45rem + 2.6vw), 3.1rem)","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-h2","value":"clamp(1.35rem, calc(1.18rem + 0.8vw), 1.75rem)","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-h3","value":"clamp(1.08rem, calc(1.02rem + 0.3vw), 1.22rem)","kind":"font","definedIn":"tokens/typography.css"},{"name":"--space-1","value":"0.25rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-2","value":"0.5rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-3","value":"1rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-4","value":"1.5rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-5","value":"2rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-6","value":"3rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-7","value":"4.5rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--measure","value":"46rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--page","value":"62rem","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--radius","value":"4px","kind":"radius","definedIn":"tokens/spacing.css"}],"themes":[],"fonts":[],"brandFonts":[],"source":"spa"} diff --git a/.claude/skills/simic-design/assets/diagrams/assurance-loop-dark.svg b/.claude/skills/simic-design/assets/diagrams/assurance-loop-dark.svg new file mode 100644 index 0000000..b8d8463 --- /dev/null +++ b/.claude/skills/simic-design/assets/diagrams/assurance-loop-dark.svg @@ -0,0 +1 @@ +Urabrask artefactJin-Gitaxias buildsa blinded TestPlanTolaria restoresone common SnapshotCandidate branchesControlsMandatory no-opJin-Gitaxias verifies conformanceand certifies the measurementsQualityReportIsperia applies eligibility,then the tail-risk veto,then utility policyADMIT one · REJECTDEFER · REQUIRE_RETEST · NO_OP diff --git a/.claude/skills/simic-design/assets/diagrams/assurance-loop-light.svg b/.claude/skills/simic-design/assets/diagrams/assurance-loop-light.svg new file mode 100644 index 0000000..8ee188c --- /dev/null +++ b/.claude/skills/simic-design/assets/diagrams/assurance-loop-light.svg @@ -0,0 +1 @@ +Urabrask artefactJin-Gitaxias buildsa blinded TestPlanTolaria restoresone common SnapshotCandidate branchesControlsMandatory no-opJin-Gitaxias verifies conformanceand certifies the measurementsQualityReportIsperia applies eligibility,then the tail-risk veto,then utility policyADMIT one · REJECTDEFER · REQUIRE_RETEST · NO_OP diff --git a/.claude/skills/simic-design/assets/diagrams/core-loop-dark.svg b/.claude/skills/simic-design/assets/diagrams/core-loop-dark.svg new file mode 100644 index 0000000..4c2cc8d --- /dev/null +++ b/.claude/skills/simic-design/assets/diagrams/core-loop-dark.svg @@ -0,0 +1 @@ +same envelope, publisheddirectlysame envelope, publisheddirectlyGrowthIntentthe assignment briefadmitno-op winsmaintenance warrantTask and data streamTolariatrains the Wrenn hostNissa publishes thecanonical TelemetryEnvelopeAureliawhether and whereto commission growthMomirdesigns candidate growthUginauthorises strategic resourcesLeyline and Wrenn resolvethe legal GrowthRequestUrborgoptional bootstrap ancestryElesh conformsUrabrask compilesJin-Gitaxias specifies QATolaria executes the testsJin-Gitaxias certifiesthe evidenceIsperia judgescandidate versus no-opWrenn embodiesthe admitted growthNo interventionpolicy utility exactly zeroEmrakul removes what Isperiajudges no longer earns its placeUrborg retains everysuccess, failure, abstentionTamiyo revealsthe complete account diff --git a/.claude/skills/simic-design/assets/diagrams/core-loop-light.svg b/.claude/skills/simic-design/assets/diagrams/core-loop-light.svg new file mode 100644 index 0000000..6e3f062 --- /dev/null +++ b/.claude/skills/simic-design/assets/diagrams/core-loop-light.svg @@ -0,0 +1 @@ +same envelope, publisheddirectlysame envelope, publisheddirectlyGrowthIntentthe assignment briefadmitno-op winsmaintenance warrantTask and data streamTolariatrains the Wrenn hostNissa publishes thecanonical TelemetryEnvelopeAureliawhether and whereto commission growthMomirdesigns candidate growthUginauthorises strategic resourcesLeyline and Wrenn resolvethe legal GrowthRequestUrborgoptional bootstrap ancestryElesh conformsUrabrask compilesJin-Gitaxias specifies QATolaria executes the testsJin-Gitaxias certifiesthe evidenceIsperia judgescandidate versus no-opWrenn embodiesthe admitted growthNo interventionpolicy utility exactly zeroEmrakul removes what Isperiajudges no longer earns its placeUrborg retains everysuccess, failure, abstentionTamiyo revealsthe complete account diff --git a/.claude/skills/simic-design/assets/diagrams/observation-loop-dark.svg b/.claude/skills/simic-design/assets/diagrams/observation-loop-dark.svg new file mode 100644 index 0000000..ff0b6f8 --- /dev/null +++ b/.claude/skills/simic-design/assets/diagrams/observation-loop-dark.svg @@ -0,0 +1 @@ +published directlypublished directlyStrategicEnvelope EGrowthIntent IRegionContract RGrammarProfile Gobservation identityGrowthRequest QNissa observes Snapshot Sat decision point TTelemetryEnvelope OAureliacommission work? where?under what class?Momirwhat structure would addressthis observed state?UginPure request resolutionO, E, I, R, G QWrennLeyline diff --git a/.claude/skills/simic-design/assets/diagrams/observation-loop-light.svg b/.claude/skills/simic-design/assets/diagrams/observation-loop-light.svg new file mode 100644 index 0000000..7c84eff --- /dev/null +++ b/.claude/skills/simic-design/assets/diagrams/observation-loop-light.svg @@ -0,0 +1 @@ +published directlypublished directlyStrategicEnvelope EGrowthIntent IRegionContract RGrammarProfile Gobservation identityGrowthRequest QNissa observes Snapshot Sat decision point TTelemetryEnvelope OAureliacommission work? where?under what class?Momirwhat structure would addressthis observed state?UginPure request resolutionO, E, I, R, G QWrennLeyline diff --git a/.claude/skills/simic-design/assets/mark.svg b/.claude/skills/simic-design/assets/mark.svg new file mode 100644 index 0000000..178a175 --- /dev/null +++ b/.claude/skills/simic-design/assets/mark.svg @@ -0,0 +1 @@ + diff --git a/.claude/skills/simic-design/components/content/CanonQuote.d.ts b/.claude/skills/simic-design/components/content/CanonQuote.d.ts new file mode 100644 index 0000000..2ba79b8 --- /dev/null +++ b/.claude/skills/simic-design/components/content/CanonQuote.d.ts @@ -0,0 +1,10 @@ +/** + * Blockquote. canon=true (default) gives the accent spine used for canonical design-doc quotes; false is the neutral quote. + */ +export interface CanonQuoteProps { + canon?: boolean; + /** Attribution line, usually a mono file path + section */ + cite?: React.ReactNode; + children: React.ReactNode; +} +export declare function CanonQuote(props: CanonQuoteProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/content/CanonQuote.jsx b/.claude/skills/simic-design/components/content/CanonQuote.jsx new file mode 100644 index 0000000..636da79 --- /dev/null +++ b/.claude/skills/simic-design/components/content/CanonQuote.jsx @@ -0,0 +1,8 @@ +export function CanonQuote({ canon = true, cite, children }) { + return ( +
+ {children} + {cite && {cite}} +
+ ); +} diff --git a/.claude/skills/simic-design/components/content/CanonQuote.prompt.md b/.claude/skills/simic-design/components/content/CanonQuote.prompt.md new file mode 100644 index 0000000..3528414 --- /dev/null +++ b/.claude/skills/simic-design/components/content/CanonQuote.prompt.md @@ -0,0 +1,5 @@ +Quote block — canon (accent spine) or neutral. Cite is usually a repo path. + +```jsx +The canonical sentence — docs/design/02-constitution.md §5.3}>

Under Leyline, Ugin plans…

+``` diff --git a/.claude/skills/simic-design/components/content/Note.d.ts b/.claude/skills/simic-design/components/content/Note.d.ts new file mode 100644 index 0000000..d57f03a --- /dev/null +++ b/.claude/skills/simic-design/components/content/Note.d.ts @@ -0,0 +1,11 @@ +/** + * Callout with a 3px left spine and mono uppercase label. Teal note by default; status=true switches to the amber warning treatment. + */ +export interface NoteProps { + /** Mono uppercase label, e.g. "Project status" */ + label?: string; + /** Amber status variant */ + status?: boolean; + children: React.ReactNode; +} +export declare function Note(props: NoteProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/content/Note.jsx b/.claude/skills/simic-design/components/content/Note.jsx new file mode 100644 index 0000000..d1d4a36 --- /dev/null +++ b/.claude/skills/simic-design/components/content/Note.jsx @@ -0,0 +1,9 @@ +export function Note({ label, status = false, children }) { + const spine = status ? "var(--color-warn)" : "var(--color-accent)"; + return ( +
+ {label && {label}} +
{children}
+
+ ); +} diff --git a/.claude/skills/simic-design/components/content/Note.prompt.md b/.claude/skills/simic-design/components/content/Note.prompt.md new file mode 100644 index 0000000..39dcf37 --- /dev/null +++ b/.claude/skills/simic-design/components/content/Note.prompt.md @@ -0,0 +1,5 @@ +Callout note — teal spine for notes, amber `status` variant for project-status warnings. + +```jsx +

Pre-implementation bootstrap.

+``` diff --git a/.claude/skills/simic-design/components/content/PageHead.d.ts b/.claude/skills/simic-design/components/content/PageHead.d.ts new file mode 100644 index 0000000..37929fd --- /dev/null +++ b/.claude/skills/simic-design/components/content/PageHead.d.ts @@ -0,0 +1,13 @@ +/** + * Page header block: optional breadcrumb, h1, mono accent tagline, larger lede paragraph. + */ +export interface PageHeadProps { + title: string; + /** Mono accent line under the h1 (e.g. "Counterfactual Generative Morphogenesis") */ + tagline?: string; + /** 1.12rem intro paragraph; accepts rich children */ + lede?: React.ReactNode; + /** Breadcrumb line, e.g. "Overview \u203A Why this design" */ + crumb?: React.ReactNode; +} +export declare function PageHead(props: PageHeadProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/content/PageHead.jsx b/.claude/skills/simic-design/components/content/PageHead.jsx new file mode 100644 index 0000000..e6602bd --- /dev/null +++ b/.claude/skills/simic-design/components/content/PageHead.jsx @@ -0,0 +1,10 @@ +export function PageHead({ title, tagline, lede, crumb }) { + return ( +
+ {crumb &&

{crumb}

} +

{title}

+ {tagline &&

{tagline}

} + {lede &&

{lede}

} +
+ ); +} diff --git a/.claude/skills/simic-design/components/content/PageHead.prompt.md b/.claude/skills/simic-design/components/content/PageHead.prompt.md new file mode 100644 index 0000000..76aaf5d --- /dev/null +++ b/.claude/skills/simic-design/components/content/PageHead.prompt.md @@ -0,0 +1,5 @@ +Page head — h1 + mono tagline + lede, used once at the top of a page's content column. + +```jsx +New neural structure is generated from the live state of a host network…} /> +``` diff --git a/.claude/skills/simic-design/components/content/Spine.d.ts b/.claude/skills/simic-design/components/content/Spine.d.ts new file mode 100644 index 0000000..472724e --- /dev/null +++ b/.claude/skills/simic-design/components/content/Spine.d.ts @@ -0,0 +1,11 @@ +/** + * The invariant "spine" list: hairline-ruled items with a bold title and a mono accent INV-nn chip. + */ +export interface SpineItem { + title: React.ReactNode; + /** e.g. "INV-15, INV-16" */ + inv?: string; + body: React.ReactNode; +} +export interface SpineProps { items: SpineItem[]; } +export declare function Spine(props: SpineProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/content/Spine.jsx b/.claude/skills/simic-design/components/content/Spine.jsx new file mode 100644 index 0000000..6d13437 --- /dev/null +++ b/.claude/skills/simic-design/components/content/Spine.jsx @@ -0,0 +1,14 @@ +export function Spine({ items }) { + return ( + + ); +} diff --git a/.claude/skills/simic-design/components/content/Spine.prompt.md b/.claude/skills/simic-design/components/content/Spine.prompt.md new file mode 100644 index 0000000..ef4a212 --- /dev/null +++ b/.claude/skills/simic-design/components/content/Spine.prompt.md @@ -0,0 +1,5 @@ +Invariant spine list — used for guarantee/obligation lists. + +```jsx + +``` diff --git a/.claude/skills/simic-design/components/content/content.card.html b/.claude/skills/simic-design/components/content/content.card.html new file mode 100644 index 0000000..1b2a546 --- /dev/null +++ b/.claude/skills/simic-design/components/content/content.card.html @@ -0,0 +1,24 @@ + + + + + + + +
+ + diff --git a/.claude/skills/simic-design/components/data/CardGrid.d.ts b/.claude/skills/simic-design/components/data/CardGrid.d.ts new file mode 100644 index 0000000..5665404 --- /dev/null +++ b/.claude/skills/simic-design/components/data/CardGrid.d.ts @@ -0,0 +1,6 @@ +/** + * Link-card grid: subtle fill, hairline border, accent title, border turns accent on hover. No shadows. + */ +export interface CardItem { title: React.ReactNode; body: React.ReactNode; href?: string; } +export interface CardGridProps { cards: CardItem[]; } +export declare function CardGrid(props: CardGridProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/data/CardGrid.jsx b/.claude/skills/simic-design/components/data/CardGrid.jsx new file mode 100644 index 0000000..dfa01e8 --- /dev/null +++ b/.claude/skills/simic-design/components/data/CardGrid.jsx @@ -0,0 +1,17 @@ +export function CardGrid({ cards }) { + return ( + + ); +} diff --git a/.claude/skills/simic-design/components/data/CardGrid.prompt.md b/.claude/skills/simic-design/components/data/CardGrid.prompt.md new file mode 100644 index 0000000..d0ea53c --- /dev/null +++ b/.claude/skills/simic-design/components/data/CardGrid.prompt.md @@ -0,0 +1,5 @@ +Card grid of navigation cards. Titles conventionally end with " \u2192". + +```jsx + +``` diff --git a/.claude/skills/simic-design/components/data/DataTable.d.ts b/.claude/skills/simic-design/components/data/DataTable.d.ts new file mode 100644 index 0000000..d547d8d --- /dev/null +++ b/.claude/skills/simic-design/components/data/DataTable.d.ts @@ -0,0 +1,10 @@ +/** + * Wrapped table: hairline frame, uppercase mono-ish header row on subtle fill, first column in mono (the "name" column). + */ +export interface DataTableProps { + caption?: React.ReactNode; + columns: React.ReactNode[]; + /** Row cells; first cell renders in mono heading style */ + rows: React.ReactNode[][]; +} +export declare function DataTable(props: DataTableProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/data/DataTable.jsx b/.claude/skills/simic-design/components/data/DataTable.jsx new file mode 100644 index 0000000..03235d3 --- /dev/null +++ b/.claude/skills/simic-design/components/data/DataTable.jsx @@ -0,0 +1,17 @@ +export function DataTable({ caption, columns, rows }) { + return ( +
+ + {caption && } + + {columns.map((c,i)=>)} + + + {rows.map((r,ri)=> + {r.map((cell,ci)=>)} + )} + +
{caption}
{c}
{cell}
+
+ ); +} diff --git a/.claude/skills/simic-design/components/data/DataTable.prompt.md b/.claude/skills/simic-design/components/data/DataTable.prompt.md new file mode 100644 index 0000000..4cf1739 --- /dev/null +++ b/.claude/skills/simic-design/components/data/DataTable.prompt.md @@ -0,0 +1,5 @@ +Reference table (e.g. repository map). First column is the mono name column. + +```jsx + +``` diff --git a/.claude/skills/simic-design/components/data/Diagram.d.ts b/.claude/skills/simic-design/components/data/Diagram.d.ts new file mode 100644 index 0000000..67289ec --- /dev/null +++ b/.claude/skills/simic-design/components/data/Diagram.d.ts @@ -0,0 +1,13 @@ +/** + * Pre-rendered Mermaid diagram frame: light/dark SVG pair swapped with the theme, horizontal scroll below minWidth, muted figcaption. + */ +export interface DiagramProps { + lightSrc: string; + darkSrc?: string; + /** Accessible description of the diagram */ + label: string; + caption?: React.ReactNode; + /** px below which the frame scrolls instead of shrinking (legibility beats fitting) */ + minWidth?: number | string; +} +export declare function Diagram(props: DiagramProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/data/Diagram.jsx b/.claude/skills/simic-design/components/data/Diagram.jsx new file mode 100644 index 0000000..61c08f1 --- /dev/null +++ b/.claude/skills/simic-design/components/data/Diagram.jsx @@ -0,0 +1,13 @@ +export function Diagram({ lightSrc, darkSrc, label, caption, minWidth = 0 }) { + return ( +
+
+ + {darkSrc && } + + +
+ {caption &&
{caption}
} +
+ ); +} diff --git a/.claude/skills/simic-design/components/data/Diagram.prompt.md b/.claude/skills/simic-design/components/data/Diagram.prompt.md new file mode 100644 index 0000000..43aa591 --- /dev/null +++ b/.claude/skills/simic-design/components/data/Diagram.prompt.md @@ -0,0 +1,5 @@ +Diagram frame for the pre-rendered SVG pairs in assets/diagrams/. + +```jsx +Source: docs/design/01-claim.md §1} /> +``` diff --git a/.claude/skills/simic-design/components/data/Split.d.ts b/.claude/skills/simic-design/components/data/Split.d.ts new file mode 100644 index 0000000..6f254d1 --- /dev/null +++ b/.claude/skills/simic-design/components/data/Split.d.ts @@ -0,0 +1,3 @@ +/** Two-column comparison split (armour / forward motion). Stacks under 18rem columns. */ +export interface SplitProps { left: React.ReactNode; right: React.ReactNode; } +export declare function Split(props: SplitProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/data/Split.jsx b/.claude/skills/simic-design/components/data/Split.jsx new file mode 100644 index 0000000..445f89a --- /dev/null +++ b/.claude/skills/simic-design/components/data/Split.jsx @@ -0,0 +1,8 @@ +export function Split({ left, right }) { + return ( +
+
{left}
+
{right}
+
+ ); +} diff --git a/.claude/skills/simic-design/components/data/Split.prompt.md b/.claude/skills/simic-design/components/data/Split.prompt.md new file mode 100644 index 0000000..4dd3725 --- /dev/null +++ b/.claude/skills/simic-design/components/data/Split.prompt.md @@ -0,0 +1,5 @@ +Two-column contrast layout. + +```jsx +

The armour

} right={<>

The forward motion

} /> +``` diff --git a/.claude/skills/simic-design/components/data/data.card.html b/.claude/skills/simic-design/components/data/data.card.html new file mode 100644 index 0000000..0143058 --- /dev/null +++ b/.claude/skills/simic-design/components/data/data.card.html @@ -0,0 +1,28 @@ + + + + + + + +
+ + diff --git a/.claude/skills/simic-design/components/navigation/Masthead.d.ts b/.claude/skills/simic-design/components/navigation/Masthead.d.ts new file mode 100644 index 0000000..83c723e --- /dev/null +++ b/.claude/skills/simic-design/components/navigation/Masthead.d.ts @@ -0,0 +1,11 @@ +/** + * Site header: mono \u25C8 simic wordmark + primary nav. Active item gets heading color and a 2px accent underline. + * @startingPoint section="Website" subtitle="Masthead with wordmark and primary nav" viewport="1100x80" + */ +export interface MastheadProps { + /** Label of the current page */ + current?: string; + /** [label, href] pairs; defaults to the live site's nav */ + items?: [string, string][]; +} +export declare function Masthead(props: MastheadProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/navigation/Masthead.jsx b/.claude/skills/simic-design/components/navigation/Masthead.jsx new file mode 100644 index 0000000..79901d6 --- /dev/null +++ b/.claude/skills/simic-design/components/navigation/Masthead.jsx @@ -0,0 +1,24 @@ +export function Masthead({ current = "Overview", items }) { + const nav = items ?? [["Overview","index.html"],["Architecture","architecture.html"],["Why this design","lineage.html"],["Design docs","/design/"],["Source","https://github.com/foundryside-dev/simic"]]; + return ( +
+ +
+ ); +} diff --git a/.claude/skills/simic-design/components/navigation/Masthead.prompt.md b/.claude/skills/simic-design/components/navigation/Masthead.prompt.md new file mode 100644 index 0000000..fcfbbc6 --- /dev/null +++ b/.claude/skills/simic-design/components/navigation/Masthead.prompt.md @@ -0,0 +1,7 @@ +Site masthead — use at the top of every simic website page. + +```jsx + +``` + +Pass `items` as [label, href] pairs to change nav. Wordmark is live text, never an image. diff --git a/.claude/skills/simic-design/components/navigation/SiteFooter.d.ts b/.claude/skills/simic-design/components/navigation/SiteFooter.d.ts new file mode 100644 index 0000000..93214cd --- /dev/null +++ b/.claude/skills/simic-design/components/navigation/SiteFooter.d.ts @@ -0,0 +1,3 @@ +/** Site footer: attribution line left, repo link and version stamp right. */ +export interface SiteFooterProps {} +export declare function SiteFooter(props: SiteFooterProps): JSX.Element; diff --git a/.claude/skills/simic-design/components/navigation/SiteFooter.jsx b/.claude/skills/simic-design/components/navigation/SiteFooter.jsx new file mode 100644 index 0000000..aa1cb9f --- /dev/null +++ b/.claude/skills/simic-design/components/navigation/SiteFooter.jsx @@ -0,0 +1,13 @@ +export function SiteFooter() { + return ( +
+
+

Simic — a research project by tachyon-beep. Licensed Apache-2.0.

+ +
+
+ ); +} diff --git a/.claude/skills/simic-design/components/navigation/SiteFooter.prompt.md b/.claude/skills/simic-design/components/navigation/SiteFooter.prompt.md new file mode 100644 index 0000000..a20f435 --- /dev/null +++ b/.claude/skills/simic-design/components/navigation/SiteFooter.prompt.md @@ -0,0 +1,5 @@ +Site footer — bottom of every simic website page. No props. + +```jsx + +``` diff --git a/.claude/skills/simic-design/components/navigation/navigation.card.html b/.claude/skills/simic-design/components/navigation/navigation.card.html new file mode 100644 index 0000000..bad9cd5 --- /dev/null +++ b/.claude/skills/simic-design/components/navigation/navigation.card.html @@ -0,0 +1,19 @@ + + + + + + + +
+ + diff --git a/.claude/skills/simic-design/guidelines/accents.html b/.claude/skills/simic-design/guidelines/accents.html new file mode 100644 index 0000000..8dc7795 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/accents.html @@ -0,0 +1,3 @@ + + +
teal-400
teal-600
teal-700
amber-400
amber-700
diff --git a/.claude/skills/simic-design/guidelines/callouts.html b/.claude/skills/simic-design/guidelines/callouts.html new file mode 100644 index 0000000..f02902d --- /dev/null +++ b/.claude/skills/simic-design/guidelines/callouts.html @@ -0,0 +1,4 @@ + + +
Read the claims against this

The architecture's irreducible contributions are the ones that could not be retrofitted.

+
Project status

Pre-implementation bootstrap. Nothing on this site describes a running system.

diff --git a/.claude/skills/simic-design/guidelines/diagrams.html b/.claude/skills/simic-design/guidelines/diagrams.html new file mode 100644 index 0000000..721dca1 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/diagrams.html @@ -0,0 +1,6 @@ + + +
+
Observation loop, light
+
Observation loop, dark
+
diff --git a/.claude/skills/simic-design/guidelines/ink-ramp.html b/.claude/skills/simic-design/guidelines/ink-ramp.html new file mode 100644 index 0000000..2bf421b --- /dev/null +++ b/.claude/skills/simic-design/guidelines/ink-ramp.html @@ -0,0 +1,3 @@ + + +
ink-050
ink-100
ink-200
ink-300
ink-500
ink-700
ink-850
ink-900
ink-950
diff --git a/.claude/skills/simic-design/guidelines/layout.html b/.claude/skills/simic-design/guidelines/layout.html new file mode 100644 index 0000000..4e67288 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/layout.html @@ -0,0 +1,8 @@ + + +
+
+
--measure 46rem · prose
+--page 62rem · wide +
+
--radius: 4px everywhere · no shadows anywhere in the system
diff --git a/.claude/skills/simic-design/guidelines/links.html b/.claude/skills/simic-design/guidelines/links.html new file mode 100644 index 0000000..db7d4f8 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/links.html @@ -0,0 +1,8 @@ + + + diff --git a/.claude/skills/simic-design/guidelines/mark.html b/.claude/skills/simic-design/guidelines/mark.html new file mode 100644 index 0000000..f089efe --- /dev/null +++ b/.claude/skills/simic-design/guidelines/mark.html @@ -0,0 +1,7 @@ + + +
+ +simic +
#0f9b8e · unicode glyphs as icons: ◈ → › ·
no icon fonts, no emoji, ever
+
diff --git a/.claude/skills/simic-design/guidelines/quotes.html b/.claude/skills/simic-design/guidelines/quotes.html new file mode 100644 index 0000000..cbdced7 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/quotes.html @@ -0,0 +1,6 @@ + + +
+

Nissa sends the photograph directly to the designer. Aurelia sends only the assignment brief.

+The load-bearing routing rule — docs/design/02-constitution.md §5.5 +
diff --git a/.claude/skills/simic-design/guidelines/semantic-dark.html b/.claude/skills/simic-design/guidelines/semantic-dark.html new file mode 100644 index 0000000..328f025 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/semantic-dark.html @@ -0,0 +1,3 @@ + + +
--color-bg
--color-bg-subtle
--color-bg-code
--color-bg-note
--color-text
--color-text-muted
--color-heading
--color-accent
--color-border
--color-border-firm
--color-link-hover
--color-warn
diff --git a/.claude/skills/simic-design/guidelines/semantic-light.html b/.claude/skills/simic-design/guidelines/semantic-light.html new file mode 100644 index 0000000..ba35e79 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/semantic-light.html @@ -0,0 +1,3 @@ + + +
--color-bg
--color-bg-subtle
--color-bg-code
--color-bg-note
--color-text
--color-text-muted
--color-heading
--color-accent
--color-border
--color-border-firm
--color-link-hover
--color-warn
diff --git a/.claude/skills/simic-design/guidelines/spacing.html b/.claude/skills/simic-design/guidelines/spacing.html new file mode 100644 index 0000000..8923633 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/spacing.html @@ -0,0 +1,3 @@ + + +
space-1
space-2
space-3
space-4
space-5
space-6
space-7
diff --git a/.claude/skills/simic-design/guidelines/type-body.html b/.claude/skills/simic-design/guidelines/type-body.html new file mode 100644 index 0000000..9f280af --- /dev/null +++ b/.claude/skills/simic-design/guidelines/type-body.html @@ -0,0 +1,4 @@ + + +

Growing a network at runtime raises four questions: what new structure to add, whether it is sound, and who decides. Admitted structure is never permanent by default — it must keep earning its tenancy, per INV-15, and is sedated or lysed when it no longer does (docs/design/04-architecture.md §7.4).

+
--font-body: system-ui … · inline code: bg-code fill, 1px border, 3px radius
diff --git a/.claude/skills/simic-design/guidelines/type-headings.html b/.claude/skills/simic-design/guidelines/type-headings.html new file mode 100644 index 0000000..3c059e4 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/type-headings.html @@ -0,0 +1,6 @@ + + +

Counterfactual morphogenesis

+

Why counterfactuals, not a reward function

+

The loop, end to end

+
--text-h1 clamp(2rem→3.1rem) · --text-h2 clamp(1.35→1.75) · --text-h3 clamp(1.08→1.22) · h1 tracking -0.02em
diff --git a/.claude/skills/simic-design/guidelines/type-mono.html b/.claude/skills/simic-design/guidelines/type-mono.html new file mode 100644 index 0000000..4114004 --- /dev/null +++ b/.claude/skills/simic-design/guidelines/type-mono.html @@ -0,0 +1,8 @@ + + +
+simic +Counterfactual Generative Morphogenesis +Project status +INV-15, INV-16 · INV-45 +
diff --git a/.claude/skills/simic-design/readme.md b/.claude/skills/simic-design/readme.md index d4ddf29..72959c1 100644 --- a/.claude/skills/simic-design/readme.md +++ b/.claude/skills/simic-design/readme.md @@ -51,12 +51,12 @@ Source repo: https://github.com/foundryside-dev/simic — explore it for the can **Dark mode**: not an afterthought — every token is a `light-dark()` pair; diagrams ship as light/dark pairs selected by ``; print falls back to light. - + + +Simic — website UI kit + + + + + + + + +
+ + diff --git a/.claude/skills/simic-design/ui_kits/wiki/README.md b/.claude/skills/simic-design/ui_kits/wiki/README.md new file mode 100644 index 0000000..8fa4cae --- /dev/null +++ b/.claude/skills/simic-design/ui_kits/wiki/README.md @@ -0,0 +1,3 @@ +# Wiki UI kit + +Recreation of https://simic.foundryside.dev/design/ — the MkDocs Material projection of `docs/design/` (config: `tools/wiki/mkdocs.yml`). Key facts honored: `palette: teal/teal` (header `#009485`), `font: false` (system stack, no Google Fonts), light/dark toggle (working — click the sun icon), left nav derived from the chapter directory structure, right TOC, edit link to the real source, "Made with Material for MkDocs" footer. Content is `docs/design/00-INDEX.md`, abbreviated. This is theme chrome, not the design system's own component vocabulary — the wiki is stock Material by upstream choice. diff --git a/.claude/skills/simic-design/ui_kits/wiki/index.html b/.claude/skills/simic-design/ui_kits/wiki/index.html new file mode 100644 index 0000000..5e0ad77 --- /dev/null +++ b/.claude/skills/simic-design/ui_kits/wiki/index.html @@ -0,0 +1,126 @@ + + + +Simic — High-Level Design + + + +
+ +
Simic — High-Level Design · Simic HLD — Index
+ + +foundryside-dev/simic
HLD v4.1 · locked
+
+
+ +
+ +

Simic HLD — Index

+

Architecture version: 4.1 · Namespec: 2.0 — locked · Status: canonical design authority (decomposed from the v4.1 monolith per ADR-0001).

+

Every chapter is standalone. Load 02-constitution.md in every working session; load the chapters your task names; do not load the rest.

+

Chapter map

+ + + + + + + +
FileContents
01-claim.mdThe scientific claim and its falsifiers (exec summary, problem, goals, non-goals, success criteria, final statement)
02-constitution.mdAlways load. Naming constitution, the 45 constitutional invariants (INV-01..INV-45), one-line namespec invariants
03-principles.mdDesign principles and the architectural smell catalogue
04-architecture.mdPlanes, subsystem map, end-to-end operating flow
05-leyline-contracts.mdAll core contract shapes (StrategicEnvelopeScaffoldManifest)
07-counterfactual-engine.mdBranch pools, Academy/Field QA, no-op anchoring, blindness, statistical unit
+

Reading paths

+
    +
  • Implementing a domain: 02-constitution.md + domains/<it>.md + 05-leyline-contracts.md (its contracts) + programme/learning.md (its entry).
  • +
  • Admission / adjudication work: 02 + domains/isperia.md + domains/jin-gitaxias.md + 07-counterfactual-engine.md.
  • +
  • New here: 010402, then appendices/newsroom.md for the authority model.
  • +
+

Citation convention

+
Note

Invariants: INV-nn. Contracts: by name (GrowthIntent), never by section number. Chapters: by path#anchor. Names and file anchors survive restructuring, numbers do not.

+

Size discipline

+

Chapters stay under ~600 lines. A chapter that outgrows the budget is split by an ADR, never silently. (Largest at decomposition: 05-leyline-contracts.md, 579 lines.)

+
Licensed Apache-2.0Made with Material for MkDocs
+
+ +
+ diff --git a/docs/product/decisions/0019-design-system-recovery-path.md b/docs/product/decisions/0019-design-system-recovery-path.md index 0958549..a3ea333 100644 --- a/docs/product/decisions/0019-design-system-recovery-path.md +++ b/docs/product/decisions/0019-design-system-recovery-path.md @@ -1,8 +1,11 @@ # PDR-0019 — Design-system recovery path: re-export if it survives, else reconstruct — never fabricate -Date: 2026-08-09 Status: proposed Author: Claude (product-owner session) -Owner sign-off: REQUIRED — the deciding fact (does the SimicDesignSystem -project survive in the owner's claude.ai/design UI?) is owner-visible only. +Date: 2026-08-09 Status: accepted Author: Claude (product-owner session) +Owner sign-off: RECEIVED 2026-08-09 (session 10, "yes try to fetch it now") +— the project survives; the re-export fork fired. Executed same day on +branch design-system-recovery: all 57 files pulled, 12/12 bundle +sourceHashes verified sha256 (the originals, per this PDR's adjudication +rule), divergence-table corrections and Namespec 2.0 re-applied on top. Related: simic-42e575b93c, commit 6e74997, PDR-0018 (the divergence table), memory: simic-design-system-partial-export