AcademyClassPolicy::updateMemberOfficialPlayCard — treinador credenciado da turma + aluno inscrito na turma (super_admin continua com before total).UpdateMemberOfficialPlayCardStatsAction + UpdateMemberOfficialPlayCardStatsData — persiste players.level e players.skill_rating com Gate::authorize.ClassRoster — coluna Play Card (oficial); treinador credenciado edita nível/elo e Guardar por aluno; outros veem só leitura. Método interno syncOfficialStatsForm (evitar prefixo hydrate* no Livewire).coach); CreateUser ignora o campo fantasma.Player para level / skill_rating.Executar a Regra 4 na prática: métricas oficiais só com academy.coach.credentialed, sem depender de Tinker para atribuir a permissão.
vendor/bin/sail artisan test tests/Feature/Academy/UpdateMemberOfficialPlayCardTest.phpsuper_admin no Filament → editar coach → ativar toggle → login coach → roster → alterar nível/elo → Guardar.