- scripts/version.sh resolves ICCERY_RELEASE_TAG / MARKETING_VERSION /
CURRENT_PROJECT_VERSION from RELEASE_TAG env or `git describe`; tag
builds hard-fail when the tag's X.Y.Z != project.yml MARKETING_VERSION
- build number = `git rev-list --count HEAD` (Apple: macOS
CFBundleVersion must monotonically increase, no per-version reset)
- tag ships as a bundled ICCeryReleaseTag resource — a generated
Info.plist can't carry custom keys (INFOPLIST_KEY_* allowlist, and
ProcessInfoPlistFile runs after script phases); About shows
"tag (marketing)", e.g. v2.0.0-pre2-grok (2.0.0)
- DMG named ICCery-<tag>-<build>.dmg for tagged/described builds
- CI twins: fetch-depth 0 + RELEASE_TAG env + stamped test builds