<aside> 🛠️

Notion is the editorial source. Astro is the publication layer. Keep entries concise: definition first; body optional.

</aside>

Source

Forms of Identity — public workbench

Entry shape

export interface IdentityEntry {
  slug?: string;
  name: string;
  shortDefinition: string;
  verbs: string[];
  how?: string;
  form?: "Role" | "Domain" | "Status" | "Practice" | "Transition" | "Force" | "Lens" | "Affiliation";
  stage: "Seed" | "Working" | "Public-ready";
  iconKey?: string;
  beX4?: {
    being?: string;
    belonging?: string;
    becoming?: string;
    begetting?: string;
  };
  tags: string[];
  sourceUrl?: string;
  body?: string;
}

Notion → Astro mapping

Notion Astro
Name name
Slug slug
Short definition shortDefinition
Verb / doing split on semicolons → verbs[]
How? how
Form form
Stage stage
Icon key iconKey
Being beX4.being
Belonging beX4.belonging
Becoming beX4.becoming
Begetting beX4.begetting
Tags tags[]
Source sourceUrl
Page blocks body — optional

Build rules

  1. Query every row from the data source.
  2. Render every named row in the scaffold/index.
  3. Generate /identity/{slug}/ only when slug is present.
  4. Treat Stage as a visible WIP label, not a publication gate.
  5. Display Short definition first.
  6. Keep body optional; an entry may be complete without prose beyond its fields.
  7. Render Icon key directly when it is an emoji; otherwise map the key to a local SVG/component.
  8. Keep all permanent graphics in the Astro repository.

Slug rules