From 2c59f0f2f36b5fffb0f2cb70f2fa5eb6e72cc1e1 Mon Sep 17 00:00:00 2001 From: John Morrissey <544926+tachyon-beep@users.noreply.github.com> Date: Sun, 9 Aug 2026 14:35:42 +1000 Subject: [PATCH 1/4] skills: recover simic-design export from the restored claude.ai project (verbatim) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The SimicDesignSystem_5a908e project reappeared in the owner's writable project list (PDR-0019 fork resolved: re-export, not reconstruction). Pulled all 57 missing source files verbatim via DesignSync get_file: tokens/ (4), components/ (33), guidelines/ (14), ui_kits/ (6); styles.css restored to its original four-@import form now that the token files exist. All 12 bundle sourceHashes verify (sha256 prefix) against the pulled jsx — these are the originals, per PDR-0019's adjudication rule. assets/ (mark.svg + 6 diagram SVGs) populated from site/assets/ per the byte-identical policy — deliberately NOT from upstream, whose copies predate the Namespec 2.0 diagram re-render. .thumbnail (app furniture) not pulled. Repo pre-commit normalizes EOF newlines on non-hashed files. Pulled content still carries the recorded stale values and Namespec 1.0 names; the next commit re-applies the readme's divergence-table corrections and the ADR-0008 renames, so the diff between these two commits IS the divergence record. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_012qVBdHQtjsNsUbfMHSdyeF --- .../assets/diagrams/assurance-loop-dark.svg | 1 + .../assets/diagrams/assurance-loop-light.svg | 1 + .../assets/diagrams/core-loop-dark.svg | 1 + .../assets/diagrams/core-loop-light.svg | 1 + .../assets/diagrams/observation-loop-dark.svg | 1 + .../diagrams/observation-loop-light.svg | 1 + .claude/skills/simic-design/assets/mark.svg | 1 + .../components/content/CanonQuote.d.ts | 10 ++ .../components/content/CanonQuote.jsx | 8 ++ .../components/content/CanonQuote.prompt.md | 5 + .../simic-design/components/content/Note.d.ts | 11 ++ .../simic-design/components/content/Note.jsx | 9 ++ .../components/content/Note.prompt.md | 5 + .../components/content/PageHead.d.ts | 13 ++ .../components/content/PageHead.jsx | 10 ++ .../components/content/PageHead.prompt.md | 5 + .../components/content/Spine.d.ts | 11 ++ .../simic-design/components/content/Spine.jsx | 14 ++ .../components/content/Spine.prompt.md | 5 + .../components/content/content.card.html | 24 ++++ .../components/data/CardGrid.d.ts | 6 + .../simic-design/components/data/CardGrid.jsx | 17 +++ .../components/data/CardGrid.prompt.md | 5 + .../components/data/DataTable.d.ts | 10 ++ .../components/data/DataTable.jsx | 17 +++ .../components/data/DataTable.prompt.md | 5 + .../simic-design/components/data/Diagram.d.ts | 13 ++ .../simic-design/components/data/Diagram.jsx | 13 ++ .../components/data/Diagram.prompt.md | 5 + .../simic-design/components/data/Split.d.ts | 3 + .../simic-design/components/data/Split.jsx | 8 ++ .../components/data/Split.prompt.md | 5 + .../components/data/data.card.html | 28 ++++ .../components/navigation/Masthead.d.ts | 11 ++ .../components/navigation/Masthead.jsx | 24 ++++ .../components/navigation/Masthead.prompt.md | 7 + .../components/navigation/SiteFooter.d.ts | 3 + .../components/navigation/SiteFooter.jsx | 13 ++ .../navigation/SiteFooter.prompt.md | 5 + .../navigation/navigation.card.html | 19 +++ .../simic-design/guidelines/accents.html | 3 + .../simic-design/guidelines/callouts.html | 4 + .../simic-design/guidelines/diagrams.html | 6 + .../simic-design/guidelines/ink-ramp.html | 3 + .../simic-design/guidelines/layout.html | 8 ++ .../skills/simic-design/guidelines/links.html | 8 ++ .../skills/simic-design/guidelines/mark.html | 7 + .../simic-design/guidelines/quotes.html | 6 + .../guidelines/semantic-dark.html | 3 + .../guidelines/semantic-light.html | 3 + .../simic-design/guidelines/spacing.html | 3 + .../simic-design/guidelines/type-body.html | 4 + .../guidelines/type-headings.html | 6 + .../simic-design/guidelines/type-mono.html | 8 ++ .claude/skills/simic-design/styles.css | 114 +--------------- .claude/skills/simic-design/tokens/base.css | 27 ++++ .claude/skills/simic-design/tokens/colors.css | 35 +++++ .../skills/simic-design/tokens/spacing.css | 13 ++ .../skills/simic-design/tokens/typography.css | 9 ++ .../ui_kits/website/LineageScreen.jsx | 47 +++++++ .../ui_kits/website/OverviewScreen.jsx | 56 ++++++++ .../simic-design/ui_kits/website/README.md | 3 + .../simic-design/ui_kits/website/index.html | 22 +++ .../simic-design/ui_kits/wiki/README.md | 3 + .../simic-design/ui_kits/wiki/index.html | 126 ++++++++++++++++++ 65 files changed, 771 insertions(+), 110 deletions(-) create mode 100644 .claude/skills/simic-design/assets/diagrams/assurance-loop-dark.svg create mode 100644 .claude/skills/simic-design/assets/diagrams/assurance-loop-light.svg create mode 100644 .claude/skills/simic-design/assets/diagrams/core-loop-dark.svg create mode 100644 .claude/skills/simic-design/assets/diagrams/core-loop-light.svg create mode 100644 .claude/skills/simic-design/assets/diagrams/observation-loop-dark.svg create mode 100644 .claude/skills/simic-design/assets/diagrams/observation-loop-light.svg create mode 100644 .claude/skills/simic-design/assets/mark.svg create mode 100644 .claude/skills/simic-design/components/content/CanonQuote.d.ts create mode 100644 .claude/skills/simic-design/components/content/CanonQuote.jsx create mode 100644 .claude/skills/simic-design/components/content/CanonQuote.prompt.md create mode 100644 .claude/skills/simic-design/components/content/Note.d.ts create mode 100644 .claude/skills/simic-design/components/content/Note.jsx create mode 100644 .claude/skills/simic-design/components/content/Note.prompt.md create mode 100644 .claude/skills/simic-design/components/content/PageHead.d.ts create mode 100644 .claude/skills/simic-design/components/content/PageHead.jsx create mode 100644 .claude/skills/simic-design/components/content/PageHead.prompt.md create mode 100644 .claude/skills/simic-design/components/content/Spine.d.ts create mode 100644 .claude/skills/simic-design/components/content/Spine.jsx create mode 100644 .claude/skills/simic-design/components/content/Spine.prompt.md create mode 100644 .claude/skills/simic-design/components/content/content.card.html create mode 100644 .claude/skills/simic-design/components/data/CardGrid.d.ts create mode 100644 .claude/skills/simic-design/components/data/CardGrid.jsx create mode 100644 .claude/skills/simic-design/components/data/CardGrid.prompt.md create mode 100644 .claude/skills/simic-design/components/data/DataTable.d.ts create mode 100644 .claude/skills/simic-design/components/data/DataTable.jsx create mode 100644 .claude/skills/simic-design/components/data/DataTable.prompt.md create mode 100644 .claude/skills/simic-design/components/data/Diagram.d.ts create mode 100644 .claude/skills/simic-design/components/data/Diagram.jsx create mode 100644 .claude/skills/simic-design/components/data/Diagram.prompt.md create mode 100644 .claude/skills/simic-design/components/data/Split.d.ts create mode 100644 .claude/skills/simic-design/components/data/Split.jsx create mode 100644 .claude/skills/simic-design/components/data/Split.prompt.md create mode 100644 .claude/skills/simic-design/components/data/data.card.html create mode 100644 .claude/skills/simic-design/components/navigation/Masthead.d.ts create mode 100644 .claude/skills/simic-design/components/navigation/Masthead.jsx create mode 100644 .claude/skills/simic-design/components/navigation/Masthead.prompt.md create mode 100644 .claude/skills/simic-design/components/navigation/SiteFooter.d.ts create mode 100644 .claude/skills/simic-design/components/navigation/SiteFooter.jsx create mode 100644 .claude/skills/simic-design/components/navigation/SiteFooter.prompt.md create mode 100644 .claude/skills/simic-design/components/navigation/navigation.card.html create mode 100644 .claude/skills/simic-design/guidelines/accents.html create mode 100644 .claude/skills/simic-design/guidelines/callouts.html create mode 100644 .claude/skills/simic-design/guidelines/diagrams.html create mode 100644 .claude/skills/simic-design/guidelines/ink-ramp.html create mode 100644 .claude/skills/simic-design/guidelines/layout.html create mode 100644 .claude/skills/simic-design/guidelines/links.html create mode 100644 .claude/skills/simic-design/guidelines/mark.html create mode 100644 .claude/skills/simic-design/guidelines/quotes.html create mode 100644 .claude/skills/simic-design/guidelines/semantic-dark.html create mode 100644 .claude/skills/simic-design/guidelines/semantic-light.html create mode 100644 .claude/skills/simic-design/guidelines/spacing.html create mode 100644 .claude/skills/simic-design/guidelines/type-body.html create mode 100644 .claude/skills/simic-design/guidelines/type-headings.html create mode 100644 .claude/skills/simic-design/guidelines/type-mono.html create mode 100644 .claude/skills/simic-design/tokens/base.css create mode 100644 .claude/skills/simic-design/tokens/colors.css create mode 100644 .claude/skills/simic-design/tokens/spacing.css create mode 100644 .claude/skills/simic-design/tokens/typography.css create mode 100644 .claude/skills/simic-design/ui_kits/website/LineageScreen.jsx create mode 100644 .claude/skills/simic-design/ui_kits/website/OverviewScreen.jsx create mode 100644 .claude/skills/simic-design/ui_kits/website/README.md create mode 100644 .claude/skills/simic-design/ui_kits/website/index.html create mode 100644 .claude/skills/simic-design/ui_kits/wiki/README.md create mode 100644 .claude/skills/simic-design/ui_kits/wiki/index.html 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..5aa252d --- /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}>

Nissa observes and reports…

+``` 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..ac3b2a4 --- /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..14b385e --- /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..9c4344c --- /dev/null +++ b/.claude/skills/simic-design/guidelines/quotes.html @@ -0,0 +1,6 @@ + + +
+

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

+The load-bearing routing rule — docs/design/02-constitution.md §5.3 +
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..6b93484 --- /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-accent-quiet
--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..39c08b8 --- /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-accent-quiet
--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/styles.css b/.claude/skills/simic-design/styles.css index a5a2d3d..45decae 100644 --- a/.claude/skills/simic-design/styles.css +++ b/.claude/skills/simic-design/styles.css @@ -1,110 +1,4 @@ -/* ========================================================================== - Simic Design System — global entry point - - PROVENANCE. This file is a LOCAL FLATTENING, not the original export. The - upstream Claude Design project (namespace SimicDesignSystem_5a908e) split - these tokens across tokens/colors.css, tokens/typography.css, - tokens/spacing.css and tokens/base.css, and this file was four @import - statements pointing at them. Those four files — and 29 others under - components/, guidelines/ and ui_kits/ — were never committed (see the - warning in readme.md), so the imports resolved to nothing and this - stylesheet loaded no rules at all. - - Rather than leave a dead import chain, the token layer is inlined below, - lifted verbatim from `site/style.css`, which is and remains the ground - truth for every value here. The four tokens/*.css paths are still named in - _ds_manifest.json and readme.md's Index on purpose: that is the record of - what is missing, and re-exporting the project is the real fix. - - CONSEQUENCE: this file carries TOKENS ONLY. The component rules (Masthead, - Note, CanonQuote, Spine, CardGrid, DataTable, Split, Diagram) live in - `site/style.css` and were not duplicated here — one copy of a component - layer is correct, and a second would drift. To style a real surface, read - `site/style.css`. - - Keep in sync with site/style.css. If the two ever disagree, site/style.css - wins. - ========================================================================== */ - -:root { - color-scheme: light dark; - - /* --- Primitives ------------------------------------------------------- - Simic reads blue-green. Hue 225 carries structure, hue 175 carries - emphasis, hue 85 is the sole warning colour. OKLCH so the light and dark - ramps stay perceptually matched. */ - --ink-050: oklch(0.985 0.004 225); - --ink-100: oklch(0.955 0.008 225); - --ink-200: oklch(0.905 0.012 225); - --ink-300: oklch(0.825 0.016 225); - /* ink-500 is the light-mode muted text; kept dark enough that muted text - clears WCAG AA (4.5:1) against --color-bg-subtle, not just --color-bg. */ - --ink-500: oklch(0.495 0.024 225); - --ink-700: oklch(0.375 0.030 225); - --ink-850: oklch(0.235 0.026 225); - --ink-900: oklch(0.185 0.024 225); - --ink-950: oklch(0.145 0.020 225); - - --teal-400: oklch(0.780 0.110 175); - /* Ramp midpoint. No current consumer — kept so the ramp stays derivable, and - because the mark's fixed #0f9b8e sits beside it. Do not use it for text: - it measures 4.22:1 on --color-bg, which fails AA. */ - --teal-600: oklch(0.560 0.105 175); - --teal-700: oklch(0.470 0.098 175); - - --amber-400: oklch(0.800 0.105 85); - --amber-700: oklch(0.520 0.105 85); - - /* --- Semantic tokens (one declaration each) --------------------------- */ - --color-bg: light-dark(var(--ink-050), var(--ink-950)); - --color-bg-subtle: light-dark(var(--ink-100), var(--ink-900)); - --color-bg-code: light-dark(var(--ink-100), var(--ink-850)); - /* Tinted callout grounds. Each holds its family's hue on BOTH sides — teal - 175 for the plain note, amber 85 for the status note — so a callout never - drifts off the three-hue palette when the theme flips. */ - --color-bg-note: light-dark(oklch(0.965 0.020 175), oklch(0.235 0.030 175)); - --color-bg-note-status: light-dark(oklch(0.975 0.022 85), oklch(0.235 0.028 85)); - - --color-text: light-dark(var(--ink-900), var(--ink-100)); - --color-text-muted: light-dark(var(--ink-500), var(--ink-300)); - --color-heading: light-dark(var(--ink-950), var(--ink-050)); - - --color-border: light-dark(var(--ink-200), oklch(0.300 0.020 225)); - --color-border-firm: light-dark(var(--ink-300), oklch(0.380 0.024 225)); - - --color-accent: light-dark(var(--teal-700), var(--teal-400)); - --color-warn: light-dark(var(--amber-700), var(--amber-400)); - - --color-link: var(--color-accent); - --color-link-hover: color-mix(in oklch, var(--color-link) 72%, var(--color-text) 28%); - - /* --- Typography ------------------------------------------------------- */ - --font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", - Arial, sans-serif; - --font-code: ui-monospace, "SFMono-Regular", Menlo, Consolas, - "Liberation Mono", monospace; - - --text-h1: clamp(2rem, 1.45rem + 2.6vw, 3.1rem); - --text-h2: clamp(1.35rem, 1.18rem + 0.8vw, 1.75rem); - --text-h3: clamp(1.08rem, 1.02rem + 0.3vw, 1.22rem); - - /* --- Spacing (8px base) ----------------------------------------------- */ - --space-1: 0.25rem; - --space-2: 0.5rem; - --space-3: 1rem; - --space-4: 1.5rem; - --space-5: 2rem; - --space-6: 3rem; - --space-7: 4.5rem; - - /* --- Layout ------------------------------------------------------------ */ - --measure: 46rem; /* prose column */ - --page: 62rem; /* wide elements: tables, diagrams */ - --radius: 4px; -} - -/* Hook for an explicit reader override. NOTHING SETS data-theme on the - marketing site: it ships zero JavaScript and is system-preference-only. - Only the MkDocs wiki is three-state. See readme.md § VISUAL FOUNDATIONS. */ -:root[data-theme="light"] { color-scheme: light; } -:root[data-theme="dark"] { color-scheme: dark; } +@import "tokens/colors.css"; +@import "tokens/typography.css"; +@import "tokens/spacing.css"; +@import "tokens/base.css"; diff --git a/.claude/skills/simic-design/tokens/base.css b/.claude/skills/simic-design/tokens/base.css new file mode 100644 index 0000000..c6cbd50 --- /dev/null +++ b/.claude/skills/simic-design/tokens/base.css @@ -0,0 +1,27 @@ +/* Simic base element styles — verbatim behavior from site/style.css. */ +*,*::before,*::after{box-sizing:border-box} +html{-webkit-text-size-adjust:100%} +body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:1rem;line-height:1.65;text-underline-offset:0.15em} +img,svg{max-width:100%;height:auto} +:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px} +a{color:var(--color-link);text-decoration-thickness:1px} +a:hover{color:var(--color-link-hover)} +h1,h2,h3,h4{color:var(--color-heading);line-height:1.2;text-wrap:balance;margin:0 0 var(--space-3)} +h1{font-size:var(--text-h1);letter-spacing:-0.02em} +h2{font-size:var(--text-h2);margin-top:var(--space-6);padding-top:var(--space-3);border-top:1px solid var(--color-border)} +h3{font-size:var(--text-h3);margin-top:var(--space-5)} +h4{font-size:1rem;margin-top:var(--space-4)} +p,ul,ol,dl{margin:0 0 var(--space-3)} +ul,ol{padding-left:1.35rem} +li{margin-bottom:var(--space-2)} +li>ul,li>ol{margin-top:var(--space-2)} +strong{color:var(--color-heading);font-weight:650} +code,kbd,samp{font-family:var(--font-code);font-size:0.9em} +:not(pre)>code{background:var(--color-bg-code);border:1px solid var(--color-border);border-radius:3px;padding:0.08em 0.32em;overflow-wrap:break-word} +pre{max-width:var(--page);margin:var(--space-4) 0;padding:var(--space-3) var(--space-4);background:var(--color-bg-code);border:1px solid var(--color-border);border-radius:var(--radius);overflow-x:auto;font-size:0.86rem;line-height:1.55} +pre code{background:none;border:0;padding:0;font-size:inherit} +blockquote{margin:var(--space-4) 0;padding:var(--space-1) 0 var(--space-1) var(--space-4);border-left:3px solid var(--color-border-firm);color:var(--color-text)} +blockquote>:last-child{margin-bottom:0} +blockquote.canon{border-left-color:var(--color-accent);font-size:1.03rem} +blockquote cite{display:block;margin-top:var(--space-2);font-size:0.85rem;font-style:normal;color:var(--color-text-muted)} +@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:0.01ms !important;transition-duration:0.01ms !important}} diff --git a/.claude/skills/simic-design/tokens/colors.css b/.claude/skills/simic-design/tokens/colors.css new file mode 100644 index 0000000..253951a --- /dev/null +++ b/.claude/skills/simic-design/tokens/colors.css @@ -0,0 +1,35 @@ +/* Simic color tokens — copied verbatim from site/style.css. Hue 225 carries structure, hue 175 carries emphasis. OKLCH so light/dark ramps stay perceptually matched. */ +:root{ +color-scheme: light dark; +--ink-050: oklch(0.985 0.004 225); +--ink-100: oklch(0.955 0.008 225); +--ink-200: oklch(0.905 0.012 225); +--ink-300: oklch(0.825 0.016 225); +--ink-500: oklch(0.495 0.024 225); +--ink-700: oklch(0.375 0.030 225); +--ink-850: oklch(0.235 0.026 225); +--ink-900: oklch(0.185 0.024 225); +--ink-950: oklch(0.145 0.020 225); +--teal-400: oklch(0.780 0.110 175); +--teal-600: oklch(0.560 0.105 175); +--teal-700: oklch(0.470 0.098 175); +--amber-400: oklch(0.800 0.105 85); +--amber-700: oklch(0.520 0.105 85); +--color-bg: light-dark(var(--ink-050), var(--ink-950)); +--color-bg-subtle: light-dark(var(--ink-100), var(--ink-900)); +--color-bg-code: light-dark(var(--ink-100), var(--ink-850)); +--color-bg-note: light-dark(oklch(0.965 0.020 175), oklch(0.235 0.030 195)); +--color-bg-note-status: light-dark(oklch(0.975 0.022 85), oklch(0.235 0.028 75)); +--color-text: light-dark(var(--ink-900), var(--ink-100)); +--color-text-muted: light-dark(var(--ink-500), var(--ink-300)); +--color-heading: light-dark(var(--ink-950), var(--ink-050)); +--color-border: light-dark(var(--ink-200), oklch(0.300 0.020 225)); +--color-border-firm: light-dark(var(--ink-300), oklch(0.380 0.024 225)); +--color-accent: light-dark(var(--teal-700), var(--teal-400)); +--color-accent-quiet:light-dark(var(--teal-600), oklch(0.660 0.080 175)); +--color-warn: light-dark(var(--amber-700), var(--amber-400)); +--color-link: var(--color-accent); +--color-link-hover: color-mix(in oklch, var(--color-link) 72%, var(--color-text) 28%); +} +:root[data-theme="light"]{color-scheme:light} +:root[data-theme="dark"]{color-scheme:dark} diff --git a/.claude/skills/simic-design/tokens/spacing.css b/.claude/skills/simic-design/tokens/spacing.css new file mode 100644 index 0000000..28487c6 --- /dev/null +++ b/.claude/skills/simic-design/tokens/spacing.css @@ -0,0 +1,13 @@ +/* Simic spacing + layout tokens (8px base). */ +:root{ +--space-1: 0.25rem; +--space-2: 0.5rem; +--space-3: 1rem; +--space-4: 1.5rem; +--space-5: 2rem; +--space-6: 3rem; +--space-7: 4.5rem; +--measure: 46rem; +--page: 62rem; +--radius: 4px; +} diff --git a/.claude/skills/simic-design/tokens/typography.css b/.claude/skills/simic-design/tokens/typography.css new file mode 100644 index 0000000..4454199 --- /dev/null +++ b/.claude/skills/simic-design/tokens/typography.css @@ -0,0 +1,9 @@ +/* Simic typography tokens — system stacks by design: the site ships zero webfonts (no third-party requests). */ +:root{ +--font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; +/* Upstream stack also lists "JetBrains Mono" and "Fira Code" as local-only fallbacks; omitted here because no font files ship (system stacks are a deliberate zero-request stance). */ +--font-code: ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace; +--text-h1: clamp(2rem, calc(1.45rem + 2.6vw), 3.1rem); +--text-h2: clamp(1.35rem, calc(1.18rem + 0.8vw), 1.75rem); +--text-h3: clamp(1.08rem, calc(1.02rem + 0.3vw), 1.22rem); +} diff --git a/.claude/skills/simic-design/ui_kits/website/LineageScreen.jsx b/.claude/skills/simic-design/ui_kits/website/LineageScreen.jsx new file mode 100644 index 0000000..e2d9406 --- /dev/null +++ b/.claude/skills/simic-design/ui_kits/website/LineageScreen.jsx @@ -0,0 +1,47 @@ +const DS2 = window.SimicDesignSystem_5a908e; +function LineageScreen({ onNav }) { + const { Masthead, SiteFooter, PageHead, Note, CanonQuote, Spine, Split, CardGrid } = DS2; + return ( +
+ +
{const a=e.target.closest("a");if(a&&a.textContent==="Overview"){e.preventDefault();e.stopPropagation();onNav("overview");}}}> +
+
+ {e.preventDefault();onNav("overview")}} style={{color:"var(--color-text-muted)"}}>Overview {"\u203A"} Why this design} + title="Why this design looks like this" + lede={<>Almost nothing in Simic is speculative caution. Each defensive mechanism traces to a specific, documented failure — and each forward step is something the record earned the right to attempt.} /> +
+

The record this design answers

+

Simic is the third incarnation of one research programme. Early versions of the simic project (known as esper) built the morphogenetic chassis this design retains — reversible slots, staged maturation, lifecycle states — and that working record is the proximate reason for every major choice made here.

+

The pivot, stated plainly

+

This design replaces the reward function with measured counterfactuals. Paired branches from one snapshot over identical futures cancel ordinary-training variance, so the difference between branches is the intervention effect.

+ +

A model can hallucinate an interface, then use permissive access idioms to hide the hallucination behind silent defaults.

+
+ +

Part of the expected improvement — dense per-step labels, attributable failures — is a training-procedure win that could arguably have been retrofitted to the earlier system. The architecture's irreducible contributions are the ones that could not: generated (not selected) structure, separated authorities, and provider blindness.

+
+

Armour and forward motion

+ docs/design/03-principles.md §6.20}> +

Where capability was validated, push forward; where the programme struggled, build armour.

+
+
+

The armour

Every mechanism that makes a documented failure class unrepresentable rather than policed. It faces in two directions, matching the two strata.

} + right={<>

The forward motion

What the record earned the right to attempt. Telemetry-conditioned structural decisions are proven sufficient.

} /> + + +
+
+
+ +
+ ); +} +window.LineageScreen = LineageScreen; diff --git a/.claude/skills/simic-design/ui_kits/website/OverviewScreen.jsx b/.claude/skills/simic-design/ui_kits/website/OverviewScreen.jsx new file mode 100644 index 0000000..5dd68a7 --- /dev/null +++ b/.claude/skills/simic-design/ui_kits/website/OverviewScreen.jsx @@ -0,0 +1,56 @@ +const DS = window.SimicDesignSystem_5a908e; +function OverviewScreen({ onNav }) { + const { Masthead, SiteFooter, PageHead, Note, CanonQuote, Spine, DataTable, Diagram } = DS; + return ( +
+ [l,h])} /> +
{const a=e.target.closest("a");if(a&&a.textContent==="Why this design"){e.preventDefault();e.stopPropagation();onNav("lineage");}}}> +
+
+ New neural structure is generated from the live state of a host network — not selected from a fixed menu of human-authored blueprints — then causally screened against doing nothing. Measured counterfactuals instead of a reward function.} /> + +

Pre-implementation bootstrap. The design is complete and locked — HLD v4.1, Namespec 1.0 — and a Python scaffold exists, but there is no functional code yet. First engineering work is Phase A: Namespec, Leyline contracts, and dependency boundaries. Nothing on this site describes a running system or a measured result.

+
+
+

The idea

+

Growing a neural network at runtime raises four questions that existing systems tend to blur together: what new structure to add, whether it is structurally sound, whether it actually helps, and who gets to decide. Simic separates those concerns constitutionally.

+

Structure is designed from live host telemetry; verified and canonicalised; compiled without semantic change; tested in flash-cloned counterfactual branches that share an identical future with the mainline; and admitted only if it beats a mandatory no-op alternative under a provider-blind judge. Everything — including failures, rejected pools, and no-op wins — is retained as history.

+

The loop, end to end

+
+ The ordinary host-training loop and the growth loop share one execution reality, and the candidate pool is allowed to lose. Source: docs/design/01-claim.md §1.} /> +
+

Guarantees

+

The constitution defines 45 blocking invariants, cited throughout the design as INV-nn. The spine:

+
+ +
+

Fourteen domains, one sentence

+

Authority is split across fourteen bounded domains with deliberately vivid codenames. The names are not decoration: they act as an architecture linter.

+ The canonical sentence — docs/design/02-constitution.md §5.3}> +

Nissa observes and reports. Tamiyo plans. Narset commissions and acts. Momir designs. Elesh conforms. Tezzeret compiles. Urabrask tests the compiled result in Tolaria. Augustin judges the resulting evidence under Leyline. Kasmina embodies the admitted growth. Emrakul destroys what no longer earns continued tenancy. Sarpadia retains every precedent. Oona reveals the account.

+
+

Where the design lives

+

The canonical authority is the HLD chapter set in the repository, not this site.

+
+ +
+
+
+ +
+ ); +} +window.OverviewScreen = OverviewScreen; diff --git a/.claude/skills/simic-design/ui_kits/website/README.md b/.claude/skills/simic-design/ui_kits/website/README.md new file mode 100644 index 0000000..2707d8b --- /dev/null +++ b/.claude/skills/simic-design/ui_kits/website/README.md @@ -0,0 +1,3 @@ +# Website UI kit + +Recreation of https://simic.foundryside.dev/ (source: `site/index.html`, `site/lineage.html`, `site/style.css`). Two screens, click-through via the masthead nav: Overview and "Why this design". Composes the design-system components; content is verbatim (abbreviated in long lists). The real site ships zero JS — the interactivity here is kit-only navigation. diff --git a/.claude/skills/simic-design/ui_kits/website/index.html b/.claude/skills/simic-design/ui_kits/website/index.html new file mode 100644 index 0000000..2ed68d2 --- /dev/null +++ b/.claude/skills/simic-design/ui_kits/website/index.html @@ -0,0 +1,22 @@ + + + +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..5fa31f1 --- /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: 1.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/augustin.md + domains/urabrask.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
+
+ +
+ From 6a636c6e50dd566a85675107dda3582b29f1de81 Mon Sep 17 00:00:00 2001 From: John Morrissey <544926+tachyon-beep@users.noreply.github.com> Date: Sun, 9 Aug 2026 14:39:01 +1000 Subject: [PATCH 2/4] skills: re-apply recorded corrections + Namespec 2.0 to the recovered export MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Divergence-table corrections (readme, PDR-0018 era) re-applied on top of the verbatim pull: --color-bg-note dark hue 195→175, --color-bg-note-status dark hue 75→85, --color-accent-quiet deleted from tokens/colors.css, _ds_manifest.json (44→43 tokens) and both _adherence.oxlintrc.json allowlist entries; the two semantic-token specimen cards swap the dead accent-quiet chip for --color-link-hover. Manifest tokens diffed against site/style.css: clean (three calc()-notation-only differences in clamp()). Namespec 2.0 (ADR-0008) applied to pulled specimen copy: canonical sentence (content card, CanonQuote prompt, OverviewScreen), newsroom rule (quotes guideline, cite corrected §5.3→§5.5), footer + status Namespec stamps, wiki-kit nav and reading-path names. readme.md Index warning rewritten as the recovery record: export recovered and hash-verified, corrections re-applied, upstream project now BEHIND this directory (stale tokens, 1.0 names, pre-rename diagrams) — pushing it back upstream is owner-gated and not done. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_012qVBdHQtjsNsUbfMHSdyeF --- .../simic-design/_adherence.oxlintrc.json | 2 - .claude/skills/simic-design/_ds_manifest.json | 2 +- .../components/content/CanonQuote.prompt.md | 2 +- .../components/content/content.card.html | 2 +- .../components/navigation/SiteFooter.jsx | 2 +- .../simic-design/guidelines/quotes.html | 4 +- .../guidelines/semantic-dark.html | 2 +- .../guidelines/semantic-light.html | 2 +- .claude/skills/simic-design/readme.md | 84 +++++++++---------- .claude/skills/simic-design/tokens/colors.css | 5 +- .../ui_kits/website/OverviewScreen.jsx | 4 +- .../simic-design/ui_kits/wiki/index.html | 10 +-- 12 files changed, 58 insertions(+), 63 deletions(-) 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/components/content/CanonQuote.prompt.md b/.claude/skills/simic-design/components/content/CanonQuote.prompt.md index 5aa252d..3528414 100644 --- a/.claude/skills/simic-design/components/content/CanonQuote.prompt.md +++ b/.claude/skills/simic-design/components/content/CanonQuote.prompt.md @@ -1,5 +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}>

Nissa observes and reports…

+The canonical sentence — docs/design/02-constitution.md §5.3}>

Under Leyline, Ugin plans…

``` diff --git a/.claude/skills/simic-design/components/content/content.card.html b/.claude/skills/simic-design/components/content/content.card.html index ac3b2a4..1b2a546 100644 --- a/.claude/skills/simic-design/components/content/content.card.html +++ b/.claude/skills/simic-design/components/content/content.card.html @@ -13,7 +13,7 @@ New neural structure is generated from the live state of a host network — then causally screened against doing nothing.} />

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

Part of the expected improvement is a training-procedure win that could arguably have been retrofitted.

- The canonical sentence — docs/design/02-constitution.md §5.3}>

Nissa observes and reports. Tamiyo plans. Narset commissions and acts. Momir designs.

+ The canonical sentence — docs/design/02-constitution.md §5.3}>

Under Leyline, Ugin plans, Aurelia commissions and acts, Nissa observes, Momir designs.

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

diff --git a/.claude/skills/simic-design/guidelines/quotes.html b/.claude/skills/simic-design/guidelines/quotes.html index 9c4344c..cbdced7 100644 --- a/.claude/skills/simic-design/guidelines/quotes.html +++ b/.claude/skills/simic-design/guidelines/quotes.html @@ -1,6 +1,6 @@
-

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

-The load-bearing routing rule — docs/design/02-constitution.md §5.3 +

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 index 6b93484..328f025 100644 --- a/.claude/skills/simic-design/guidelines/semantic-dark.html +++ b/.claude/skills/simic-design/guidelines/semantic-dark.html @@ -1,3 +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-accent-quiet
--color-warn
+
--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 index 39c08b8..ba35e79 100644 --- a/.claude/skills/simic-design/guidelines/semantic-light.html +++ b/.claude/skills/simic-design/guidelines/semantic-light.html @@ -1,3 +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-accent-quiet
--color-warn
+
--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/readme.md b/.claude/skills/simic-design/readme.md index d4ddf29..d958ac6 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. -