Untitled Session
2026-05-25 20:19 UTC · 27 messages · cli
You2026-05-25 20:21 UTC
Re-review the updated SEO Project Brief at /root/.hermes/plans/pb-m9-seo.md
Read the updated PB and your previous review. Verify that ALL findings from your first review have been adequately addressed:
1. **P0-01**: Migration cleanup strategy for 5 old tables — is it complete and correct?
2. **P0-02**: `injectPageSchema()` → `renderSchema()` approach for non-WP catalog pages — does it actually solve the problem?
3. **P0-03**: Rank Math Schema Templates limitation for non-WP post types — properly documented and worked around?
4. **MOD-01**: `rank_math_update_sitemap()` replaced with viable alternative?
5. **MOD-02**: Breadcrumb coverage corrected from ~70% to 90%+?
6. **MOD-03**: Core Web Vitals impact assessment added?
7. **MOD-04**: Canonical URL strategy added?
8. **MOD-05**: Pagination SEO added?
9. **MIN-02**: Image SEO added?
10. **MIN-04**: Tone taxonomy registration location clarified?
11. Programmatic form confirmation page exclusion addressed?
Also check for any NEW issues introduced by the fixes.
Issue a new verdict: GREEN LIGHT (ready to build), YELLOW LIGHT (minor remaining issues), or RED LIGHT (still has P0 problems).
Save the re-review alongside the PB at /root/.hermes/plans/pb-m9-seo-sgs-rereview.md
Donna2026-05-25 20:21 UTC
Tool2026-05-25 20:21 UTC
{"content": " 1|# Project Brief: Module 9 — SEO\n 2|\n 3|**Document ID:** PB-M9-SEO-001\n 4|**Author:** SA\n 5|**Date:** 2026-05-25\n 6|**Status:** DRAFT — Pending Profe greenlight\n 7|**Build Plan Source:** pb-complete.md (lines 890-957), features-brief.md\n 8|**Deck...
Tool2026-05-25 20:21 UTC
{"content": " 1|# SGS Review: Module 9 — SEO (PB-M9-SEO-001)\n 2|\n 3|**Reviewer:** SGS (subagent)\n 4|**Date:** 2026-05-25\n 5|**Document:** `/root/.hermes/plans/pb-m9-seo.md` (688 lines)\n 6|**Context sources:**\n 7|- `/root/.hermes/plans/pb-complete.md` (original build...
Donna2026-05-25 20:21 UTC
Let me read the rest of the updated PB and search for the specific fixes.
Tool2026-05-25 20:21 UTC
{"content": " 501|namespace Profe\\SeoBridge;\n 502|\n 503|interface SeoBridgeInterface\n 504|{\n 505| /**\n 506| * Get or create SEO metadata for a custom content entity.\n 507| */\n 508| public function getMetadata(string $entityType, int $entityId): ?array;\n 509| ...
Donna2026-05-25 20:21 UTC
Now let me do targeted searches to verify specific changes I need to confirm.
Tool2026-05-25 20:21 UTC
{"total_count": 3, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 286, "content": "**Custom code needed:** A Profe event listener that triggers Rank Math sitemap regeneration when community content is published/updated (`profe/community/post_published` event → clear Rank Math sitem...
Tool2026-05-25 20:21 UTC
{"total_count": 0}
Tool2026-05-25 20:21 UTC
{"total_count": 5, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 24, "content": "| Breadcrumbs (90%+ coverage) | ✅ Yes — built-in breadcrumb module |"}, {"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 385, "content": "**Breadcrumbs (90%+ coverage):** Rank Math breadcrumbs con...
Tool2026-05-25 20:21 UTC
{"total_count": 4, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 117, "content": "**Approach:** Add a **down-migration** (e.g., M064) that drops all 5 old tables BEFORE the new M065 creates the rebuilt `profe_seo_metadata`. The `CREATE TABLE IF NOT EXISTS` in M065 would silently s...
Donna2026-05-25 20:21 UTC
Tool2026-05-25 20:21 UTC
{"total_count": 5, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 320, "content": "#### PAGINATION: SEO Considerations for Paginated Content"}, {"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 326, "content": "- Use `<link rel=\"next\">` and `<link rel=\"prev\">` for paginated ...
Tool2026-05-25 20:21 UTC
{"total_count": 10, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 50, "content": "- `CoreUsersInterface` is the canonical access layer — direct profe_users queries are FAULT-002 workarounds (documented with `// FAULT-002 workaround` comments)"}, {"path": "/root/.hermes/plans/pb-m9...
Tool2026-05-25 20:21 UTC
{"total_count": 7, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 345, "content": "**Image SEO (cross-cutting):** All pages should have:"}, {"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 346, "content": "- Unique `og:image` per page (stored in `profe_seo_metadata.og_image_url...
Tool2026-05-25 20:21 UTC
{"total_count": 5, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 71, "content": "- Listeners registered in Module.php `boot()` or `register()` via `EventBusInterface::listen(name, callable)`"}, {"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 75, "content": "- Methods: `getNam...
Donna2026-05-25 20:21 UTC
Tool2026-05-25 20:21 UTC
{"total_count": 8, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 21, "content": "| XML Sitemaps with per-post-type exclude/include | ✅ Yes — fine-grained control, exclude confirmation pages |"}, {"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 93, "content": "| Module 8 (form_...
Tool2026-05-25 20:21 UTC
{"total_count": 2, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 626, "content": "| 09-19 | SEO Testing & QA | Verify all schema markup via Google Rich Results Test. Verify sitemap validity. Test breadcrumbs on all page types. Run Core Web Vitals baseline test (Lighthouse/PageSpee...
Tool2026-05-25 20:21 UTC
{"total_count": 3, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 257, "content": "These pages are NOT WP post types, so Rank Math Pro Schema Templates cannot apply. Schema is injected by `seo_bridge` via Profe's rendering pipeline (direct injection, not `wp_head` — see §4). Exampl...
Donna2026-05-25 20:21 UTC
Now let me verify the DDL for correctness and check one more edge case.
Tool2026-05-25 20:21 UTC
{"content": " 468|```sql\n 469|CREATE TABLE IF NOT EXISTS `profe_seo_metadata` (\n 470| `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,\n 471| `entity_type` VARCHAR(50) NOT NULL COMMENT 'Content type: catalog_series, catalog_season, catalog_episode, libra...
Donna2026-05-25 20:21 UTC
All verifications are complete. Let me also check one more thing — the DDL syntax carefully.
Tool2026-05-25 20:21 UTC
{"total_count": 1, "matches": [{"path": "/root/.hermes/plans/pb-m9-seo.md", "line": 481, "content": " `sitemap_changefreq VARCHAR(20) NULL COMMENT 'Override sitemap change frequency: always, hourly, daily, weekly, monthly, yearly, never',"}]}
Donna2026-05-25 20:21 UTC
I found a DDL syntax error. Let me now create the comprehensive re-review document.
Tool2026-05-25 20:21 UTC
{"bytes_written": 13905, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-25 20:21 UTC
## Summary
### What I did
Read the updated PB (759 lines) and my previous review (344 lines), verified all 11 findings from the first review against the updated document, checked for new issues, and saved the re-review to `/root/.hermes/plans/pb-m9-seo-sgs-rereview.md`.
### What I found
**All 10 prior findings are adequately addressed:**
| Finding | Verdict |
|---------|---------|
| P0-01 (migration cleanup) | ✅ Complete — M064 drop + M065 create sequence, directory deletes |
| P0-02 (wp_head + catalog pages) | ✅ `renderSchema()` called explicitly from templates, NOT `wp_head` |
| P0-03 (Schema Templates ≠ catalog) | ✅ Cards 09-05/09-06/09-07 clearly distinguish WP CPT vs catalog |
| MOD-01 (bogus function) | ✅ `delete_option('rank_math_sitemap_cache')` documented as alternative |
| MOD-02 (70% breadcrumbs) | ✅ Raised to 90%+, exclusions defined (404s, dashboards, admin-only) |
| MOD-03 (Core Web Vitals) | ✅ New risk entry with specific mitigation steps |
| MOD-04 (canonical URLs) | ✅ Per-content-type canonical rules, storage in table |
| MOD-05 (pagination SEO) | ✅ Full pagination strategy section with 5 rules |
| MIN-02 (image SEO) | ✅ Cross-cutting section + `og_image_url` column + FS-02 |
| MIN-04 (tone taxonomy) | ✅ Explicitly assigned to `seo_bridge.boot()` via `register_taxonomy()` |
| Form confirmation exclusion | ✅ Programmatic via `rank_math/sitemap/exclude_post_ids` filter |
**One NEW issue found:** Line 481 has a DDL syntax error — the `sitemap_changefreq` column is missing a closing backtick:
```sql
-- BROKEN (current):
`sitemap_changefreq VARCHAR(20)
-- FIXED:
`sitemap_changefreq` VARCHAR(20)
```
This would cause a MySQL syntax error if the DDL is copied verbatim into the migration file.
**Remaining unaddressed items (all non-blocking):** MIN-03 (single citation placeholder), KPI measurement framework, Rank Math Pro cost — none of these were classified as blocking in the original review.
### Verdict: YELLOW LIGHT
**One fix required:** Add the missing backtick on `sitemap_changefreq` (line 481), then this is GREEN LIGHT. Phase 9A (Rank Math install/config) can proceed immediately since it's independent of the DDL.
### Files created
- `/root/.hermes/plans/pb-m9-seo-sgs-rereview.md` — full re-review document (14KB)