Publishing: log in once
<namespace>/<project>-<brain>. Nobody writes a registry reference per subject, and adding a
subject is adding a directory.
The namespace comes from [registry].namespace when set, and otherwise from whichever account you are logged in as.
That fallback is the whole point of --from-docker.
The project prefix is load-bearing: without it, two projects that each hold a brain called notes would publish
to one repository and overwrite each other — and the second one would find out when a pull returned the wrong
subject.
Publishing the whole project
--json on a half-published project still tells you which ones went.
Run vitruvio registry check <repository> once before the first push to a new host. Docker Hub is verified to accept
the protocol’s manifest shape; the next registry is the one that refuses.
Overriding one brain
A brain you did not author
Pulling a brain gives you a local working copy that is writable like any other — nothing in the protocol distinguishes “a brain I authored” from “a brain I installed”. So a straydist push publishes a fork of a shared
brain under whichever repository this project derives, and the two lineages diverge with nobody informed.
Declare it instead of remembering it:
project show prints (publish = false) beside it, because a prohibition nobody can see is one somebody works
around by accident — the repository column otherwise reads as a statement that a push goes there.
Two things it deliberately is not. It is not a permission: anyone who can edit vitruvio.toml can flip it, which
is the right amount of friction for a declaration whose only job is to make a deliberate act look deliberate. And it
is not read-only: source pull, ingest run and index build all still work on that brain. What is forbidden
is republishing it, not updating your copy.