Brand-neutral: brands without a wordmark skip it entirely — one build, no
per-brand wiring. Namespace import keeps the mark optional (no hard import).
Claude-Session: https://claude.ai/code/session_01XsNmNwzHUSKXfN7gYruUsM
Enforces one-brand-per-repo: the shared build.ts carries no brand name (byte-
identical everywhere, driven by package.json "brand"); removed the unused
generator.ts/generate-showcase.ts (leftover, carried foreign-brand output
paths); genericized the animated-mark provenance and README brand-package
examples. Each package now names only its own brand.
The showcase embedded new Date() in two spots, so every build re-dirtied
dist/showcase.html and churned git. Replaced with a static subtitle — builds
are now reproducible (no dates in generated files).
Re-mints the README hero: the template shipped a generic card whose wordmark
literally read "logo" with a truncated subtitle. generateHero() now composes
the brand's own white mark + real name + full tagline + github/domain footer,
driven by a package.json "brand" block — one template, every org. Also renames
dist SVG sources brand-neutral (logo.svg, favicon.svg, …) so the shared build is
correct for every brand (they were hanzo-prefixed after the earlier port).