feat(skill): mappa-presentation v1.1.0 — серверные display/card verbatim (UTC+Z), fallback до деплоя

- серверные display/card (task:1176/1177, репо 0bf09c6): копировать verbatim, row → display / карточка → card
- даты в серверных полях — UTC+Z (row YYYY-MM-DD / card YYYY-MM-DDTHH:MMZ), без конвертации
- шаблоны — fallback-канон до деплоя v0.20.0 (проверять /health)
- принцип 5 (даты) переписан: серверные поля verbatim / fallback — локальное время
This commit is contained in:
2026-08-25 23:34:14 +03:00
parent 3ea7e53f99
commit c6dfa9349d

View File

@@ -1,20 +1,21 @@
---
name: mappa-presentation
author: ours
version: 1.0.0
version: 1.1.0
description: >
The single standard for showing Mappa entities to the human — the answer
format an agent renders for the eyes: list rows (board/inbox/search) and
full cards (one entity). Two modes, fixed field order, dates shown in the
session's local time (converted from mappa UTC), never raw JSON. Mandatory
full cards (one entity). Two modes, fixed field order; server display/card
fields copied verbatim (row → display, card → card, dates UTC+Z);
fallback templates render local time; never raw JSON. Mandatory
for ANY display of mappa entities
(task/inbox/wiki/brainstorm/session/handoff/repo/commit/operator/project) —
«покажи таски», «что на досках», «письма», «какой статус», «дай
подробнее», any answer carrying entities. Old name — trigger-synonym:
mappa-display. Complements (does not replace) convention #1028 (ref
format), task status emoji (mappa-task-work), search cards (wiki:2661);
server-side display/card fields (when they arrive) are copied verbatim —
the templates here are the canon fallback.
server-side display/card fields (task:1176/1177) copied verbatim —
the templates here are the canon fallback until the deploy (v0.20.0).
---
# mappa-presentation
@@ -37,23 +38,27 @@ about presentation.
3. **The card carries ALL fields** of the template. Do not trim "to avoid
clutter": the human re-asks precisely because a field was dropped.
4. **Field order is fixed** (per template), do not rearrange.
5. **Dates — stored UTC, shown local and human.** Mappa stores and returns
UTC (canonical machine truth — the server never converts). The agent renders
in the session's local timezone (the operator's machine):
row `YYYY-MM-DD`, card `YYYY-MM-DD HH:MM` — no seconds, no milliseconds,
no `T`/`Z`. Zone marker (e.g. `(+03:00)`) — optional, at most once per
card; omit in a single-machine setup. If the local timezone is unknown to
the agent — show UTC with an explicit `Z`. Never invent a zone.
5. **Dates — server fields: UTC+Z verbatim; fallback: local and human.**
Mappa stores and returns UTC (canonical machine truth — the server never
converts). If the entity carries server `display`/`card` — copy the date
verbatim as rendered (UTC + `Z`: row `YYYY-MM-DD`, card `YYYY-MM-DDTHH:MMZ`),
no conversion. Fallback (agent-rendered): show local (operator's machine):
row `YYYY-MM-DD`, card `YYYY-MM-DD HH:MM` — no seconds, no `T`/`Z`; if the
local timezone is unknown to the agent — show UTC with an explicit `Z`.
Never invent a zone.
6. **Refs always full-name** (`task:N`, `inbox:N`, `wiki:N`, … — convention
#1028), never `#<internal id>`, never short aliases.
## Server-side display/card fields (priority)
When mappa starts returning ready-made `display` (row) and `card` (markdown
block) fields on entities — **copy them verbatim** in the matching mode
(row/card). The templates below are the canon fallback and for composing
lists until server fields exist. If a server field exists but looks broken —
render per template and mention the discrepancy.
Серверные `display` (row) и `card` (markdown) поля реализованы (task:1176/1177,
репо 0bf09c6; каналы: /entities/:id, /wiki/:project/:slug, /wiki/:slug,
/search/full, /task/:id, /task/list) — **копировать verbatim** в
соответствующем режиме (row → display, карточка → card). Даты в серверных
полях — UTC с суффиксом Z (row YYYY-MM-DD / card YYYY-MM-DDTHH:MMZ), не
конвертировать. Шаблоны ниже — fallback-канон ДО деплоя (деплой: v0.20.0,
проверять /health) и для составления списков. Если серверное поле есть, но
выглядит битым — рендерить по шаблону и упомянуть расхождение.
---