docs(32): split SEO into phase 32 and a large phase 33
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Phase 32: SEO foundation - Context
|
||||
|
||||
**Gathered:** 2026-10-24
|
||||
**Status:** Ready for planning. On 2026-10-25 Jakub resolved the phase split (Q-01), confirmed D-32 and set the code layout (section 0, D-90 to D-97).
|
||||
**Status:** Ready for planning. On 2026-10-25 Jakub resolved the phase split (Q-01: 32 plus a large 33), confirmed D-32 and set the code layout (section 0, D-90 to D-97).
|
||||
**Participant:** Dawid (SEO specialist, delegated by Jakub for the SEO discussion). The discussion was in Polish; every decision below is recorded in English.
|
||||
|
||||
<domain>
|
||||
@@ -43,25 +43,28 @@ Out of scope: e-commerce structured data and product or category shop pages (no
|
||||
## Implementation Decisions
|
||||
|
||||
### Phase split (resolved)
|
||||
- **Q-01 (resolved by Jakub, 2026-10-25): three consecutive phases.** Dawid left the split to Jakub. Each phase delivers a working slice that can ship to Płytarium, and every decision in this document applies to all three:
|
||||
- **Q-01 (resolved by Jakub, 2026-10-25): two consecutive phases, the second one large.** Dawid left the split to Jakub. Every decision in this document applies to both phases:
|
||||
- **32 Foundation:**
|
||||
- the three framework seams (D-91 to D-93), with the field placement rules of D-91;
|
||||
- `sm-seo-plugin` core: data model, SEO tab, global settings;
|
||||
- meta, canonical, robots;
|
||||
- redirects, URL normalisation, strict URLs;
|
||||
- robots.txt, MCP tools, history.
|
||||
- **33 Output:**
|
||||
|
||||
The seams are one-way framework API. Phase 32 ends with a framework release tag, and Phase 33 builds on that tagged version rather than on a `replace`.
|
||||
- **33 Output, audit and content** (about 12–15 plans):
|
||||
- `sm-sitemap-plugin` rewrite (D-32): XML and HTML sitemaps;
|
||||
- page registry;
|
||||
- JSON-LD, pagination, hreflang;
|
||||
- headings, breadcrumbs;
|
||||
- the Nuxt SEO layer and the SSR rules in the layers.
|
||||
- **34 Audit and content:**
|
||||
- the Nuxt SEO layer and the SSR rules in the layers;
|
||||
- crawler and issue report;
|
||||
- internal linking and auto-links;
|
||||
- media (alt, file names, formats).
|
||||
|
||||
ROADMAP.md still lists one Phase 32 with the full scope. Before `/msd-plan-phase 32`, narrow Phase 32 and add Phases 33 and 34 through `/msd-phase`, with their g15office tasks. The planner must not split or merge phases on its own.
|
||||
**Exception to the lean-planning rule, approved by Jakub:** Phase 33 is planned as many smaller plans instead of a few large ones, so the planner must not merge them into 3–4 plans. The other project rules still apply: the plan list with a one-line scope each is shown to Jakub before PLAN.md files are written, and unit tests are the last plan.
|
||||
|
||||
ROADMAP.md still lists one Phase 32 with the full scope. Before `/msd-plan-phase 32`, narrow Phase 32 and add Phase 33 through `/msd-phase`, with its g15office task. The planner must not split or merge phases on its own.
|
||||
|
||||
### 0. Code layout (Jakub, 2026-10-25)
|
||||
- **D-90:** **The framework carries no SEO code.** SEO lives in two shared plugins: a new `sm-seo-plugin` (Golem15.SEO) and an updated `sm-sitemap-plugin` (Golem15.Sitemap). The framework gets only the generic seams those plugins need (D-91 to D-93); none of them names SEO, and each is useful to other plugins. The pattern is the PixelPixel `mpseo` WinterCMS plugin (see Reference implementations):
|
||||
@@ -90,7 +93,7 @@ Out of scope: e-commerce structured data and product or category shop pages (no
|
||||
- a job that creates missing entries (the `mpseo` GenerateSeoEntriesJob), run through `conga`;
|
||||
- the frontend API: effective SEO by URL, redirects, robots.txt, llms.txt, verification files, JSON-LD `@graph`, breadcrumbs;
|
||||
- admin widgets: the result preview, the placeholder list, revisions;
|
||||
- MCP through `pier` from its admin routes, plus CSV import/export and the issue report; the crawler (Phase 34) lives here too.
|
||||
- MCP through `pier` from its admin routes, plus CSV import/export and the issue report; the crawler (Phase 33) lives here too.
|
||||
- **D-95:** **`sm-sitemap-plugin` (Golem15.Sitemap)** produces the sitemaps of D-30, D-31 and D-34 from signpost (D-93). It knows nothing about SEO: it defines its own small filter interface (exclude a URL, noindex, `lastmod` override) and looks it up with `app.Lookup`. `sm-seo-plugin` implements it and requires Sitemap (`Requires()`); Sitemap works without SEO.
|
||||
- **D-96:** **Content plugins keep only their own fixes.** Journal gets the translated-slug fix (D-58), the H1 → H2 conversion (D-50), its schema types and the D-93 descriptors. It does not depend on the SEO plugin.
|
||||
- **D-97:** **The Nuxt side is one new shared layer** (`vue-seo-layer`, name to confirm): `<head>` from the effective-SEO API, redirect middleware, JSON-LD, breadcrumbs, the SSR build guard (D-70). Journal, menu and FAQ layers and the apps extend it.
|
||||
|
||||
Reference in New Issue
Block a user