Measured in the browser on 2026-09-02 (main 5c5a8a0, Console from @objectstack/cli 17.2.0), desktop and 390px:
The oldest_touch metric tile (src/dashboards/duty-health.dashboard.ts) reads duly_stagnation.oldest_last_update_at — a min over a timestamp — and the metric widget prints the value verbatim: 2026-07-04T07:00:00.000Z, overflowing the tile on both viewports. The widget has no date formatting (measures carry only a numeral format pattern, see on_time_rate's comment), so this cannot be fixed by formatting.
For the leadership report the tile was hidden locally in a screenshot-only patch (and not_moving_30d widened into its slot). That patch is not on main; this card is the real fix.
What "done" is
Replace the measure with a number, keeping the tile's purpose (the single worst case on the screen, ranking nobody):
- Preferred: days since the oldest touch, as an integer — e.g. a derived measure if the platform's derived ops can express
today − min(last_update_at) in days, else a dataset column over an existing stored field that the analytics door can aggregate. Do not add a stored days_stalled (AGENTS.md rule 5: a maintained flag); if no aggregate can yield days, fall back to the second option.
- Fallback: drop the tile and widen
not_moving_30d to w: 6 (exactly the screenshot patch), and keep the worst case reachable through the stalled list, which is sorted by last touch already.
Either way: title/description in src/dashboards/duty-health.dashboard.ts updated to match, zh-CN keys in src/translations/zh-CN.ts, test/dashboard.test.ts's area pin (no tile may out-area not_moving_14d) still green, four gates green, and a screenshot of the tile at 1440 and 390 in the PR.
Related, not this card: rates print as 0.95 — #101 owns the percent formatting; the tile sub-labels and legend English is #106.
Measured in the browser on 2026-09-02 (main 5c5a8a0, Console from
@objectstack/cli17.2.0), desktop and 390px:The
oldest_touchmetric tile (src/dashboards/duty-health.dashboard.ts) readsduly_stagnation.oldest_last_update_at— aminover a timestamp — and the metric widget prints the value verbatim:2026-07-04T07:00:00.000Z, overflowing the tile on both viewports. The widget has no date formatting (measures carry only a numeralformatpattern, seeon_time_rate's comment), so this cannot be fixed by formatting.For the leadership report the tile was hidden locally in a screenshot-only patch (and
not_moving_30dwidened into its slot). That patch is not onmain; this card is the real fix.What "done" is
Replace the measure with a number, keeping the tile's purpose (the single worst case on the screen, ranking nobody):
today − min(last_update_at)in days, else a dataset column over an existing stored field that the analytics door can aggregate. Do not add a storeddays_stalled(AGENTS.md rule 5: a maintained flag); if no aggregate can yield days, fall back to the second option.not_moving_30dtow: 6(exactly the screenshot patch), and keep the worst case reachable through thestalledlist, which is sorted by last touch already.Either way: title/description in
src/dashboards/duty-health.dashboard.tsupdated to match, zh-CN keys insrc/translations/zh-CN.ts,test/dashboard.test.ts's area pin (no tile may out-areanot_moving_14d) still green, four gates green, and a screenshot of the tile at 1440 and 390 in the PR.Related, not this card: rates print as
0.95— #101 owns the percent formatting; the tile sub-labels and legend English is #106.