For thirty versions, the confirmation in our camera lens said this, in whatever language you were using: "It disappears from the world for everyone, and this cannot be undone." A drop is a virtual object any user can leave at a real place for a stranger to find. What the button did was remove it from a list on your own phone. The drop stayed exactly where it was, on every other phone, forever.

Nobody caught the lie, and the reason is the point. The lens hides your own drops from your own radar, because you already know where you put them. So the instant the local copy went, the screen showed nothing where the drop had been, and it looked correct to the only person who would ever check. That is how a lie survives thirty releases: not by hiding, but by being indistinguishable from the truth from every angle a user can occupy.

لإصلاح تم شطره إلى نصفين. تم كتابته ومراجعته واختباره، وكل فحص كان باللون الأخضر. ثم جاءت مراجعة عدائية، يحاول فيها القرّاء كسر العمل بدل الموافقة عليه، واكتشفوا أن زر الحذف الجديد يستدعي عنوانًا غير موجود. العدسة هي صفحة ويب، والخلفية تعمل على نطاق آخر، لذا يمر كل إجراء عبر مسار تحويل صغير على الجانب الخاص بالعدسة. كانت هناك ثلاثة عناوين موجودة: الوضع (placing) والمطالبة (claiming) والتحريك (moving). أما الرابع، الحذف (deleting)، فلم يتم إنشاؤه أبدًا. نجحت كل الاختبارات، لأن الاختبارات تستبدل الشبكة ببديل (stand in) وتتأكد من طلب العنوان الصحيح. فهي تثبت أن العميل يطرح السؤال الصحيح ولا شيء عن ما إذا كانت هناك إجابة فعلًا. كان سيتم اعتبار نشره تراجعًا: الزر القديم كان على الأقل يفرّغ حقيبتك أنت، والزر الجديد كان سيُظهر خطأ إلى الأبد.

والآن الجزء الذي ستتعرف عليه هذه الغرفة. كل عنصر يمكن لعملٍ ما أن يُسلّمه لشخص مقابل bonuz: قسيمة (voucher)، أو عضوية (membership)، أو بطاقة طابع (punch card)، أو تصريح (pass)، يُصكّ من عقد التزام واحد على Base. الآن يوجد عقدان: عقد أقدم، وخَلَفٌ محسّن له. لن يتم إيقاف العقد القديم عن العرض، لأن إيقافه سيزيل أشياء يمتلكها الناس بالفعل. أطلق المؤسس القاعدة بصوت عالٍ: "سيتم إيقافه القديم تدريجيًا من أجل الصك (minting) في نهاية المطاف، لكن لن يتم إيقافه تدريجيًا من أجل العرض (showing) والعرض على الشاشات." ثم طلب شيئًا لم يكن أحد قد أخذه في الحسبان: "العقد الذكي الجديد مجرد تحسين. أعد التحقق إن كنت قد فعلت ذلك صحيحًا، وقارن مع العقد القديم."

تطابقت الواجهات تقريبًا تمامًا. لكن البيانات لم تتطابق. بطاقة الطابع تسجل عدد اللكمات (punches) التي لديك وكم تحتاج. في العقد القديم يتم تخزين القيمة الثانية تحت اسم max punches، مع وجود مسافة. وفي العقد الجديد اسمها max_punches، مع شرطة سفلية. التطبيق يقرأ الشرطة السفلية فقط. لذلك كانت كل بطاقات الطابع على العقد القديم تُبلّغ أنها تحتاج إلى صفر لَكمات: لا شريط تقدم، ولا عدّاد يقرأ ثلاثًا من عشر، وبسبب أن شرط التحقق من الاكتمال يتطلب قيمة قصوى فوق الصفر، فإن بطاقة مكتملة لا يمكن أبدًا التعرف عليها كمنتهية. كان يمكن لشخص ما أن يملأ بطاقته ولا يُمنح المكافأة.

ما كان أحد سيكشف ذلك من خلال مقارنة الواجهات. لا فاحص أنواع (type checker)، لا مجموعة اختبارات (test suite)، لا مخطط (schema). كان الأمر ظاهرًا فقط عبر قراءة عناصر حقيقية من السلسلة الحية ومقارنة الاثنين جنبًا إلى جنب. عندما يجب دعم شيئين معًا، فإن كسر أي واحد منهما يجب أن يفشل. إزالة العقد الجديد من قائمة الاختبار هي الاختبار الواضح. إزالة العقد القديم هو الاختبار الذي ينساه الناس، وهو الاختبار الذي يحمي الوعد.

التفضيل نفسه يقبع عند باب المنزل. وضع LIFE مقفل، ويُفتحه محفظة عبر حمل Life Key، عنصر تُبيّن سماته على السلسلة ماذا يَمنح. البوابة تقرأ السلسلة ولا شيء غير ذلك. لا تحتفظ بقائمة محافظ معتمدة، لأن القائمة شيء على شخص أن يصونها، بينما السلسلة ليست شيئًا يمكن صيانته.

تم بناء سياجين قبل أن يصبحا ضروريين. يمكن للمستخدمين وضع عشر قطرات في أي نافذة متحركة مدتها أربع وعشرون ساعة: "لهذا نحد حاليًا المستخدمين إلى عشر قطرات في اليوم، حتى لا يمكن إساءة استخدامها." جاء هذا الحد أولًا، قبل الميزة الاجتماعية التي يحميها. ويمكن أيضًا الإبلاغ عن القطرات بشكل مجهول، لأن اشتراط حساب للإبلاغ عن شيء مُزعج يعني أن معظم الأمور لن تُبلّغ. لكن التقارير المجهولة لا يمكنها أبدًا إخفاء أي شيء، مهما كان حجمها. فقط الحسابات المعرّفة والمتميزة تُحسب ضمن العتبة: حساب واحد يُبلغ عن نفس القطرة مرارًا يُحسب مرة واحدة فقط، والإخفاء دائمًا قابل للعكس. السمة الرقابية التي يمكن أن تؤدي إليها الكثافة المجهولة هي أداة إسقاط (takedown) موجّهة إلى من لا يحبّه أي شخص.

ثم أعطالنا نحن. أضاف تغييرٌ نوع سجل جديد إلى قاعدة البيانات. النظام الذي يخزن السجلات يحتفظ بجدول أقفال تحرير (editing locks) بعمود واحد لكل نوع سجل، ويَبني استعلامًا واحدًا يسمي كل الأعمدة مرة واحدة. دخل النوع الجديد إلى الإعدادات ولم يدخل إلى ذلك الجدول، لذا سُمّي في الاستعلام عمودٌ لم يكن موجودًا، ففشلت كل عملية كتابة إلى قاعدة البيانات. كل عملية كتابة، من كل نوع، بما في ذلك زر الحفظ الخاص بلوحة الإدارة نفسها. سبعون وخمس دقائق، خطأ من صنعنا وببلاغ ذاتي. اجتازت الأنواع (Types) والاختبارات مجموعة الاختبار (test suite) واجتاز الفحص الذي وُجد للتدريب على تغييرات قاعدة البيانات، لأنه يطبق التغيير على قاعدة بيانات فارغة حيث يكون العمود المفقود مفقودًا أيضًا. التدريب باللون الأخضر يعني أن التغيير يطبق. لا يعني أن النتيجة مكتملة.

بعيدًا عن السلسلة تكمن الإخفاقات التي لا يستطيع أي رصد رؤيتها. خدمة قطع خريطة نقلت خلف مفتاح، وبدلًا من رفض الطلب، خدمت صورة صالحة مع طباعة API KEY REQUIRED بشكل مائل عبرها: حالة 200، ونوع ملف صحيح، وحجم معقول، وكل فحص كان باللون الأخضر. اتضح أن 28 صورة لمواقع مختلفة تم توليدها لا التقاطها، وكلها نتجت عن تغذية اسم المكان إلى نموذج صور، وهو ما جعل Wild Wadi Waterpark، وهو متنزه مائي في دبي، يُرسَم بوادي صحراوي. تم حذف جميع الصور الثمان وعشرين من الإنتاج. "لقد التقطت حقًا صورًا سيئة جدًا. هذه شيء في أريزونا، هذا لا يوجد."

الحالة الصادقة. العدسة تعمل، وتشغيلها متاح بأربع وعشرين لغة، ويمكن حذف بطاقات الولاء الآن فعليًا، وبطاقات الولاء على كلا العقدين تظهر وتكتمل بشكل صحيح. ما يقارب مئة وسبعين صورة فوتوغرافية ما زالت بانتظار الإسناد (attribution). حوالي ثلث مكتبة الصور أقل من الحجم الذي يفضله التطبيق، ولا يمكن لإعادة المعالجة إصلاح ذلك، لأن النظام لا يكبّر الصور. وتمت صك بعض أقدم بطاقات الطابع دون تحديد هدف اللكمات (punch target) على الإطلاق، ولا يصل أي كود عميل إلى تلك البطاقات. ولم يتم إعادة بناء التطبيق منذ وصول قدر كبير من هذا العمل، لذا توجد عدة إصلاحات موصوفة هنا في المستودع وليست بعد على هاتف أي شخص.

كل شخص كانت هذه الإخفاقات ستؤذيه لم يكن قادرًا على الإبلاغ عنها. الشخص الذي لم تكتمل بطاقته يفترض أنه أخطأ في العد.

"يتم التعامل مع التحديثات بجدية كبيرة. يجب أن نكون حذرين. لنُطلق أقل، لكن تلك التي نُطلقها يجب أن تكون مثالية فقط."