# Static site content model Each hosted site has a validated `sites//site.json`. It owns its brand fallback/logo, SEO image, navigation, page content, contact information, and whether a physical-address map is displayed. Shared Astro components render that data without a per-site code fork. Current reusable primitives include the base SEO layout, header/footer, full-page hero, section heading, CTA band, review cards, Markdown-backed FAQ accordions, and an optional location map. A real logo can be provided as `/images/.svg` or image asset; until then the configured short mark and shared favicon are used. Phase 6 adds two validated Markdown collections: - `sites/blog/content/posts/*.md` produces the journal listing and individual `/posts//` pages on `blog.3031023.xyz`. - `sites/www/content/faq/*.md` produces the FAQ section on the primary-site homepage. Both collections require frontmatter and support `draft: true`. Draft entries are excluded from the rendered pages and sitemap. The internal Decap CMS now edits these collections through the protected `cms` staging branch; client and public editing remain disabled. Journal `pubDate` and optional `updatedDate` fields use Decap's supported `datetime` control in date-only UTC mode. New posts default `pubDate` to the current UTC date. Repository verification rejects the unsupported `date` widget so the missing-control failure cannot silently return. CMS images must live in the flat `public/images/uploads/` directory and be referenced with descriptive alt text where rendered. Approved source rasters may be at most 25 MiB; each build produces a metadata-free public copy no larger than 1920 pixels or 500 KiB. The build rejects malformed site JSON, disallowed image signatures, nested upload paths, and oversized sources. Each selected build also generates `sitemap.xml` and `robots.txt`. Preview builds disallow indexing; production workflows set `DEPLOY_ENV=production` to publish crawlable robots rules and the sitemap URL.