Skip to content

skills(pm-dispatch / os-dev): user-visible UX defects are class (a) — a reproducible, fix-site-named UX defect is filed like a functional one; pure taste and redesign are not #21992

Description

@objectstack-fleet

Filing gate: ③ maintainer-directed task — the maintainer ruled in the dispatching session and asked for this card with the drafted rule (verbatim below).
Reader: triage first-touch → domain:skills lane; one PR touching three files under .claude/ (Tier S: lands by the owning seat on a contract-tier review of record). AGENTS.md Prime Directive #10 already says "reproducible defect" without excluding UX, so it needs no edit.
Dedup (semantic search, open + closed, objectstack): "filing gate admission classes exclude user-visible UX defects, layout and usability issues treated as observations not filed" → 38 hits, none about UX in the admission classes; "立卡门 三类 体验 用户体验 缺陷 不立卡" → 4 hits, all closed (#20088 set the reachability rule this card builds on, not a duplicate).

The ruling

仪表盘空白 很严重啊,这种为什么不处理,是不是标准有问题?这么明显的用户体验相关的为题

同意,立卡起草这条规则

What went wrong — the case

A browser dogfood sweep of the console found that every dashboard spends ~120px of the first screen on a row holding only "Refresh All". The seat classified it as a "design suggestion" and did not file it, reading class (a) "reproducible defect" through a prior triage closure's framing ("nothing is broken, no assertion is wrong") that treats works-but-visibly-wrong UX as an observation. The same sweep had filed toast-overlap and truncation findings, so the line was drawn inconsistently. Re-examined on the maintainer's challenge, seven UX findings met every other gate condition (stable repro on a public surface, named fix site, expected-vs-actual statable without taste) and were filed: objectstack-ai/objectui#11694 – objectstack-ai/objectui#11699 and #21960.

The gap: the class definitions (references/triage-duties.md, .claude/agents/os-dev.md) and the gate's ① (references/filing-gate.md) never say whether a user-visible UX defect is class (a), so a seat can read it narrowly. The fix states it, and fences it so the gate's purpose (fewer, real cards) is kept: taste, redesign and cost-free perf observations stay out.

Draft — exact lines (each ≤120 bytes, no issue numbers, so check:pm-skill-ratchet width and check:pm-skill-id-lint pass)

.claude/skills/pm-dispatch/references/filing-gate.md — after the ① line ("① 有具名落点或复现的产品缺陷…"):

- ① 含用户可见的体验缺陷,与功能缺陷同等:界面上稳定复现、落点具名、预期不凭审美。
- 体验缺陷形态:截断、遮挡、白占首屏、文案与页面矛盾、删除不点名对象、显示原始值。
- ⛔ 不是卡:纯审美偏好、重设计与新功能提议(走 ②)、无用户可见代价的性能观察。

…and after the existing 判例 line (the reach:-case line):

- 判例:仪表盘刷新按钮独占一行、首屏白占约 120px ⇒ 立;「配色换个好看的」⇒ 不立。

.claude/skills/pm-dispatch/references/triage-duties.md — after the line "(a) 的分界是不完整 vs 错误,不是文档 vs 代码:…":

- (a) 不分功能与体验:能用但用户可见地错(截断、遮挡、白占首屏、误导文案)也是 (a)。

.claude/agents/os-dev.md — §3 (scope), after the "(a) 可复现缺陷(复现或失败探针具名);(b) …" line:

   - (a) 含用户可见的体验缺陷(截断、遮挡、白占首屏、误导文案),须复现且落点具名。

Constraints for the PR

  • Net +6 lines (filing-gate +4, triage-duties +1, os-dev +1) against shrink-only per-file ceilings. Pay with deletions in the same files if the lane finds redundant lines; otherwise the ceiling raise cites this card's ruling in the PR body, as the ratchet requires. ⛔ No re-wrap to win lines.
  • Wording is the lane's to tighten; the three properties are the ruling's and stay: (1) UX defects count as (a) on equal footing with functional ones; (2) each still needs a stable public-surface repro, a named fix site and an expected-vs-actual that does not rest on taste; (3) taste, redesign / new-feature proposals (→ ②) and perf observations with no user-visible cost are not cards.
  • reach: for a UX defect is the public surface where it was seen (the existing "公开入口 … 界面" arm) — no new reach type.

Filed by session session_01WEARdKfDHDT7rTuEhLyT1k.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions