İçeriğe geç

Sunulmuş QA kanıtını değerlendirin

bee qa assess içeren Bee 1.0.0-beta.15 gerektirir.

Elinizdeki kanıtın tek bir değerlendirmesini ajana verin; her ham raporu yeniden açmak yerine belirtilen gözlemleri ve sonraki kontrolleri izleyin. Komut yerel dosyaları okur ve Git’i salt okunur kullanır. Test, rapor üreticisi veya ek çalıştırmaz; üreticiyi doğrulamaz, kabul kararı vermez ve tasarruf ölçmez.

Yukarıdaki qa assess yalnız sunulan kanıtı tanılar. Güncel checkout için bee qa run, ölçüt ve kontrolleri içeren açık JSON görev tanımını yürütür; düzyazıdan komut çıkarmaz. Canlı tanım şablonuyla başlayın ve çalıştırmadan önce her executable ile argümanı inceleyin:

Terminal window
bee qa run --help --json
bee qa run --root /absolute/checkout --spec /absolute/task.json --json

Tanımda schemaVersion: 1, profile: "change-task", 1–16 ölçüt ve 1–16 kontrol bulunur. Ölçüt, kaynak paths ve bunları kapsayan checkIds belirtir. repo-command kontrolü mutlak executable yolu, argüman dizisi, kaynak paths, ek inputs ve 1–300 saniye timeout tanımlar. code-analyze native source/compiled veya Roslyn compiled kapsamını kabul eder; test kapsamı varsayılmaz. Kontrol girdileri ve kaynak kimliği yürütmeden önce ve sonra yakalanır. Komut dosya yazabilir ve süreç başlatabilir; sandbox değildir. Ortamın PATH değerini iletmez; mutlak interpreter veya gözden geçirilmiş wrapper kullanın.

Çıkış 0 yalnız tanımlı kontroller için verifiedCompletion=true; 1 repair_required, 4 geçersiz kullanım/tanım, 5 eksik kanıt veya yargı gereksinimi demektir. Raporun güveni in_process_only düzeyindedir: kaydedilen JSON sonraki koşumun kanıtı değildir. Ham çıktıları, kontrol kalitesini ve öznel ölçütleri inceleyin. Tam görev örneği için gelişmiş CLI akışına, iş sahibinin ayrı beyanı için Planlar.

Depo kökünde başlayın. Yerelde bulunan bir temel commit ile mevcut commit HEAD’ini ya da güncel dosyalar için worktree seçin. Örnek, temeli o anki HEAD’e sabitler ve çalışma ağacını değerlendirir; gerekirse QA_BASE değerini karşılaştırmak istediğiniz commit ile değiştirin. Head olarak verilen commit, deponun HEAD’iyle ve değişmemiş girdilerle eşleşmelidir. Commit indirilmez.

Birlikte gelen bee-cli profili, linux-x64 hedefinde QA CLI entegrasyonunu tanımlar. Herhangi bir proje, başka platform veya tüm sürüm için genel bir profil değildir. İçe aktarıcıyı macOS’ta çalıştırmak bu hedefi değiştirmez.

Git ve Python 3 bulunan bir kabuk kullanın. Aşağıdaki kod depo dışında yeni bir geçici paket oluşturur ve fiziksel yolunu çözer; macOS’taki /private/tmp de buna dahildir:

Terminal window
export QA_ROOT="$(pwd -P)"
export QA_BASE="$(git -C "$QA_ROOT" rev-parse HEAD)"
export QA_HEAD=worktree
export QA_BUNDLE="$(python3 -c 'import pathlib,tempfile; print(pathlib.Path(tempfile.mkdtemp(prefix="bee-qa-demo-")).resolve())')"
bee qa assess --help

Sonraki adımlarda aynı depoyu ve paketi koruyun. --root, --base, --head ve --profile zorunludur; Bee başlatma işlemi veya servis bağlantısı gerekmez.

Terminal window
qa_exit=0
bee qa assess --root "$QA_ROOT" --base "$QA_BASE" --head "$QA_HEAD" \
--profile bee-cli --limit 5 --budget 16000 --json \
> "$QA_BUNDLE/preview.json" || qa_exit=$?
test "$qa_exit" -eq 5

Yalnızca çıkış kontrolü başarılıysa devam edin. Yardım 0, geçersiz/bilinmeyen/yinelenen seçenekler 4, her değerlendirme ise bilinçli olarak 5 döndürür. Çıkış 5, tanısal değerlendirmenin kabul anlamına gelmediğini belirtir; gözlemlenmiş test süreci çıkışı veya testlerin başarısız olduğunun kanıtı değildir.

--evidence olmadan decision: collect_evidence, missing_evidence ve eksik kapsam gözlemleri beklenir. Gerçek kanıtı hazırlamadan önce preview.json dosyasını inceleyin. Çözümlenemeyen kaynak veya tükenmiş çıktı bütçesi kullanılabilir kaynak kimliği sağlamaz.

Bu örnek, test çalıştırmasının sonucu değil, sentetik veri yazar. Tutarlı test kimliği ve sayaçlarla, profil dışında tek bir TRX başarısızlığı oluşturur. Şema 1 indeksi, önizlemedeki tam kaynak manifestini ve politikayı, ayrıca dosyanın gerçek bayt uzunluğunu ve SHA-256 değerini bildirir. Tamamlanma zamanı ve elde olmayan build/settings/toolchain/environment kimlikleri bilinmeyen olarak kalır.

Terminal window
python3 - <<'PY'
import hashlib, json, os
from pathlib import Path
bundle = Path(os.environ["QA_BUNDLE"])
preview = json.loads((bundle / "preview.json").read_text(encoding="utf-8"))
source = preview["source"]["manifestSha256"]
policy = preview["policyFingerprint"]
assert source and policy
trx = b'''<TestRun xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"
id="11111111-1111-4111-8111-111111111111">
<TestDefinitions><UnitTest id="22222222-2222-4222-8222-222222222222">
<TestMethod className="Docs.Synthetic" name="Example"/>
</UnitTest></TestDefinitions>
<Results><UnitTestResult testId="22222222-2222-4222-8222-222222222222"
executionId="33333333-3333-4333-8333-333333333333"
testName="Synthetic example" outcome="Failed"/></Results>
<ResultSummary outcome="Failed"><Counters total="1" executed="1"
passed="0" failed="1" notExecuted="0"/></ResultSummary>
</TestRun>
'''
(bundle / "report.trx").write_bytes(trx)
index = {
"schemaVersion": 1, "runId": "docs-synthetic", "attemptId": "attempt-1",
"completedAt": None,
"bindings": {"source": source, "profile": "bee-cli", "policy": policy},
"acceptanceFingerprint": policy,
"artifacts": [{"kind": "trx", "relativePath": "report.trx",
"sha256": hashlib.sha256(trx).hexdigest(), "bytes": len(trx)}]
}
(bundle / "index.json").write_text(json.dumps(index) + "\n", encoding="utf-8")
print(bundle / "index.json")
PY

runId ve attemptId sunulan paketi etiketler. relativePath, indeks dizinine göredir. acceptanceFingerprint bir politika bağlama alanıdır; doldurmak kabul kararı vermez. Kaynak hash’ini kopyalamak yalnızca içerik iddiası oluşturur; dosya hash’ini hesaplamak üreticiyi doğrulamaz. Uyuşmazlığı gizlemek için eski gerçek rapora yeni kaynak hash’i atamayın.

Terminal window
qa_exit=0
bee qa assess --root "$QA_ROOT" --base "$QA_BASE" --head "$QA_HEAD" \
--profile bee-cli --evidence "$QA_BUNDLE/index.json" \
--limit 5 --budget 16000 --json > "$QA_BUNDLE/assessment.json" || qa_exit=$?
test "$qa_exit" -eq 5
python3 -m json.tool "$QA_BUNDLE/assessment.json"

Kaynak değişmediyse örnek sourceAssociation: content_matches_claim, observedHistogram: {"Failed": 1} ve decision: collect_evidence üretir. Dosyada verification: bytes_checked görülür; ayrıştırıcı complete iken testVerdict değeri failed olabilir. Profilin zorunlu kapsamı hâlâ eksiktir. historical_failure sentetik gözlemi korur; bilinmeyen tamamlanma zamanı ve diğer bağlamalar, bunun güncel kaynak için onarım sonucuna dönüşmesini engeller.

decision, reasonCounts, scopeCounts, artifacts ve next alanlarını birlikte okuyun. details, varsa dosya hash’ini ve gözlemin sıra bilgisini verir; ajan sonraki adımda ilgili ham gözlemi açabilir. needs_judgment inceleme ister; kusuru otomatik sınıflandırmaz. missing_result ve not_executed başarılı sayılmaz. Kısmi rapor başarısızlıkları koruyabilir; bozuk girdi sonuçsuz kalır ve doğrulanmış test başarısızlığı ortaya koyamaz.

Yalnızca başarılı sonuçlar bildiren paketler dahil tüm değerlendirmelerde mode: diagnostics, trusted: false, acceptance: false ve intentJudgment: required korunur. observedProducerExit null kalır. İsteğe bağlı üretici kaydındaki reportedExit sunulmuş bir iddiadır; ayrıştırıcının summarizerExitCode değeri de bunlardan ayrıdır.

Terminal window
qa_exit=0
bee qa assess --root "$QA_ROOT" --base "$QA_BASE" --head "$QA_HEAD" \
--profile bee-cli --evidence "$QA_BUNDLE/index.json" \
--limit 200 --budget 65536 --json > "$QA_BUNDLE/expanded.json" || qa_exit=$?
test "$qa_exit" -eq 5

--limit 0–200 ayrıntı, --budget son satır sonu hariç 2048–65536 UTF-16 kod birimi kabul eder. Değerlendirmeden sonra çıktı kapsamını sınırlarlar. counts.returned, counts.omitted ve counts.textTruncated alanlarını kontrol edin; daha kısa sonuç, daha az yükümlülük demek değildir. Örnekte genişletilmiş sonuç, kararı değiştirmeden çıkarılan ayrıntıları gösterir.

output_budget_exceeded durumunda aynı evidenceIndexSha256 ile daha büyük bütçe kullanın; kaynak manifestini ve ham dosya hash’lerini de doğrulayın. Yedek çıktı, neden türlerinin çıkarıldığını açıkça belirtebilir. Kaynak veya kanıt değiştiyse bunu öncekinin devamı değil, yeni değerlendirme sayın. Bu işlem sonuç önbelleği değil, tekrar incelemedir.

İndeksi ve dosyaları depo dışında, yollarında symlink veya reparse-point bileşeni bulunmayan normal dosyalar olarak tutun. .., mutlak yol veya ters eğik çizgi içermeyen taşınabilir göreli dosya yolları kullanın. Girdiler katı UTF-8 olmalıdır. İndeks en fazla 1 MiB ve 64 dosya; her dosya en fazla 16 MiB, toplam en fazla 64 MiB olabilir. Kaynak yakalama ve ayrıştırıcıların ek sınırları vardır; komutun toplam süre sınırı on saniyedir. Sınırı aşan, erişilemeyen veya değişen girdi açıkça belirtilir.

source_mismatch, bildirilen kaynak ile yakalanan içeriğin eşleşmediğini gösterir. stale_evidence, bildirilen tamamlanmanın 24 saatten eski olduğunu belirtir; eksik zaman bilinmeyen kalır, gelecekteki zaman inceleme ister. Eski veya uyuşmayan başarısız gözlemler görünür kalır, ancak güncel kusuru kanıtlamaz. Bu sınırları aşarak pakete güven veya kabul sağlayan desteklenmiş bir seçenek yoktur. Komut test çalıştırıcısı, test seçimi, mutasyon testi veya ek backend, Vue ya da mobil profilleri sunmaz.

Komut başvurusu · Beta.15 notları