Data Model

PackPin (packs/<pack>.source.yaml)

FieldTypeRule
repositorystrGit URL. Comes only from the committed pin, never from the environment.
commitstr40 lowercase hex characters
subtreestrRelative POSIX path inside open-packs. No .., not absolute.
tree_digest.algorithmclean-tree-sha256fixed
tree_digest.levelbuilt-in \org
tree_digest.valuestr64 hex characters
requires_corestr \None

BuiltInPin remains as an alias of PackPin.

Pack cache

${XDG_CACHE_HOME:-~/.cache}/spec-kitty/open-packs/<commit>/<subtree>. An entry is valid only when its digest matches the pin.

Fetched pack tree

packs/<pack> (gitignored). States: absent → synced (digest OK) → stale (digest mismatch, which is re-synced or refused).