Skip to content
Castellan
Assayer's icon

Overview · Assayer

Read as

The Assayer, your projects' testing specialist

What the Assayer does with your own repositories (tests them case by case, says what changed when something breaks, checks they're ready to release, and opens work that passes as a ready pull request), and what it never does.

Article
1801
Applies to
Assayer 0.2.4
Last reviewed
For
For developers
Written for Assayer 0.2.4. Assayer is at 0.2.5 now (1 small release since: what changed).

What it is#

The manor's assayer tested metal before it was struck into coin: what passed went on to the mint, what failed went back to the smelter. The Assayer does the same for the work in your own projects. It tests each repository case by case and test by test, says what changed when something breaks, checks whether a repository is ready to release, and turns work that passes into a ready pull request for you to merge. What fails stays where it is, with its output.

It's a developer agent, and holds the Aletaster's office for developers. See Hiring, switching and letting staff go.

Which repositories#

The ones in Castellan's Settings > Repositories whose checkout is on this PC and whose origin is that GitHub repository. See Your own repositories.

What it does#

Every 15 minutes, one test run at a time and at most 3 a round, it does its four jobs:

JobWhat it does
Your branchesA local branch ahead of the project's branch, with no pull request, left alone for 2 hours: tested at its newest commit. When it passes, it's pushed and opened as a ready pull request.
A daily health runOnce a day, the project's branch as GitHub has it, and again when a tool it uses changed version.
Release readyEvery 6 hours: the versions agree, every pull request since the last release has its changelog line, the release's checksums match, and CI is green.
DraftsFor the manor's own builder's drafts. You can leave it off.

The details are in The Assayer's jobs.

How it tests#

Code finds the cases from the repository's own files: unit tests, typecheck, lint, build, and release ready. Settings > Test cases you set adds or changes them.

It reads each test from the runner's report (node:test, Vitest, Jest, pytest, dotnet test, cargo test, go test), so a failing case shows which tests failed and their output. A test that passed and failed on the same commit is marked flaky.

It says what changed when a case goes from passing to failing: the commits in between, and the tools whose versions moved. When only a tool changed, it offers that tool's last good version back, for you to tick.

It never touches your checkout. Each run is in a throwaway worktree of its own, at below-normal priority.

See How the Assayer tests.

What it never does#

  • It never merges, tags or releases. That's yours.
  • It never force-pushes, and never pushes what failed.
  • It never changes a tool unless you tick it and press Put back.
  • It uses no model. Every finding is code's.

Its home page#

The Assayer's page is at http://assayer.localhost:20909/, and Open on the Aletaster's card in Castellan goes there. From the top:

  • The round: when it was, Run now, and what's under way.
  • Ready for you: the pull requests it opened or marked ready, newest first.
  • Didn't pass: the failing cases, tests and output, and what changed.
  • Repositories: each one, its cases and their tests, with release ready's checks.
  • Lately: the last test runs, with what happened after each.

Getting started#

  1. Add your repositories in Castellan's Settings > Repositories, if they aren't there.
  2. Hire the Assayer from the Aletaster's card. It's included in the Workshop license.
  3. Take its tour, and look at Repositories after its first round: each case found, and how it went.

Is this page right?

If something on it is wrong or out of date, tell us and we'll fix the page.

Still stuck? Write to support@castellan-software.com and mention article 1801. Every version of Assayer, and what changed in it, is in its release notes.