โ– humdrum codex / custard v0.3.0
license AGPL-3.0

โ† issues

TASK-011 release verb: support jj/soft + bookmark mode (not just git tag + origin)

๐ŸŸฆ Backlog bug priority: high

created 2026-06-25 04:14 ยท updated 2026-06-29 22:00

Description

The 'custard release vX.Y.Z' CLI verb (internal/cli/verbs.go ~L165) hardcodes 'git tag -a ' + 'git push origin '. This breaks jj/Soft-Serve repos: (1) pushes to 'origin' but jj+Soft repos name the remote 'soft' (no origin) so the push fails; (2) always uses a git tag even when .custard.yaml brew.source=bookmark โ€” the CLI ignores source mode (it's only honored server-side in internal/release). Surfaced dogfooding cm (DevFlow POC). Should: detect remote name (or read from config), and in bookmark mode set+push 'release/vX.Y.Z' via jj (jj git push -b) instead of a git tag. jj 0.42 also has 'jj tag set' if tag mode is wanted jj-native.

Acceptance Criteria

Implementation Notes

UPDATE 2026-06-29 (env standardization on origin): The remote-name half of this task is resolved at the environment level, not in code. Per DevFlow ADR 0003, every jj/git repo now standardizes its remote name to 'origin' (the old 'soft'-named-remote convention is retired). custard's release verb already hardcodes 'git push origin' (internal/cli/verbs.go, internal/release/release.go), so it now works uniformly across git and jj+Soft-Serve repos โ€” no remote-name detection needed. AC #1 (release verb works on a jj+soft repo) is satisfied: the repo's remote is 'origin', matching custard's hardcoded push. Note: 'soft' as the SSH host alias / Soft Serve product / clone URL (soft:) is unchanged โ€” only the remote name moved soft->origin. REMAINING WORK: only the bookmark-mode half (AC #2) โ€” the CLI 'release' verb always emits a git tag and ignores '.custard.yaml' brew.source=bookmark on the client side (it's honored only server-side in internal/release). To fully support pure-jj bookmark releases, the verb should set+push 'release/vX.Y.Z' via jj when source=bookmark, per DevFlow ADR 0002 Option C.