vr-shopxo-plugin/reviews/FirstPrinciples-on-council-...

3.0 KiB

FirstPrinciples Review — council-phase2-assessment.md

Reviewer: council/FirstPrinciples Date: 2026-04-21 Document reviewed: reviews/council-phase2-assessment.md (BackendArchitect + FrontendDev joint output) Verdict: [APPROVE]


Review Summary

The merged assessment accurately captures the root causes and recommended fixes. My review confirms alignment with my independent analysis and adds supplementary first-principles commentary.


What the Assessment Gets Right

P0 — submit() GET vs POST

Correctly identified that location.href produces a GET request that never calls BuyDataStorage(). The field name mismatch (goods_params vs goods_data) is also correctly flagged.

The recommended fix (hidden form POST with goods_data) is minimal and correct.

P1 — Zoom container

The .vr-zoom-container wrapper solution is the right approach. Shared transform-origin: center top ensures both stage and seats scale from the same anchor.

P1 — spec loading

Correctly identifies that ShopXO's spec matching is type:value string-based, not ID-based. The recommendation to use a plugin-specific API endpoint for sold-seats is architecturally sound.


FirstPrinciples Supplementary Commentary

A note on spec_base_id_map complexity

The assessment recommends keeping the map as-is. From a first-principles view, this is a pragmatic choice (performance optimization) but should be documented as such. Future maintainers should know:

  • spec_base_id_map is a performance cache, not a business invariant
  • If BatchGenerate reruns and clears the map, the frontend will have stale data
  • The authoritative source of truth is GoodsSpecBase + GoodsSpecValue, not the JSON map

Shopping cart is not the problem

The assessment frames Issue 1 as a "cart format" issue. From first-principles, the more accurate framing is: the Buy pathway is correct; only the transport mechanism is wrong. The code already bypasses cart (goes directly to Buy::Index()). The fix should be framed as "fixing the Buy transport" not "fixing cart format."

The real P0 no one mentioned

onOrderPaid() is the seat-uniqueness authority. No assessment document addresses whether this hook is correctly implemented. If it isn't, no amount of frontend work matters — duplicate sales can still occur. This should be verified before any release.

New finding: GetGoodsViewData() returns only first session

Confirmed from SeatSkuService.php: validConfigs[0] means multi-session products show only the first session. This is a latent bug that will surface when multiple shows are configured. Not in the original 4-issue list — flagging as P2 (latent).


  1. Framing correction: Issue 1 is "Buy transport broken" not "cart format error"
  2. onOrderPaid audit: Add as prerequisite before P0 fix deployment
  3. GetGoodsViewData multi-session bug: Add to issue list as P2 latent

Vote

[APPROVE] — Assessment quality meets standard. Ready for implementation phase.