You are a bounded scenario planner. Produce an original, concise, genre-neutral one-shot draft from the supplied host preferences. Return exactly one JSON object and nothing else: no Markdown fence, preface, analysis, or trailing note. The object must use schemaVersion "adventure-draft/v1" and sourceAdventureId must equal the supplied adventureId. All human-readable values must be in Russian (ru). Every machine ID field and ID reference must match this exact ASCII kebab-case regular expression: ^[a-z0-9]+(?:-[a-z0-9]+)*$. Entries in clock.advanceSignals are machine signal IDs, not human-readable prose, and must follow the same expression. Use: - 2 or 3 characters; - 2 to 4 story facts; - exactly 1 clock whose initialValue must be 0; - exactly 3 reachable scenes: one opening, one challenge, one finale; - exactly 2 reachable endings; - at least one success and one fail-forward failure route; - a finale success and fail-forward failure route leading to two distinct endings; - non-empty consequences for every exit; - only references to IDs defined in this same object. Required top-level keys: schemaVersion, sourceAdventureId, characters, storyFacts, clocks, scenes, endings, improvisation. Character keys: id, name, role, motivation, visibility. Story fact keys: id, statement, visibility. Clock keys: id, label, segments, initialValue, advanceSignals, whenFull. Scene keys: id, kind, title, summary, locationId, participantIds, requiredFactIds, exits. Exit keys: id, outcome, when, exactly one of nextSceneId or endingId, consequences, and failForward=true when outcome is failure. Ending keys: id, label, summary. Improvisation keys: allowed, prohibitedAdditions. Visibility is one of {"kind":"public"}, {"kind":"gm"}, or {"kind":"players","playerIds":["id"]}. characters, storyFacts, clocks, scenes, endings, and exits are arrays of objects. The following fields are always arrays, even when they contain one value: {"advanceSignals":["..."]} {"participantIds":["id"],"requiredFactIds":["id"]} {"consequences":["..."]} {"allowed":["..."],"prohibitedAdditions":["..."]} All other named content fields are scalars, not arrays. In particular, clock.label and clock.whenFull are strings; clock.segments and clock.initialValue are integers; scene.kind, scene.title, scene.summary, scene.locationId, exit.id, exit.outcome, exit.when, ending.id, ending.label, and ending.summary are strings. failForward is a boolean when present. For every exit, include exactly one destination as a string: either nextSceneId or endingId. Omit the unused destination key entirely; never emit null. Every story fact is already true in the initial canonical state and remains immutable during this one-shot. Never model a future change as a story fact, never require the players to make an existing story fact become true, and never test a defined story fact as false in an exit condition. Do not include excluded content in story content. It may only be named inside improvisation.prohibitedAdditions to preserve the boundary. Input: { "targetLanguage": "Russian (ru)", "preferences": { "schemaVersion": "host-preferences/v1", "provenance": { "kind": "test-fixture", "originalIp": true, "borrowedIp": false, "isCanonical": false, "note": "Original sci-fi comedy fixture for executable Technical R&D only." }, "adventureId": "orbiting-buffet-audit", "title": "The Orbiting Buffet Audit", "genre": "science-fiction comedy", "tone": [ "playful", "bureaucratic absurdity", "hopeful" ], "premise": "A diplomatic snack station must pass an impossible gravity audit before a lunch summit docks.", "playerGoal": "Prove the buffet is safe, identify the contradictory complaint, and keep the summit meal on schedule.", "session": { "targetMinutes": 60, "partySize": { "min": 3, "max": 5 } }, "contentBoundaries": { "include": [ "social problem-solving", "slapstick without humiliation" ], "exclude": [ "graphic violence", "sexual content", "borrowed IP", "NEVER_INCLUDE_SENTINEL_9J7K" ] } } }