feat(wineaccess): add WineAccess mirror (site 16, port 40015)Add WineAccess mirror - #75
feat(wineaccess): add WineAccess mirror (site 16, port 40015)Add WineAccess mirror#75BLueMooneer wants to merge 3 commits into
Conversation
reacher-z
left a comment
There was a problem hiding this comment.
Technical review of 9dbaacc861034d45a1a2a38bf4080b81e38c63cb (performed with Codex assistance).
What I verified
-
Downloaded all 16 asset archives from
ChilleD/WebHarbor@refs/pr/21;./scripts/check_assets.shpassed. -
python3 -m py_compile sites/wineaccess/app.py sites/wineaccess/seed_data.py control_server.py,bash -n websyn_start.sh, andgit diff --check origin/main...HEADpassed. -
Built the image successfully on arm64 (
webharbor-review-75, 5.93 GB). -
Started it on
8201/41000-41015:/healthreported all 16 sites alive, and every site root returned HTTP 200. -
Confirmed WineAccess reset determinism after a real mutation. The runtime DB changed from the seed MD5 after joining a club, then
POST /reset/wineaccessrestored it byte-for-byte:before mutation / seed: 33f4b6c0305bf57767ae9d7a1145f1b9 after mutation: 96d7a4b38d0afab9b792660306adb4dd after reset / seed: 33f4b6c0305bf57767ae9d7a1145f1b9 -
Exercised stateful flows over HTTP: Carol login + join Connoisseurs Club + account-page confirmation (task 10); Alice account preference update, save a 94-point Sonoma Pinot Noir, add a Napa Cabernet to cart, and checkout with card
4242. Checkout created orderWA-260520-1005. -
Audited the 18 task records against the seed DB and rendered pages.
Finding: task 12 is ambiguous
Wine Access--12 says to search for Burgundy Pinot Noir, open two Burgundy detail pages, and identify which bottle has the later drinking window. The rendered search returns three qualifying bottles, so the pair—and therefore the answer—is not uniquely specified:
2017 Maison Leroy Nuits-Saint-Georges 2026-2032
2017 Maison Leroy Gevrey-Chambertin 2026-2035
2021 Domaine du Clos de Tart Grand Cru Monopole 2026-2033
Please either name the two bottles to compare, or ask the agent to compare all three and identify the bottle with the latest end year.
Pre-merge blockers / remaining review scope
- GitHub currently reports this PR as conflicting. A local merge-tree check identifies conflicts in
.assets-revision,control_server.py, andwebsyn_start.sh. - The paired assets PR (
ChilleD/WebHarbordiscussion/PR 21) is still open, and this branch pinsrefs/pr/21. As noted in the PR description,.assets-revisionshould be updated to the final immutable HF merge SHA after that assets PR merges. - I did not evaluate visual fidelity in this pass. The PR description says comparison screenshots will be attached, but none are currently present; a real-vs-local visual pass is still needed before approval.
The build, health, reset, and tested stateful flows are solid. I am leaving this as a commented review rather than an approval until the ambiguous task, merge conflicts/assets pin, and visual pass are addressed.
|
Visual follow-up for the same I compared the home, clubs, gifting, podcast, experts, and product-detail pages side by side. The global navigation, typography direction, Podcast hero, club/gifting structure, and product-detail hierarchy are recognizable and generally usable. Two high-visibility mismatches remain:
These are visual-fidelity findings, separate from the functional/task-grounding issues in my submitted review. Podcast was the closest match in this pass; the tested product-detail page preserved the expected image/details/cart hierarchy. I would re-check the visual pass after the homepage and Experts page are corrected. |
Mirrors
https://www.wineaccess.com/aswineaccess, the 16th WebHarbor site on port40015.Coverage
WineAccess is implemented as a self-contained Flask + SQLAlchemy mirror with product browsing, limited-time offers, token-overlap search, wine detail pages, cart quantity updates, checkout/order history, auth, account state, saved wines, club discovery and membership joins, gifting, podcast, wine-team, contact, and shipping pages.
The UI uses harvested WineAccess bottle and club imagery from the paired HF assets PR, with Jinja2 templates and CSS matching the original storefront layout closely enough for visual task execution.
Seeded rows
Benchmark users are seeded with password
TestPass123!:alice.j@test.com,bob.c@test.com,carol.d@test.com, anddavid.k@test.com.Assets
Paired HuggingFace assets PR: https://huggingface.co/datasets/ChilleD/WebHarbor/discussions/21
This code PR pins
.assets-revisiontorefs/pr/21, following the pending-assets pattern used by recent WebHarbor contributions. After the HF PR is merged, this should be bumped to the final HF merge commit SHA.The HF archive contains:
wineaccess/instance_seed/wineaccess.dbwineaccess/static/images/wineaccess/static/external_cache/Tasks
18 tasks in
sites/wineaccess/tasks.jsonl, using the WebVoyager schema only:web_name,id,ques,web,upstream_url.Coverage spans search, browse/filter, limited-time offers, cart updates, checkout, saved wines, account/order reads, club joining, gifting, podcast, experts, shipping, and contact pages. Harder tasks require multi-step reasoning across account state, catalog details, order history, and club membership.
Shared-file changes
Registers
wineaccessin:websyn_start.shcontrol_server.pyDockerfile(EXPOSE 8101 40000-40015)Docs now describe 16 local mirrors and port range
40000-40015.Determinism
All seed functions gate at function level before writing. Runtime handlers read from SQLAlchemy; scrape intermediates are not shipped. Reset restores
instance/frominstance_seed/.Byte-identical reset confirmed:
Pre-PR checks
Run against
webharbor:devwith container ports8201:8101and41000-41015:40000-40015:python -m py_compile sites/wineaccess/app.py sites/wineaccess/seed_data.py— cleanbash -n websyn_start.sh— cleanGET /health—ok: true, 16/16 sites alive41000-41015returned 200/,/club/,/club/connoisseurs/,/gifting/,/podcast/,/wine-team/,/store/?q=cabernet,/contact-us/,/where-we-ship/returned 200POST /reset-allcompleted successfully with all 16 sites readyWine Access--10passed: Carol logs in, opens Exclusive Clubs, joins Connoisseurs Club, and sees it on the account pageVisual evidence
Screenshots to attach in this PR conversation: