Een opschoningsscript dat werd uitgevoerd op het publicatieplatform van de site, identificeerde codefragmenten per abuis als foutieve Liquid-variabelen en verwijderde ze uit elk artikel waarin ze voorkwamen. Door deze fout bleven tientallen technische berichten zonder de voorbeeldcode waar lezers op vertrouwen, wat leidde tot een dringende rollback en een heroverweging van de manier waarop contentmigraties worden getest.
Hoe de bug erdoorheen glipte
Het platform maakt gebruik van Liquid, een templatingtaal die dynamische content markeert met tags zoals {{ … }}. Een routineklus voor onderhoud was bedoeld om losse tags te verwijderen die de rendering konden verstoren. De parser van het script zocht naar openings-tags die geen bijbehorende sluitings-tag hadden en verwijderde, wanneer hij er een vond, het volledige blok om de fout te "herstellen".
In de praktijk slaagde de parser er niet in de {% raw %} en {% endraw %} tags te herkennen die codeblokken omsluiten. Deze tags vertellen Liquid om alles binnenin als letterlijke tekst te behandelen, maar het gebrekkige script behandelde de openings-tag {% raw %} als een niet-gesloten variabele ({{% raw %}) en verwijderde de omliggende code. De foutmelding in het logboek was:
Liquid syntax error: Variable '{{% raw %}' was not properly terminated.
Omdat het script op de live content-repository werkte, vond de verwijdering massaal plaats, waardoor de codevoorbeelden in één keer uit alle getroffen artikelen werden gewist.
Wat er op het spel staat
Technische artikelen zijn afhankelijk van codefragmenten om concepten te illustreren, resultaten te reproduceren en lezers door stapsgewijze procedures te leiden. Het verlies van deze blokken maakt de berichten grotendeels nutteloos, dwingt auteurs om content te herschrijven en tast het vertrouwen in de betrouwbaarheid van het platform aan. Voor een site die haar reputatie bouwt op hoogwaardige documentatie voor ontwikkelaars, vormt dit incident een bedreiging voor zowel het aantal lezers als de goodwill van bijdragers.
De details die de meeste lezers missen
- Batchverwerking zonder sandboxing – Het script werd rechtstreeks op productiedata uitgevoerd in plaats van op een staging-kopie.
- Onvoldoende tag-afhandeling – Er werd slechts rekening gehouden met een deel van de Liquid-tags;
{% raw %}ontbrak op de whitelist. - **Gebrek aan incrementele
