druga połowa
Rzeczy, które zbudowałem, bo chciałem, żeby istniały.
PANTHEON to moja praca. A to jest to, co te same instynkty tworzą, gdy nikt nie płaci za wynik: prawdziwe niebo na pulpicie, efemerydy bez zależności i terminal, który potrafi rysować. Dyscyplina jest identyczna, zmienia się tylko stawka.
GNOME Shell · GPL-2.0 · ★3
TerraFirma: prawdziwe niebo nad twoją tapetą.
To nie animacja nieba. To prawdziwe niebo, obliczone z efemerydy dla twojej szerokości i długości geograficznej oraz twojego zegara.
Gorąca pętla jest celowo mierzalna
Projekcja i atmosfera znajdują się w skymath.js, który niczego nie importuje z GNOME Shell. Plik, który działa tylko wewnątrz sesji, można jedynie zgadywać; plik, który działa samodzielnie, można zmierzyć. Ta granica wynika z tego samego rozumowania co lint czystości, który trzyma rdzeń PANTHEON z dala od jego warstwy aplikacji.
Katalog gwiazd i efemerydy pochodzą od stron trzecich i są wymienione w NOTICE.md. Ustaw datę, a potem spójrz w górę: dla tego rodzaju oprogramowania to jedyny test, który się liczy.
Dlaczego gorąca pętla musiała zostać wyniesiona → · TerraFirma w serwisie GitHub ↗
wyodrębnione i opublikowane
Trzy pakiety, które z tego powstały.
Ten sam wzorzec co przy szóstce PANTHEON: zbuduj rzecz, znajdź element, który naprawdę nadaje się do ponownego użycia, wyodrębnij go i opublikuj na jego własnych zasadach. Wszystkie trzy są na licencji MIT i można je zainstalować już teraz.
braillecanvas v0.4.0 · MIT
Braille adresuje 2×4 punkty na komórkę znaku, więc terminal 80×24 to w rzeczywistości płótno 160×96. Na tym polega różnica między renderowaniem a ASCII art.
Najciekawszy jest kolor. Każda komórka niesie dwa kolory, jeden dla zapalonych punktów, drugi dla przerw, więc komórka leżąca na krawędzi, skóra na tle nieba, zachowuje tę krawędź, zamiast uśredniać ją w błoto. Średni błąd koloru na punkt na tym obrazie spada z 45.7 do 21.3.
Wybieranie, które kropki zapalają się w każdej komórce, zamiast brać wzór ze stałej siatki ditheringu, zmniejsza odsetek komórek bez tekstury z 35.1% do 1.6%.
Dwa ograniczenia opisane w README samego projektu: poniżej około 90 kolumn fotografie przestają działać, a monochrom w ogóle nie jest w stanie oddać tego obrazu, jej twarz ma luminancję 159 wobec 192 dla nieba za nią, więc render 1-bitowy jest z założenia sylwetką.
skymaths v0.1.2 · MIT
Astronomia pozycyjna bez zależności: Słońce, Księżyc, planety, zmierzch, wschody i zachody. Wyodrębniona z efemeryd TerraFirma, a następnie poprawiona: wielomian Espenaka–Meeusa, którego używała, jest opublikowany tylko dla lat 1900–1920, a był stosowany do 1986, co dawało −534 sekundy dla 1950 wobec zmierzonych +29. Wykryte przez porównanie z opublikowanym almanachem, a nie z samym sobą.
Działa na tej stronie: w trybie ciemnym tłem jest niebo nad Cardiff w noc Perseidów, 13 sierpnia 2026, obliczane w twojej przeglądarce: 5,044 gwiazd w ich prawdziwych kolorach, faza Księżyca i planety tam, gdzie wtedy były. Przewiń, aby się obrócić.
npm i skymaths · npm ↗ · kod źródłowy ↗
starwheel v0.2.3 · MIT · ★4
Planisfera na żywo w terminalu: rzeczywiste pozycje gwiazd dla twojej lokalizacji i minuty, rysowane na braillecanvas. Moje repozytorium z największą liczbą gwiazdek i to, które nauczyło mnie, że poprawka przesuwająca opublikowane piksele nie jest dwa razy tą samą poprawką: tutaj ogranicza liczbę iteracji tam, gdzie jej odpowiednik przycina, celowo.
npx starwheel · npm ↗ · kod źródłowy ↗
/proc: CPU, pamięć i średnie obciążenie w przesuwnym oknie czasowym. Wykresy działają daleko poniżej progu 90 kolumn, którego potrzebują zdjęcia, bo same w sobie są już wysokokontrastowe.na tej stronie, teraz
Grafika jest generowana, a ziarno nie może się wydostać.
Każda grafika na tej stronie: hero powyżej, favicon, karty społecznościowe, awatary, pochodzi z własnego generatora PANTHEON. Deterministycznego i opartego na ziarnie: to samo ziarno daje ten sam obraz, za każdym razem.
Ten sam kontrakt po obu stronach
Silnik po stronie serwera renderuje karty do mediów społecznościowych i strony tenantów; silnik w przeglądarce rysuje animowaną wersję, którą właśnie oglądasz. Ta sama zasada: na wejściu ziarno, na wyjściu powtarzalna grafika.
Odporne na wstrzykiwanie z samej konstrukcji
Ziarno zasila PRNG i nic więcej. Nigdy nie jest wstawiane do znaczników ani do stylu. Nazwa najemcy, która w rzeczywistości jest payloadem, rysuje inny obraz; nie rysuje znacznika script. Ten sam instynkt co w reszcie systemu, zastosowany do dekoracji.
do zainstalowania, nie tylko do czytania
Sześć gwarancji, wyodrębnionych i opublikowanych.
Każdy z nich powstał w PANTHEON jako pojedyncza, weryfikowalna obietnica, a potem trafił do PyPI, żeby istnieć samodzielnie. Adwersaryjni agenci AI, uruchamiani przeze mnie, nie niezależni, przeszli przez nie linijka po linijce i znaleźli prawdziwe defekty; poniższe wersje to te po tych poprawkach, każda zweryfikowana przez instalację z rejestru w czystym środowisku i ponowne uruchomienie reprodukcji recenzenta, a nie przez zaufanie logowi budowania.
pantheon-guardrails v0.3.2 · Apache-2.0
Oceniacz zgodności z konstytucją, który używa sędziego LLM tylko przy odpowiedziach o wysokiej stawce i wymaga, by ten sędzia był innym modelem niż generator, żeby oba nie miały wspólnych martwych punktów. Kiedyś przycinał wynik spoza zakresu w górę: sędzia zwracający {"clarity": 99} dawał idealne 1.0 i przechodził każdy próg: zabezpieczenie zawodzące w trybie otwartym. Teraz sędzia, który rzuca wyjątek, zawiesza się lub zwraca bzdury, oznacza jawnie nieudaną ewaluację, która domyślnie blokuje.
pantheon-ssrf-guard v0.2.1 · Apache-2.0
Dwuwarstwowa ochrona ruchu wychodzącego przed SSRF, odporna na DNS rebinding: w momencie połączenia ponownie sprawdza IP, do którego gniazdo faktycznie się połączyło, więc host, który rozwiązuje się na adres publiczny, a potem przełącza na loopback lub metadane chmury, zostaje odrzucony. Przegląd wykazał, że opener nadal odczytywałby adresy file://, bo Python domyślnie instaluje handlery dla innych schematów; teraz na granicy jest jawna lista dozwolonych http/https, łącznie z przekierowaniami, a proxy ze zmiennych środowiskowych są wyłączone, chyba że o nie poprosisz.
pantheon-tool-sanitizer v0.3.0 · Apache-2.0
Usuwa znaczniki protokołu narzędzi i przemyt Unicode z niezaufanego tekstu narzędzi MCP, zanim trafi on do promptu agenta. Uczciwie określony zakres: nie twierdzi, że zatrzymuje wstrzyknięcia zwykłą prozą, bo to problem architektury, a nie ciągów znaków. Dwie poprawki po przeglądzie: wrogie wejście o rozmiarze 256 kB zajmowało 26 sekund CPU i teraz jest od razu odrzucane, a "Read\nthe\tfile" nie zamienia się już w "Readthefile", bo podział wiersza jest granicą słowa.
credit-ledger v0.3.0 · Apache-2.0
Pomiar odporny na debet w Postgres w około 150 liniach: 100 równoległych obciążeń przy saldzie 50 i dokładnie 50 kończy się sukcesem, rozliczanie dokładnie raz przy ponownym odtwarzaniu webhooków, izolacja wymuszana przez zabezpieczenia na poziomie wierszy. Opublikowana wersja przyjmowała wcześniej obciążenie ujemne, które wypłacało pieniądze klientowi, oraz kwoty poniżej precyzji kolumny, co naliczało 0.0000 przy jednoczesnym zgłaszaniu sukcesu. Teraz jedna reguła kwot obejmuje każdą ścieżkę, a dla już istniejących baz danych jest przetestowana migracja.
pantheon-ical v0.3.1 · Apache-2.0
Obsługa iCal (RFC 5545) w obie strony dla kalendarzy rezerwacji w mniej niż 200 liniach. Pominięty okres zajętości odczytuje się jako wolny, więc cisza to niebezpieczna awaria: zbyt duży kalendarz jest odrzucany, a nie obcinany, a reguła powtarzania, która się przepełnia, mówi o tym, zamiast zwracać krótką listę. Ostatnia poprawka ograniczyła zarówno pracę, jak i wynik: jednolinijkowa wroga reguła budowała wcześniej 34 miliony wystąpień przez 76 sekund, zanim została odrzucona; teraz zatrzymuje się na 401.
pantheon-rls v0.1.1 · Apache-2.0
Izolacja tenantów jako gwarancja Postgres, a nie nawyk aplikacji: wymuszone RLS plus uprawnienia według zasady najmniejszych przywilejów, więc sama baza danych odmawia odczytów i zapisów między tenantami. Fail-closed z założenia: brak kontekstu tenanta zwraca zero wierszy, nigdy wszystkie wiersze, a właśnie ten tryb awarii ma znaczenie, gdy błąd trafi na produkcję o 3 w nocy.
Każda z powyższych poprawek powstała tak samo: najpierw odtwórz defekt, napraw granicę, a nie objaw, a potem udowodnij, że nowy test nie przechodzi, gdy błąd zostanie przywrócony. Test, który nie może nie przejść, nie jest dowodem.
na czym to działa
Stos technologiczny jest nudny. Granica nie.
Python 3.12, FastAPI, Postgres, Redis, React z Vite, jeden Dockerfile za nginx. Żadna z tych decyzji nie zasługuje na podziw, to elementy, które wybiera się po to, żeby uwaga mogła pójść tam, gdzie ma to znaczenie.
146 plików · 14,002 wierszy
pantheon-core: podłoże. Niezależne od domeny na mocy kontraktu: nie może importować z residents ani bundles, a dwie niezależne kontrole powodują niepowodzenie CI, gdy to robi.
210 plików · 24,216 linii
Testy, dla 38,816 linii Pythona. Nie piszę implementacji ręcznie, więc zestaw testów nie jest siatką bezpieczeństwa. To specyfikacja i to artefakt, którego faktycznie jestem autorem.
Pięć warstw, jedna droga
architect · runtime · guardrails · substrate · primitives, z providers celowo poza stosem, bo leży pod dwiema warstwami jednocześnie, a kontrakt mówi to wprost, zamiast się naginać.
Ta granica jest powodem, dla którego sześć komponentów dało się wyjąć i opublikować jako samodzielne biblioteki, wyodrębnianie polegało głównie na przenoszeniu plików, którym nigdy nie pozwolono sięgać w dół. Dłuższa wersja, łącznie z tym, w czym się pomyliłem →
Ta sama osoba, te same zasady, niższa stawka.
Nikt nie audytuje tapety. Te rzeczy są zbudowane tak, a nie inaczej, bo to jedyny znany mi sposób budowania: zmierzyć, wyodrębnić część wielokrotnego użytku, opublikować razem z nią jej ograniczenia i sprawdzić liczby względem czegoś spoza programu.
Zapytaj o dowolną część tej pracy.
- Jakiej roli szuka Isaac?
- Które z nich działa na produkcji?
- Pokaż mi prawdziwy błąd, który znalazł i naprawił