Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Part C

Part C. Profiles

Parts A and B do not change to admit a profile.

C.1 Identity: Package URL

An identity is a Package URL (ECMA-427) without its version: pkg:npm/react, pkg:pypi/fastapi, pkg:github/jdx/mise. A release’s identity is the same Package URL with its version (10): pkg:github/jdx/mise@2026.10.10.

C.2 Dependency descriptions

profiledeclarations readthe pin
npmpackage.json dependenciesthe version the lockfile resolves; unknown without a lockfile
Pythonpyproject.toml and requirements*.txtthe version uv.lock or poetry.lock resolves, or a == requirement; unknown otherwise
CargoCargo.toml dependenciesthe version Cargo.lock resolves
Gogo.mod requirementsthe version go.mod names
misemise.toml and .tool-versions toolsthe version each names; unknown for latest or a prefix
GitHub Actionsuses: in .github/workflowsthe tag or version named; unknown for a branch
container imagesFROM in a Dockerfilethe tag named; unknown for latest
watch lista file naming each dependency’s upstream repository, its tag pattern, its pin and its tieras the file gives it; swancloud’s, generated from lib/release-sources.nix

Tiers are read from .config/headwater.toml: each tier’s name, its cadence, and the identities it names. A repository with no such file has the default tier alone, with a cadence of seven days.

C.3 Release sources

profileidentitieslist-releases / order
deps.devnpm, PyPI, Cargo, Go, Maven, NuGet, RubyGemsthe versions and dates of a batched Package URL lookup, with no key; order by the ecosystem’s own rules
a registry’s own APIthe registry’s packagesthe registry’s version list, for a release deps.dev has not seen yet; order as above
GitHub releasespkg:github/*, and any dependency whose source repository is on GitHubthe repository’s releases through GraphQL, fifty repositories a query, with the asker’s own gh sign-in (38); order by Semantic Versioning where the tags parse, by the watch list’s tag pattern otherwise
ecosyste.msGitHub Actions, container images, Homebrew, nixpkgs and the other registries it indexesits packages API by Package URL

Order by ecosystem: Semantic Versioning 2.0.0 for npm, Cargo and GitHub tags that parse; PEP 440 for PyPI; Go’s module rules; and a calendar version compared field by field where a watch list says so.

C.4 Notes sources

profileread-notes
GitHub releasethe body of the GitHub release at the version’s tag in the dependency’s source repository, which deps.dev links or the watch list names
changelogthe section for the version in the source repository’s CHANGELOG.md at that tag, where no release body exists

C.5 Advisory source: OSV

operationhow OSV satisfies it
read-advisoriesOSV’s batched query by Package URL and version; severity as the advisory gives it

C.6 Store: the git directory

operationhow the git directory satisfies it
readthe files under <git common dir>/headwater/, which every worktree of the repository shares (28)
writea new file written beside the old and renamed over it, under a lock held for the write (30, 49)

Notes are kept whole under the same directory, never in the repository’s content.