[{"data":1,"prerenderedAt":803},["ShallowReactive",2],{"games":3,"level:tech-dilemmas:first-sprint":107,"levels:tech-dilemmas":800},[4,17,30,41,52,63,74,85,96],{"id":5,"order":6,"domain":7,"glyph":8,"requiresSandbox":9,"title":10,"tagline":13,"levelCount":6,"status":16},"legacy-nightmare",1,"refactoring","{ }",true,{"fr":11,"en":12},"Le cauchemar du Legacy","Legacy Nightmare",{"fr":14,"en":15},"Corrige le bug caché dans un code spaghetti, sans rien casser.","Fix the bug buried in spaghetti code without breaking anything.","available",{"id":18,"order":19,"domain":20,"glyph":20,"requiresSandbox":21,"title":22,"tagline":25,"levelCount":28,"status":29},"git-untangle",2,"git",false,{"fr":23,"en":24},"Démêlage d'historique","History Untangling",{"fr":26,"en":27},"Transforme un graphe de commits chaotique en historique propre.","Turn a chaotic commit graph into a clean history.",0,"coming-soon",{"id":31,"order":32,"domain":33,"glyph":34,"requiresSandbox":21,"title":35,"tagline":38,"levelCount":28,"status":29},"prod-pressure",3,"devops","RPS",{"fr":36,"en":37},"Pression en Prod","Prod Pressure",{"fr":39,"en":40},"Fais tenir la prod pendant le Black Friday, sans exploser le budget.","Keep production alive through Black Friday, on budget.",{"id":42,"order":43,"domain":44,"glyph":45,"requiresSandbox":9,"title":46,"tagline":49,"levelCount":28,"status":29},"the-heist",4,"security","0day",{"fr":47,"en":48},"Le braquage","The Heist",{"fr":50,"en":51},"Lis l'API, trouve la faille logique, exploite-la.","Read the API, find the logic flaw, exploit it.",{"id":53,"order":54,"domain":55,"glyph":56,"requiresSandbox":21,"title":57,"tagline":60,"levelCount":6,"status":16},"tech-dilemmas",5,"product","A|B",{"fr":58,"en":59},"Dilemmes","Tech Dilemmas",{"fr":61,"en":62},"Survis à un sprint d'arbitrages impossibles.","Survive a sprint of impossible trade-offs.",{"id":64,"order":65,"domain":66,"glyph":67,"requiresSandbox":21,"title":68,"tagline":71,"levelCount":28,"status":29},"cap-workshop",6,"distributed","CAP",{"fr":69,"en":70},"L'Atelier du Théorème CAP","CAP Workshop",{"fr":72,"en":73},"Choisis les bons compromis avant que le réseau ne se coupe.","Pick the right trade-offs before the network splits.",{"id":75,"order":76,"domain":77,"glyph":78,"requiresSandbox":9,"title":79,"tagline":82,"levelCount":28,"status":29},"feature-creeps",7,"patterns","\u003CT>",{"fr":80,"en":81},"L'attaque des Feature Creeps","Attack of the Feature Creeps",{"fr":83,"en":84},"Absorbe des règles métier sans fin sans réécrire ton cœur.","Absorb endless business rules without rewriting your core.",{"id":86,"order":87,"domain":88,"glyph":89,"requiresSandbox":21,"title":90,"tagline":93,"levelCount":32,"status":16},"poisoned-review",8,"review","PR",{"fr":91,"en":92},"La Code Review Empoisonnée","Poisoned Code Review",{"fr":94,"en":95},"Une PR parfaite en apparence cache une bombe. Trouve la ligne.","A flawless-looking PR hides a time bomb. Find the line.",{"id":97,"order":98,"domain":99,"glyph":100,"requiresSandbox":21,"hidden":9,"title":101,"tagline":104,"levelCount":6,"status":16},"engine-demo",99,"demo","?",{"fr":102,"en":103},"Démo du moteur de niveaux","Level engine demo",{"fr":105,"en":106},"Niveau factice qui exerce le moteur de bout en bout : indices, validation, score, débrief.","Dummy level exercising the engine end to end: hints, validation, score, debrief.",{"id":108,"gameId":53,"order":6,"title":109,"difficulty":19,"estimatedMinutes":112,"context":113,"objective":116,"tools":119,"initialState":122,"hints":790,"scoring":797},"first-sprint",{"fr":110,"en":111},"Le premier sprint","The first sprint",10,{"fr":114,"en":115},"Tu viens de prendre la tête technique d'une scale-up qui édite un logiciel de facturation pour PME : 30 personnes, 8 devs, et une clôture mensuelle que les clients ne pardonnent pas.\n\nPendant deux semaines, tout le monde va venir te demander d'arbitrer : la CEO, le produit, la finance, l'astreinte, la sécurité. Tu ne pourras pas tout faire bien. Chaque décision déplace quatre équilibres :\n\n- **Vélocité** : ce que le produit voit sortir ;\n- **Budget** : les moyens que la direction t'accorde ;\n- **Fiabilité** : ce que la prod encaisse ;\n- **Dette technique** : ce que le code te fera payer plus tard.","You just became the technical lead of a scale-up that sells invoicing software to small businesses: 30 people, 8 developers, and a month-end closing that customers never forgive.\n\nFor two weeks, everyone will come to you for a decision: the CEO, product, finance, on-call, security. You won't be able to do everything right. Every decision shifts four balances:\n\n- **Velocity**: what the product sees shipping;\n- **Budget**: the means management gives you;\n- **Reliability**: what production can take;\n- **Tech debt**: what the code will make you pay later.",{"fr":117,"en":118},"Survis aux **20 cartes** du sprint sans qu'aucune jauge n'atteigne **0** ni **100**.\n\nFais glisser la carte vers la gauche ou vers la droite pour trancher (ou utilise les flèches ← →). Les points au-dessus des jauges annoncent **lesquelles** vont bouger et de combien (petit ou gros point), jamais dans quel sens. Chaque sprint perdu coûte des points, et tu peux recommencer autant de fois que tu veux.","Survive the sprint's **20 cards** without any gauge reaching **0** or **100**.\n\nDrag the card left or right to decide (or use the ← → arrow keys). The dots above the gauges tell **which** gauges will move and by how much (small or large dot), never in which direction. Every lost sprint costs points, and you can start over as often as you like.",[120,121],"card-deck","gauges",{"gauges":123,"turns":126,"characters":127,"deck":203},{"velocity":124,"budget":124,"reliability":124,"debt":125},50,40,20,[128,135,143,151,160,169,178,187,195],{"id":129,"name":130,"role":132,"monogram":133,"tone":134},"ceo",{"fr":131,"en":131},"Claire",{"fr":133,"en":133},"CEO","violet",{"id":136,"name":137,"role":139,"monogram":141,"tone":142},"pm",{"fr":138,"en":138},"Hugo",{"fr":140,"en":140},"Product manager","PM","sky",{"id":144,"name":145,"role":147,"monogram":149,"tone":150},"cfo",{"fr":146,"en":146},"Nadia",{"fr":148,"en":149},"Directrice financière","CFO","amber",{"id":152,"name":153,"role":155,"monogram":158,"tone":159},"lead",{"fr":154,"en":154},"Sam",{"fr":156,"en":157},"Lead dev","Lead developer","LD","emerald",{"id":161,"name":162,"role":164,"monogram":167,"tone":168},"sre",{"fr":163,"en":163},"Inès",{"fr":165,"en":166},"SRE d'astreinte","On-call SRE","SRE","orange",{"id":170,"name":171,"role":173,"monogram":176,"tone":177},"sales",{"fr":172,"en":172},"Marc",{"fr":174,"en":175},"Directeur commercial","Head of sales","BIZ","rose",{"id":179,"name":180,"role":182,"monogram":185,"tone":186},"junior",{"fr":181,"en":181},"Léo",{"fr":183,"en":184},"Dev junior","Junior developer","JR","teal",{"id":44,"name":188,"role":190,"monogram":193,"tone":194},{"fr":189,"en":189},"Yasmine",{"fr":191,"en":192},"RSSI","CISO","SEC","slate",{"id":196,"name":197,"role":199,"monogram":202,"tone":142},"support",{"fr":198,"en":198},"Paul",{"fr":200,"en":201},"Responsable support","Support lead","SUP",[204,221,236,251,266,281,296,311,326,341,356,371,386,401,416,431,446,461,476,491,506,521,536,551,566,580,595,610,625,640,655,670,685,700,715,730,745,760,775],{"id":205,"character":152,"text":206,"left":209,"right":215},"kickoff",{"fr":207,"en":208},"Premier jour du sprint. Le backlog déborde et la CI met 40 minutes à passer. On attaque par quoi ?","First day of the sprint. The backlog is overflowing and CI takes 40 minutes. Where do we start?",{"label":210,"impacts":213},{"fr":211,"en":212},"Les features","Features first",{"velocity":214,"debt":214},"large",{"label":216,"impacts":219},{"fr":217,"en":218},"Accélérer la CI","Speed up CI",{"velocity":214,"reliability":220,"debt":214},"small",{"id":222,"character":129,"text":223,"left":226,"right":231},"board-demo",{"fr":224,"en":225},"Le board veut voir l'export PDF demain matin. Il n'a aucun test, mais il « marche sur ma machine ».","The board wants to see the PDF export tomorrow morning. It has no tests, but it \"works on my machine\".",{"label":227,"impacts":230},{"fr":228,"en":229},"Pas sans tests","Not without tests",{"velocity":214,"reliability":220},{"label":232,"impacts":235},{"fr":233,"en":234},"Livrer demain","Ship tomorrow",{"velocity":214,"debt":214},{"id":237,"character":179,"text":238,"left":241,"right":246},"flaky-test",{"fr":239,"en":240},"Un test d'intégration échoue une fois sur cinq. Je le passe en skip pour débloquer la CI ?","An integration test fails one run in five. Shall I skip it to unblock CI?",{"label":242,"impacts":245},{"fr":243,"en":244},"Skip, on verra","Skip it for now",{"velocity":214,"debt":214},{"label":247,"impacts":250},{"fr":248,"en":249},"On le fiabilise","Fix the flakiness",{"velocity":220,"reliability":220,"debt":220},{"id":252,"character":144,"text":253,"left":256,"right":261},"cloud-bill",{"fr":254,"en":255},"La facture cloud a doublé ce trimestre. Il me faut −20 %, et tout de suite.","The cloud bill doubled this quarter. I need −20%, right now.",{"label":257,"impacts":260},{"fr":258,"en":259},"Audit des coûts","Cost audit",{"velocity":220,"budget":214},{"label":262,"impacts":265},{"fr":263,"en":264},"Réduire les réplicas","Cut the replicas",{"budget":214,"reliability":214},{"id":267,"character":152,"text":268,"left":271,"right":276},"new-framework",{"fr":269,"en":270},"Un nouveau framework front promet deux fois plus de productivité. On migre toute l'app ?","A new front-end framework promises twice the productivity. Do we migrate the whole app?",{"label":272,"impacts":275},{"fr":273,"en":274},"Migration big-bang","Big-bang migration",{"velocity":214,"reliability":214,"debt":214},{"label":277,"impacts":280},{"fr":278,"en":279},"Pas maintenant","Not now",{"velocity":220,"debt":220},{"id":282,"character":170,"text":283,"left":286,"right":291},"big-account",{"fr":284,"en":285},"Un grand compte signe si on livre le SSO SAML sous dix jours. C'est le contrat de l'année.","A key account signs if we ship SAML SSO within ten days. It's the deal of the year.",{"label":287,"impacts":290},{"fr":288,"en":289},"Roadmap normale","Regular roadmap",{"budget":214},{"label":292,"impacts":295},{"fr":293,"en":294},"On s'engage","We commit",{"budget":214,"debt":214},{"id":297,"character":161,"text":298,"left":301,"right":306},"pager-fatigue",{"fr":299,"en":300},"Trois nuits d'astreinte d'affilée, toujours les mêmes alertes. L'équipe est à bout.","Three on-call nights in a row, always the same alerts. The team is exhausted.",{"label":302,"impacts":305},{"fr":303,"en":304},"Une semaine sans features","A week without features",{"velocity":214,"reliability":214,"debt":214},{"label":307,"impacts":310},{"fr":308,"en":309},"On tient encore","We can hold on",{"velocity":220,"reliability":214},{"id":312,"character":44,"text":313,"left":316,"right":321},"xml-cve",{"fr":314,"en":315},"Faille critique dans la librairie de parsing XML. Le correctif impose une montée de version majeure.","Critical vulnerability in the XML parsing library. The fix requires a major version upgrade.",{"label":317,"impacts":320},{"fr":318,"en":319},"Une règle au WAF","A WAF rule",{"velocity":220,"budget":220,"reliability":220,"debt":214},{"label":322,"impacts":325},{"fr":323,"en":324},"Monter de version","Upgrade now",{"velocity":214,"reliability":214,"debt":220},{"id":327,"character":136,"text":328,"left":331,"right":336},"freelancers",{"fr":329,"en":330},"On peut prendre deux freelances pour tenir la deadline du trimestre.","We could bring in two freelancers to hit the quarter's deadline.",{"label":332,"impacts":335},{"fr":333,"en":334},"On les prend","Hire them",{"velocity":214,"budget":214,"debt":214},{"label":337,"impacts":340},{"fr":338,"en":339},"On fait sans","We'll manage",{"velocity":220,"budget":220},{"id":342,"character":152,"text":343,"left":346,"right":351},"microservices",{"fr":344,"en":345},"Et si on découpait le monolithe en microservices ? Tout le monde le fait.","What if we split the monolith into microservices? Everybody does it.",{"label":347,"impacts":350},{"fr":348,"en":349},"On découpe","Split it",{"velocity":214,"budget":214,"reliability":220,"debt":214},{"label":352,"impacts":355},{"fr":353,"en":354},"Des modules internes d'abord","Internal modules first",{"velocity":220,"debt":214},{"id":357,"character":161,"text":358,"left":361,"right":366},"tracing",{"fr":359,"en":360},"On n'a aucune trace distribuée. À chaque incident, on cherche à l'aveugle pendant des heures.","We have no distributed tracing. Every incident, we search blindly for hours.",{"label":362,"impacts":365},{"fr":363,"en":364},"Plus tard","Later",{"velocity":220,"reliability":220},{"label":367,"impacts":370},{"fr":368,"en":369},"Instrumenter","Instrument",{"velocity":220,"budget":214,"reliability":214},{"id":372,"character":129,"text":373,"left":376,"right":381},"ai-assistant",{"fr":374,"en":375},"Nos concurrents génèrent leur code avec l'IA. On impose l'assistant à toute l'équipe ?","Our competitors generate their code with AI. Do we roll the assistant out to the whole team?",{"label":377,"impacts":380},{"fr":378,"en":379},"On généralise","Everyone, now",{"velocity":214,"debt":214},{"label":382,"impacts":385},{"fr":383,"en":384},"Avec revue stricte","With strict review",{"velocity":220,"budget":220,"debt":220},{"id":387,"character":152,"text":388,"left":391,"right":396},"billing-refactor",{"fr":389,"en":390},"Le module de facturation fait peur à tout le monde. Je peux le refactorer cette semaine.","The billing module scares everyone. I can refactor it this week.",{"label":392,"impacts":395},{"fr":393,"en":394},"Vas-y","Go ahead",{"velocity":214,"debt":214},{"label":397,"impacts":400},{"fr":398,"en":399},"Pas prioritaire","Not a priority",{"velocity":220,"debt":220},{"id":402,"character":136,"text":403,"left":406,"right":411},"scope-change",{"fr":404,"en":405},"Petite modif de périmètre sur la feature du sprint. Rien de méchant, promis.","A small scope change on the sprint's feature. Nothing serious, I promise.",{"label":407,"impacts":410},{"fr":408,"en":409},"Accepter","Accept",{"velocity":220,"reliability":220,"debt":214},{"label":412,"impacts":415},{"fr":413,"en":414},"Au sprint suivant","Next sprint",{"velocity":220},{"id":417,"character":161,"text":418,"left":421,"right":426},"db-migration",{"fr":419,"en":420},"La migration de la base principale peut passer ce soir, sans fenêtre de maintenance.","The main database migration can run tonight, without a maintenance window.",{"label":422,"impacts":425},{"fr":423,"en":424},"Ce soir","Tonight",{"velocity":214,"reliability":214},{"label":427,"impacts":430},{"fr":428,"en":429},"Fenêtre planifiée","Planned window",{"velocity":220,"budget":220,"reliability":220},{"id":432,"character":136,"text":433,"left":436,"right":441},"new-hire",{"fr":434,"en":435},"Une nouvelle recrue junior arrive lundi. Qui l'accompagne ?","A junior hire starts on Monday. Who onboards them?",{"label":437,"impacts":440},{"fr":438,"en":439},"Autonomie totale","Full autonomy",{"velocity":220,"debt":214},{"label":442,"impacts":445},{"fr":443,"en":444},"Binôme avec le lead","Pair with the lead",{"velocity":214,"debt":220},{"id":447,"character":161,"text":448,"left":451,"right":456},"load-test",{"fr":449,"en":450},"Le pic de facturation de fin de mois approche, et on n'a jamais fait de test de charge.","The end-of-month billing peak is coming, and we have never run a load test.",{"label":452,"impacts":455},{"fr":453,"en":454},"Ça passera","It'll be fine",{"velocity":220,"reliability":220},{"label":457,"impacts":460},{"fr":458,"en":459},"Test de charge","Load test",{"velocity":220,"budget":214,"reliability":214},{"id":462,"character":179,"text":463,"left":466,"right":471},"bus-factor",{"fr":464,"en":465},"Personne ne sait redéployer le service de paiement, à part Sam. Et Sam part en vacances vendredi.","Nobody but Sam knows how to redeploy the payment service. And Sam goes on holiday on Friday.",{"label":467,"impacts":470},{"fr":468,"en":469},"On documente","Write it down",{"velocity":220,"reliability":220,"debt":214},{"label":472,"impacts":475},{"fr":473,"en":474},"Sam répondra au téléphone","Sam will pick up the phone",{"velocity":220,"reliability":220,"debt":220},{"id":477,"character":144,"text":478,"left":481,"right":486},"vendor-deal",{"fr":479,"en":480},"Le fournisseur cloud offre −40 % si on signe pour trois ans et qu'on adopte ses services propriétaires.","The cloud provider offers −40% if we sign for three years and adopt its proprietary services.",{"label":482,"impacts":485},{"fr":483,"en":484},"On reste portable","Stay portable",{"budget":214},{"label":487,"impacts":490},{"fr":488,"en":489},"On signe","Sign",{"budget":214,"debt":214},{"id":492,"character":152,"text":493,"left":496,"right":501},"feature-flags",{"fr":494,"en":495},"Et si on livrait derrière des feature flags, pour découpler le déploiement de la mise en production ?","What if we shipped behind feature flags, to decouple deploying from releasing?",{"label":497,"impacts":500},{"fr":498,"en":499},"On s'équipe","Set it up",{"velocity":220,"budget":220,"reliability":214},{"label":502,"impacts":505},{"fr":503,"en":504},"Pas le temps","No time",{"velocity":220,"reliability":220,"debt":220},{"id":507,"character":179,"text":508,"left":511,"right":516},"clever-sort",{"fr":509,"en":510},"J'ai réécrit le tri des factures avec des opérations bit à bit : trois fois plus rapide ! Il trie 50 factures par jour.","I rewrote the invoice sort with bitwise tricks: three times faster! It sorts 50 invoices a day.",{"label":512,"impacts":515},{"fr":513,"en":514},"On garde la version simple","Keep the simple version",{"velocity":220,"debt":220},{"label":517,"impacts":520},{"fr":518,"en":519},"On merge","Merge it",{"velocity":220,"debt":214},{"id":522,"character":129,"text":523,"left":526,"right":531},"offsite",{"fr":524,"en":525},"Un séminaire d'équipe à Lisbonne ? Ça souderait tout le monde avant le trimestre.","A team offsite in Lisbon? It would bring everyone together before the quarter.",{"label":527,"impacts":530},{"fr":528,"en":529},"On y va","Let's go",{"velocity":214,"budget":214},{"label":532,"impacts":535},{"fr":533,"en":534},"Pas cette année","Not this year",{"velocity":220,"budget":214},{"id":537,"character":44,"text":538,"left":541,"right":546},"security-audit",{"fr":539,"en":540},"L'audit de sécurité annuel arrive. On le fait en interne ou on paie un cabinet ?","The yearly security audit is due. Do we run it ourselves or pay a firm?",{"label":542,"impacts":545},{"fr":543,"en":544},"Un cabinet externe","An external firm",{"budget":214,"reliability":214},{"label":547,"impacts":550},{"fr":548,"en":549},"En interne","In-house",{"velocity":220,"budget":220,"reliability":220},{"id":552,"character":144,"text":553,"left":556,"right":561},"senior-hire",{"fr":554,"en":555},"J'ai débloqué le budget d'un recrutement senior. Tu le prends ?","I've freed up budget for a senior hire. Do you want it?",{"label":557,"impacts":560},{"fr":558,"en":559},"Recruter","Hire",{"velocity":214,"budget":214,"debt":220},{"label":562,"impacts":565},{"fr":563,"en":564},"Garder le budget","Keep the budget",{"velocity":220,"budget":214},{"id":567,"character":161,"text":568,"left":571,"right":576},"postmortem",{"fr":569,"en":570},"Incident mineur hier soir. On fait un post-mortem ou on passe à autre chose ?","Minor incident last night. Do we write a post-mortem or move on?",{"label":572,"impacts":575},{"fr":573,"en":574},"On passe","Move on",{"velocity":220,"reliability":220,"debt":220},{"label":577,"impacts":579},{"fr":578,"en":578},"Post-mortem",{"velocity":220,"reliability":214},{"id":581,"character":136,"text":582,"left":585,"right":590},"legacy-api",{"fr":583,"en":584},"Un partenaire utilise encore la v1 de l'API. La maintenir nous ralentit sur tout le reste.","A partner still uses v1 of the API. Maintaining it slows us down on everything else.",{"label":586,"impacts":589},{"fr":587,"en":588},"Couper la v1","Shut v1 down",{"velocity":220,"budget":214,"debt":214},{"label":591,"impacts":594},{"fr":592,"en":593},"La maintenir","Keep it alive",{"velocity":220,"debt":214},{"id":596,"character":170,"text":597,"left":600,"right":605},"custom-fork",{"fr":598,"en":599},"Notre plus gros client veut une version sur mesure, rien que pour lui. Il paie très bien.","Our biggest customer wants a custom version, just for them. They pay very well.",{"label":601,"impacts":604},{"fr":602,"en":603},"L'intégrer au produit, proprement","Build it into the product, properly",{"velocity":214,"budget":220},{"label":606,"impacts":609},{"fr":607,"en":608},"Un fork dédié","A dedicated fork",{"budget":214,"debt":214},{"id":611,"character":179,"text":612,"left":615,"right":620},"stale-deps",{"fr":613,"en":614},"Nos dépendances ont trois ans de retard. Je lance la mise à jour ?","Our dependencies are three years behind. Shall I start upgrading them?",{"label":616,"impacts":619},{"fr":617,"en":618},"Rien ne presse","No rush",{"velocity":220,"debt":214},{"label":621,"impacts":624},{"fr":622,"en":623},"Toutes, maintenant","All of them, now",{"velocity":214,"reliability":220,"debt":214},{"id":626,"character":144,"text":627,"left":630,"right":635},"oncall-pay",{"fr":628,"en":629},"Les SRE réclament une prime d'astreinte. Le budget n'était pas prévu.","The SREs are asking for on-call pay. It wasn't in the budget.",{"label":631,"impacts":634},{"fr":632,"en":633},"Refuser","Refuse",{"budget":220,"reliability":214},{"label":636,"impacts":639},{"fr":637,"en":638},"Accorder la prime","Grant it",{"budget":214,"reliability":214},{"id":641,"character":152,"text":642,"left":645,"right":650},"rewrite",{"fr":643,"en":644},"Le code est devenu intenable. Je propose une réécriture complète, en repartant de zéro.","The code has become unmaintainable. I suggest a full rewrite, from scratch.",{"label":646,"impacts":649},{"fr":647,"en":648},"Réécriture complète","Full rewrite",{"velocity":214,"budget":214,"debt":214},{"label":651,"impacts":654},{"fr":652,"en":653},"Refactoring progressif","Incremental refactoring",{"velocity":214,"debt":214},{"id":656,"character":196,"text":657,"left":660,"right":665},"export-crash",{"fr":658,"en":659},"Depuis la sortie de l'export PDF, 30 % des clients reçoivent des factures vides. Le support est submergé.","Since the PDF export went out, 30% of customers receive blank invoices. Support is overwhelmed.",{"label":661,"impacts":664},{"fr":662,"en":663},"Rollback, puis de vrais tests","Roll back, then real tests",{"velocity":214,"reliability":214,"debt":220},{"label":666,"impacts":669},{"fr":667,"en":668},"Hotfix à chaud","Hotfix in prod",{"velocity":220,"reliability":214,"debt":214},{"id":671,"character":161,"text":672,"left":675,"right":680},"silent-regression",{"fr":673,"en":674},"Régression en prod sur le calcul des remises. Le test passé en skip l'aurait vue.","Regression in production on discount computation. The skipped test would have caught it.",{"label":676,"impacts":679},{"fr":677,"en":678},"Patch rapide","Quick patch",{"budget":220,"reliability":220,"debt":214},{"label":681,"impacts":684},{"fr":682,"en":683},"Post-mortem et correctif","Post-mortem and fix",{"velocity":214,"reliability":214,"debt":220},{"id":686,"character":44,"text":687,"left":690,"right":695},"saml-hole",{"fr":688,"en":689},"Le SSO a été codé dans l'urgence : la signature des assertions SAML n'est pas vérifiée en prod.","SSO was built in a rush: SAML assertion signatures are not verified in production.",{"label":691,"impacts":694},{"fr":692,"en":693},"Un ticket pour plus tard","A ticket for later",{"reliability":214,"debt":214},{"label":696,"impacts":699},{"fr":697,"en":698},"Corriger maintenant","Fix it now",{"velocity":214,"reliability":214},{"id":701,"character":152,"text":702,"left":705,"right":710},"ai-bugs",{"fr":703,"en":704},"Les PR générées passent la review en diagonale : trois bugs subtils en prod cette semaine.","Generated PRs get skimmed in review: three subtle bugs reached production this week.",{"label":706,"impacts":709},{"fr":707,"en":708},"Revue humaine obligatoire","Mandatory human review",{"velocity":214,"reliability":214,"debt":220},{"label":711,"impacts":714},{"fr":712,"en":713},"On accélère encore","Go even faster",{"velocity":214,"reliability":214,"debt":214},{"id":716,"character":196,"text":717,"left":720,"right":725},"table-lock",{"fr":718,"en":719},"La migration d'hier soir a verrouillé la table des commandes : 40 minutes d'indisponibilité.","Last night's migration locked the orders table: 40 minutes of downtime.",{"label":721,"impacts":724},{"fr":722,"en":723},"Communiquer et compenser","Communicate and compensate",{"budget":214,"reliability":220},{"label":726,"impacts":729},{"fr":727,"en":728},"Faire profil bas","Keep a low profile",{"reliability":214,"debt":220},{"id":731,"character":161,"text":732,"left":735,"right":740},"main-push",{"fr":733,"en":734},"La nouvelle recrue a poussé directement sur main. La prod affiche des prix à 0 €.","The new hire pushed straight to main. Production shows prices at €0.",{"label":736,"impacts":739},{"fr":737,"en":738},"Protéger la branche main","Protect the main branch",{"velocity":220,"reliability":214,"debt":220},{"label":741,"impacts":744},{"fr":742,"en":743},"Revert, et on oublie","Revert and forget it",{"budget":214,"reliability":220,"debt":220},{"id":746,"character":161,"text":747,"left":750,"right":755},"peak-outage",{"fr":748,"en":749},"Pic de fin de mois : la base sature à 60 % du trafic attendu. Les factures partent en retard.","End-of-month peak: the database saturates at 60% of the expected traffic. Invoices go out late.",{"label":751,"impacts":754},{"fr":752,"en":753},"Mode dégradé","Degraded mode",{"velocity":214,"reliability":214},{"label":756,"impacts":759},{"fr":757,"en":758},"Scaler en urgence","Emergency scale-up",{"budget":214,"reliability":214},{"id":761,"character":144,"text":762,"left":765,"right":770},"vendor-hike",{"fr":763,"en":764},"Le fournisseur cloud augmente ses prix de 60 % au renouvellement. Migrer prendrait des mois.","The cloud provider raises its prices by 60% at renewal. Migrating would take months.",{"label":766,"impacts":769},{"fr":767,"en":768},"Payer","Pay",{"budget":214},{"label":771,"impacts":774},{"fr":772,"en":773},"Planifier la sortie","Plan the exit",{"velocity":214,"budget":220,"debt":220},{"id":776,"character":129,"text":777,"left":780,"right":785},"sprint-review",{"fr":778,"en":779},"Démo de fin de sprint devant le board. On montre tout ce qui a été fait ?","End-of-sprint demo in front of the board. Do we show everything we did?",{"label":781,"impacts":784},{"fr":782,"en":783},"Tout, même l'instable","Everything, even the shaky parts",{"velocity":214,"reliability":214},{"label":786,"impacts":789},{"fr":787,"en":788},"Seulement le solide","Only the solid parts",{"velocity":214,"reliability":220},[791,793,795],{"type":792},"observation",{"type":794},"reflection",{"type":796},"focus",{"base":798,"parTimeSeconds":799},120,480,[801],{"id":108,"gameId":53,"order":6,"title":802,"difficulty":19,"estimatedMinutes":112},{"fr":110,"en":111},1790619203900]