---
title: "Troubleshooting"
description: "What to check when a build fails, a change is not live, a domain stays pending or a call is refused."
canonical: "https://atelier201.com/docs/platform/troubleshooting"
updated: "2026-11-06"
---

# Troubleshooting

## A build failed

Open the build: `error` gives a code and a message, and the log shows the
compiler's output (Astro's messages). The usual causes:

- A content value that does not match its schema. The log names the field. Fix
  the content, not the schema, unless you meant to add a new kind of data.
- A dependency the build does not have. The build runs without network access,
  on the [packages Atelier201 has](/docs/platform/packages), so a project that adds
  another package, or another version, is refused. `dependencies_unavailable`
  means this, and its message names the package.
- Infrastructure. `build_infrastructure` means the build container or storage
  failed, not your files. Build again.

A ready build of the same revision is reused, so build again after a fix, not
before.

## I published and visitors still see the old site

A publication reaches every address within about a minute. If the old version
persists after that, check that you published the build you meant:
`atelier201 publish history` and the site's `published.build_id` show what is live.
Publishing again, or a rollback, rewrites the routing of the site.

## Publish is refused

| Message or code                 | Cause                                                                                                                            |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `409 conflict` after a review   | Someone published since your review. Review again and send the new `expected_generation`.                                        |
| `409 conflict` listing blockers | The build cannot go live. Each blocker says what to do: see [How a site goes live](/docs/platform/drafts-builds-and-publishing). |
| `403 insufficient_scope`        | The credential has no `sites:publish`. Ask the owner to publish, or reconnect with that scope.                                   |
| `403 admin_required`            | Only a workspace admin can publish.                                                                                              |

## A change was refused with a conflict

You wrote a file that someone changed since you read it. The error's `details`
carry the current revision and the paths. Read those files again and apply your
change on top.

## A domain stays pending

A domain moves from `pending_ownership` to `provisioning` to `active` when its
records exist. If it stays in `pending_ownership`, the TXT record is missing or
has not spread yet. Compare it with the records in the app, wait, and check the
domain again. A conflict with a message about the plan means the site has no
custom domain left: remove one or move the site to a higher plan.

## A plan limit was reached

Publishing a draft is refused with a `403 feature_not_available`; creating a
draft past the workspace's drafts and connecting a domain on a draft are refused
with a `409 conflict`. Each names the limit and links to the page that lifts it
(`action_url`). Move the site to the Site plan, or delete a draft, then retry. An agent must not retry in a loop or change the plan itself.

## My credit balance looks wrong

The balance is the sum of unexpired grants minus what was used. The **Billing**
page lists each grant with its expiry date. Only AI spends credits: the assistant,
and images or videos made with AI.

## I cannot sign in

Check which email address the account uses. An account created with Google and
an account created with a password are the same account only if they share an
address.
