Faits :
A.
A.a. Les époux H.Z._ et F.Z._ ont conclu le 14 mai 2010 avec la société A._ Sàrl un « contrat d'entreprise générale à prix forfaitaire pour la construction d'une villa familiale » sur la parcelle n° yyy du cadastre communal de V._ (VS). Le préambule du contrat avait la teneur suivante:
« Maître de l'ouvrage
M. H.Z._ et Mme F.Z._, qui sont en rapport contractuel direct avec l'entrepreneur général par un contrat d'entreprise au sens des articles 363 ss du Code des Obligations Suisse.
Entrepreneur général
A._ Sàrl, auquel l'exécution des travaux de construction est confiée par le maître de l'ouvrage à l'entrepreneur général.
Direction des travaux
A._ Sàrl, assume la direction des travaux confiés par le maître de l'ouvrage à l'entrepreneur général. »
Selon l'art. 10 du contrat, l'entrepreneur général devait conclure les contrats avec les entrepreneurs et fournisseurs en son nom propre et pour son propre compte. Quant au maître de l'ouvrage, il ne pouvait prétendre à aucun droit de regard concernant les offres et devis avant et après l'adjudication des travaux.
Selon l'art. 11 du contrat, le maître de l'ouvrage avait le droit de contrôler l'avancement des travaux, mais n'était pas autorisé à « donner des ordres aux tiers qui exécutent les travaux de construction et qui sont en rapport contractuel avec l'entrepreneur général ».
Le prix de l'ouvrage a été fixé à 424'000 fr.; l'art. 5 du contrat énonçait une liste de prestations non comprises dans ce prix forfaitaire, soit notamment les plus-values, « les fouilles et les canalisations extérieures », « le terrassement en terrain difficile » et « l'évacuation de terre excédante, leur [sic!] chargement et déchargement ».
Le 18 janvier 2011, l'entrepreneur général et les maîtres de l'ouvrage ont signé un plan de financement établi sur papier à en-tête de l'entrepreneur. Ce document reprenait le prix forfaitaire de 424'000 fr., une plus-value non contestée de 79'500 fr. pour un garage et un agrandissement, ainsi que divers postes supplémentaires, dont un de 28'000 fr. pour les « canalisations extérieures et introduction eau, gaz » et un autre de 40'000 fr. pour l'évacuation de la terre. Le coût total, y compris le terrain chiffré à 160'000 fr., s'élevait à 860'000 francs.
A.b. Le 20 juillet 2011, l'entrepreneur général et la société X._ SA ont conclu un contrat d'entreprise ayant pour objet des travaux de terrassement relatifs à la villa pour un montant forfaitaire de 9'300 francs. Ce montant a été payé par l'entrepreneur.
X._ SA a encore établi deux factures, l'une de 53'646 fr. le 23 septembre 2011 pour des travaux de canalisation, l'autre de 139'600 fr. le 29 novembre 2011 pour l'évacuation des matériaux. Elle les a adressées à l'entrepreneur général. Les maîtres de l'ouvrage en ont eu connaissance à une date indéterminée du printemps 2012.
Ces factures n'ayant pas été payées, X._ SA a requis le 4 avril 2012 l'inscription provisoire d'une hypothèque légale des artisans et des entrepreneurs sur la parcelle des maîtres pour le montant de 203'358 fr. 65. La requête, tardive au regard de l'<ref-law>, a été rejetée par décision du 21 juin 2012. L'hypothèque avait toutefois été annotée à titre provisoire dès le dépôt de la requête.
Les maîtres de l'ouvrage, l'entrepreneur général et la société X._ SA ont par la suite tenté de trouver un accord qui n'a toutefois pas abouti. Dans ce cadre, les maîtres ont versé 40'000 fr. à X._ SA, à une date indéterminée. Selon l'accord discuté, l'entrepreneur général devait également participer au règlement.
Les maîtres n'ont pas eu connaissance du contrat conclu entre l'entrepreneur général et X._ SA. Ils n'ont eu aucun contact avec celle-ci avant qu'elle entreprenne des travaux sur leur bien-fonds.
B.
B.a. Le 29 octobre 2013, X._ SA (ci-après: la demanderesse) a déposé une demande devant le juge du district de Sierre en concluant à ce que H.Z._ et F.Z._ (ci-après: les défendeurs, les maîtres) soient condamnés à lui payer 153'246 fr. plus intérêt à 5% dès le 23 septembre 2011. Les défendeurs ont conclu au rejet de la demande, au motif qu'ils n'avaient pas conclu de contrat avec la demanderesse.
En audience d'instruction du 2 octobre 2014, après l'audition de quatre témoins, les parties ont sollicité un jugement préjudiciel sur la légitimation passive des défendeurs.
B.b. Le témoin B._, employé de la demanderesse, a expliqué avoir constaté que le terrassement serait important et coûteux et avoir signalé ce fait tant à F.Z._ qu'à C._, directeur de l'entrepreneur général, à qui il a demandé si un supplément avait été prévu en plus du forfait. Le directeur lui aurait répondu par la négative.
Entendu en qualité de partie, l'administrateur de la demanderesse D._ a déclaré n'avoir eu aucun contact avec les maîtres de l'ouvrage. Le contrat forfaitaire écrit conclu avec l'entrepreneur général ne portait que sur la creuse, à savoir l'activité d'une excavatrice creusant le sol; les autres travaux exécutés par la demanderesse - terrassement, évacuation de la terre et canalisations - l'avaient été à la requête de l'entrepreneur général. Il avait estimé que celui-ci pouvait agir de la sorte sur la base des expériences faites sur d'autres chantiers. A l'époque des travaux, il n'avait aucune connaissance des rapports contractuels entre les maîtres de l'ouvrage et l'entrepreneur général, sauf que celui-ci « représentait » des clients s'appelant les époux Z._ et qu'il vendait des maisons.
E._, collaborateur de l'entrepreneur général ayant signé pour celui-ci le contrat d'entreprise générale et le plan de financement, a déclaré avoir lu le contrat aux maîtres de l'ouvrage, avoir commenté le plan financier et avoir expliqué quelle était la part forfaitaire et les frais annexes. A la question de savoir s'il était exact que l'entrepreneur s'était engagé à assumer la direction des travaux et à conclure tous les contrats avec les entrepreneurs et fournisseurs en son nom et pour son propre compte dans le cadre de la réalisation de ce bien, il a répondu que tel était bien le cas, qu'il s'agissait de la commande d'une villa « clé en mains » et que le contrat précisait ce qui était exactement compris dans la notion « clé en mains ». Il a encore confirmé que les maîtres ne pouvaient prétendre à aucun droit de regard concernant les offres et devis avant et après l'adjudication des travaux, pour la partie « clé en mains ». Il a finalement précisé que l'évaluation du coût du poste «évacuation de terre» avait été augmentée de 12'000 fr. à 40'000 fr. sur la base d'une estimation grossière qu'il avait faite après s'être rendu sur le terrain; le poste « canalisation » avait aussi été estimé de manière grossière.
C._, directeur de l'entrepreneur général A._ Sàrl, a déclaré que cette société avait travaillé à de nombreuses reprises avec la demanderesse; à chaque fois, cette dernière s'était vu confier une partie des travaux par l'entrepreneur général et une autre partie directement par le maître de l'ouvrage. Le témoin a précisé que « [c]e qui était payé par A._ Sàrl c'était le terrassement, c'est-à-dire la creuse et la remise en place des terres, conformément aux plans mis à l'enquête. L'évacuation des terres était à la charge des propriétaires. Les travaux de X._ SA en lien avec les canalisations étaient également à la charge des propriétaires ». S'agissant des factures à la charge des propriétaires, elles étaient reçues pour contrôle par l'entrepreneur général qui établissait un bon de paiement et le transmettait aux propriétaires pour qu'ils le signent et le fassent suivre à leur banque.
Entendus comme parties, les maîtres de l'ouvrage ont confirmé que pour les prestations hors forfait, l'entrepreneur général leur adressait les factures pour paiement après les avoir contrôlées.
B.c. Statuant le 16 décembre 2014, le juge de district a rejeté l'objection de défaut de légitimation passive. Il a considéré en bref que selon l'accord des parties, l'entrepreneur général avait assumé un double rôle dans la construction de la villa des défendeurs, à savoir celui d'entrepreneur général pour une partie des prestations et celui de directeur des travaux pour le reste. L'entrepreneur devait assumer la direction des travaux hors forfait et, à ce titre, commandait les travaux en question au nom des maîtres, qui avaient ainsi bel et bien conclu un contrat avec la demanderesse, par l'intermédiaire de leur représentant.
B.d. Par jugement du 16 octobre 2015, la Cour civile I du Tribunal cantonal du Valais a admis l'appel formé par les maîtres, rejeté la demande, condamné la demanderesse à payer des frais et dépens d'appel et renvoyé la cause au juge de district pour qu'il statue sur les frais et dépens de première instance.
En substance, les juges cantonaux ont considéré que comme les défendeurs n'avaient eu aucun contact avec la demanderesse, leur volonté de s'engager n'avait pu être manifestée que par l'entrepreneur général, ce qui supposait que celui-ci en ait eu le pouvoir. Ce pouvoir ne pouvait découler que du contrat d'entreprise générale du 14 mai 2010, que les cocontractants interprétaient de façon divergente; il convenait d'examiner comment les défendeurs pouvaient comprendre ce contrat, respectivement s'ils pouvaient en déduire que A._ Sàrl agissait à la fois comme entrepreneur général et comme directeur des travaux. Or, l'interprétation objective du contrat ne permettait pas de considérer que les défendeurs auraient conféré un double rôle à l'entrepreneur général et lui auraient donné, en contradiction avec les termes clairs du contrat, le pouvoir d'agir en leur nom. Les défendeurs n'avaient ainsi pas de lien direct avec la demanderesse et n'avaient donc pas la légitimation passive, ce qui conduisait au rejet de l'action.
C.
La demanderesse a saisi le Tribunal fédéral d'un recours en matière civile dans lequel elle conclut à l'annulation de l'arrêt sur appel, la légitimation passive des maîtres de l'ouvrage étant reconnue et la cause étant renvoyée à l'autorité de première instance pour suite de la procédure.
L'autorité intimée s'est référée aux considérants de son jugement. Les défendeurs ont conclu au rejet du recours.
La demanderesse a déposé une réplique spontanée. Les défendeurs ont dupliqué.

Considérant en droit :
1.
1.1. Déposé en temps utile (<ref-law>) par la demanderesse qui a succombé dans ses conclusions en paiement (<ref-law>) et dirigé contre un arrêt final (<ref-law>) rendu sur recours par le tribunal supérieur d'un canton (<ref-law>) dans une contestation civile pécuniaire dont la valeur litigieuse est supérieure à 30'000 fr. (art. 72 al. 1 et art. 74 al. 1 let. b LTF), le recours en matière civile est recevable sur le principe.
1.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). Il ne peut s'en écarter que si ces faits ont été établis de façon manifestement inexacte - ce qui correspond à la notion d'arbitraire au sens de l'art. 9 Cst. (<ref-ruling> consid. 4.1.2; <ref-ruling> consid. 5.1) - ou en violation du droit au sens de l'<ref-law> (<ref-law>). La correction du vice doit être susceptible d'influer sur le sort de la cause (<ref-law>).
Il y a arbitraire dans l'appréciation des preuves, prohibé par l'art. 9 Cst., lorsque le juge n'a manifestement pas compris le sens et la portée d'un moyen de preuve, lorsqu'il a omis sans raison sérieuse de tenir compte de preuves pertinentes ou a effectué, sur la base des éléments recueillis, une déduction insoutenable (<ref-ruling> consid. 4.2; <ref-ruling> consid. 4.2). Le recourant qui dénonce une constatation des faits arbitraire doit satisfaire au principe d'allégation (<ref-law>), c'est-à-dire soulever expressément ce grief et démontrer par une argumentation précise, si possible documentée, que la cour cantonale a retenu ou omis un fait pertinent d'une manière insoutenable (<ref-ruling> consid. 4.1.2 p. 62; <ref-ruling> consid. 2.2 p. 246).
Pour chaque constatation de fait incriminée, le recourant doit démontrer comment les preuves administrées auraient dû, selon lui, être correctement appréciées et en quoi leur appréciation par l'autorité cantonale est insoutenable (arrêts 5A_621/2013 du 20 novembre 2014 consid. 2.1; 5A_129/2007 du 28 juin 2007 consid. 1.4). Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 2.3 p. 266).
1.3. Le Tribunal fédéral applique le droit d'office (<ref-law>). Cela ne signifie pas qu'il doive examiner, à l'instar d'un juge de première instance, toutes les questions juridiques qui pourraient se poser. Eu égard à l'obligation de motiver imposée par l'<ref-law>, il ne traite que les questions qui sont soulevées devant lui par les parties, à moins que la violation ne soit manifeste (<ref-ruling> consid. 2; <ref-ruling> consid. 2.2).
2.
La demanderesse reproche aux juges cantonaux d'avoir établi les faits de manière manifestement inexacte à deux égards.
2.1. En premier lieu, elle leur fait grief d'avoir retenu que son administrateur D._ ne s'était pas préoccupé de savoir qui était son partenaire contractuel pour les travaux non visés par le contrat forfaitaire; selon la demanderesse, « une constatation exacte des faits tels qu'ils ressortent du dossier », en particulier des témoignages du directeur et du collaborateur de l'entrepreneur général, aurait permis de retenir qu'elle avait été mandatée par l'entrepreneur général agissant au nom et pour le compte des maîtres de l'ouvrage.
Le litige porte sur le point de savoir si l'entrepreneur général a conclu un contrat avec la demanderesse en tant que représentant des maîtres de l'ouvrage au sens des <ref-law>. La résolution de cette question nécessite d'examiner d'une part si l'entrepreneur général a agi comme représentant des maîtres, d'autre part s'il disposait des pouvoirs nécessaires à cet effet (cf. consid. 3.2 infra). Or, le moyen résumé ci-dessus est sans incidence pour l'issue de la cause (cf. consid. 3.3 infra).
2.2. En second lieu, les juges cantonaux auraient versé dans l'arbitraire en omettant de retenir que pour toutes les prestations hors forfait, l'entrepreneur général envoyait les factures aux maîtres qui s'en acquittaient, reconnaissant ainsi que l'entrepreneur général avait le pouvoir de conclure des contrats en leur nom et pour leur compte.
Ce grief, qui a trait aux pouvoirs de représentation prétendument conférés à l'entrepreneur général, est également dépourvu de pertinence, pour les motifs qui seront exposés ci-dessous (cf. consid. 3.4 infra).
3.
3.1. Selon l'<ref-law>, chaque partie doit, si la loi ne prescrit le contraire, prouver les faits qu'elle allègue pour en déduire son droit. Cette disposition répartit le fardeau de la preuve pour toutes les prétentions fondées sur le droit fédéral et détermine, sur cette base, quelle partie doit assumer les conséquences de l'échec de la preuve; il en résulte que la partie demanderesse doit prouver les faits qui fondent sa prétention, tandis que la partie adverse doit prouver les faits qui entraînent l'extinction ou la perte du droit (<ref-ruling> consid. 2.2 et les arrêts cités). Ainsi, lorsqu'une partie émet contre sa partie adverse des prétentions fondées sur un contrat, elle doit établir les faits permettant de retenir qu'elle est liée contractuellement à la partie adverse, le contrat en question pouvant avoir été conclu directement entre les parties ou par l'entremise d'un représentant autorisé.
3.2.
3.2.1. Aux termes de l'<ref-law>, les droits et obligations dérivant d'un contrat fait au nom d'une autre personne par un représentant autorisé passent au représenté. Il s'ensuit que le représentant n'est pas lié par l'acte accompli. Les effets de la représentation ne naissent que si le représentant a manifesté, expressément ou tacitement (cf. <ref-law>), sa volonté d'agir au nom d'autrui et s'il dispose du pouvoir de représentation, c'est-à-dire s'il est habilité à faire naître des droits et des obligations directement en faveur et à la charge du représenté (<ref-ruling> consid. 1b p. 64 et les arrêts cités; arrêt 4A_313/2010 du 3 septembre 2010 consid. 3.4.1).
Ainsi, deux conditions doivent être réunies pour que l'acte accompli par le représentant lie le représenté selon l'art. 32 al. 1 et 2 CO: il faut, d'une part, que le représentant agisse au nom d'autrui (cf. consid. 3.2.2 infra) et, d'autre part, qu'il dispose des pouvoirs nécessaires à cet effet (cf. consid. 3.2.3 infra) (CHRISTINE CHAPPUIS, in Commentaire romand, 2 e éd. 2012, n. 10 ad <ref-law>).
3.2.2. S'agissant de la première condition, l'application du principe de la confiance permettra, lorsque le représentant ne s'est pas fait connaître comme tel, de déterminer s'il agissait au nom d'autrui ou en son propre nom, autrement dit si le tiers devait inférer des circonstances l'existence d'un rapport de représentation (<ref-ruling> consid. 2b/aa p. 200; arrêt précité 4A_313/2010 consid. 3.4.1; CHAPPUIS, op. cit., n. 12 et 14 ad <ref-law>).
3.2.3. Lorsqu'un représentant agit au nom d'autrui, les droits et obligations dérivant de l'acte accompli passent directement au représenté dans trois cas de figure: premièrement, si le représentant disposait des pouvoirs suffisants à cet effet en vertu du droit public, de la loi ou de la volonté du représenté; deuxièmement, si le représenté ratifie l'acte accompli en son nom (<ref-law>); troisièmement, si le tiers de bonne foi pouvait se fier aux pouvoirs qui lui avaient été communiqués, même tacitement, par le représenté (art. 33 al. 3, 34 al. 3 et 37 CO; <ref-ruling> consid. 3.1 p. 517).
3.2.4. En l'espèce, la demanderesse ne prétend pas avoir conclu avec les maîtres de l'ouvrage un contrat reposant sur un échange de volontés réciproques et concordantes (cf. <ref-law>) qui aurait eu lieu directement entre eux. Il convient donc d'examiner si les conditions d'une représentation directe des maîtres par l'entrepreneur général dans la conclusion d'un contrat avec la demanderesse sont réunies, étant rappelé que le fardeau de la preuve des faits permettant de retenir la conclusion d'un tel contrat incombe à la demanderesse, qui entend en déduire une créance contre les maîtres (cf. consid. 3.1 supra).
3.3.
3.3.1. Il sied tout d'abord de déterminer si l'entrepreneur général a agi au nom des maîtres pour conclure avec la demanderesse un contrat d'entreprise portant sur des travaux autres que ceux prévus par le contrat du 20 juillet 2011 liant l'entrepreneur général et la demanderesse pour un montant forfaitaire de 9'300 fr. (cf. lettre A.b in limine supra).
3.3.2. Les juges cantonaux ont retenu à cet égard que sans vérification d'éventuels pouvoirs de représentation, la demanderesse n'avait traité pour l'ensemble des travaux qu'avec un seul interlocuteur, soit l'entrepreneur général, à qui elle avait d'ailleurs directement facturé ses prestations; il n'était ainsi pas établi qu'elle aurait eu la volonté de nouer des rapports contractuels avec les maîtres, ce qui en soi conduisait déjà au rejet de l'action.
3.3.3. Quand bien même on retiendrait - suivant en cela la demanderesse (cf. consid. 2.1 supra) - que l'entrepreneur général s'est présenté comme le représentant des maîtres pour commander d'autres travaux hors forfait, respectivement que la demanderesse avait la volonté de contracter avec les maîtres, ceux-ci ne pourraient être liés que si leur prétendu représentant disposait des pouvoirs nécessaires à cet effet (cf. consid. 3.2.3 supra). Or, tel n'est pas le cas, pour les motifs exposés ci-dessous.
3.4.
3.4.1. La cour cantonale a considéré qu'un éventuel pouvoir de représentation ne pouvait découler que du contrat d'entreprise générale conclu le 14 mai 2010 entre les maîtres et la société d'entreprise générale. Faute d'avoir pu établir une volonté concordante des parties à cet égard, il fallait interpréter le contrat selon le principe de la confiance.
3.4.2. La demanderesse admet qu'il n'était pas possible de dégager sur ce point une réelle et commune intention des parties (cf. <ref-law>), de sorte qu'il était légitime de recourir à l'interprétation du contrat selon le principe de la confiance. Elle reproche toutefois aux juges cantonaux d'avoir procédé à une interprétation objective erronée en ne reconnaissant pas que les maîtres avaient conféré à l'entrepreneur général un double rôle, soit d'une part celui d'entrepreneur général pour les travaux inclus dans le prix forfaitaire, et d'autre part un rôle de direction s'agissant des travaux hors forfait, pour lesquels ils auraient donné à l'entrepreneur le pouvoir d'agir en leur nom.
3.4.3. L'interprétation objective, ou interprétation selon le principe de la confiance, consiste à rechercher comment la manifestation de volonté émise par un cocontractant pouvait de bonne foi être comprise par son destinataire, en fonction de l'ensemble des circonstances (<ref-ruling> consid. 3.2 p. 413; <ref-ruling> consid. 3.3 p. 681). Ce principe permet d'imputer à l'émetteur d'une manifestation de volonté le sens objectif de sa déclaration ou de son comportement, même s'il ne correspond pas à sa volonté intime (<ref-ruling> consid. 3.2). Sont déterminantes les circonstances ayant précédé ou accompagné la manifestation de volonté, à l'exclusion des événements postérieurs (<ref-ruling> consid. 2.2.1).
3.4.4. Pour rappel, le contrat d'entreprise générale du 14 mai 2010 prévoyait dans son préambule que le maître de l'ouvrage, soit les défendeurs, était en rapport contractuel direct avec l'entrepreneur général A._ Sàrl, auquel l'exécution des travaux de construction était confiée. Il précisait que l'entrepreneur général assumait la direction des travaux confiés par le maître de l'ouvrage. Selon l'art. 10 du contrat, l'entrepreneur général devait conclure les contrats avec les entrepreneurs et fournisseurs en son nom propre et pour son propre compte; quant au maître de l'ouvrage, il ne pouvait prétendre à aucun droit de regard concernant les offres et devis avant et après l'adjudication des travaux. Le maître de l'ouvrage avait le droit de contrôler l'avancement des travaux, mais n'était pas autorisé à « donner des ordres aux tiers qui exécutent les travaux de construction et qui sont en rapport contractuel avec l'entrepreneur général » (art. 11 du contrat). Le prix de l'ouvrage était fixé à 424'000 fr.; l'art. 5 du contrat précisait que dans ce prix forfaitaire n'étaient pas comprises diverses prestations, dont les plus-values, « les fouilles et les canalisations extérieures », « le terrassement en terrain difficile » ainsi que « l'évacuation de terre excédante, leur [sic!] chargement et déchargement ».
A l'instar de la cour cantonale, force est de constater que l'exécution des travaux a été confiée sans restriction à l'entrepreneur général. La précision selon laquelle il assume la direction des travaux à lui confiés - et non pas à des tiers - par le maître de l'ouvrage doit être comprise, s'agissant de personnes non rompues aux affaires de la construction, en ce sens que l'entrepreneur doit fournir toutes les prestations nécessaires à la construction d'une villa familiale « clé en mains », et donc en particulier diriger et coordonner tous travaux qu'il n'accomplit pas lui-même mais confie à des sous-traitants en exécution de son obligation de réaliser un certain ouvrage; le contrat précise clairement que l'entrepreneur général conclut les contrats en son nom et pour son propre compte (art. 10.1), que le maître de l'ouvrage n'a aucun droit de regard sur les offres et devis (art. 10.2) et qu'il n'a pas le droit de donner des ordres aux tiers qui exécutent des travaux de construction et sont en rapport contractuel avec l'entrepreneur général (art. 11.2).
Il ne résulte aucunement du texte de ce contrat que les maîtres de l'ouvrage auraient chargé l'entrepreneur général de contracter en leur nom avec des tiers pour l'exécution de certains travaux. Au contraire, l'entrepreneur s'étant chargé de l'intégralité de la construction, les maîtres devaient inférer qu'en sus de la conclusion des contrats utiles, l'entrepreneur général allait lui-même diriger tous les travaux, sans opérer de distinction entre ceux qui étaient compris dans le prix forfaitaire et ceux qui ne l'étaient pas. Rien ne peut être déduit à cet égard de l'art. 5 du contrat, lequel dispose que le prix de l'ouvrage est fixé à 424'000 fr., TVA comprise, en précisant que ce prix ne comprend pas les éventuelles plus-values ni certaines prestations dûment énumérées (notamment fouilles et canalisations extérieures, terrassement en terrain difficile et évacuation de terre). En effet, contrairement à ce que soutient la demanderesse, le fait que certaines des prestations nécessaires à la réalisation complète de l'ouvrage n'étaient pas comprises dans le prix forfaitaire ne signifie pas que pour celles-ci, l'entrepreneur général n'agissait plus comme entrepreneur général mais comme mandataire; une telle conclusion ne découle pas non plus des déclarations du témoin E._. Au contraire, en l'absence de disposition dans le contrat portant sur le paiement des travaux hors forfait, les maîtres pouvaient partir de l'idée que l'entrepreneur général était leur seul cocontractant pour l'exécution de l'ensemble des travaux, y compris ceux hors forfait.
La demanderesse ne peut enfin rien tirer du fait qu'en cours de travaux, l'entrepreneur contrôlait les factures des travaux hors forfait puis les transmettait aux maîtres de l'ouvrage (cf. consid. 2.2 supra). En effet, il n'est pas établi que ce procédé ait été convenu initialement entre les signataires du contrat d'entreprise générale, ce qu'admet du reste la demanderesse. Or, les événements postérieurs à la conclusion du contrat ne peuvent être pris en compte dans le cadre d'une interprétation objective (cf. consid. 3.4.3 supra). Au demeurant, il est parfaitement possible qu'une telle manière de faire ait découlé d'un accord (tacite) entre l'entrepreneur général et les maîtres, en vertu duquel ces derniers - après contrôle de l'entrepreneur général - payaient les travaux hors forfait directement aux entreprises concernées, de manière à éteindre à la fois la dette de l'entrepreneur général envers ces sous-traitants et leur propre dette envers l'entrepreneur général, parant ainsi au risque d'un double paiement. Dans ce contexte, l'argument de la demanderesse selon lequel les maîtres ont payé les factures des autres postes hors forfait n'est pas pertinent, puisque ces paiements peuvent parfaitement avoir été opérés en vertu du même procédé.
Enfin, il n'est pas établi que les maîtres auraient eu connaissance des pratiques convenues entre la demanderesse et l'entrepreneur général sur des chantiers antérieurs à la construction, dont ils auraient pu tirer quelque enseignement pour la compréhension du contrat. Partant, l'on ne saurait se fonder sur ces expériences passées pour en déduire que les maîtres auraient autorisé l'entrepreneur général à agir en leur nom pour certains travaux.
3.4.5. En définitive, force est de constater que l'interprétation objective du contrat d'entreprise générale ne permet nullement de retenir que les défendeurs auraient mandaté l'entrepreneur général pour qu'il passe en leur nom des contrats avec des sociétés tierces portant sur la réalisation de travaux non compris dans le prix forfaitaire. Comme les conditions d'une représentation directe par laquelle la demanderesse aurait acquis des droits et obligations directement envers les défendeurs ne sont pas remplies, c'est à bon droit que la cour cantonale a nié la légitimation passive des défendeurs et qu'elle a en conséquence rejeté l'action de la demanderesse.
4.
Il résulte de ce qui précède que le recours doit être rejeté.
Vu l'issue du recours, les frais de la présente procédure seront mis à la charge de la demanderesse (<ref-law>), qui versera en outre aux défendeurs, créanciers solidaires, une indemnité de 6'500 fr. à titre de dépens (art. 68 al. 1 et 2 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 5'500 fr., sont mis à la charge de la demanderesse.
3.
La demanderesse versera aux défendeurs, créanciers solidaires, une indemnité de 6'500 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires des parties et à la Cour civile I du Tribunal cantonal du canton du Valais.
Lausanne, le 9 mars 2016
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Monti