Målgrupp: Den här artikeln vänder sig till programvaruansvariga, OTA-plattformsingenjörer, fordonsparksoperatörer som hanterar 5 000–60 000 läs-pennor, och B2B-importörer som måste kunna försvara ett releasebeslut inför en skolstyrelse eller ett ministerium i en Golfstat. Den utgår från att du har hört talas om kanariefågel-utrullningar, men vill veta exakt hur en kohort väljs ut, vilka signaler som styr promotion eller rollback, och hur A/B-test på OID-bokens engagemang isoleras från mätvärden för firmware-stabilitet.
En utrullning till 14 000 pennor i ett brasilianskt delstatsutbildningsprogram var planerad för firmware 3.3.1. Vi skickade den inte direkt till alla 14 000. Istället skickade vi den till 140 pennor — en 1 %-kanarie — klockan 09:00 lokal tid en tisdag, följde mätvärdena i 96 timmar, och först därefter expanderade vi till resterande 99 %. Kanarien fångade en regression i OID-uppslagningsvägen som uppskattningsvis skulle ha drabbat 1,4 % av enheterna. Vi levererade 3.3.2 fyra dagar senare. Noll stillestånd i flottan.
Det är den disciplinen som den här artikeln dokumenterar: kohorturval, signaldefinition, beslutströsklar, isolering av A/B-test, och reglerna för att befordra en kanarie till 100 %-utrullning. Allt nedan gäller B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 och Y6.
1. Kanariens livscykel
Varje firmware-release passerar fem steg innan den når 100 % av flottan. Stegen är tidsbundna, inte "vi får se hur det går". Varje steg har tydliga utgångskriterier och en nödbrytare.
| Steg | Kohortstorlek | Varaktighet | Utgångskriterium | Nödbrytare |
|---|---|---|---|---|
| Labb (R&D) | 12 referenspennor | 14 dagar | 0 kritiska buggar, <0,5 % allvarliga | Internt |
| Sluten beta | 120 pennor (ingenjör + VIP) | 14 dagar | 0 kritiska, <0,3 % allvarliga | Internt |
| Kanarie | 1 % av flottan, ≥140 pennor | 96 h | Boot-framgång >99,5 %, inget S0-fel | Auto-rollback |
| Staged rollout | 25 %, 50 %, 75 %-vågor | 7 dagar vardera | Kraschfria sessioner >99,7 % | Auto-rollback |
| GA | 100 % | e/t | e/t | Hotfix-release |
Kanariestadiet är det som fångar ett problem som 3.3.1 OID-uppslagningsregressionen. Utan det hade buggen nått alla 14 000 pennor inom 18 timmar, och rollbacken hade varit synlig för föräldrarna.
2. Kohorturval — hur 1 % väljs ut
En naiv kanarie väljer "de första 1 % som checkar in". Det gör vi inte. Kanarie-kohorten stratifieras över tre axlar för att säkerställa statistisk validitet.
2.1 Stratifieringsdimensioner
| Axel | Bucklar | Varför |
|---|---|---|
| Geografi | 6 strata (NA, EU, ME, APAC, LATAM, Afrika) | Fångar regionsspecifika buggar (typsnitt, nätverk, regulatoriskt) |
| Modellmix | Alla 11 SKU:er proportionellt | Fångar hårdvaruspecifika regressioner |
| Anslutningsmöjligheter | 60 % Wi-Fi-nåbara, 40 % endast offline | Fångar nätverksberoende buggar |
| Innehållsprofil | Lätt (<5 böcker), medium (5–20), tung (>20) | Fångar regressioner i innehållsvolym |
Kohorten uppdateras vid varje release. En penna som deltog i 3.3.0-kanarien har 35 % chans att vara med i 3.3.1-kanarien, eftersom vi vill ha överlappande signal utan att slita ut samma population.
2.2 Statistisk styrka
För att en kanarie ska fånga en regression på 1 % med 95 % konfidens måste kohorten vara minst 300 pennor. Vår policy är 1 % av flottan eller 300 pennor, beroende på vilket som är störst, med ett hårt minimum på 140 pennor (den minsta statistiskt användbara kohorten för en regression på 3 %). Den 14 000-pennors brasilianska deploymenten använde därför en 140-pennors kanarie (1 %) och nådde statistisk styrka för 3 %-regressioner, inte 1 %. Vi accepterade den kompromissen eftersom labbet + den slutna betan redan hade täckt 1 %-klassen.
3. Signaler som övervakas under canary
Vi övervakar 17 signaler, men endast 5 är grindvakter för canary-främjande. De övriga 12 är diagnostiska.
3.1 Grindvaktssignaler
| Signal | Definition | Tröskelvärde | Källa |
|---|---|---|---|
| Lyckade uppstarter | (kallstarter som når hemskärmen) / (kallstarter) | >99,5 % över 96 h | Telemetrihändelse boot.end |
| Kraschfria sessioner | (sessioner utan ohanterat undantag) / (sessioner) | >99,7 % över 96 h | Telemetrihändelse app.crash |
| Antal S0-fel | Fel i allvarlighetsklass S0 (dataförlust, bricka) | 0 över 96 h | Telemetrihändelse err.s0 |
| OID-uppslagningslatens p95 | 95:e percentilen för OID-till-uttal | <220 ms | Telemetrihändelse oid.lookup |
| Batteriöverdränering | Pennor som rapporterar >8 % dränering per timme i viloläge | <0,5 % av kohorten | Telemetrihändelse pwr.drain |
3.2 Diagnostiska signaler
De 12 diagnostiska signalerna omfattar: ordboks träfffrekvens, språkpaketets laddningsframgång, TTS första-byte-latens, ASR-ordnoggrannhet på en benchmark-frasmängd, USB-C laddningsströmsramp, knapp-avstuds miss, högtalar-pop vid uppstart, OID-sensorns kalibreringsavdrift, NAND-slitageförändring, NOR-slitageförändring, Wi-Fi-associationstid och BLE-parningsframgång.
Om en diagnostisk signal försämras med mer än 2 standardavvikelser utlöser det en manuell granskning, inte en automatisk återställning.
4. Regler för automatisk återställning
OTA-plattformen bevakar de fem grindvaktssignalerna i realtid. Om något tröskelvärde överskrids utfärdar plattformen ett automatiskt återställningskommando till kohorten inom 90 sekunder.
| Tröskelvärdesöverskridande | Åtgärd | Återställningstid |
|---|---|---|
| Lyckade uppstarter <99,5 % | Automatisk återställning av kohort + flagga release | 14 h kohortkonvergens |
| Kraschfria sessioner <99,7 % | Automatisk återställning av kohort + flagga release | 14 h kohortkonvergens |
| Antal S0-fel >0 | Omedelbart globalt stopp + automatisk återställning av kohort | 4 h globalt stopp |
| OID-uppslagning p95 >220 ms | Diagnostisk flagga, ingen automatisk återställning | 96 h beslutsfönster |
| Batteriöverdränering >0,5 % | Diagnostisk flagga, ingen automatisk återställning | 96 h beslutsfönster |
"S0 = 0"-regeln är den enda med noll tolerans. En enda S0-händelse stoppar varje aktiv utrullningsfas och drar in varje aktiv främjande i manuell granskning.
5. A/B-testisolering
Ibland är målet inte "är firmware stabilt?" utan "förbättrar funktion X engagemanget?" Vi kör A/B-test på canary-kohorten, isolerade från stabilitetsmätningarna, enligt tre regler:
- Stabilitet först — Om canary överskrider någon stabilitetsgrind är A/B-testet oavgjort; vi återgår.
- Slumpmässigt inom kohort — En 50/50-fördelning inom kanariegruppen, balanserad utifrån geografi, modellblandning och innehållsprofil.
- Minsta detekterbara effekt — Vi förberäknar det urval som krävs för 80 % styrka på det primära måttet. För OID-träffar per session upptäcker kanariekohorten med 140 pennor (70 mot 70) en effekt på 12 % med 80 % styrka.
Ett exempel på ett A/B-test som vi körde på firmware 3.2.x: hypotesen var att en snabbare startanimation (1,4 s mot 2,1 s) ökar antalet OID-träffar per session. A/B-testet pågick i 14 dagar. Resultat: ingen statistiskt signifikant effekt (p = 0,31). Vi återkallade ändringen eftersom kostnaden för regressionen (uppfattad som "förhastad") inte var värd nollnyttan.
6. Kampanjplan efter lyckad kanarietest
Om kanariet klarar alla fem grindarna vid 96 timmar, lanserar vi i tre vågor: 25 % → 50 % → 75 % → 100 %. Varje våg hålls i 7 dagar med samma fem grindvakts-signaler, men med snävare tröskelvärden.
| Våg | Kohortstorlek | Stabilitetströskel | Tröskel för kraschfritt | Hållperiod |
|---|---|---|---|---|
| 25 % | 25 % av flottan | >99,6 % | >99,75 % | 7 dagar |
| 50 % | 50 % av flottan | >99,65 % | >99,8 % | 7 dagar |
| 75 % | 75 % av flottan | >99,7 % | >99,85 % | 7 dagar |
| 100 % | 100 % av flottan | >99,7 % | >99,85 % | ej tillämpligt |
Om någon våg överskrids, rullar vi tillbaka till föregående vågs kohort, inte till "noll". En 50 %-våg som misslyckas rullas tillbaka till 25 %-kohorter, inte till kanariet. Detta är snabbare än en fullständig ny kanarietest och undviker att bränna statistisk styrka.
7. SVG-visualisering av kanariets livscykel och signalövervakning
8. Vad distributören ser
En distributör som använder den hanterade OTA-tjänsten ser en kanariestyrpanel med fem siffror som uppdateras var 15:e minut:
- Kohortstorlek (aktuell mot mål)
- Timmar sedan kanariet startade
- 5 grindvaktssignalvärden
- Tid till nästa beslutspunkt
Styrpanelen visar också en knapp "Promote" som endast blir aktiv när alla fem grindar passerar vid 96 timmar. Att klicka på "Promote" utlöser 25 %-vågen med en hållperiod på 7 dagar. Det finns ingen knapp "Skip to 100 %".
9. Kostnader och ledtider
| Tjänst | Kostnad | Ledtid |
|---|---|---|
| Kanariesteg (per release) | ingår i hanterad OTA | 96 h |
| A/B-testkonsultation (per hypotes) | 1 400 $ | 14 dagars design, 14 dagars genomförande |
| Anpassad storlek på kanariekohort | 0 $ (i självbetjäningspanelen) | omedelbart |
| Exekvering av återställning | ingår | 90 s från tröskelöverskridande |
| Snabbfix-release (S0 utlöst) | ingår | 24 h mål, 72 h tak |
Köpartips: Om din flotta är under 5 000 pennor är canary-kohorten 140 pennor (det statistiska minimumet), inte 1 %. Planera därefter: 140 pennor är 2,8 % av en flotta på 5 000 pennor, vilket innebär en något större kohortförbrukning per release.
9. Bilaga: Tre verkliga canary-utfall och vad de lärde oss
De 86 firmware-releaser vi har levererat sedan 2023 genererade 27 distinkta canary-kohorter. Tre av dessa utfall är särskilt lärorika för distributörer som bygger sina egna canary-program. De återges nedan i samma form som vi presenterar dem för vårt tillförlitlighetsteam.
9.1 Utfall 2024-09 — Firmware 3.1.1, saudisk flotta på 9 000 pennor
Canary-kohorten var 90 pennor (1 % avrundat nedåt till närmaste 90). Alla fem gate-keepers klarade sig vid 96-timmarsmärket. Uppgradering till 25 % fortsatte. Vid 7-dagarsvåggranskningen hade signalen för batteridränage diagnostik regresserat från 0,18 % av kohorten till 0,42 % av kohorten — fortfarande under 0,5 %-tröskeln men nära. Vi höll 25 %-vågen i ytterligare 7 dagar. Vid dag 14 hade siffran stigit till 0,61 %, vilket överskred 0,5 %-tröskeln. 25 %-kohorten rullades tillbaka; releasen hölls tillbaka. En andra canary med en fix levererades som 3.1.2 fyra dagar senare. Slutsats: diagnostiska signaler kan bli gate-keeper-signaler. Planera för en längre våg om någon diagnostisk signal rör sig.
9.2 Utfall 2025-02 — Firmware 3.2.1, mexikansk flotta på 11 500 pennor
Canary-kohorten var 115 pennor. Vid 72-timmarsmärket var kraschfria sessioner 99,4 % — strax under 99,7 %-tröskeln. OTA-plattformen utfärdade en automatisk återrullning inom 90 sekunder. De 115 pennorna rullades tillbaka till 3.2.0 inom 11 timmar. Utredningen spårade kraschen till en minnesläcka i Wi-Fi-roaming-sökvägen. Slutsats: den automatiska återrullningen fungerade exakt som designat, och vi förlorade inte canary-kohorten på grund av en felaktig release. Distributörer som kör self-hosted OTA måste tillämpa samma 90-sekunders automatiska återrullningsdisciplin; SLA:n ogiltigförklaras utan den.
9.3 Utfall 2026-05 — Firmware 3.3.2, indonesisk flotta på 4 800 pennor
Canary-kohorten var 140 pennor (det hårda minimumet). Alla gate-keeper klarade sig. Uppgraderingen fortsatte. 25 %-vågen pågick i 7 dagar. Vid dag 6 returnerade A/B-testet (snabbare startanimation) p = 0,18 — inte statistiskt signifikant, men en riktningspreferens för den långsammare animationen. Releasen levererades vid 25 %, 50 %, 75 % och 100 % utan animationsändringen. Slutsats: A/B-tester inom en canary är ett kostnadseffektivt sätt att validera en UX-förändring innan den exponeras för 100 % av flottan.
9.4 Mediankohortbeteende över 27 canaries
Över de 27 canaries vi har kört sedan 2023 ser medianutfallet ut som tabellen nedan. Använd den som baslinje för din egen flotta-planering.
| Mått | Median | p25 | p75 |
|---|---|---|---|
| Startfrekvens | 99,84% | 99,71% | 99,91% |
| Kraschfria sessioner | 99,91% | 99,85% | 99,95% |
| S0-händelser | 0 | 0 | 0 |
| OID-uppslagning p95 | 168 ms | 142 ms | 198 ms |
| Batteriöverförbrukning | 0,21% | 0,12% | 0,34% |
| Tid till första gate-keeper-brott | 184 h | 96 h | 312 h |
| Kohortåterhämtning efter brott | 9 h | 4 h | 14 h |
En canary som hamnar i p25 för alla sex måtten presterar bättre än 75 % av våra historiska kohorter. En canary som hamnar i p75 för alla sex måtten behöver utredas före uppgradering.
10. Visualisering: Kortortsräckvidd och gate-keeper-brott per 100 canaries
Visualiseringen nedan kombinerar ett staplat stapeldiagram (hur många canaries som landade på varje nivå) med ett linjediagram över hur ofta varje gate-keeper-brott utlöstes över samma 100 canaries. Recensenter använder detta på måndagens tillförlitlighetsmöte.