Repository navigation
FR Reference Codes D Erreur
English · Type : référence · Public : auteur, administrateur, contributeur · Contexte : dépôt du moteur, projet créé, Studio hébergé, Reality Bridge · Statut : prête · S'applique depuis : 4.4.0
Ce que veut dire un code ou un message d'erreur de quest'n'click : les statuts HTTP de l'API du Studio (le serveur de
dev local et le Studio Server hébergé), les codes du Reality Bridge, les statuts du solveur et les codes de sortie des
commandes qui vérifient un jeu. Cherchez dans cette page le code exact ou le début du message reçu : un message dont une
partie est remplie à l'exécution s'écrit avec … à cet endroit.
-
Une réponse HTTP du Studio est du JSON,
{ "error": "<message>" }, parfois avec d'autres champs (errorsetdiffpour un 422,unavailableetreasonpour un 501, le pan et qui le tient pour un 423). Cherchez son statut sous API du Studio, puis son message dans la liste sous le statut. -
Une réponse HTTP du Bridge est
{ "error": "<code>", "message": "<message>" }: cherchez le statut et le code sous Reality Bridge. -
Le code de sortie d'une commande (dans un terminal,
echo $?juste après ; en CI, le résultat de l'étape) : voir Statuts du solveur et Codes de sortie des commandes de vérification. - Les messages sont ceux du code, en anglais : une API répond en anglais quelle que soit la langue de la page. La plupart ont leur page de dépannage : 409 sur le Studio hébergé, 423 sur le Studio hébergé, les 409 et 503 du Bridge.
Les sections de « API du Studio » à « Codes de sortie des commandes de vérification » sont générées depuis le code et
depuis wiki/data/errors.json (npm run wiki -- generate reference.error-codes, dans
le dépôt du moteur) : un statut que le code lève et que le registre ne décrit pas fait échouer npm run wiki -- check.
L'API du Studio local (/__studio/api/*, tools/studio/plugin.ts) répond aussi, en
dehors des StudioError listées plus bas :
| Statut | Message | Quand |
|---|---|---|
| 404 | no such endpoint: <path> |
aucune route n'a ce chemin |
| 405 | method <METHOD> not allowed on <path> |
le chemin existe, avec une autre méthode |
| 404 | no such screenshot |
GET screenshots/<name>.png d'une capture absente |
| 404 |
no such endpoint: assets<path>, no such file
|
les routes de l'onglet Assets : une route inconnue, un fichier hors de art/ et audio/
|
| 405 | method <METHOD> not allowed on assets<path> |
une route Assets avec une autre méthode |
| 413 | body too large |
un corps de requête au-delà de la limite (l'onglet Assets prend jusqu'à 96 Mio) |
| 500 | le message de l'erreur | toute autre erreur levée : le serveur de dev écrit sa pile dans son terminal |
En plus de ses BridgeError, le serveur du Bridge (bridge/src/server.ts) répond :
| Statut | Corps | Quand |
|---|---|---|
| 503 |
{ "error": "busy", "message": "the store is busy: try again in a second" }, avec Retry-After: 1
|
un autre processus a tenu le verrou d'écriture du store plus longtemps que la requête ne pouvait attendre ; rien n'a été écrit, renvoyez-la |
| 503 | { "status": "unavailable" } |
GET /readyz ou /healthz quand le store ne répond pas |
| 500 | { "error": "internal" } |
une erreur inattendue, journalisée en ligne JSON {"event":"error", …} sur sa sortie |
| 404 | { "error": "not found" } |
aucune route n'a cette méthode et ce chemin |
Chaque refus que le Studio lève en StudioError, par statut HTTP. La réponse est du JSON, { "error": "<message>" } (parfois avec d’autres champs) ; les messages ci-dessous sont ceux du code, en anglais. … tient la place d’une partie remplie à l’exécution.
Une requête mal formée : un champ absent ou du mauvais type, un id qui n’en est pas un, un corps qui n’est pas un objet JSON, un en-tête du Studio Server qui n’a pas sa forme. Rien n’a été écrit. Corrigez la requête comme le dit le message, puis renvoyez-la.
Messages :
-
2,000 revisions at most between from and to(studio-server/src/ops/core.ts) -
`about` must be a string(studio-server/src/ops/core.ts,studio-server/src/ops/routes.ts) -
`after` is a revision number(studio-server/src/server/http.ts) -
`at` must be [x, y](studio-server/src/ops/core.ts,studio-server/src/ops/routes.ts) -
`cell` must be like r1c2, or pose/t1 in a talk kit(tools/studio/assets.ts) -
`cells` is empty(tools/studio/assets.ts) -
`cells` must be a list like r1c1,r2c3(tools/studio/assets.ts) -
`data` (base64) is required(studio-server/src/server/hosted-assets.ts,tools/studio/assets.ts) -
`data` is empty or not base64(studio-server/src/server/hosted-assets.ts,tools/studio/assets.ts) -
`email` is required(studio-server/src/server/auth/routes.ts) -
`file` must be a plain file name ending in …(tools/studio/assets.ts) -
`good` and `bad` are revision numbers(studio-server/src/server/http.ts) -
`grid` must be COLSxROWS, e.g. 6x4(tools/studio/assets.ts) -
`id` must be letters, digits and _ (not starting with a digit)(studio-server/src/ops/core.ts,studio-server/src/ops/routes.ts) -
`key` must be auto, always or never(tools/studio/assets.ts) -
`kind` must be music or sfx(tools/studio/assets.ts) -
`kind` must be prop, hotspot or actor(studio-server/src/ops/core.ts,studio-server/src/ops/routes.ts) -
`messages` must be a non-empty array(tools/studio/assistant.ts) -
`name` is required for a prop or a hotspot(studio-server/src/ops/core.ts) -
`name` must be letters, digits, _ and -(tools/studio/assets.ts) -
`path` is a relative path of the game(studio-server/src/server/play.ts) -
`path` is required(studio-server/src/ops/core.ts) -
`provider.apiKey` must be a string(tools/studio/assistant.ts) -
`provider.baseUrl` is not a valid URL(tools/studio/assistant.ts) -
`provider.baseUrl` must be an http(s) URL(tools/studio/assistant.ts) -
`provider.kind` must be openai, anthropic or ollama(tools/studio/assistant.ts) -
`provider.model` is required(tools/studio/assistant.ts) -
`resolved` is true or false(studio-server/src/server/comments.ts) -
`role` is owner, dev or reviewer(studio-server/src/server/auth/routes.ts) -
`room` is required(studio-server/src/ops/routes.ts) -
`sheetId` must be a sheet of art/ (not decor)(tools/studio/assets.ts) -
`sheetId` must be letters, digits, _ and - (not "decor")(tools/studio/assets.ts) -
`span` names one span(studio-server/src/server/http.ts) -
`spans` is a list of span names (room:<id>, lang:<code>, game, items, …)(studio-server/src/server/http.ts) -
`text` is required(studio-server/src/ops/core.ts,tools/studio/assistant.ts) -
`value` must be a string or null(studio-server/src/ops/core.ts) -
`…` must be a string(studio-server/src/ops/routes.ts) -
a comment is a text of 1 to … characters(studio-server/src/server/comments.ts) -
a decor must be a PNG or a JPEG image(tools/studio/assets.ts) -
a logout token is form-encoded(studio-server/src/server/auth/routes.ts) -
an anchor is a stable id of the game (letters, digits, . : @ - _)(studio-server/src/server/comments.ts) -
custom provider URLs are disabled (set WEB_SCUMM_ALLOW_CUSTOM_PROVIDER=1 to opt in)(tools/studio/assistant.ts) -
custom providers must use HTTPS and cannot target local or private network hosts(tools/studio/assistant.ts) -
each message is { role: "user" | "assistant", content: string }(tools/studio/assistant.ts) -
from and to are revisions, from ≤ to(studio-server/src/ops/core.ts) -
image not in the manifest: "…"(studio-server/src/ops/core.ts) -
invalid checkpoint: "…"(studio-server/src/ops/core.ts) -
invalid room id: "…"(studio-server/src/ops/core.ts) -
logout_token is required(studio-server/src/server/auth/routes.ts) -
malformed voice id "…"(studio-server/src/ops/routes.ts) -
not a cell of a … grid: "…"(tools/studio/assets.ts) -
not a path in the game: "…"(studio-server/src/ops/journal.ts) -
npm run assets only prepares a game under games/<id>/(tools/studio/assets.ts) -
provider URLs cannot contain credentials(tools/studio/assistant.ts) -
ref must be a branch of the repository or a commit(studio-server/src/server/git.ts) -
the body is a JSON object(studio-server/src/server/play.ts) -
the body is not valid JSON(studio-server/src/server/http.ts,tools/studio/assets.ts,tools/studio/plugin.ts) -
the body must be a JSON object(studio-server/src/server/http.ts,tools/studio/assets.ts,tools/studio/assistant.ts,tools/studio/plugin.ts) -
the last message must be the user's(tools/studio/assistant.ts) -
the layout must be an object(studio-server/src/ops/core.ts) -
the logout token is not valid(studio-server/src/server/auth/routes.ts) -
the logout token was already used(studio-server/src/server/auth/routes.ts) -
unknown character: "…"(studio-server/src/ops/core.ts) -
unknown checkpoint: "…"(studio-server/src/ops/diagnose.ts) -
x-studio-base must be a revision(studio-server/src/server/http.ts) -
x-studio-client must be 8 to 64 letters, digits, - or _(studio-server/src/server/http.ts) -
x-studio-fences is a JSON object of span → fence(studio-server/src/server/http.ts) -
x-studio-op must be 8 to 64 letters, digits, - or _(studio-server/src/server/http.ts) - et 12 message(s) construit(s) à l’exécution.
Pas connecté, ou des identifiants non valides : la session d’un Studio hébergé manque ou a expiré (la réponse peut porter login: "/auth/login"), le MCP distant ou les métriques sont arrivés sans leur jeton. Reconnectez-vous (quest-n-click-studio-server login --server <url> pour la CLI et le MCP).
Messages :
-
an access token is required(studio-server/src/server/mcp.ts) -
the metrics need their token(studio-server/src/server/http.ts) - et 2 message(s) construit(s) à l’exécution.
Connecté, mais pas autorisé : pas membre de ce projet, un rôle trop bas pour l’action (un relecteur n’écrit rien), une requête d’une autre origine, une page du jeu ouverte hors d’une session de navigateur, un commentaire qui n’est pas le vôtre, une tâche lancée par quelqu’un d’autre. Demandez le rôle à un owner.
Messages :
-
a reviewer resolves their own threads(studio-server/src/server/comments.ts) -
forbidden(studio-server/src/server/auth/gate.ts) -
not a member of this project(studio-server/src/server/auth/gate.ts) -
only its author changes a comment's text(studio-server/src/server/comments.ts) -
only who started a job, or an owner, cancels it(studio-server/src/server/jobs.ts) -
origin refused(studio-server/src/server/auth/gate.ts) -
the game is opened from a browser session(studio-server/src/server/http.ts) - et 1 message(s) construit(s) à l’exécution.
Ce que la requête nomme n’existe pas : une salle, une note, une réplique, une révision, un build, une tâche, un fichier, un storyboard ; ou une fonction que ce Studio n’a pas (les builds publiés, les commentaires, la santé des révisions sont ceux d’un Studio hébergé ; préparer les assets, découper une planche ou mettre à jour le moteur demande son application de traitement ; Git demande git dans la configuration).
Messages :
-
comments are a shared Studio's(studio-server/src/server/http.ts) -
cutting a sheet needs the hosted Studio's processing worker(studio-server/src/server/hosted-assets.ts) -
no build …(studio-server/src/server/builds.ts,studio-server/src/server/http.ts) -
no comment …(studio-server/src/server/comments.ts) -
no commit … in the repository(studio-server/src/server/git.ts) -
no defineGame({...}) in the game folder(studio-server/src/ops/core.ts) -
no job …(studio-server/src/server/http.ts,studio-server/src/server/jobs.ts) -
no line "…" in the game(studio-server/src/ops/core.ts) -
no revision … yet(studio-server/src/ops/core.ts) -
no storyboard.json in this game(studio-server/src/ops/core.ts) -
no such file(studio-server/src/server/http.ts) -
no such note: "…"(studio-server/src/ops/core.ts) -
not found(studio-server/src/server/http.ts) -
preparing the assets needs a hosted Studio with its processing worker(studio-server/src/server/http.ts) -
published builds are a hosted Studio's(studio-server/src/server/http.ts) -
room "…" is not in the game (index.ts / game.ts)(studio-server/src/ops/core.ts) -
the engine's upgrade needs a hosted Studio with its processing worker(studio-server/src/server/http.ts) -
the health of revisions is a hosted Studio's(studio-server/src/server/http.ts) -
this Studio has no Git repository (config git)(studio-server/src/server/http.ts) -
unknown room: "…"(studio-server/src/ops/core.ts) -
… does not exist in the repository(studio-server/src/server/git.ts)
Un conflit, rien d’écrasé : un fichier modifié depuis la révision que vous avez lue (la base périmée du Studio hébergé), un fichier modifié pendant que l’édition se préparait ou se vérifiait (réessayez), une annulation dont le fichier a changé depuis, un id qui existe déjà, des cases d’une planche qui existent déjà, une tâche déjà finie, un build d’une autre histoire du jeu, une branche Git qui a bougé, l’annulation sur un Studio partagé.
Messages :
-
"…" already exists in room "…"(studio-server/src/ops/core.ts) -
build … belongs to another history of the game (an import or a restore since)(studio-server/src/server/builds.ts) -
build …: the revision's snapshot rebuilt from the journal is not the one published(studio-server/src/server/builds.ts) -
cannot … "…": the journal has no such operation(studio-server/src/ops/core.ts) -
cannot … "…": … changed since(studio-server/src/ops/core.ts) -
cannot … "…": … was written again at revision …(studio-server/src/ops/core.ts) -
the job has already ended (…)(studio-server/src/server/jobs.ts) -
too late: the job is writing its result(studio-server/src/server/jobs.ts) -
undo is not available on this shared Studio(studio-server/src/server/http.ts) -
… cell(s) of "…" already exist: name the cells to recut (cells), or upload into a new sheet id(tools/studio/assets.ts) -
… changed since revision … (now …)(studio-server/src/ops/journal.ts) -
… changed while this edit was being checked; try again(studio-server/src/ops/journal.ts) -
… changed while this edit was being prepared; try again(studio-server/src/ops/journal.ts) -
… is not a file(studio-server/src/ops/journal.ts) -
… moved while pushing: import it first, never forced(studio-server/src/server/git.ts) -
…: the folder does not match the head; try again(studio-server/src/server/git.ts)
Trop gros : un corps de requête au-delà de la limite de la route (body too large), un envoi au-delà de la taille du Studio hébergé, un import de plus de fichiers ou d’octets que le Studio n’en prend. Envoyez moins, ou découpez.
Messages :
-
an upload is … MiB at most(studio-server/src/server/hosted-assets.ts) -
body too large(studio-server/src/server/auth/routes.ts,studio-server/src/server/http.ts,tools/studio/assets.ts,tools/studio/assistant.ts,tools/studio/plugin.ts) -
more than 64 MiB to import(studio-server/src/server/git.ts) -
more than … files to import(studio-server/src/server/git.ts)
Le mauvais type de contenu : une écriture qui n’est pas envoyée en JSON, un son sur un Studio hébergé qui n’est pas un fichier .ogg, .mp3 ou .wav, ou dont les octets disent autre chose.
Messages :
-
a sound on a hosted Studio is an .ogg, .mp3 or .wav file(studio-server/src/server/hosted-assets.ts) -
a write is sent as JSON(studio-server/src/server/auth/gate.ts) -
the file is not … sound: its bytes say otherwise(studio-server/src/server/hosted-assets.ts)
Compris et refusé : l’édition ajouterait des erreurs de validation (la réponse les liste, avec le diff ; rien n’est écrit depuis la 4.2.1), un commit Git qui ne contient pas de jeu, ou un lien, ou un sous-module, des assets préparés qui perdraient des fichiers que le jeu avait, une découpe, une migration ou une mise à jour du moteur refusée par l’application de traitement.
Messages :
-
refused: the edit adds … validation error(s): …(studio-server/src/ops/core.ts) -
refused: the prepared assets would lose … image(s) or sound(s) the game had (…): prepare them on a local Studio(studio-server/src/server/prepared.ts) -
refused: …; nothing was written(studio-server/src/server/engine-upgrade.ts) -
the commit holds no game at "…"(studio-server/src/server/git.ts) -
the cut is refused: …(studio-server/src/server/remote-executor.ts) -
the migration cannot run: …(studio-server/src/server/remote-executor.ts) -
the migration is refused: …(studio-server/src/server/remote-executor.ts) -
the prepared assets are refused: …(studio-server/src/server/remote-executor.ts) -
… is a link or a submodule: not imported(studio-server/src/server/git.ts) -
… is not a folder of the repository (a file, a link or a submodule): not read(studio-server/src/server/git.ts) - et 2 message(s) construit(s) à l’exécution.
Un pan (une salle, une langue, le jeu…) est tenu par un autre membre d’un Studio hébergé, ou votre propre bail dessus a pris fin : la réponse nomme le pan et qui le tient ; votre brouillon est gardé.
Messages :
-
your lease on … ended or was taken again: take it again(studio-server/src/server/leases.ts)
Trop à la fois, réessayez plus tard : un build ou une préparation des assets est déjà en cours, la mise à jour du moteur tourne, trop de tâches attendent, trop de commentaires ouverts.
Messages :
-
a build is being made: try again when it is done(studio-server/src/server/builds.ts) -
the assets are being prepared: try again when it is done(studio-server/src/server/prepared.ts) -
the engine's upgrade is running: try again when it is done(studio-server/src/server/engine-upgrade.ts) -
too many jobs are waiting: try again when one is done(studio-server/src/server/jobs.ts) -
… open comments at most each: resolve some first(studio-server/src/server/comments.ts)
Le jeu ou le Studio lui-même a échoué : le jeu ne se charge pas (une erreur de syntaxe, un ancien import web-scumm/…), un fichier JSON du jeu n’est pas valide, une édition casserait le fichier qu’elle écrit (refusée, rien d’écrit), une écriture sur un Studio partagé sans son auteur. Le serveur de dev écrit la pile dans son terminal.
Messages :
-
a write on a shared Studio says who writes(studio-server/src/server/main.ts) -
no cell "…/…" after the write(tools/studio/assets.ts) -
refused: the edit would break … (…)(studio-server/src/ops/core.ts) -
the game does not load: …(studio-server/src/ops/core.ts) -
…: invalid JSON (…)(studio-server/src/ops/core.ts) - et 1 message(s) construit(s) à l’exécution.
Pas disponible ici : une capture ou les captures d’un diff sans Playwright ou son Chromium, ou sur un Studio hébergé (la réponse porte unavailable: true et reason) ; une politique Reality résolue sur un Studio hébergé (en local seulement).
Messages :
-
a reality policy is solved on a local Studio(studio-server/src/ops/core.ts) - et 2 message(s) construit(s) à l’exécution.
Un service derrière le Studio Server a échoué : une commande git ou un push vers le dépôt du jeu.
Messages :
-
git …: …(studio-server/src/server/git.ts) -
the push failed: …(studio-server/src/server/git.ts)
Pas maintenant, rien de perdu : un autre processus écrit ce jeu, l’édition ne peut pas être jugée maintenant (la validation n’a pas pu tourner), ou le fournisseur d’identité d’un Studio hébergé ne répond pas (la session est suspendue). Réessayez.
Messages :
-
another process is writing this game; try again(studio-server/src/ops/journal.ts) -
the edit cannot be judged now: …(studio-server/src/ops/core.ts) -
the identity provider cannot be reached: the session is suspended(studio-server/src/server/auth/gate.ts)
L’application de traitement d’un Studio hébergé n’a pas répondu à temps (une préparation, une découpe, un diagnostic) : réessayez, ou faites-le sur un Studio local.
Messages :
-
…: the diagnostic is unknown for now(studio-server/src/server/remote-executor.ts) -
…: try again(studio-server/src/server/remote-executor.ts) -
…: try again, or cut it on a local Studio(studio-server/src/server/remote-executor.ts) -
…: try again, or prepare on a local Studio(studio-server/src/server/remote-executor.ts)
Chaque refus que le Bridge lève en BridgeError, par statut HTTP et code. La réponse est du JSON, { "error": "<code>", "message": "<message>" }.
La requête n’est pas ce que la route lit : pas du JSON, un champ absent ou mal formé, un through que le Bridge n’a jamais envoyé, un id de révocation qui n’est pas hexadécimal, une livraison de webhook sans son id.
Messages :
-
`id` names the delivery (deduplication)(bridge/src/server.ts) -
`through` is a sequence the Bridge sent(bridge/src/bridge.ts) -
`…` is missing or malformed(bridge/src/bridge.ts) -
a revocation id is hex(bridge/src/bridge.ts) -
not JSON(bridge/src/server.ts)
Une route d’opérateur (/v1/admin/…, comme l’appelle quest-n-click-bridge revoke) sans le jeton de l’opérateur (admin-token dans le dossier du Bridge).
Messages :
-
not the operator(bridge/src/bridge.ts)
Le lien du joueur avec le Bridge (sa capacité) est inconnu, révoqué, expiré ou trop vieux : le joueur s’apparie de nouveau.
Messages :
-
link expired: pair again(bridge/src/bridge.ts) -
link too old: pair again(bridge/src/bridge.ts) -
unknown or revoked link(bridge/src/bridge.ts)
Le jeton du connecteur a été révoqué pendant que son signal était proposé : accordez-en un nouveau (quest-n-click-bridge grant).
Messages :
-
token revoked(bridge/src/bridge.ts)
Une livraison de webhook dont la signature HMAC ne correspond pas au secret du webhook.
Messages :
-
bad webhook signature(bridge/src/server.ts)
Un jeton de connecteur illisible, ou révoqué, sur une confirmation d’appariement ou un signal.
Messages :
-
token revoked(bridge/src/bridge.ts) -
unreadable token(bridge/src/bridge.ts)
Le jeton du connecteur est valide et ne permet pas ceci : il ne peut pas apparier (accordé sans --pair), ou son Biscuit ne permet pas ce signal, cette source ou ce joueur.
Messages :
-
this token may not pair (…)(bridge/src/bridge.ts)
Un appariement demandé pour un jeu que ce Bridge ne sert pas (son gameId est un autre).
Messages :
-
not a game of this Bridge(bridge/src/bridge.ts)
Aucun webhook de ce nom dans la configuration du Bridge.
Messages :
-
no such webhook(bridge/src/server.ts)
Le code d’appariement est inconnu ou expiré : le joueur lance un nouvel appariement.
Messages :
-
unknown or expired code(bridge/src/bridge.ts)
Le joueur est inconnu de ce Bridge, ou a été révoqué (quest-n-click-bridge revoke --player=…, ou le joueur s’est délié).
Messages :
-
unknown or revoked player(bridge/src/bridge.ts) -
unknown player(bridge/src/bridge.ts)
Un Bridge qui sert plusieurs tenants n’en trouve aucun pour cette requête.
Messages :
-
no tenant here(bridge/src/server.ts)
Le code d’appariement a déjà été confirmé, par ce connecteur ou un autre : le joueur est apparié, rien à refaire.
Messages :
-
already confirmed(bridge/src/bridge.ts)
L’appariement a déjà été réclamé : la capacité du joueur a été remise une fois et ne le sera plus ; appariez de nouveau depuis le jeu.
Messages :
-
already claimed(bridge/src/bridge.ts)
Le corps de la requête dépasse la limite du Bridge.
Messages :
-
a request body is at most … bytes(bridge/src/server.ts)
Le webhook n’associe pas cet événement à un signal (sa configuration liste les événements qu’il connaît).
Messages :
-
this webhook does not know that event(bridge/src/server.ts)
Le signal n’est pas dans le manifeste Reality du jeu.
Messages :
-
signal … is not in the game's manifest(bridge/src/bridge.ts)
Le signal est déclaré pour une autre source que le connecteur qui l’envoie.
Messages :
-
signal … comes from …(bridge/src/bridge.ts)
Trop de codes d’appariement attendent une confirmation : réessayez dans une minute.
Messages :
-
too many codes waiting for a confirmation: try again in a minute(bridge/src/bridge.ts)
Le joueur a trop de signaux en attente de livraison.
Messages :
-
the player has too many signals waiting(bridge/src/bridge.ts)
Trop de signaux cette minute pour le joueur (le quota par minute du Bridge).
Messages :
-
too many signals this minute(bridge/src/bridge.ts)
Trop de requêtes depuis cette adresse : la réponse porte Retry-After: 60.
Messages :
-
too many requests from this address: try again in a minute(bridge/src/server.ts)
Trop de flux d’événements ouverts : pour ce joueur, ou pour cette instance du Bridge.
Messages :
-
at most … open streams for a player(bridge/src/bridge.ts) -
this instance holds as many streams as it may: try again(bridge/src/bridge.ts)
Le statut unique d’une recherche du solveur ou d’une preuve par chapitres (src/engine/tools/status.ts) : la ligne de commande, son --json, l’onglet Vérifier du Studio et l’outil MCP solve le lisent tous.
| Statut | Code de sortie | Signifie |
|---|---|---|
solved |
0 | La fin (ou le but) est atteinte : sur un chemin pour une recherche de témoin, depuis chaque état atteignable avec --prove. |
softlocks |
1 | Certains états atteignables ne peuvent plus atteindre la fin : la sortie les liste avec le chemin vers chacun. |
unsolved |
1 | La fin n’est atteinte depuis aucun des états explorés. |
truncated |
2 | La recherche s’est arrêtée sur son budget (états --max, temps --time, mémoire --mem) : rien n’est prouvé ; augmentez le budget ou reprenez depuis le point de reprise. |
broken |
1 | Un invariant du jeu est devenu vrai sur un état atteignable. |
error |
1 | Le moteur a levé des erreurs pendant l’exploration. |
checkpoint_mismatch |
1 | Une preuve par chapitres (--prove --chapters) : chaque chapitre est prouvé, mais un checkpoint écrit à la main n’est aucun des états frontières atteignables de son chapitre. |
Ce qu’un script ou un job de CI lit après la commande.
| Code | Signifie |
|---|---|
| 0 | Aucune erreur (des avertissements peuvent s’afficher) ; --report sort toujours avec 0. |
| 1 | Au moins une erreur, listée après ✖. |
| Code | Signifie |
|---|---|
| 0 |
solved ; aussi --prove --chapters sur un jeu qui ne déclare aucun chapitre. |
| 1 | Tout autre statut que truncated (softlocks, unsolved, broken, error, checkpoint_mismatch) ; avec --audit-abstractions, les deux recherches divergent. |
| 2 |
truncated : rien de prouvé (avec --audit-abstractions, la recherche explicite a été tronquée) ; ou un --goal refusé (seulement --goal=100%, et seulement sur un jeu qui a un objectif non facultatif). |
| Code | Signifie |
|---|---|
| 0 | Chaque monde prouvé (fermé, chaque scénario et replay, adversarial), ou un jeu sans reality. |
| 1 | Un monde échoue ; une recherche tronquée compte comme un échec. |
| Code | Signifie |
|---|---|
| 0 | Aucun constat de gravité error, et la recherche du solveur n’a pas été tronquée. |
| 1 | Au moins un constat de gravité error. |
| Code | Signifie |
|---|---|
| 0 | Chaque prérequis obligatoire est là (des optionnels peuvent manquer). |
| 1 | Un prérequis obligatoire manque ; avec --release, chaque prérequis de npm run release-check est obligatoire. |
| Code | Signifie |
|---|---|
| 0 | Le verdict est valid ou valid-unranked. |
| 1 | Tout autre verdict, inconclusive compris : jamais valide. |
| 2 | Aucun fichier .wsrun nommé : la ligne d’usage s’affiche. |
| Code | Signifie |
|---|---|
| 0 | Chaque navigateur écrit chaque valeur comme Node (ou un navigateur sauté avec --allow-skip, dit dans la sortie). |
| 1 | Un navigateur écrit une valeur autrement. |
| 3 | Un navigateur que Playwright ne peut pas lancer ici, sans --allow-skip. |
| Code | Signifie |
|---|---|
| 0 | Chaque environnement fait les mêmes mondes (ou un navigateur sauté avec --allow-skip, dit). |
| 1 | Une différence, la graine nommée. |
| 3 | Un navigateur que Playwright ne peut pas lancer, sans --allow-skip. |
| Code | Signifie |
|---|---|
| 0 | Déterminisme prouvé dans chaque navigateur lancé (ou --bundle-only, ou un navigateur sauté avec --allow-skip). |
| 1 | Une vérification a échoué. |
| 3 | Un navigateur que Playwright ne peut pas lancer, sans --allow-skip. |
| Code | Signifie |
|---|---|
| 0 | Prouvé ; ou sauté avec --allow-skip (une ligne « skipped » explicite, jamais une preuve). |
| 1 | Échec. |
| 3 | Sauté : le navigateur ne sait pas naviguer hors ligne sous automatisation (WebKit), sans --allow-skip. |
scripts/e2e-remix-speedrun.ts.
| Code | Signifie |
|---|---|
| 0 | Chaque politique de monde a enregistré la même partie dans chaque environnement, vérifiée (ou un navigateur sauté avec --allow-skip). |
| 1 | Une vérification a échoué. |
| 3 | Un navigateur que Playwright ne peut pas lancer, sans --allow-skip. |
En plus de 0 et 1 ci-dessus, npm run lint sort avec 2 quand il n'a trouvé aucune erreur mais que la recherche du
solveur qu'il lance d'abord a été tronquée : « jamais exécuté » et « jamais atteint » sont alors des informations, pas
des verdicts. Augmentez --max, ou prouvez par chapitres (tools/lint.ts).
Limite ·
register-scopeLe registre liste ce que le code lève avec une structure :new StudioError(<message>, <status>)dansstudio-server/src/ettools/studio/,new BridgeError(<status>, '<code>', <message>)dansbridge/src/, les statuts du solveur et les codes de sortie nommés dans les données. Il ne liste pas les réponses qu'une route envoie directement (les429 too many requestset429 too many refused attemptsdu Studio Server, avecRetry-After: 60; les routes speedrun et quotidiennes du Bridge,/v1/runset/v1/daily, avec leurs propres corps d'erreur), un refus dont le statut est calculé (la vérification d'un signal par le Bridge répond 401 ou 403 avec le code de la vérification Biscuit), ni le texte d'un message construit à l'exécution (compté sous son statut). Les verdicts et les codes du vérificateur de speedrun relèvent des pages speedrun.
Generated publication · publication générée — current documentation · documentation courante: quest'n'click 4.4.0 r1, documentation revision · révision de la documentation 8dc717c69acb62c4742b69c54a7e7dfb620f75d8.
Earlier versions and permalinks · versions précédentes et liens permanents: https://wanoo.github.io/quest-n-click/docs/
An edit made in this wiki is overwritten at the next publication · une modification faite dans ce wiki est écrasée à la publication suivante.
Edit the source · Modifier la source · Report an error · Signaler une erreur
Index (6)
Démarrer (6)
Jouer (9)
Installer (17)
- Prérequis
- Installer depuis l'archive de la release
- Installer depuis npm, une fois publié
- Installer depuis le dépôt pour travailler sur le moteur
- doctor : vérifier sa machine
- Outils pour les images
- Outils audio : ffmpeg, fluidsynth, Furnace, uv
- Mettre à jour
- Notes de mise à jour : 4.4
- Notes de mise à jour : 4.3
- Notes de mise à jour : 4.2
- Notes de mise à jour : 4.1
- Notes de mise à jour : v3
- Notes de mise à jour : v2 vers v3
- Venir de web-scumm
- Référence du paquet
- Dépannage de l'installation
Créer un jeu (55)
- Votre premier jeu
- Organisation d'un projet créé et du dépôt du moteur
- La boucle de travail
- Principes du contenu et contrat d'identité
- Salles
- Géométrie : placement, zones de marche, masques, calques, caméra
- Un objet est visible mais inaccessible
- Réactions
- Commandes du jeu
- Conditions
- Drapeaux, variables et événements : lequel choisir
- Code sur mesure
- Personnages
- Objets et inventaire
- Carte du monde
- Dialogues
- Scripts et événements
- Faire bouger les personnages : patrouilles et marches
- Sorties
- Chapitres et objectifs
- État et sauvegardes : persistant ou temporaire, renommer un id, migrations
- Mise en scène : salles larges et animations
- La scène : lumières, particules, sols
- Habillage et polices
- Titre et générique
- Héros : plusieurs personnages et choix du héros
- Mini-jeux intégrés
- Un mini-jeu sur mesure
- Traductions
- Musique en stems
- Bruitages
- Voix : par langue et par héros
- Images : prompts, découpe des planches, transparence, échelle
- Provenance des assets
- Le storyboard, source de vérité
- Concevoir des énigmes
- Mécaniques classiques
- Pages de relecture
- Référence du DSL
- Vérifier son jeu
- Ce que prouve le solveur
- Options du solveur
- Playtests
- Remix
- Speedrun pour les auteurs
- La fin scellée
- Modèle de production
- Jeux d'exemple
- Travailler avec une IA
- Construire et publier un jeu
- Publier sur GitHub Pages
- Le jeu statique sur Clever Cloud
- Autres hébergeurs statiques
- Sous-chemin, cache et service worker, déploiement incomplet, retour arrière
- Tester sur un téléphone en réseau local
Studio local (24)
- Le Studio local : présentation et lancement
- Modifier une salle
- Placement et scène
- Aperçu, application, annulation
- Storyboard
- Assets et découpe
- Vérifier : validateur, solveur, chemin critique, chaleur, santé, couverture
- Captures avant et après
- Diff sémantique
- Jouer et rejouer une session
- Explication des règles
- Langue et objectifs
- Voix et matrice héros × langues
- Carte
- Notes
- Remix dans le Studio
- Musique
- L'Assistant : votre propre clé
- Mode démo et studio-apply
- Sécurité en local et en réseau local
- API du Studio
- MCP local : configurer chaque client
- Outils MCP
- Dépannage du Studio
Studio d'équipe (21)
- Ce qui tourne où
- Concepts : révision, transaction, pan, bail, aperçu, build
- Débuter comme dev invité
- Travailler ensemble au quotidien
- Rôles et actions : la matrice complète
- Invitations
- Gérer les membres
- Écriture refusée sur le Studio hébergé : révision de base périmée (409)
- Écriture refusée sur le Studio hébergé : pan verrouillé (423)
- Reprendre après un bail perdu, une déconnexion ou un aperçu périmé
- Commentaires
- Carte et diff sémantique
- Publier des builds
- MCP distant
- Le jeu dans Git
- Mettre à jour le moteur d'un jeu hébergé
- Assets hébergés
- La ligne de commande du serveur
- Routes de santé et de métriques
- L'essayer en local avec compose.yml
- Limites connues
Clever Cloud (23)
- Clever Cloud : vue d'ensemble, coût et prérequis
- Applications et add-ons
- Domaines et TLS
- Keycloak
- OIDC générique et GitLab
- Configuration
- Premier déploiement
- Sauvegardes
- RPO et RTO
- Exercice de restauration sur une installation vierge
- Redéploiements
- Mettre à jour le serveur et vérifier l'état après une migration
- Limites du retour arrière
- Supervision
- Sécurité
- Renouveler les clés
- Récupérer l'accès administrateur
- Changer de domaine ou de fournisseur OIDC
- Worker, PostgreSQL ou Cellar en panne
- Exporter le jeu et quitter l'installation
- Rétention
- Dépannage sur Clever Cloud
- Coûts et démontage
Reality Bridge et connecteurs (16)
- Le Reality Bridge : ce que c'est
- Démarrage rapide
- Garanties
- Installer et lancer le Bridge
- Sauvegarde et restauration
- Plusieurs tenants
- Signaux et manifeste
- La ligne de commande du Bridge
- Vue d'ensemble des connecteurs
- Connecteur email
- Connecteur Telnet
- Connecteur SSH
- Connecteur Open Badges
- Le SDK des connecteurs
- Sécurité : Biscuit et signatures
- Dépannage du Bridge et des connecteurs
Contribuer (25)
- Bienvenue
- Préparer son poste de développement
- La boucle de développement
- Avant une pull request
- Conventions
- Écrire la documentation
- Architecture
- Visite du code
- Frontières d'import
- Quels tests tournent quand
- Tests de mutation
- Le cliquet de couverture
- La référence de qualité
- La CI expliquée
- Passes de terrain
- Mesures de performance
- Publier une release
- Paquets npm
- Décisions et ADR
- Gouvernance
- Pull requests des bots
- Contribuer avec des agents IA
- Politique de sécurité
- Code de conduite
- Licences et crédits