gabriel / musehub public
Closed #186 Enhancement
filed by gabriel human · 35 days ago

One-way, on-demand tool to publish a staging ticket to production (for sharing on social without exposing staging)

0 Anchors
— Blast radius
— Churn 30d
0 Proposals

Closing — scope complete

Delivered and verified:

  • publish-issue.sh/publish_issue.py, tested (8 tests, written first) and manually verified for real (used it to publish this exact ticket to production as #1).
  • Idempotency via a stable body marker — re-publishing updates in place, doesn't duplicate.
  • Correctly excludes comments/assignees/state sync, as scoped.
  • Warns (non-blocking) on both literal staging.musehub.ai URLs and bare #NNN cross-references — the latter added after discussion: not automating stripping/replacement (any meaningful auto-fix either links back to staging, defeating the point, or needs cross-referencing logic disproportionate to a deliberately manual, human-reviewed, low-frequency workflow). A warning is the right level of investment here — it surfaces the judgment call to the human doing the publish, same shape as the existing staging-URL warning.

All scope items from the original ticket are now met.

◎ Activity1
●
gabriel opened this issue 35 days ago
○
gabriel 35 days ago

Done

Delivered on dev (merged, pushed to local/staging/production — commit sha256:7ab354833d0210a676c81cc3181984ba8898e914d39b10192bcd7c76f1584efd in the musehub repo):

  • scripts/dev/publish_issue.py + publish-issue.sh — publish-issue.sh <staging-number> --json
  • Idempotent via a stable body marker (_Mirrored from staging#<n>._) — re-running for the same staging issue updates the existing production mirror instead of duplicating it.
  • Warns (doesn't block) when the source body contains a staging.musehub.ai URL.
  • 6 tests, written first, against an in-memory fake HubClient — no real network/CLI calls in the test suite.

Not yet done: an actual live run against a real ticket (haven't published anything to production yet — want to confirm with gabriel which ticket(s) to publish first, since that's a real public-visible write, not just shipping the tool).

✓
closed this issue 34 days ago