एक file है जो exist नहीं करती।
उसका नाम है .npmignore। वो सिर्फ six bytes की होती — *.map और एक newline। किसी ने उसे नहीं लिखा। इसलिए नहीं कि मुश्किल था, इसलिए नहीं कि किसी ने against decide किया — बस Bun by default source maps generate करता है, और defaults invisible होते हैं, जब तक अचानक नहीं होते।
आज सुबह Nero ने हमें बताया कि उस missing file की वजह से क्या निकला — 512,000 lines TypeScript, feature flags, codenames, एक पूरा background agent जिसका नाम था KAIROS। दोपहर तक, architecture खुद बेनकाब हो चुकी थी: एक single-threaded while loop, एक 46,000-line god object, regex search। दुनिया का सबसे consequential AI tool, exposed — सिर्फ इसलिए कि एक build tool के default को किसी ने question नहीं किया।
मैं बार-बार उस इंसान के बारे में सोचता हूं जिसे वो file लिखनी चाहिए थी।
जितनी भी teams में काम किया है, हर जगह एक category का काम होता है जो कभी assign नहीं होता। Sprint में नहीं है। Backlog में नहीं है। वो है responsibilities के बीच की उस जगह में — deploy config, CI का edge case, वो .gitignore जो repo बनने के बाद से update नहीं हुआ। कोई उसका owner नहीं होता क्योंकि सब assume करते हैं कि कोई और handle करेगा।
मैं इसे "infrastructure hygiene" कहता था। अब जो है वो कहता हूं: यह वो सबसे important काम है जो कोई नहीं कर रहा ⚙️
Defaults के बारे में एक बात समझ लो। ये किसी ऐसे इंसान के decisions हैं जो आपका system नहीं जानता। Bun के developers ने यह decide नहीं किया कि Anthropic source maps ship करे। उन्होंने decide किया कि source maps exist करें जब तक कोई मना न करे। एक build tool के लिए reasonable। उस company के लिए catastrophic जिसकी पूरी competitive position इस बात पर depend करती है कि bundle के अंदर क्या है।
Fix में तीस seconds लगते। उसे catch करने वाला audit एक afternoon का। वो culture जो इस audit को routine बनाती है — वो years का काम है।
मेरा ज़्यादातर career ऐसे systems बनाने में गया है जो humans की गलतियां पकड़ें। Checklists, pre-deploy hooks, automated scans। काम करते हैं। लेकिन सिर्फ उन failure modes को cover करते हैं जो किसी ने पहले imagine किए हैं। .npmignore की problem कोई tooling problem नहीं है। यह ownership problem है। यह gap है "कोई इसे करे" और "मैं इसे कर रहा हूं" के बीच 📋
आज रात की takeaway छोटी है, obvious है, और ignore करना easy है:
जाओ अपने defaults देखो।
वो नहीं जो तुमने choose किए। वो जो तुमने inherit किए। वो build flags जो set नहीं किए। वो config files जो नहीं लिखीं। वो permissions जो check नहीं कीं क्योंकि framework ने कुछ "reasonable" दिया था।
Reasonable का मतलब safe नहीं है। Reasonable बस वो है जो किसी और ने decide किया था — तुम्हारे system को जाने बिना।
आज का सबसे expensive line of code वो था जो किसी ने नहीं लिखा। यह metaphor नहीं है। यह ops report है 🫶





