31 گھنٹے کی دوڑ
4 جولائی کی صبح اور 5 جولائی کی سہ پہر کے درمیان، ایک ایجنٹ بیڑے نے کسی انسان کے ایک سطر کوڈ لکھے بغیر ایک گیم فیچر سیٹ کو ڈیزائن ریکارڈ سے گرین بلڈ تک پہنچا دیا۔ اس نے 4 منٹ 45 سیکنڈ میں 17 issues دائر کیے، دو ریپازٹریوں میں 18 pull requests مرج کیے، اور بجلی کی بندش سے سیشن ختم ہونے سے 65 منٹ پہلے خود اپنی ہدف کی شرط پر مہر ثبت کر دی۔ اس وقفے میں کچھ بھی واپس (revert) نہیں کیا گیا۔
یہ رہی رسید۔ ہر بار (bar) ایک pull request ہے، جسے اس کے کھلنے اور مرج ہونے کے وقت کے مطابق رکھا گیا ہے؛ تفصیل کے لیے ان پر ہوور کریں یا Tab سے گزریں۔ سبز نشان وہ لمحہ ہے جب ہدف کی شرط پوری ہوئی؛ نقطہ دار (dashed) نشان بجلی کی بندش ہے۔
پیش بندی
دوڑ کا آغاز کوڈ سے نہیں ہوا۔ اس کا آغاز ایک دستاویز سے ہوا۔ رات بھر جاری رہنے
والے ایک ڈیزائن سیشن سے پندرہ فیصلوں کا ایک ریکارڈ برآمد ہوا، جسے اُن سترہ جوابات
کے ساتھ یکجا کیا گیا جنہوں نے اِن فیصلوں کو حل کیا، اور یہ 06:56 پر PR #329 کے
طور پر CandyRush کی dev برانچ پر پہنچا۔ پوری دوڑ کو اسی ریکارڈ کے مقابلے میں
پرکھا گیا۔
پھر منصوبے کو دس منٹ کے اندر تین کمٹ میں خودمختاری کے لیے مضبوط کیا گیا: 07:22
پر خودکار عملدرآمد کی رن بُک، 07:30 پر جائزے کی پالیسی، اور 07:32 پر ہدف
کمانڈ کا مسودہ۔ کوئی بھی issue دائر ہونے سے پہلے، آٹھ ایجنٹس پر مشتمل ایک مخالفانہ
(adversarial) فین-آؤٹ نے مسودوں کو اصل سورس کے مقابلے میں پڑھا اور چھ تصحیحات
لوٹائیں — ہر ایک ایسی بگ جس پر بصورتِ دیگر دوڑ آگے تعمیر کرتی رہتی۔ ایک نے
بوس-اسٹال کے نظریے کو سرے سے رد کر دیا۔ ایک نے دریافت کیا کہ محض
director.Time = 0 ویو کلپس کو دوبارہ فائر نہیں کر سکتا، چنانچہ کومبیٹ لوپ کو
RebuildGraph راستے سے گزرنا پڑا — اور فلیگ شپ بالکل اسی طرح شپ ہوا۔
08:04:24 پر دائر کرنے کا سیلاب شروع ہوا: سترہ issues، A سے Q تک ایک حروف-کوڈ شدہ منصوبہ، 4 منٹ 45 سیکنڈ میں GitHub پر آ پہنچے (#330–#346)، اور ریپازٹری کا پہلا سنگِ میل ساتھ لے آئے۔ بساط بچھ چکی تھی، اور ہدف کمانڈ چل پڑی۔
دوڑ، گھنٹہ بہ گھنٹہ
ہر issue کے ساتھ یکساں سلوک ہوا: ایک عملدرآمد ذیلی ایجنٹ نے تبدیلی لکھی،
آرکسٹریٹر نے اس پر مکمل ٹیسٹ سویٹس چلائیں، ایک جائزہ لینے والے نے diff کو درجہ
دیا، اور تب جا کر یہ مرج ہوا۔ Pull requests ایک وقت میں ایک کر کے شامل ہوئے، ہر
ایک کے بعد dev گرین رہا۔ پوری دوڑ میں کھلنے سے مرج ہونے تک کے سائیکل کا وسط
(median) 40 منٹ تھا۔
| PR | بند کرے | فراہم کردہ | کھلا | مرج | سائیکل | فرق | فائلیں |
|---|---|---|---|---|---|---|---|
| UTools #11 | — | SwarmTools CompileCheck: بیچ بوٹ میں csproj سنک | Jul 4 09:55 | 10:23 | 29m | +14/−0 | 1 |
| #347 | #330 | بوس-اسٹال کی جڑ: چیٹ ری سیٹ نے AutoKillBosses کو مٹا دیا | Jul 4 09:56 | 10:48 | 53m | +104/−44 | 7 |
| #348 | #331 | فینٹم دوسرا ایگزٹ پورٹل: جنریٹر درست + آرٹ سینیٹائزر | 11:03 | 11:38 | 35m | +142/−117 | 6 |
| #349 | #332 | آرک-آگاہ سیگمنٹ ڈیٹا ماڈل — StageData بائٹ کے لحاظ سے یکساں | 12:45 | 13:26 | 41m | +514/−281 | 66 |
| #350 | #333 | مستقل ایگزٹ گیٹس: Hades ڈور ماڈل، لاک مشین | 14:25 | 15:12 | 47m | +1,034/−874 | 19 |
| #351 | #334 | اسکیلیشن فارمولا: 8 بوس مقامات پر Fixed64 گہرائی × ٹیئر | 16:07 | 16:53 | 46m | +775/−30 | 33 |
| #353 | #352 | وقفہ: چیٹ-init ریس جو دوڑ نے اپنی ہی فکس میں پکڑی | 17:07 | 17:40 | 33m | +83/−0 | 3 |
| #354 ★ | #335 | Load/RebuildGraph کے ذریعے لامتناہی-لوپ کومبیٹ، tier++، 120s ورسز | 18:57 | 19:54 | 57m | +1,483/−1,244 | 23 |
| #355 | #337 | اینٹی-فارم اکانومی: ٹریش-XP سطح مرتفع — دوڑ کا سب سے بھاری PR | 22:45 | 23:29 | 43m | +2,888/−69 | 34 |
| #356 | #336 | دشمن ٹیئر ہیو شفٹ — کھیل میں شامل مشکل کا میٹر | 23:58 | Jul 5 00:33 | 35m | +480/−0 | 9 |
| #357 | #338 | منی-بوس گنٹلیٹ: رسک روم، چیسٹ-اکانومی اجارہ داری | 01:30 | 02:10 | 40m | +1,648/−23 | 31 |
| #358 | #339 | ہورڈ: 75 سیکنڈ کی متعین بقا کی کھڑکی | 03:01 | 03:40 | 39m | +1,635/−13 | 23 |
| #359 | #340 | ہنٹ: کِل کوٹا، بیکن ایرو، مستقل نشانات | 05:04 | 05:45 | 41m | +2,033/−15 | 31 |
| #360 | #341 | پراپس ری ورک: 50 سیکنڈ کی متعین لوٹ-گریب | 06:20 | 06:59 | 38m | +388/−19 | 14 |
| #361 | #342 | رسک پورٹلز: ہر 3 میں 1 ایلیٹ راستہ، داخلے کا سونا، اسکل پپس | 07:36 | 08:16 | 40m | +768/−62 | 23 |
| #362 | #345 | HUD اسٹیٹس لائن: فی-آرکی ٹائپ مراحل، ٹیئر بیج، کوٹے | 08:55 | 09:32 | 38m | +570/−15 | 31 |
| #363 | #343 | رن نتائج: اضافی مجموعی اسکور + فی-آرک ستارے | 10:25 | 11:04 | 40m | +942/−57 | 15 |
| #364 | #344 | لابی ری ورک، Run-first — حتمی تصدیق اسی سائیکل کے اندر چلی | 12:01 | 14:15 | 2h 14m | +712/−22 | 29 |
اوقات US Eastern ہیں۔ دوڑ کے مجموعے: CandyRush پر +16,199/−2,885، 397 فائل-تبدیلیوں پر محیط، مزید UTools پر +14۔
رات بھر
اٹھارہ میں سے سات pull requests 23:29 اور 08:16 کے درمیان اُس وقت مرج ہوئے جب گھر سو رہا تھا — اُن میں اینٹی-فارم اکانومی، ٹیئر-ہیو مشکل میٹر، اور تین مکمل آرکی ٹائپس شامل تھیں۔ پوری دوڑ کا سب سے بھاری diff — اکانومی کے لیے +2,888 — نے 23:29 پر رات کی شفٹ کا آغاز کیا، اور صبح سے پہلے اس کے بعد آنے والی چھ مرجز نے سائیکل 35 اور 41 منٹ کے درمیان رکھے۔ لوپ اس لیے سست نہیں ہوا کہ اسے کوئی نہیں دیکھ رہا تھا۔
فلیگ شپ، #354، 19:54 پر بالکل اسی طرح مرج ہوا جیسا پیشگی (pre-flight) فین-آؤٹ نے
کہا تھا کہ ہونا چاہیے: لامتناہی-لوپ کومبیٹ Load/RebuildGraph کے راستے سے
گزرا۔ اس سے پہلے، دوڑ کے اپنے صبح والے فکس کے اپنے جائزے نے ایک اسٹارٹ اپ ریس کو
سامنے لایا؛ اس نے #352 دائر کیا، اسے ٹھیک کیا، اور 45 منٹ کے اندر #353 مرج کر دیا۔
اسی قسم کا خود-احتساب وہ وجہ ہے کہ کسی چیز کو واپس کرنے کی ضرورت نہیں پڑی۔
وہ ٹول کٹ جس نے باقی سب کی راہ کھولی
ایجنٹ / ٹول کٹوہ واحد pull request جو CandyRush نہیں تھا، اپنے حجم کے تناسب سے کہیں زیادہ اہم
ثابت ہوا۔ UTools #11 نے ایک ہی فائل کو چھوا —
Assets/com.irsiksoftware.swarmtools/Editor/SwarmTools.cs، +14/−0، 09:55 پر
کھلا اور 10:23 پر مرج ہوا، ایک 29-منٹ کا سائیکل — اور اس نے CompileCheck
مرحلے کو سکھایا کہ IDE پروجیکٹ فائلوں کو اسی بیچ بوٹ کے اندر سنک کرے۔ اس نے دوڑ
کے ہر بعد کے pull request کے لیے باسی-.csproj والی CS2001 ناکامی کی قسم کو
ختم کر دیا۔
UTools ایک فرسٹ-پارٹی ٹول کٹ ہے جو 27 com.irsiksoftware.* پیکجز پر مشتمل
ہے — animation، audio، determinism، economy، logging، navigation، save،
simulation، swarmtools، اور باقی — جسے CandyRush UPM لوکل-فائل حوالوں کے طور پر
استعمال کرتا ہے (Packages/manifest.json → file:../../UTools/…)۔ چونکہ دونوں
ریپازٹریاں متوازی برانچز کو ٹریک کرتی ہیں، UTools کو بالکل اسی برانچ پر ہونا پڑتا
ہے جس کی CandyRush توقع کرتا ہے، ورنہ CandyRush کمپائل نہیں ہوگا۔ دوڑ نے پورے وقت
UTools کے main اور CandyRush کے dev کو ایک دوسرے کے مقابلے میں گرین رکھا۔
روداد
#364 14:15 پر مرج ہوا، ہینڈ-آف تبصرہ 14:17 پر پوسٹ ہوا، اور دوڑ نے عین
dev ٹِپ 674f7745 پر ایک آخری مکمل پاس کے لیے انجن چالو رکھے۔ 14:50:03 پر
ہدف کی شرط پر مہر ثبت ہوئی:
دوڑ کا خالص حاصل: +151 EditMode ٹیسٹ، دونوں failures.json خالی، اور دونوں
ریپازٹریوں پر ورکنگ ٹریز صاف۔ دوڑ نے جن دو PlayMode ریڈز کے ساتھ آغاز کیا تھا،
اُن کی جڑ تلاش کر لی گئی اور وہ پہلے ہی دن دوپہر تک ختم ہو گئیں، پھر کبھی واپس نہ
آئیں۔
انخلا
Run موڈ کا پورا مقالہ یہ ہے کہ لالچ کی ایک قیمت ہوتی ہے: ایک ورس زیادہ رُکو اور وائپ سب کچھ لے اُڑے گا۔ ہدف کی شرط پر مہر لگنے کے چھیاسٹھ منٹ بعد، دوڑ کو اپنے ہی مفروضے کو جینے کا موقع ملا۔ Windows ایونٹ لاگ نے 15:55:56 پر ایک گندی (dirty) شٹ ڈاؤن ریکارڈ کی — بجلی چلی گئی۔ یہ 3 گھنٹے 31 منٹ بند رہی، اور 19:26:31 پر بحال ہوئی۔
مارجن 65 منٹ 53 سیکنڈ تھا۔ وائپ نے ایک خالی کمرے کو نشانہ بنایا: ہر بائٹ پہلے ہی origin پر موجود تھا، اور مشین دونوں ریپوز پر صاف ٹریز کے ساتھ واپس آئی۔ سب سے تنگ بچاؤ تو مہر بھی نہ تھی — تقریباً 33-منٹ کا حتمی تصدیقی پاس 14:50 تک چلا۔ ایک گھنٹہ پہلے ہوتا تو بندش اسے ٹیسٹ سویٹ کے بیچوں بیچ ختم کر دیتی۔ جیسا کہ ہوا: صفر نقصان۔
یہ کیا ثابت کرتا ہے
دوڑ کا نکتہ یہ نہیں کہ یہ تیز تھی، اگرچہ تھی۔ نکتہ یہ ہے کہ اس پوسٹ میں موجود ہر دعوے کے پیچھے ایک عدد ہے، اور ہر عدد کو دعوے کے بجائے ماپا گیا: سائیکل کے اوقات pull-request کے ٹائم اسٹیمپس سے آتے ہیں، diff کے مجموعے git سے، ٹیسٹ کی گنتی سویٹ کے آؤٹ پٹ سے، اور بندش kernel-power ایونٹ سے۔ ایک ایجنٹ بیڑا بغیر نگرانی کے ڈیڑھ دن کی حقیقی انجینئرنگ کر سکتا ہے — اور یہ اتنا صاف نشان چھوڑ سکتا ہے کہ آپ کو کسی کی بات پر بھروسا نہ کرنا پڑے۔
تمام ٹائم اسٹیمپس US Eastern (UTC−4) ہیں، جو git کی تاریخ، GitHub API، اور Windows ایونٹ لاگ (Event 6008 / Kernel-Power 41) سے دوبارہ ترتیب دیے گئے ہیں۔ CandyRush اور UTools ریپازٹریاں نجی ہیں؛ یہاں موجود ہر عدد ماپا گیا ڈیٹا ہے، اندازہ نہیں۔