Game Move layout feedback events

The beta Game Move layouts (strip, card, narrative) log feedback events for logged-in users so offline batch jobs can measure satisfaction, bailouts, layout switches, and qualitative notes. Events are write-only at request time.

Auth API

Query: log_layout_feedback_event

Handler derives the partition key from the authenticated user (cognitoPoolClaims.sub). The client never sends a partition key.

{
  "query": "log_layout_feedback_event",
  "pars": {
    "event": "feedback_note",
    "layoutId": "card",
    "comment": "Submit button hard to find on mobile",
    "gameId": "abc123",
    "durationMs": 45000
  }
}

Event types

Event When Required pars beyond layoutId
session_start Feedback panel opens
feedback Thumbs up/down rating (up | down)
feedback_note User clicks Post on a comment comment (1–500 chars trimmed)
switch_to_classic User returns to classic layout
layout_switch User switches beta layout toLayoutId

Optional on all events: gameId, durationMs (non-negative integer).

layoutId / toLayoutId values

strip | card | narrative

DynamoDB storage

Single-table layout in abstract-play-{stage}:

Key Value
pk LAYOUTFB#<userid>
sk <epochMs>#<random> — unique per event

Attributes: event, layoutId, plus event-specific fields (rating, comment, toLayoutId, gameId, durationMs).

Implementation: lib/layoutFeedbackEvents.ts, wired from api/abstractplay.ts.

Offline read path

Nightly records-layout-feedback-analytics (backend-crons) scans LAYOUTFB# rows, aggregates rollups and copies note text to private ops S3 (gamemove-layout/analytics/). See Game Move layout analytics.

Privacy

Related