From db9313a1e13bbfbfb5dfbe1fe608532b525233cf Mon Sep 17 00:00:00 2001 From: Knacky Date: Fri, 15 May 2026 11:37:16 +0200 Subject: [PATCH] fix(m7): pin executed_at block to the top of the red form MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User feedback: the execution timestamp is the anchor the blue team correlates their logs against, so it should be the *first* thing in the red form, not the last (where it lived alongside the override toggle). Moved the executed-at block above Command/Output/Comment and wrapped it in a tinted red sub-card (border-red/40 bg-red/5) so it reads as the form's headline. The block now shows: - the current `executed_at` (with an `· overridden` hint when applicable), or a "Not yet executed" stub when the test is still pending, - the override toggle (disabled until the test reaches executed/reviewed), - the local datetime-local input + a small "Browser local time — server stores UTC" hint so an operator typing 10:30 in Paris isn't surprised to see 08:30Z in the JSON. Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/src/pages/MissionTestPage.tsx | 88 ++++++++++++++++++-------- 1 file changed, 60 insertions(+), 28 deletions(-) diff --git a/frontend/src/pages/MissionTestPage.tsx b/frontend/src/pages/MissionTestPage.tsx index 595d087..b8d3368 100644 --- a/frontend/src/pages/MissionTestPage.tsx +++ b/frontend/src/pages/MissionTestPage.tsx @@ -246,6 +246,66 @@ function RedZone({ test, missionId, canWriteRed }: RedZoneProps) { {apiErr && {apiErr.message}} + + {/* The execution timestamp is the anchor the blue team correlates their + logs against, so it lives at the very top of the form (cf. user + feedback 2026-05-15). */} +
+
+ + Executed at + + {test.executed_at ? ( + + {test.executed_at} + {test.executed_at_overridden && ( + · overridden + )} + + ) : ( + + Not yet executed — use the "→ Executed" transition above to stamp. + + )} +
+ + {override && ( +
+ setExecutedAtLocal(e.target.value)} + disabled={!canOverride} + className="rounded-md border border-border bg-bg-card px-2 py-1 font-mono text-xs text-text" + data-testid="red-executed-at" + /> + + Browser local time — server stores the UTC equivalent. + +
+ )} +
+ -
- - {override && ( - setExecutedAtLocal(e.target.value)} - disabled={!canOverride} - className="rounded-md border border-border bg-bg-card px-2 py-1 font-mono text-2xs text-text" - data-testid="red-executed-at" - /> - )} - {!override && test.executed_at && ( - - auto-stamped at{' '} - {test.executed_at} - - )} -