Skip to content

Add IGN site#61

Open
Edlison wants to merge 1 commit into
aiming-lab:mainfrom
Edlison:main
Open

Add IGN site#61
Edlison wants to merge 1 commit into
aiming-lab:mainfrom
Edlison:main

Conversation

@Edlison

@Edlison Edlison commented Jul 5, 2026

Copy link
Copy Markdown

Mirrored site

IGN — https://www.ign.com/

Added as the 17th WebHarbor site, served on port 40016.

What's included

sites/ign/ — Flask + SQLAlchemy app modeling IGN's editorial and account surfaces: news, reviews, videos, guides/wiki pages, local utility pages, scored token-overlap News search, review filtering/sorting controls, article/review/video/guide detail pages, accounts, saved stories, playlist, comments, alerts, profile editing, and guide checklist progress. 17 Jinja2 templates with an IGN-style dark left rail, content cards, review-score treatment, and responsive utility pages.

109 seeded content items: 36 articles, 9 reviews, 40 videos, and 24 guides. Real IGN article/video/guide/review images are included under static/images/content/ with 114 local image files.

Idempotent seeding with function-level gates and the 4 canonical benchmark users (alice.j@test.com, bob.c@test.com, carol.d@test.com, david.k@test.com; password TestPass123!). Byte-identical reset verified.

19 WebVoyager tasks in sites/ign/tasks.jsonl.

Registered in the three required places: websyn_start.sh, control_server.py, Dockerfile (EXPOSE ... 40016).

Seeded rows per major model

model rows model rows
sections 7 comments 8
content_items 109 alert_subscriptions 12
users 4 digests 4
saved_items 20 guide_progress 16
playlist_entries 16

Content breakdown: Articles 36 · Reviews 9 · Videos 40 · Guides 24.

Content by section: Games 27 · Reviews 3 · Guides 24 · Videos 32 · Movies 5 · TV 12 · Deals 6.

Tasks

19 tasks in sites/ign/tasks.jsonl (WebVoyager schema), spanning search, news/category browsing, reviews/filtering, guide checklist progress, login, profile editing, saved stories, playlist add/update/remove, comments, alerts, and multi-step comparison/detail-page reading.

The task set includes several auth-gated state-changing workflows and multi-step tasks that require disambiguation between near-miss IGN content, such as same-topic article/video results, physical-media stories, TV streaming stories, and tech review filters.

Byte-identical reset

$ curl -X POST http://localhost:8201/reset/ign
{"pid":245,"ready":true,"site":"ign"}

$ docker exec wh-submit md5sum /opt/WebSyn/ign/instance/ign.db \
                            /opt/WebSyn/ign/instance_seed/ign.db
da9379739f89373db60e2c32e801bc60  /opt/WebSyn/ign/instance/ign.db
da9379739f89373db60e2c32e801bc60  /opt/WebSyn/ign/instance_seed/ign.db

Both seed functions early-return as a whole. Fresh container verification passed with all 17 sites alive, ports 41000-41016 returning 200, and POST /reset-all returning every site ready:true.

Visual fidelity vs. the real site

Mirror rendered at localhost:40016 (compare against https://www.ign.com/). Real IGN content images are harvested and stored locally.

Home (IGN Mirror) Home (IGN)
ign-mirror-home ign-home
Review (IGN Mirror) Review (IGN)
ign-mirror-review ign-mirror-review
News (IGN Mirror) News (IGN)
ign-mirror-news ign-mirror-news

Paired HuggingFace assets PR

https://huggingface.co/datasets/ChilleD/WebHarbor/discussions/41 — uploads ign.tar.gz (instance_seed/ign.db + static/images: 114 local IGN content images).

.assets-revision is temporarily pinned to revision: refs/pr/41 so this GitHub PR builds end-to-end before the assets PR is merged:

repo: ChilleD/WebHarbor
# Pinned to HF PR #41 (adds ign.tar.gz on top of current main) so this
# PR builds end-to-end before the assets PR is merged. This ref contains all
# 17 site tarballs. Maintainer: once
# https://huggingface.co/datasets/ChilleD/WebHarbor/discussions/41 is merged,
# bump this to the merged commit SHA on main.
revision: refs/pr/41

Merge the HF dataset PR before this one so a clean-clone build can fetch the assets, or keep this GitHub PR pinned to refs/pr/41 until the asset PR is merged. Once the dataset PR merges, bump .assets-revision to the merged commit SHA on main.

Verification

./scripts/fetch_assets.sh ign
python -m py_compile sites/ign/app.py sites/ign/seed_data.py sites/ign/content_seed.py sites/ign/_health.py
./scripts/build.sh webharbor:dev
docker run -d --rm --name wh-submit -p 8201:8101 -p 41000-41016:40000-40016 webharbor:dev
curl -s http://127.0.0.1:8201/health
curl -s -X POST http://127.0.0.1:8201/reset/ign
docker exec wh-submit md5sum /opt/WebSyn/ign/instance/ign.db /opt/WebSyn/ign/instance_seed/ign.db
curl -s -X POST http://127.0.0.1:8201/reset-all

Verified:

  • ./scripts/fetch_assets.sh ign succeeds from refs/pr/41.
  • py_compile passes for app.py, seed_data.py, content_seed.py, and _health.py.
  • Docker build succeeds.
  • http://127.0.0.1:8201/health returns ok:true with all 17 sites alive.
  • Ports 41000-41016 return HTTP 200.
  • POST /reset/ign returns ready:true.
  • Runtime DB md5 matches seed DB md5: da9379739f89373db60e2c32e801bc60.
  • POST /reset-all returns ok:true and every site ready:true.

Notes for human review

  • IGN is a broad editorial/media site rather than a commerce catalog, so the main seeded entity is content_items rather than products. The implementation seeds 109 content rows across News, Reviews, Videos, and Guides to preserve browsing depth.
  • Search intentionally targets News categories only, matching the current task design and avoiding a leaked type selector. Reviews have their own database-backed controls for sort, score filter, genre filter, review-score visibility, and Editor's Choice filtering.
  • Sidebar utility links (Interactive Maps, Discover, Store, Rewards, Privacy Policy, Terms of Use, More) are implemented as local IGN-style replicas. They are visual/navigation surfaces, not real checkout/reward/legal-service integrations.
  • Review task hardening was applied after review: tasks that previously leaked answers via listing cards were rewritten to require detail-page fields or state-changing account workflows.
  • A submit-blocking syntax issue in content_seed.py was fixed before this PR; the file now compiles and contains 109 seed content items.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant