Repository navigation
Conversation
yummybomb
marked this pull request as ready for review
September 30, 2026 14:52
…staurant-tools # Conflicts: # registry.json
…t a refused search at them OpenTable often answers a Kernel browser's home and search pages with 'Access Denied' while still serving restaurant pages. The read tools refused up front whenever the current document was that page, and search_restaurants told the agent to wait or switch browsers, which it cannot do. The reads now go ahead and judge the actual response, get_restaurant and get_reviews accept a restaurant's short /<name-slug> address (never account or sign-out paths), and a refused search says to use that address. The changed tools go back to draft.
Contributor
Author
|
Pushed f4c3d6b: OpenTable often serves a Kernel browser "Access Denied" on its home page and
Bench (plain Kernel browsers, 5 pairs, paired medians over pairs where both arms were correct):
With tools, every trial on both models reported 19:45 and 20:00. Haiku without tools listed extra times in 2 of 5 pairs, which is why the report labels this intent "mixed". |
… and ask to check a guessed short address prepare_reservation no longer refuses up front when the current document is OpenTable's 'Access Denied' page; like get_availability it judges the actual responses, so the restaurant-page flow a refused search points to can finish. The refused search now asks to check the returned name and address before using a restaurant_id found by a guessed short address. prepare_reservation goes back to draft.
…ort addresses like /log-haven
…ib snippets, skip out-of-window slots, judge offsetless dates by UTC-12
…-window slots before checking their shape, and report truncated only past 50 slots Each availability read fetched about 184 first-party modules to find the query id; the id is now kept in the tab's sessionStorage keyed by the entry module, which names the build, and dropped when the query reports an error. Also states the restaurant-offset rule once in get_availability's registry notes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
window_minutesare left out before their shape is checked, rather than failing the read.All seven tools are page-local and registered as one namespace.
get_availabilityandprepare_reservationsharelib/opentable-availability.js;get_restaurantandget_reviewssharelib/opentable-restaurant-page.js. The two account tools keep their own copies of the dashboard read so their QA'd source is unchanged. Availability replays the site's observed read-only query using the current profile credential and a dynamically extracted first-party query document ID. Module reads are bounded (a live read fetched 184 modules), and the query ID is kept in the tab's sessionStorage keyed by the entry module, which names the site's build, so later reads skip them; it is dropped when the query reports an error. Query errors fail explicitly, and credentials/slot hashes are never returned.'Access Denied' documents
OpenTable often answers a Kernel browser's home and search pages with 'Access Denied' while still serving restaurant pages.
get_restaurant,get_reviews,get_availabilityandprepare_reservationno longer refuse because of the current document; they judge OpenTable's actual responses.get_restaurantandget_reviewsaccept a restaurant's short/<name-slug>address (never account or sign-out paths). A refused search points at that address and asks to check the returned name and address before using therestaurant_id, since a short address can belong to another location. Short addresses are refused only when they name a sign-in, account or booking path, so restaurants such as/log-havenare accepted.Safety and limitations
Preparation never selects a slot, holds inventory, books, navigates, verifies the booking account or establishes deposits/cancellation/no-show fees. It requires an exact observed standard date/time/party/seating match and returns a public profile handoff. Booking, holds, cancellation, modification and notifications remain unshipped because the runtime has no trusted exact-action human approval path. No live booking, hold, favorite or account mutation was performed.
Account summary exposes container counts only, not unobserved reservation item details. Favorites' populated ID shape is grounded in the site's query definition and covered by fabricated fixtures. Save/unsave and account changes are omitted. Bot protection and first-party bundle-format changes fail explicitly.
Status and evidence
get_account_summary,list_saved_restaurants:qa_passed. Independent final-source QA at93dd9c6, Node-fixture-only for account success, populated and wrong-account cases; source unchanged since.search_restaurants,get_restaurant,get_reviews,get_availability,prepare_reservation:draft. Their source changed after that QA for the 'Access Denied' handling, so they need fresh independent QA.get_restaurantby short address,get_availabilityandprepare_reservationsucceeded (prepared, no hold). With the page clock at 7pm Pacific,get_availabilityfor a San Francisco restaurant that evening returned slots (before the fix:invalid_input), andget_restaurantwith/log-havenreturned that restaurant (before:invalid_input).node --test "tests/*.test.mjs"pass.Do not auto-merge.