دوسرا آدھا حصہ
چیزیں جو میں نے اس لیے بنائیں کہ میں چاہتا تھا وہ موجود ہوں۔
PANTHEON اصل کام ہے۔ یہ وہ ہے جو یہی جبلتیں تب پیدا کرتی ہیں جب نتیجے کی قیمت کوئی ادا نہیں کر رہا ہوتا: ڈیسک ٹاپ پر ایک حقیقی آسمان، بغیر dependencies کے ایک ایفیمیرس، اور ایک ٹرمینل جو ڈرا کر سکتا ہے۔ نظم و ضبط وہی ہے؛ صرف داؤ بدلتا ہے۔
GNOME Shell · GPL-2.0 · ★3
TerraFirma: آپ کے وال پیپر پر ایک حقیقی آسمان۔
آسمان کی اینیمیشن نہیں۔ اصل آسمان، جو آپ کے عرض بلد، طول بلد اور گھڑی کے مطابق ephemeris سے حساب کیا گیا ہے۔
hot loop جان بوجھ کر قابلِ پیمائش ہے
پروجیکشن اور فضا کا حساب skymath.js میں ہے، جو GNOME Shell سے کچھ بھی import نہیں کرتی۔ جو فائل صرف ایک سیشن کے اندر چل سکتی ہو، اس کے بارے میں صرف اندازہ لگایا جا سکتا ہے؛ جو الگ سے چل سکے، اس کا وقت ناپا جا سکتا ہے۔ یہ حد اسی منطق پر ہے جس پر وہ purity lint ہے جو PANTHEON کے core کو اس کی app layer سے الگ رکھتا ہے۔
ستاروں کا کیٹلاگ اور ephemeris فریقِ ثالث کے ہیں اور NOTICE.md میں ان کا حوالہ دیا گیا ہے۔ اسے کوئی تاریخ دیں، پھر اوپر دیکھیں، اس قسم کے سافٹ ویئر کے لیے یہی واحد امتحان ہے جو معنی رکھتا ہے۔
ہاٹ لوپ کو باہر کیوں منتقل کرنا پڑا → · GitHub پر TerraFirma ↗
الگ کیے گئے، اور شائع کیے گئے
اس سے نکلنے والے تین پیکیجز۔
وہی طریقہ جو PANTHEON کے چھ کے ساتھ اپنایا: چیز بنائیں، وہ حصہ تلاش کریں جو واقعی دوبارہ قابلِ استعمال ہو، اسے الگ کریں، اور اسے اس کی اپنی شرائط پر شائع کریں۔ تینوں MIT ہیں اور ابھی انسٹال کیے جا سکتے ہیں۔
braillecanvas v0.4.0 · MIT
Braille فی character cell 2×4 نقطے address کرتا ہے، اس لیے 80×24 کا terminal دراصل 160×96 کا canvas ہے۔ یہی rendering اور ASCII art کا فرق ہے۔
دلچسپ حصہ رنگ ہے۔ ہر سیل دو رنگ رکھتا ہے، ایک روشن نقطوں کے لیے، ایک خالی جگہوں کے لیے، تاکہ کسی کنارے پر پھیلا ہوا سیل، جیسے آسمان کے مقابل جلد، اس کنارے کو برقرار رکھے بجائے اس کے کہ اسے اوسط کر کے گدلا کر دے۔ اس تصویر پر فی نقطہ اوسط رنگ کی غلطی 45.7 سے 21.3 تک گر جاتی ہے۔
ہر cell میں کون سے نقطے روشن ہوں، یہ چننا، بجائے اس کے کہ pattern ایک مقررہ dither grid سے لیا جائے، texture سے خالی cells کو 35.1% سے 1.6% تک کم کر دیتا ہے۔
اس کی اپنی README میں بیان کردہ دو حدود: تقریباً 90 کالمز سے کم پر تصاویر کام کرنا چھوڑ دیتی ہیں، اور مونوکروم یہ تصویر بالکل رینڈر نہیں کر سکتا، اس کا چہرہ 159 luminance ناپتا ہے جبکہ اس کے پیچھے آسمان 192، اس لیے 1-bit رینڈر اپنی ساخت کے لحاظ سے ہی ایک سلوئٹ ہوتا ہے۔
skymaths v0.1.2 · MIT
بغیر dependencies کے فلکیاتی مقامات کا حساب: سورج، چاند، سیارے، شفق، طلوع و غروب۔ TerraFirma کے ephemeris سے نکالا گیا، پھر درست کیا گیا: جو Espenak–Meeus polynomial یہ استعمال کرتا تھا وہ صرف 1900–1920 کے لیے شائع شدہ ہے اور اسے 1986 پر لاگو کیا جا رہا تھا، جس سے 1950 کے لیے −534 سیکنڈ آ رہے تھے جبکہ ناپی گئی قدر +29 ہے۔ یہ اسے خود اپنے مقابلے کے بجائے ایک شائع شدہ almanac سے جانچ کر پکڑا گیا۔
یہ اسی سائٹ پر چل رہا ہے: ڈارک موڈ میں پس منظر Perseids کی رات، 13 August 2026، کو Cardiff کے اوپر کا آسمان ہے، جو آپ کے براؤزر میں حساب کیا جاتا ہے: 5,044 ستارے اپنے اصل رنگوں میں، چاند کا مرحلہ، اور سیارے وہیں جہاں وہ اس وقت تھے۔ گھومنے کے لیے اسکرول کریں۔
npm i skymaths · npm ↗ · سورس ↗
starwheel v0.2.3 · MIT · ★4
آپ کے ٹرمینل میں ایک لائیو planisphere، آپ کے مقام اور منٹ کے لیے ستاروں کی حقیقی پوزیشنز، braillecanvas پر بنائی گئی۔ میری سب سے زیادہ stars والی repository، اور وہی جس نے مجھے سکھایا کہ شائع شدہ pixels کو ہلانے والا fix دو بار ایک جیسا fix نہیں ہوتا: یہ جان بوجھ کر iterations کو محدود کرتا ہے جہاں اس کا ساتھی clip کرتا ہے۔
/proc ڈیٹا پلاٹ کرتا ہے: CPU، میموری اور load average، ایک rolling window پر۔ چارٹس 90 کالم کی اس حد سے بہت نیچے بھی کام کرتے ہیں جو تصاویر کو درکار ہوتی ہے، کیونکہ وہ پہلے ہی high-contrast ہوتے ہیں۔اسی صفحے پر، ابھی
آرٹ تخلیق شدہ ہے، اور seed باہر نہیں نکل سکتا۔
اس سائٹ پر آرٹ کا ہر نمونہ: اوپر والا hero، favicon، سوشل کارڈز، اوتار، PANTHEON کے اپنے جنریٹر سے آتا ہے۔ متعین (deterministic) اور seeded: ایک ہی seed ہر بار ایک ہی تصویر دیتا ہے۔
دونوں طرف ایک ہی contract
ایک سرور سائیڈ انجن سوشل کارڈز اور ٹیننٹ سائٹس رینڈر کرتا ہے؛ ایک براؤزر انجن وہ اینیمیٹڈ ورژن بناتا ہے جو آپ دیکھ رہے ہیں۔ اصول ایک ہی ہے: سیڈ اندر، قابلِ تکرار آرٹ باہر۔
ساخت کے لحاظ سے injection سے محفوظ
seed صرف PRNG کو فیڈ کرتا ہے اور کچھ اور نہیں۔ اسے کبھی markup یا style میں interpolate نہیں کیا جاتا۔ ایک ٹیننٹ نام جو دراصل payload ہو، ایک مختلف تصویر بناتا ہے؛ وہ script tag نہیں بناتا۔ باقی سسٹم والی وہی جبلت، سجاوٹ پر لاگو۔
انسٹال کے قابل، صرف پڑھنے کے لیے نہیں
چھ ضمانتیں، الگ کر کے شائع کی گئیں۔
ہر ایک PANTHEON سے ایک واحد قابلِ تصدیق وعدے کے طور پر نکلا، پھر PyPI پر گیا تاکہ اپنے بل پر کھڑا ہو سکے۔ مخالفانہ (adversarial) AI ایجنٹس نے، جو خود چلائے گئے، آزاد نہیں، ان کا سطر بہ سطر جائزہ لیا اور حقیقی نقائص پائے؛ نیچے دیے گئے ورژن ان اصلاحات کے بعد کے ہیں، ہر ایک کی تصدیق registry سے ایک صاف ماحول میں انسٹال کر کے اور جائزہ کار کی اپنی reproduction دوبارہ چلا کر کی گئی، build log پر بھروسہ کر کے نہیں۔
pantheon-guardrails v0.3.2 · Apache-2.0
ایک constitution scorer جو LLM judge صرف زیادہ داؤ والے جوابات پر استعمال کرتا ہے، اور شرط رکھتا ہے کہ وہ judge جنریٹر سے مختلف ماڈل ہو تاکہ دونوں کے blind spots مشترک نہ ہوں۔ پہلے یہ حد سے باہر اسکور کو اوپر کی طرف clamp کر دیتا تھا: {"clarity": 99} لوٹانے والے judge کو پورا 1.0 ملتا اور وہ ہر threshold پاس کر لیتا: ایک guardrail جو fail open ہو رہا تھا۔ اب جو judge exception اٹھائے، رک جائے یا بے معنی نتیجہ لوٹائے، وہ ایک واضح ناکام evaluation ہے جو بطورِ default بلاک کرتی ہے۔
pantheon-ssrf-guard v0.2.1 · Apache-2.0
دو تہوں والا SSRF egress guard جو DNS rebinding کے باوجود قائم رہتا ہے: یہ connect کے وقت اس IP کو دوبارہ جانچتا ہے جس تک socket واقعی پہنچا، اس لیے جو host پہلے public IP پر resolve ہو اور پھر loopback یا cloud metadata پر rebind ہو جائے، اسے مسترد کر دیا جاتا ہے۔ Review میں پتا چلا کہ opener پھر بھی file:// URLs پڑھ لیتا تھا، کیونکہ Python بطور default دوسری schemes کے handlers انسٹال کرتا ہے؛ اب boundary پر ایک واضح http/https allowlist ہے، redirects سمیت، اور environment proxies بند رہتی ہیں جب تک آپ خود انہیں نہ مانگیں۔
pantheon-tool-sanitizer v0.3.0 · Apache-2.0
غیر معتبر MCP ٹول ٹیکسٹ سے ٹول پروٹوکول مارک اپ اور Unicode اسمگلنگ کو ایجنٹ کے پرامپٹ تک پہنچنے سے پہلے ہٹا دیتا ہے۔ اس کا دائرہ دیانت داری سے متعین ہے: یہ سادہ نثر والی انجیکشن روکنے کا دعویٰ نہیں کرتا، کیونکہ وہ string کا نہیں بلکہ آرکیٹیکچر کا مسئلہ ہے۔ جائزے سے دو اصلاحات: 256 kB کا ایک مخالفانہ ان پٹ 26 سیکنڈ CPU لیتا تھا اور اب سیدھا مسترد کر دیا جاتا ہے، اور "Read\nthe\tfile" اب "Readthefile" نہیں بنتا، کیونکہ لائن بریک لفظ کی حد ہے۔
credit-ledger v0.3.0 · Apache-2.0
Postgres پر تقریباً 150 لائنوں میں overdraft-proof metering: 50 کے بیلنس پر 100 متوازی charges، اور ٹھیک 50 کامیاب ہوتے ہیں۔ webhook replays کے باوجود exactly-once billing، اور row-level security کے ذریعے نافذ علیحدگی۔ شائع شدہ build پہلے ایک منفی charge قبول کر لیتا تھا، جو گاہک کو ادائیگی کر دیتا تھا، اور column کی precision سے کم رقوم بھی، جو کامیابی رپورٹ کرتے ہوئے 0.0000 بل کرتی تھیں۔ اب ایک ہی رقم کا اصول ہر راستے پر لاگو ہوتا ہے، اور پہلے سے موجود ڈیٹابیسز کے لیے ایک ٹیسٹ شدہ migration موجود ہے۔
pantheon-ical v0.3.1 · Apache-2.0
بکنگ کیلنڈرز کے لیے round-trip iCal (RFC 5545)، 200 سے کم سطروں میں۔ چھوٹ جانے والا مصروف وقفہ خالی پڑھا جاتا ہے، اس لیے خاموشی ہی خطرناک ناکامی ہے: حد سے بڑا کیلنڈر کاٹنے کے بجائے مسترد کر دیا جاتا ہے، اور جو recurring rule حد سے بڑھ جائے وہ چھوٹی فہرست لوٹانے کے بجائے یہ بات بتا دیتا ہے۔ آخری اصلاح نے نتیجے کے ساتھ ساتھ کام کو بھی محدود کیا: ایک سطر کا مخالفانہ rule مسترد ہونے سے پہلے 76 سیکنڈ میں 34 ملین occurrences بنا دیتا تھا؛ اب یہ 401 پر رک جاتا ہے۔
pantheon-rls v0.1.1 · Apache-2.0
ٹیننٹ آئسولیشن ایپلیکیشن کی عادت کے بجائے Postgres کی ضمانت کے طور پر: force-RLS کے ساتھ کم از کم استحقاق والی grants، تاکہ ڈیٹا بیس خود کراس ٹیننٹ reads اور writes سے انکار کر دے۔ ساخت کے لحاظ سے fail-closed، ٹیننٹ context نہ ہو تو صفر rows واپس آتی ہیں، کبھی تمام rows نہیں، اور یہی وہ ناکامی کی صورت ہے جو اس وقت اہم ہوتی ہے جب کوئی بگ رات 3 بجے پروڈکشن تک پہنچ جائے۔
اوپر کی ہر اصلاح اسی طرح آئی: پہلے نقص کو دوبارہ پیدا کریں، علامت کے بجائے boundary کو ٹھیک کریں، پھر ثابت کریں کہ bug واپس ڈالنے پر نیا ٹیسٹ فیل ہوتا ہے۔ جو ٹیسٹ فیل نہیں ہو سکتا وہ ثبوت نہیں ہے۔
یہ کس پر چلتا ہے
اسٹیک عام سا ہے۔ حد عام نہیں۔
Python 3.12، FastAPI، Postgres، Redis، Vite کے ساتھ React، nginx کے پیچھے ایک Dockerfile۔ ان میں سے کوئی بھی قابلِ تعریف فیصلہ نہیں، یہ وہ حصے ہیں جو آپ اس لیے چنتے ہیں کہ آپ کی توجہ کسی ایسی جگہ جا سکے جہاں اس کی اہمیت ہو۔
146 فائلیں · 14,002 لائنیں
pantheon-core: بنیادی تہہ۔ معاہدے کے تحت ڈومین سے آزاد: یہ residents یا bundles سے import نہیں کر سکتا، اور اگر ایسا ہو تو دو آزاد جانچیں CI کو فیل کر دیتی ہیں۔
210 فائلیں · 24,216 لائنیں
ٹیسٹ، Python کی 38,816 سطروں کے مقابل۔ میں implementation ہاتھ سے نہیں لکھتا، اس لیے suite کوئی حفاظتی جال نہیں۔ یہ specification ہے، اور یہی وہ چیز ہے جو میں درحقیقت تصنیف کرتا ہوں۔
پانچ پرتیں، ایک راستہ
architect · runtime · guardrails · substrate · primitives، جبکہ providers جان بوجھ کر stack سے باہر ہے، کیونکہ یہ بیک وقت دو layers کے نیچے بیٹھتا ہے اور contract جھکنے کے بجائے یہ بات کھل کر کہتا ہے۔
اسی حد کی وجہ سے چھ components کو الگ کر کے standalone libraries کے طور پر شائع کیا جا سکا، extraction زیادہ تر ان فائلوں کو منتقل کرنا تھا جنہیں کبھی نیچے کی طرف پہنچنے کی اجازت نہیں دی گئی تھی۔ تفصیلی ورژن، بشمول وہ حصہ جو میں نے غلط کیا →
وہی شخص، وہی اصول، کم داؤ۔
کوئی وال پیپر کا آڈٹ نہیں کرتا۔ یہ اس طرح اس لیے بنے ہیں کہ میں بنانے کا یہی ایک طریقہ جانتا ہوں: اسے ناپو، دوبارہ قابلِ استعمال حصہ الگ کرو، اس کے ساتھ اس کی حدود شائع کرو، اور اعداد کو پروگرام سے باہر کی کسی چیز کے مقابل جانچو۔
اس کام کے کسی بھی حصے کے بارے میں پوچھیں۔
- Isaac کس کردار کی تلاش میں ہیں؟
- ان میں سے کون سا production میں چل رہا ہے؟
- مجھے ایک حقیقی bug دکھائیں جو انہوں نے ڈھونڈا اور ٹھیک کیا