academy.class.view e academy.class.manage_students em PermissionName; role coach recebe-as no SeedDefaultPermissionsAction.GET /academy/classes e GET /academy/classes/{demoClass} com middleware role:coach, permission:academy.class.view, active_actor:coach.App\Livewire\Academy\MyClasses e ClassRoster; dados demo em Kolos\Modules\Academy\Support\DemoTrainingClassCatalog.app-shell: navegação por contexto ($showPlayerShell, $coachContextActive, $showVenueShell); secção «Academia» no topo quando o perfil ativo é treinador; menu visível com papel coach + perfil Treinador (rotas mantêm middleware de permissão).tests/Feature/Academy/AcademyCoachRoutesTest.php; seed test estendido para coach.academy.class.create_as_coach + rotas GET /academy/linked-venues (academy.linked-venues) e GET /academy/venues/{venue}/classes/new (academy.venues.classes.create); VenuePolicy::createClassAsCoach; CreateAcademyClassAction para treinador só como si próprio; item shell «Criar turma».Executar a fase B do plano kolos_modulo-treinador-alunos-mvp-divulgacao.md: demo divulgável com RBAC + multi-atores corretos.
flux:table.columns / flux:table.rows (não flux:columns solto).bootstrap/app.php: alias active_actor → EnsureActiveActorMatches (já existente).vendor/bin/sail artisan test (ou php artisan test)vendor/bin/sail composer pint --testcoach, contexto «Treinador», abrir /academy/classes e uma turma demo.