> For the complete documentation index, see [llms.txt](https://faction-os.gitbook.io/faction-os-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase13-session03-seo-metadata-and-static-site-plumbing/tasks.md).

# Task Checklist

**Session ID**: `phase13-session03-seo-metadata-and-static-site-plumbing` **Total Tasks**: 20 **Estimated Duration**: 3-4 hours **Created**: 2026-06-01

***

## Legend

* `[x]` = Completed
* `[ ]` = Pending
* `[P]` = Parallelizable (can run with other \[P] tasks)
* `[SNNMM]` = Session reference (NN=phase number, MM=session number)
* `TNNN` = Task ID

***

## Progress Summary

| Category       | Total  | Done   | Remaining |
| -------------- | ------ | ------ | --------- |
| Setup          | 3      | 3      | 0         |
| Foundation     | 5      | 5      | 0         |
| Implementation | 8      | 8      | 0         |
| Testing        | 4      | 4      | 0         |
| **Total**      | **20** | **20** | **0**     |

***

## Setup (3 tasks)

Initial configuration and environment preparation.

* [x] T001 \[S1303] Verify Phase 13 prerequisites, Node 26.2.0+ PATH, and existing metadata placeholder evidence (`.spec_system/specs/phase13-session03-seo-metadata-and-static-site-plumbing/implementation-notes.md`)
* [x] T002 \[S1303] Inspect current Astro static config, RSS dependency, and sitemap integration posture (`public-website/astro.config.mjs`)
* [x] T003 \[S1303] Create SEO component and helper directories for static metadata deliverables (`public-website/src/components/seo/`)

***

## Foundation (5 tasks)

Core structures and base implementations.

* [x] T004 \[S1303] \[P] Create central site configuration with domain, demo/docs/contact URLs, default metadata, and temporary reviewed social image path (`public-website/src/data/site.ts`)
* [x] T005 \[S1303] \[P] Create canonical URL and robots helpers with normalized paths and absolute URL output (`public-website/src/lib/metadata.ts`)
* [x] T006 \[S1303] \[P] Create JSON-LD component for Organization, WebSite, and SoftwareApplication payloads with typed contract validation (`public-website/src/components/seo/JsonLd.astro`)
* [x] T007 \[S1303] Create SEO component for title, description, canonical, robots, Open Graph, Twitter card, RSS, and manifest tags with default and override states (`public-website/src/components/seo/Seo.astro`)
* [x] T008 \[S1303] Wire BaseLayout to the SEO component and remove duplicated head metadata while preserving noindex support (`public-website/src/layouts/BaseLayout.astro`)

***

## Implementation (8 tasks)

Main feature implementation.

* [x] T009 \[S1303] Pass optional canonical, robots, and social metadata props through the content layout (`public-website/src/layouts/ContentLayout.astro`)
* [x] T010 \[S1303] Pass legal noindex and metadata overrides through the legal layout without implying hosted policy acceptance workflows (`public-website/src/layouts/LegalLayout.astro`)
* [x] T011 \[S1303] \[P] Add robots file that allows normal crawl, references sitemap, and avoids private or non-existent paths (`public-website/public/robots.txt`)
* [x] T012 \[S1303] \[P] Add web manifest with app identity, theme colors, display posture, and favicon references (`public-website/public/site.webmanifest`)
* [x] T013 \[S1303] \[P] Verify or refine favicon SVG metadata and accessibility labeling without promoting unreviewed brand media (`public-website/public/favicon.svg`)
* [x] T014 \[S1303] Add RSS route foundation with absolute URLs, empty-feed safety, and no draft inclusion until content collections arrive (`public-website/src/pages/rss.xml.js`)
* [x] T015 \[S1303] Update homepage metadata inputs to use explicit canonical/default copy from the site config with accessible external link context (`public-website/src/pages/index.astro`)
* [x] T016 \[S1303] Verify Astro static output, site URL, MDX, sitemap, and RSS package posture without adding server adapters or analytics (`public-website/astro.config.mjs`)

***

## Testing (4 tasks)

Verification and quality assurance.

* [x] T017 \[S1303] Run package typecheck and fix metadata typing issues with the Node 26.2.0+ toolchain (`public-website/tsconfig.json`)
* [x] T018 \[S1303] Run package build and inspect generated index, sitemap, RSS, robots, and manifest outputs (`public-website/dist/index.html`)
* [x] T019 \[S1303] Run focused Biome lint/format checks for website metadata files and session artifacts (`public-website/src/components/seo/Seo.astro`)
* [x] T020 \[S1303] Validate ASCII/LF encoding and record SEO/static plumbing verification notes (`.spec_system/specs/phase13-session03-seo-metadata-and-static-site-plumbing/implementation-notes.md`)

***

## Completion Checklist

Before marking session complete:

* [x] All tasks marked `[x]`
* [x] All tests passing
* [x] All files ASCII-encoded
* [x] `implementation-notes.md` updated
* [x] Ready for the validate workflow step

***

## Next Steps

Run the implement workflow step to begin AI-led implementation.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase13-session03-seo-metadata-and-static-site-plumbing/tasks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
