Files
mopac-pmo/inbox-work/TASK-20260829-1400-redmine-cli.md
T

2.3 KiB

TASK: mopac-redmine-go — Redmine Go CLI, TOP PRIORITY (Redmine 506)

Context

Charles's strict self-hosting directive: "working out of redmine with a go cli." The PMO (and every vertical) must STOP using python glue for Redmine updates — this CLI replaces it the moment it lands. Jumped to the top of the queue 2026-08-29 by direct order.

Scope

  1. New repo ukrrs/mopac-redmine-go (create via Gitea API if absent — tea token pattern; clone to ~/projects/meta/MOPAC/redmine-go). AGPLv3 LICENSE first commit.
  2. Stdlib-only Go library + CLI binary mred:
    • Config: URL + API key via env (MRED_URL, MRED_KEY) or --config env-file (0600 discipline), key never logged.
    • Commands (JSON-friendly flags, machine-parseable -o json):
      • issue list -p MOPAC [--status open|all] [--version Beta] [--limit N]
      • issue show ID [--with journals]
      • issue create -p PROJ -s SUBJECT [--desc FILE|-] [--tracker feature] [--priority immediate] [--category X] [--version V] [--due DATE] [--parent ID] [--est HOURS] [--note TEXT]
      • issue update ID [--status done] [--priority ...] [--category ...] [--version ...] [--due ...] [--done-ratio 100] [--desc FILE|-] [--note TEXT] (note = journal)
      • version list|create -p PROJ -n NAME [--due DATE] [--status open|closed]
      • category list|create -p PROJ -n NAME
      • relation create FROM TO --type blocks|relates
    • Exit codes: 0 ok, 1 usage/config, 2 API error (status in stderr, one line, parseable).
  3. Library surface usable by the harness later (redmine.Client) — no copy-paste temptation.
  4. Fake-Redmine test suite (table-driven; the harness repo's fake server pattern is a good reference): create/update/note/relations/versions round-trips, key-redaction, error mapping.
  5. Docs standard: README with verified quickstart (against the fake server), command reference table, status table.

Build discipline

ALL DEV IN DOCKER (digest-pinned builder; dev.sh/Makefile family pattern). NEVER broad pkill. Atomic conventional commits, push origin main. TDD red/green.

Deliverable

REPORT-20260829-1400-redmine-cli.md in ~/.coordinate/inbox-pmo/: command surface, test results, and EXACT PMO replacement mappings (the python operations I use today -> mred one-liners) so the PMO switches on acceptance with zero downtime.