本書は mirror-me/C v2 の設計意図、 採用 token、 IA 採用根拠、 Manager role 固有 adaptation、 そして v1 (overwrite 前) からの差分を記録します。 Justine の feedback 「app-me/C はけっこういい、 これを基礎として role を跨って同じ感じの雰囲気にする、 いま role によってデザインが違いすぎる」 に応答した cross-role design 統一版です。 将来の実装エンジニアおよび admin / ceo / reviewer surface 担当 mockupper が、 「mirror-me v2 はなぜこの形か」 を辿れることを保証します。
Manager は本来「部下を監視するための dashboard」 を欲しがる感情がある (典型 SaaS パターン)。 しかし Kashi canon (permanent-ui-principles §2) は surveillance を明示的に禁止。 よって Manager Mirror の主タスクは 「自分が主催した meeting において、 自分自身の facilitation パターンを reflection する」 こと一点に絞った。 app-me/C の Member 「My Reflection Inbox」 と完全に並列の構造 (「自分のために自分を見る」) で揃えた。
canon: permanent-ui-principles §2 (Product Truth Rules) + DATA_VISIBILITY_MATRIX §4 (Manager row) + WORKER_FACING_TRUST_CANON §2.3 (Manager notice)
Justine feedback 「role によってデザインが違いすぎる」 への直接応答。 上位構造の論理は同じ (inbox-first / time-grouped / mixed-kind cards / footer trust-block 3 段) で、 Manager 固有データのみ差し替えた。 これにより 5 つの role surface 間で 「同じ Kashi の中にいる」 感覚を保てる。
feedback: 2026-05-28 Justine 口頭、 baseline: /tmp/kashi-mockup-share/03_mockups/app-me/C/index.html (49KB)
行 1 = brand (wordmark + org + role-badge + user-pill)、 行 2 = nav (3 items)。 色 / フォント / 間隔 / role-badge mono 表示 / avatar 円形 28px のすべてが app-me/C と一致。 違いは: role-badge 表示 = "ROLE: MANAGER"、 avatar 1 文字 = "田"、 user-pill 名前 = "田中部長 (営業部)"。
baseline: app-me/C lines 771-793
Member の場合 nav-2 は 「Reflection」 (自分自身の振り返り = Member 個人ページ)。 Manager の場合 nav-2 は 「Mirror」 (自分が主催する meeting 群の facilitation mirror) と命名。 Inbox / Settings は同一。 意図的に nav-2 のみ role 固有の名称を許容することで、 全 role surface に共通の「inbox = 主タスクの集約点」 + 「nav-2 = role 固有の探索面」 のパターンを作る。
canon: WORKER_FACING_TRUST_CANON §5.2 (manager-subject-of-dispute) + DATA_VISIBILITY_MATRIX §4 row 2
app-me/C と同じ value。 「inbox は読み物」 という mental model を強化するため。 sidebar (chart / filter tree) は意図的に削った: Manager に「dashboard」 感覚を与えると surveillance UI に傾く。
canon: permanent-ui-principles §7 (Progressive Disclosure) — fold-above は inbox 4-5 件 only
すべて app-me/C の :root から verbatim でコピー。 1 token も変更・追加なし (cross-role consistency を保証)。
| Token | Value | 使った場所 |
|---|---|---|
--color-kashi-evergreen | #2F6B4A | nav-active border、 avatar bg、 unread dot、 kind-pattern dot、 grade-stable dot |
--color-kashi-evergreen-deep | #1F4A33 | h1 / h3 / page-title、 role-badge bg、 filter-chip.active bg、 btn-primary bg、 boundary 帯 border-left |
--cream | #F5F0E6 | btn-secondary hover、 scope-chip bg、 inbox-item-boundary bg |
--emerald-50 | #ECFDF5 | privacy-banner (scope-banner) bg、 grade-stable chip bg (近似) |
--ink / --ink-soft / --ink-muted / --ink-faint | #0A0E1A / #2A3A1E / #4A5160 / #6B7280 | 本文 / 副題 / org-name / kicker、 mono code label |
--kashi-grade-stable / -emerging / -weak / -insufficient / -blocked | #2F6B4A / #2563EB / #D97706 / #9CA3AF / #6B7280 | 5 種類の grade-pill の dot のみ (色単独で意味を持たせない) |
type scale: --text-h1 40 / --text-h2 32 / --text-body 16 / --text-body-sm 14 / --text-caption 12 | 同上 | page-title (h1) / inbox-item-title (body 500) / inbox-item-desc (body-sm) / kicker (caption) |
色単独で意味を持たせない (a11y / color-blind safe)。 すべての pill が 色 dot + テキストラベル + 大文字 mono の三重 encoding。 本 mockup で実際に出現する grade は 4 種類:
| Grade | 使用箇所 | 意図 |
|---|---|---|
STABLE / E2 | 明日の 1on1 prep (member_001) + Positive observation (turn-taking gini) | 「観測の信頼度が高い」 を示すだけ。 評価ではないことを boundary 帯で必ず添える。 |
EMERGING / E1 | 開発チーム週次 Reflection prompt (interruption_self_emit_rise) | 「観測中、 まだ判断はしない」 段階。 Manager に「気にし始める」 だけを促す。 |
INSUFFICIENT | 1on1 prep (closed) member_004 (window 内 2 回のみ) | 母集団不足を 明示。 「データがあれば判定する」 という幻想を避ける。 |
BLOCKED | 2026-05-02 部長会議 (low_diarization_confidence) | 話者別溜まりが低いため abstain (押さえる)。 安全側に倒した no-signal。 |
意図的に出していない grade: WEAK (弱い兆候)、 HIGH_CONFIDENCE_STABLE (高信頼安定)。 Manager surface での過剰断定を避けるため、 v2 では STABLE 止まり (E2) としている。
Member 版 (app-me/C) は 「過去 24 時間に誰が自分のデータを見たか」 を見せる。 Manager 版は逆方向で 「あなたが何を見られないか」 を最初に提示。 これは canon DATA_VISIBILITY_MATRIX §4 Manager row + permanent-ui-principles §2.1 anti-surveillance の表面化。
canon: DATA_VISIBILITY_MATRIX §4 + WORKER_FACING_TRUST_CANON §2.3
| chip | Member (app-me/C) | Manager (本案) |
|---|---|---|
| 1 | All | All |
| 2 | Unread | Unread |
| 3 | Patterns | Reflection (自己振り返り prompt) |
| 4 | 1on1 prep | 1on1 prep |
| 5 | Notices | Notices |
| 6 | Disputes | Approvals (forwarded dispute) |
Member は自分への dispute を 「filed」 として見る (自分が起こした)。 Manager は dispute を 「forwarded to reviewer」 として通知のみ受ける (自分は判定権限なし)。 意味が違うため chip 名を変更。
1on1 prep — 直近・過去の 1on1 準備 prompt (member_001、 member_004)reflection — 自分が主催する週次会議の facilitation pattern (開発チーム週次 Interruption EMERGING + turn-taking STABLE 昇格)positive — PositiveCount (turn-taking 均等度 改善) — kind は reflection に内包、 dot 色のみ --kashi-grade-stableapproval — member からの dispute (forwarded、 reviewer に脳後確認依頼済)notice — 月次レポート ready / BLOCKED 通知scope-chipscope: self-hosted または scope: anonymized を併記
Member 版にはなかった 4 番目 chip。 Manager surface 固有の安全装置。 「この observation の根拠データは何の scope に閉じているか」 を 1 行で示し、 surveillance 連想を阻止。 cream 背景 + ink-soft 文字で目立たせすぎない。
canon: DATA_VISIBILITY_MATRIX §4 Manager row (self-hosted-only visibility) + NO_PAYLOAD_ARCHITECTURE §1 (anonymized rollups)
Justine 指示の verbatim 文言を inbox-item-boundary 帯 (cream bg + evergreen-deep border-left 3px) に <strong> 強調。
続けて 「別の構造点 (interruption / topic-shift) は独立して観測されます」 を補足。
これにより 「Kashi は良いことを言いたいだけの SaaS ではない」 という設計姿勢を 1 item で証明。
canon: WORKER_FACING_TRUST_CANON PositiveCount disavow pattern + permanent-ui-principles §6 (no-signal rule)
v1 (overwrite 前) には以下があったが、 cross-role consistency のため削除:
結果: v1 が複数の Variant B 要素を持ち込んだ 「複合 C」 だったのに対し、 v2 は app-me/C の純粋 inbox 構造に揃った 「scaffold C」。 Justine feedback 「同じ感じの雰囲気」 を満たすため、 機能の引き算側に倒した。
2026-05-28 LESSONS 適用、 完成時 self-audit:
| パターン | 件数 | 判定 |
|---|---|---|
¥[0-9]+,[0-9]{3} (金額) | 0 | OK |
90 ?日 / 60 ?日 / 180 ?日 | 0 | OK (window はすべて 30 日に統一) |
Google Meet / Microsoft Teams / Webex | 0 | OK |
SSO / SAML / OIDC / SCIM | 0 | OK |
SOC 2 / ISO 27001 / ISO 27018 / ISO 30414 | 0 | OK |
専任 CS / ソリューションエンジニア / カスタマーサクセス | 0 | OK |
離職率.{0,3}[0-9]+ ?% / ROI ¥ / 生産性.{0,3}[0-9]+ ?% | 0 | OK |
完全削除証明 | 0 | OK |
このモックアップを実装する際の注意:
kashi/src/app/app/me/manager/page.tsx (現状) → cross-role inbox 統合 (Round 2 確定後に新 IA に rewrite)PortalHeader (nav 3 items 化、 role-aware label のみ差し替え)、 InboxList / InboxItemCard (新規)InboxItemCard with props { kind, grade, reason_code, scope, window, title, desc, boundary, disclaimer, actions[] }FilterChipBar with role-aware chip setScopeBanner (Member 版 PrivacyBanner と並列の component)messages/ja.json に追加し、 i18n verbatim test を pin (LESSONS 2026-05-15 §i18n-verbatim-pinning)