1 puan yazan GN⁺ 2025-06-29 | 1 yorum | WhatsApp'ta paylaş
  • Birleşik Krallık'taki pasaport başvuru sürecine bir bulmaca oyunu gibi bakıp, bu karmaşık başvuru sürecini Haskell ile programlayarak kurallara dökme deneyimi ele alınıyor
  • Çevrimiçi pasaport başvurusunda çeşitli belgeleri toplamak, karmaşık kuralları yorumlamak ve beklenmedik yan görevler sürecin temel eğlence unsurları olarak öne çıkıyor
  • Başvuru sürecinin mantığı, 'Constructive Logic' ile ilişkilendirilerek her bir ispatı destekleyen orijinal belgelerin zorunlu olduğu vurgulanıyor
  • Haskell'in LogicT monadı ve durum yönetimi (State) kullanılarak gerekli belge listesi ile Birleşik Krallık vatandaşlığı ispatının mantıksal yolları takip ediliyor
  • HMPO'nun pratikte en karmaşık ispat yolunu önce isteme eğiliminde olduğu, otomasyon araçlarının ise karmaşık hukuk yorumlarının sınırları nedeniyle yavaş benimsendiği belirtiliyor

Giriş: Pasaport başvurusunu bir oyun gibi görmek

  • Son dönemde programlama kullanarak çevrimiçi oyunları veya bulmacaları çözme eğilimi artarken, Birleşik Krallık'ın Passport Application süreci de bu gözle ele alınıyor
  • Passport Application, yaklaşık £100 maliyeti ve son derece minimalist metin tabanlı tasarımıyla Britanyalıların her 10 yılda bir oynadığı bir tür "macera-bulmaca-belge toplama oyunu" olarak tanımlanıyor
  • Bu oyunun amacı, çeşitli kamu kurumları üzerinden çeşitli kanıtlayıcı belgeleri (artefacts) toplayıp "bu başvuru sahibi Britanyalıdır" iddiasını karmaşık hukuki ölçütler altında kanıtlamak
  • Oyunun ödülü ise bir pasaport kitapçığı ve "bir sonraki oynanışın mümkün olduğu tarih"

Oyunun yapısı ve zorluk seviyesi

  • Kâğıt tabanlı çevrimdışı sürüm, taahhütlü posta ve doğrulama prosedürleriyle ilerliyor; her aşamada toplanması gereken belgeler yönergeler veya tablolar halinde sunuluyor
  • İlk prosedürler görece kolay olsa da oyun ilerledikçe çeşitli "yan görevler" ve engeller ortaya çıkıyor
    • Örneğin belirli bir mesleğe sahip bir tanıdıktan kimlik doğrulaması istemek, yabancı dildeki belgelerin onaylı çevirisini temin etmek, aileyle iş birliği içinde oynamak, her kamu kurumunun kendine özgü idari prosedürlerini keşfetmek

Deneyim: 'Yurt dışında doğmuş ilk çocuk' zorluğu

  • Yazar, kendi yerine küçük kızının 'yurt dışında doğmuş ilk çocuk' zorluk seviyesine girişiyor ve daha önceki çok sayıdaki deneyimine dayanarak bunun oldukça zor olacağını öngörüyor
  • Başlangıçta istenen belgelerin yarısının sonradan gereksiz olduğunun anlaşılması, belge talepleri ile açıklamaların oldukça muğlak ve kafa karıştırıcı biçimde tasarlandığını gösteriyor
  • Sorumlu inceleyiciyle (examiner) doğrudan iletişim kurulamıyor; yalnızca çağrı merkezi aracısı üzerinden gayriresmî yardım alınabiliyor
  • Sürekli ek belge talepleri ortaya çıkıyor, bazen var olmayan belgeler bile isteniyor; nadir aile atalarının doğum/evlilik belgelerini sunma talebi gibi durumlarla zorluk giderek artıyor

HMPO'nun mantığı: Bureaucratic Logic

  • Pasaport başvurusunun mantığı, Constructive Logicten türeyen bir Bureaucratic Logic (bürokratik mantık) olarak görülebilir
  • Basit bir "doğru/yanlış" ispatı yerine, her kurala karşılık gelen orijinal belge kanıtlarının doğrudan sunulması gerekiyor
  • Dışlanan orta (Excluded Middle) kabul edilmediğinden, "hangi senaryo olursa olsun biri doğrudur" şeklinde bir ispat geçerli değil; mutlaka tek bir yol izlenip o yola ait belgeler sunulmalı
  • Özellikle "Britishness", ebeveynlerin vatandaşlığına bağlı olduğundan belge talepleri aile ağacı biçiminde özyinelemeli olarak ilerliyor
    • Temel durum: 1983 öncesi Birleşik Krallık doğumu, vatandaşlığa kabul gibi ebeveyn kanıtı gerektirmeyen haller

Kuralları Haskell koduyla modellemek

  • Kuralları modülerleştirmek ve çıkarımı otomatikleştirmek amacıyla başvuru mantığı Haskell ile, özellikle LogicT monadı kullanılarak prototipleniyor
  • Person/Document/Proof gibi tipler tanımlanarak her koşula karşılık gelen farklı belgeyle ispat yolları modelleniyor
  • Britishness ispatı fonksiyonu, input (her person için bilgi) ile birlikte mümkün olan birden çok ispat yolunu (Set of Proofs) araştırıyor
  • Proof ağacını izleyerek gerekli asgari belge kombinasyonları (Set of Set Document) çıkarılıyor
  • StateT ve LogicT IO birleşimiyle etkileşimli sorgular ve ortak durum kullanımı sağlanıyor; "bilinen bilgiler"e göre dallanma ve geri izleme yapılıyor
  • Birleşik Krallık vatandaşlık yapısını analiz eden mantık şunları içeriyor:
    • Vatandaşlığa kabul kanıtı için tek yol
    • 1983 öncesi Birleşik Krallık doğumu durumunda koşullu (temel) yol
    • Ebeveyn üzerinden özyinelemeli ispat (yasal evlilik gibi ek koşullar dâhil)
    • Ebeveynin BOTBD (British Otherwise Than By Descent) olup olmamasına göre ek istisna yolu
    • Crown Service gibi istisna kuralları da kod içinde ele alınıyor

Örnek çalıştırma ve ispat yolları

  • ghci üzerinden, başvuru sahibinin doğum yeri ve ebeveynlerin vatandaşlığı gibi gerçek girdilere göre toplam 3 farklı ispat (Proof) yolu otomatik olarak çıkarılıyor
  • Her ispat yolu için talep edilen belgelerin (sertifikalar, evlilik belgeleri vb. kombinasyonları) listesi üretiliyor
  • En karmaşık yolda, atalardan başlayarak geriye giden özyinelemeli ispat ve evlilik ilişkisinin kanıtlanması gerektiği görülüyor

Tartışma ve sonuç

  • Gerçek hayatta HMPO'nun sanki özellikle en karmaşık ispat yolunu önce istiyormuş gibi göründüğü; fiilî hukuki çelişkiler veya ince ayrıntılı kuralların ise ayrı kılavuzlar ya da "balance of probabilities" ilkesiyle ele alındığı belirtiliyor
  • Otomasyon araçları yaygınlaşırsa başvuru sahipleri kendi ispat yollarını ve gerekli belgeleri çok daha kolay anlayabilir
  • Ancak hukuk son derece nüanslı ve değişken olduğu için, bilgisayarın basit bir "yes/no verdict" vermesine dayalı otomasyon riskli olabilir
  • Yazar şu anda ikinci ve üçüncü yol üzerinden ispat denemelerini sürdürüyor

Referans kod ve belge yapısının özeti

  • Haskell kodunun tamamı GitHub üzerinde görülebilir
  • Çeşitli tipler, ispat yolları, modül yapısı ve sorgu fonksiyonları dâhil Haskell mantığının ayrıntılı uygulaması incelenebilir

1 yorum

 
GN⁺ 2025-06-29
Hacker News yorumu
  • Son 10 yılda çeşitli büyük Birleşik Krallık devlet sistemlerinde çalışmış olma deneyimi anlatılıyor. Birleşik Krallık devlet yazılımı geliştirmek, yüzlerce yıllık parlamento yasalarını koda dökme süreci olarak açıklanıyor. HMPO pasaport sistemi gibi örneklerde, yasa değiştiğinde bu yasanın etkilediği tüm bölümlerin her sistemde bulunup düzeltilmesi gibi bir zorluk var. Devlet bu işi pahalı danışmanlık şirketlerine dış kaynak olarak veriyor; bu şirketler sözleşmeyi olabildiğince uzatıp müşteriden azami kâr elde etmeye teşvik ediliyor. Bu süreçte sistem kalitesi ve esnekliği tutarsız kalıyor ve yasa tekrar değiştiğinde aynı karmaşık süreç yeniden yaşanıyor. Merkezi olarak karar verip bu sorunu koordine edecek kurumların yetersiz olması nedeniyle kamu hizmetleri pahalılaşıyor.
    • Devlet dış kaynak kullanımının gerçekten birilerinde iyi sonuç verip vermediği merak ediliyor; devletin bir işi dışarı verip de başarılı olduğuna dair hiç hikâye duyulmadığı söyleniyor.
    • Dış kaynak firmalarının “çalışan sistem” konusunda neden sözleşmesel bir yükümlülüğü yokmuş gibi göründüğü soruluyor. Çalışıyor gibi görünen ama gerçekte düzgün işlemeyen sistemler için aşırı ücretlendirme yapılması merak konusu.
    • Yakın zamanda Fransa’da pasaport yenileme deneyimi paylaşılmış. Tüm belgeler için yeni bir platform var; çevrimiçi tek bir form dolduruluyor, fiziksel ziyaret yalnızca bir kez gerekiyor, işlem 10 dakikada bitiyor ve pasaport da hızlıca teslim ediliyor. Birleşik Krallık’ın umutsuz durumda olmadığı, gerçek geliştiricileri kadrolu işe alıp geliştirmeyi içeride yapması gerektiği düşünülüyor.
  • Hollanda vergi hukukunu bir DSL kullanarak otomatikleştiren ve kodlaştıran bir örnek akla geliyor. İlgili kaynak olarak Jetbrains DSL vaka sunumu öneriliyor.
  • “Base case” ifadesi vatandaşlık karar yapısını açıklarken geçiyor; 1983 öncesi Birleşik Krallık doğumluların ebeveynlerinden bağımsız olarak vatandaşlığa hak kazandığı örneği veriliyor. Yorum sahibi, vatandaşlığın SQL tablosunda tek bir SELECT ile çözüldüğü bir ülkeden geldiğini, böyle bir yapının inanılmaz göründüğünü söylüyor.
  • Haskell sözdiziminin sezgisel olduğu değerlendirmesine karşılık, biri açıkladıktan sonra sezgisel geldiği ama öncesinde gelmediği söyleniyor. Haskell’de fazlasıyla çok operatör bulunduğu ve koda bakınca anlamın hemen kavranamadığı örnek olarak Haskell operatörleri eğitimi paylaşılıyor.
    • Haskell’de fiilen kullanılan operatör sayısının kabaca sayıldığında JavaScript’le neredeyse aynı, belki iki katı kadar olduğu öne sürülüyor. Haskell’in giriş bariyeri olduğu, ama Java, Python gibi ilk öğrenilen dillerin de kendi içinde karmaşık olduğu; öğrenilip alışıldığında kolay hissettirdiği söyleniyor. Python’un temel sözdizimindeki : ve = işaretlerinin bile yeni başlayanlar için kafa karıştırıcı olabildiği, dolayısıyla sezgiselliğin aşinalığın sonucu olduğu görüşü paylaşılıyor.
    • Biri açıkladıktan sonra sezgisel hâle gelmesinin, aslında sezgisel olmaya oldukça yakın bir şey olduğu üzerine tartışma var.
    • Larry Wall’un Perl hakkında benzer bir şey söylediği aktarılıyor; aslında mesele sözdizimi değil, Haskell’in kendine özgü kavramları (monadlar, lens’ler vb.) bilinmiyorsa sözdizimi basit olsa bile anlamanın zor olduğu ifade ediliyor.
    • Bağlantıdaki operatörlerin çoğunun programlamaya yeni başlayanlar için sıradan bir bölüm olduğu belirtiliyor. Bağlam olmadan bir Java programına ya da matematik formülüne bakınca da aynı şekilde anlaşılamayacağı söyleniyor. Ölçütün, temel bilgiler öğrenilip birkaç eğitim tamamlandıktan sonra ne kadar anlaşılabildiği olması gerektiği savunuluyor.
  • Bu içerik ilk başta bir parodi gibi başlıyor ama giderek ciddi ve zarif bir çözüme dönüşüyor. Sonunda yorum sahibi de gerçekten bu “oyunu” oynamak istemiş.
    • Gerçekte de oynanabildiği, ancak sonlara doğru bitiş bölümünün çok daha zor olduğu yorumu ekleniyor.
  • Japonya’da gerçekten Birleşik Krallık pasaport belgeleri sunmuş olma deneyimi paylaşılıyor. Duruma göre teslim edilmesi gereken belgeler değişebiliyor; yorum sahibi kendisinin ve çocuğunun doğum belgeleri, Japon aile nüfus kayıt örneğinin aslı, çeviriler, doğum bildiriminin kabul belgesi gibi çok sayıda evrak hazırlamış. Her sayfanın renkli fotokopisi, hatta başka kişilerin pasaport kopyaları bile istenmiş. Sürecin çok belirsiz olduğu ve sonuçta talepler karşılanana kadar sürekli belge sunmak gerektiği söyleniyor.
    • Yorum sahibinin babasının Birleşik Krallık doğumlu olduğu, ancak büyükbabanın yabancı doğumlu olması nedeniyle durumun daha da karmaşıklaştığı açıklanıyor.
    • Japonya’da ebeveyn doğum belgesi istenmediği belirtiliyor. Yorum sahibi Macaristan ve Birleşik Krallık vatandaşı, Macaristan’da yaşıyor ve her iki ebeveyn ile dört büyükebeveynin doğum belgesi istenmiş. Eşinin akrabalarıyla bağları zayıf olduğu için gerekçeli bir açıklama ekleyip kabul ettirdiğini anlatıyor. Kendi vatandaşlık durumunda anne tarafının milliyeti/kökeni fiilen önemli değilken bile, aile dostu olan bir hukukçudan çevrimiçi doğrulama istemek zorunda kaldığını paylaşıyor.
    • Çocuğun Japon pasaportunun tüm sayfalarının neden renkli kopya olarak istendiği merak ediliyor.
  • Birleşik Krallık pasaport başvurusunun tamamen çevrimiçi yapılabildiği, yeni vatandaşlar için ilk başvurunun da (evlat edinme, vatandaşlığa kabul, soy bağı) yalnızca mobil cihazla, ayrı bir uygulama olmadan, fotoğraf çekimi dâhil tamamlanabildiği söyleniyor. Yorum sahibinin deneyimine göre süreç verimli, hızlı ve sezgisel.
    • Yakın zamanda çevrimiçi pasaport yenileme sistemi kullanılmış ve yıllardır görülen web siteleri arasında en iyisi olarak değerlendiriliyor. Eski bilgisayarlarda ve eski tarayıcılarda kusursuz çalıştığı, son derece sade ve herkes için erişilebilir bir arayüze sahip olduğu, adım adım yönlendirmenin de çok iyi olduğu söyleniyor. Bu tür tasarımın iş dünyasında da daha yaygınlaşması isteniyor; HMPO övülüyor.
    • Yakın zamanda çevrimiçi sistem ilk kez kullanılmış ve ABD’nin Kaliforniya eyaletinde bile pasaportun 2 hafta içinde çok hızlı ulaştığı söyleniyor. Kanada pasaport yenileme deneyiminin 4 ay sürdüğü, zahmetli prosedürler ve belgeler gerektirdiği belirtiliyor. Akıllı telefon tabanlı dijital yenileme pilotunun daha geniş uygulanması umuluyor.
  • Japonya’da kızının pasaportunu hazırlarken, doğum belgesindeki ebeveyn soyadı uyuşmazlığı gibi nedenlerle çok zorlanıldığı anlatılıyor. Sonunda yorum sahibi kendisinin Birleşik Krallık doğumlu ve vatandaş (pasaport sahibi) olduğunu, dolayısıyla doğrudan çocuğunun da bu hakkı devralabildiğini kabul ettirmiş. Standart istenen belgelerle tam uyumlu olmasa da yine de nispeten daha az uğraştırıcı olduğu söyleniyor.
  • “Passport application” oyununu vekâleten yaşamış olma deneyimi anlatılıyor. “Mutable history” kuralı ilginç bulunuyor; belirli belgelerdeki vakıalar kısa sürede değişebildiği için daha önce taranmış belgelerin bile yeniden sunulup tekrar taranması gerekebiliyor. Bunun, karar vericilerin paralel evrenleri (multiverse) örtük olarak kabul ettiği şeklinde esprili bir yorumla anlatıldığı görülüyor. “NPC” rolündeki çağrı merkezi çalışanları ve operasyon personeli arasındaki iletişim tek yönlü bir dua (prayer) gibi hissediliyor; bilgi iletimi pek olmuyor. OP’nin Mornington Crescent oyununun hayranı olduğu tahmin ediliyor; pasaport başvurusu ve kurallarının buna benzediği söyleniyor.
    • Birleşik Krallık sisteminde ismin serbestçe değiştirilebildiği, bu yüzden yorum sahibinin annesinin üçüncü evliliğindeki soyadıyla bile kendi doğum kaydının yapılabildiği anlatılıyor. Doğum belgesindeki bazı alanlar değişmez olsa da belgenin tamamı tamamen değişmez değil. Pasaport Ofisi’nin önceki geçmişi bile unutabildiği, pasaporttaki soyadı uyuşmazlığının daha önce açıklanmış olmasına rağmen yeniden sorun olduğu söyleniyor. Çağrı merkezi çalışanlarına her telefon, e-posta veya başvuruda farklı cevaplar verildiği, GPT gibi tutarsız davrandıkları belirtiliyor. Aynı belgeler sunulmasına rağmen kızlardan biri için ek belge istenirken diğerine sorunsuz pasaport verildiği bir olay yaşanmış; annesi milletvekiline şikâyet edince sorun bir gün içinde çözülmüş.
  • Birkaç yıl önce passport application “oyununu” oynamış olma deneyimi paylaşılıyor. Yorum sahibi Birleşik Krallık’ta doğmuş ve babası Britanyalıymış; ancak ebeveynleri evli değilmiş ve kendisi 1983 sonrası, 2006 kural değişikliğinden önce doğduğu için başlangıçta vatandaş sayılmamış. 2010’larda 2006 yasası geriye dönük uygulanınca vatandaşlığı tanınmış. Ana “görev”, babasının doğum belgesinin aslını sunmakmış ve en sonda da “Kraliçe’ye sadakat yemini törenine” zorunlu katılım gibi tuhaf bir aşama varmış.
    • En azından kapanış jeneriği alınıyor diye şaka yapılıyor.