[
 {
  "chave": "CS-24",
  "territorio": "backend",
  "titulo": "O modulo `chat` da sala aberta: a mensagem guardada com AUTOR, AULA e INSTANTE; escreve quem esta na aula (medico ACEITE ou o especialista responsavel), o PENDENTE nao le nem escreve, fecha com o horario da aula, e o chat NAO pontua nem valida bloco (regras 42, 46, 48, 56, 57)",
  "escopo_paths": [
   "backend/prisma/",
   "backend/src/modules/chat/",
   "backend/src/app.module.ts",
   "backend/test/chat.e2e-spec.ts"
  ],
  "aceites": [
   "cd backend && npx jest test/chat.e2e-spec.ts --runInBand --ci",
   "cd backend && npx jest test/chat.e2e-spec.ts --runInBand --ci -t 'sala aberta: a mensagem de um medico e legivel por todos os medicos aceites da aula e pelo especialista responsavel, com o nome do autor'",
   "cd backend && npx jest test/chat.e2e-spec.ts --runInBand --ci -t 'o medico PENDENTE le 0 mensagens e a escrita dele e recusada'",
   "cd backend && npx jest test/chat.e2e-spec.ts --runInBand --ci -t '3 mensagens no chat dao 0 minutos validados e 0 pontos ao autor'",
   "cd backend && npx jest test/chat.e2e-spec.ts --runInBand --ci -t 'terminada a aula 0 mensagens novas sao aceites, e as escritas continuam legiveis'",
   "cd backend && npx jest test/chat.e2e-spec.ts --runInBand --ci -t 'trocar o especialista responsavel da aula nao apaga nenhuma mensagem'",
   "cd backend && npx jest test/participacao.e2e-spec.ts --runInBand --ci",
   "cd backend && npx jest test/questao.e2e-spec.ts --runInBand --ci",
   "test -d backend/src/modules/chat && ! grep -rniE 'quest|pontu|minuto|participacao|maissaude' backend/src/modules/chat/"
  ],
  "depende_de": [
   "CS-7",
   "CS-11"
  ]
 },
 {
  "chave": "CS-25",
  "territorio": "backend",
  "titulo": "O canal em tempo real da sala: uma sala POR AULA no mesmo backend, a mensagem chega a todos os presentes sem recarregar, o PENDENTE e recusado na ligacao, e fora do horario da aula a sala nao aceita mensagem — e NAO e um segundo canal de questoes (regras 46, 56)",
  "escopo_paths": [
   "backend/src/modules/chat-tempo-real/",
   "backend/src/app.module.ts",
   "backend/package.json",
   "backend/package-lock.json",
   "backend/test/chat-tempo-real.e2e-spec.ts"
  ],
  "aceites": [
   "cd backend && npx jest test/chat-tempo-real.e2e-spec.ts --runInBand --ci",
   "cd backend && npx jest test/chat-tempo-real.e2e-spec.ts --runInBand --ci -t 'dois medicos aceites e o especialista ligados a sala: cada um dos 3 recebe as MESMAS 2 mensagens, com o nome de quem escreveu'",
   "cd backend && npx jest test/chat-tempo-real.e2e-spec.ts --runInBand --ci -t 'o medico PENDENTE e recusado na ligacao a sala e recebe 0 mensagens'",
   "cd backend && npx jest test/chat-tempo-real.e2e-spec.ts --runInBand --ci -t 'a sala de uma aula nao recebe a mensagem de outra aula'",
   "cd backend && npx jest test/chat-tempo-real.e2e-spec.ts --runInBand --ci -t 'terminada a aula a sala recusa mensagem nova'",
   "cd backend && npx jest test/chat.e2e-spec.ts --runInBand --ci",
   "test -d backend/src/modules/chat-tempo-real && ! grep -rniE 'quest|pontu|minuto|participacao|maissaude' backend/src/modules/chat-tempo-real/"
  ],
  "depende_de": [
   "CS-24"
  ]
 },
 {
  "chave": "CS-26",
  "territorio": "frontend",
  "titulo": "O painel de chat DENTRO da sala do ao vivo: le e escreve com o nome de quem escreveu, os SEIS ESTADOS, Material 3 com Inter em portugues do Brasil, sem snackbar e sem brilho de esqueleto; o painel falha sozinho sem derrubar a aula; e a GRAVACAO da mesma aula NAO tem painel de chat (regras 46, 79 a 86)",
  "escopo_paths": [
   "frontend/src/componentes/chat/",
   "frontend/src/app/ao-vivo/",
   "frontend/e2e/chat.spec.ts"
  ],
  "aceites": [
   "cd frontend && npx playwright test e2e/chat.spec.ts --reporter=line",
   "cd frontend && npx playwright test e2e/chat.spec.ts --reporter=line -g 'sala aberta: o medico B le a mensagem do medico A com o NOME de A, e os 3 contam as mesmas 2 mensagens'",
   "cd frontend && npx playwright test e2e/chat.spec.ts --reporter=line -g 'o PENDENTE ve 0 mensagens: cadeado, o papel que ve aquilo, e nenhum campo de escrita'",
   "cd frontend && npx playwright test e2e/chat.spec.ts --reporter=line -g 'os seis estados do painel de chat: vazio, a carregar, erro, sem permissao, sucesso e parcial'",
   "cd frontend && npx playwright test e2e/chat.spec.ts --reporter=line -g 'parcial: a mensagem por enviar fica a espera COM PALAVRA enquanto as ja enviadas aparecem na lista'",
   "cd frontend && npx playwright test e2e/chat.spec.ts --reporter=line -g 'so o painel do chat falha: o resto da aula continua legivel e a contar os minutos'",
   "cd frontend && npx playwright test e2e/chat.spec.ts --reporter=line -g 'terminada a aula nao ha onde escrever, e a gravacao da mesma aula nao tem painel de chat'",
   "cd frontend && npx playwright test e2e/chat.spec.ts --reporter=line -g 'com prefers-reduced-motion reduce as duracoes sao zero e o estado final e o mesmo pixel'",
   "cd frontend && npx playwright test e2e/ao-vivo.spec.ts --reporter=line",
   "cd frontend && npx playwright test e2e/gravacao.spec.ts --reporter=line",
   "test -d frontend/src/componentes/chat && ! grep -rniE '#[0-9a-fA-F]{3,8}|shimmer|animate-pulse|snackbar|toast' frontend/src/componentes/chat/"
  ],
  "depende_de": [
   "CS-20",
   "CS-22",
   "CS-25"
  ]
 }
]