feat(dev-tools): one-way, on-demand staging→production ticket publish (#186)
Adds scripts/dev/publish_issue.py + publish-issue.sh: copies a single staging issue's current title/body/labels to the production repo so tickets can be shared on social without pointing people at staging infrastructure.
Deliberately one-way and on-demand, not a tracker sync — this same session found a phantom-success write bug and an issue-numbering collision in staging's own issue tracking (#182/#183/#184); an always-on bidirectional mirror on top of that would just add a second place for that bug class to bite. Idempotent via a stable body marker (`_Mirrored from staging#<n>._`): re-publishing the same staging issue updates the existing production mirror in place instead of duplicating it. Warns (does not block) when the source body contains a staging.musehub.ai URL, so it can be reviewed before going public.
Core logic tested against an in-memory fake HubClient (6 tests, all passing) — no real muse hub calls or network access needed for the test suite. Real CLI wiring (MuseHubCliClient) shells out to `muse hub issue read/list/ create/update/label` and is exercised manually, not in the test suite.
Semantic Changes
50 symbols
Files Changed
+3
1071 in snapshot
0 comments
muse hub commit comment sha256:7ab354833d0210a676c81cc3181984ba8898e914d39b10192bcd7c76f1584efd --body "your comment"
No comments yet. Be the first to start the discussion.