Citation: 4A_583/2023 E. B

B.a. Le 11 septembre 2019, les locataires ont saisi l'autorité de conciliation. Face à l'échec de cette procédure, ils ont porté leur action devant le Tribunal des baux du canton de Vaud en concluant, selon le dernier état de leur demande, à ce que le loyer mensuel initial soit fixé à 1'400 fr. nets et celui du box individuel, à 135 fr., la bailleresse étant condamnée à leur restituer immédiatement le trop-perçu. Ils ont également requis que la garantie de loyer soit réduite à 4'350 fr. et que le différentiel, par rapport au montant versé, leur soit rétrocédé. Le tribunal a ordonné à la bailleresse de produire les pièces utiles au calcul de rendement voulu par les locataires, ce qu'elle n'a fait que partiellement, arguant notamment qu'il s'agissait d'un immeuble "ancien" pour lequel elle ne disposait plus d'archives complètes, en raison de l'écoulement du temps et d'un incendie. Elle a néanmoins produit un document intitulé "[a]mortissement 2006", ainsi que l'expertise dressée en 2011 par I.________ (let. A.d supra). Le tribunal s'est adressé à l'ACI pour obtenir l'expertise fixant la valeur de l'ensemble des immeubles transférés en 2014, requête à laquelle l'administration fiscale a opposé une fin de non-recevoir, au nom du secret fiscal. Invitée à produire ce même document, la bailleresse a fait savoir qu'elle ne l'avait pas retrouvé, puis a nié qu'il y ait eu une expertise globale de tous les immeubles, reconnaissant tout au plus des expertises de certains d'entre eux; quant au crédit hypothécaire, il s'agissait selon elle d'un crédit groupé, impossible à affecter à tel ou tel immeuble. Par jugement du 13 juillet 2022, le Tribunal des baux a fixé à 2'300 fr. nets (au lieu de 2'700 fr., let. A.f supra) dès le 1 er septembre 2019 le loyer mensuel dû par les deux locataires pour l'appartement litigieux, respectivement a condamné la bailleresse à leur restituer le montant de 5'200 fr. correspondant au loyer perçu en trop entre le 1 er septembre 2019 et le 30 septembre 2020, et a ramené à 6'900 fr. le montant de la garantie de loyer; fixant le loyer de l'appartement à 2'233 fr. dès le 1 er octobre 2020, il a condamné la bailleresse à restituer aux locataires 467 fr. par mois touchés en trop du 1 er octobre 2020 jusqu'au jour de l'entrée en force du jugement; finalement, le tribunal a arrêté à 252 fr. 40 à partir du 1er octobre 2020 le loyer dû par les locataires pour le box individuel (cf. supra let. A.f in fine), condamnant la bailleresse à restituer aux locataires 7 fr. 60 par mois perçus en trop pour la période courant du 1 er octobre 2020 jusqu'au jour de l'entrée en force du jugement. B.b. Par arrêt du 10 octobre 2023, la Cour d'appel civile du Tribunal cantonal vaudois a rejeté l'appel de la bailleresse et confirmé ce premier jugement. Ses motifs seront évoqués dans les considérants en droit qui suivront.