Documentation Index
Fetch the complete documentation index at: https://harness.lokomotif.ai/llms.txt
Use this file to discover all available pages before exploring further.
Kod yazıldı, tamamlandı mı?
Düzenek Mühendisliği (Harness Engineering) dünyasında bu iki ifade aynı şey değildir. Bir ajan oturumu biter; raporlar: “F02 tamam.” Açarsın — endpoint cevap veriyor ama dönen JSON’da alan eksik, log’da silent error var, end-to-end senaryo geçmemiş. “Kod yazıldı” doğrudur; “davranış doğrulandı” değildir.features.json bu uçurumun üzerine konan tahtadır — özelliklerin makine tarafından okunan, durum geçişleri otomatik yürütülen veri yapısı. İnsan için not değil, sistem için primitif.
Ne işe yarar
features.json bir doküman değildir, bir primitiftir. Düzeneğin (harness) dört temel aparat komponenti onu okur:
- Scheduler —
not_startedlistesinden bağımlılığı tamam olan ilk özelliği seçer,activeyapar. - Verifier — aktif özelliğin
verificationkomutunu çalıştırır, sıfır çıkış kodundapassing’e döndürür. - Handoff reporter — oturum sonunda durum dağılımını özetler ve bir sonraki oturuma devreder.
- Progress tracker —
passingoranını, geri basıncı, lead time’ı hesaplar.
failing olarak işaretlenmiştir. Varsayılan kritiktir — ajan passing’e çevirmek için kanıt üretmek zorundadır; tersi geçerli değil. GitHub spec-kit aynı fikri sözle koyar: “specifications become executable, directly generating working implementations rather than just guiding them.”
Şablon — features.json
id deterministik referans; behavior dışarıdan gözlenebilir tek cümle; verification çıkış kodu üreten komut; state dört değerden biri; depends_on topolojik sıra için. evidence passing olmadan boştur; passing’e geçince verifier doldurur.
Durum makinesi
Dört durum, üç geçiş:| Geçiş | Tetikleyici | Yazan |
|---|---|---|
not_started → active | bağımlılıkları passing, WIP slot boş | scheduler |
active → blocked | açık soru veya dış bağımlılık | ajan (gerekçe ile) |
active → passing | verification sıfır çıkış kodu | yalnız verifier |
blocked → active | engel kalktı | scheduler |
passing durumu geri alınamaz. Geri dönüyorsa özellik baştan yanlış kesilmiştir, kaldırılıp yeniden tanımlanır.
Konvansiyon
Üç değişmez:- Pass-state gating — yalnızca verifier scripti
passingyazar. Ajanın bu alana doğrudan yazma yetkisi yoktur;AGENTS.mdbunu açıkça yasaklar. Anthropic’in kuralı: “Only mark features as ‘passing’ after careful testing.” Düzenek bunu mekanik kapıyla zorlar, kibarlıkla değil. - WIP=1 invariant —
activedurumundaki özellik sayısı her an en fazla bir. Scheduler ikinciyi açmaz; ajan zorla açamaz. Geçmemişactiveözellik varkennot_started’tan yeni aktivasyon mekanik olarak yasaktır. - depends_on grafiği döngüsüzdür —
features.jsonbir DAG’dir. Döngü oluşursa scheduler hata verir; bağımlılığıpassingolmayan özellikactive’e geçemez.
Özelleştirme
YAML alternatifi. JSON dışında YAML da olur; uzun davranış açıklamaları okunabilir. Verifier parse edebildiği sürece tek format yeter.verification dizi olabilir; verifier sırayla çalıştırır, ilki sıfır-dışı verirse active kalır. Happy path + auth + edge case ayrı dosyalara dağılır.
evidence alanları. Verifier en az commit (hash) ve log (yol) yazar. İstenirse screenshot, trace_id, verified_at eklenir. Boş evidence ile passing geçersiz sayılır.
Otomasyona bağlama
Verifierfeatures.json üzerinde döner, active özelliğin komutunu çalıştırır, çıkış koduna göre state ve evidence yazar.