# Decisions

1. **Private repository** (2026-11-06, Claude's call on Shane's "proceed with whatever you think is best"). PBS Sans font files, PBS and PBS KIDS network guides and photography are inside; Shane's 2026-11-05 brand decisions keep font files and the network guide PDFs off any public tier. A public, LLM-readable subset (brand book, tokens, component docs, logos) is a separate next step.
2. **The live artifact is the source of truth.** `artifact/` is a mirror and is never edited by hand. The standalone export is frozen input for the merge described in `docs/DIVERGENCE.md`.
3. **The Design System type's runtime is not stored** (`index.html`, `artifact-type/app.js`, `app.css`, `demo.json`, `run.html`, about 3 MB of Anthropic's code republished on every type release). Its reference documents are kept under `artifact/type-reference/` because they describe the file format a restore would need.
4. **Agent-instruction files from the standalone export are renamed** (`CLAUDE.from-standalone.md`, `SKILL.from-standalone.md`) so no coding tool loads them from a copy of this repo.
5. **Asset store files are stored by group and name** (`artifact/assets-store/<group>/<name>`), the names the artifact's index gives them; the blob ids are in `artifact/ASSET-STORE-INVENTORY.tsv`.
6. **Pushes go straight to `main`.** A sync is one commit named for the artifact version it mirrors.

## External contracts

- `llms.txt` and `scripts/sync-artifact.md` reference the folder layout above by path; renaming a folder means updating both.
7. **The artifact's bundle was kept and extended, not replaced** (2026-11-06). The standalone's `_ds_bundle.js` lacks `PageTab`, which the artifact's PageTab and Editorial previews call, and its Logo and PatternPanel take no `assetPath` or `src`, which the artifact's previews pass. So the five October blocks (channelAssetData, brandAssetData, AppPromo, ChannelLogo with KidsArchitecture, and a BrandAssets export) were appended to the artifact's bundle; the 29 existing blocks are byte-identical (checked under Node: 34 exports, no block errors; and in the page: Logo, PatternPanel, Badge, Button, Card and the three new previews render). `components/src/` keeps the September sources for the 29 and gains the four October brand sources.
8. **Template notes are `README.txt`, not `.md`** (2026-11-06). The type's runtime treats any `.md` outside `README.md`, `components/`, `assets/`, `fonts/` and `archived/` as a brand-book section; a `README.md` in each template folder would have added five sections to the book.
9. **Guideline cards reference the artifact's own files** (2026-11-06): styles from `../tokens.css` and `../components/bundle.css`, scripts from `../components/lib/` and `../components/bundle.js`, artwork by `/_blob/<id>`. Markers use the attributes the runtime reads (`group`, `height`, `width`, `subtitle`, `page`); the old `viewport` and `name` attributes are dropped and the name goes in `<title>`.
10. **Records are added, never replaced** (2026-11-06): the September SKILL, CLAUDE and readme copies in `assets/notes/` stay and the October ones sit beside them with `-2026-10-23` in the name; the September `docs/_ds_bundle.js` stays beside `docs/standalone-2026-10-23/`.
11. **The page's own save is what the mirror holds** (2026-11-06). After a publish the page appends its generated Consuming and Index sections to `README.md` and regenerates `api/`, `manifest.json` and `tokens.css`, saving a version of its own. The mirror takes that version (1794024401-0aa9), not the files as this repo published them, so `artifact/project/README.md` ends with two generated sections.
12. **Sources that are not served types carry an explicit `text/plain`** (2026-11-06): the publish refuses `.jsx` and `.d.ts` paths without a content type.
