cast/test
dan-claude-bot 0bd531042e fix(changelog-monotonic): check uniqueness before anything base-side
Uniqueness is a property of HEAD alone — no base ref, no merge base, no base
blob. It sat downstream of all three, so every degradation path returned
success on a tree carrying a duplicate.

The base-blob path was the worst: a branch that introduces CHANGELOG.md hit a
bare `exit 0` on a message that was true about deletion and silent about the
duplicate in front of it. STRICT could not reach it — STRICT guards the two
skip() calls, and that is not one of them.

That inverted the two halves, and it inverted them hardest here. Deletion
needs a diff to see; duplication is the one release-notes.sh actually
mis-renders, and cast has the ABSORBING extractor — no `exit`, so `grab`
re-arms on the second heading and the published body swallows whatever sits
between the copies (box#118). The half with the live extraction bug behind it
had the most ways to silently not run.

Moved, not rewritten. The skip messages now say containment skipped and that
uniqueness already passed. The CI step is no longer pull_request-only, with a
`github.ref_name` fallback because base_ref is empty on a push and a bare
`origin/` under STRICT would redden every push to main.

Found by claude-bot-andresmgsl and codex-bot-andresmgsl reviewing #134. cast
inherited the ordering from box, fixed there in heavy-duty/box#144 (#143).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 20:23:21 +00:00
..
fixtures feat(service): set and diff per-container service hostnames via urls (#72) 2026-07-16 15:14:29 +00:00
apply.test.ts fix(diff): compare non-secret env vars against fresh value, not stale real_value (#78) 2026-07-16 14:53:00 +00:00
backup-cli.test.ts feat: diff and apply a database's backup schedule (#51) 2026-07-14 23:07:54 +00:00
bindings.test.ts fix: smoke resolves its target inside the project it was declared under (#29) 2026-07-13 20:08:35 +00:00
capture-cli.test.ts feat(capture): --generated-only, the bootstrap's missing pass 2 2026-07-14 22:32:07 +00:00
capture.test.ts Merge pull request #58 from claude-hdb/feat/capture-generated-only 2026-07-14 23:49:49 +01:00
cli.test.ts fix: smoke resolves its target inside the project it was declared under (#29) 2026-07-13 20:08:35 +00:00
config.test.ts feat: select the Coolify instance by name instead of editing .coolify.env (#14) 2026-07-13 16:42:45 +00:00
coolify.test.ts fix(draft): read backup schedules and emit backup blocks (#75) 2026-07-16 18:25:34 +00:00
destroy.test.ts feat(destroy): a scoped teardown verb, gated in state (#43) 2026-07-14 22:52:17 +00:00
diff.test.ts fix(diff): compare non-secret env vars against fresh value, not stale real_value (#78) 2026-07-16 14:53:00 +00:00
domain-preflight.test.ts feat(service): set and diff per-container service hostnames via urls (#72) 2026-07-16 15:14:29 +00:00
draft-cli.test.ts feat(draft): capture service hostnames via per-service GET (#83) 2026-07-16 18:30:49 +00:00
draft.test.ts Merge pull request #95 from dan-claude-bot/feat/draft-service-domains 2026-07-18 21:25:37 +01:00
envtemplate.test.ts feat(resolve): derive base-URL env vars from manifest domains via ${domain:...} (#66) 2026-07-15 12:02:33 +00:00
fleet-cli.test.ts fix: a manifest with no ${…} refs applies without a store (#104) 2026-07-19 13:06:34 +00:00
fleet.test.ts feat: --all — every project in an environment, and a report that says so (#26) 2026-07-13 20:23:23 +00:00
github-app-cli.test.ts fix: resolve the GitHub App only when the manifest declares applications (#103) 2026-07-19 12:26:35 +00:00
greenfield-cli.test.ts fix: a manifest with no ${…} refs applies without a store (#104) 2026-07-19 13:06:34 +00:00
install-sh.test.ts feat: release flow — tagged releases with a prebuilt dist asset (#96) 2026-07-18 22:27:55 +00:00
inventory.test.ts feat: read-side coordinates (#17, #18) + cast inventory (#19) 2026-07-13 18:20:53 +00:00
labels-reconcile.sh fix(labels): a missing state label skips the edit, not the whole PR 2026-07-20 18:09:16 +00:00
layout-cli.test.ts refactor: rescope to versioned installations — the release flow moves out 2026-07-18 21:17:59 +00:00
live-lookup.test.ts feat(draft): capture service hostnames via per-service GET (#83) 2026-07-16 18:30:49 +00:00
manifest.test.ts fix(apply): express static-site build settings so a monorepo app is served, not run (#63) 2026-07-14 23:46:14 +00:00
placement-cli.test.ts fix: the first apply against a fresh multi-destination box (#40, #41) 2026-07-14 17:25:29 +00:00
read-side-cli.test.ts feat: --resource, the third name a hand-built box does not share with you 2026-07-13 18:50:06 +00:00
release.test.ts fix(changelog-monotonic): check uniqueness before anything base-side 2026-07-20 20:23:21 +00:00
reserved.test.ts fix(diff): Coolify's own generated vars are not orphans (#87) 2026-07-16 16:56:34 +00:00
resolve.test.ts feat(service): set and diff per-container service hostnames via urls (#72) 2026-07-16 15:14:29 +00:00
secrets.test.ts fix: CAST_AGE_KEY_FILE_<ENV> maps to a name a shell can set (#102) 2026-07-19 13:09:17 +00:00
smoke-cli.test.ts fix: smoke resolves its target inside the project it was declared under (#29) 2026-07-13 20:08:35 +00:00
smoke.test.ts feat: cast — the Coolify executor, extracted from the infra state repo 2026-07-11 12:25:44 +00:00
sweep-cli.test.ts feat: inventory sweeps the instance — a discovery verb that needed you to have discovered 2026-07-13 19:07:17 +00:00
team.test.ts feat: assert the token's team before touching Coolify (fail-closed) 2026-07-12 20:55:04 +00:00
version-cli.test.ts refactor: rescope to versioned installations — the release flow moves out 2026-07-18 21:17:59 +00:00
wire.test.ts fix: resolve the GitHub App only when the manifest declares applications (#103) 2026-07-19 12:26:35 +00:00