# 04B Design Acceptance Gate — Subnautica2Maps Clean Rerun

- task_id: `t_ec99f0a1`
- owner: 墨策
- date: 2026-05-20
- project_slug: `subnautica2maps`
- selected_keyword: `subnautica 2 map`
- tenant: `site-rerun-subnautica2maps-20260520-clean`
- clean_rerun: true
- previous_tenant: `site-daily-20260519`
- preserved_history: true
- deleted_local_paths_manifest: `/root/.hermes/reports/clean-rerun-subnautica2maps-20260520-delete-manifest.json`

## 0. Verdict

Design verdict: `DESIGN_GO`.

PM pre-build stance: `PM_GO_FOR_FRONTEND_IMPLEMENTATION`, not final launch PM acceptance.

Reason: the design package preserves the PRD v1 product contract: fan-made interactive map, resource locator, route helper, local progress, mobile bottom sheet, resource/guide/legal surfaces, no-affiliation boundary, no copied official-looking asset direction, and noindex/sitemap constraints. Frontend may proceed, but must implement from PRD v1 + design HTML together, not from design screenshots alone.

Non-blocking corrections for frontend handoff:
1. PRD filter taxonomy includes `Wildlife` and `Plants`; design chip examples omit them. Frontend must include the full PRD taxonomy even if the visual sample only shows a subset.
2. Design HTML does not include explicit analytics event names as `data-event` hooks. Frontend must add and verify real ingestion for the PRD event taxonomy; design only proves UI affordances.
3. Local HTML fallback is accepted as visual truth because Stitch CLI failed with a schema reference error and the designer disclosed this honestly. Do not claim Stitch-native generation downstream.

No design blocker found that should stop frontend/backend.

## 1. Inputs read

PRD v1:
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_43537dda/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/03-prd-v1.md`

Design package:
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_f6e7a59a/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design/HANDOFF.md`
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_f6e7a59a/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design/design/content-fit-matrix.md`
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_f6e7a59a/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design/stitch/screen-index.json`
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_f6e7a59a/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design/verification.json`
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_f6e7a59a/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design/html/`
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_f6e7a59a/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design/screens/`
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_f6e7a59a/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/design/assets/`

Clean rerun rule followed: this gate used clean rerun PRD v1 and parent design package only. It did not read or reuse old PRD/design/seed/dist/repo.

## 2. Gate validation evidence

Equivalent `site_gate_validate design` check was run as a local validation script because no `site_gate_validate` executable was present under `/root`.

Validation output:
- JSON: `/root/.hermes/kanban/boards/site-factory/workspaces/t_ec99f0a1/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/04b-design-acceptance-validation.json`
- Raw checks: 90
- Raw passed: 72
- Raw failed: 18

Raw failure interpretation:
- False positive: `approved by Unknown Worlds` appears only inside the negative legal disclaimer: “not affiliated with, endorsed by, sponsored by, or approved by...” This is compliant.
- Non-blocking copy variance: exact phrase `Route from your current position` is absent, but equivalent user-facing route/current-position copy appears in the hero, guide, route panel, route invalid state, and position-set state.
- Non-blocking label variance: `Verified version` exact label is absent in map panels, but `version`, `source type`, `confidence`, and `updated` appear; resource page explicitly says “verified game version”.
- Real gap, non-blocking for design: `Wildlife` and `Plants` filter labels are missing from example chips.
- Real gap, delegated to frontend: analytics event names are not embedded as HTML hooks; PRD taxonomy remains authoritative.

Visual spot checks:
- Home desktop screenshot shows a non-generic Abyssal Tactical Console direction, visible fan-made notice, map/search entry, route helper CTA, confidence/version source framing, and no official key art.
- Mobile bottom sheet screenshot shows map-first UX; the sheet preserves map visibility and includes search, filter chips, marker summary, and detail CTA. It does not hide the map behind a full-screen modal.

## 3. Acceptance checklist

| Check | Verdict | Evidence |
|---|---|---|
| PRD v1 read | PASS | `03-prd-v1.md` read |
| Design handoff read | PASS | `HANDOFF.md` read |
| Content-fit matrix read | PASS | `content-fit-matrix.md` read |
| HTML visual truths exist | PASS | 20 HTML files |
| Screenshot coverage exists | PASS | 20 PNG screenshots |
| Screen index exists | PASS | 20 entries in `screen-index.json` |
| Homepage IA preserved | PASS | hero, search, quick chips, route value, FAQ/footer in HTML/content matrix |
| `/map` tool-first IA preserved | PASS | desktop/mobile map HTML + states |
| Required map states covered | PASS | loading, search results, filter selected, marker detail, position set, route result, route invalid, local progress, no results, low confidence, mobile bottom sheet |
| Resource page covered | PASS | `/resources/silver` desktop/mobile visual truth |
| Guide page covered | PASS | `/guides/how-to-find-coordinates` desktop/mobile visual truth |
| Legal/footer state covered | PASS | legal/footer HTML + disclaimer |
| Mobile-first map UX | PASS | mobile map and bottom sheet screenshots |
| Fan-made/no-affiliation visible | PASS | hero/footer/legal HTML and screenshots |
| No official-looking branding | PASS | self-made icon/grid/HUD, no official key art/logo/screenshot detected by asset names and visual check |
| Asset inventory exists | PASS | logo/favicon/OG/hero assets + `logo-system.json` |
| SEO/index policy carried | PASS | content-fit matrix includes noindex/sitemap warnings |
| Analytics affordances present | CONDITIONAL PASS | UI actions exist; explicit event hooks must be added by frontend |
| Full filter taxonomy preserved | CONDITIONAL PASS | component exists; frontend must add Wildlife/Plants labels from PRD |
| Stitch requirement | CONDITIONAL PASS | Stitch CLI failed; local-html-fallback is accepted because failure is disclosed and HTML is visual truth |

## 4. PRD preservation review

### 4.1 Site type

PASS.

The design stays a game interactive map/resource locator/route helper. It does not collapse into a generic SaaS landing page or pure guide site.

Evidence:
- Home screenshot shows map console, marker detail, route CTA, confidence layer.
- `/map` HTML covers full tool layout.
- Mobile screenshot uses map-first bottom sheet.

### 4.2 SERP / competitor interaction baseline

PASS.

Design covers competitive minimum from PRD:
- pan/zoom-style self-made map grid visual;
- search entry and result count;
- filters;
- marker detail;
- current position/route result states;
- local progress state;
- mobile bottom sheet;
- fan-made/no-affiliation notice.

Caveat: pan/zoom is a frontend implementation requirement; design only proves visual affordance.

### 4.3 Core user tasks

PASS.

Design supports these downstream QA tasks:
1. Open home → click Open the Map.
2. Search silver/copper/sulfur or common task chips.
3. Apply category filters and see result count.
4. Open marker detail and read coordinates/depth/biome/source/confidence.
5. Set current position and calculate route hint.
6. Toggle local progress.
7. Complete mobile search/filter/detail flow using bottom sheet.

### 4.4 Copy / IA / SEO

PASS with one correction.

Preserved:
- H1: “Find Subnautica 2 Resources Faster”.
- CTAs: “Open the Map”, “Find a Resource”.
- Fan-made disclaimer.
- Resource/guide/legal surfaces.
- Data trust and Early Access transparency.
- Noindex/sitemap policy in content-fit matrix.

Correction:
- Add `Wildlife` and `Plants` to frontend filter taxonomy per PRD §8.2.

### 4.5 Assets / IP / compliance boundary

PASS for design stage.

Evidence:
- No official/competitor asset names detected in design asset inventory.
- Visual direction is self-made coordinate-grid/HUD, not official Subnautica key art.
- Home/legal/footer include fan-made/no-affiliation language.
- Handoff explicitly warns: no official/competitor tiles/data/screenshots/icons/text.

Residual compliance risk remains for final public domain, legal pages, actual data sources, and analytics implementation. Compliance must re-run after implementation.

### 4.6 Analytics plan

CONDITIONAL PASS.

The design includes visible UI triggers for search, detail, filters, route, progress, CTA, and outbound/legal surfaces. It does not embed explicit event names as data attributes.

Frontend must implement and prove real ingestion for:
- `pageview`
- `hero_cta_click`
- `tool_start`
- `tool_result`
- `pricing_cta_click` or support-interest equivalent if shown
- `map_search`
- `marker_open`
- `filter_apply`
- `detail_open`
- `position_set`
- `route_calculate`
- `progress_toggle`
- `outbound_click`

Do not send raw current coordinates; use coordinate_format, success, marker_id, and distance_bucket.

## 5. DESIGN_GO conditions for frontend/backend

Frontend/backend may proceed only if they treat the following as hard input:

1. Use PRD v1 as product contract and design HTML as visual truth.
2. Do not implement only the screenshots; implement all states in `screen-index.json` and HTML directory.
3. Replace mock marker values with data worker JSON and provenance before claiming confirmed data.
4. Include full PRD filter taxonomy: Resources, Blueprints, Data Boxes, Wildlife, Plants, Biomes, Locations.
5. Keep query/filter/route/local/unverified pages noindex and out of sitemap.
6. Preserve fan-made/no-affiliation disclaimers across public pages.
7. Keep route calculation local by default and do not send raw current coordinates to analytics.
8. Add analytics event hooks and verify ingestion; script presence is not enough.
9. Do not add login, Stripe, paid wall, UGC, official assets, official-looking visual identity, or copied competitor/official data.
10. Commit + push + deploy same commit; metadata must include commit_sha, pushed_branch, deploy_url, deployment_source_commit, git_status_after.

## 6. Blocking risks

No current design blockers.

Launch blockers still carried forward:
- No real marker JSON/provenance.
- Mock markers shipped as confirmed data.
- Missing legal pages or formal domain emails.
- Official-looking/copycat assets or copied map/data.
- Analytics not verifiably ingested.
- Sitemap includes noindex/thin/query/local/unverified pages.
- Source/deploy commit mismatch.

## 7. next_assignee_input

For 墨界/墨枢 frontend/backend:
- Proceed from `/design/html/` visual truth and PRD v1.
- Add missing `Wildlife` and `Plants` filter labels.
- Add analytics event hooks and ingestion proof.
- Keep mock marker data clearly replaced by provenance-backed JSON before public indexing.
- Preserve mobile bottom sheet UX and map-first task flow.

For 墨盾 compliance:
- Later recheck final implemented assets, disclaimers, public domain, legal pages, email addresses, analytics privacy, and no-affiliation language.

For 墨引 SEO:
- Later validate index/noindex/sitemap/canonical/schema on actual build; do not rely on design package as SEO proof.

For 墨策 PM final gate:
- After implementation + SEO + compliance, verify PRD scope is not downgraded and competitive minimum remains intact before final QA.

## 8. skill_contract_check

| 合同项 | 必需输入 | 必需产出 | 硬约束 | 验收项 | Evidence |
|---|---|---|---|---|---|
| Kanban source of truth | task_id `t_ec99f0a1`, parent metadata | `04b-design-acceptance.md` + kanban metadata | Telegram only visibility; Kanban complete authoritative | START sent, DONE before complete | START message sent; this file |
| Clean rerun | PRD v1 + design package from clean tenant | New design acceptance under clean output path | No old PRD/design/seed/dist/repo | Inputs point only to clean rerun workspaces | §1 paths |
| Bound skills | `projects/site-building`, `kanban-worker` | Design acceptance gate with contract table | Must include required inputs/outputs/constraints/acceptance/evidence | This section exists | preloaded skill context + report |
| PRD preservation | `03-prd-v1.md` | Verdict on IA/copy/SEO/assets/interactions | Must block if critical PRD scope lost | DESIGN_GO with conditions | §§3-5 |
| Design package validation | HTML/screens/assets/HANDOFF/screen-index | Equivalent validator JSON | Must run site_gate_validate design or equivalent | 90 raw checks, interpreted | `04b-design-acceptance-validation.json` |
| Site type | PRD §2 + design package | Site type preserved verdict | Not generic guide/SaaS site | PASS | §4.1 + vision spot check |
| Interaction baseline | PRD §4/§8 + design states | Competitive minimum mapping | Must include map/search/filter/detail/route/progress/mobile | PASS | §4.2 |
| SEO/index policy | PRD §7 + content matrix | Sitemap/noindex handoff | Thin/query/local/unverified pages noindex | PASS | content-fit matrix lines 25-29 |
| Legal/IP boundary | PRD §10 + design assets | Fan-made/no-affiliation and asset stance | No official-looking branding/assets | PASS | §4.5 |
| Analytics/event plan | PRD §12 + UI affordances | Frontend implementation condition | Real ingestion proof required later | CONDITIONAL PASS | §4.6 |
| Handoff | downstream role needs | next_assignee_input | Conditions must be carried forward | §7 complete | this report |

## 9. Handoff summary

`DESIGN_GO`: design package is accepted for frontend/backend implementation.

Critical carry-forward constraints:
- implement full PRD filter taxonomy, including Wildlife and Plants;
- add analytics event hooks and ingestion proof;
- replace all mock marker content with provenance-backed data;
- keep fan-made/no-affiliation and no copied official/competitor assets/data;
- noindex all query/local/unverified/thin pages;
- later PM acceptance is still required after implementation, SEO, and compliance.
