Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,6 @@ os.makedirs('instance_seed', exist_ok=True); \
shutil.copy2('instance/rotten_tomatoes.db', 'instance_seed/rotten_tomatoes.db'); \
print('Rotten Tomatoes seed DB generated at build time.')" && rm -rf /opt/WebSyn/rotten_tomatoes/instance

EXPOSE 8101 40000-40023
EXPOSE 8101 40000-40024

CMD ["/opt/websyn_start.sh"]
2 changes: 1 addition & 1 deletion control_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
'allrecipes', 'amazon', 'apple', 'arxiv', 'bbc_news', 'booking',
'github', 'google_flights', 'google_map', 'google_search',
'huggingface', 'wolfram_alpha', 'cambridge_dictionary',
'coursera', 'espn', 'merriam_webster', 'ikea', 'phys_org', 'target', 'ted', 'osu', 'rotten_tomatoes', 'compass', 'walmart_careers',
'coursera', 'espn', 'merriam_webster', 'ikea', 'phys_org', 'target', 'ted', 'osu', 'rotten_tomatoes', 'compass', 'walmart_careers', '9gag',
]
BASE_PORT = 40000
WEBSYN_DIR = '/opt/WebSyn'
Expand Down
62 changes: 62 additions & 0 deletions review-reports/9GAG-FINAL-AUDIT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# 9GAG contributor-side final audit

## Scope

- Mirror: https://9gag.com/
- Local site: `http://localhost:40024/` (host verification port `41024`)
- Branch: `add-9gag-mirror`
- Base: upstream `main` at `3600493`
- Docker image: `sha256:0cf5649d5cb058fa05d1887a3559f78b327e84e5a78320f2aa6f795a2ab31dc6`

## Results

- All 25 registered WebHarbor sites started successfully.
- `/reset-all` returned every site as ready.
- All 20 9GAG tasks passed from the homepage through visible Playwright controls, with a fresh browser context and site reset for each task.
- 27 representative responsive checks passed across 1440, 390, and 320 px.
- No broken images, stretched images, horizontal document overflow, or out-of-bounds controls were detected.
- Five hardened search families returned 9–10 visible results; targets appeared at positions 2, 2, 4, 5, and 7.
- None of the task-specific detail facts appeared on search-result cards.
- Runtime and seed database MD5 after the final task run and `/reset-all`: `44768940829bf4a8bec07d7bdf072d97`.

## Seed inventory

- Posts: 80
- Users: 4
- Comments: 4
- Saved-post rows: 16
- Vote rows: 12
- Genuine captured post images: 38 unique files
- Additional captured 9GAG brand/interest references: 27 files

All four benchmark accounts use `@test.com` addresses and password `TestPass123!`. Both `seed_database()` and `seed_benchmark_users()` gate the entire function; repeated application left database bytes unchanged.

## Asset package prepared for Hugging Face

- Archive: `9gag.tar.gz`
- Managed members: 74
- SHA-256: `6ba9ca464d23bcae76316efff234548f75e428a7570f1d08f004c38a1123841c`
- The archive was validated locally and was not uploaded.

## Screenshots

### Desktop — 1440 px

![9GAG desktop homepage](assets/9gag-homepage-1440.png)

### Mobile — 390 px

![9GAG mobile homepage](assets/9gag-homepage-390.png)

### Narrow mobile — 320 px

![9GAG narrow mobile homepage](assets/9gag-homepage-320.png)

## Human integration steps

1. Upload the prepared `9gag.tar.gz` to the contributor's Hugging Face dataset fork and open an assets PR against `ChilleD/WebHarbor`.
2. After the HF PR merges, update `.assets-revision` to the merged asset commit.
3. Rebuild and rerun the 25-site health, reset-all, task, and MD5 checks.
4. Push `add-9gag-mirror` and open the GitHub PR, linking the merged HF asset commit and this report.

No Hugging Face or GitHub PR was opened during preparation.
Binary file added review-reports/assets/9gag-homepage-1440.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added review-reports/assets/9gag-homepage-320.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added review-reports/assets/9gag-homepage-390.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions sites/9gag/ASSET_SOURCES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 9GAG asset provenance

All media in `static/images/` was captured from the rendered public 9GAG homepage on 2026-09-09 with Playwright. The browser exposed the resolved CDN URLs after hydration; only then were the image bytes downloaded. No placeholders, generated images, private data, cookies, or browser-profile material are included.

## Post media

- `posts/aD2BwPZ-451efa65.jpg` — https://img-9gag-fun.9cache.com/photo/aD2BwPZ_460s.jpg
- `posts/aVvGONd-41d662a3.jpg` — https://miscmedia-9gag-fun.9cache.com/images/thumbnail-facebook/71134346_1788942069.8925_rYNuRA_700b.jpg
- `posts/aO86yA2-87d68ca6.jpg` — https://img-9gag-fun.9cache.com/photo/aO86yA2_460s.jpg
- `posts/aryPpR7-3497fabc.jpg` — https://img-9gag-fun.9cache.com/photo/aryPpR7_460s.jpg
- `posts/amoDNzv-6cbe8b39.jpg` — https://img-9gag-fun.9cache.com/photo/amoDNzv_700b.jpg
- `posts/aQzYqZq-9c4605da.jpg` — https://img-9gag-fun.9cache.com/photo/aQzYqZq_460s.jpg
- `posts/aLnqKLv-bea354c8.jpg` — https://img-9gag-fun.9cache.com/photo/aLnqKLv_700b.jpg
- `posts/adB3Nj9-f56e7b44.jpg` — https://img-9gag-fun.9cache.com/photo/adB3Nj9_460s.jpg
- `posts/aYQzNgV-f6067981.jpg` — https://img-9gag-fun.9cache.com/photo/aYQzNgV_460s.jpg
- `posts/aQzYqK8-ec9e7408.jpg` — https://img-9gag-fun.9cache.com/photo/aQzYqK8_460s.jpg

## Brand and interest references

The files under `static/images/reference/` are the 9GAG logo and interest thumbnails resolved from `miscmedia-9gag-fun.9cache.com` by the same rendered page. Their original URLs and dimensions are retained in the ignored reconnaissance record `scraped_data/capture.json`.

An additional 28 unique feed images under `static/images/posts/` were captured through Chromium from the public `/v1/group-posts/group/default/type/{hot,trending,fresh}?c=10` responses. Their source post IDs remain in every filename, and the resolved source URLs are retained in the ignored reconnaissance record `scraped_data/feed-posts.json`.

The 80-row seeded catalog rotates across 38 genuine 9GAG post images while keeping titles, descriptions, authors, tags, and task facts distinct. This avoids blank, generated, or placeholder imagery and limits repetition across feed pages.
3 changes: 3 additions & 0 deletions sites/9gag/_health.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"""Per-site health probe (optional, called by control_server)."""
def health():
return {"ok": True, "site": "9gag"}
Loading