diff --git a/inbox-work/TASK-20260829-0830-mred-version-update.md b/inbox-work/TASK-20260829-0830-mred-version-update.md new file mode 100644 index 0000000..4064249 --- /dev/null +++ b/inbox-work/TASK-20260829-0830-mred-version-update.md @@ -0,0 +1,19 @@ +# TASK: mred `version update` — finish 524 (loop flash turn round-limited, delivered nothing) + +## Context +Redmine 524. The loop's study-class turn burned 12 rounds reading and shipped zero; repo untouched at main@788f6fe. You are the finish turn. Repo: `~/projects/meta/MOPAC/redmine-go` (ukrrs/mopac-redmine-go, branch main, clean). + +## Scope (small, surgical) +1. `mred version update ID [--status open|closed] [--due YYYY-MM-DD] [--name NAME]`: + - API: PUT /versions/{id}.json — note: Redmine returns **204 empty body** on success (handle it; do not parse). + - Only provided flags are sent; at least one required (usage error otherwise). + - Same output/exit-code conventions as existing subcommands (`updated version #N` line, `-o json` emits the re-fetched version). +2. Table-driven tests against the existing fake (it already serves versions): status flip, due change, combined flags, 204 handling, error mapping. Red first, then implement. +3. README command reference row + status table line. +4. Verify read-only against production after push: `mred version list -p MOPAC` must still show all 5 versions (no mutation of prod). + +## Build discipline +ALL DEV IN DOCKER via ./dev.sh (digest-pinned builder). NEVER broad pkill. TDD. Atomic conventional commits, push origin main. Exit 0 only if tests green + pushed. + +## Deliverable +`REPORT-20260829-0830-mred-version-update.md` in `~/.coordinate/inbox-pmo/`: diff summary, test counts, prod read verification. No journal/status writes to Redmine — PMO handles 524's ticket (it is currently Resolved; PMO re-verifies on your REPORT). diff --git a/log.md b/log.md index 8d21c83..895934c 100644 --- a/log.md +++ b/log.md @@ -97,3 +97,4 @@ 2026-08-29T07:16:11-05:00 | PMO | 506 closed Done via mred (accepted); wake-q14 fuse killed (fired-purpose served); teardown ETA ~09:30 CST given q15 pace (B4 green 07:15, container+REPORT remaining) then q16 2026-08-29T07:22:01-05:00 | PMO | Charles: 0800 = SOFT deadline; work to prod ALL DAY (fast/quality/cost/parallel), wiring tonight 1900. 0758 hard-stop killed; 0745 cutover checkpoint + 0900 chain check armed; heartbeat 1h continues. q16 stays serial-behind-q15 (same repo); 522 inherited by loop if q16 slips 2026-08-29T07:50:23-05:00 | PMO | CUTOVER COMPLETE: q15 verified (REPORT 07:32, tests green, live proof) -> 521 Resolved. Scope->Beta(35) + max_rounds 12 applied, container restarted healthy, 5 Beta tasks in scope, first loop-driven Beta turn (524) RUNNING on flash. 497 parked In Progress (1900 wiring). 523: criteria 1/2/4 PASS, 3=teardown pending. q15's worker had requeued 523 itself to proof the container (benign mystery solved). Remaining crush work: teardown after 522/495 land or fail-verify +2026-08-29T08:03:45-05:00 | PMO | hb 08:02: 524 loop turn = NON-DELIVERY (flash round_limit x12, 0 commits, false Resolved) -> finish turn q17 dispatched on 5.2 (parallel repo, no conflict); evidence noted on 492 (dispatcher = real fix); 522 turning on flash, verdict at ~08:05, if bust: stop loop -> crush finish -> restart (serial, 10s outage); 495 next in scope diff --git a/logs/heartbeat.log b/logs/heartbeat.log index bc3763c..d5b209c 100644 --- a/logs/heartbeat.log +++ b/logs/heartbeat.log @@ -16,3 +16,4 @@ 2026-08-29T05:02:15-05:00 wake sent (pending=4 active=1) 2026-08-29T06:02:15-05:00 wake sent (pending=4 active=1) 2026-08-29T07:02:15-05:00 wake sent (pending=5 active=1) +2026-08-29T08:02:15-05:00 wake sent (pending=5 active=0) diff --git a/logs/q-mred-version.log b/logs/q-mred-version.log new file mode 100644 index 0000000..e69de29