> For the complete documentation index, see [llms.txt](https://docs.onelitefeather.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.onelitefeather.net/ingot/operate-and-upgrade/verify-an-upgrade.md).

# Verify an upgrade

Check an upgraded Ingot instance by reading the migration log, listing principals, and testing tokens and routes.

Run these checks after every upgrade, before you rely on the new instance.

## Prerequisites

* The upgraded server is running.
* A token of an instance admin, or a token with the `ingot.admin.users` node. The principal list needs one of these. See [Permission nodes](/ingot/identity-and-access-1/permission-nodes.md).
* A token with routes, and one action it is allowed to take and one it is not.
* The answers from before the upgrade, for comparison.
* The name of one artifact you know exists. Read it anonymously if it is in a public repository.

## Steps

1. Read the log of the first start and look for the migration line:

   ```
   Identity | migrated 7 access token(s) to machine principals
   ```

   The line appears on the first start when the instance has persistent tokens. A later start prints it only when it copies tokens that an older version created after a rollback.
2. List the principals with an instance admin token. Each migrated token appears as a machine principal.

   ```bash
   curl -u <admin>:<secret> https://<your-host>/api/identity/principals
   ```
3. Authenticate with the token that has routes. Try the action it is allowed to take and the one it is not. Each answers as it did before the upgrade.
4. Read the artifact you know. It answers as it did before the upgrade.
5. Check the search index state with an instance admin token. The response shows the state, the lag in seconds and the row count. `GET /api/maven/search/index` answers `404` when search is turned off on the instance.

   ```bash
   curl -u <admin>:<secret> https://<your-host>/api/maven/search/index
   ```

## Result

All checks answer as they did before the upgrade.

If a token that worked before no longer authenticates, do not delete anything. Leave the data as it is and follow [Roll back an upgrade](/ingot/operate-and-upgrade/roll-back-an-upgrade.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.onelitefeather.net/ingot/operate-and-upgrade/verify-an-upgrade.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
