Dokümantasyon bölümleri

Platform

Mimari

AI Testing Probe, sizin ortamınızda bir dizi container olarak çalışır. Yapay zekâ (AI) çağrıları tek bir serviste yapılır, üretilen kod internetsiz ve sırsız, yalıtılmış bir koşucuda çalışır ve her dış sistem bir adaptörün arkasındadır. Bu sayfa servisleri, ağ sınırlarını, model geçidini ve veri akışını anlatır; güvenlik incelemesi yapanlar için daha kısa bir özet Güvenlik sayfasındadır.

Servisler

Platform, sorumlulukları ayrılmış az sayıda servisten oluşur.

ServisSorumluluk
Core APIREST API, oturumlar, portala canlı olaylar, onay kayıtları ve IDE istemcileri için MCP uç noktası
Core workerDurum makinesi ve iş kuyruğu. Modeli çağıran; Jira, Xray ve Git’e yazan; model anahtarlarını ve yazma kimliklerini tutan tek servis
Toolchain workerTypeScript araçları: page object kütüphanesinin sembol tablosu, tsc, eslint, AST koruması ve locator yoklamaları. Merge kapısı sonuçlarının tek yazarıdır. Üretilen kodu çalıştırmaz, veritabanı kimliği yoktur
Test koşucusuÜretilen Playwright testlerini test ortamına karşı koşturur. İnternet erişimi ve sırrı yoktur
Ajan tarayıcısıKod üretim ajanının Playwright MCP üzerinden kullandığı tarayıcı. Yalnızca test edilen uygulamaya ulaşabilir
Review portalıİnsanların inceleme, onay ve merge yaptığı web arayüzü
VeritabanıPostgreSQL; alan verisinin ve denetim kaydının tek doğruluk kaynağı

Değerlendirme ve geliştirme için Jira ve Git yerine simülatörler, CI (sürekli entegrasyon) yerine yerel bir koşucu kullanılabilir. Bunlar gerçek adaptörlerle aynı istemci kodunu kullanır.

Ağ izolasyonu

Servisler ayrı ağlara bölünmüştür ve bunların çoğu internete yolu olmayan iç ağlardır.

  • Test koşucusu: yalnızca test edilen uygulamaya ve toolchain’e ulaşır. Veritabanına, core API’ye, ajan tarayıcısına, merge kapısı sonuçlarına, herhangi bir sırra ya da internete ulaşamaz.
  • Ajan tarayıcısı: yalnızca uygulamanın web arayüzüne ulaşır. Uygulamanın yalnız testlere açık uç noktaları ona kapalıdır ve ona yalnızca core worker bağlanabilir.
  • Merge kapısı sonuçları: ayrı bir volume’de tutulur. Oraya yalnızca toolchain worker yazar. Üretilen kodu çalıştıran test koşucusu bu alanı göremez ve ona ait bir belirteç taşımaz.
  • Portlar: sunucuya açılan her port yalnızca 127.0.0.1’e bağlanır.

Bu sınırlar yalnızca yapılandırmadan ibaret değildir; otomatik bir güvenlik kontrolü onları doğrular: portlar, koşucu izolasyonu, denetim kaydı izinleri, repoda sır taraması, salt okuma veri rolü, model anahtarlarının ve yazma kimliklerinin yeri, ajan tarayıcısının izolasyonu, merge kapısının izolasyonu ve CI imajlarında ajan bulunmaması. Kontrol her yapılandırma değişikliğinden sonra koşturulur.

Model geçidi

Tüm model çağrıları core worker içindeki model geçidinden geçer. Core API model anahtarını da model kipini de bilmez.

Geçit sağlayıcıdan bağımsız bir sözleşme sunar; sağlayıcıya özgü kod yalnızca adaptörlerdedir. Bugün çalışan adaptör Anthropic Claude’dur. Azure OpenAI ve diğer sağlayıcılar yol haritasındadır.

Her çağrı aynı kurallara uyar:

  • Yapılandırılmış çıktı. Her çağrı bir JSON şemasına uyan çıktı üretmelidir. Geçersiz çıktı reddedilir, hata mesajıyla sınırlı sayıda yeniden istenir, ardından insana devredilir. Serbest metin hiçbir zaman kararın tek dayanağı olmaz.
  • Güvenilmeyen girdi. Jira içeriği, sayfa görüntüleri, kod, veri ve CI logları güvenilmez sayılır. Etiketli veri bloklarında taşınır ve içlerindeki talimatlar uygulanmaz.
  • Eksiksiz kayıt. Her çağrı modeli, sürümü, prompt paketi hash’ini, maskelenmiş girdiyi, çıktıyı, token’ları, maliyeti, kanalı ve kişiyi kaydeder.
  • Kullanımdan önce değerlendirme. Bir prompt ya da kural değişikliği, değerlendirme seti canlı modelle koşturulmadan birleştirilmez.

REPLAY ve canlı kip

Geçit birkaç kipte çalışabilir.

KipDavranış
replayYapay zekâ adımlarının çıktısı küratörlü kayıtlardan gelir; yapılandırılmış anahtar yok sayılır
liveSağlayıcıyı çağırır; anahtar yoksa açık bir hata verir
autoAnahtar varsa live, yoksa replay
recordLive çalışır ve başarılı çıktıları insan incelemesi için aday kayıt olarak saklar

REPLAY’de her kayıt ait olduğu girdiyi beyan eder ve geçit çıktıyı döndürmeden önce girdiyi doğrular. Her REPLAY çıktısı portalda REPLAY rozeti taşır. Girdi eşleşmezse sonuç REPLAY-MISS olur: başka bir kaydın çıktısı yerine konmaz ve öğe insana gider. Katı seçenek eşleşmeyen kaydı hataya çevirir; provalar için kullanışlıdır.

Kod üretiminde ajanın tarayıcı araçları REPLAY’de de gerçekten koşar; yalnızca modelin kararları kayıttan gelir. Bir locator ya da sayfa kayıttakinden farklıysa adım replay sapması olarak işaretlenir ve doğrulanmış sayılmaz.

Modele hangi veri gider

Model yalnızca bir adımın ihtiyaç duyduğunu alır.

  • Gereksinim incelemesi: story metni (Jira’daki kullanıcı hikâyesi), kabul kriterleri ve PO’nun cevapları.
  • Tutarlılık denetimi: uygulama reposundan salt okuma token’ıyla okunan ilgili kod ve kısıtlı veritabanı sorgularının sonuçları. Sorgular, izin verilen tablo ve kolonlarda özel bir salt okuma rolüyle, satır ve süre sınırlı tek SELECT ifadeleri olarak çalışır; sonuçlar maskelenir.
  • Test senaryosu (test case) üretimi: onaylı story, kabul kriterleri, PO cevapları ve uygulamanın test verisi.
  • Kod üretimi: case adımları ve ajanın izin listesindeki tarayıcı araçlarıyla gördüğü sayfa. Ekran görüntüleri model döngüsünün dışında alınır ve modele gönderilmez.
  • Triage ve bug taslakları: hata ayrıntıları ve CI log parçaları; yalnızca hiçbir deterministik kural hatayı sınıflayamadığında.

Model geçidinde kişisel veri maskelemesi (TCKN, IBAN, telefon, e-posta) mevcuttur ve müşteri verisi işlendiğinde açık olmalıdır; pilotlar sentetik ya da üretim dışı veriyle yapılabilir. Müşteri verisi platform tarafından model eğitimi ya da ince ayar için kullanılmaz. Sağlayıcının kendi veri saklama koşulları için sağlayıcının ticari şartlarına bakın.

Denetim kaydı ve veri modeli

PostgreSQL tüm alan verisini tutar: gereksinimler, bulgular, case’ler, script’ler, koşular, hatalar, bug taslakları ve kararlar.

Yapay zekâ çağrısı, araç çağrısı ve denetim olayı tabloları yalnızca eklemelidir (append-only). Uygulamanın veritabanı rolü bunlara satır ekleyebilir, ama denetim olaylarını güncelleyemez ya da silemez. Her denetim olayı bir önceki olayın hash’ini saklar; kendi hash’i, önceki hash ile olayın kanonik JSON’u üzerinden SHA-256 ile hesaplanır. Zincir portaldan doğrulanabilir.

Zincirin başı platformun dışına da sabitlenir: Jira yorumlarına ve PR açıklamalarına yazılır. Bir ortamın tam sıfırlaması önce kaydı SHA-256 sağlama dosyasıyla birlikte JSON Lines olarak dışa aktarır; dışa aktarım başarısız olursa hiçbir şey silmeden durur.

JUnit XML, Allure ve Playwright raporları, trace’ler ve ekran görüntüleri gibi koşu artefaktları saklama sınırı olan volume’lerde tutulur. Raporlar portala kısa ömürlü imzalı bağlantılarla, bir sandbox içinde sunulur.

Bugünkü kurulum

Bugün platform, ortamınızdaki tek bir Linux sunucuda Docker Compose ile kurulur. Container imajları hem arm64 hem amd64 için üretilir.

  • Yerel sunucunun dışına gelen bağlantı için port açılmaz; portala erişim kendi ağınızda düzenlenir.
  • İmajlar digest ile, CI action’ları commit SHA ile sabitlenir; lockfile zorunludur. Her PR’da statik analiz koşar.
  • Tek bir komut ortamı ayağa kaldırır ve her servis sağlıklı olana kadar bekler. Başka bir komut yukarıda anlatılan güvenlik sınırlarını doğrular.
  • Sıfırlama, veriyi temizlemeden önce denetim kaydını dışa aktarır; ayrı bir demo sıfırlaması da denetim kaydına dokunmadan demo verisini geri yükler.

Bugün olmayanlar: Kubernetes ya da OpenShift üzerinde kurulum, kendi bulut hesabınızda ya da kiracınızda çalışan bir model ve portal için tek oturum açma. Bunlardan biri sizin için şartsa erkenden dile getirin; pilot koşulu olarak kapsamlanabilsin.

Güncellendi:

Tek bir story ile başlayın.

30 dakikalık görüşmede altyapınıza ve birkaç story'nize birlikte bakıyor, pilotun size uyup uymadığını açıkça söylüyoruz.