# tasks

id: t_bfe1db04
title: 03 prd: AI Coding Pricing Hub PRD v1 and route contract
assignee: moce
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_bfe1db04
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:03 prd: AI Coding Pricing Hub PRD v1 and route contract
skills: ["projects/site-building"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read parents research + SEO. Deliver:
- Full PRD: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/prd/prd-aicodingpricing-20260521.md
- Route Contract: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/prd/route-contract.json
- Product scope: hub + calculators + comparison pages + pricing/limits changelog + newsletter capture.
- Define Competitive Minimum, core user tasks, NOT-DO, IA, acceptance criteria, analytics events.
- Must include SEO-Copy Freeze requirements and downstream handoff summary.
- Metadata: prd_path, route_contract_path, site_type, user_tasks, not_do, downstream_inputs.


id: t_2467e60c
title: 04 pricing: monetization and pricing strategy for AI coding pricing hub
assignee: mozhang
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_2467e60c
tenant: site-aicodingpricing-20260521
skills: ["projects/site-pricing"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read PRD. Deliver:
- Pricing/monetization report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/pricing/pricing-report.md
- Decide whether v1 should monetize via newsletter/affiliate/sponsorship/Pro alerts/API export; do not force Stripe if not justified.
- Define free vs paid gates if any, cost model, ROI scenarios, conversion CTAs.
- Metadata: pricing_report_path, monetization_model, free_limits, paid_limits, risks.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.

idempotency_key:
site-aicodingpricing-20260521:04 pricing: monetization and pricing strategy for AI coding pricing hub


id: t_ed27bf00
title: 05 compliance: trademark, affiliate, pricing-data and policy constraints
assignee: modun
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_ed27bf00
tenant: site-aicodingpricing-20260521
skills: ["compliance-review"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read PRD. Deliver:
- Compliance/IP policy report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/compliance/compliance-report.md
- Cover brand/trademark nominative fair use for Claude Code, Codex, Cursor, GitHub Copilot; disclaimers; logo/material policy; pricing-data freshness disclaimers; affiliate disclosure; privacy/ToS requirements.
- Define prohibited copy and required footer/page disclaimers.
- Metadata: compliance_report_path, forbidden_claims, required_disclaimers, policy_pages, risks.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.

idempotency_key:
site-aicodingpricing-20260521:05 compliance: trademark, affiliate, pricing-data and policy constraints


id: t_14f52354
title: 06 copy: SEO-Copy Freeze for all indexable pages
assignee: mobi
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_14f52354
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:06 copy: SEO-Copy Freeze for all indexable pages
skills: ["site-copy"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read PRD + pricing + compliance. Deliver:
- SEO-Copy Freeze package: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/copy/seo-copy-freeze.md and machine-readable /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/copy/page-copy-matrix.json
- For every indexable route: final H1/H2/H3, above-fold copy, sections, FAQ, schema copy, target word count, density/semantic coverage, design placement priority.
- Must not omit SEO body due to design concerns; mark fold/collapse/lower-page placement instead.
- Metadata: seo_copy_frozen=true, copy_matrix_path, word_count_targets, indexable_routes, artifact_paths.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_ea50ca95
title: 07 design: Stitch high-fidelity design based on frozen copy
assignee: moying
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_ea50ca95
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:07 design: Stitch high-fidelity design based on frozen copy
skills: ["projects/site-design"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read SEO-Copy Freeze package. Use official Stitch SDK where available. Deliver:
- Design handoff: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/design/HANDOFF.md
- Content-fit matrix: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/design/content-fit-matrix.md
- Stitch/screen index: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/stitch/screen-index.json
- Desktop + mobile HTML/screenshots for homepage, pricing pages, comparison page, changelog, calculator states, newsletter capture.
- Do not delete/cut frozen copy. Use accordions, lower sections, cards, tabs, drawers.
- Metadata: artifact_paths, stitch_project, screen_index, content_fit_matrix, verification.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_e6ac989f
title: 08 backend/data: pricing dataset, changelog schema, calculator logic
assignee: moshu
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_e6ac989f
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:08 backend/data: pricing dataset, changelog schema, calculator logic
skills: ["projects/backend-site-build"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read PRD + pricing + compliance. Deliver machine-readable data contract for frontend:
- /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/data/frontend-contract.json
- pricing/providers seed data with source/provenance/freshness fields
- calculator formulas for subscription vs API vs seat cost comparisons
- changelog schema and update workflow
- If live scraping/API is unsafe or unavailable, create honest manual-update data model and freshness UI requirements.
- Metadata: frontend_contract_path, data_files, update_policy, source_policy, verification.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_9085ad91
title: 09 frontend: implement AI Coding Pricing site on Cloudflare stack
assignee: mojie
status: done
created_by: xiaomo-host
workspace_kind: dir
workspace_path: /root/projects
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:09 frontend: implement AI Coding Pricing site on Cloudflare stack
skills: ["projects/frontend-site-build"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read design + backend/data contract. Build under /root/projects/aicodingpricing unless an existing repo is found.
Hard requirements:
- Next.js/Astro on Cloudflare Pages per fleet convention.
- Implement route matrix, canonical redirects, calculators, comparison tables, changelog, newsletter capture shell, policy pages.
- Mobile-first, no horizontal overflow at 390/430px.
- Commit + push + deploy from same commit; provide Crawler Hints evidence if deployment/CF zone is configured here.
- Metadata: repo_path, commit_sha, pushed_branch, deploy_url, deployment_source_commit, git_status_after, crawler_hints_evidence.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_0b4bdc72
title: 10 seo recheck: technical SEO/GEO after implementation
assignee: moyin
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_0b4bdc72
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:10 seo recheck: technical SEO/GEO after implementation
skills: ["projects/site-seo-review"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read frontend deployment metadata. Deliver:
- Technical SEO/GEO recheck: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/seo/final-seo-recheck.md
- Verify sitemap, robots, canonical/redirects, schema, metadata, index/noindex, internal links, page content depth, AI citation blocks.
- Metadata: seo_verdict=GO|NO_GO, blockers, artifact_paths, verified_routes.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_95daa803
title: 11 compliance recheck: production policy/trademark/privacy verification
assignee: modun
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_95daa803
tenant: site-aicodingpricing-20260521
skills: ["compliance-review"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read frontend deployment metadata. Deliver:
- Final compliance recheck: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/compliance/final-compliance-recheck.md
- Verify disclaimers, no official affiliation claims, logo usage, affiliate disclosure if any, privacy/terms pages, cookie/analytics disclosures.
- Metadata: compliance_verdict=GO|NO_GO, blockers, artifact_paths.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.

idempotency_key:
site-aicodingpricing-20260521:11 compliance recheck: production policy/trademark/privacy verification


id: t_f1758ded
title: 12 pm acceptance: product gate before QA
assignee: moce
status: done
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_f1758ded
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:12 pm acceptance: product gate before QA
skills: ["projects/site-building"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read PRD, frontend, SEO recheck, compliance recheck. Deliver:
- PM acceptance report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/pm/product-acceptance.md
- Verdict must be PM_GO / PM_CONDITIONAL_GO / PM_NO_GO.
- Verify PRD still holds, competitive minimum, real user tasks, scope not downgraded, residual risks.
- Metadata: pm_verdict, competitive_minimum_verdict, verified_user_tasks, blocker_count, next_gate=motest_qa.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_108bbf98
title: 13 qa: real-user-task final QA for AI Coding Pricing site
assignee: motest
status: blocked
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_108bbf98
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:13 qa: real-user-task final QA for AI Coding Pricing site
skills: ["projects/site-qa"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read PM acceptance and production/preview URL. Deliver:
- QA report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/qa/final-qa.md
- Test homepage, calculators, pricing pages, comparison pages, changelog, newsletter capture, mobile 390/430, redirects/canonical pairs.
- Use browser where needed. QA_GO alone does not unlock launch; owner review gate follows.
- Metadata: qa_verdict=QA_GO|QA_NO_GO, p0_issues, p1_issues, verified_routes, screenshots, artifact_paths.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_793aae51
title: 14 owner review gate: wait for Meng Jian approval before launch
assignee: moce
status: blocked
created_by: xiaomo-host
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_793aae51
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:14 owner review gate: wait for Meng Jian approval before launch
skills: ["projects/site-building"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Read QA report. Send/prepare owner-facing review summary with URL, core pages/tasks, QA verdict, P0/P1/P2 issues, residual risks, explicit reply options.
Then block with WAITING_OWNER_SITE_APPROVAL unless user approval is already explicitly present for this exact deployment.
Metadata when approved must include owner_approval=confirmed.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_483a4cad
title: 15 launch: GSC/Bing submission, Crawler Hints verification, cold start package
assignee: moyun
status: ready
created_by: xiaomo-host
workspace_kind: scratch
tenant: site-aicodingpricing-20260521
skills: ["projects/site-launch"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

Only proceed after owner approval metadata. Deliver:
- Launch report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/launch/launch-report.md
- Verify production, Cloudflare Crawler Hints checked/value=true, submit sitemap to GSC/Bing if property access exists, prepare cold-start/listing/newsletter package.
- External publishing/submission that posts publicly must wait for explicit owner confirmation if not already covered.
- Metadata: launch_verdict, production_url, crawler_hints_evidence, gsc_status, bing_status, cold_start_package, artifact_paths.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.

idempotency_key:
site-aicodingpricing-20260521:15 launch: GSC/Bing submission, Crawler Hints verification, cold start package


id: t_7a263660
title: 16 data review: post-launch metrics watch and iterate/kill/scale setup
assignee: moxi
status: todo
created_by: xiaomo-host
workspace_kind: scratch
tenant: site-aicodingpricing-20260521
skills: ["projects/site-data-review"]
body:
GOAL MODE / 严格目标模式：你是 Hermes Kanban 做站流水线专职 Agent；不闲聊、不泛泛建议、不跳步。必须先加载并遵守绑定 skill；缺关键输入就 block，不得编造；完成时写 structured summary + JSON metadata。

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: aicodingpricing.com（用户已注册）
Tenant: site-aicodingpricing-20260521
Target: US / English
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
User-confirmed input file: /tmp/aicodingpricing_input_20260521.md

核心约束：
- 主域名是通用 Hub；品牌词只做页面 slug，不做主域名。
- SEO 主入口是 Claude Code / Codex / Cursor / Copilot pricing、usage、limits、vs 对比词；calculator 是转化和停留工具，不是主词。
- 品牌词页面必须是事实性、对比性、nominative fair use；不得冒充官方，不得使用未授权 logo/商标素材。
- pricing/limits 更新频繁，必须设计 changelog/freshness/newsletter 机制。
- SEO-Copy Freeze Gate：所有 indexable 页面的 final copy、H1/H2/H3、FAQ、schema、目标词数必须在设计前冻结。
- Cloudflare Crawler Hints 是上线前硬闸门；部署阶段必须提供 checked/value=true evidence。
- 任何代码/部署任务必须 commit + push + deploy，同一 commit 验证生产/preview。

用户输入摘要：
# AI Coding Pricing / Cost Hub — 用户确认输入

- Domain: `aicodingpricing.com`（用户已注册）
- Target market: US / English
- Data source: DataForSEO Google Ads, US / English, trailing 12 months
- Strategic rule: 主域名不能用品牌词；通用域名做 Hub，品牌词只放页面 slug。
- Core thesis: 不靠 `ai coding cost calculator` 泛词起量；真正入口是品牌 pricing / usage / limits / vs 对比词。Calculator 用来提高停留、转化和差异化；changelog 抢更新型长尾；newsletter 承接反复变化的 pricing / limits。

## Keyword cluster

- claude code pricing: 27,100/mo, CPC $6.42, competition LOW, KD 13. Judgment: 主入口，必须抢
- cursor pricing: 12,100/mo, CPC $2.92, competition LOW, KD 18. Judgment: 可做，但官方/已有内容较多
- claude code vs cursor: 8,100/mo, CPC $17.46, competition LOW, KD 0. Judgment: 高优先级对比页
- codex vs claude code: 8,100/mo, CPC $93.36, competition LOW, KD 14. Judgment: 极高商业意图
- codex usage: 6,600/mo, CPC $41.54, competition LOW, KD 3. Judgment: explain + calculator
- cursor vs claude code: 6,600/mo, CPC $23.12, competition LOW, KD 0. Judgment: 同义页/别名页覆盖
- claude code cost: 4,400/mo, CPC $11.40, competition LOW, KD 49. Judgment: 有量但难
- claude code vs codex: 3,600/mo, CPC $166.84, competition LOW, KD 11. Judgment: 超高价值页
- codex pricing: 3,600/mo, CPC $25.97, competition MEDIUM, KD 5. Judgment: 主入口之一
- claude code limits: 1,300/mo, CPC $15.76, competition LOW, KD 28. Judgment: 长尾入口
- claude code usage limits: 880/mo, CPC $20.11, competition LOW, KD 26. Judgment: FAQ + calculator
- codex limits: 590/mo, CPC $50.61, competition LOW. Judgment: 小但值钱
- llm pricing calculator: 30/mo, CPC $3.32. Judgment: 只能辅助页

Total stated cluster search volume: ~97.5K/mo.

## Domain strategy

Registered chosen domain: `aicodingpricing.com`.
Avoid brand-term domains: `claudecodepricing.com`, `codexpricing.com`, `claudevscodex.com`, `chatgptcodexlimits.com`.

## Proposed URL matrix

- `/` — AI Coding Cost Calculator / headline: "Compare AI coding tool costs before you upgrade"
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/claude-code-cost`
- `/codex-pricing`
- `/codex-usage`
- `/codex-limits`
- `/claude-code-vs-codex`
- `/codex-vs-claude-code` — 301 or canonical to `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/cursor-vs-claude-code` — 301 or canonical to `/claude-code-vs-cursor`
- `/codex-vs-cursor`
- `/cursor-pricing`
- `/github-copilot-pricing` — P1, harder
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/api-vs-subscription`
- `/pricing-changelog`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`

## Product direction

- Hub + calculator + comparison + changelog + newsletter.
- Must handle branded pages carefully: factual, nominative fair use, no official affiliation, no logo misuse unless safe.
- Pricing/limits change frequently; freshness/changelog is core product value.
- Design/copy must not bury SEO content; SEO-Copy Freeze required before Stitch design.
- Cloudflare Crawler Hints is a launch hard gate.

After launch, set up first review package:
- Analytics/event plan verification
- 7/14/30 day review criteria for keyword ranking, traffic, calculator usage, newsletter conversion
- Create follow-up tasks if early data needs fixes.
Metadata: review_plan_path, metrics, thresholds, next_review_schedule.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5866` (`做站 · aicodingpricing`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5866', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.

idempotency_key:
site-aicodingpricing-20260521:16 data review: post-launch metrics watch and iterate/kill/scale setup


id: t_64346f98
title: [CONT] [SDK Clean 08 墨运] 上线 + GSC/Bing + 冷启动，仅在 PM_GO + QA_GO 后
assignee: moyun
status: blocked
created_by: budget-continuation-watchdog
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_64346f98
tenant: site-rerun-subnautica2maps-20260520-stitch-sdk-clean
idempotency_key: budget-continuation-t_208b5a7d
skills: ["projects/site-launch"]
body:
GOAL MODE / automatic narrow continuation after iteration-budget exhaustion.

Original task: `t_208b5a7d`
Original title: [SDK Clean 08 墨运] 上线 + GSC/Bing + 冷启动，仅在 PM_GO + QA_GO 后
Original assignee: `moyun`
Original latest summary: Iteration budget exhausted (60/60) — task could not complete within the allowed iterations
Original parents reused for this continuation: `t_5dba8672`

This is NOT a restart. Continue from the artifacts, repo/workspace state, logs, and dirty changes produced by `t_208b5a7d`. First inspect the original task log and current workspace, then finish only the missing closeout work.

Required actions:
1. Read original task details/logs: `hermes kanban --board site-factory show t_208b5a7d --json` and board log if present.
2. Inspect workspace/repo state and existing artifacts before changing anything.
3. Preserve useful completed work; remove accidental/generated noise.
4. Run the original acceptance gates that are still missing.
5. If code was modified: complete the full sync loop — `git status --short` before/after, lint/build/test/verify, conventional commit, push, deploy from the same commit, production/preview smoke.
6. Complete this continuation with structured metadata: `continued_from`, `artifact_paths`, `verification`, `commit_sha` if applicable, `deploy_url` if applicable, `git_status_after`, `residual_risk`, `next_inputs`.
7. If blocked, block with the exact failing command/output and what owner/profile must fix.

Downstream tasks originally waiting on `t_208b5a7d` at creation time:
- `t_c5d9d511` todo @moxi: [SDK Clean 09 墨析] 数据复盘口径接管：上线后指标与地图使用事件

The budget-continuation watchdog may rewire non-terminal children from the exhausted task to this continuation. Do not mark the original exhausted task done just to unlock children.

[HOST VISIBILITY OVERRIDE / DO NOT IGNORE]
- Project topic target: `telegram:-1003750190535:5867` (`做站 · subnautica2maps`)。
- All START / STATUS / DONE / BLOCKED progress must be sent there with `send_message(action='send', target='telegram:-1003750190535:5867', message='...')`.
- Do not DM Meng Jian for pipeline progress. Do not send this project's progress to the generic 做站流水线 or 做站复盘 topic unless explicitly asked.
- If `send_message` fails, write the error into Kanban comment/block; do not silently complete.


id: t_7819a420
title: [Frontend Follow-up 墨介] Apply Subnautica2Maps inner-page Stitch design refresh
assignee: mojie
status: blocked
created_by: moying
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_7819a420
tenant: site-rerun-subnautica2maps-20260520-stitch-sdk-clean
skills: ["projects/frontend-site-build"]
body:
Parent design refresh: t_13066796.

Use the new Subnautica2Maps inner-page Stitch design refresh package as visual guidance for frontend iteration.

Artifacts:
- /root/.hermes/kanban/boards/site-factory/workspaces/t_13066796/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/design-refresh-inner-pages/HANDOFF.md
- /root/.hermes/kanban/boards/site-factory/workspaces/t_13066796/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/design-refresh-inner-pages/content-fit-matrix.md
- /root/.hermes/kanban/boards/site-factory/workspaces/t_13066796/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/design-refresh-inner-pages/stitch-screen-index.json
- HTML visual truths under html/ and screenshots under screens/.

Priority implementation targets:
1. /map bottom-sheet density at 390px and marker density at 1440px, matching QA residual P2 items.
2. Resource detail template hierarchy: answer-first, filtered-map CTA, coordinate table, source/provenance, route clue.
3. Guides and policy pages: preserve distinct answer/task/legal/privacy/terms hierarchy from the handoff.

Constraints:
- Do not add unimplemented /biomes, /blueprints, /locations routes to sitemap until route + data + copy exist.
- Do not use official game assets, copied tiles, official logos/key art/screenshots, or hotlinked thumbnails.
- Commit/push/deploy must be source-synced if code changes are made.


id: t_c176e3f9
title: [CONT] [Frontend Follow-up 墨介] Apply Subnautica2Maps inner-page Stitch design refresh
assignee: mojie
status: done
created_by: budget-continuation-watchdog
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_c176e3f9
tenant: site-rerun-subnautica2maps-20260520-stitch-sdk-clean
idempotency_key: budget-continuation-t_7819a420
skills: ["projects/frontend-site-build"]
body:
GOAL MODE / automatic narrow continuation after iteration-budget exhaustion.

Original task: `t_7819a420`
Original title: [Frontend Follow-up 墨介] Apply Subnautica2Maps inner-page Stitch design refresh
Original assignee: `mojie`
Original latest summary: Iteration budget exhausted (60/60) — task could not complete within the allowed iterations
Original parents reused for this continuation: `t_13066796`

This is NOT a restart. Continue from the artifacts, repo/workspace state, logs, and dirty changes produced by `t_7819a420`. First inspect the original task log and current workspace, then finish only the missing closeout work.

Required actions:
1. Read original task details/logs: `hermes kanban --board site-factory show t_7819a420 --json` and board log if present.
2. Inspect workspace/repo state and existing artifacts before changing anything.
3. Preserve useful completed work; remove accidental/generated noise.
4. Run the original acceptance gates that are still missing.
5. If code was modified: complete the full sync loop — `git status --short` before/after, lint/build/test/verify, conventional commit, push, deploy from the same commit, production/preview smoke.
6. Complete this continuation with structured metadata: `continued_from`, `artifact_paths`, `verification`, `commit_sha` if applicable, `deploy_url` if applicable, `git_status_after`, `residual_risk`, `next_inputs`.
7. If blocked, block with the exact failing command/output and what owner/profile must fix.

Downstream tasks originally waiting on `t_7819a420` at creation time:
- none

The budget-continuation watchdog may rewire non-terminal children from the exhausted task to this continuation. Do not mark the original exhausted task done just to unlock children.


id: t_9878762b
title: [Kanban-only 墨运] Subnautica2Maps 第一波冷启动分发队列（仅准备，不发布）
assignee: moyun
status: done
created_by: xiaomo-host
workspace_kind: dir
workspace_path: /root/projects/subnautica2maps
tenant: site-rerun-subnautica2maps-20260520-stitch-sdk-clean
idempotency_key: subnautica2maps-kanban-only-distribution-queue-20260521
skills: ["projects/site-launch"]
body:
GOAL MODE / Kanban-only site-launch workflow. Do not use Telegram @bot direct dispatch for execution.

Context:
- Site: https://subnautica2maps.com
- Repo: /root/projects/subnautica2maps
- Canonical upstream owner gate: t_5dba8672 (OWNER_ACCEPTED)
- Prior launch continuation t_64346f98 had useful artifacts but was blocked on Bing/Plausible API credentials; Host has since verified Plausible by browser dashboard and event injection. Treat API 403 as not a blocker for preparing the distribution queue.
- Existing artifacts to read first:
  - /root/projects/subnautica2maps/data/subnautica2maps/baseline.md
  - /root/projects/subnautica2maps/data/subnautica2maps/cold-start-pack.md
  - /root/projects/subnautica2maps/data/subnautica2maps/experiments.md
  - /root/projects/subnautica2maps/data/subnautica2maps/moyun-distribution-baton.md
  - t_64346f98 comments/artifacts if useful

Task:
Prepare the first-wave cold-start distribution queue as a Kanban deliverable. Do NOT publish externally. Do NOT post comments/replies on Reddit/Steam/YouTube/X/HN. The output is a queue for Meng Jian approval, not execution.

Required output:
- Write a concise distribution queue file in the repo, preferably /root/projects/subnautica2maps/data/subnautica2maps/distribution-queue.md
- Include channel, exact target URL/community/thread/video if known, fit score, angle, draft copy/reference to existing copy, risk notes, and whether it needs owner approval.
- Prioritize game/player intent channels over AI directories.
- Mark `external_posts_published:false` explicitly.
- Include a recommended first batch of 3-5 actions only.
- Complete Kanban with structured metadata: artifact_paths, recommended_first_batch, external_posts_published:false, approval_required:true, residual_risk, next_inputs.

Visibility:
- Progress visibility should be through Kanban state/comments and the site topic only; no direct @ dispatch.
- If sending status to Telegram topic is available in your toolset, use target `telegram:-1003750190535:5867`; otherwise put the status in Kanban comments.


id: t_9319be77
title: Fix P0 Privacy/Terms blockers from final compliance recheck
assignee: mojie
status: done
created_by: modun
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521-policy-p0-fix
skills: ["projects/frontend-site-build"]
body:
Project: AI Coding Pricing / Cost Hub
Tenant: site-aicodingpricing-20260521
Repo: /root/projects/aicodingpricing
Production: https://aicodingpricing.com
Compliance report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/compliance/final-compliance-recheck.md

Goal: fix P0 compliance policy blockers found by 墨盾 before PM acceptance / QA.

Required changes:
1. Expand `/privacy` with:
- operator: Nextfield Labs LLC, Wyoming, or actual final operator from project context
- data categories: client-side calculator inputs, newsletter email/provider interest/source path/consent/status, contact/correction request email/message/source URL, technical logs/IP/security events, aggregate analytics if actually used
- third parties: Cloudflare; Plausible only if installed; newsletter/email provider or explicit pending/no-storage language if not implemented
- concrete retention: newsletter until unsubscribe/delete; contact/correction 24 months; server/security logs 30–90 days; aggregate analytics per provider settings
- rights: access/delete/correct/opt-out/no sale/share
- cookies: no non-essential cookies currently observed; Cloudflare strictly necessary cookies; banner required only if GA/Clarity/ad pixels/affiliate trackers are added
- contact route and MX caveat if privacy@ is used

2. Expand `/terms` with:
- operator and governing law
- independent informational service; not billing/procurement/legal/tax/financial advice
- trademark ownership / nominative fair use for Claude/Anthropic, OpenAI/Codex/ChatGPT, Cursor/Anysphere, GitHub/GitHub Copilot/Microsoft
- no warranty / limitation of liability
- affiliate/sponsored placement placeholder
- no account scraping / no private account data / no provider credentials
- copyright/trademark complaint and corrections route

3. Commit + push + deploy same source commit; verify production `/privacy` and `/terms`.

Acceptance:
- `npm run lint`, `npm run verify`, `npm run build` pass.
- Production `/privacy` and `/terms` return 200 and include the required disclosures.
- No new GA/Clarity/ad/affiliate trackers without consent gate.
- Complete with changed_files, tests_run, commit_sha, deploy_url, deployment_source_commit.


id: t_04a6402b
title: Fix SEO/GEO NO_GO blockers: schema graph + P0 content depth
assignee: mojie
status: done
created_by: moyin
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
body:
Project: AI Coding Pricing / Cost Hub
Tenant: site-aicodingpricing-20260521
Domain: https://aicodingpricing.com
Parent SEO recheck: t_0b4bdc72
Report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/seo/final-seo-recheck.md
Repo: /root/projects/aicodingpricing
Current synced commit: 2d87d351ac40e91dd98b8fc5c1dae62a331999d3

SEO verdict is NO_GO. Fix the blockers, then commit + push + deploy from the same commit.

Required fixes:
1. Implement page-specific JSON-LD graph generation:
   - `/`: WebApplication + WebSite + FAQPage
   - pricing/comparison pages: Article + FAQPage + BreadcrumbList
   - `/claude-code-usage-limits`: Article + FAQPage + HowTo + BreadcrumbList
   - `/codex-usage`: Article + FAQPage + HowTo + WebApplication
   - `/pricing-changelog`: CollectionPage + ItemList + BreadcrumbList
   - keep Product schema out unless source-backed offers exist.
2. Expand under-target P0 pages to meet SEO-Copy Freeze word targets:
   - `/claude-code-usage-limits`: target 1200–1600, live parsed 1038
   - `/codex-usage`: target 1200–1600, live parsed 1051
   - `/claude-code-vs-codex`: target 1200–1800, live parsed 1193
   - `/claude-code-vs-cursor`: target 1200–1800, live parsed 1164
3. Add OG/Twitter social meta to `/about`, `/privacy`, `/terms` if touching metadata.
4. Strengthen `scripts/verify-site.mjs` so it fails on missing contracted schema types and P0 content-depth regressions.

Acceptance:
- `npm run lint`, `npm run verify`, `npm run build` pass.
- Live/preview routes show the expected JSON-LD types, one H1, self-canonical, no noindex, sitemap inclusion for indexable pages.
- Alias routes remain 301 and absent from sitemap.
- Commit + push + Cloudflare deploy source commit must match.
- Send progress to telegram:-1003750190535:5866 only.


id: t_e75eaa3b
title: Recheck SEO/GEO after AI Coding Pricing schema/content remediation
assignee: moyin
status: done
created_by: motest
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:seo-recheck-after-t_04a6402b
body:
Project: AI Coding Pricing / Cost Hub
Tenant: site-aicodingpricing-20260521
Domain: https://aicodingpricing.com
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
Previous SEO report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/seo/final-seo-recheck.md
Remediation task: t_04a6402b
Remediation commit: 5d141b41e61f70d1f773de8b421b90b12592edfe
Production: https://aicodingpricing.com
Preview/deploy URL from remediation: https://1bd9892c.aicodingpricing.pages.dev

Goal: rerun final SEO/GEO/AEO recheck after schema graph + P0 content-depth remediation. Update/write final SEO artifact and return SEO_GO or SEO_NO_GO.

Must verify:
- Contracted JSON-LD types on P0 routes: FAQPage, BreadcrumbList, HowTo, CollectionPage, ItemList, WebApplication where required.
- P0 frozen word-count/content-depth targets now pass.
- title/meta/OG/canonical/noindex/H1 basics still pass.
- alias routes remain 301 and absent from sitemap.
- P1 indexed routes are acceptable or explicitly flagged.
- Source/freshness/disclaimer language remains visible.
- Production source commit matches pushed/deployed commit evidence from t_04a6402b.

Progress target: telegram:-1003750190535:5866 only.
Complete with metadata: seo_verdict, verified_routes, p0_issues, p1_issues, artifact_paths, commit_sha/deployment_source_commit evidence.


id: t_696c2567
title: Refresh compliance recheck after AI Coding Pricing policy remediation
assignee: modun
status: done
created_by: motest
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:compliance-recheck-after-t_9319be77-t_04a6402b
body:
Project: AI Coding Pricing / Cost Hub
Tenant: site-aicodingpricing-20260521
Domain: https://aicodingpricing.com
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
Previous compliance report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/compliance/final-compliance-recheck.md
Policy remediation task: t_9319be77
Policy remediation commit: 2735ea6d40888977aeeb8407206dfb3e5d727232
Later SEO/content deployment task: t_04a6402b, commit 5d141b41e61f70d1f773de8b421b90b12592edfe
Production: https://aicodingpricing.com

Goal: refresh final compliance recheck after /privacy and /terms P0 remediation and later SEO deployment. Update/write the compliance artifact so PM/QA launch evidence no longer points to stale NO_GO if fixed.

Must verify:
- /privacy and /terms are production 200 and include operator, processors, retention, rights, cookies, data categories, trademark/fair-use, liability/no-warranty, affiliate/sponsorship placeholder, no private account data/scraping, complaint/correction route.
- Footer links privacy/terms/contact; domain email/MX caveat if contact uses site email.
- No unauthorized logos/trademarks/assets; no positive official/endorsed/partner/certified claims.
- Runtime cookies/analytics/tracker evidence matches policy.
- Source/freshness caveats remain visible on pricing data.
- Production deployment source is the expected final source after t_04a6402b.

Progress target: telegram:-1003750190535:5866 only.
Complete with metadata: compliance_verdict, p0_issues, p1_issues, pages_checked, artifact_paths, deployment evidence.


id: t_eeea3f95
title: PM re-acceptance after AI Coding Pricing SEO/compliance rechecks
assignee: moce
status: done
created_by: motest
workspace_kind: scratch
workspace_path: /root/.hermes/kanban/boards/site-factory/workspaces/t_eeea3f95
tenant: site-aicodingpricing-20260521
idempotency_key: site-aicodingpricing-20260521:pm-reacceptance-after-seo-compliance-rechecks
body:
Project: AI Coding Pricing / Cost Hub
Tenant: site-aicodingpricing-20260521
Domain: https://aicodingpricing.com
Report base: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing
Previous PM report: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/pm/product-acceptance.md
Prior PM verdict: PM_NO_GO before remediation.
Remediation tasks now done: t_04a6402b (SEO schema/content), t_9319be77 (privacy/terms).
Required upstream rechecks: t_e75eaa3b SEO/GEO, t_696c2567 compliance.

Goal: rerun product acceptance after SEO/GEO and compliance rechecks. Update/write product acceptance artifact and decide whether motest final QA may proceed.

Must verify:
- Do not advance to motest if SEO remains NO_GO or compliance has P0 blockers.
- If SEO_GO and no compliance P0, verify product minimum: calculator, source-linked pricing table, changelog/freshness, pricing alerts, fair-use disclaimers, redirect aliases, P1 route exposure risk.
- Return PM_GO or PM_CONDITIONAL_GO_TO_QA if ready for final QA; otherwise PM_NO_GO with blockers.

Progress target: telegram:-1003750190535:5866 only.
Complete with metadata: pm_verdict, competitive_minimum_verdict, verified_user_tasks, blockers, next_gate, artifact_paths.


id: t_7ea142b3
title: [CONT QA 墨测] AI Coding Pricing final QA after PM_CONDITIONAL_GO
assignee: motest
status: done
created_by: xiaomo-host
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: aicodingpricing-final-qa-after-pm-reaccept-20260521
skills: ["projects/site-qa"]
body:
GOAL MODE / Kanban-only final QA continuation for AI Coding Pricing.

Context:
- Tenant: site-aicodingpricing-20260521
- Site: https://aicodingpricing.com
- Repo: /root/projects/aicodingpricing
- This is a narrow QA continuation after remediation rechecks. Do NOT use stale PM_NO_GO from t_f1758ded as the active gate.
- Canonical fresh upstream gate: t_eeea3f95 = PM_CONDITIONAL_GO_TO_QA.
- Fresh SEO recheck: t_e75eaa3b = SEO_GO after schema/content remediation.
- Fresh compliance recheck: t_696c2567 = GO_WITH_P1_CAVEAT; no P0 blockers; remaining P1 is operational email deliverability / MX.
- Frontend/domain gate: t_9085ad91 done; custom domains active; Crawler Hints enabled.
- Previous QA task t_108bbf98 is blocked due to stale upstream-gate logic and is superseded by this continuation.

Task:
Run final real-user-task QA for AI Coding Pricing using projects/site-qa. Verify production, not just preview. Produce a final QA report and complete with structured metadata.

Required checks:
- Read parent metadata/artifacts from t_eeea3f95, t_e75eaa3b, t_696c2567, t_9085ad91.
- Verify production routes, sitemap/robots/canonical/schema, SEO matrix routes, pricing calculator/core user task, responsive/mobile, console errors, performance smoke, footer/legal/contact links, analytics script presence.
- Treat MX/email deliverability as P1 unless it blocks user task or policy contact route.
- If QA_GO or QA_CONDITIONAL_GO, include exact P1/P2 followups and allow Owner Review Gate to proceed.
- If QA_NO_GO, list P0 blockers and create/point to exact remediation tasks.

Completion metadata must include:
artifact_paths, qa_verdict, production_url, checks_run, p0_blockers, p1_followups, residual_risk, next_inputs.

Visibility:
- Project topic target: telegram:-1003750190535:5866 (`做站 · aicodingpricing`).
- Progress should be Kanban state/comments + project topic only; no direct @bot dispatch.


id: t_14b33ebb
title: [FIX 墨界] AI Coding Pricing P1 web fixes before launch: analytics/mobile/LCP/SEO/newsletter
assignee: mojie
status: ready
created_by: xiaomo-host
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: aicodingpricing-fix-before-launch-frontend-p1-20260521
skills: ["projects/frontend-site-build"]
body:
GOAL MODE / FIX_BEFORE_LAUNCH P1 remediation for AI Coding Pricing.

Owner chose FIX_BEFORE_LAUNCH from Owner Review Gate t_793aae51. Current launch is blocked until these P1/P2 fixes are completed and rechecked.

Site: https://aicodingpricing.com
Repo: /root/projects/aicodingpricing
Upstream QA: t_7ea142b3 = QA_CONDITIONAL_GO, P0=0.
Owner review summary: /root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/owner-review-summary.md

Fix scope:
1. Install analytics script(s) per project convention and implement/verify client events: cta_click, pricing_click, calculator usage, newsletter submit. Prefer lightweight privacy-friendly analytics consistent with fleet conventions; document exact provider/env assumptions.
2. Fix 390px mobile menu: visible Menu button must expand/collapse primary nav links.
3. Improve homepage LCP below 2500ms target where practical without redesign regression; document before/after measurement.
4. SEO follow-up: add/fix /claude-code-cost WebApplication JSON-LD; add /llms.txt; expand shallow P1/P2 page content called out in QA/SEO reports.
5. Newsletter UX P2: submission should show explicit success/error/pending feedback even if backend is capture-shell; do not imply a working subscription backend if absent.

Required release loop:
- Inspect current git status and deployment source.
- Implement minimal safe fixes.
- Run lint/typecheck/build/verify and relevant route/schema checks.
- Commit with Conventional Commit, push main, deploy from same commit, verify production.
- Complete with metadata: artifact_paths, changed_files, checks_run, commit_sha, pushed_branch, deploy_url, deployment_source_commit, production_verification, residual_risk, next_inputs.


Visibility:
- Project topic target: telegram:-1003750190535:5866 (`做站 · aicodingpricing`).
- Kanban comments/state are source of truth; no direct @bot dispatch.


id: t_675ed693
title: [FIX 墨枢] AI Coding Pricing support@ MX/email deliverability before launch
assignee: moshu
status: ready
created_by: xiaomo-host
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: aicodingpricing-fix-before-launch-mx-20260521
skills: ["projects/backend-site-build"]
body:
GOAL MODE / FIX_BEFORE_LAUNCH MX/support email remediation for AI Coding Pricing.

Owner chose FIX_BEFORE_LAUNCH from Owner Review Gate t_793aae51. Current launch is blocked until MX/support@ deliverability is fixed or precisely blocked.

Site/domain: aicodingpricing.com
Cloudflare zone should already exist and be active from frontend/domain gate t_9085ad91.
Issue: no MX record observed; support@aicodingpricing.com has delivery risk.

Task:
- Inspect current Cloudflare DNS/MX records for aicodingpricing.com.
- Configure the fleet-standard support email route if available (Cloudflare Email Routing / existing mailbox / provider convention).
- If the required destination mailbox or Email Routing setup cannot be completed with available credentials, block with exact missing input.
- Verify DNS after change: dig MX aicodingpricing.com and document expected support@ behavior.
- Do not claim email works without evidence.

Completion metadata: dns_records_before, dns_records_after, mx_verified, support_email_status, exact_blocker_if_any, residual_risk, next_inputs.


Visibility:
- Project topic target: telegram:-1003750190535:5866 (`做站 · aicodingpricing`).
- Kanban comments/state are source of truth; no direct @bot dispatch.


id: t_141cfd70
title: [RECHECK 墨引] AI Coding Pricing SEO follow-up after P1 remediation
assignee: moyin
status: todo
created_by: xiaomo-host
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: aicodingpricing-seo-recheck-after-p1-fix-20260521
skills: ["projects/site-seo-review"]
body:
GOAL MODE / SEO follow-up recheck after AI Coding Pricing P1 remediation.

Wait for frontend remediation parent. Verify only the P1 SEO follow-up scope from Owner Review: /claude-code-cost WebApplication JSON-LD, /llms.txt, and content-depth expansion. Also ensure analytics/mobile/LCP changes did not regress sitemap/robots/canonical/schema basics.

Complete with SEO_GO or SEO_NO_GO, artifact_paths, checks_run, remaining_blockers, next_inputs.


Visibility:
- Project topic target: telegram:-1003750190535:5866 (`做站 · aicodingpricing`).
- Kanban comments/state are source of truth; no direct @bot dispatch.


id: t_c6dc22f8
title: [RE-QA 墨测] AI Coding Pricing final QA after FIX_BEFORE_LAUNCH repairs
assignee: motest
status: todo
created_by: xiaomo-host
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: aicodingpricing-reqa-after-fix-before-launch-20260521
skills: ["projects/site-qa"]
body:
GOAL MODE / final QA recheck after FIX_BEFORE_LAUNCH remediation.

This is a narrow re-QA for the Owner Review P1/P2 list, not a full restart. Read parent outputs from frontend remediation, MX remediation, and SEO follow-up recheck.

Verify:
- analytics script and events: cta/pricing/calculator/newsletter as implemented; if backend absent, verify UX feedback and event emission.
- MX/support@ status from infra parent; classify remaining email risk.
- 390px mobile menu expands primary nav.
- homepage LCP target or documented residual.
- /claude-code-cost schema, /llms.txt, content-depth follow-up.
- newsletter success/error feedback.
- quick smoke: core calculator, 23 routes, sitemap/legal/SEO basics still pass.

Return QA_GO / QA_CONDITIONAL_GO / QA_NO_GO. If P0=0 and only explicit residual P1 remains, pass to Owner Review with exact waiver list.
Complete metadata: qa_verdict, p0_blockers, p1_followups, p2_followups, artifact_paths, checks_run, residual_risk, next_inputs.


Visibility:
- Project topic target: telegram:-1003750190535:5866 (`做站 · aicodingpricing`).
- Kanban comments/state are source of truth; no direct @bot dispatch.


id: t_b76bcb40
title: [Owner Gate 墨策] AI Coding Pricing owner review after P1 repairs
assignee: moce
status: todo
created_by: xiaomo-host
workspace_kind: dir
workspace_path: /root/projects/aicodingpricing
tenant: site-aicodingpricing-20260521
idempotency_key: aicodingpricing-owner-review-after-p1-repairs-20260521
skills: ["projects/site-qa"]
body:
GOAL MODE / Owner Review Gate after FIX_BEFORE_LAUNCH remediation for AI Coding Pricing.

This replaces stale blocked owner gate t_793aae51 for the repair branch. Wait for final QA recheck parent. Prepare a compact owner review summary with before/after status of each requested fix, QA verdict, remaining P1/P2, and explicit launch recommendation.

Block with WAITING_OWNER_SITE_APPROVAL until Meng Jian replies APPROVE_LAUNCH / APPROVE_WITH_WAIVER / FIX_BEFORE_LAUNCH / HOLD.

Completion metadata when approved must include owner_approval=confirmed, approved_by=mengjian, approval_message, artifact_paths, residual_risk, next_inputs.


Visibility:
- Project topic target: telegram:-1003750190535:5866 (`做站 · aicodingpricing`).
- Kanban comments/state are source of truth; no direct @bot dispatch.


# task_comments

task_id: t_993d8a69
author: moyun
body:
已读取父任务 QA 结论并落盘 Step 9 运营报告：`/root/.hermes/kanban/boards/site-factory/workspaces/t_993d8a69/reports/site-pipeline/site-daily-20260516/09-launch.md`。

结论：QA 明确 `not_ready_for_public_launch_or_gsc_submission`，本轮不执行公开上线、GSC、目录投稿、社区冷启动。报告内已保留 QA 通过后的 Day 0-7 计划、目录/社区/周刊提交清单和墨析移交模板。

阻塞 P0：final domain DNS/canonical 不一致、/llms.txt 缺失、JSON-LD 缺失、真实 detector API 未上线、analytics 未配置、vendor/privacy 条款未确认。


task_id: t_71f88124
author: moyun
body:
墨运已读取 QA 报告并落盘 blocked launch handoff：`/root/.hermes/kanban/boards/site-factory/workspaces/t_71f88124/reports/site-pipeline/site-daily-20260517/09-launch.md`。

结论：QA 未通过，`can_handoff_to_ops=false`，不执行 GSC、目录提交、社区冷启动、周刊投稿或墨析复盘移交。

已创建返修卡：
- t_34c3091a — mojie：frontend/SEO launch blockers
- t_eeafcefc — moshu：backend/API launch blockers
- t_e5c4d414 — moyin：final domain + analytics launch blockers

墨运恢复条件：P0 修复完成后，墨测复测通过。


task_id: t_e5c4d414
author: moyin
body:
Repair attempt orientation completed.

Hard blockers verified live:
- `inspectimage.ai` is not registered / has no DNS: `dig +short inspectimage.ai` empty; `whois inspectimage.ai` returns `Domain not found`.
- Cloudflare account has Pages project `image-analyzer-ai-daily`, but no custom domains bound: `GET /pages/projects/image-analyzer-ai-daily/domains` => empty result.
- Cloudflare zones lookup for `inspectimage.ai` returns empty result, so I cannot add DNS records or complete final-domain binding from this account.
- Analytics credentials are not available in worker env: `GA4_MEASUREMENT_ID`, `NEXT_PUBLIC_GA_MEASUREMENT_ID`, `PLAUSIBLE_DOMAIN`, `CLARITY_PROJECT_ID`, `AHREFS_ANALYTICS_KEY` all missing. Without these I cannot configure or verify Plausible/GA4/Clarity/Ahrefs production events.

I copied the existing frontend project from upstream workspace `t_19568a71` into this task workspace for inspection. Code-side SEO/API repairs are possible, but final acceptance requires domain ownership/registration + analytics property IDs first. No GSC submission or public distribution was attempted.


task_id: t_5a1b07f4
author: motan
body:
WAITING_USER_KEYWORD_APPROVAL handoff:
```json
{
  "task_id": "t_5a1b07f4",
  "selected_keyword": "best vibe coding tools",
  "project_slug": "vibe-coding-tools",
  "target_market": "US/en",
  "handoff_path": "reports/site-pipeline/site-daily-20260519/00-daily-keyword.md",
  "absolute_handoff_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_5a1b07f4/reports/site-pipeline/site-daily-20260519/00-daily-keyword.md",
  "telegram_message_id": "5452",
  "blocking_risks": [
    "Not a pure tool keyword; requires content + directory + selector format",
    "SERP includes media/vendor pages; needs structured data and real comparison dimensions",
    "Avoid single-brand keyword paths"
  ],
  "next_assignee_input": "Build PRD around a Vibe Coding Tools directory/selector, not a full AI app builder."
}
```


task_id: t_31b24b6f
author: 小墨
body:
统一口径补充：做站流水线以 Hermes Kanban 为唯一 source of truth；Telegram 群/Topic 只做可见性、人工确认、DONE/BLOCKED 摘要。执行者必须通过 kanban_complete/kanban_block 更新状态，不能只在群里回消息。


task_id: t_ebe97523
author: 小墨
body:
过程可视化要求：墨策执行本 PRD task 时，请在做站 Topic 主动汇报 [START]/[DONE]/[BLOCKED]。DONE 必须包含 PRD 路径、关键决策、下一棒和风险点；群里汇报后再 kanban_complete。


task_id: t_06ec571b
author: 小墨
body:
已修复阻塞原因：moying profile 缺少 site-design skill。已恢复全局 projects/site-design、projects/site-seo-review，并同步后续流水线所需 profile-local skills。


task_id: t_06ec571b
author: 小墨
body:
二次修复：Hermes profile skill resolver 对重复/分类技能需要 qualified skill name，已将本项目后续任务 skills 从 site-design 等改为 projects/site-design / projects/site-qa 等 qualified names。


task_id: t_41a9dcf7
author: default
body:
BLOCKED: BLOCKED_INVALID_DESIGN_HANDOFF: upstream Step 5 is not a complete site-design handoff; wait for correction task with Stitch project/screen-index, desktop+mobile screenshots, HTML export, assets, HANDOFF.md.


task_id: t_06ec571b
author: 小墨
body:
判定无效交付：当前只生成 05-design.md，缺 Stitch project/screen-index、desktop/mobile screenshots、HTML export、assets、HANDOFF.md，不符合 projects/site-design 完整 Step 5 交付。后续前后端已暂停，创建 correction task 重跑完整设计流程。


task_id: t_41a9dcf7
author: mojie
body:
Recheck after user requested work: task remains blocked and correction parent t_89182cb7 is still running. Required corrected design artifacts are still missing in t_89182cb7 workspace: design/HANDOFF.md, design/stitch/screen-index.json, desktop/mobile HTML exports, and desktop/mobile PNG screenshots. Per Step 6A gate, frontend implementation/deploy must not proceed until corrected Step 5 completes.


task_id: t_41a9dcf7
author: 小墨
body:
已追加 Kanban v2 step-gate：qualified skill、artifact_paths/verification/acceptance_checklist metadata、上游产物验收规则、max_runtime/max_retries。


task_id: t_f40a5cdf
author: moyun
body:
launch blocked handoff:
{
  "project_slug": "subnautica2maps",
  "domain": "subnautica2maps.com",
  "handoff_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_f40a5cdf/reports/site-pipeline/site-daily-20260519/subnautica2maps/09-launch.md",
  "qa_go_no_go": "NO-GO",
  "production_url": null,
  "preview_url": "https://subnautica2maps.pages.dev/",
  "analytics_status": "failed: real Plausible/Clarity/Ahrefs/GSC evidence missing",
  "distribution_log": [],
  "launch_checklist": {
    "qa_pass": false,
    "detail_routes_ok": false,
    "schema_answer_blocks_ok": false,
    "analytics_ok": false,
    "custom_domain_ok": false,
    "domain_risk_accepted": false,
    "external_distribution_executed": false
  },
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_f40a5cdf/reports/site-pipeline/site-daily-20260519/subnautica2maps/09-launch.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_e7f65081/reports/site-pipeline/site-daily-20260519/subnautica2maps/08-qa.md"
  ],
  "blocking_risks": [
    "QA metadata/report go_no_go=NO-GO; launch gate forbids GSC/cold launch unless QA go or explicit user approval.",
    "7/7 resource/blueprint detail routes render 404/Next error shell while linked from hub/map.",
    "Schema and 40-70 word Short answer blocks missing on core pages.",
    "Analytics scripts/events not actually loaded; no reliable Plausible/Clarity/Ahrefs/GSC evidence.",
    "Final domain not bound while canonical/sitemap point to subnautica2maps.com.",
    "Trademark/domain risk for subnautica2maps.com not accepted by 墨盾/Host."
  ],
  "next_assignee_input": {
    "mojie": "t_ae4195c6: fix detail routes/links, schema, Short answer blocks, noindex/disabled behavior for unverified details.",
    "moshu": "t_6c25bc91: wire real analytics, bind final domain after risk decision, verify security headers/canonical/sitemap/OG.",
    "modun": "t_803961d9: decide whether subnautica2maps.com trademark/domain risk is acceptable or switch domain.",
    "moyin": "t_319d3d1c: after repair tasks complete, rerun SEO/GEO gate before QA/launch resumes.",
    "moxi": "Do not take over data review until launch is unblocked and production analytics are verified."
  },
  "created_repair_tasks": ["t_ae4195c6", "t_6c25bc91", "t_803961d9", "t_319d3d1c"]
}


task_id: t_e7f65081
author: 小墨
body:
补充复盘：QA 原 NO-GO 仍有效，但验收标准升级。当前不是只修 detail/schema/analytics，而是 P0 产品核心不成立：/map 必须按竞品基线重做 interactive map（底图、拖拽缩放、图层筛选、marker 弹窗、搜索联动、坐标/fallback 数据），否则继续 NO-GO。已创建返修任务 ，并链接到墨引复验 t_319d3d1c。


task_id: t_319d3d1c
author: 小墨
body:
流程校正：墨引是 QA 前置门。必须在墨界/墨枢返修后做 SEO/GEO 验收和优化，覆盖 sitemap/robots/canonical/schema/short answer/internal links/detail routes/AI citation；通过后才解锁墨测二次 QA。


task_id: t_319d3d1c
author: 小墨
body:
补充口径：墨引这一步不是只做 SEO，要同时做 SEO / GEO / AEO 验收与优化。AEO 重点验 answer-first 内容、Short answer blocks、FAQPage、问题型标题、可被 AI/搜索摘要直接引用的答案段，以及地图/资源/蓝图页面的实体关系表达。


task_id: t_dbf3fe6d
author: 小墨
body:
QA gate 补充：二次 QA 必须等待墨盾合规/Policy 复验 t_0f128ba8 完成；测试范围包含 /privacy、/terms、footer policy links、analytics/cookie 披露、fan-made/no-affiliation、品牌/IP 禁词、数据准确性免责声明。无墨盾 compliance_verdict 或有 P0 合规阻断，不得 GO。


task_id: t_f40a5cdf
author: 小墨
body:
Launch gate 补充：除墨引 SEO/GEO/AEO 和墨测二次 QA 外，还必须有墨盾合规/Policy 复验通过；policy 页面和 analytics/cookie/IP 风险未过，不允许上线/分发。


task_id: t_6c25bc91
author: 小墨
body:
域名购买交接口径：用户购买域名后，第一棒交给墨枢 t_6c25bc91。用户只需提供 registrar、domain、是否已改 NS 到 Cloudflare；墨枢负责接入 CF Zone、DNS/CNAME 到 Pages、Pages custom domain binding、SSL/HTTPS、安全头、canonical/sitemap/OG final domain 校准、analytics/GSC 前置状态。若域名不是 subnautica2maps.com 而是保守新域名，也由墨枢先改环境和部署配置，再交墨盾复验 IP/policy，墨引复验 SEO/GEO/AEO。


task_id: t_0f128ba8
author: 小墨
body:
域名购买后合规复验输入：墨盾需读取最终 domain，不再只按 subnautica2maps.com 旧风险判断；若用户购买保守域名，重新评估品牌/IP/Policy；若坚持 subnautica2maps.com，必须明确记录中高风险接受与 no-affiliation/no-official/no-scraping/disclaimer 执行情况。


task_id: t_6c25bc91
author: 小墨
body:
用户确认最终关键词域名为 subnautica2maps.com，registrar 已购买/待购买后使用该域名，NS 尚未改。下一步：用户把 NS 改到 Cloudflare 后，墨枢接手验证 zone active、绑定 Pages custom domain、配置 apex/www DNS、SSL Full Strict、HTTPS、canonical/sitemap/robots/OG、analytics/GSC；同步提醒墨盾按关键词域名做 IP/免责声明/Policy 中高风险复验。


task_id: t_0f128ba8
author: 小墨
body:
最终域名已确认走关键词域名 subnautica2maps.com，NS 尚未改。墨盾复验时按中高 IP 风险处理：全站 no affiliation / unofficial / fan-made map/disclaimer；避免 official、download game assets、claim ownership 等表述；Policy 与 Cookie/analytics 实际脚本一致。


task_id: t_6c25bc91
author: 小墨
body:
Cloudflare Zone 已创建：subnautica2maps.com，zone_id=b2de91c3a0335624c20b5e2c3eb953c8，status=pending。需用户到注册商把 NS 改为 coraline.ns.cloudflare.com / nico.ns.cloudflare.com。待 zone active 后墨枢继续 DNS + Pages custom domain + SSL/HTTPS + final domain 配置。


task_id: t_6c25bc91
author: 小墨
body:
NS 已由用户修改并已验证：dig NS subnautica2maps.com 返回 coraline.ns.cloudflare.com / nico.ns.cloudflare.com；dig +trace 已从 .com 委派到 Cloudflare。CF API 当前 zone status 仍 pending，已触发 activation_check，等待 Cloudflare 后台刷新为 active 后继续绑定 Pages custom domain 与 DNS。


task_id: t_6c25bc91
author: moshu
body:
Plan-before-execute for CF/domain changes:
1. Current state checked: zone active, DNS empty, Pages project exists, apex custom domain pending because CNAME record not set, SSL=full, Always HTTPS=off, HSTS disabled.
2. Execute non-destructive/additive changes: create apex CNAME `subnautica2maps.com -> subnautica2maps.pages.dev` proxied, create `www -> subnautica2maps.com` proxied, add/verify Pages custom domains for apex/www, set SSL Full (Strict), Always Use HTTPS on, Crawler Hints on, Browser Cache TTL 4h, HSTS security_header enabled.
3. Risk: DNS/SSL changes affect production resolution. No delete/update of existing DNS records because current DNS list is empty; all changes are additive or stricter HTTPS settings.
4. Verify after each step via CF API, dig/curl, and final live HTTP/header/canonical/sitemap/robots/analytics checks.


task_id: t_98ec4574
author: moce
body:
# Subnautica2Maps same-day all-required 统一验收口径

Kanban 是唯一 source of truth。旧 PRD 里的 P0 / V1 / Later / P2 分级表达今天全部废弃；所有竞争力缺口均为 today-required。完整控制文档：`/root/.hermes/kanban/boards/site-factory/workspaces/t_98ec4574/reports/site-pipeline/site-daily-20260519/subnautica2maps/same-day-relaunch-control.md`

## 今日必须上线
- 真 interactive map：pan/zoom、marker、filter、search、detail drawer/panel、可复制坐标、移动端可用。
- 真实 marker 数据：name、type、coordinates、depth、biome、source、confidence、last_updated。
- Resource / Blueprint / POI / Biome detail：真实答案、位置表、关联实体、map deep link、FAQ、source/confidence。
- 当前所在地到目标：today 版 route hints/checklist；不承诺最优路径，但必须可执行。
- Index hygiene：canonical、robots、sitemap、noindex、schema、OG、crawlable fallback table。
- Domain / analytics / security headers：生产域名、Plausible 事件、CSP/HSTS/X-Frame 等基础 headers。
- 合规 policy：fan-made/no affiliation/no asset scraping/privacy/terms/cookie/data source policy。
- QA GO 后才能上线分发。

## NO-GO 条件
- 地图只是图片、说明页、空 iframe 或 placeholder。
- marker 只存在 JS state，没有 fallback crawl/index 数据。
- detail 页没有真实数据，只写 coming soon / verified-first / will update。
- partial/placeholder 页面进入 sitemap 或没有 HTML noindex。
- 使用 official / complete / endorsed 等误导口径。

## QA 必测 5 个任务
1. 首页搜索 resource → detail → 坐标/深度/biome/source → filtered map。
2. /map 过滤 resource/blueprint/biome → marker detail → 复制坐标。
3. blueprint detail → materials table → related resource detail。
4. 输入当前位置 + 目标 marker → route hints/checklist。
5. 未验证/占位页面必须 noindex 且不在 sitemap。


task_id: t_dc13a624
author: 小墨
body:
数据任务 t_9dd1d1c4 因 unknown skill 崩溃；已创建接替任务 t_14875b8b（site-seo-review）。Build 任务不等旧 P0/P1/P2；但上线内容必须接入真实 marker/detail seed，禁止继续暴露 prototype/partial/pending 文案。


task_id: t_a0cd9955
author: 小墨
body:
Gate reminder：今天必须上线，但不是跳过验收。Launch 只能在 Same-day QA t_a0410326 metadata.go_no_go=GO、Compliance t_bb05041e GO、Infra t_7e0cc8d5 production OK 后执行外部分发；否则 kanban_block 写明唯一缺口。


task_id: t_a0410326
author: 小墨
body:
QA 口径：不要按旧 P0/P1/P2；所有 listed scope 都是 today-required。只按真实用户任务 GO/NO-GO：找资源、筛 marker、路线计算、detail 可读、移动端、index hygiene、analytics、policy。


task_id: t_a0cd9955
author: moyun
body:
blocked handoff:
{
  "production_url": "https://subnautica2maps.com/",
  "artifact_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_a0cd9955/reports/site-pipeline/site-daily-20260519/subnautica2maps/19-sameday-launch.md",
  "distribution_log": [
    {"channel": "GSC sitemap", "status": "blocked", "reason": "waiting for QA/Compliance/Infra GO"},
    {"channel": "Google URL inspection", "status": "blocked", "reason": "waiting for GO and GSC access confirmation"},
    {"channel": "Reddit", "status": "blocked", "reason": "public launch blocked until GO"},
    {"channel": "Steam Community", "status": "blocked", "reason": "requires GO plus Steam account/session/manual anti-spam controls"},
    {"channel": "Product Hunt", "status": "prepared_only", "reason": "schedule after GO/player validation"},
    {"channel": "Hacker News Show HN", "status": "prepared_only", "reason": "post after QA confirms real map experience"},
    {"channel": "Directories", "status": "prepared_only", "reason": "submit after GO; may require account/email/captcha"},
    {"channel": "X/Twitter", "status": "prepared_only", "reason": "post after GO"}
  ],
  "blocked_channels": ["GSC", "Reddit", "Steam", "Product Hunt", "Hacker News", "directories", "X/Twitter"],
  "next_7_days": [
    "Day 0: submit GSC sitemap/core URLs and publish one Reddit or Steam value post after GO",
    "Day 1: track GSC status and reply to comments within 24h",
    "Day 2: apply community corrections and submit secondary directories",
    "Day 3: review Plausible sources/top pages",
    "Day 4: review map interaction events",
    "Day 5: publish Silver/Habitat Builder walkthrough if data quality is confirmed",
    "Day 6: recheck GSC coverage",
    "Day 7: hand raw channel/feedback data to 墨析"
  ],
  "resume_criteria": [
    "t_a0410326 go_no_go=GO",
    "t_bb05041e go_no_go=GO or Conditional GO with changes done",
    "t_7e0cc8d5 production/analytics/sitemap OK",
    "t_dc13a624 core_interactions_verified"
  ]
}


task_id: t_dc13a624
author: moying
body:
墨影 same-day design handoff is ready for implementation.

Artifacts:
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_7d4c6878/reports/site-pipeline/site-daily-20260519/subnautica2maps/16-sameday-design.md`
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_7d4c6878/reports/site-pipeline/site-daily-20260519/subnautica2maps/16-map-ui-reference.html`
- current assessment screenshots under `/root/.hermes/kanban/boards/site-factory/workspaces/t_7d4c6878/reports/site-pipeline/site-daily-20260519/subnautica2maps/screens/`

Key design requirement: `/map` should become an app workspace, not a content page — desktop = left search/filter sidebar + central full-height map + right marker/route panel; mobile = pinned search + full viewport map + bottom rail/sheets. Homepage first fold must show a real map preview with filter/search/selected marker, not only a route snapshot card.


task_id: t_dc13a624
author: mobi
body:
Copy handoff ready for frontend wiring:

- Artifact: `/root/.hermes/kanban/boards/site-factory/workspaces/t_556de4e5/reports/site-pipeline/site-daily-20260519/subnautica2maps/15-sameday-copy.md`
- Covers homepage H1/subhead/CTA, /map search/filter/popup/current-position route/confidence/spoiler microcopy, 15 detail page title/description/short answer/FAQ, fan-made disclaimer, and public-page/sitemap copy rule.
- Copy avoids half-built wording and fake claims; exact marker seed should still follow the active data task `t_febb1aea` where it is more specific than this copy pack.


task_id: t_5120430e
author: moyin
body:
NO-GO handoff:
```json
{
  "project_slug": "subnautica2maps",
  "production_url": "https://subnautica2maps.com/",
  "audit_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_5120430e/reports/site-pipeline/site-daily-20260519/subnautica2maps/15-index-hygiene-audit.md",
  "go": false,
  "sitemap_urls_count": 20,
  "noindex_urls": ["https://subnautica2maps.com/blueprints/flashlight"],
  "checked_urls": [
    "https://subnautica2maps.com/",
    "https://subnautica2maps.com/map/",
    "https://subnautica2maps.com/resources/",
    "https://subnautica2maps.com/blueprints/",
    "https://subnautica2maps.com/roadmap/",
    "https://subnautica2maps.com/about/",
    "https://subnautica2maps.com/data-policy/",
    "https://subnautica2maps.com/privacy/",
    "https://subnautica2maps.com/terms/",
    "https://subnautica2maps.com/cookie-policy/",
    "https://subnautica2maps.com/resources/silver/",
    "https://subnautica2maps.com/resources/copper/",
    "https://subnautica2maps.com/resources/quartz/",
    "https://subnautica2maps.com/resources/titanium/",
    "https://subnautica2maps.com/resources/lead/",
    "https://subnautica2maps.com/resources/salt/",
    "https://subnautica2maps.com/blueprints/habitat-builder/",
    "https://subnautica2maps.com/blueprints/scanner/",
    "https://subnautica2maps.com/blueprints/seaglide/",
    "https://subnautica2maps.com/blueprints/base-window/",
    "https://subnautica2maps.com/resources/gold",
    "https://subnautica2maps.com/resources/lithium",
    "https://subnautica2maps.com/resources/sulfur",
    "https://subnautica2maps.com/blueprints/rebreather",
    "https://subnautica2maps.com/blueprints/flashlight",
    "https://subnautica2maps.com/blueprints/tadpole-fragment",
    "https://subnautica2maps.com/blueprints/wakemaker-fragment",
    "https://subnautica2maps.com/poi/black-boxes",
    "https://subnautica2maps.com/poi/supply-crates",
    "https://subnautica2maps.pages.dev/",
    "https://subnautica2maps.pages.dev/map",
    "https://subnautica2maps.pages.dev/resources/silver"
  ],
  "findings": [
    "Sitemap has 10 indexable detail pages, but each sampled resource/blueprint detail lacks explicit source and last_updated/last_verified fields in rendered HTML.",
    "Required same-day detail routes gold/lithium/sulfur/rebreather/tadpole-fragment/wakemaker-fragment/black-boxes/supply-crates return 200 homepage duplicate with canonical to / and no noindex/404/410.",
    "Only /blueprints/flashlight is observed noindex and absent from sitemap; other unsupported detail routes are crawlable duplicate shells.",
    "Positive checks: robots/sitemap 200; production canonicals present on main pages; pages.dev sampled canonicals point to production; /map has crawlable table/static marker output; HSTS/CSP/XCTO/Referrer-Policy present."
  ],
  "blocking_urls": [
    "https://subnautica2maps.com/resources/silver/",
    "https://subnautica2maps.com/resources/copper/",
    "https://subnautica2maps.com/resources/quartz/",
    "https://subnautica2maps.com/resources/titanium/",
    "https://subnautica2maps.com/resources/lead/",
    "https://subnautica2maps.com/resources/salt/",
    "https://subnautica2maps.com/blueprints/habitat-builder/",
    "https://subnautica2maps.com/blueprints/scanner/",
    "https://subnautica2maps.com/blueprints/seaglide/",
    "https://subnautica2maps.com/blueprints/base-window/",
    "https://subnautica2maps.com/resources/gold",
    "https://subnautica2maps.com/resources/lithium",
    "https://subnautica2maps.com/resources/sulfur",
    "https://subnautica2maps.com/blueprints/rebreather",
    "https://subnautica2maps.com/blueprints/tadpole-fragment",
    "https://subnautica2maps.com/blueprints/wakemaker-fragment",
    "https://subnautica2maps.com/poi/black-boxes",
    "https://subnautica2maps.com/poi/supply-crates"
  ]
}
```


task_id: t_dc13a624
author: moxi
body:
墨析数据验收发现（来源 t_6d90413b）：线上 /map 已有 Plausible 和部分事件，但事件口径未闭环：实际 `map_search_change` / `map_filter_apply` / `map_marker_open`，任务口径要求 `map_search` / `marker_open`；未检测到 `route_calculate`、`feedback_submit`，页面也未看到 current location -> target 的 route calculate UI。已创建 follow-up t_c9c639d1 给墨界，要求今天补齐事件命名、route UI 和 feedback/return 埋点。


task_id: t_2d1f546e
author: modun
body:
NO-GO compliance handoff:

```json
{
  "approved": false,
  "go_no_go": "NO-GO",
  "production_url": "https://subnautica2maps.com/",
  "report_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_2d1f546e/reports/site-pipeline/site-daily-20260519/subnautica2maps/12-sameday-compliance-gate.md",
  "policy_paths": {
    "privacy": "/root/.hermes/kanban/boards/site-factory/workspaces/t_2d1f546e/reports/site-pipeline/site-daily-20260519/subnautica2maps/privacy-policy.md",
    "terms": "/root/.hermes/kanban/boards/site-factory/workspaces/t_2d1f546e/reports/site-pipeline/site-daily-20260519/subnautica2maps/terms-of-use.md",
    "cookie": "/root/.hermes/kanban/boards/site-factory/workspaces/t_2d1f546e/reports/site-pipeline/site-daily-20260519/subnautica2maps/cookie-policy.md",
    "data_source": "/root/.hermes/kanban/boards/site-factory/workspaces/t_2d1f546e/reports/site-pipeline/site-daily-20260519/subnautica2maps/data-source-policy.md"
  },
  "risk_findings": [
    "生产 /cookie-policy 与 /cookies 均为 404；任务明确要求 Cookie Policy。",
    "/privacy、/terms、/data-policy 已存在但内容过薄，缺少 retention、third parties、GDPR/CCPA rights、feedback license/moderation、copyright complaint、governing law、cookie posture。",
    "Footer/legal wording 没有全站明确使用 no official assets / no asset scraping 口径。",
    "subnautica2maps.com 含完整 Subnautica mark + 2 maps，仍是中高/高商标混淆风险；建议切 sn2planner.com/sn2tools.com/sn2db.com，或 Host 显式接受残余风险。"
  ],
  "required_copy_changes": [
    "Footer: add 'No official assets. No asset scraping. No competitor marker scraping. Original abstract map layers and icons only.'",
    "Hero: add 'No official assets or scraped map data.'",
    "Data pages: add source/confidence/last verified reliance note.",
    "Keep banned terms absent: official, endorsed, sponsored, complete official, 100% accurate, guaranteed/latest, wiki replacement."
  ],
  "asset_review": {
    "og_image": "pass-monitoring: appears original abstract sonar/grid visual, no obvious official logo/screenshot/key art/game UI",
    "source_scan": "pass-monitoring: no obvious publisher logo/key art/screenshot asset filenames found"
  },
  "created_repair_task": "t_892ef21e"
}
```


task_id: t_7e0cc8d5
author: moxi
body:
墨析数据验收发现（来源 t_6d90413b）：线上 DOM 已加载 `https://plausible.io/js/script.js`，data-domain=`subnautica2maps.com`；但 Plausible API aggregate 返回 401 Missing API key，公开 dashboard `https://plausible.io/subnautica2maps.com` 返回 404。前端脚本已接，不等于 dashboard/API 已可查。已创建 follow-up t_ff3e33a9 给墨枢，要求今天补齐 Plausible host/site_id/API token 或明确 block 缺哪个 secret/权限。


task_id: t_ff3e33a9
author: moshu
body:
blocked handoff:
```json
{
  "plausible_host": "https://plausible.io",
  "site_id": "subnautica2maps.com",
  "api_status": "blocked: PLAUSIBLE_API_KEY present but invalid for subnautica2maps.com on official/self-host endpoints",
  "dashboard_status": "official_404; self_host_404; local_self_host_404",
  "frontend_script": "https://plausible.io/js/script.js",
  "cloudflare_pages_project": "subnautica2maps",
  "artifact_paths": ["/root/.hermes/kanban/boards/site-factory/workspaces/t_ff3e33a9/reports/plausible-access-check.md"],
  "telegram_message_id": 5600,
  "required_unblock": [
    "Provide valid read-only Plausible API token with access to subnautica2maps.com on plausible.io",
    "OR create subnautica2maps.com in https://plausible.shipsolo.io, provide token, and switch production script to self-host"
  ],
  "queries_tested": [
    "/api/v1/stats/aggregate?site_id=subnautica2maps.com&period=day&metrics=visitors,pageviews,events",
    "/api/v1/stats/breakdown?site_id=subnautica2maps.com&period=day&property=event:goal&metrics=events&limit=100"
  ]
}
```


task_id: t_7e0cc8d5
author: moshu
body:
handoff metadata:
```json
{
  "production_url": "https://subnautica2maps.com/",
  "deployment_url": "https://c281c162.subnautica2maps.pages.dev",
  "dns_status": "zone active; apex CNAME -> subnautica2maps.pages.dev; www CNAME -> subnautica2maps.com; both Pages custom domains attached; SSL strict + always HTTPS + HSTS enabled",
  "analytics_status": "frontend Plausible script present with data-domain=subnautica2maps.com; 9 required events POST to plausible.io/api/event returned 202 ok; aggregate API verification blocked by current PLAUSIBLE_API_KEY returning 401 invalid key or site_id",
  "headers_status": "HSTS, CSP, X-Content-Type-Options, Referrer-Policy, X-Frame-Options verified on production responses",
  "sitemap_status": "20 production canonical URLs only; robots points to production sitemap; banned half-finished terms scan clean",
  "gsc_status": "https://subnautica2maps.com/ and sc-domain:subnautica2maps.com added; current permissionLevel=siteUnverifiedUser; sitemap submit 403 until Site Verification scope/token or DNS/HTML verification token is provided",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_7e0cc8d5/reports/site-pipeline/site-daily-20260519/subnautica2maps/14-sameday-infra.md",
    "/root/projects/subnautica2maps/dist/sitemap.xml",
    "/root/projects/subnautica2maps/dist/robots.txt",
    "/root/projects/subnautica2maps/dist/og.svg"
  ],
  "telegram_message_id": "5601"
}
```


task_id: t_dc13a624
author: xiaomo
body:
[小墨整理] 不重开流水线：以 t_dc13a624(Build)+t_7e0cc8d5(Infra)+t_bb05041e(Compliance) -> t_486a3314(PM Gate) -> t_a0410326(QA) -> t_a0cd9955(Launch) 为唯一 canonical 新流程。旧 Same-day Relaunch 分支只保留历史/已完成产物，不再作为上线闸门，避免双 Build/双 QA 互相覆盖。


task_id: t_dc13a624
author: xiaomo
body:
[小墨推进] 原 canonical Build t_dc13a624 因 iteration budget exhausted 卡住。已创建 build continuation t_9a5502cb 接替为 PM/QA 的 build parent；不是重开流水线，只是续跑剩余实现。PM Gate 继续等待 t_9a5502cb + Infra/Compliance。


task_id: t_9a5502cb
author: xiaomo
body:
[小墨确认] 已收到墨界 DONE，补录 Kanban gate：Build Continuation 完成并解锁 PM Gate t_486a3314。报告与生产验证见 13b-build-continuation.md。


task_id: t_486a3314
author: xiaomo
body:
[小墨推进] 上游 Build Continuation t_9a5502cb 已 DONE：/map 真地图、88 markers、16 indexable routes、埋点、sitemap/noindex、生产 browser QA 均通过。请进入 PM Product Acceptance；注意非浏览器 urllib custom domain 403 是残余风险，浏览器生产访问正常。


task_id: t_a0cd9955
author: xiaomo
body:
[小墨补闸] 墨引 data seed 已 GO，但最终 SEO/GEO 复验刚创建为 t_20911280。Launch 除 QA GO 外也等待 t_20911280 的 GO/CONDITIONAL_GO，避免旧 NO-GO 遗留。


task_id: t_f8277a70
author: mojie
body:
墨界修复 handoff:
```json
{
  "changed_files": ["build.js", "dist/blueprints/habitat-builder/index.html", "dist/sitemap.xml", "dist/* generated detail pages"],
  "commit": "ece1b1d",
  "deployment": {
    "environment": "Production",
    "branch": "main",
    "source": "ece1b1d",
    "id": "ae962506-6032-415e-a506-8e8c2ef8f191",
    "url": "https://ae962506.subnautica2maps.pages.dev"
  },
  "production_url": "https://subnautica2maps.com/blueprints/habitat-builder/",
  "verification": {
    "http_200": true,
    "self_canonical": true,
    "no_noindex_meta": true,
    "old_noindex_copy_removed": true,
    "sitemap_contains_url": true,
    "short_answer_visible": true,
    "source_visible": true,
    "confidence_visible": true,
    "last_verified_visible": true,
    "sitemap_url_count": 21
  },
  "tests_run": ["npm run build", "wrangler pages deployment list", "curl production page + sitemap DOM/string checks"],
  "next_recheck_task": "t_85c2731d"
}
```


task_id: t_a0cd9955
author: xiaomo
body:
[小墨补闸] 用户反馈前端已修复；已创建 Final Re-QA t_183d38e3。Launch 需要等待 t_85c2731d 墨引复验 + t_183d38e3 二次 QA 的 GO/CONDITIONAL_GO 后再解锁。


task_id: t_f8277a70
author: xiaomo
body:
[Owner rule / 小墨补充] 所有改代码任务必须 commit + push + deploy 同步闭环：部署必须来自已 push 的 commit；只部署不提交/不 push 不算 DONE。完成 metadata 必须写 commit_sha、pushed_branch、deploy_url、deployment_source_commit、git_status_after。


task_id: t_62a4575a
author: xiaomo
body:
新增高保真硬约束：Stitch 导出的 HTML/CSS 是视觉真源，墨界不得看图重写或用默认 React/Tailwind 组件替换。实现顺序必须是：原样移植 HTML/CSS → 截图对比 → 局部组件化 → 加交互 → 再截图对比。完成 metadata 必须包含 stitch_source_html、screenshot_diff_paths、fidelity_verdict；desktop/mobile 关键截图还原度低于 90% 直接 BLOCK。


task_id: t_222ea144
author: xiaomo
body:
新增设计交付硬约束：墨影必须交付完整可运行 Stitch HTML/CSS，且为地图/攻略/详情页导出 normal/search/filter/popup/mobile drawer 等关键状态。HANDOFF 必须标注最终视觉真源 HTML、临时素材、字体/图标/CSS 资源。


task_id: t_3f2c133b
author: moce
body:
Design Acceptance NO-GO handoff:

```json
{
  "gate_verdict": "NO_GO",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_3f2c133b/reports/subnautica2maps/v2/30-design-acceptance.md"
  ],
  "verification": {
    "prd_read": "/root/.hermes/kanban/boards/site-factory/workspaces/t_99c52836/reports/subnautica2maps/v2/20-prd-v1.md",
    "design_handoff_read": "/root/.hermes/kanban/boards/site-factory/workspaces/t_222ea144/deliverables/subnautica2maps/v2-design/HANDOFF.md",
    "screen_index_read": true,
    "asset_inventory_read": true,
    "html_count": 17,
    "screens_count": 17,
    "assets_count": 14,
    "visual_checks": ["home-desktop", "map-desktop-marker-popup", "map-mobile-bottom-sheet"],
    "report_line_count": 154,
    "report_size": "6.6K"
  },
  "acceptance_checklist": {
    "page_matrix_preserved": false,
    "copy_preserved": true,
    "seo_structure_preserved": "partial",
    "asset_strategy_preserved": true,
    "interaction_states_preserved": "partial",
    "game_atmosphere_preserved": true,
    "blocker_count": 2
  },
  "blockers": [
    "Missing PRD-required /biomes/{slug} and /locations/{slug} design templates.",
    "resources-mobile-final.html and blueprints-mobile-final.html contain duplicated doctype/html/body documents."
  ],
  "residual_risk": [
    "Stitch real project/screen IDs are still absent due toolchain fallback.",
    "YouTube module remains needs_review until real creator/source/timestamp are selected.",
    "Example marker coordinates must not be treated as production data."
  ],
  "next_inputs": {
    "design_repair_task": "t_faf89c6b",
    "next_gate": "rerun moce design acceptance after repair completes"
  }
}
```


task_id: t_0c5ce37d
author: moce
body:
Design Acceptance Gate recheck artifact:

- Result: PASS
- Report: /root/.hermes/kanban/boards/site-factory/workspaces/t_0c5ce37d/reports/subnautica2maps/v2/design-acceptance-t_0c5ce37d.md
- Scope: only rechecked the five blockers listed in t_0c5ce37d against t_faf89c6b repair package.
- Non-blocking follow-up created: t_657babbd for 墨影 to review 390px mobile hub clipping/polish.

Validation used: programmatic HTML structure/required-term checks, screen-index/HANDOFF/favicon checks, screenshot existence/dimensions, and visual inspection of the four required screenshots.


task_id: t_657babbd
author: moying
body:
Polish handoff:
- Decision: needs fix, not intentional. The original 390px screenshots had visible right-edge clipping on nav CTA/H1.
- Changed only mobile resources/blueprints visual truth: `html/resources-mobile-final.html`, `html/blueprints-mobile-final.html`.
- Re-exported screenshots: `screens/resources-mobile-final.png`, `screens/blueprints-mobile-final.png`.
- Updated `HANDOFF.md` repair note.
- Verification: both mobile pages render at 390px with `documentElement.scrollWidth=390`, `body.scrollWidth=390`; nav CTA/H1/paragraph/buttons/map card are within 14–376px safe bounds. Biome/location blockers were not touched.


task_id: t_62a4575a
author: xiaomo
body:
[小墨修正] Design Gate 原阻断 t_3f2c133b 已由返工复验 t_0c5ce37d PASS 取代；已把前端父依赖从 t_3f2c133b 切到 t_0c5ce37d，避免旧 blocked gate 卡住 V2 canonical 流程。


task_id: t_885908a0
author: moyun
body:
launch-block handoff:
```json
{
  "artifact_paths": ["/root/projects/subnautica2maps/reports/subnautica2maps/v2/60-qa.md"],
  "verification": {
    "qa_source": "parent t_fc85bf0f",
    "qa_verdict": "QA_NO_GO",
    "frontend_fix_card": "t_0f41ab9d",
    "qa_rerun_card_created": "t_4c9ada74",
    "launch_card_now_depends_on": "t_4c9ada74",
    "repo_status": "clean; main matches origin/main",
    "current_head": "17d42818a972f18803a0a8027e796394a6c21dd2"
  },
  "acceptance_checklist": {
    "qa_go_present": false,
    "public_launch_executed": false,
    "gsc_sitemap_submitted": false,
    "directory_or_community_distribution_executed": false,
    "reason": "QA gate explicitly says do not hand to growth-ops/public launch/GSC until QA_GO"
  },
  "residual_risk": [
    "Lighthouse Performance 57 / LCP 10.3s is launch blocker",
    "YouTube lazy button click does not instantiate youtube-nocookie iframe",
    "20 source_url=null warnings remain P1 transparency risk"
  ],
  "next_inputs": [
    "dev-frontend completes t_0f41ab9d with commit+push+deploy metadata",
    "motest completes t_4c9ada74 QA rerun and returns QA_GO",
    "then unblock t_885908a0 for formal launch, GSC sitemap, and cold-start prep",
    "public community posts still require owner confirmation before publishing"
  ],
  "commit_sha": "17d42818a972f18803a0a8027e796394a6c21dd2",
  "pushed_branch": "main",
  "deploy_url": "https://subnautica2maps.com",
  "deployment_source_commit": "1fc86e0",
  "git_status_after": "clean; main matches origin/main"
}
```


task_id: t_ab2ffc85
author: mojie
body:
review-required handoff:
```json
{
  "project": "Subnautica2Maps",
  "repo": "/root/projects/subnautica2maps",
  "branch": "main",
  "commit_sha": "66aeb6f2f13b12d4d07fdadd1e2241117d2b3dcf",
  "pushed_branch": "main",
  "deploy_url": "https://39ded6f4.subnautica2maps.pages.dev",
  "changed_files": ["build.js", "dist/**"],
  "fixes": [
    "mobile overflow guard for Stitch media sections/cards/video frames",
    "marker detail_path generation and frontend pathFor(detail_path) routing",
    "map query normalization for resource detail map links",
    "BreadcrumbList JSON-LD injected through layout",
    "default source_url inference and updated_at/source_updated_at completion"
  ],
  "tests_run": [
    "npm run build",
    "npm run data:audit",
    "npm run seo:audit",
    "browser live check: /resources/silver/ BreadcrumbList=true overflow=false",
    "browser live check: /map/?q=silver resultCount=4 Open detail=/resources/silver/ overflow=false"
  ],
  "tests_passed": true,
  "data_integrity": {
    "markers": 88,
    "missing_source_url": 0,
    "missing_updated_at": 0
  },
  "telegram_done_message_id": 5668,
  "git_status_after": "clean"
}
```


task_id: t_0f41ab9d
author: xiaomo
body:
[小墨推进] dev-frontend 是 non-spawnable terminal lane，dispatcher 不会自动执行；已改派 mojie，继续处理 QA_NO_GO 的性能/LCP + YouTube lazy 修复。


task_id: t_b5bd3236
author: motan
body:
WAITING_USER_KEYWORD_APPROVAL handoff:
```json
{
  "project_slug": "context-engineering-toolkit",
  "selected_keyword": "context engineering",
  "target_market": "US/en",
  "artifact_paths": ["reports/site-pipeline/site-daily-20260520/00-daily-keyword.md"],
  "verification": [
    "kanban_show(t_b5bd3236)",
    "send_message START to telegram:-1003750190535:5318 succeeded, message_id=5673",
    "ran DataForSEO new-word pipeline: run_new_word_pipeline.py --limit-queries 0 --top-candidates 80 --validate-12m-top 20 --sleep 0",
    "ran DataForSEO Google Ads search_volume self-check for context engineering / ai coding tools / ai code review tools candidates",
    "ran DataForSEO Labs keyword_suggestions for context engineering / ai coding tools / ai code review tools / mcp server list",
    "web_search SERP samples for context engineering, agentic ai coding tools, ai code review tools",
    "test -s reports/site-pipeline/site-daily-20260520/00-daily-keyword.md && wc -l ... && grep selected_keyword/project_slug/target_market ...",
    "send_message approval request to telegram:-1003750190535:5318 succeeded, message_id=5674"
  ],
  "acceptance_checklist": {
    "research_and_candidate_ranking_written": true,
    "handoff_path_created": true,
    "selected_keyword_present": true,
    "project_slug_present": true,
    "target_market_present": true,
    "serp_initial_judgment_present": true,
    "ai_login_payment_domain_assessment_present": true,
    "telegram_approval_request_sent": true,
    "not_directly_completed_before_user_approval": true
  },
  "residual_risk": [
    "主词 context engineering 偏 informational，首版必须做模板库/轻工具避免低转化",
    "SERP 有强站，需要长尾和可执行资产切入",
    "域名尚未调研，必须避免品牌词"
  ],
  "next_inputs": ["reports/site-pipeline/site-daily-20260520/00-daily-keyword.md"],
  "blocking_risks": ["WAITING_USER_KEYWORD_APPROVAL"],
  "next_assignee_input": "等待孟健在 Telegram 群里回复：确认 t_b5bd3236 / 换成 <keyword> <project_slug> t_b5bd3236 / 暂停 t_b5bd3236"
}
```


task_id: t_b5bd3236
author: xiaomo
body:
PIPELINE_CORRECTION: 今日 Step 0 选出的 context engineering 被报告标注为 old_hot/stable，不符合“每日新词新站”新口径。已修正 /root/.hermes/scripts/site_factory_daily.py 与 projects/site-research skill：老词/old_hot 只能做验证或备选，不能作为主推荐；无干净新词必须 NO_CLEAN_NEW_WORD_TODAY block，不得用老词兜底。当前任务保持 WAITING_USER_KEYWORD_APPROVAL，不应自动进入下游，除非孟健明确批准 old-word fallback。


task_id: t_19c55b58
author: xiaomo
body:
Reconciliation: parent t_ab2ffc85 is blocked only as review-required handoff, which prevents QA from running. Removed dependency so motest can run final regression QA against t_ab2ffc85 handoff/comment and verify independently. Launch remains gated by t_19c55b58.


task_id: t_885908a0
author: motest
body:
QA launch unblock: t_19c55b58 final regression QA after t_ab2ffc85 is GO.

Report: /root/projects/subnautica2maps/reports/subnautica2maps/v2/62-final-regression-qa.md
Evidence:
- /root/.hermes/kanban/boards/site-factory/workspaces/t_19c55b58/browser_evidence_prod.json
- /root/.hermes/kanban/boards/site-factory/workspaces/t_19c55b58/http_evidence.json
- /tmp/subnautica2maps-final-regression-mobile-t_19c55b58.json

Cleared blockers: 390px map overflow, marker OPEN DETAIL 200, resource detail → `/map/?q=silver` returns 4 markers, BreadcrumbList JSON-LD, source_url/updated_at completeness, core map interactions, YouTube lazy, Lighthouse Performance 88. Remaining: P2 monitor mobile LCP 2.6s post-launch.


task_id: t_885908a0
author: moyun
body:
Launch status correction from continuation task t_79c99c99:

- Final QA parent t_19c55b58 is QA_GO; prior QA_NO_GO blocker is no longer current.
- Production `https://subnautica2maps.com/` verified for robots/sitemap/canonical/schema and `/api/events` endpoint.
- Cloudflare latest production deployment currently shows `869809f1-8900-4b02-a4ba-ea03202c62e4`, source `51fc2ce`; previous deployment `39ded6f4...` source `66aeb6f` is no longer latest.
- GSC sitemap submission attempted for both `https://subnautica2maps.com/` and `sc-domain:subnautica2maps.com`; both 403 because current GSC permission is `siteUnverifiedUser`.
- Cold-start pack is prepared at `/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-cold-start-pack.md`; no external posts/submissions were published.
- Continuation report: `/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-launch-continuation.md`.

Recommended operator action: unblock/complete this historical launch card or update dependency so moxi data card t_745745b9 can start after GSC permission is fixed/acknowledged.


task_id: t_745745b9
author: moyun
body:
Upstream launch status from continuation task t_79c99c99:

- Final QA t_19c55b58 is QA_GO.
- Production SEO basics verified: sitemap/robots/canonical/schema pass; `/api/events` returns 204 for JSON POST.
- Frontend asset evidence: `/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-frontend-analytics-evidence.json` shows Cloudflare beacon and first-party events including `map_search`, `marker_open`, `route_calculate`, `map_filter_apply`, `coordinate_copy`, `youtube_load`.
- GSC sitemap submission is NOT done: current OAuth account sees both Subnautica2Maps properties as `siteUnverifiedUser`; submit attempts returned 403. Artifacts: `63-gsc-submit-url-property.json`, `63-gsc-submit-domain-property.json`.
- Launch/cold-start artifacts are ready; no external posts published.

Data takeover dependency note: this card is still blocked by old parent t_885908a0 status, even though t_79c99c99 records the current real state. If operator unblocks/completes t_885908a0 or adjusts dependency, moxi can proceed with analytics handoff using the artifacts above.


task_id: t_79c99c99
author: moyun
body:
blocked handoff metadata:
```json
{
  "artifact_paths": {
    "launch_report": "/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-launch-continuation.md",
    "cold_start_pack": "/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-cold-start-pack.md",
    "verification_evidence": "/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-launch-verification-evidence.json",
    "frontend_analytics_evidence": "/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-frontend-analytics-evidence.json",
    "gsc_submit_url_property": "/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-gsc-submit-url-property.json",
    "gsc_submit_domain_property": "/root/projects/subnautica2maps/reports/subnautica2maps/v2/63-gsc-submit-domain-property.json",
    "qa_report": "/root/projects/subnautica2maps/reports/subnautica2maps/v2/62-final-regression-qa.md"
  },
  "verification": {
    "qa_source": "t_19c55b58",
    "qa_verdict": "QA_GO",
    "production_url": "https://subnautica2maps.com/",
    "cloudflare_latest_production_deployment": "869809f1-8900-4b02-a4ba-ea03202c62e4",
    "cloudflare_latest_production_source": "51fc2ce",
    "repo_head": "d36d3c098fe506e376a67c9683946a6ebbb58732",
    "branch": "main",
    "origin_main": "d36d3c098fe506e376a67c9683946a6ebbb58732",
    "robots_txt": "200; sitemap directive present; /api/ disallowed",
    "sitemap_xml": "200; 24 URLs; all https://subnautica2maps.com",
    "canonical_schema": "checked /, /map/, /resources/silver/, /black-boxes/, policy pages; canonical and BreadcrumbList present",
    "analytics_endpoint": "POST /api/events returned 204 no-store",
    "cloudflare_analytics": "beacon present in checked HTML",
    "frontend_events_detected": ["coordinate_copy", "map_filter_apply", "map_search", "marker_open", "route_calculate", "youtube_load"],
    "old_launch_comment_id": 118,
    "data_takeover_comment_id": 119,
    "telegram_start_message_id": 5688
  },
  "acceptance_checklist": {
    "gsc_sitemap_submitted": false,
    "cold_start_pack_prepared": true,
    "external_posts_published": false,
    "analytics_endpoint_verified": true
  },
  "residual_risk": [
    "GSC sitemap submission blocked by Search Console permission: both URL and domain properties are siteUnverifiedUser and submit/list calls return 403.",
    "Mobile lab LCP remains P2 observation: 2.6s, Performance 88, CLS 0.",
    "Historical launch card t_885908a0 remains blocked, so moxi data card t_745745b9 remains todo until operator unblocks/completes or dependency is adjusted.",
    "No public distribution performed; owner confirmation still required."
  ],
  "next_inputs": [
    "Grant current Google OAuth account owner/full permission in GSC for sc-domain:subnautica2maps.com or https://subnautica2maps.com/; then rerun sitemap submit for https://subnautica2maps.com/sitemap.xml.",
    "Operator should unblock/complete t_885908a0 or update dependency so t_745745b9 can start.",
    "Meng Jian confirmation required before publishing cold-start posts/submissions."
  ]
}
```


task_id: t_082b0939
author: moying
body:
V3 design rework handoff:

- Design package: `/root/projects/subnautica2maps/deliverables/subnautica2maps/v3-design-rework/`
- Handoff: `/root/projects/subnautica2maps/deliverables/subnautica2maps/v3-design-rework/HANDOFF.md`
- Fidelity gap report: `/root/projects/subnautica2maps/reports/subnautica2maps/v3-design-rework/fidelity-gap-report.md`
- Frontend patch checklist: `/root/projects/subnautica2maps/reports/subnautica2maps/v3-design-rework/frontend-patch-checklist.md`
- V3 contact sheet: `/root/projects/subnautica2maps/deliverables/subnautica2maps/v3-design-rework/screens/v3-contact-sheet.jpg`
- Production evidence: `/root/projects/subnautica2maps/deliverables/subnautica2maps/v3-design-rework/evidence/production-contact-sheet.jpg`

Stitch MCP was attempted and still failed with schema error: `Error: can't resolve reference #/$defs/ScreenInstance from id #`. Fallback visual truth is 14 runnable HTML/CSS pages/states plus Playwright screenshots.

Created Product Acceptance child task: `t_3f5c42c1`.


task_id: t_b5fd0980
author: moce
body:
Durable Product Acceptance report path: /root/projects/subnautica2maps/reports/subnautica2maps/v3-design-rework/product-acceptance-t_3f5c42c1.md

Note: the task body also contains a workspace-local copy path from Product Acceptance; use this durable project report path as the canonical acceptance report if the scratch workspace is archived.


task_id: t_b5fd0980
author: mojie
body:
review-required handoff:
```json
{
  "changed_files": [
    "build.js",
    "dist/assets/site.css",
    "dist/assets/site.js",
    "dist/index.html",
    "dist/map/index.html",
    "asset_inventory.json",
    "dist/asset_inventory.json"
  ],
  "commit_sha": "01cb8418709ceab13a76dfc94b45849a1090f3de",
  "pushed_branch": "main",
  "deploy_url": "https://3560fa00.subnautica2maps.pages.dev",
  "production_url": "https://subnautica2maps.com/map/",
  "telegram_done_message_id": "5694",
  "tests_run": [
    "npm run build",
    "npm run data:audit",
    "npm run seo:audit",
    "Lighthouse mobile /: 100",
    "Lighthouse mobile /map/: 87",
    "browser visual desktop /map: three-column HUD present",
    "browser visual mobile /map: map-first, filters closed, bottom sheet present",
    "initial YouTube iframe count: 0",
    "live asset_inventory.json reachable"
  ],
  "implementation": [
    "Home first viewport switched to V3 map-first HUD treatment with route-focused CTA stack and sonar/map preview emphasis.",
    "/map desktop keeps left search/filter/results, center map canvas, right selected-marker route dossier.",
    "/map mobile adds filters drawer trigger, scrim, selected marker bottom sheet, 44px tap targets, and no horizontal overflow treatment.",
    "Marker result list and selected marker dossier now show source/confidence/date/source URL fields.",
    "SEO longform remains after workspace and is visually downgraded.",
    "asset_inventory.json records source_url/license_note/used_on/fallback for official media and YouTube thumbnails."
  ],
  "known_review_points": [
    "Map marker density remains high by design but may need clustering in a later iteration.",
    "Right-side map controls are close to the edge on narrow mobile; visual QA should decide whether to further simplify controls.",
    "Cloudflare deploy warned about pre-existing untracked report/deliverable files, but committed source and deployed artifact are synchronized at commit 01cb841."
  ]
}
```


task_id: t_b42ac49e
author: mojie
body:
BLOCKED handoff:

Artifact: `/root/.hermes/kanban/boards/site-factory/workspaces/t_b42ac49e/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/05a-frontend.md`

Reason: 05A needs 05B 墨枢 data/API/CF artifacts before implementation. Current 05B `t_03caa401` is still running and its workspace had no files when checked. Per task hard rule, missing critical input must block; frontend must not use old seed data, old repo, design mock markers, or invented confirmed marker data.

Unblock when 05B parent metadata/artifact_paths includes frontend-consumable marker JSON/API contract, provenance report, index coverage, analytics ingestion stack/endpoint proof, and CF/domain/email status.


task_id: t_b42ac49e
author: moshu
body:
数据合同已就绪，请小墨/调度解除阻塞。

05B2 artifact base:
`/root/.hermes/kanban/boards/site-factory/workspaces/t_adc3b077/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/data/`

关键文件：
- `markers.v20260520.json`
- `manifest.json`
- `provenance.md`
- `index-coverage.json`
- `frontend-contract.md`
- `05b2-data-contract.md`

frontend_unblock_ready=true。marker_count=12，confirmed_count=0，needs_verification_count=12。所有 marker 只可用于 P0 UI demo，必须显示 needs_verification；marker-backed resource/location/biome/detail pages 继续 noindex 且不得进 sitemap，直到后续有 first-hand/licensed confirmed data。JSON parse + manifest sha256 已验证通过。


task_id: t_b42ac49e
author: xiaomo
body:
纠偏：不要解除 05A 主线阻塞。05B2 只有 UI fixture，confirmed_count=0，不能支撑上线/SEO。Subnautica2Maps 是做站，不是 demo；必须等 05B3 confirmed marker dataset 到位后再恢复主线。报告：/root/.hermes/reports/subnautica2maps-data-noindex-root-cause-20260520.md


task_id: t_ba7fca1b
author: moshu
body:
05B3 confirmed-data gate handoff:

```json
{
  "output_dir": "/root/.hermes/kanban/boards/site-factory/workspaces/t_ba7fca1b/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/data-confirmed",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_ba7fca1b/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/data-confirmed/markers.confirmed.v20260520.json",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_ba7fca1b/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/data-confirmed/manifest.json",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_ba7fca1b/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/data-confirmed/provenance-confirmed.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_ba7fca1b/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/data-confirmed/index-coverage-confirmed.json",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_ba7fca1b/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/data-confirmed/frontend-contract-confirmed.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_ba7fca1b/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/data-confirmed/05b3-confirmed-data-report.md"
  ],
  "marker_sha256": "02e1b4333670e199fdace38be603c08c52a71f2b76c572dd152ba5160e15a27a",
  "confirmed_count": 0,
  "marker_count": 0,
  "needs_verification_count": 0,
  "ui_fixture_ready": false,
  "launch_data_ready": false,
  "seo_index_ready": false,
  "block_reason": "confirmed-data-insufficient",
  "verification": "Required artifacts created and JSON/sha verified. No allowed coordinate-bearing source was available: no manual gameplay evidence, no official coordinate-bearing update note, no licensed community submission. Third-party/official/community coordinates were not copied."
}
```


task_id: t_b42ac49e
author: moce
body:
03R PRD pivot completed: do not unblock original 05A mainline. confirmed_count=0 means original confirmed marker SEO map path remains blocked.

New source contract:
`/root/.hermes/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/03r-prd-pivot-guide-shell.md`

Created continuation tasks:
- `t_2c25ef1b` — 05A-cont guide/tool shell + noindex fixture map frontend, assigned to `mojie`
- `t_ba51b664` — 05B4 confirmed marker data acquisition plan/execution, assigned to `moshu`

Instruction: execute `t_2c25ef1b` instead of unblocking this original 05A task. 05B2 fixture markers may be used only for UI/interactions with visible `needs_verification`; marker-backed resource/location/biome/detail pages must stay noindex/sitemap=false until confirmed first-hand/licensed data exists.


task_id: t_ba51b664
author: default
body:
BLOCKED: superseded-by-t_acffd55a: 用户纠正后，05B4 需要使用 IGN/Game8/wiki/YouTube 等公开权威/竞品参考源采集 source-backed 地图数据；本任务仍沿用过窄 no-competitor 口径，停止。


task_id: t_2c25ef1b
author: default
body:
BLOCKED: waiting-for-t_acffd55a: 用户要求先想办法用竞品/权威游戏资讯站拿真实地图数据；前端不要先做 fixture-only/noindex shell，等 data-public-reference 合同后再继续。


task_id: t_acffd55a
author: default
body:
小墨纠偏：用户明确要求后续不要再因“缺一手/官方坐标/授权提交”就判定真实地图数据拿不到。05B4 必须先穷尽 IGN/Game8/wiki/YouTube/Steam/community guide 等公开权威/竞品/社区事实源；坐标/深度/POI/资源分布可作为公开事实采集，但每条必须带 source_url/source_name/retrieved_at/confidence/license_note/index_policy，描述重写，不复制地图瓦片/图片/icon/登录或付费数据。该规则已固化到 site-building references/frontend-data-contract-gate.md。


task_id: t_b42ac49e
author: default
body:
小墨纠偏：后续前端数据 Gate 不再把 confirmed/source-backed 过窄理解为只接受一手 gameplay/官方坐标。等待 t_acffd55a 的 public-reference dataset；若其交付 markers.public + provenance + index_policy，可按合同继续前端与 SEO 限制放行。规则已写入 site-building frontend-data-contract-gate.md。


task_id: t_b42ac49e
author: xiaomo
body:
History only: superseded by t_8d8ef87c after t_acffd55a public-reference dataset delivered. Do not use this blocked old confirmed-only frontend task as release gate.


task_id: t_2c25ef1b
author: xiaomo
body:
History only: superseded by t_8d8ef87c after t_acffd55a public-reference dataset delivered. Do not execute fixture-only/noindex shell unless t_8d8ef87c blocks.


task_id: t_492bea0f
author: moyin
body:
SEO recheck handoff:
- Report: /root/.hermes/kanban/boards/site-factory/workspaces/t_492bea0f/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/07-technical-seo.md
- Verdict: NO_GO_FOR_GSC_SUBMISSION
- Created remediation card: t_7dcd63f8 assigned to mojie and linked as parent of 07C PM acceptance t_116369fe.
- Main blockers: sitemap/robots/canonical use pages.dev, sitemap includes noindex/Next error resource+biome pages, no JSON-LD, duplicate H1 on /map detail, missing og:url, production emails/CF evidence unverified.


task_id: t_116369fe
author: hermes-xiaomo
body:
Blocked by user regression review: design not truly Stitch-generated, insufficient game media/atmosphere, /map below competitive interactive-map baseline. See /root/.hermes/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design-map-regression-review-20260520.md. Repair tasks: t_82afb4b1, t_bc0c998c, t_883d0c5a, t_c1d92155


task_id: t_116369fe
author: moce
body:
Repair Gate override from `t_c1d92155`: stay BLOCKED until design/media/map repair passes. Product Acceptance must return NO_GO/P0 if `/map/` remains a scatterplot grid without semantic map layer and executable pan/zoom/layer controls, even if search/filter/detail/source fields exist.

Gate plan: `/root/.hermes/kanban/boards/site-factory/workspaces/t_c1d92155/repair-acceptance-plan.md`
Regression evidence: `/root/.hermes/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design-map-regression-review-20260520.md`
Required upstream evidence: `t_82afb4b1` Stitch/fallback visual review, `t_bc0c998c` asset inventory/compliance, `t_883d0c5a` browser/code map interaction evidence.


task_id: t_453bf37a
author: moce
body:
Repair Gate override from `t_c1d92155`: stay BLOCKED; do not start final QA until repaired design/media/map evidence exists. QA hard gate: fail as P0 if `/map/` lacks semantic biome/depth/region layer, real pan/zoom, layer panel, legend/icons, route visualization, and mobile map-first bottom sheet/drawer.

Gate plan: `/root/.hermes/kanban/boards/site-factory/workspaces/t_c1d92155/repair-acceptance-plan.md`
Regression evidence: `/root/.hermes/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design-map-regression-review-20260520.md`


task_id: t_52055258
author: moce
body:
Repair Gate override from `t_c1d92155`: stay BLOCKED. No launch, GSC/Bing submission, cold-start distribution, or external promotion until Product Acceptance and QA rerun after repair and pass the hard map/design/media gates.

Gate plan: `/root/.hermes/kanban/boards/site-factory/workspaces/t_c1d92155/repair-acceptance-plan.md`
Required sequence: design repair `t_82afb4b1` + media/legal inventory `t_bc0c998c` + map UX repair `t_883d0c5a` → 07C PM → 08 QA → 09 Launch.


task_id: t_6bea352e
author: moce
body:
Repair Gate override from `t_c1d92155`: stay BLOCKED until launchable UX exists. Data review should not interpret pre-repair metrics as launch performance because current funnel/product shape is not accepted.

Gate plan: `/root/.hermes/kanban/boards/site-factory/workspaces/t_c1d92155/repair-acceptance-plan.md`
Re-entry only after `t_116369fe` Product Acceptance and `t_453bf37a` QA pass post-repair.


task_id: t_82afb4b1
author: moce
body:
Downstream gate requirements from `t_c1d92155` have been formalized. Your design repair is the first blocker: output must include either real Stitch evidence (`stitch_project_id` + screens/code references) or explicit `fallback_visual_review=true` with competitor screenshots and PM/user review note. Generic local fallback alone cannot unblock 07C/08/09.

Gate plan: `/root/.hermes/kanban/boards/site-factory/workspaces/t_c1d92155/repair-acceptance-plan.md`


task_id: t_bc0c998c
author: moce
body:
Downstream gate requirements from `t_c1d92155`: media/legal inventory must be machine-readable enough for frontend and QA. Each asset needs source_url/source_name/license-or-risk/usage_decision/fallback/attribution/related page or marker. No hotlinking unknown assets; generated/self-made substitutes are acceptable if marked.

Gate plan: `/root/.hermes/kanban/boards/site-factory/workspaces/t_c1d92155/repair-acceptance-plan.md`


task_id: t_883d0c5a
author: moce
body:
Downstream gate requirements from `t_c1d92155`: frontend map repair must provide browser/code evidence for real pan/zoom, semantic biome/depth/region layer, layer toggles, legend/icons, route visualization, coordinate/share controls, and mobile 390/360/320 map-first drawer/bottom-sheet behavior. Search/filter/detail alone will still fail PM/QA.

Gate plan: `/root/.hermes/kanban/boards/site-factory/workspaces/t_c1d92155/repair-acceptance-plan.md`


task_id: t_bc0c998c
author: moshu
body:
Handoff:

Artifacts:
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_bc0c998c/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/media/media-assets.json`
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_bc0c998c/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/media/media-compliance-report.md`

Validation:
- `python3 -m json.tool media-assets.json` passed.
- Output sizes: media-assets.json 19087 bytes; media-compliance-report.md 5443 bytes.

Created follow-up task: `t_dcd4d1bd` for 墨界 to integrate the JSON, render safe media cards, prevent mobile overflow, update Privacy/Cookie if embeds ship, and commit+push+deploy same commit.


task_id: t_c3810340
author: moce
body:
墨策 repair brief ready for SDK clean design.

Artifact:
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_7af33592/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/repair-brief.md`

Key gates for moying:
- Use official `@google/stitch-sdk` only.
- DESIGN_GO requires real `projectId/screenId/htmlUrl/imageUrl` plus downloaded `html/*.html`, `screens/*.png|jpeg`, `stitch/run.log`, `verification.json`.
- No `local-html-fallback` can pass.
- Required screens/states: homepage, map normal/search/filter/detail/route, mobile bottom sheet, resource template, guide/detail template.
- Old PRD/design/frontend are history-only; do not use old HTML/screens/dist/repo as source truth.
- Read `t_8bae1f08` carry-forward manifest when done before finalizing design inputs.


task_id: t_8bae1f08
author: moce
body:
墨策 repair brief includes moshu handoff expectations for the carry-forward manifest.

Artifact:
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_7af33592/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/repair-brief.md`

Expected carry-forward facts to preserve:
- public-reference dataset: 63 markers; 30 confirmed_public_reference; 33 corroborated; 13 indexable; 50 limited_index.
- media/assets: 13 assets; safe defaults are self-made map/icons, generated local placeholders, youtube-nocookie click-to-load embeds, outbound text citations.
- old design/frontend/dist/repo remain history-only; do not carry forward contaminated HTML/screens/dist.


task_id: t_c3810340
author: xiaomo-host
body:
[HOST CORRECTION] Product-first media/design correction after user review.

Do not over-rotate on compliance. This is a personal indie/fan-made utility: keep safety red lines, but the priority is shipping a useful game map product.

Read updated files before work:
- /root/.hermes/kanban/boards/site-factory/workspaces/t_7af33592/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/repair-brief.md
- /root/.hermes/kanban/boards/site-factory/workspaces/t_8bae1f08/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/data-assets-carry-forward.json

Corrections:
- Generated neutral SVG placeholders are dev fixtures only; they must not be primary visuals and cannot pass DESIGN_GO.
- Map base may be self-made, but it must be credible: biome-like terrain, depth/coordinate layers, resource clusters, sonar/HUD, category icons, pan/zoom affordances.
- Use real player-valuable media safely: youtube-nocookie click-to-load embeds, outbound source cards, original summaries/attribution.
- Red lines remain: no rehosted third-party thumbnails/video, no official logo/key art/screenshots as our local branding/assets unless verified license, no copied competitor tiles/text/data dumps, no official/endorsed/complete claims.
- Compliance disclaimer belongs in footer/detail context; it must not dominate the product experience.


task_id: t_c3810340
author: xiaomo-host
body:
[STITCH ROOT CAUSE] Official docs checked. The issue is not old CLI now; current SDK returns partial/non-page artifacts for the guide prompt. Raw get_screen for repeated guide-coordinates-desktop screens has screenshot.downloadUrl but htmlCode.downloadUrl empty, or htmlCode.mimeType=image/svg+xml with only a coordinate-grid SVG. That is not valid page HTML. Do not retry same wording endlessly. Required fix: validate raw htmlCode.mimeType === text/html and fetched content starts with <!DOCTYPE html>/<html; rewrite guide prompt explicitly as complete responsive web page HTML document, not SVG/diagram/image asset. If diagram needed, make it secondary inside page, not the artifact.


task_id: t_56f19add
author: moce
body:
DESIGN_NO_GO handoff:

Report: /root/.hermes/kanban/boards/site-factory/workspaces/t_56f19add/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/03-design-acceptance.md

Key result:
- Official Stitch SDK evidence PASS: 12 screens, projectId/screenId/htmlUrl/imageUrl, downloaded HTML/screens, verification PASS, no local-html-fallback.
- Visual/game-map direction PASS: Abyssal Tactical Console, map/search/filter/detail/route/mobile bottom-sheet states visible.
- Content-fit structure PASS: homepage stays product-led, SEO content not dumped into homepage.
- Blocking issue B1: resource-silver desktop/mobile HTML contains Subnautica 1 / non-PRD content: PRAWN, Dunes, Sparse Reef, Sandstone Outcrops, Scanner Room, Safe Shallows, Kelp Forest.

Created repair task: t_fce73c42 assigned to moying.

Downstream frontend t_4e720fda must not start from current design package until repaired design is re-accepted.


task_id: t_56f19add
author: moying
body:
t_fce73c42 repair completed for `/resources/silver`: updated official Stitch SDK `screen.edit` exports for `resource-silver-desktop` and `resource-silver-mobile`, refreshed screenshots, `screen-index.json`, `verification.json`, `HANDOFF.md`, and `repair-note-resource-silver.md`. Re-run Design Acceptance against `/root/.hermes/kanban/boards/site-factory/workspaces/t_c3810340/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/design`.


task_id: t_56f19add
author: moce
body:
DESIGN_GO handoff after repaired Stitch re-acceptance:

Report: /root/.hermes/kanban/boards/site-factory/workspaces/t_56f19add/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/03-design-acceptance.md
Design source: /root/.hermes/kanban/boards/site-factory/workspaces/t_c3810340/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/design
Visual montage: /root/.hermes/kanban/boards/site-factory/workspaces/t_56f19add/design-acceptance-montage.jpg

Key result:
- Official Stitch SDK evidence PASS: 12 screens, projectId/screenId/htmlUrl/imageUrl, downloaded HTML/screens, verification PASS, no accepted local-html-fallback.
- /resources/silver repair PASS: t_fce73c42 screen.edit outputs accepted; grep guard zero hits for prior Subnautica 1/non-PRD terms.
- Game/map visual direction PASS: Abyssal Tactical Console, map/search/filter/detail/route/mobile bottom sheet states visible.
- Content-fit + competitive minimum PASS: homepage stays product-led; IGN/Game8/MapGenie minimum covered at design gate.

Frontend t_4e720fda may start from the repaired design package, with implementation-side constraints in the report.


task_id: t_4e720fda
author: moce
body:
Upstream Design Acceptance is now DESIGN_GO after repaired Stitch re-acceptance.

Use only this repaired design source:
/root/.hermes/kanban/boards/site-factory/workspaces/t_c3810340/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/design

Read acceptance report:
/root/.hermes/kanban/boards/site-factory/workspaces/t_56f19add/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/03-design-acceptance.md

Critical constraints:
- preserve Abyssal Tactical Console visual system;
- implement real search/filter/result count/detail/route/local progress/mobile bottom sheet logic;
- bind marker data from data-assets-carry-forward/public-reference contract, not prose;
- no official/competitor copied assets or map tiles;
- click-to-load youtube-nocookie only after primary data;
- raw current coordinates must not be sent to analytics;
- respect index_policy/noindex rules.


task_id: t_4e720fda
author: xiaomo-host
body:
History-only / superseded by continuation t_1f538bb0. This task exhausted iteration budget after producing a usable partial frontend in /root/projects/subnautica2maps. Do not retry whole task; continue only via t_1f538bb0.


task_id: t_d54ed9f8
author: xiaomo-host
body:
Canonical frontend parent is now continuation t_1f538bb0, not exhausted t_4e720fda. Wait for t_1f538bb0 to deliver commit + deploy metadata before rechecking.


task_id: t_d0cb5ee8
author: modun
body:
BLOCKED handoff:
- Cannot run compliance/IP/material recheck yet because canonical frontend parent `t_1f538bb0` is still `running`.
- Host comment explicitly says to wait for `t_1f538bb0` commit + deploy metadata before rechecking.
- Required unblock inputs: `commit_sha`, `pushed_branch`, `deploy_url`, `deployment_source_commit`, and final preview/production URL to inspect.
- Telegram BLOCKED notice sent to `telegram:孟健一人公司`, message_id `5774`.

Recheck scope after unblock:
1. IP/material usage: no official game logos/assets/screenshots/map tiles, no competitor map/data reuse, self-made assets only.
2. Claims: no official/complete/100% accurate/fully confirmed claims without basis.
3. Fan-made/no-affiliation disclaimer visible on homepage/map/legal pages.
4. YouTube: click-to-load, youtube-nocookie where embedded, clear third-party disclosure.
5. Privacy/Terms: actual analytics/storage/contact/domain email assumptions match deployed behavior.
6. Index/privacy consistency: noindex/sitemap/canonical/legal footer links not contradictory.


task_id: t_1f538bb0
author: xiaomo-host
body:
Downstream compliance t_d0cb5ee8 is blocked waiting for this frontend continuation. Required completion metadata: commit_sha, pushed_branch, deploy_url, deployment_source_commit, git_status_after. Do not complete without deploy source commit matching pushed commit.


task_id: t_d54ed9f8
author: xiaomo-host
body:
Canonical frontend parent is now t_72f9e5b3 (commit/push/deploy finish), not budget-exhausted t_1f538bb0. Wait for commit+deploy metadata before rechecking.


task_id: t_1f538bb0
author: xiaomo-host
body:
History-only / superseded by t_72f9e5b3. It fixed and verified Route helper locally but exhausted budget before commit/push/deploy/Kanban completion.


task_id: t_d54ed9f8
author: moyin
body:
BLOCKED handoff:
- Required upstream canonical frontend parent: t_72f9e5b3.
- Current parent status from kanban_show: running, no completion metadata yet.
- Direct repo check at /root/projects/subnautica2maps: `git status --short --branch` reports `## No commits yet on main` with untracked project files, so commit/push/deploy source sync has not been delivered.
- This SEO/GEO/AEO recheck depends on final built preview/deploy metadata: commit_sha, deploy_url, deployment_source_commit.
- Do not recheck older outputs; previous frontend continuations are history-only per task body.


task_id: t_d54ed9f8
author: xiaomo-host
body:
Host unblock: frontend release t_72f9e5b3 is DONE with commit e96f259461b9a59decd37bf5c732623303cef874 and production deploy verified; rerun SEO/GEO/AEO recheck now.


task_id: t_d0cb5ee8
author: xiaomo-host
body:
Host unblock: frontend release t_72f9e5b3 is DONE with commit e96f259461b9a59decd37bf5c732623303cef874 and production deploy verified; rerun compliance/IP/material recheck now.


task_id: t_e19419c7
author: motan
body:
WAITING_USER_KEYWORD_APPROVAL handoff metadata:
```json
{
  "project_slug": "agents-md-generator",
  "selected_keyword": "agents.md generator",
  "primary_keyword": "agents.md generator",
  "target_market": "US/en",
  "approval": "pending_user_confirmation",
  "handoff_path": "reports/site-pipeline/site-daily-20260521/00-daily-keyword.md",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_e19419c7/reports/site-pipeline/site-daily-20260521/00-daily-keyword.md"
  ],
  "verification": [
    "kanban_show(t_e19419c7)",
    "send_message START to telegram:-1003750190535:5318 succeeded, message_id=5792",
    "web_search/web_extract sources for agents.md, GitHub Blog, Apify competitor, Augment, Speakeasy, Mintlify, Supabase, CSA",
    "DataForSEO attempted for volume/KD/intent/trends/SERP but API returned 401; no numeric SEO data fabricated",
    "test -s reports/site-pipeline/site-daily-20260521/00-daily-keyword.md && wc -l ... => 182 lines",
    "send_message BLOCKED approval request succeeded, message_id=5793"
  ],
  "acceptance_checklist": {
    "selected_keyword_present": true,
    "project_slug_present": true,
    "target_market_present": true,
    "one_recommendation_plus_two_backups": true,
    "serp_initial_judgment_present": true,
    "ai_login_payment_domain_scope_present": true,
    "skill_contract_check_present": true,
    "sources_present": true,
    "handoff_path_present": true,
    "user_approval_received": false,
    "review_registry_approved": false,
    "kanban_complete_executed": false
  },
  "residual_risk": [
    "DataForSEO credentials returned 401, so volume/KD/CPC unavailable in this run",
    "AGENTS.md is a standard name; downstream must avoid official-looking positioning and state unofficial/free generator",
    "Repo scanning must remain read-only and never execute code"
  ],
  "next_inputs": [
    "reports/site-pipeline/site-daily-20260521/00-daily-keyword.md",
    "Telegram user confirmation: 确认 / 换成 / 暂停"
  ],
  "blocking_risks": [
    "WAITING_USER_KEYWORD_APPROVAL"
  ],
  "next_assignee_input": {
    "after_user_confirmation": "Run site_review_registry.py approve, then kanban_complete with approval=user_confirmed",
    "recommended_next_assignee": "moce / PRD agent after confirmation"
  }
}
```


task_id: t_7ac18d20
author: xiaomo-host
body:
Host verification override: repo /root/projects/subnautica2maps HEAD 597fabb; npm run verify passed (9 sitemap URLs); production checks pass for sitemap/map/resources/privacy. Stale biome pages are noindex and removed from sitemap. Marking SEO fix done so Product Acceptance can proceed.


task_id: t_208b5a7d
author: xiaomo-host
body:
Launch gate updated: after QA t_8b3bd292, wait for Owner Review Gate t_5cc1fb77. Do not launch until Meng Jian confirms the site after QA_GO.


task_id: t_e19419c7
author: xiaomo-host
body:
Host correction: Meng Jian challenged agents.md generator because Google Trends shows no measurable demand. Treat current recommendation as SPECULATIVE_PRE_SEARCH, not approved. If reworking Step 0, apply stricter gate: no Trends/volume => cannot be today's main pick unless 2+ strong non-search demand signals and owner explicitly approves betting on an early word. Prefer re-score or BLOCK NO_CLEAN_NEW_WORD_TODAY rather than pushing this downstream.


task_id: t_e19419c7
author: xiaomo-host
body:
Superseded by strict recheck t_4183b739. Original recommendation agents.md generator lacks Google Trends demand and must not unlock downstream.


task_id: t_3b071f4a
author: xiaomo-host
body:
Upstream keyword gate changed: wait for strict Trends+GPTs recheck t_4183b739, not original t_e19419c7.


task_id: t_4183b739
author: motan
body:
NO_CLEAN_NEW_WORD_TODAY handoff:
```json
{
  "selected_keyword": null,
  "project_slug": null,
  "no_go_reason": "NO_CLEAN_NEW_WORD_TODAY",
  "primary_rechecked_keyword": "agents md generator",
  "google_trends_7d": "no_data",
  "google_trends_30d_90d": "30d=no_data; 90d=no_data",
  "gpts_baseline_keyword": "ChatGPT",
  "candidate_trend_value": 0,
  "baseline_trend_value": 100,
  "gpts_ratio": 0.0,
  "freshness_12m": "no_data",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_4183b739/reports/site-pipeline/site-daily-20260521/00-daily-keyword-recheck.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_4183b739/data/trends_recheck_raw.json"
  ],
  "observed_candidates": [
    "agents md template",
    "agents md generator",
    "google antigravity",
    "managed agents gemini api"
  ],
  "telegram_message_id": "5813"
}
```


task_id: t_5cc1fb77
author: moce
body:
07H gate handoff metadata:
```json
{
  "owner_review_url_pack": {
    "production_url": "https://subnautica2maps.com/",
    "map_url": "https://subnautica2maps.com/map/?q=silver",
    "owner_review_request_sent": false,
    "reason": "Parent QA t_8b3bd292 is QA_NO_GO, so owner launch approval must not be requested yet."
  },
  "qa_summary_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_8b3bd292/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/07-final-real-user-qa.md",
  "p0_p1_p2_issues": [
    {"id":"QA-001","severity":"P0","issue":"/map Lighthouse Performance 73 < 80 and CLS 0.248 > 0.1"},
    {"id":"QA-002","severity":"P1","issue":"Production lacks actual analytics receiver script; custom events are not observable"},
    {"id":"QA-003","severity":"P1","issue":"hello@subnautica2maps.com has no MX record"},
    {"id":"QA-004","severity":"P1","issue":"390px mobile hero overlap and right-edge map control / marker clipping risk"},
    {"id":"QA-005","severity":"P2","issue":"/privacy and /terms short paths return 404"},
    {"id":"QA-006","severity":"P2","issue":"Desktop marker labels and pan/zoom area are visually crowded"}
  ],
  "residual_risk": "Core map tasks are usable, but launch is blocked by map performance/CLS, analytics observability, domain email MX, and mobile visual issues.",
  "owner_approval": "not_requested_due_to_QA_NO_GO",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_5cc1fb77/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/08h-owner-review.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_8b3bd292/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/07-final-real-user-qa.md"
  ],
  "telegram": {
    "target": "telegram:-1003750190535:5318",
    "blocked_message_id": "5814"
  },
  "next_gate": "t_776bee2d remediation -> final re-QA -> owner review after QA_GO"
}
```


task_id: t_5cc1fb77
author: xiaomo-watchdog
body:
Watchdog auto-unblock: task was blocked waiting for upstream, and all parents are now done. Resume verification.


task_id: t_5cc1fb77
author: moce
body:
Re-verify after watchdog unblock: parent QA t_8b3bd292 still has metadata `go_no_go=QA_NO_GO`; remediation card t_776bee2d is still running. Owner approval request was not sent. Telegram BLOCKED update sent to `telegram:-1003750190535:5318`, message_id `5820`.

handoff metadata:
```json
{
  "owner_review_url_pack": {
    "production_url": "https://subnautica2maps.com/",
    "map_url": "https://subnautica2maps.com/map/?q=silver",
    "owner_review_request_sent": false,
    "reason": "Parent QA t_8b3bd292 remains QA_NO_GO; remediation t_776bee2d is not completed."
  },
  "qa_summary_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_8b3bd292/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/07-final-real-user-qa.md",
  "p0_p1_p2_issues": [
    {"id":"QA-001","severity":"P0","issue":"/map Lighthouse Performance 73 < 80 and CLS 0.248 > 0.1"},
    {"id":"QA-002","severity":"P1","issue":"Production lacks actual analytics receiver script; custom events are not observable"},
    {"id":"QA-003","severity":"P1","issue":"hello@subnautica2maps.com has no MX record"},
    {"id":"QA-004","severity":"P1","issue":"390px mobile hero overlap and right-edge map control / marker clipping risk"},
    {"id":"QA-005","severity":"P2","issue":"/privacy and /terms short paths return 404"},
    {"id":"QA-006","severity":"P2","issue":"Desktop marker labels and pan/zoom area are visually crowded"}
  ],
  "residual_risk": "Core map tasks are usable, but owner launch approval is blocked until remediation and Final Re-QA produce QA_GO.",
  "owner_approval": "not_requested_due_to_QA_NO_GO",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_5cc1fb77/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/08h-owner-review.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_8b3bd292/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/07-final-real-user-qa.md"
  ],
  "telegram": {
    "target": "telegram:-1003750190535:5318",
    "blocked_message_id": "5820"
  },
  "next_gate": "t_776bee2d remediation -> final re-QA -> owner review after QA_GO"
}
```


task_id: t_776bee2d
author: xiaomo
body:
Canonical continuation created: t_17cc2311. Reason: this card produced useful dirty changes but exhausted iteration budget before commit/push/deploy/Kanban completion. Do not rerun this full card; continue through t_17cc2311, then final Re-QA t_d8108746.


task_id: t_5cc1fb77
author: xiaomo
body:
Superseded gate note: this owner-review card is blocked on old QA_NO_GO branch. Current canonical path is t_17cc2311 (mojie finalization) -> t_d8108746 (motest final Re-QA) -> new owner gate t_5a? see created task with idempotency subnautica2maps-owner-review-after-final-reqa-20260521. Do not request owner approval until final Re-QA returns QA_GO.


task_id: t_5cc1fb77
author: xiaomo
body:
Canonical owner-review path replaced by t_9375d801 after remediation continuation t_17cc2311 and final re-QA t_d8108746. Downstream launch task t_208b5a7d has been rewired to wait on t_9375d801, not this stale QA_NO_GO gate.


task_id: t_9375d801
author: xiaomo
body:
Canonical gate for current flow. If parent t_d8108746 returns QA_GO, request Meng Jian owner review; downstream launch/cold-start t_208b5a7d now depends on this task.


task_id: t_208b5a7d
author: xiaomo
body:
Rewired by host: wait on canonical owner-review gate t_9375d801 after final remediation QA, instead of stale gate t_5cc1fb77.


task_id: t_9375d801
author: moce
body:
owner-review gate handoff:
```json
{
  "owner_review_url_pack": {
    "homepage": "https://subnautica2maps.com/",
    "map": "https://subnautica2maps.com/map/",
    "privacy": "https://subnautica2maps.com/privacy-policy/",
    "terms": "https://subnautica2maps.com/terms-of-service/",
    "robots": "https://subnautica2maps.com/robots.txt",
    "sitemap": "https://subnautica2maps.com/sitemap.xml",
    "sent_to_owner": false,
    "send_condition": "Only after a new final Re-QA returns go_no_go=QA_GO"
  },
  "qa_summary_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_d8108746/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/09-final-remediation-reqa.md",
  "p0_p1_p2_issues": [
    {
      "id": "QA-003",
      "severity": "P1",
      "issue": "subnautica2maps.com has no MX records while production footer/privacy expose hello@subnautica2maps.com",
      "owner_card": "t_171f29bf"
    },
    {
      "id": "QA-007",
      "severity": "P1",
      "issue": "Production /map repeatedly emits React hydration/text mismatch pageerrors: Minified React error #418",
      "owner_card": "t_f7ab6ccc"
    },
    {
      "id": "QA-004R",
      "severity": "P2",
      "issue": "390px mobile bottom sheet remains crowded",
      "owner_card": "t_f7ab6ccc"
    },
    {
      "id": "QA-006R",
      "severity": "P2",
      "issue": "1440px marker cluster remains visually dense",
      "owner_card": "t_f7ab6ccc"
    }
  ],
  "residual_risk": [
    "Plausible dashboard/backend ingestion was not verified; only script/event calls/network beacons were observed.",
    "GA4/Clarity/Ahrefs are not present; privacy copy only discloses Plausible, acceptable unless launch requires those later."
  ],
  "owner_approval": "not_requested_due_to_QA_NO_GO",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_9375d801/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/10-owner-review-after-remediation.md"
  ],
  "telegram": {
    "target": "telegram:-1003750190535:5318",
    "start_message_id": "5831",
    "blocked_message_id": "5832"
  }
}
```


task_id: t_9375d801
author: moce
body:
owner-review gate rerun handoff:
```json
{
  "owner_review_url_pack": {
    "homepage": "https://subnautica2maps.com/",
    "map": "https://subnautica2maps.com/map/",
    "privacy": "https://subnautica2maps.com/privacy-policy/",
    "terms": "https://subnautica2maps.com/terms-of-service/",
    "robots": "https://subnautica2maps.com/robots.txt",
    "sitemap": "https://subnautica2maps.com/sitemap.xml",
    "sent_to_owner": false,
    "send_condition": "Only after a new final Re-QA returns go_no_go=QA_GO"
  },
  "qa_summary_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_d8108746/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/09-final-remediation-reqa.md",
  "parent_go_no_go": "QA_NO_GO",
  "p0_p1_p2_issues": [
    {
      "id": "QA-003",
      "severity": "P1",
      "issue": "subnautica2maps.com has no MX records while production footer/privacy expose hello@subnautica2maps.com",
      "owner_card": "t_171f29bf"
    },
    {
      "id": "QA-007",
      "severity": "P1",
      "issue": "Production /map repeatedly emits React hydration/text mismatch pageerrors: Minified React error #418",
      "owner_card": "t_f7ab6ccc"
    },
    {
      "id": "QA-004R",
      "severity": "P2",
      "issue": "390px mobile bottom sheet remains crowded",
      "owner_card": "t_f7ab6ccc"
    },
    {
      "id": "QA-006R",
      "severity": "P2",
      "issue": "1440px marker cluster remains visually dense",
      "owner_card": "t_f7ab6ccc"
    }
  ],
  "residual_risk": [
    "Plausible dashboard/backend ingestion was not verified; only script/event calls/network beacons were observed.",
    "GA4/Clarity/Ahrefs are not present; privacy copy only discloses Plausible, acceptable unless launch requires those later."
  ],
  "owner_approval": "not_requested_due_to_QA_NO_GO",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_9375d801/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/10-owner-review-after-remediation.md"
  ],
  "telegram": {
    "target": "telegram:-1003750190535:5318",
    "start_message_id": "5836",
    "blocked_message_id": "5837"
  }
}
```


task_id: t_9375d801
author: xiaomo
body:
Superseded by new canonical path after t_f7ab6ccc + t_171f29bf completed. New Re-QA: t_abe63d4f; new Owner Gate: t_5dba8672. Downstream launch task t_208b5a7d rewired to t_5dba8672.


task_id: t_208b5a7d
author: xiaomo
body:
Rewired to wait on t_5dba8672, the Owner Review Gate after second final Re-QA t_abe63d4f. Do not launch until Meng Jian accepts after QA_GO.


task_id: t_5dba8672
author: moce
body:
owner-review handoff:
```json
{
  "gate_verdict": "OWNER_APPROVAL_REQUIRED_AFTER_QA_GO",
  "parent_qa_task": "t_abe63d4f",
  "parent_qa_go_no_go": "QA_GO",
  "production_url": "https://subnautica2maps.com/",
  "map_url": "https://subnautica2maps.com/map/",
  "commit_sha_reviewed": "521a5c0f810b10089333b3dd78b4559e5b908b8e",
  "report_path": "/root/.hermes/kanban/boards/site-factory/workspaces/t_5dba8672/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/12-owner-review-after-final-reqa.md",
  "telegram_target": "telegram:-1003750190535:5318",
  "telegram_start_message_id": "5846",
  "telegram_owner_review_message_id": "5847",
  "approval_options": ["APPROVE_LAUNCH", "REJECT_LAUNCH"],
  "residual_p2_risks": [
    "QA-004R: 390px bottom sheet information density still high",
    "QA-006R: 1440px marker density remains visually dense"
  ],
  "launch_hold": "Do not launch, submit GSC/Bing, or start cold-start until Meng Jian explicitly approves."
}
```


task_id: t_208b5a7d
author: budget-continuation-watchdog
body:
Auto-continuation created: `t_64346f98` because this task blocked on iteration-budget exhaustion. Non-terminal downstream children rewired to `t_64346f98`: ['t_c5d9d511']. DB backup: `/root/.hermes/kanban/boards/site-factory/backups/kanban-budget-continuation-1779365781.db`.


task_id: t_64346f98
author: budget-continuation-watchdog
body:
Created automatically from exhausted task `t_208b5a7d`. Rewired downstream children: ['t_c5d9d511']. Continue and finish the missing closeout; do not redo from scratch.


task_id: t_64346f98
author: moyun
body:
blocked handoff:
```json
{
  "continued_from": "t_208b5a7d",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_64346f98/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/08-launch-continuation.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_64346f98/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/cold-start-pack.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_64346f98/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/channel-tracker.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_64346f98/data/subnautica2maps/baseline.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_64346f98/data/subnautica2maps/experiments.md",
    "/root/.hermes/profiles/moyun/cache/screenshots/browser_screenshot_73f3023471c34623b139c17a6bee4db3.png"
  ],
  "verification": {
    "qa_gate": "QA_GO from t_abe63d4f",
    "owner_gate": "OWNER_ACCEPTED from t_5dba8672",
    "repo": "/root/projects/subnautica2maps",
    "git_status_after": "clean",
    "commit_sha": "145b318bb7820c2df386c428aaa91bbc7cfb708e",
    "deploy_url": "https://314de0c6.subnautica2maps.pages.dev",
    "production_url": "https://subnautica2maps.com/",
    "checks_passed": ["npm run lint", "npm run build", "npm run verify", "npm run typecheck", "production HTTP smoke", "DNS/MX/contact probe", "GSC submit/list", "Cloudflare Crawler Hints dashboard DOM/screenshot evidence"],
    "gsc_sitemap_submitted": true,
    "gsc_properties": ["sc-domain:subnautica2maps.com", "https://subnautica2maps.com/"],
    "crawler_hints_checked": true,
    "cold_start_pack_prepared": true,
    "external_posts_published": false
  },
  "blocking_outputs": {
    "bing": "printenv has no BING/INDEXNOW/WEBMASTER credentials; previous command `curl -L https://www.bing.com/ping?sitemap=https://subnautica2maps.com/sitemap.xml` returned 410 Gone; no IndexNow key file is deployed.",
    "plausible": "https://plausible.shipsolo.io/api/v1/stats/aggregate with current PLAUSIBLE_API_KEY returned HTTP 403 Forbidden; https://plausible.io returned HTTP 401 Unauthorized. Frontend script exists but ingestion cannot be verified."
  },
  "residual_risk": ["Bing Webmaster/IndexNow not submitted", "Plausible real data ingestion not verified by API"],
  "next_inputs": ["Provide Bing Webmaster access or approve adding/deploying IndexNow key", "Provide valid self-hosted Plausible API token for plausible.shipsolo.io or alternate analytics credential"]
}
```


task_id: t_937a8ac9
author: xiaomo
body:
HOST VISIBILITY FIX: progress for tenant `site-aicodingpricing-20260521` must go to `telegram:-1003750190535:5866` (`做站 · aicodingpricing`). DM/private progress is disabled; task-level notify subscription added.


task_id: t_7af33592
author: xiaomo
body:
HOST VISIBILITY FIX: progress for tenant `site-rerun-subnautica2maps-20260520-stitch-sdk-clean` must go to `telegram:-1003750190535:5867` (`做站 · subnautica2maps`). DM/private progress is disabled; task-level notify subscription added.


task_id: t_64346f98
author: xiaomo
body:
HOST CORRECTION 2026-05-21:
- Bing Webmaster 不再阻塞：已用共享浏览器登录态完成站点添加/验证，已提交 sitemap。
- IndexNow 不再阻塞：已在 Bing 页面生成 key，落盘 `public/6642c84087b94a45b31d9e5456e23485.txt`，commit/push/deploy，并向 IndexNow API 提交 9 个 sitemap URL（202 Accepted）。
- Repo/deploy evidence: commits `561ee0087cd0d9a74bd76d1bceb3ebdd41f19d69`、`b2724e2210a14224037c734db7025af58275006a`、`17d6ffba376f8c108cca51d9182c03068fd329db`、`85bf4b1bb40c40398abf7e6d6921628f56ccb7e8`; latest Pages deploy `https://9e7997ae.subnautica2maps.pages.dev`; prod XML/key verified.
- Remaining blocker is Plausible only: browser opened `https://plausible.shipsolo.io/login` and it is not logged in. Do not ask for token first; ask Meng健 to login Plausible self-host in shared browser, then verify dashboard/site/event ingestion via browser or API.
- Process rule patched into `projects/site-launch`: browser automation fallback is mandatory before blocking on Bing/Plausible credentials.


task_id: t_7819a420
author: budget-continuation-watchdog
body:
Auto-continuation created: `t_c176e3f9` because this task blocked on iteration-budget exhaustion. Non-terminal downstream children rewired to `t_c176e3f9`: none. DB backup: `/root/.hermes/kanban/boards/site-factory/backups/kanban-budget-continuation-1779368192.db`.


task_id: t_c176e3f9
author: budget-continuation-watchdog
body:
Created automatically from exhausted task `t_7819a420`. Rewired downstream children: none. Continue and finish the missing closeout; do not redo from scratch.


task_id: t_9085ad91
author: mojie
body:
BLOCKED handoff / frontend implementation ready for review:
```json
{
  "repo_path": "/root/projects/aicodingpricing",
  "github_repo": "https://github.com/mengjian-github/aicodingpricing",
  "commit_sha": "2d87d351ac40e91dd98b8fc5c1dae62a331999d3",
  "pushed_branch": "main",
  "deploy_url": "https://aicodingpricing.pages.dev",
  "deployment_source_commit": "2d87d35 (Cloudflare Pages Production source)",
  "deployment_build_url": "https://dash.cloudflare.com/23cc53444237bdfa3f7306b3cef9514b/pages/view/aicodingpricing/378de47d-a730-474a-9a1e-fdbc5b15c215",
  "changed_files_summary": [
    "Next.js static export app",
    "23 verified routes including P0/P1 SEO pages + privacy/terms/about/contact",
    "client-side calculator",
    "source-linked pricing/comparison tables",
    "pricing changelog",
    "newsletter capture shell",
    "sitemap/robots/_redirects",
    "route/SEO/link verification script"
  ],
  "tests_run": [
    "npm run lint",
    "npm run build",
    "npm run verify",
    "browser smoke: https://aicodingpricing.pages.dev/",
    "browser redirect smoke: /codex-vs-claude-code -> /claude-code-vs-codex",
    "browser mobile overflow check at 390px: overflow=false"
  ],
  "verification": {
    "npm_verify": {"ok": true, "routes_checked": 23, "redirects_checked": 4, "contract_routes": 21},
    "git_status_after": "clean",
    "cf_pages_project": "aicodingpricing",
    "cf_pages_environment": "Production",
    "cf_pages_source": "2d87d35"
  },
  "crawler_hints_evidence": {
    "status": "blocked",
    "reason": "Cloudflare zone lookup for aicodingpricing.com returned zone_count=0, so Crawler Hints checked/value=true cannot be verified here and custom domain could not be attached.",
    "zone_lookup_success": true,
    "zone_count": 0
  },
  "manual_needed": [
    "Add/activate aicodingpricing.com in Cloudflare DNS or point the registered domain to Cloudflare nameservers.",
    "Attach aicodingpricing.com / www.aicodingpricing.com to Cloudflare Pages project aicodingpricing.",
    "Enable/verify Cloudflare Crawler Hints value=true for the zone, then rerun deployment/domain checks."
  ]
}
```


task_id: t_64346f98
author: xiaomo-host
body:
HOST CORRECTION: prior Telegram @ dispatch is superseded. 做站执行改回 Kanban-only workflow. Canonical next ops deliverable is t_9878762b: prepare first-wave distribution queue only, no external publishing; use Kanban comments/state for progress and topic visibility only.


task_id: t_9085ad91
author: xiaomo-host
body:
HOST DOMAIN GATE: Cloudflare zone created for aicodingpricing.com (zone_id=18e500a666e99f497036d29556fd7cc0, status=pending). Owner needs to update registrar nameservers from ns1.dyna-ns.net/ns2.dyna-ns.net to coraline.ns.cloudflare.com and nico.ns.cloudflare.com. Do not unblock until NS propagation/zone active is verified; then bind aicodingpricing.com/www to Pages project aicodingpricing and verify Crawler Hints checked/value=true.


task_id: t_9085ad91
author: xiaomo-host
body:
HOST DNS CHECK: owner says NS changed, but public resolvers still show ns1.dyna-ns.net/ns2.dyna-ns.net and Cloudflare zone remains pending. Triggered activation_check. Waiting for propagation before unblocking; watchdog will recheck and unblock automatically when active.


task_id: t_9085ad91
author: xiaomo-watchdog
body:
HOST DNS GATE PASSED: aicodingpricing.com nameservers propagated/zone active. Cloudflare status=active; 1.1.1.1 NS=['coraline.ns.cloudflare.com.', 'nico.ns.cloudflare.com.']. Unblocking frontend so worker can bind Pages custom domains and verify Crawler Hints.


task_id: t_108bbf98
author: motest
body:
QA blocked handoff:
```json
{
  "qa_verdict": "QA_NO_GO",
  "qa_mode": "gate_precheck_only",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/qa/final-qa.md",
    "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/pm/product-acceptance.md",
    "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/seo/final-seo-recheck.md",
    "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/compliance/final-compliance-recheck.md"
  ],
  "p0_issues": [
    "PM_NO_GO: upstream PM acceptance explicitly says do not advance to final QA",
    "SEO_NO_GO: contracted structured data missing across P0 pages",
    "SEO_NO_GO: frozen P0 content-depth targets missed on usage/comparison pages"
  ],
  "p1_issues": [
    "Compliance artifact is stale NO_GO after reported live policy remediation and should be refreshed",
    "Cloudflare Crawler Hints checked/value=true evidence remains missing from reviewed handoff"
  ],
  "verified_routes": [],
  "screenshots": [],
  "telegram_blocked_message_id": "5943",
  "next_gate": "mojie_remediation_then_seo_recheck_then_pm_recheck_before_full_motest_qa"
}
```


task_id: t_9878762b
author: xiaomo-host
body:
HOST POLICY UPDATE: Reddit actions in site-build must mark source: site-build and pass cross-pipeline Reddit posting lock before any external post/comment: account age/karma/recent removals, subreddit rules/relevance, approved allowlist, one-account-one-window lock, max 1 Reddit comment/day unless owner confirms. Recent r/subnautica removals are site-build, not warmup, but still count as moderation_review on the shared account; keep 48h Reddit cooldown.


task_id: t_483a4cad
author: xiaomo-host
body:
HOST POLICY UPDATE: any Reddit cold-start action must mark source: site-build and pass cross-pipeline Reddit posting lock: age/karma/recent removals, subreddit rules/relevance, approved allowlist, one-account-one-window, max 1 Reddit comment/day unless owner confirms. 48h cooldown applies after recent removed comments on shared account.


task_id: t_108bbf98
author: motest
body:
QA blocked handoff after auto-unblock:
```json
{
  "qa_verdict": "QA_NO_GO",
  "qa_mode": "upstream_gate_waiting_after_remediation",
  "reason": "Prior PM artifact is still PM_NO_GO. SEO/content and policy remediation tasks have completed, but fresh SEO/compliance/PM rechecks are required before final QA can run or issue QA_GO.",
  "artifact_paths": [
    "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/qa/final-qa.md",
    "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/pm/product-acceptance.md",
    "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/seo/final-seo-recheck.md",
    "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/compliance/final-compliance-recheck.md"
  ],
  "remediation_done": {
    "seo_content_schema": {
      "task_id": "t_04a6402b",
      "commit_sha": "5d141b41e61f70d1f773de8b421b90b12592edfe",
      "production_url": "https://aicodingpricing.com",
      "preview_url": "https://1bd9892c.aicodingpricing.pages.dev"
    },
    "privacy_terms": {
      "task_id": "t_9319be77",
      "commit_sha": "2735ea6d40888977aeeb8407206dfb3e5d727232"
    }
  },
  "created_cards": {
    "seo_recheck": "t_e75eaa3b",
    "compliance_recheck": "t_696c2567",
    "pm_reacceptance": "t_eeea3f95"
  },
  "linked_parent_for_current_task": "t_eeea3f95",
  "p0_issues": [
    "Fresh PM acceptance is missing after remediation; current artifact is still PM_NO_GO",
    "Fresh SEO/GEO recheck is missing after t_04a6402b remediation",
    "Fresh compliance recheck is missing after t_9319be77 remediation"
  ],
  "p1_issues": [
    "Cloudflare Crawler Hints checked/value=true evidence must remain available at launch handoff",
    "Newsletter submission and analytics validation remain queued for final QA"
  ],
  "verified_routes": [],
  "screenshots": [],
  "telegram_blocked_message_id": "5950",
  "next_gate": "seo_recheck_t_e75eaa3b_and_compliance_recheck_t_696c2567_then_pm_reacceptance_t_eeea3f95_before_full_motest_qa"
}
```


task_id: t_108bbf98
author: xiaomo-host
body:
HOST RECONCILIATION: superseded by t_7ea142b3. This card blocked on stale PM_NO_GO from t_f1758ded; fresh canonical gate t_eeea3f95 is PM_CONDITIONAL_GO_TO_QA after SEO_GO t_e75eaa3b and compliance GO_WITH_P1_CAVEAT t_696c2567. Owner Review t_793aae51 is rewired to wait for t_7ea142b3.


task_id: t_793aae51
author: xiaomo-host
body:
HOST RECONCILIATION: parent rewired from stale blocked QA t_108bbf98 to canonical final QA continuation t_7ea142b3 after PM re-acceptance t_eeea3f95. Do not proceed until t_7ea142b3 returns QA_GO/QA_CONDITIONAL_GO.


task_id: t_793aae51
author: moce
body:
Owner Review Gate handoff:

- Owner-facing summary sent to project Telegram topic `telegram:-1003750190535:5866`, message_id=5963.
- Summary artifact: `/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/owner-review-summary.md`
- Production URL: https://aicodingpricing.com
- QA source: `/root/projects/aicodingpricing/reports/final-qa-report.md`
- QA verdict: `QA_CONDITIONAL_GO`
- P0 blockers: 0
- P1 follow-ups: analytics missing/events unverified; MX missing for support@; mobile menu button does not reveal primary nav links at 390px; homepage LCP 3121ms > 2500ms; SEO follow-ups for /claude-code-cost WebApplication JSON-LD, /llms.txt, and content-depth expansion.
- P2: newsletter submit has no clear success/error feedback.
- Explicit reply options sent: `APPROVE_LAUNCH`, `APPROVE_WITH_WAIVER`, `FIX_BEFORE_LAUNCH`, `HOLD`.

No explicit owner approval is present for this exact deployment yet, so this task is blocked as WAITING_OWNER_SITE_APPROVAL. When unblocked with approval, completion metadata must include `owner_approval=confirmed`.


