{
  "name": "GoBadminton VenueFlow #507/#530 — Design R2",
  "artifact_type": "local interactive visual prototype + bounded frontend handoff",
  "source_sha": "24889954ba32c6d6f25b2ebfe059817babf6da19",
  "entry": "index.html",
  "product_frame": "prototype.html",
  "files": [
    "index.html",
    "operator.css",
    "workbench.js",
    "prototype.html",
    "styles.css",
    "app.js",
    "README.md",
    "design-manifest.json"
  ],
  "scope": {
    "source_edits": false,
    "network_calls": false,
    "paid_generation": false,
    "runtime_changes": false,
    "git_changes": false,
    "prod": "FORBIDDEN",
    "C5": "OFF",
    "old_507_521_evidence": "PRESERVED"
  },
  "authority": {
    "analysis_inputs": [
      "inputs/analysis-README.md",
      "inputs/analysis-design-contract.json",
      "inputs/analysis-implementation-boundaries.md",
      "inputs/visual530-findings.md",
      "inputs/root-followup.md"
    ],
    "latest_owner_supplements": [
      "Direct map interaction supersedes summary/link-only",
      "Five-star semantics retained; numeric radios suggestion not adopted as new scale",
      "Public postgame list is read-only; exact eligible private results entry only",
      "Conditional server-masked text display; no client profanity policy"
    ]
  },
  "styleguide": {
    "root": "/opt/gobadminton-clean-qa/style-guide",
    "App.tsx_sha256": "04187d4d7d70c8c61e9ca2f08b6b6325a98539a3ec90c711c48ab771f675b61c",
    "index.css_sha256": "f660e31973a6142784308f22728c751d7bb7432fb2ac0136bac032dbc6b1db2a",
    "pins_checked": true,
    "rendered_parity": "NOT_RUN",
    "families": [
      "SectionHeader",
      "SurfacePanel",
      "ListRow",
      "Choice",
      "Button",
      "ProfileDialog",
      "InlineNotice",
      "Radar map composition"
    ],
    "gap": "No exact full venue-community composition; compose existing primitives",
    "overrides": [
      "star tiles removed",
      "direct in-map community",
      "public review author CTA removed"
    ],
    "prior_521": "Final artifact not supplied; exact spacing parity not asserted"
  },
  "assets": [
    {
      "file": "assets/0fea0.svg",
      "sha256": "c61a44133baea0283d827211ee8367690970ba7bddd0658d9ab3ef4a1aa2dbc3",
      "bytes": 1102,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/159f8.svg",
      "sha256": "8812d0d90924af5f006a7c7cbd3dfbf11583c044925d4792dbed87a3712535aa",
      "bytes": 858,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/360c7.svg",
      "sha256": "acd75d09824b2f23c6615c036636d50cf765cb29715f6732eb15bd2fb3d00f38",
      "bytes": 773,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/67df8.svg",
      "sha256": "139f0e578d41371c73e36bb844c0956fa86924a33360c15c1c7256def1a8ca71",
      "bytes": 8570,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/7e770.svg",
      "sha256": "efc55816861206f615d3f7489fdf0e1e181672de1c2b1176a75b4a6810354f18",
      "bytes": 797,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/c255f.svg",
      "sha256": "b1edfd33133e6caa988a0759da4fbf33d4270c9f0860a3ad9e2318da55984ec8",
      "bytes": 1327,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/e70cd.svg",
      "sha256": "ba82fb83f61f33ad46846fdf074acbe1853ecaff19fcffbdf7edb240654c55ad",
      "bytes": 378,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/f569e.svg",
      "sha256": "85a47834a58cf27541ffbaa104e0429b8e2e67a08be2bf65c6fef90a67a5ba0f",
      "bytes": 403,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/f8ab5.svg",
      "sha256": "7d6b85ae3a494e35819ff9a2f93eaa9eb10aadc0492791476ccae4de816ec676",
      "bytes": 390,
      "provenance": "Provided existing Style Guide logo/icon asset"
    },
    {
      "file": "assets/official-unischool.webp",
      "sha256": "7f08731768ba9b333c2d8068f4df5e037ff73275a69be56d47e6a95bc8c4d27e",
      "bytes": 46230,
      "credit": "Фото: Golden Shuttle — зал Unischool",
      "credit_url": "https://goldenshuttle.ru/",
      "metadata": "assets/official-venue-public.json",
      "original_media_url": "/v1/media/venue-covers/24282321f10023d4a457e3994d76dea03ae4b75149d45764660ae1ce23b3f16b.png",
      "role": "official venue image; also explicitly annotated regression avatar in long fixture"
    },
    {
      "file": "assets/official-venue-public.json",
      "sha256": "6bdea4bbff9e3b6c5cd0140c90068bda822520ec4ae41acd60b5e44de33c2790",
      "bytes": 1698
    },
    {
      "file": "assets/onest.ttf",
      "sha256": "3faa4b905661849b2332e394b42f91b5bf5575e553c516caa81811e868a4d589",
      "bytes": 124376,
      "provenance": "inputs/font-provenance.json",
      "format": "TrueType, decoded approved previous Onest asset",
      "role": "local @font-face, no remote requests"
    }
  ],
  "surfaces": {
    "page": [
      390,
      820,
      1280,
      1920
    ],
    "map": [
      390,
      820,
      1280,
      1920
    ],
    "map-expanded": [
      390,
      820,
      1280,
      1920
    ],
    "picker": [
      390,
      1280
    ],
    "results": [
      390,
      1280
    ],
    "composer": [
      390,
      1280
    ]
  },
  "states": {
    "default": "empty",
    "community": [
      "empty",
      "populated",
      "guest",
      "long",
      "noavatar",
      "own",
      "pending",
      "failed",
      "unknown",
      "withdraw",
      "withheld",
      "masked",
      "report",
      "report-success"
    ],
    "reviews": [
      "reviews-loading",
      "reviews-error",
      "reviews-empty",
      "reviews-published"
    ],
    "private": [
      "eligible",
      "ineligible",
      "expired",
      "consent",
      "submitted",
      "private"
    ]
  },
  "measurement_api": {
    "setScenario": "await window.setScenario({surface,state,width,height,section,outcome})",
    "measureScenario": "await window.measureScenario()",
    "waits_for": [
      "document.fonts.ready",
      "image load/error",
      "two animation frames"
    ],
    "outcome_without_reset": "window.setFixtureOutcome(success|failed|unknown)",
    "fixture_state": "window.getFixtureState()",
    "session_loss": "window.expireFixtureSession()",
    "frame_selector": "#preview",
    "default_width": "auto",
    "explicit_height": "optional; use 844/900 for viewport and fixed navigation checks",
    "preview_breakpoint": 1024,
    "inspector_width": 450,
    "control_minimum": 44,
    "star_hit_size": 48,
    "avatar_root": 40,
    "avatar_reply": 32
  },
  "projection_dependencies": {
    "mask": "Exact server public display mask metadata; names not finalized. Only conditional masked fixture renders notice.",
    "deadline": "Not exposed; no calculated submission dates/countdown",
    "own_review_game": "Absent; current exact operation receipt only",
    "own_comment_moderation": "Absent; no durable badges invented",
    "fixed_game_eligibility": "Exact matching server basis only; no first-game fallback",
    "map_auth": "Bounded host wiring required"
  },
  "verification": {
    "javascript_syntax": "PASS Node 24 --check",
    "local_references": "PASS after deliverable creation",
    "browser_available_in_PATH": false,
    "browser_screenshots": "NOT_RUN",
    "visual_qa": "NOT_RUN",
    "horizontal_overflow": "NOT_MEASURED; API provided",
    "touch_targets": "NOT_MEASURED; API provided",
    "focus_keyboard_browser": "NOT_RUN",
    "independent_qa": "NOT_RUN",
    "product_CI": "NOT_RUN — no source changes",
    "DEV_acceptance": "NOT_RUN",
    "Owner_UAT": "NOT_TESTED"
  },
  "screenshot-plan": [
    {
      "filename": "page-empty-1280.png",
      "surface": "page",
      "state": "empty",
      "width": 1280,
      "height": "content",
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "page-empty-390.png",
      "surface": "page",
      "state": "empty",
      "width": 390,
      "height": 844,
      "section": "ratings",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "page-community-1280.png",
      "surface": "page",
      "state": "populated",
      "width": 1280,
      "height": 900,
      "section": "ratings",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "page-comment-avatar-390.png",
      "surface": "page",
      "state": "long",
      "width": 390,
      "height": 844,
      "section": "discussion",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "map-preview-390.png",
      "surface": "map",
      "state": "empty",
      "width": 390,
      "height": 844,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "map-inspector-1280.png",
      "surface": "map",
      "state": "populated",
      "width": 1280,
      "height": 900,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "map-community-390.png",
      "surface": "map-expanded",
      "state": "own",
      "width": 390,
      "height": 844,
      "section": "ratings",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "map-community-1280.png",
      "surface": "map-expanded",
      "state": "populated",
      "width": 1280,
      "height": 900,
      "section": "discussion",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "map-sheet-820.png",
      "surface": "map",
      "state": "empty",
      "width": 820,
      "height": 900,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "map-inspector-1920.png",
      "surface": "map-expanded",
      "state": "empty",
      "width": 1920,
      "height": 1080,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "page-820.png",
      "surface": "page",
      "state": "empty",
      "width": 820,
      "height": 900,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "page-1920.png",
      "surface": "page",
      "state": "empty",
      "width": 1920,
      "height": 1080,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "picker-390.png",
      "surface": "picker",
      "state": "populated",
      "width": 390,
      "height": 844,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "picker-1280.png",
      "surface": "picker",
      "state": "empty",
      "width": 1280,
      "height": 900,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "report-390.png",
      "surface": "page",
      "state": "report",
      "width": 390,
      "height": 844,
      "section": "ratings",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "results-ineligible-390.png",
      "surface": "results",
      "state": "ineligible",
      "width": 390,
      "height": 844,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "composer-private-1280.png",
      "surface": "composer",
      "state": "eligible",
      "width": 1280,
      "height": 900,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    },
    {
      "filename": "composer-consent-390.png",
      "surface": "composer",
      "state": "consent",
      "width": 390,
      "height": 844,
      "section": "",
      "status": "INTENDED_NOT_CAPTURED"
    }
  ],
  "limits": [
    "No live MapLibre tiles; interactive pan/zoom applies to labelled illustrative scheme",
    "No real authentication or request/receipt validation",
    "Single official photograph; no invented gallery frames or I2 uploads",
    "Broken avatar uses synthetic error event, not failed CDN request",
    "No reconstruction of old UNKNOWN or persisted per-game review status",
    "Native keyboard/visualviewport and #521 overlay parity need application verification"
  ]
}
