Skip to content

feat(wineaccess): add WineAccess mirror (site 16, port 40015)Add WineAccess mirror - #75

Open
BLueMooneer wants to merge 3 commits into
aiming-lab:mainfrom
BLueMooneer:feat/wineaccess-mirror
Open

feat(wineaccess): add WineAccess mirror (site 16, port 40015)Add WineAccess mirror#75
BLueMooneer wants to merge 3 commits into
aiming-lab:mainfrom
BLueMooneer:feat/wineaccess-mirror

Conversation

@BLueMooneer

Copy link
Copy Markdown

Mirrors https://www.wineaccess.com/ as wineaccess, the 16th WebHarbor site on port 40015.

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

Model Rows
Wine 60
Review 180
User 4
CartItem 12
WishlistItem 20
PaymentMethod 4
Order 4
OrderItem 12
Club 4
ClubMembership 4

Benchmark users are seeded with password TestPass123!: alice.j@test.com, bob.c@test.com, carol.d@test.com, and david.k@test.com.

Assets

Paired HuggingFace assets PR: https://huggingface.co/datasets/ChilleD/WebHarbor/discussions/21

This code PR pins .assets-revision to refs/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.db
  • wineaccess/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 wineaccess in:

  • websyn_start.sh
  • control_server.py
  • Dockerfile (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/ from instance_seed/.

Byte-identical reset confirmed:

POST /reset/wineaccess -> {"pid":731,"ready":true,"site":"wineaccess"}
33f4b6c0305bf57767ae9d7a1145f1b9  /opt/WebSyn/wineaccess/instance/wineaccess.db
33f4b6c0305bf57767ae9d7a1145f1b9  /opt/WebSyn/wineaccess/instance_seed/wineaccess.db

Pre-PR checks

Run against webharbor:dev with container ports 8201:8101 and 41000-41015:40000-40015:

  • python -m py_compile sites/wineaccess/app.py sites/wineaccess/seed_data.py — clean
  • bash -n websyn_start.sh — clean
  • GET /healthok: true, 16/16 sites alive
  • all sixteen ports 41000-41015 returned 200
  • WineAccess routes /, /club/, /club/connoisseurs/, /gifting/, /podcast/, /wine-team/, /store/?q=cabernet, /contact-us/, /where-we-ship/ returned 200
  • POST /reset-all completed successfully with all 16 sites ready
  • Playwright walkthrough for task Wine Access--10 passed: Carol logs in, opens Exclusive Clubs, joins Connoisseurs Club, and sees it on the account page

Visual evidence

Screenshots to attach in this PR conversation:

  • Real WineAccess home vs local WineAccess home
  • Real WineAccess Exclusive Clubs vs local Exclusive Clubs
  • Real WineAccess Podcast/Gifting/Experts pages vs local mirror pages

@reacher-z reacher-z left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.sh passed.

  • python3 -m py_compile sites/wineaccess/app.py sites/wineaccess/seed_data.py control_server.py, bash -n websyn_start.sh, and git diff --check origin/main...HEAD passed.

  • Built the image successfully on arm64 (webharbor-review-75, 5.93 GB).

  • Started it on 8201 / 41000-41015: /health reported 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/wineaccess restored 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 order WA-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, and websyn_start.sh.
  • The paired assets PR (ChilleD/WebHarbor discussion/PR 21) is still open, and this branch pins refs/pr/21. As noted in the PR description, .assets-revision should 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.

@reacher-z

Copy link
Copy Markdown

Visual follow-up for the same 9dbaacc review (current production site compared with the local mirror at a 1900×900 viewport, with Codex assistance).

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:

  1. / is not a homepage mirror. Production / currently has a dedicated home experience (referral hero, “This Week’s Member Favorites,” press section, and shop collections). Local / renders the Limited Time Offers filter/grid, sets the title to Limited Time Offers - Wine Access, and highlights that navigation item. This is also explicit in sites/wineaccess/templates/index.html, which is an offer-results template rather than a homepage. Please add a representative home page instead of aliasing the offer catalog visually.

  2. The Experts first viewport does not match the source page. Production /wine-team/ opens with “We’re here to give you unprecedented access” and immediately shows Laura Koffer’s portrait/profile plus links to the four experts. Local /wine-team/ opens with a dark “Meet the Palates Behind Wine Access” hero using the club/gifting bottle image; style.css assigns club_wine_display.webp to .experts-hero. Please use the harvested expert imagery/content to reproduce the source page’s people-first layout rather than reusing the club art.

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.

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