दूसरा आधा
चीज़ें जो मैंने इसलिए बनाईं क्योंकि मैं चाहता था कि वे मौजूद हों।
PANTHEON असली काम है। यह वह है जो वही सहज प्रवृत्तियाँ तब बनाती हैं जब नतीजे के लिए कोई भुगतान नहीं कर रहा: डेस्कटॉप पर एक असली आकाश, बिना किसी dependency वाला एक ephemeris, और एक टर्मिनल जो चित्र बना सकता है। अनुशासन वही है; केवल दांव बदलते हैं।
GNOME Shell · GPL-2.0 · ★3
TerraFirma: आपके वॉलपेपर पर असली आकाश।
आकाश का कोई animation नहीं। असली आकाश, आपके latitude, longitude और घड़ी के लिए ephemeris से गणना किया हुआ।
हॉट लूप जानबूझकर मापने-योग्य है
प्रोजेक्शन और वायुमंडल skymath.js में रहते हैं, जो GNOME Shell से कुछ भी import नहीं करता। जो फ़ाइल केवल एक session के अंदर चल सकती है, उसके बारे में केवल अनुमान लगाया जा सकता है; जो standalone चलती है, उसका समय मापा जा सकता है। यह सीमा उसी तर्क पर टिकी है जिस पर वह purity lint टिका है जो PANTHEON के core को उसकी app layer से बाहर रखता है।
तारा सूची और ephemeris तृतीय-पक्ष के हैं और NOTICE.md में उनका श्रेय दिया गया है। इसे किसी तारीख पर सेट करें, फिर ऊपर देखें, इस तरह के सॉफ़्टवेयर के लिए यही एकमात्र परीक्षण है जो मायने रखता है।
अलग किए गए, और प्रकाशित
इससे निकले तीन पैकेज।
वही पैटर्न जो PANTHEON के छह में है: चीज़ बनाओ, वह हिस्सा खोजो जो सच में दोबारा इस्तेमाल योग्य है, उसे अलग करो, और उसे अपनी शर्तों पर प्रकाशित करो। तीनों MIT हैं और अभी इंस्टॉल किए जा सकते हैं।
braillecanvas v0.4.0 · MIT
Braille हर character cell में 2×4 dots को address करता है, इसलिए 80×24 terminal असल में 160×96 का canvas है। rendering और ASCII art में यही अंतर है।
दिलचस्प हिस्सा रंग है। हर cell दो रंग रखता है, एक जले हुए dots के लिए, एक gaps के लिए, ताकि किसी किनारे पर पड़ने वाला cell, आसमान के सामने त्वचा, उस किनारे को बनाए रखे, न कि उसे औसत करके कीचड़ जैसा बना दे। इस image पर प्रति-dot औसत रंग त्रुटि 45.7 से 21.3 तक गिरती है।
किसी स्थिर डिथर ग्रिड से पैटर्न लेने के बजाय हर सेल में कौन-से डॉट जलें यह चुनने से टेक्सचर-रहित सेल 35.1% से घटकर 1.6% रह जाते हैं।
इसके अपने README में बताई गई दो सीमाएँ: लगभग 90 कॉलम से कम पर तस्वीरें काम करना बंद कर देती हैं, और मोनोक्रोम इस तस्वीर को बिल्कुल रेंडर नहीं कर सकता, उसके चेहरे की ल्यूमिनेंस 159 है जबकि उसके पीछे के आसमान की 192, इसलिए 1-bit रेंडर अपनी बनावट से ही एक सिल्हूट होता है।
skymaths v0.1.2 · MIT
बिना किसी dependency के पोज़िशनल खगोलविज्ञान, सूर्य, चंद्रमा, ग्रह, गोधूलि, उदय और अस्त। TerraFirma के ephemeris से निकाला गया, फिर सुधारा गया: इसमें इस्तेमाल हुआ Espenak–Meeus बहुपद केवल 1900–1920 के लिए प्रकाशित है और उसे 1986 पर लागू किया जा रहा था, जिससे 1950 के लिए −534 सेकंड आ रहे थे, जबकि मापा गया मान +29 है। इसे खुद से नहीं, बल्कि एक प्रकाशित पंचांग से मिलाकर पकड़ा गया।
यह इसी साइट पर चल रहा है: डार्क मोड में बैकग्राउंड 13 अगस्त 2026 को पर्सीड्स की रात कार्डिफ़ के ऊपर का आकाश है, जिसकी गणना आपके ब्राउज़र में होती है: 5,044 तारे अपने असली रंगों में, चंद्रमा की कला, और ग्रह वहीं जहाँ वे उस समय थे। घुमाने के लिए स्क्रॉल करें।
npm i skymaths · npm ↗ · सोर्स ↗
starwheel v0.2.3 · MIT · ★4
आपके टर्मिनल में एक लाइव प्लैनिस्फ़ीयर: आपके स्थान और मिनट के लिए तारों की वास्तविक स्थितियाँ, braillecanvas पर बनाई गई। मेरी सबसे ज़्यादा star वाली repository, और वही जिसने मुझे सिखाया कि प्रकाशित pixels को हिलाने वाला fix दोबारा वही fix नहीं होता: जहाँ इसका sibling clip करता है, वहाँ यह जानबूझकर iterations को सीमित करता है।
/proc डेटा प्लॉट करता है: एक रोलिंग विंडो पर CPU, मेमोरी और लोड एवरेज। चार्ट 90-कॉलम की उस निचली सीमा से काफ़ी नीचे भी काम करते हैं जो फ़ोटो के लिए ज़रूरी है, क्योंकि वे पहले से ही हाई-कॉन्ट्रास्ट होते हैं।इसी पेज पर, अभी
कला जनरेट की जाती है, और seed बाहर नहीं निकल सकता।
इस साइट की हर कलाकृति: ऊपर का हीरो, favicon, सोशल कार्ड, अवतार, PANTHEON के अपने जनरेटर से आती है। नियतात्मक और seeded: एक ही seed से हर बार एक ही इमेज।
दोनों तरफ़ एक ही अनुबंध
एक सर्वर-साइड इंजन सोशल कार्ड और टेनेंट साइटें रेंडर करता है; एक ब्राउज़र इंजन वह एनिमेटेड संस्करण बनाता है जो आप देख रहे हैं। नियम वही: seed अंदर, दोहराई जा सकने वाली कला बाहर।
बनावट से ही इंजेक्शन-सुरक्षित
Seed सिर्फ़ PRNG को जाता है और कहीं नहीं। इसे कभी markup या style में interpolate नहीं किया जाता। कोई tenant name जो असल में payload है, एक अलग तस्वीर बनाता है; वह script tag नहीं बनाता। वही सहज प्रवृत्ति जो बाकी सिस्टम में है, सजावट पर लागू।
install करने योग्य, सिर्फ़ पढ़ने योग्य नहीं
छह गारंटियाँ, अलग निकालकर प्रकाशित।
हर एक PANTHEON से एक अकेले, सत्यापन-योग्य वादे के रूप में निकला, फिर PyPI पर गया ताकि वह अपने दम पर खड़ा रहे। विरोधी AI एजेंटों ने, जिन्हें मैंने खुद चलाया, स्वतंत्र नहीं, इन्हें पंक्ति-दर-पंक्ति जाँचा और असली खामियाँ पाईं; नीचे दिए गए संस्करण उन सुधारों के बाद के हैं, और हर एक को बिल्ड लॉग पर भरोसा करके नहीं, बल्कि रजिस्ट्री से एक साफ़ वातावरण में इंस्टॉल करके और समीक्षक का अपना रिप्रोडक्शन दोबारा चलाकर सत्यापित किया गया।
pantheon-guardrails v0.3.2 · Apache-2.0
एक constitution स्कोरर जो LLM जज का उपयोग केवल उच्च-जोखिम वाले उत्तरों पर करता है, और यह ज़रूरी करता है कि वह जज जनरेटर से अलग मॉडल हो ताकि दोनों की कमज़ोरियाँ साझा न हों। पहले यह सीमा से बाहर के स्कोर को ऊपर की ओर क्लैंप कर देता था: {"clarity": 99} लौटाने वाले जज को पूरा 1.0 स्कोर मिलता था और वह हर थ्रेशोल्ड पार कर जाता था: यानी एक गार्डरेल जो विफल होने पर खुला रह जाता था। अब जो जज एरर देता है, अटक जाता है या बेतुका उत्तर लौटाता है, वह एक स्पष्ट विफल मूल्यांकन माना जाता है जो डिफ़ॉल्ट रूप से ब्लॉक करता है।
pantheon-ssrf-guard v0.2.1 · Apache-2.0
एक दो-परत वाला SSRF egress guard जो DNS rebinding से बचा रहता है: यह connect के समय उस IP की दोबारा जाँच करता है जिस तक socket वास्तव में पहुँचा, इसलिए जो host पहले public resolve होता है और फिर loopback या cloud metadata पर rebind होता है, उसे अस्वीकार कर दिया जाता है। समीक्षा में पता चला कि opener अब भी file:// URLs पढ़ लेता था, क्योंकि Python डिफ़ॉल्ट रूप से दूसरी schemes के लिए handlers install करता है; अब boundary पर एक स्पष्ट http/https allowlist है, redirects समेत, और environment proxies तब तक बंद रहती हैं जब तक आप उन्हें न माँगें।
pantheon-tool-sanitizer v0.3.0 · Apache-2.0
अविश्वसनीय MCP टूल टेक्स्ट के एजेंट के prompt तक पहुँचने से पहले, उसमें से tool-protocol markup और Unicode smuggling हटाता है। दायरा ईमानदारी से तय है: यह सादे गद्य वाले injection को रोकने का दावा नहीं करता, जो string की नहीं बल्कि architecture की समस्या है। समीक्षा से दो सुधार: एक 256 kB adversarial input CPU के 26 सेकंड लेता था और अब सीधे अस्वीकार कर दिया जाता है, और "Read\nthe\tfile" अब "Readthefile" नहीं बनता, क्योंकि line break एक शब्द-सीमा है।
credit-ledger v0.3.0 · Apache-2.0
लगभग 150 पंक्तियों में Postgres पर overdraft-proof metering: 50 के balance के विरुद्ध 100 समानांतर charges और ठीक 50 सफल होते हैं, webhook replays के बावजूद exactly-once billing, row-level security द्वारा लागू isolation। प्रकाशित build पहले एक ऋणात्मक charge स्वीकार कर लेता था, जिससे ग्राहक को भुगतान हो जाता था, और column की precision से छोटी राशियाँ भी, जो सफलता दर्ज करते हुए 0.0000 bill करती थीं। अब एक ही amount नियम हर path को कवर करता है, और पहले से मौजूद databases के लिए एक परीक्षित 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
टेनेंट आइसोलेशन, application की आदत के बजाय Postgres की गारंटी के रूप में: force-RLS और least-privilege grants, ताकि डेटाबेस खुद क्रॉस-टेनेंट reads और writes से इनकार करे। बनावट से ही fail-closed: टेनेंट संदर्भ न हो तो शून्य पंक्तियाँ लौटती हैं, कभी सभी पंक्तियाँ नहीं, और यही वह विफलता का तरीका है जो मायने रखता है जब कोई बग रात 3 बजे प्रोडक्शन तक पहुँचता है।
ऊपर का हर सुधार एक ही तरह आया: पहले खामी को दोहराएँ, लक्षण के बजाय सीमा को ठीक करें, फिर साबित करें कि बग वापस डालने पर नया टेस्ट फ़ेल होता है। जो टेस्ट फ़ेल नहीं हो सकता, वह सबूत नहीं है।
यह किस पर चलता है
स्टैक साधारण है। सीमा नहीं।
Python 3.12, FastAPI, Postgres, Redis, Vite के साथ React, nginx के पीछे एक Dockerfile। इनमें से कोई भी सराहने लायक फ़ैसला नहीं है, ये वे हिस्से हैं जिन्हें आप इसलिए चुनते हैं ताकि आपका ध्यान किसी ऐसी चीज़ पर जा सके जो मायने रखती है।
146 फ़ाइलें · 14,002 पंक्तियाँ
pantheon-core: आधार परत। अनुबंध के अनुसार domain-agnostic: यह residents या bundles से import नहीं कर सकता, और ऐसा करने पर दो स्वतंत्र जाँचें CI को फेल कर देती हैं।
210 फ़ाइलें · 24,216 पंक्तियाँ
टेस्ट, Python की 38,816 पंक्तियों के विरुद्ध। मैं इम्प्लीमेंटेशन हाथ से नहीं लिखता, इसलिए यह सुइट कोई सेफ़्टी नेट नहीं है। यही स्पेसिफ़िकेशन है, और यही वह चीज़ है जिसे मैं वास्तव में लिखता हूँ।
पाँच परतें, एक ही रास्ता
architect · runtime · guardrails · substrate · primitives, जिसमें providers जानबूझकर स्टैक से बाहर है, क्योंकि वह एक साथ दो परतों के नीचे बैठता है और कॉन्ट्रैक्ट इसे झुकाने के बजाय खुलकर कहता है।
उसी सीमा की वजह से छह components को निकालकर standalone libraries के रूप में प्रकाशित किया जा सका, extraction ज़्यादातर उन फ़ाइलों को हटाने का काम था जिन्हें कभी नीचे की ओर पहुँचने की अनुमति नहीं दी गई थी। विस्तृत संस्करण, उस हिस्से समेत जो मैंने ग़लत किया →
वही व्यक्ति, वही नियम, कम दांव।
वॉलपेपर का कोई ऑडिट नहीं करता। ये जिस तरह बने हैं उसका कारण यह है कि मुझे बनाने का यही एक तरीका आता है: इसे मापो, दोबारा इस्तेमाल होने लायक हिस्सा निकालो, उसके साथ उसकी सीमाएँ प्रकाशित करो, और संख्याओं को प्रोग्राम के बाहर की किसी चीज़ से जाँचो।
इस काम के किसी भी हिस्से के बारे में पूछें।
- Isaac किस भूमिका की तलाश में हैं?
- इनमें से कौन-सा प्रोडक्शन में चल रहा है?
- मुझे एक असली बग दिखाएँ जो उन्होंने खोजा और ठीक किया