▍ humdrum codex / custard v0.3.0
license AGPL-3.0

JJ support doc

791e1a7469ef20bb132a11b03432114c489b353b
humdrum <me@humdrum.me> · 2026-06-26 16:29

parent 78dd7c3c

1 files changed

- → release-verb-support-jj-soft-bookmark-mode-not-just-git-tag-origin.md +32 −0
@@ -0,0 +1,32 @@
+---
+id: TASK-011
+title: 'release verb: support jj/soft + bookmark mode (not just git tag + origin)'
+status: "\U0001F7E6 Backlog"
+assignee: []
+created_date: '2026-06-25 04:14'
+updated_date: '2026-06-25 04:58'
+labels:
+  - bug
+dependencies: []
+priority: high
+ordinal: 11000
+---
+
+## Description
+
+<!-- SECTION:DESCRIPTION:BEGIN -->
+The 'custard release vX.Y.Z' CLI verb (internal/cli/verbs.go ~L165) hardcodes 'git tag -a <ver>' + 'git push origin <ver>'. 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.
+<!-- SECTION:DESCRIPTION:END -->
+
+## Acceptance Criteria
+<!-- AC:BEGIN -->
+- [ ] #1 release verb works on a jj+soft repo (no origin remote)
+- [ ] #2 bookmark source mode creates+pushes release/vX.Y.Z via jj, not git tag
+- [ ] #3 tag mode still works for git/origin repos (no regression)
+<!-- AC:END -->
+
+## Implementation Notes
+
+<!-- SECTION:NOTES:BEGIN -->
+DevFlow ADR 0002 decided Option C: jj/soft repos release via bookmark mode — push a release/vX.Y.Z bookmark directly (jj git push -b release/vX.Y.Z); the Soft Serve webhook + server (source: bookmark) publish the brew. So the CLI 'release' verb (git tag + git push origin) is NOT the jj path — it serves git/origin/tag repos only. Scope: either (a) teach the verb a jj/bookmark path so 'custard release vX.Y.Z' works uniformly (set+push release/ bookmark via jj when source=bookmark / remote=soft), or (b) just fix origin->soft for tag repos and document the manual jj bookmark-release path. Milestones are LOCAL jj tags (never pushed) — out of scope for release.
+<!-- SECTION:NOTES:END -->