{
  "schema_version": "1.0",
  "baseline": "ECM-demo-mode-v1",
  "phase": "Batch 16 · demo-mode activation",
  "updated_at": "2026-04-20",
  "owner": "session_a",
  "purpose_en": "Client-side user roster used by ECM Demo Mode (when ECM_AUTH_BASE is 'none' or unreachable). Mirrors the 7 file-backed users from the document-access-service with the same visibility rules. Each login sets a localStorage profile; notes are also localStorage-backed. NO password, NO server, NO session token — fully honest fallback so users can exercise the ECM UI without a live backend.",
  "purpose_th": "คลัง user ฝั่ง browser ที่ ECM Demo Mode ใช้ (ตอน ECM_AUTH_BASE = 'none' หรือ backend ไม่ตอบ) · โครงเดียวกับ 7 users ของ backend จริง · ทั้ง login และ notes ใช้ localStorage · ไม่มี password / session · ให้ผู้ใช้ทดลองหน้า ECM ได้โดยไม่ต้อง backend",
  "honest_note": "Demo Mode is NOT authentication. Any visitor who guesses one of these emails gets a profile. It exists so the UI is usable for demos and design review. Replace with a real backend before anything non-demo.",
  "team_secret_optional": "",
  "team_secret_rejects_when_nonempty": false,
  "session_ttl_days": 7,
  "users": [
    {
      "profile_id": "u-admin-001",
      "email": "admin@pattayatogether.example",
      "display_name": "Admin · full access",
      "role": "admin",
      "status": "enabled",
      "scopes": ["read:*", "write:notes", "read:all-groups", "read:all-documents"],
      "visible_groups": ["start", "knowledge", "planning", "runtime", "operations", "journey"],
      "hidden_groups": [],
      "visible_documents": null,
      "hidden_documents": [],
      "restricted_documents": [],
      "preferred_language": "both",
      "stakeholder_tags": ["executive", "product", "governance"],
      "policy_note_en": "Full access in demo · identical scope to backend admin role.",
      "policy_note_th": "สิทธิ์เต็มในโหมด demo · scope เหมือน admin บน backend"
    },
    {
      "profile_id": "u-governance-001",
      "email": "governance@pattayatogether.example",
      "display_name": "Governance · planning + knowledge",
      "role": "governance",
      "status": "enabled",
      "scopes": ["read:planning", "read:knowledge", "read:operations"],
      "visible_groups": ["start", "knowledge", "planning", "operations"],
      "hidden_groups": ["runtime", "journey"],
      "visible_documents": null,
      "hidden_documents": [],
      "restricted_documents": [],
      "preferred_language": "en",
      "stakeholder_tags": ["governance", "compliance"],
      "policy_note_en": "Governance lens · Runtime + Journey hidden.",
      "policy_note_th": "มุม governance · ซ่อนกลุ่ม Runtime + Journey"
    },
    {
      "profile_id": "u-sales-001",
      "email": "sales@pattayatogether.example",
      "display_name": "Sales · exec + knowledge",
      "role": "viewer",
      "status": "enabled",
      "scopes": ["read:knowledge", "read:journey"],
      "visible_groups": ["start", "knowledge", "journey"],
      "hidden_groups": ["planning", "runtime", "operations"],
      "visible_documents": null,
      "hidden_documents": [],
      "restricted_documents": [],
      "preferred_language": "both",
      "stakeholder_tags": ["sales", "executive"],
      "policy_note_en": "Sales lens · knowledge + journey only.",
      "policy_note_th": "มุม sales · ดู knowledge + journey"
    },
    {
      "profile_id": "u-developer-001",
      "email": "dev@pattayatogether.example",
      "display_name": "Developer · engineering",
      "role": "editor",
      "status": "enabled",
      "scopes": ["read:planning", "read:runtime", "read:operations"],
      "visible_groups": ["start", "planning", "runtime", "operations"],
      "hidden_groups": ["journey"],
      "visible_documents": null,
      "hidden_documents": [],
      "restricted_documents": [],
      "preferred_language": "en",
      "stakeholder_tags": ["developer", "product"],
      "policy_note_en": "Developer lens · Journey hidden.",
      "policy_note_th": "มุม dev · ซ่อน Journey"
    },
    {
      "profile_id": "u-external-001",
      "email": "partner@external.example",
      "display_name": "External partner · preview",
      "role": "external",
      "status": "enabled",
      "scopes": ["read:preview"],
      "visible_groups": ["start", "knowledge"],
      "hidden_groups": ["planning", "runtime", "operations", "journey"],
      "visible_documents": null,
      "hidden_documents": [],
      "restricted_documents": [
        "/planning/feature-flags-batch-4-readiness.html",
        "/runtime/feature-flags-service/phase-2b-plus.html"
      ],
      "preferred_language": "en",
      "stakeholder_tags": ["external"],
      "policy_note_en": "Preview access · two docs restricted to demo banner behaviour.",
      "policy_note_th": "สิทธิ์ preview · 2 เอกสาร restricted เพื่อโชว์ banner"
    },
    {
      "profile_id": "u-team-disabled-001",
      "email": "disabled@pattayatogether.example",
      "display_name": "Disabled · lockout demo",
      "role": "viewer",
      "status": "disabled",
      "scopes": [],
      "visible_groups": ["start"],
      "hidden_groups": [],
      "visible_documents": null,
      "hidden_documents": [],
      "restricted_documents": [],
      "preferred_language": "both",
      "stakeholder_tags": [],
      "policy_note_en": "Demonstrates disabled-user lockout · login rejected before session set.",
      "policy_note_th": "ผู้ใช้ถูก disable · login จะถูกปฏิเสธ"
    },
    {
      "profile_id": "u-external-002",
      "email": "denied@external.example",
      "display_name": "External · explicit denial",
      "role": "external",
      "status": "enabled",
      "scopes": ["read:preview"],
      "visible_groups": ["start"],
      "hidden_groups": ["knowledge", "planning", "runtime", "operations", "journey"],
      "visible_documents": null,
      "hidden_documents": [
        "/planning/document-access-model.html",
        "/planning/document-share-export.html"
      ],
      "restricted_documents": [],
      "preferred_language": "en",
      "stakeholder_tags": ["external"],
      "policy_note_en": "Demonstrates explicit deny (not-granted) + hidden-group for most groups.",
      "policy_note_th": "ตัวอย่าง explicit deny + hidden-group เกือบทุกกลุ่ม"
    }
  ],
  "anonymous_profile": {
    "profile_id": "u-anonymous",
    "email": "(anonymous)",
    "display_name": "Anonymous",
    "role": "viewer",
    "status": "enabled",
    "scopes": ["read:public"],
    "visible_groups": ["start", "knowledge", "journey"],
    "hidden_groups": ["planning", "runtime", "operations"],
    "visible_documents": null,
    "hidden_documents": [],
    "restricted_documents": [],
    "preferred_language": "both",
    "stakeholder_tags": [],
    "policy_note_en": "Default fallback when no session · Planning/Runtime/Operations hidden."
  }
}
