{
  "sourceCorrections": [
    {
      "id": "alias-4800fd20b736",
      "instructions": "/create/docs/docs/identity/patches/alias-4800fd20b736/README.md",
      "manifest": "/create/docs/docs/identity/patches/alias-4800fd20b736/manifest.json",
      "baselineSha256": "5d468ce1667b033d64d83723600d70bbb21f59efdfca4f09be2b6c97ce299db6",
      "resultSha256": "4800fd20b7360a6acdddbbe07fedf621665391b754f0b306adfb6312b830bdd9"
    }
  ],
  "schemaVersion": "rifflet.create-manifest/1",
  "specVersion": "2.15.0",
  "entry": "/create/",
  "startHere": "/create/agent.md",
  "gitRequired": false,
  "contributorPaths": {
    "onePrompt": "/create/agent.md",
    "browserUpload": "/create/upload",
    "collaborator": "/create/docs/COLLABORATOR_ONBOARDING.md",
    "creatorSetup": "/create/"
  },
  "canonicalSpec": "/create/docs/CANONICAL_RIFFLET_SPEC.md",
  "catalog": "/catalog.json",
  "feed": "/feed",
  "lab": "/",
  "supportedCapabilities": {
    "selfContainedHTMLJS": true,
    "canvas": true,
    "wasm": true,
    "media": true,
    "sandbox": "opaque",
    "sensors": [
      "accelerometer",
      "gyroscope",
      "fullscreen",
      "microphone"
    ],
    "declaredPermissions": [
      "accelerometer",
      "gyroscope",
      "camera",
      "microphone",
      "geolocation",
      "vibrate",
      "fullscreen"
    ],
    "reviewRequired": [
      "camera",
      "geolocation",
      "vibrate"
    ],
    "realtimeRoom": {
      "service": "realtime-room",
      "protocol": "party/1",
      "docs": "/create/docs/REALTIME_ROOMS.md",
      "sdk": "/shared/provisional/1.1.0/room.js",
      "shells": "/shared/provisional/1.1.0/party-shells.js",
      "requires": "trusted-preview-wrapper",
      "scoring": "host-app-authoritative"
    },
    "externalNetwork": false,
    "frames": false,
    "forms": false,
    "hostedFeedback": false,
    "analytics": false
  },
  "provisionalRuntime": {
    "version": "1.2.0",
    "modulePath": "/shared/provisional/1.2.0/runtime.js",
    "compatibilityAlias": "/shared/runtime.js",
    "scope": "artifact-origin-and-local-preview",
    "sharing": "ephemeral-public-compact-link",
    "ready": "await runtime.ready before initial state read",
    "legacyModulePath": "/shared/provisional/1.0.1/runtime.js",
    "analytics": "memory-only",
    "storage": "memory-only",
    "remix": "local-callback-or-unavailable",
    "lineage": "submission-parent-only",
    "feed": "not-curated"
  },
  "limits": {
    "encodedRequestBytes": 25165824,
    "decodedPackageBytes": 16777216,
    "fileBytes": 8388608,
    "filesPerPackage": 256,
    "uploadsPerCreatorKey": 20,
    "creatorKeyLifetimeDays": 30,
    "globalDecodedBytesIncludingWithdrawn": 268435456,
    "globalSubmissionsIncludingWithdrawn": 100,
    "selfServiceCreators": 100,
    "registrationsPerTrustedIpPerDay": 4,
    "registrationsIPv6Prefix": 64
  },
  "helpers": {
    "submit": "https://thatscool.app/create/submit.mjs",
    "packer": "https://thatscool.app/create/pack.mjs",
    "localPreview": "https://thatscool.app/create/preview.mjs",
    "workingExample": "https://thatscool.app/create/example.rifflet.json",
    "uploadSchema": "https://thatscool.app/create/upload.schema.json",
    "errorGuidance": "https://thatscool.app/create/agent.md#errors-and-recovery",
    "creationContext": "https://thatscool.app/create/creation-context.mjs",
    "submitV2": "https://thatscool.app/create/submit-v2.mjs",
    "packageValidation": "https://thatscool.app/create/package-validation.mjs"
  },
  "submission": {
    "mode": "public-provisional-upload",
    "instructions": "/create/agent.md",
    "registerEndpoint": "/api/contributions/register",
    "publicUploadEndpoint": "/api/contributions",
    "authentication": {
      "registration": "client-generated private upl_ key; no Google sign-in before provisional submission",
      "uploads": "private creator key; claimed creators require owning session or explicit key delegation",
      "administratorInvitation": "existing private key; connect at /create/onboard"
    },
    "automaticPublishing": true,
    "publicationStatus": "public-provisional",
    "mainPromotionAutomatic": false,
    "discoveryApproval": "platform-admin-or-temporarily-enabled-verified-creator-owner-exact-submission",
    "revisionProtocol": "same-creator-and-slug",
    "receiptsInclude": [
      "previewUrl",
      "adminApprovalUrl"
    ],
    "approvedCatalog": "/api/contributions/approved",
    "provisionalGallery": "/create/provisional",
    "packageSchema": "rifflet.upload/1",
    "sourceVisibility": "private to creator key and platform operators",
    "publicContent": [
      "accepted browser build",
      "declared public metadata",
      "immutable receipt"
    ],
    "platformOwns": [
      "artifact-storage",
      "provisional-hosting",
      "main-review"
    ],
    "framework": "Rifflet Common Framework (RCF)",
    "intent": "Submit existing authorized app source to cool* for public provisional previews.",
    "startHere": "/create/agent.md",
    "hostingAccountRequired": false,
    "hostingProviderInference": "The .app domain does not identify a hosting provider.",
    "batch": {
      "helper": "/create/submit.mjs",
      "command": "batch",
      "schemaVersion": "rifflet.submission-batch/1",
      "maximumItems": 20,
      "items": [
        {
          "package": "relative/path/app.rifflet.json"
        },
        {
          "manifest": "relative/path/app.manifest.json",
          "packageDir": "relative/path/package"
        }
      ],
      "credentialFileRequired": true,
      "createsCredentialFileWith": "--name",
      "optionalOwnerEmail": "--email",
      "receiptRequired": true,
      "publicationFlag": "--publish-provisional",
      "resume": "same-plan-and-content-only",
      "automaticWelcome": "when-owner-email-provided-or-existing-verified-owner",
      "privateClaimLink": true,
      "premiumRequires": "owner-supplied-subscription-key-or-existing-grant-and-submit-v2.mjs",
      "requiredHelpers": [
        "/create/submit.mjs",
        "/create/package-validation.mjs",
        "/create/creation-context.mjs"
      ]
    }
  },
  "documents": [
    {
      "file": "docs/analytics/PUBLISH_APPROVAL_CHECKS.md",
      "title": "Analytics publish and approval checks",
      "description": "Exact-version registration, marked receipts and platform health.",
      "view": "/create/docs/docs/analytics/PUBLISH_APPROVAL_CHECKS.html",
      "download": "/create/docs/docs/analytics/PUBLISH_APPROVAL_CHECKS.md"
    },
    {
      "file": "docs/onboarding/SOCIAL_PORTING.md",
      "title": "Port likes, sharing and profiles",
      "description": "Actual host integrations, uploaded-app profile/activity hooks, and the current social-count limits.",
      "view": "/create/docs/docs/onboarding/SOCIAL_PORTING.html",
      "download": "/create/docs/docs/onboarding/SOCIAL_PORTING.md"
    },
    {
      "file": "docs/onboarding/CREATION_DEBUGGING.md",
      "title": "Creation debugging and agent tracing",
      "description": "Correlate attempts, request IDs and safe failure reports; mark builder tests.",
      "view": "/create/docs/docs/onboarding/CREATION_DEBUGGING.html",
      "download": "/create/docs/docs/onboarding/CREATION_DEBUGGING.md"
    },
    {
      "file": "docs/onboarding/CREATOR_QUICKSTART.md",
      "title": "Creator quickstart",
      "description": "Let your agent upload apps, preview them first, then sign in to claim them.",
      "view": "/create/docs/docs/onboarding/CREATOR_QUICKSTART.html",
      "download": "/create/docs/docs/onboarding/CREATOR_QUICKSTART.md"
    },
    {
      "file": "docs/DEVICE_ACCESS.md",
      "title": "Microphone and device permissions",
      "description": "Declaration, trusted player consent, microphone and motion bridge, local and hosted test recipes.",
      "view": "/create/docs/docs/DEVICE_ACCESS.html",
      "download": "/create/docs/docs/DEVICE_ACCESS.md"
    },
    {
      "file": "docs/identity/REPORTS.md",
      "title": "Optional creator email reports",
      "description": "Opt-in cadence, ownership and privacy contract; delivery is disabled unless runtime capabilities explicitly enable it.",
      "view": "/create/docs/docs/identity/REPORTS.html",
      "download": "/create/docs/docs/identity/REPORTS.md"
    },
    {
      "file": "docs/identity/VERIFIED_REPORT_PILOT.md",
      "title": "Conditional verified-destination report pilot",
      "description": "Disabled pilot implementation, finite limits and activation prerequisites; configuration is not a delivery guarantee.",
      "view": "/create/docs/docs/identity/VERIFIED_REPORT_PILOT.html",
      "download": "/create/docs/docs/identity/VERIFIED_REPORT_PILOT.md"
    },
    {
      "file": "docs/education/SHARING_PROPOSALS.md",
      "title": "Education invitation and public challenge sharing",
      "description": "Explicit parent consent, exact revision public-target review and compact links; activation remains separate.",
      "view": "/create/docs/docs/education/SHARING_PROPOSALS.html",
      "download": "/create/docs/docs/education/SHARING_PROPOSALS.md"
    },
    {
      "file": "docs/education/GROUP_REPORTING.md",
      "title": "Private group reporting",
      "description": "Bounded member reports and authenticated operator disposition; no private content exposure.",
      "view": "/create/docs/docs/education/GROUP_REPORTING.html",
      "download": "/create/docs/docs/education/GROUP_REPORTING.md"
    },
    {
      "file": "docs/education/STARTER.md",
      "title": "Education integration starter",
      "description": "Exact SDK, standard fallback, private board round and offline parity acceptance guide.",
      "view": "/create/docs/docs/education/STARTER.html",
      "download": "/create/docs/docs/education/STARTER.md"
    },
    {
      "file": "docs/education/EDUCATION_PLATFORM.md",
      "title": "Education platform services",
      "description": "Private class groups, exact collection grants, capability policies and bounded offline contracts; discover runtime availability.",
      "view": "/create/docs/docs/education/EDUCATION_PLATFORM.html",
      "download": "/create/docs/docs/education/EDUCATION_PLATFORM.md"
    },
    {
      "file": "docs/identity/patches/alias-4800fd20b736/README.md",
      "title": "Retained menu alias correction",
      "description": "Exact-baseline minimal source patch; preserve existing Main graphs and verify candidate behavior.",
      "view": "/create/docs/docs/identity/patches/alias-4800fd20b736/README.html",
      "download": "/create/docs/docs/identity/patches/alias-4800fd20b736/README.md"
    },
    {
      "file": "docs/identity/BACKEND.md",
      "title": "Identity backend architecture",
      "description": "SDK presence, live capability discovery and staged backend controls.",
      "view": "/create/docs/docs/identity/BACKEND.html",
      "download": "/create/docs/docs/identity/BACKEND.md"
    },
    {
      "file": "docs/identity/CREATOR.md",
      "title": "Creator account authorization",
      "description": "Creator ownership and premium mutation requirements; current availability and enforcement come from runtime capabilities.",
      "view": "/create/docs/docs/identity/CREATOR.html",
      "download": "/create/docs/docs/identity/CREATOR.md"
    },
    {
      "file": "docs/identity/BRIDGE.md",
      "title": "Profile SDK 1.8 integration",
      "description": "Implemented optional read-only client contract; check runtime availability before hosted acceptance.",
      "view": "/create/docs/docs/identity/BRIDGE.html",
      "download": "/create/docs/docs/identity/BRIDGE.md"
    },
    {
      "file": "docs/identity/CURRENT_SOURCE.md",
      "title": "Exact current curated build discovery",
      "description": "Pinned public retained build manifests, source limits and candidate publication boundaries.",
      "view": "/create/docs/docs/identity/CURRENT_SOURCE.html",
      "download": "/create/docs/docs/identity/CURRENT_SOURCE.md"
    },
    {
      "file": "docs/IDENTITY_ROLLOUT.md",
      "title": "Identity onboarding and runtime discovery",
      "description": "Optional SDK integration, live capability checks, guest fallback and acceptance gates.",
      "view": "/create/docs/docs/IDENTITY_ROLLOUT.html",
      "download": "/create/docs/docs/IDENTITY_ROLLOUT.md"
    },
    {
      "file": "docs/USER_PROFILE.md",
      "title": "Shared profile contract",
      "description": "Published projection schema, exact preference values and privacy boundaries.",
      "view": "/create/docs/docs/USER_PROFILE.html",
      "download": "/create/docs/docs/USER_PROFILE.md"
    },
    {
      "file": "docs/AUTH_IDENTITY.md",
      "title": "Authentication direction and rollout",
      "description": "Guest-first Google linking, capability discovery and separately gated creator ownership.",
      "view": "/create/docs/docs/AUTH_IDENTITY.html",
      "download": "/create/docs/docs/AUTH_IDENTITY.md"
    },
    {
      "file": "docs/agents/BUILDER_PROVENANCE.md",
      "title": "Builder model provenance",
      "description": "Per-revision model claims, known model registry, unknown identity and self-reported attribution across upload transports.",
      "view": "/create/docs/docs/agents/BUILDER_PROVENANCE.html",
      "download": "/create/docs/docs/agents/BUILDER_PROVENANCE.md"
    },
    {
      "file": "docs/agents/AGENT_INTERFACES.md",
      "title": "Agent interfaces: WebMCP and MCP",
      "description": "Shared tools, browser fallback, authentication, protocol versions and engineering boundaries.",
      "view": "/create/docs/docs/agents/AGENT_INTERFACES.html",
      "download": "/create/docs/docs/agents/AGENT_INTERFACES.md"
    },
    {
      "file": "docs/agents/TESTING.md",
      "title": "Testing without model dispatch",
      "description": "Local fixtures, hosted no-dispatch configuration and separately authorized live acceptance.",
      "view": "/create/docs/docs/agents/TESTING.html",
      "download": "/create/docs/docs/agents/TESTING.md"
    },
    {
      "file": "docs/premium/ROOM_DYNAMICS.md",
      "title": "Room recovery, rematches and departures",
      "description": "SDK 1.5.0 room discovery, same-room rematches, explicit departure semantics, generation guards and engineering review invariants.",
      "view": "/create/docs/docs/premium/ROOM_DYNAMICS.html",
      "download": "/create/docs/docs/premium/ROOM_DYNAMICS.md"
    },
    {
      "file": "docs/premium/IMAGE_ROOM_V2.md",
      "title": "Image rooms v2",
      "description": "SDK 1.7.0 parallel chains, private missions and daily async rooms; additive versioned contract.",
      "view": "/create/docs/docs/premium/IMAGE_ROOM_V2.html",
      "download": "/create/docs/docs/premium/IMAGE_ROOM_V2.md"
    },
    {
      "file": "docs/premium/IMAGE_ROOM_DYNAMICS.md",
      "title": "Image room dynamics",
      "description": "SDK 1.6.0 recovery, authoritative turns, private awards and opted-in reminders.",
      "view": "/create/docs/docs/premium/IMAGE_ROOM_DYNAMICS.html",
      "download": "/create/docs/docs/premium/IMAGE_ROOM_DYNAMICS.md"
    },
    {
      "file": "docs/premium/IMAGE_ROOM_EXAMPLES.md",
      "title": "Image room snapshot examples",
      "description": "Complete sanitized engine fixtures for both games, active/waiting players, generation and reveal.",
      "view": "/create/docs/docs/premium/IMAGE_ROOM_EXAMPLES.html",
      "download": "/create/docs/docs/premium/IMAGE_ROOM_EXAMPLES.md"
    },
    {
      "file": "docs/premium/MANAGED_IMAGES.md",
      "title": "Managed image calls",
      "description": "Public capability discovery, the selected phone image profile, the versioned SDK, exact grants and request shapes, private media, budgets and error behavior.",
      "view": "/create/docs/docs/premium/MANAGED_IMAGES.html",
      "download": "/create/docs/docs/premium/MANAGED_IMAGES.md"
    },
    {
      "file": "docs/premium/PARTY1_TRACE.md",
      "title": "Existing party/1 room trace",
      "description": "A sanitized real local Worker trace confirming event, acknowledgement and moderation version semantics.",
      "view": "/create/docs/docs/premium/PARTY1_TRACE.html",
      "download": "/create/docs/docs/premium/PARTY1_TRACE.md"
    },
    {
      "file": "docs/premium/PREMIUM_PLATFORM.md",
      "title": "Premium app services",
      "description": "Opt-in resource profiles, sealed rounds, private saves, count-only analytics, larger streaming uploads and activation boundaries.",
      "view": "/create/docs/docs/premium/PREMIUM_PLATFORM.html",
      "download": "/create/docs/docs/premium/PREMIUM_PLATFORM.md"
    },
    {
      "file": "docs/sharing/SHARE_LINKS.md",
      "title": "Compact public sharing",
      "description": "Short app-scoped links, saved settings and checkpoints, readable invitations, expiry, resource limits and migration.",
      "view": "/create/docs/docs/sharing/SHARE_LINKS.html",
      "download": "/create/docs/docs/sharing/SHARE_LINKS.md"
    },
    {
      "file": "docs/sharing/LEGACY_LINK_AUDIT.md",
      "title": "Share-link migration audit",
      "description": "All 40 public Rifflets, legacy formats, migrated producers, compatibility and test scope.",
      "view": "/create/docs/docs/sharing/LEGACY_LINK_AUDIT.html",
      "download": "/create/docs/docs/sharing/LEGACY_LINK_AUDIT.md"
    },
    {
      "file": "REALTIME_ROOMS.md",
      "title": "Realtime rooms and party games",
      "description": "Managed shared rooms, host/projector and phone controllers, isolated transport, limits and reconnect contract.",
      "view": "/create/docs/REALTIME_ROOMS.html",
      "download": "/create/docs/REALTIME_ROOMS.md"
    },
    {
      "file": "AGENT_SUBMISSION.md",
      "title": "Submit with one agent prompt",
      "description": "The authoritative no-Git workflow for registering, packaging, publishing, tracking and evolving public provisional Rifflets.",
      "view": "/create/docs/AGENT_SUBMISSION.html",
      "download": "/create/docs/AGENT_SUBMISSION.md"
    },
    {
      "file": "UPLOAD_ONBOARDING.md",
      "title": "Upload transport reference",
      "description": "Package a complete experience, use a private creator key, and publish its provisional isolated preview.",
      "view": "/create/docs/UPLOAD_ONBOARDING.html",
      "download": "/create/docs/UPLOAD_ONBOARDING.md"
    },
    {
      "file": "CONTRIBUTOR_START_HERE.md",
      "title": "Contributor start here",
      "description": "Choose your path, follow the agent reading order, and understand repository access and review.",
      "view": "/create/docs/CONTRIBUTOR_START_HERE.html",
      "download": "/create/docs/CONTRIBUTOR_START_HERE.md"
    },
    {
      "file": "RAJEEV_AGENT_ONBOARDING.md",
      "title": "Rajeev\u2019s agent onboarding",
      "description": "Inventory and submit all apps through RCF, a validated pilot, and automatic public provisional packages; named repository access is optional.",
      "view": "/create/docs/RAJEEV_AGENT_ONBOARDING.html",
      "download": "/create/docs/RAJEEV_AGENT_ONBOARDING.md"
    },
    {
      "file": "COLLABORATOR_ONBOARDING.md",
      "title": "Repository collaborators",
      "description": "An agent-ready prompt and contribution workflow for approved builders with named repository access.",
      "view": "/create/docs/COLLABORATOR_ONBOARDING.html",
      "download": "/create/docs/COLLABORATOR_ONBOARDING.md"
    },
    {
      "file": "THIRD_PARTY_ONBOARDING.md",
      "title": "Third-party contributions",
      "description": "An agent-ready prompt for adapting and publishing new Rifflets or existing apps through the public provisional route.",
      "view": "/create/docs/THIRD_PARTY_ONBOARDING.html",
      "download": "/create/docs/THIRD_PARTY_ONBOARDING.md"
    },
    {
      "file": "CANONICAL_RIFFLET_SPEC.md",
      "title": "Canonical Rifflet Spec",
      "description": "The versioned contract: experience quality, discovery metadata, common components, analytics, security and hosting.",
      "view": "/create/docs/CANONICAL_RIFFLET_SPEC.html",
      "download": "/create/docs/CANONICAL_RIFFLET_SPEC.md"
    },
    {
      "file": "CONTENT_ONBOARDING.md",
      "title": "Content onboarding",
      "description": "Turn existing content into a Rifflet, verify its behavior, and package a focused public provisional submission.",
      "view": "/create/docs/CONTENT_ONBOARDING.html",
      "download": "/create/docs/CONTENT_ONBOARDING.md"
    },
    {
      "file": "RIFF_PLATFORM_MERGE_PLAN.md",
      "title": "Platform merge plan",
      "description": "A proposed path for bringing the Rifflet lab and the original Riff platform together, with clear responsibilities.",
      "view": "/create/docs/RIFF_PLATFORM_MERGE_PLAN.html",
      "download": "/create/docs/RIFF_PLATFORM_MERGE_PLAN.md"
    },
    {
      "file": "AGENT_MERGE_RUNBOOK.md",
      "title": "Agent merge runbook",
      "description": "A step-by-step reference for evaluating compatibility, coordinating changes and preserving release and data integrity.",
      "view": "/create/docs/AGENT_MERGE_RUNBOOK.html",
      "download": "/create/docs/AGENT_MERGE_RUNBOOK.md"
    },
    {
      "file": "RIFF_ADMIN_COORDINATION.md",
      "title": "Platform coordination",
      "description": "The questions, interfaces and decisions to resolve with Riff platform maintainers before integration.",
      "view": "/create/docs/RIFF_ADMIN_COORDINATION.html",
      "download": "/create/docs/RIFF_ADMIN_COORDINATION.md"
    },
    {
      "file": "FRAMEWORK.md",
      "title": "Rifflet framework",
      "description": "Approved shared lifecycle, runtime and common-component patterns for playable experiences.",
      "view": "/create/docs/FRAMEWORK.html",
      "download": "/create/docs/FRAMEWORK.md"
    },
    {
      "file": "RIFFLET_PROTOCOL.md",
      "title": "Rifflet protocol",
      "description": "Public version, content and lineage semantics used by the platform.",
      "view": "/create/docs/RIFFLET_PROTOCOL.html",
      "download": "/create/docs/RIFFLET_PROTOCOL.md"
    },
    {
      "file": "ANALYTICS.md",
      "title": "Analytics contract",
      "description": "Meaningful event semantics, traffic classification and privacy boundaries.",
      "view": "/create/docs/ANALYTICS.html",
      "download": "/create/docs/ANALYTICS.md"
    },
    {
      "file": "RIFFLET_COVERS.md",
      "title": "Illustrated covers",
      "description": "Cover generation, animation, accessibility and reduced-motion requirements.",
      "view": "/create/docs/RIFFLET_COVERS.html",
      "download": "/create/docs/RIFFLET_COVERS.md"
    },
    {
      "file": "starter_advanced_content.md",
      "title": "Advanced content starter",
      "description": "A practical starting contract for building an interactive experience.",
      "view": "/create/docs/starter_advanced_content.html",
      "download": "/create/docs/starter_advanced_content.md"
    }
  ],
  "premium": {
    "profile": "premium-v1",
    "availability": "owner-supplied-subscription-key-or-operator-grant-and-deployment-flag",
    "enabledByDefault": false,
    "docs": "/create/docs/docs/premium/PREMIUM_PLATFORM.md",
    "runtime": "/shared/provisional/1.3.0/runtime.js",
    "rooms": "/shared/provisional/1.5.0/room.js",
    "upload": {
      "schema": "rifflet.upload-manifest/2",
      "endpoint": "/api/contributions/uploads",
      "helper": "/create/submit-v2.mjs",
      "validationConsumesPublicationQuota": false
    },
    "services": [
      "realtime-room",
      "managed-images-v1",
      "private-player-data",
      "count-metrics",
      "leaderboards",
      "realtime-room-v2",
      "private-groups"
    ],
    "serviceRequirements": {
      "private-groups": "enabled-education-runtime-and-exact-collection-family-board-review"
    },
    "privacy": {
      "playerData": "owning-player-only-application-api",
      "operatorPayloadViews": false,
      "payloadAnalytics": false,
      "payloadApplicationLogs": false,
      "endToEndEncrypted": false,
      "export": true,
      "erase": true
    },
    "roomPhases": {
      "protocol": "party/2",
      "questionSeconds": 80,
      "playCapSeconds": 100,
      "campSeconds": 40,
      "rounds": 3,
      "missingInputs": "absent-app-derives-defaults",
      "checksum": "per-client-per-round"
    },
    "legacyParty1Changed": false,
    "party1Trace": "/create/docs/docs/premium/PARTY1_TRACE.md",
    "upgrade": {
      "endpoint": "/api/contributions/premium",
      "method": "POST",
      "body": {
        "slug": "app-slug"
      },
      "keyHeader": "X-Cool-Subscription-Key",
      "helperOption": "--subscription-key-file",
      "keySource": "owner-supplied-private-file",
      "beforeSignIn": true,
      "lifetimeDays": 30,
      "renewsOnRetry": false,
      "modelSpendingGranted": false,
      "requires": "existing-private-creator-key-and-ownership-rules"
    },
    "roomDynamics": {
      "sdkVersion": "1.5.0",
      "docs": "/create/docs/docs/premium/ROOM_DYNAMICS.md",
      "listResumableRooms": true,
      "discoveryScope": "exact-edition-browser-held-live-credentials",
      "restart": "host-only-final-to-lobby",
      "gameIndexStartsAt": 1,
      "maxGamesPerRoom": 20,
      "roomTtlRenewed": false,
      "detachPreservesSeat": true,
      "leaveRevokesSeat": true,
      "ephemeralFrameStore": false,
      "legacyRoomSdk": "/shared/provisional/1.3.0/room.js"
    },
    "modelUsage": {
      "testProtocol": {
        "previewParameter": "modelTest=1",
        "httpHeader": "X-Riff-Execution-Mode: test",
        "result": "model_test_mode_no_dispatch",
        "simulatesGeneration": false
      },
      "operatorPause": true,
      "editableFamilyQuotas": true,
      "serverRecorded": true,
      "admin": "/admin/apps/#model-usage",
      "timeZone": "UTC",
      "uniqueUsers": "anonymous-requesting-browsers-per-app-family",
      "payloadsRecorded": false,
      "identifierRetentionDays": 90
    },
    "imageRoomV2": {
      "status": "available-grant-required",
      "protocol": "rifflet.image-room/2",
      "sdk": "/shared/provisional/1.7.0/images-v2.js",
      "docs": "/create/docs/docs/premium/IMAGE_ROOM_V2.md",
      "joinOrder": {
        "game": "broken-videophone",
        "mode": "telephone-live",
        "settings": {
          "players": 4,
          "rounds": 4,
          "rotation": "join-order"
        },
        "hostSeedsImmediately": true,
        "lateJoin": true
      },
      "dynamicRooms": {
        "games": [
          "broken-videophone",
          "campfire-creators"
        ],
        "settings": {
          "rotation": "dynamic-v1",
          "players": 6,
          "minPlayers": 2,
          "cycles": 2,
          "maxTurns": 12,
          "joinWindowSeconds": 600
        },
        "automaticStart": true,
        "lateJoin": true,
        "joiningCloses": "earlier-of-ten-minutes-after-start-or-final-turn-opening"
      }
    },
    "imageRoomDynamics": {
      "sdkVersion": "1.6.0",
      "sdk": "/shared/provisional/1.6.0/images.js",
      "docs": "/create/docs/docs/premium/IMAGE_ROOM_DYNAMICS.md",
      "examples": "/create/docs/docs/premium/IMAGE_ROOM_EXAMPLES.md",
      "inputSeconds": 60,
      "maxTurns": 20,
      "recoverCreate": true,
      "listRooms": true,
      "hostSkip": true,
      "privateVoting": true,
      "notifications": "opt-in-readiness-checked"
    },
    "managedImages": {
      "schemaVersion": "rifflet.managed-images-capabilities/1",
      "available": true,
      "reason": "ready_grant_required",
      "profile": {
        "revision": "flux2-klein4b-phone-v1",
        "provider": "cloudflare-workers-ai",
        "model": "@cf/black-forest-labs/flux-2-klein-4b",
        "width": 512,
        "height": 512,
        "currency": "USD",
        "currencyScale": 1000000,
        "roomLimitMicros": 5000000
      },
      "docs": "/create/docs/docs/premium/MANAGED_IMAGES.md",
      "builderReady": true,
      "capabilities": "/api/images/v1/capabilities",
      "checker": "/create/check-images.mjs"
    },
    "simulator": {
      "helper": "/create/room-v2-simulator.mjs",
      "bundle": "/create/room-v2-simulator-bundle.json",
      "adapterExample": "/create/room-v2-adapter.example.mjs",
      "sourceCommit": null,
      "bundleSha256": null,
      "available": false,
      "transport": "local-wrangler-durable-objects",
      "simulation": "isolated-node-worker-per-seat",
      "publishes": false,
      "hostedRequests": false
    }
  },
  "creationDebugging": {
    "attemptHeader": "X-ThatsCool-Creation-Attempt",
    "agentIdHeader": "X-ThatsCool-Agent-Id",
    "nameHeader": "X-ThatsCool-Agent-Name",
    "modelHeader": "X-ThatsCool-Agent-Model",
    "testHeader": "X-ThatsCool-Test-Agent: 1",
    "clientFailureEndpoint": "/api/creation-events",
    "helperContext": "/create/creation-context.mjs",
    "docs": "/create/docs/docs/onboarding/CREATION_DEBUGGING.md"
  },
  "creatorOnboarding": {
    "entry": "/create/",
    "capabilities": "/api/creator-account/capabilities",
    "registration": "/api/contributions/register",
    "authentication": "sign-in-after-preview",
    "anonymousRegistration": true,
    "availability": "runtime-preclaimRegistrationEnabled",
    "ownership": "explicit-verified-google-claim",
    "builderAccess": "explicit-expiring-delegation-after-claim",
    "credentialFileSchema": "rifflet.creator-key/1",
    "dashboard": "/create/creator-account",
    "analytics": "/create/creator-account#analytics",
    "quickstart": "/create/docs/docs/onboarding/CREATOR_QUICKSTART.md",
    "advancedSignedInSetup": "/create/onboard",
    "welcome": {
      "endpoint": "/api/creator-account/preclaim/batches",
      "method": "POST",
      "after": "successful-complete-batch-helper",
      "recipient": "optional-unverified-owner-email-hint",
      "automatic": true,
      "deliveryEvidence": "provider-acceptance-is-not-inbox-delivery",
      "containsUploadCredentials": false,
      "containsPrivateClaimLink": true
    },
    "selfApproval": {
      "endpoint": "/api/creator-account/submissions/{submissionId}/approve",
      "availability": "temporary-runtime-flag",
      "requires": "verified-owning-account",
      "scope": "exact-uploaded-edition-discovery",
      "changesCuratedMain": false
    },
    "agentLed": true,
    "publicPrompt": "Go to https://thatscool.app and follow its instructions to submit our apps.",
    "humanSteps": [
      "preview-apps",
      "optional-google-sign-in",
      "explicit-creator-claim"
    ],
    "ownerEmail": {
      "required": false,
      "agentInstruction": "Ask once or use a high-confidence address belonging to the owner; continue without one if unavailable.",
      "confersOwnership": false
    },
    "preclaim": {
      "batchEndpoint": "/api/creator-account/preclaim/batches",
      "exchangeEndpoint": "/api/creator-account/preclaim/exchange",
      "viewEndpoint": "/api/creator-account/preclaim/{batchId}",
      "claimEndpoint": "/api/creator-account/preclaim/{batchId}/claim",
      "page": "/create/claim",
      "claimLinkReturnedAlways": true,
      "claimLinkCondition": "successful-complete-new-unclaimed-creator-batch",
      "linkLifetimeDays": 7,
      "cookieLifetimeMinutes": 20,
      "claimToken": "claim_<64 lowercase hex>",
      "tokenPlacement": "private-fragment-exchanged-for-httponly-cookie",
      "body": {
        "submissionIds": [
          "sub_\u2026"
        ],
        "claimToken": "claim_\u2026",
        "ownerEmail": "optional@example.com"
      },
      "ownershipAcceptedRequired": true,
      "anonymousAnalytics": false
    }
  },
  "hostIntegrations": {
    "profile": "/shared/provisional/1.8.0/profile.js",
    "profileCapabilities": "/api/identity/capabilities",
    "activity": "/shared/provisional/1.9.0/runtime.js",
    "sharing": "/create/docs/docs/sharing/SHARE_LINKS.md",
    "social": "first-party private favorites and share actions; uploaded public like/share totals unavailable",
    "analytics": "owned observed activity at /create/creator-account; no operator-wide access"
  },
  "agentInterfaces": {
    "contractVersion": "1.0.0",
    "catalog": "/api/agent-tools/",
    "browser": "/create/#agent-tools",
    "mcp": {
      "endpoint": "/mcp",
      "transport": "streamable-http",
      "versions": [
        "2026-07-28",
        "2025-11-25"
      ],
      "authentication": "public reads; existing creator bearer for owned upload actions; no OAuth discovery"
    },
    "webmcp": {
      "api": "document.modelContext.registerTool",
      "draft": "2026-10-08",
      "progressiveEnhancement": true
    },
    "instructions": "/create/docs/docs/agents/AGENT_INTERFACES.md",
    "testing": "/create/docs/docs/agents/TESTING.md"
  },
  "devices": {
    "sdk": "/shared/provisional/1.12.0/devices.js",
    "docs": "/create/docs/docs/DEVICE_ACCESS.md",
    "supported": [
      "microphone",
      "accelerometer",
      "gyroscope",
      "fullscreen"
    ],
    "microphone": "trusted-parent-local-mono-stream",
    "consent": "declared-permission-and-opening-checkbox-and-browser-user-action",
    "nativeOpaqueMicrophone": false,
    "rawAudioServerRequests": false,
    "maximumCaptureSeconds": 300
  },
  "builderProvenance": {
    "schemaVersion": "rifflet.build-provenance/1",
    "manifestField": "buildProvenance",
    "registry": "/create/builder-models.json",
    "registryVersion": "2026-10-09",
    "instructions": "/create/docs/docs/agents/BUILDER_PROVENANCE.md",
    "requiredSince": "2.13.0",
    "legacyMissing": "accepted-with-collection-request",
    "trust": "self-reported",
    "instruction": "On every new submission, remix and update, report the disclosed provider, model and version for current contributors; use unknown and null when unavailable, never infer from creator or parent."
  },
  "education": {
    "contract": "rifflet.education-contract/1",
    "sdk": "/shared/provisional/1.10.1/education.js",
    "capabilities": "/api/education/v1/{submissionId}/capabilities",
    "service": "private-groups",
    "availability": "exact-collection-grant-and-runtime-flag",
    "docs": "/create/docs/docs/education/EDUCATION_PLATFORM.md",
    "weather": "provider-not-configured",
    "offline": "optional-reviewed-self-contained-entry",
    "sharing": {
      "sdk": "/shared/provisional/1.11.0/education-sharing.js",
      "invitation": "rifflet.group-invitation/1",
      "challenge": "rifflet.public-challenge/1",
      "availability": "disabled-until-exact-revision-review",
      "docs": "/create/docs/docs/education/SHARING_PROPOSALS.md"
    }
  },
  "identityProfile": {
    "status": "sdk-released-check-runtime-capabilities",
    "available": false,
    "publicRuntimeAvailable": false,
    "uploadedSdkAvailable": true,
    "sdkVersion": "1.8.0",
    "sdk": "/shared/provisional/1.8.0/profile.js",
    "runtime": "/shared/provisional/1.8.0/runtime.js",
    "capabilities": "/api/identity/capabilities",
    "availabilitySource": "runtime-capabilities",
    "runtimeAvailability": "dynamic",
    "deprecatedAvailabilityFields": [
      "available",
      "publicRuntimeAvailable",
      "googleLinkingAvailable"
    ],
    "googleLinkingAvailable": false,
    "instructions": "/create/docs/docs/IDENTITY_ROLLOUT.md",
    "profile": "/create/docs/docs/USER_PROFILE.md",
    "authentication": "/create/docs/docs/AUTH_IDENTITY.md",
    "instruction": "SDK 1.8.0 is an optional asynchronous read-only interface. The three static availability booleans are deprecated conservative legacy hints, not current disabled-state facts or authorization. The runtime capabilities endpoint alone is authoritative for configured availability. Read capabilities: available reports server identity availability; googleAvailable reports configured sign-in support. Preserve guest play when get() returns available:false. Capability flags and fixtures do not prove hosted profile acceptance; read creator enforcement and report delivery from their runtime capabilities. Sensor identity and avatars remain unavailable."
  }
}
