Skip to content

Add Ohio State University mirror site (port 40015) - #12

Open
richard-peng-xia wants to merge 1 commit into
aiming-lab:mainfrom
richard-peng-xia:add-osu-mirror
Open

richard-peng-xia wants to merge 1 commit into
aiming-lab:mainfrom
richard-peng-xia:add-osu-mirror

Conversation

@richard-peng-xia

Copy link
Copy Markdown
Contributor

TL;DR

Adds a fully functional osu.edu mirror site to WebHarbor at port 40015, with 20 benchmark tasks covering programs, news, events, faculty, research centers, athletics, and admissions.

Motivation

Ohio State University is one of the largest public universities in the US (60,000+ students), with a highly visited portal spanning academics, research, health sciences, and Big Ten athletics. It covers a domain — large public flagship university browsing — not represented in the existing 15 sites, and offers uniquely diverse multi-step tasks: professional degree programs (MD, JD, PharmD, DVM, OD), a full athletics section with 36 varsity sports, and a multi-campus structure (Columbus, Lima, Marion, Mansfield, Newark, Wooster).

Design

Flask application (sites/osu/app.py)

Ten SQLAlchemy models: User, College, Department, Program, NewsArticle, Event, ResearchCenter, Faculty, AthleticTeam, Bookmark. All seeded idempotently (seed function gated on College.query.first()).

Route coverage mirrors the real site's navigation:

  • Homepage with featured news, upcoming events, and institutional stats
  • News listing + article detail with category/search filters
  • Academics overview listing all 16 colleges/schools
  • Programs listing + detail with degree type, college, and online filters
  • Events listing + detail with category, campus, and date filters
  • Research centers listing + detail pages
  • Departments listing (grouped by college) + detail with faculty roster
  • Faculty listing + profile pages with department filter
  • Athletics overview + team detail pages (unique to OSU vs other sites)
  • Admissions overview with undergraduate/graduate/professional/online tabs
  • About page with real OSU statistics
  • Unified search across programs, news, events, and faculty
  • Auth: login, register, logout, account (bookmarks)

Seed database

16 real OSU colleges (Arts & Sciences, Fisher Business, Moritz Law, Medicine, Veterinary Medicine, ...), 20 degree programs (including MD, JD, PharmD, DVM, OD — unique professional degrees), 20 news articles (2023–2025, 7 categories), 16 events (multiple campuses), 15 research centers (TDAI, Byrd Alzheimer's Center, Ohio Supercomputer Center, ...), 15 faculty, 26 athletic teams (all real OSU varsity sports), and 4 benchmark users (alice/bob/carol/dave @osu.edu, password: test1234). Seed DB generated at image build time via seed_data.py.

Templates

25 Jinja2 templates styled with OSU Scarlet (#BB0000) and Gray (#666666), modeled on real osu.edu layout: main nav (About / Academics / Research / Impact / Athletics), card-grid listings, detail pages with sidebars, paginated results (20 items/page). Includes an athletics section not present in other university mirrors.

Benchmark tasks (tasks.jsonl)

20 tasks (IDs Ohio State University--0 through Ohio State University--19) covering: professional degree program lookup (PharmD, DVM, OD), athletics records and team info, multi-campus event filtering, research center browsing, faculty research lookup, admissions requirements, and 3+ multi-step reasoning tasks.

Verification

Check Result
py_compile sites/osu/app.py
All 12 main routes → HTTP 200 (werkzeug test client)
Seed: 16 colleges, 20 programs, 20 news, 16 events, 15 faculty, 15 centers, 26 teams, 4 users
Seed idempotent (second run produces no duplicate rows)
./scripts/build.sh webharbor:dev requires Docker daemon — not run locally
POST /reset/osu + md5sum match requires Docker daemon — not run locally

HuggingFace assets

OSU has no scraped image assets — all data is code-generated from seed_data.py. The instance_seed/osu.db is built directly inside the Docker image via a RUN step in the Dockerfile, eliminating the need for a HuggingFace tarball. No .assets-revision bump is required.

Registration

Site registered in all three required locations:

  • websyn_start.sh SITES=(...) — index 15, port 40015
  • control_server.py SITES=[...]
  • Dockerfile EXPOSE 40000-40015

🤖 Generated with Claude Code

Adds a fully functional osu.edu mirror as the 16th WebHarbor site.

Models: User, College, Department, Program, NewsArticle, Event,
ResearchCenter, Faculty, AthleticTeam, Bookmark.
Routes: homepage, news, programs, events, research, departments,
faculty, athletics, admissions, about, unified search, auth.
Templates: 25 Jinja2 templates in OSU Scarlet (#BB0000) / Gray.
Tasks: 20 benchmark tasks (WebVoyager schema).

Seed: 16 real OSU colleges, 20 programs (incl. MD/JD/PharmD/DVM/OD),
20 news articles, 16 events, 15 faculty, 15 research centers,
26 athletic teams, 4 benchmark users (alice/bob/carol/dave @osu.edu,
password: test1234). Seed DB generated at Docker build time via
seed_data.py — no HuggingFace asset required.

Registers osu in websyn_start.sh, control_server.py, and Dockerfile.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
hqhq1025 pushed a commit to hqhq1025/WebHarbor that referenced this pull request May 26, 2026
…real page coverage)

Per-site outcomes (data growth + tasks):
- allrecipes: recipes 674→1316, tasks 45→161 (+5 new pages: meals/ingredients/cuisines/newsletter/sitemap; /register+/login+/recipe-box POST verified)
- amazon: products 743→1506 (Open Library + brand SKUs across 8 categories), tasks 41→155 (+/registry+/sell; /api/cart/update + /order/return real persistence; fixed 9 datetime.utcnow defaults)
- apple: products 157→305 (Watch bands, cases, accessories, legacy lineup), trade_in_values 14→54, tasks 43→158 (+9 static pages + /trade-in/quote JSON endpoint with condition multipliers)
- arxiv: papers 4079→8692 (35 cats × 3 windows, 3.2s throttle), tasks 43→153 (MEGA-style index reorder + VACUUM applied)
- bbc_news: articles 632→1304 (25 BBC sub-feeds), tasks 42→156 (+/privacy+/terms+/cookies+/accessibility)
- booking: property 649→1258, city 85→136, landmark 203→329, tasks 44→150 (+/customer-service+/legal+/careers+/press incl. aliases)
- cambridge_dictionary: words 3321→7021 (+IPA/audio columns), tasks 43→159 (+/word-of-the-day archive+/wordlists×6+/blog+/about+/help)
- coursera: courses 581→1369 (Specializations/Pro-Certs/Guided-Projects/Degrees), tasks 42→160 (+/for-universities+/for-government+/help+/careers+/mobile+/blog)
- espn: articles 501→1033, games 316→526, player_stats 228→508, tasks 44→160 (+/about+/press+/careers+/watch; /favorite POST persists)
- github: repos 1158→2846 (3 star bands), commits 6850→26422, PRs 0→1500, tasks 41→157 (+Solutions/Enterprise/Docs/API/Status/Blog/Contact/Privacy/Terms stubs)
- google_flights: airports 166→365 (OpenFlights full), bookings 12→63, tasks 42→152 (+/about+/help+/privacy+/terms+/trips+ map view)
- google_map: places 6872→16706, cities 219→415, reviews 280→1050, photos 140→440, timeline 75→225, tasks 41→156 (+5 new categories incl. chains, +/contribute+/your-data)
- google_search: search_results 1170→2744, paa 319→817, topics 213→418, tasks 43→176 (real pagination 10/page × 10 tabs)
- huggingface: repos 2276→6941 (datasets +4138), discussions 54→112, tasks 43→158 (+/posts+/solutions+/compete; fixed 12 datetime.utcnow defaults + md5-derived non-randomness)
- wolfram_alpha: computation_results 573→1314, topics 61→116, notebook_entries 84→204, topic_feedback 32→67, tasks 46→156

Determinism: every site now applies the full gotchas.md fix set
(PINNED bcrypt #1, alpha-sorted indexes + VACUUM #2, MIRROR_REFERENCE_DATE
for both seed-loop and Column-default datetime.utcnow aiming-lab#3, md5-derived
seeds replacing hash() #2-tail, tie-breaker .id.asc() on top-N aiming-lab#12).
hqhq1025 pushed a commit to hqhq1025/WebHarbor that referenced this pull request May 27, 2026
… / real imdb.com)

Brings the IMDb mirror from baseline (25 routes / 18 templates / 18 tasks /
5 POST) to vanilla parity. New content derives from existing real scraped
imdb.com payloads (keywords, cast characters, box-office, akas) — no external
APIs.

New surfaces (33 new HTML templates wiring 36 GET pages):
  - Title sub-pages: /trivia /quotes /goofs /awards /parents-guide
    /technical-specs /keywords /locations /companies /release-info
    /external-sites /connections /photos /soundtrack /faq /episodes
  - Name sub-pages: /bio /personal-life /awards /quotes /trivia /photos
    /filmography
  - Lists: /lists /list/<id> /lists/new /list/<id>/edit
  - Polls: /polls /poll/<slug>
  - Charts: /chart/popular_tv /chart/lowest_rated
  - Other: /news/<id> /search/name /myaccount/recently-viewed
    /account/edit /account/password

27 POST endpoints (was 5). New POSTs: submit trivia / quote / goof,
report title / name / review, vote helpful on review, flag review,
delete own review, vote on poll, suggest poll option, list CRUD,
follow/unfollow person, mark watched, edit profile, change password,
clear watchlist / ratings / follows.

12 polls + 8 user lists + 30 list items + 2311 trivia + 1924 quotes +
1297 goofs + seed follows + helpful votes — all deterministic-seeded.

Byte-identical reset invariant: gotchas #1/#2/aiming-lab#3/aiming-lab#12 applied —
fixed-salt pbkdf2 hashes, alpha-sorted index recreation, repacked
title_genre M2M, MIRROR_REFERENCE_DATE everywhere, VACUUM. Two clean
rebuilds produce md5 4ee4fd9c6a687fade6f611fa98609c52.

tasks.jsonl: 2120 tasks across 57 task_types (was 18 tasks). 94% reach
image-bearing surfaces (posters / headshots / photo galleries) — well
above the 40% target. IDs use IMDb--gui_<page>_<NNN>; every task carries
a task_type field.

Note: instance_seed/imdb.db must be re-shipped to the HF dataset and
.assets-revision bumped to the new HF SHA before this lands on main.
@DEM1TASSE DEM1TASSE mentioned this pull request Jun 20, 2026
6 tasks
evanz37 pushed a commit to evanz37/WebHarbor that referenced this pull request Sep 9, 2026
Integrate the osu mirror from PR aiming-lab#12 onto the current main as an additive 17th
site instead of the PR's stale base (which replaced merriam_webster and reused
port 40015). Registered in all three places (websyn_start.sh, control_server.py,
Dockerfile EXPOSE 40000-40016); the readiness gate in websyn_start.sh is now
derived from ${#SITES[@]} so it no longer hardcodes the site count.

osu ships no frozen DB/images in git or HF: its data is generated from
seed_data.py, so a Dockerfile build step creates instance_seed/osu.db so the
boot reset and /reset/osu have a seed to restore from. Verified: image builds,
osu serves on 40016, and /reset byte-identity holds.
evanz37 pushed a commit to evanz37/WebHarbor that referenced this pull request Sep 9, 2026
Reviewer role for PR aiming-lab#12 (previously unreviewed). One verify_N.py per task over a
shared verify_lib.py, mirroring sites/merriam_webster/verify: deterministic-first
(navigation anti-shortcut + hardcoded on-site ground truth) with an anchored
llm_screenshot_shows confirmation that is skipped under --no_llm. tasks.jsonl gains
verifier_path + judge_rubric per row (ground truth stays out of the agent-facing
file). selfcheck.py proves all 20 verifiers PASS a correct trajectory and FAIL a
wrong-answer / no-navigation one (20/20). TASK_REVIEW.md records feasibility: all
20 tasks are on-site answerable; 6 are flagged as answerable-from-prior-knowledge
(mitigated by the nav check) and task 1 has a 36-vs-27 varsity-sports inconsistency.
@Lxr-max

Lxr-max commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

I'm taking over the review and remediation of this Ohio State (osu) contribution. I'll open a separate Review: PR on top of @richard-peng-xia's original commits (authorship preserved), rebase onto current main, validate mechanical/functional quality + task feasibility, and add the grading contract (sites/osu/verify/ + verifier_path / judge_rubric in tasks.jsonl). Will link the Review PR here when it's up.

@Lxr-max

Lxr-max commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Review PR is up (does not merge this PR; it is the reviewer-role vehicle):

#120

  • Site remains index 20 / port 40020 on current main (osu was previously integrated via Add Ohio State University mirror (port 40020) with deterministic verifiers #63; cherry-picking 635808d onto today's tree would regress that hardening).
  • Independent Lxr-max review: 20/20 tasks, 20 deterministic verifiers + verify/tests harness, listing de-leaks, task 4 re-anchored so the expenditure amount is not named in the question.
  • Original commit authorship on this branch is left intact (richard-peng-xia <richard.peng.xia@gmail.com>).

ZhongyangLi0124 pushed a commit to ZhongyangLi0124/WebHarbor that referenced this pull request Sep 17, 2026
Independent reviewer grading contract for PR aiming-lab#12: one verify_N.py per
accepted task, shared verify_lib, verifier_path + rule-only judge_rubric
on all 20 rows, and a verify/tests harness (no-op, shortcut, wrong-answer,
listing-without-detail, swapped comparison, missing filter, DB mutation).
Re-anchor task 4 so the expenditure amount is not named in the question.

Co-authored-by: Lxr-max <Lxr-max@users.noreply.github.com>
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.

2 participants