Migrated from Notion Overview / Domain brief — https://app.notion.com/p/3d31f8eaa3ad81df848cdaef530ea90d
Overview / Domain brief¶
Callout Locker / rental vs SYS-005: out of SYS-005 test scope; locker ownership is
rental-api-serverafter merged #5/#919. Callout As of 2026-09-24 IST — coverage/board map refreshed: TEST coverage recommendations (2026-09-24). Tips: API develop94f64f5; browser main4a53eab. Karate+k6 on develop (#974); Playwright nightlysuite=adminoften red. Callout Who should read: QA and new engineers — SYS-005 scope, goldens, canonical terms. Skim scope + booking path; deep-dive only what your class needs. Canonical terms: Business, Outlet, Venue, Booking, Customer — never Reservation / Location as IDs. Lock rule: noupdate_bookingon Confirmed locks.
SYS-005 rules (QA-confirmed)¶
Callout Class-bound: new Outlet of an existing config class = zero new tests. Tests bind to class / golden behavior, not per-SKU.
Covered vs queued tests¶
What is proven today (business language): Scenario matrix — Playwright desk journeys (BA Midway on nightly suite=admin, often red as of 2026-09-24; buyout/pay-later/slot-full specs exist but not nightly) and unit/oracle booking-math for Midway / Super Pass / ULTIMATE. Latest board/CI map: TEST coverage recommendations (2026-09-24).
Standing rules: new outlet of an existing class = zero new tests; no unsafe Confirmed-lock replace on desk (patch booking); live pay is Datacap after create for ATP/US goldens.
- ATP class fingerprint: duration-on-item + buffer 30 + 2 rooms
- US class fingerprint: duration-on-schedule + buffer 0 + 1261 capacity-1 pool
- Goldens: The Midway Play (ATP); Super Pass + ULTIMATE (US)
- Deferred / out of scope: FiveStar; ~53 insurance/hospital/benefits BZ* (list-not-probe); hotel/locker/kiosk/R365/membership purpose chapters
- Locks: no update_booking on Confirmed; desk path admin_booking.patch_booking (ADR-0008 / #883). Master spec bz-platform-context#107; #121 does not close SYS-005.
- Oracle = booking-math fixtures in reservation-api-server (CI Quality Gate via #925 on develop) — not a separate bz-qa product.
Working SoT for day-one reading: this Notion hub. Fallback mirror: OneDrive Documents/Projects/BZ/SYS-005 + phase0 markdown. Word Online is not SoT.
Next: Doctype inventory (overview) · Domain knowledge index · TEST coverage recommendations (2026-09-24) · Test approach.
SYS-005 Domain Knowledge¶
BookingZone / VenuPlus QA — phase0 corpus (expanded OneDrive pack).
SYS-005-domain-knowledge.md¶
SYS-005 domain knowledge (living)¶
Source of truth: JSON under local bz-qa/phase0/ecosystem/. This file is the share layer.
Read the Word pack SYS-005-domain-knowledge.docx (entity model, 120-field A/B/C/D, create/pay path, API map, smells) and Excel sheet 07_Doctype_inventory (all 250 names).
Scope (locked 2026-09-02)¶
- Tests stay class-bound (3 classes). New Outlet of an existing class = zero new tests.
- FiveStar deferred.
- ~53 insurance/hospital/benefits
BZ *names: out of SYS-005 (listed, not probed, not tested). - Hotel / locker / kiosk / R365 / membership: deferred (names only, no purpose chapters).
Doctype census (DEV Frappe)¶
250 BZ* names, 56 child tables, 1 Single (BZSettings).
| Domain | n | SYS-005 |
|---|---|---|
| Booking | 74 | in-scope inventory + class tests |
| Unrelated (insurance/hospital/benefits) | 53 | out of scope |
| Admin-ops | 43 | inventory |
| Accounting-R365 | 27 | deferred |
| Hotel-Locker-Rental-Movie | 27 | deferred |
| Commerce | 21 | addons/promos/deals in-scope |
| CRM | 5 | deferred |
Booking path (what the quality gate actually uses)¶
Business → Outlet → Venue → VenueResource
BZServiceItem (~120 fields, A/B/C/D) → BZSchedule (slots/venue_details on parent GET)
BZAddon, BZPromoCode, BZDeal, BZTag, BZDigitalWaiver, BZResourceBlock
BZBooking + BZBookingAvailability not fetched (#883_lock_path=yes on ATP Midway — do not run update_booking)
Goldens: ATP Midway Play; US Super Pass (6 waivers) + ULTIMATE. US Outlets A and B are different Businesses — do not collapse.
Create/pay (do not execute): cart → create_booking (Pending) → Datacap → record_external_payment_transaction → finalize_booking_after_payment. Complete path on ATP is 100OFF → $0 → skip card. DEV Datacap is payment_environment=production.
Canonical terms: Booking, Outlet, Customer, Business, Venue.
Full 250-row table: Excel 07_Doctype_inventory and local doctype-inventory.md.
domain-brief.md¶
Phase 0 domain brief (read-only)¶
Source: GitHub only. QA Frappe was not reachable. No #883 repro. No GitHub writes.
Canonical terms (bz-platform-context/glossary/domain-terms.md):
- Business (BZBusiness) — never Tenant/Company
- Outlet (BZOutlet) — never Location/Site/Venue
- Venue (BZVenue) — bookable space inside an Outlet
- Customer (BZCustomer) — never Guest (Guest = unauthenticated)
- Booking (BZBooking) — never Reservation/Order
SYS-005 (bz-platform-context#107): a new Outlet of an existing config class = zero new tests.
Config class ≈ backend × service-item shape × pay × channel × lock/buffer behavior.
Fingerprint table (docs/booking-config-fingerprint.md) is not landed yet (issue #112 still open).
883 / PR #885 (do not reproduce):¶
- Symptom: Successful Booking created on venuplus-app, then admin
update_bookingdate/time change left soleBZBookingAvailabilityReleased, no replacement Confirmed lock, later double-book. - Create path:
bookingzone.api.booking_transaction.create_booking - Vulnerable admin path:
bookingzone.api.admin_booking.update_booking(shim reschedule) - Safe path already:
patch_bookingin-place Confirmed lock (locks_rescheduled) - Prod evidence IDs are not QA fixtures (listed only as public issue evidence; excluded from datasets)
1. VenuPlus (At The Pier)¶
- Business pack: VenuPlus / At The Pier
- App that creates the Booking:
venuplus-app(customer PWA; registry: single-tenant ATP) - Admin edits:
admin-web-app(update_bookingvia shim reschedule;patch_bookingvia BookingDetail/edit drawers) - Create API:
bookingzone.api.booking_transaction.create_bookingthenapply_booking_workflow_action+ payment finalize - Update APIs: admin
update_booking(vulnerable until #885) vspatch_booking(in-place) - Backend: Frappe (
reservation-api-serverSoT) - Service item: Package (birthday party) + Venue resources
- Timeslots:
bookingzone.api.customer.get_timeslots/availability.get_timeslots; locks viaavailability.lock_resources - Payment sandbox: Datacap cert (
payment_environmenton Outlet; PWANEXT_PUBLIC_DATACAP_SANDBOXis UI badge only) - #883 lock path: yes (prod incident: PWA create → admin
update_booking) - QA IDs: UNKNOWN (no QA Desk access this pass)
Evidence: venuplus-app/AGENTS.md, venuplus-app/docs/API-readme.md, reservation-api-server#883, repo-registry.md
2. FiveStar (Malibu Jack's / CenterEdge-heavy)¶
- Business pack: FiveStar (Malibu Jack's)
- App that creates the Booking:
customer-web-app(multi-tenant white-label; Scene75 + Malibu Jack's) - Admin edits:
admin-web-app(same Frappe APIs if the Booking is a Frappe doc; CE-native inventory is a different hold) - Create API: customer-web booking/checkout against CE product path (SYS-005 P0 “CE product book”). Stale README still names ReserveCloud
EventPackage*. Do not treat that README as current SoT. - RC vs CE: SYS-005 /
customer-web-app#379require both RC Plan and CE product@smokeon this app. FiveStar pack is CE-heavy. An extra FiveStar RC Plan class is unconfirmed this pass (Scene75 is the documented RC customer-web brand; it is not one of the three requested Business packs). - Backend: CE (CenterEdge)
- Service item: ce-product
- Venue lock (Frappe Confirmed
BZBookingAvailability): no (CE inventory, not Frappe Venue Resource hold) - #883 lock path: no — #883 is Frappe
update_bookingrelease-then-relock on Confirmed availability rows - Payment sandbox: CenterEdge (glossary gateway
CenterEdge); Magensa/Datacap may exist on other customer-web classes — not proven for this FiveStar CE class - QA IDs: UNKNOWN
Evidence: repo-registry.md, SYS-005, customer-web-app#379, glossary payment gateways. Fingerprint table not in repo yet.
3. United Skates¶
- Business pack: United Skates
- App that creates the Booking:
venuplus-app/plans(notcustomer-web-app). SYS-004 PWA auth is specified for this/plansguest/sign-in path. - Create API: same PWA write path —
bookingzone.api.booking_transaction.create_booking - Catalog: Frappe Plans (
reservation-api-server#636single-date schedule logic; closed venuplus issues #167/#177/#179/#183) - Backend: Frappe
- Service item: Plan
- Venue lock: UNKNOWN (Plans catalog ≠ proven party Venue assignment)
- #883 lock path: UNKNOWN — same
update_bookingAPI exists, but only mark yes when the class uses ConfirmedBZBookingAvailabilityVenue locks. Not proven for United Skates Plans this pass. - Payment sandbox: Datacap cert (same PWA Datacap outlet config); Cognito for
/planslogin - QA IDs: UNKNOWN
Evidence: venuplus-app/AGENTS.md (SYS-004 United Skates /plans), venuplus-app/.env.example (Cognito + LogRocket unitedskates-app), issues listed above.