{
  "issue": 372,
  "artifact_version": "postgame-design-v1",
  "status": "DESIGN_PROPOSED_OWNER_REVIEW_PENDING",
  "accepted_source_sha": "8733578a2f8a6cfd860371e8a2c2aa39f1b885bb",
  "read_only_checkout_sha": "a6ae601a2c24de57296e94d8693703230748fee4",
  "runtime_claim": "NONE; PG-1a preserved, writes default OFF",
  "owner_uat": "NOT_TESTED",
  "independent_qa": "NOT_PERFORMED",
  "viewports": [
    {
      "width": 390,
      "height": 844
    },
    {
      "width": 1024,
      "height": 900
    },
    {
      "width": 1440,
      "height": 900
    }
  ],
  "coverage": [
    {
      "criterion": "PG-1b explicit held/not_held, later creates no fact",
      "preview": "PG-1b / manager / ready or notheld",
      "interaction": "Указать итог → explicit choice + reason; Позже / X closes without change"
    },
    {
      "criterion": "Exact attendance unknown/present/absent + optional late",
      "preview": "PG-1b / manager / ready",
      "interaction": "Изменить → select mark, late, correction reason → save"
    },
    {
      "criterion": "Exact bulk roster; no inference from creator/participation",
      "preview": "PG-1b / manager / ready or longlist",
      "interaction": "Пришли все → select names → inspect immutable list + versions → exact checkbox → confirm"
    },
    {
      "criterion": "Own durable notice + source/author/time/version and acknowledgement",
      "preview": "PG-1b / participant / ready; PG-4 / participant / ready",
      "interaction": "Notice → current mark / correction; Всё верно → explicit version acknowledgement"
    },
    {
      "criterion": "Unknown record has no invented actor/source",
      "preview": "PG-1b / participant / unknownmark",
      "interaction": "Current mark version 0; own Support entry remains"
    },
    {
      "criterion": "Dispute, organizer answer/proposal, unresolved preservation, history",
      "preview": "PG-2 / participant or manager / disputed or proposed",
      "interaction": "Request explanation; manager Ответить / исправить; absent reassertion retains На уточнении"
    },
    {
      "criterion": "Explicit resolution consent or withdrawal, no silence acceptance",
      "preview": "PG-2 / participant / proposed or disputed",
      "interaction": "Проверить исправление → consent; Отозвать возражение → reason; attendance unchanged on withdrawal"
    },
    {
      "criterion": "Independent scoped reviewer resolution, no consumer manager closure",
      "preview": "PG-2 / reviewer / disputed",
      "interaction": "Рассмотреть решение → reason + demo capability step → resolution or keep open"
    },
    {
      "criterion": "Own recourse survives blocked chat/social opt-out; Support escalation",
      "preview": "PG-2 / participant / blocked; forbidden own-recouse entry",
      "interaction": "Помощь по уточнению → explicit context report → demo receipt"
    },
    {
      "criterion": "Private own-only manager note, no staff/general visibility",
      "preview": "PG-3 / manager / ready → Личная заметка",
      "interaction": "Save/edit/delete own text; role participant/reviewer has no note creation tab"
    },
    {
      "criterion": "Peer play_again/neutral/difficulties; no self/public/skill change",
      "preview": "PG-3 / participant / ready → Игроку",
      "interaction": "Select friendly rating; optional comment; contested experience explanation; save/edit same record"
    },
    {
      "criterion": "Optional organization 1–5/comment and separate real training experience",
      "preview": "PG-3 / participant / ready → Организации; training → Тренировка",
      "interaction": "Score or comment required; training plain experience only, no skill rating"
    },
    {
      "criterion": "One recipient reply and context complaint through Safety",
      "preview": "PG-3 / participant or manager / ready → Полученные",
      "interaction": "Ответить / Изменить ответ updates singleton; Пожаловаться на отзыв"
    },
    {
      "criterion": "Play again only explicit existing invitation entry",
      "preview": "PG-3 / participant / received or saved peer",
      "interaction": "Сыграть снова → existing chooser boundary; no message/friendship created"
    },
    {
      "criterion": "Unified MyGames/history entry and summary pending/unknown/disputed/settled",
      "preview": "PG-4 / manager or participant / ready",
      "interaction": "Each history row opens same composed screen with matching demo title/date/status"
    },
    {
      "criterion": "Ready/loading/empty/error/forbidden/conflict/UNKNOWN variants",
      "preview": "Top state selector; stale/unknown at PG-1b/PG-2",
      "interaction": "Conflict compares revisions without overwrite; UNKNOWN check keeps uncertainty; forbidden removes private projection"
    },
    {
      "criterion": "Shared shell, desktop Spacious40, mobile 20–24/safe areas and one scroll owner",
      "preview": "390/1024/1440 controls; PG-1b / manager / longlist → bulk",
      "interaction": "Full CSS viewport iframe; fit/100% toggle; page scroll or modal body scroll, top-right X/Escape"
    }
  ],
  "known_unimplemented_contracts": [
    "Attendance write/read projections, actual eligible roster snapshot, exact all-or-nothing bulk and pagination",
    "Durable notice storage/delivery, own historical contexts after chat/capability loss",
    "Consumer manager dispute response/proposal command absent from frozen inventory; freeze before coding",
    "Dispute acknowledgement/withdrawal history and participant-current-version resolution in runtime",
    "Independent assigned reviewer admin route, case scope, step-up, dual-version concurrency and privileged audit",
    "Own notes persistence and author access after manager revoke",
    "Peer/org/training review DTOs, uniqueness, bounded text/tags/rate budgets, edited history, recipient ACL",
    "Singleton reply backend; typed Safety report union/progress preserving old player payload",
    "Idempotency replay/current authorization and real transport UNKNOWN recovery; no network in prototype",
    "Exact UI route binding via existing game/managed entries; no proposed route is claimed implemented",
    "Browser history/gestures/keyboard visualViewport integration and actual 390/1024/1440 browser render"
  ],
  "limitations": [
    "Onest local binary unavailable in allowed inputs; system fallback when not installed",
    "Browser rendering and real accessibility interaction NOT_TESTED",
    "Gallery mutations only affect in-memory demo; reload/selectors reset",
    "Independent QA, Product CI, release and smoke not performed for product by this design task"
  ],
  "sources": [
    {
      "path": "/home/agentagency-dev/train-execution-evidence-20261027/postgame372-design-input/POST_GAME_CONTRACT_V001.md",
      "sha256": "9eb35422e06b547e3f433c4d76c5aaa70380bac983a4ef722807b7c4a4d838d7"
    },
    {
      "path": "/home/agentagency-dev/train-execution-evidence-20261027/postgame372-design-input/OWNER_DECISION_POST_GAME_MODEL_V001.md",
      "sha256": "54820a476798dfb2d09938d4dccfb5735e6a5f950580afa97dc531c6b443ea00"
    },
    {
      "path": "docs/product/SITEWIDE_UI_STYLE_GUIDE.md",
      "sha256": "186f23ae91a18ff1c4b7ff716970bf1c08a104c4e6dae96ac6d2386753a951f5"
    },
    {
      "path": "docs/product/DESKTOP_OVERLAY_STYLE_GUIDE.md",
      "sha256": "2d9b09fe32d81691edeb1121335ab2db2de49820e07839f676454755b6965403"
    },
    {
      "path": "apps/web/src/components/consumer/pages/MyGamesPage.tsx",
      "sha256": "d7af19337110909960ac5e984976271ea8b7898ae91a6044c22604011ed4695b"
    },
    {
      "path": "apps/web/src/components/consumer/pages/OwnedGameSummaryPage.tsx",
      "sha256": "7936b9adc03cd694c2a53e3a16bba01bbb4db474da2f314a6ffbf977fe6cc636"
    },
    {
      "path": "apps/web/src/components/consumer/pages/ParticipationReviewPage.tsx",
      "sha256": "b261bbb20bd417c16caafe566a5c5a6acafd9d185cf5ec8a2f34ab89f46818ce"
    },
    {
      "path": "apps/web/src/components/consumer/pages/GameDetailPage.tsx",
      "sha256": "d5ab689dd3b9dae4bcbe07a6cdc86220b601a93c083994e35ad68b6f2c75c3a4"
    },
    {
      "path": "apps/web/src/components/consumer/games/ManagerApplicants.tsx",
      "sha256": "8994d3b2bbb207b3a1c91c6b944a1745f1b0db3838b5d07d5f837cbd14c449a0"
    },
    {
      "path": "apps/web/src/components/consumer/games/GameDetailComposition.tsx",
      "sha256": "943b1a21666ec6ce99a3719b29cd48e7910cb4f487002357dca27e130d632aa6"
    },
    {
      "path": "apps/web/src/components/consumer/ConsumerShell.tsx",
      "sha256": "f7c925ba7f06b3bc00bda61d9fffa02a21be8799b6e8f93094aa305e98773ecf"
    },
    {
      "path": "apps/web/src/components/consumer/RootNav.tsx",
      "sha256": "43668bed63d6c7d8fe9470c35d59bfd1394eb018dc2c1c62c855a00d48fd9df4"
    },
    {
      "path": "apps/web/src/components/consumer/players/ProfileComposition.tsx",
      "sha256": "c2308c8e3c855d62e4aac674627ceb47daeee5b45c9a8a1212b24812b42de878"
    },
    {
      "path": "apps/web/src/components/consumer/messages/ConversationSafety.tsx",
      "sha256": "7cfdbd306b03a7b1b28bc50cf2a468bd1708ea5f1135da51cef9094efc7b3d50"
    },
    {
      "path": "apps/web/src/lib/api-client.ts",
      "sha256": "a199b8d3aa720046d00f7bc53757fd166e78fbee86a534d111c24785d542f4bf"
    },
    {
      "path": "apps/api/src/games/game-outcomes.controller.ts",
      "sha256": "f7f22ea954fbea963a7ff72ba3cdeed2b87cce21c2dfbc946f730a3b7f2efcbe"
    },
    {
      "path": "docs/handoffs/postgame-pg1a-outcome-api.md",
      "sha256": "1044203215c758e0a45345ba8e729fb15172b0f9100fc2e4ecd28e35ff9f7423"
    },
    {
      "path": "apps/web/src/styles/consumer-tokens.css",
      "sha256": "7faf5173e24a0899277f98b6095cd530320a53b5f4fa70d5390851d2f6dfe915"
    },
    {
      "path": "apps/web/public/brand/go-badminton.svg",
      "sha256": "b168aeb3545164eb173b694b2caa5d0eff98d864d4482233af9bec1bb65c8827"
    }
  ],
  "artifacts": {
    "index.html": "fa7af96acf08ace8b5df2a9e0873dbea1a49515d6da21ae7717e5fcbcf7c20fc",
    "DESIGN.md": "0ae21dcbcae745a1f42ed53c474af97d30fd0c8e50684bf5e43c53f9fe6abee3",
    "STYLE_GUIDE_POSTGAME.md": "e67a497e08371b676b22f47b42c9f7f51debd1b828daf2299bf0c8faacc6f729"
  },
  "verification": "checks.json"
}
