A container can run on a value that lives in a fossil, nowhere a deploy sends. The value disappears with the fossil, and the container comes up healthy without it.

The three sources and the fossil

Every compose-referenced variable comes from the DB channel, the Vault secret provider, or a git-tracked file. A fossil is anything on an edge that “just works” but is in none of those three sources.

Dockhand’s deploy log counts the non-secret override variables and the secret variables it sent from the DB. Every later redeploy re-read the fossil, and the values lived nowhere a deploy sends.

Where the fossil went

Replacing a Hawser agent replaces its stack volume. Nothing a deploy does not ship survives that, and the fossil went with the old volume. The swap is when you find out that something was a fossil.

The container was healthy with a broken base URL.

Checking the value

Verify the rendered value in the container, never the API’s stored value. The API said the right thing the whole time.