Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
54a2c4d
Add IMDb mirror (port 40015)
May 26, 2026
356da81
chore: integrate IMDb review with current mirror registry
jackjin1997 Sep 7, 2026
b73568c
chore: integrate OSU baseline before IMDb validation
jackjin1997 Sep 8, 2026
ebe92f0
fix(imdb): correct sourced profile identities and pin reviewer assets
jackjin1997 Sep 8, 2026
085d523
fix(imdb): distinguish title years from regional release dates
jackjin1997 Sep 8, 2026
50bcce5
fix(imdb): repair interactive flows and task verification
jackjin1997 Sep 8, 2026
f98b519
fix(imdb): distinguish review headline values from references
jackjin1997 Sep 8, 2026
5f73dad
docs(imdb): publish draft review evidence and limitations
jackjin1997 Sep 8, 2026
d33e46f
fix(imdb): bind fact prefixes and comparison values correctly
jackjin1997 Sep 8, 2026
6620615
fix(imdb): distinguish prior and saved personal ratings
jackjin1997 Sep 8, 2026
9904985
fix(imdb): recognize nested watchlist removal controls
jackjin1997 Sep 8, 2026
a37df75
refactor(imdb): retire shortcut task contracts
jackjin1997 Sep 8, 2026
1451149
docs(imdb): publish retained task validation evidence
jackjin1997 Sep 8, 2026
24af75e
docs(imdb): remove retired birth-year task wording
jackjin1997 Sep 8, 2026
1914fd3
docs(imdb): record independent frozen-run review
jackjin1997 Sep 8, 2026
fdadd15
feat(imdb): expand benchmark task set to twenty
jackjin1997 Sep 10, 2026
3d9fc72
chore: merge upstream main into IMDb review
jackjin1997 Sep 10, 2026
07a67ae
docs(imdb): record expansion blind review
jackjin1997 Sep 10, 2026
1c8a1eb
feat(imdb): expand sourced homepage experience
jackjin1997 Sep 12, 2026
fba88dd
docs(imdb): finalize review report for maintainer handoff
jackjin1997 Sep 12, 2026
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 .assets-revision
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
# is a git revision (branch name like `main`, a tag, or a specific commit
# sha). Override at runtime with the ASSETS_REVISION env var.
repo: ChilleD/WebHarbor
revision: 65c479f894763f64c6073e0d180ebf542d1d2c02
revision: f9ddfd2596229f2610418d57fc88c3051e1056bb
14 changes: 7 additions & 7 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ A coding agent (Claude Code, Cursor, Aider, Codex, ...) is reading this. Read on

## What it is

23 Flask mirror websites (Amazon, GitHub, BBC News, ...) packaged into one Docker image, plus a control plane on `:8101` for resetting per-site state. Used as a deterministic offline environment for web-agent benchmarks. ~3 GB image.
25 Flask mirror websites (Amazon, GitHub, BBC News, ...) packaged into one Docker image, plus a control plane on `:8101` for resetting per-site state. Used as a deterministic offline environment for web-agent benchmarks. ~3 GB image.

Two repos:
- **code** (this one) — Flask apps, control plane, scripts.
Expand Down Expand Up @@ -48,17 +48,17 @@ Inside the image, sites live at `/opt/WebSyn/<site>/`. The path predates the ren
# fresh clone
./scripts/fetch_assets.sh # pulls assets from HF
./scripts/build.sh # docker build -t webharbor:dev .
docker run -d -p 8101:8101 -p 40000-40023:40000-40023 webharbor:dev
docker run -d -p 8101:8101 -p 40000-40024:40000-40024 webharbor:dev
```

Or use the published image directly:
For the separately released published image (which may lag this source branch):

```bash
docker run -d -p 8101:8101 -p 40000-40023:40000-40023 \
docker run -d -p 8101:8101 -p 40000-40024:40000-40024 \
battalion7244/webharbor:latest
```

Sites are on `40000`-`40023` in the order declared by `SITES=( ... )` in `websyn_start.sh`. Control plane:
Sites are on `40000`-`40024` in the order declared by `SITES=( ... )` in `websyn_start.sh`. Control plane:

| Method | Path | Purpose |
|--------|---------------------|-------------------------------------------|
Expand Down Expand Up @@ -136,13 +136,13 @@ python3 -m py_compile sites/<site>/app.py

# 3. run on alt ports (don't collide with anything you already have running)
docker run -d --rm --name wh-test \
-p 8201:8101 -p 41000-41023:40000-40023 webharbor:dev
-p 8201:8101 -p 41000-41024:40000-40024 webharbor:dev

# 4. control plane healthy, all sites alive
curl -s http://localhost:8201/health | python3 -m json.tool | head

# 5. every site renders 200
for p in $(seq 41000 41023); do
for p in $(seq 41000 41024); do
curl -so /dev/null -w "$p:%{http_code}\n" http://localhost:$p/
done

Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ The full agent guide is loaded above via `@AGENTS.md`. The notes below apply onl

## Existing containers

If a container is already running on `:8101` / `:40000-40023`, treat it as the user's working environment — don't `docker stop` or `docker rm` it without explicit confirmation. Spin up your test container under a different name on alt ports (`:8201`, `:41000-41023`).
If a container is already running on `:8101` / `:40000-40024`, treat it as the user's working environment — don't `docker stop` or `docker rm` it without explicit confirmation. Spin up your test container under a different name on alt ports (`:8201`, `:41000-41024`).
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ git clone https://github.com/<you>/webharbor && cd webharbor
./scripts/fetch_assets.sh # pull current assets
./scripts/new_site.py mywebsite # OR edit an existing site
./scripts/build.sh && docker run -d --rm \
-p 8101:8101 -p 40000-40023:40000-40023 webharbor:dev
-p 8101:8101 -p 40000-40024:40000-40024 webharbor:dev
# iterate locally...

./scripts/extract_assets.sh ../webharbor-static-pr/ # split assets out
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# WebHarbor — slim, self-contained image.
# 24 Flask mirror sites + control plane on :8101.
# 25 Flask mirror sites + control plane on :8101.

FROM python:3.12-slim-bookworm

Expand Down 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"]
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,15 @@ git clone https://github.com/aiming-lab/WebHarbor && cd WebHarbor
./scripts/build.sh # docker build -t webharbor:dev .
```

This source branch also includes IMDb at port `40024` (25 mirrors total). After fetching the pinned assets and building locally, run it with:

```bash
docker run -p 8101:8101 -p 40000-40024:40000-40024 webharbor:dev
```

The published image above is released separately; use the local build to review the IMDb contribution.


## 🤝 Contribute

We have built 23 high-quality mirrors covering the [WebVoyager](https://github.com/MinorJerry/WebVoyager) benchmark. The next goal is **100+ sites**, covering everything in [Online-Mind2Web](https://huggingface.co/datasets/osunlp/Online-Mind2Web). We are inviting the community to build this together.
Expand Down
3 changes: 2 additions & 1 deletion control_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@
'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', 'imdb',
]
BASE_PORT = 40000
WEBSYN_DIR = '/opt/WebSyn'
Expand Down
Loading