Özgün laboratuvar · Motordan türetilen kanıt
Gerçek taşıma motoruna karşı ölçülen 26 saldırgan redirect-map senaryosu
Tam ve prefix taşımalar, belirsiz adaylar, çakışmalar, zincirler, döngüler, sorgu kaybı, büyük-küçük harf ve slash davranışı, envanter dışı URL'ler, hedefsiz kaynaklar, cross-domain geçişler, güvensiz config byte'ları, adapter semantiği ve rollback boşlukları ayrı kararlar olarak test edilir.
Yayıncı ve inceleme: FastTool ürün mühendisliği · gerçek engine fixture matrisi 2026-07-27 tarihinde hash’lerle yeniden kontrol edildi.
Bu exact engine ve fixture için ölçülen sonuç
Engine SHA-256
d15ecb8b4a8363d7e4e27d0b887764ddb2fc710365fbac09164e27367e9456d8Fixture SHA-256
b6119f07bea5376a009f57eac48826f0472cd8d5dda637c1abc82a8d1c71aa17Yöntem: editoryal aritmetik değil, gerçek engine çıktısı
- Her vakayı reserved
.testURL'leri ve dört kararlı exact-path kontrolüyle oluştur. - Eski envanteri, HTTP durumlu yeni envanteri ve manuel override'ları gerçek browser renderer UI'ına gir.
- Üretilen machine receipt ile redirect ledger'ı oku; actual karar, risk kodu, deployable satır ve warning'leri fixture assertion'ıyla karşılaştır.
- Run başına on artifact'ın SHA-256 değerini yeniden hesapla, receipt core'u doğrula ve review-only satırların Cloudflare deployment adapter'ına sızmadığını kanıtla.
- 308 vakasında status-aware adapter'ın 308'i koruduğunu, Webflow'un 301-only çıktısının ise hariç tuttuğunu kanıtla.
- Desteklenmeyen rollback kanıtını INDETERMINATE olarak raporla; sahte PASS bulgusu üretme.
node scripts/test_website_migration_benchmark_20260717.js26 senaryonun tamamı ve ölçülen kararlar
READY yalnızca mevcut browser politikasının fixture satırlarını staged QA için kabul ettiği anlamına gelir. REVIEW en az bir satırın deployment çıktısından tutulduğunu gösterir. INDETERMINATE gerekli kanıtın mevcut engine kontratı dışında olduğunu gösterir.
| # | Senaryo | Yüzey | Actual karar | Engine kanıtı | Assertion |
|---|---|---|---|---|---|
| 01 | Tam bire bir yollar | Eşleme | READY | 4 deployable; 0 review | PASS |
| 02 | Dizin öneki taşıması varsayılmıyor | Eşleme | REVIEW | medium_confidence_review | PASS |
| 03 | Birbirine yakın iki hedef | Belirsizlik | REVIEW | candidate_collision | PASS |
| 04 | İki kaynak tek hedef için yarışıyor | Çakışma | REVIEW | duplicate_target; target_already_assigned | PASS |
| 05 | Manuel çoktan bire çakışma | Çakışma | REVIEW | duplicate_target | PASS |
| 06 | İki adımlı redirect zinciri | Graf | REVIEW | redirect_chain | PASS |
| 07 | Kapalı redirect döngüsü | Graf | REVIEW | redirect_loop | PASS |
| 08 | Anlamlı sorgu anahtarı kayboluyor | Sorgu | REVIEW | query_parameter_loss | PASS |
| 09 | Korunan sorgu yine politika incelemesi istiyor | Sorgu | REVIEW | query_specific_redirect_review | PASS |
| 10 | İzleme parametresi yalnız eşleme için kaldırılıyor | Sorgu | REVIEW | Yanlış meaningful-query-loss bulgusu yok | PASS |
| 11 | Yol harf büyüklüğü değişimi | Normalizasyon | REVIEW | medium_confidence_review | PASS |
| 12 | Exact trailing slash korunuyor | Normalizasyon | READY | Exact kaynak ve hedef byte'ları adapter'da kalıyor | PASS |
| 13 | Çift slash görünür kalıyor ve engelleniyor | Normalizasyon | REVIEW | unsupported_double_slash_path | PASS |
| 14 | Kaldırılan URL için hedef uydurulmuyor | Kapsam | REVIEW | orphan_source | PASS |
| 15 | Envanter dışı override kaynağı | Kapsam | READY + warning | Override yok sayılıyor; baseline satırlar hazır | PASS |
| 16 | Hedef adayı yok | Kapsam | REVIEW | orphan_source | PASS |
| 17 | Beklenmeyen cross-domain geçiş | Origin | REVIEW | unexpected_cross_domain_target | PASS |
| 18 | Manuel hedef yeni envanterde yok | Kapsam | REVIEW | target_not_in_new_inventory | PASS |
| 19 | Hedef crawl satırı başka bir redirect | Runtime kanıtı | REVIEW | target_redirect_status | PASS |
| 20 | Hedef crawl satırı HTTP hatası | Runtime kanıtı | REVIEW | target_http_error_status | PASS |
| 21 | Geçersiz override durumu reddediliyor | Input doğrulama | READY + warning | Geçersiz 200 override yok sayılıp exact satır yeniden eşleniyor | PASS |
| 22 | Tracking-only kaynak varyantları override'ı belirsizleştiriyor | Belirsizlik | REVIEW | Normalizasyon warning + collision riskleri | PASS |
| 23 | Sunucu config metakarakterleri | Güvenlik | REVIEW | unsupported_config_metacharacter | PASS |
| 24 | 308 status-aware çıktılarda korunup Webflow'dan çıkarılıyor | Adapter | READY + warning | Webflow exclusion count = 1 | PASS |
| 25 | Önceki redirect yapılandırması sağlanmıyor | Rollback | INDETERMINATE | Engine kontratında rollback-baseline input'u yok | PASS boundary |
| 26 | Rollback artifact'ı üretilmiyor | Rollback | INDETERMINATE | Runbook dış saklama istiyor; packet hash'leyemiyor | PASS boundary |
Bu benchmark gerçek taşıma incelemesinde neyi değiştiriyor?
Benzerlik belirsizliği sessizce çözmüyor
Prefix değişimleri, harf büyüklüğü değişimleri ve yakın adaylar review'da tutuluyor. Doğru görünen syntax, içerik eşdeğerliğinin kanıtı sayılmıyor.
Warning'ler kararın parçasıdır
Geçersiz veya envanter dışı override yok sayılırken diğer satırlar READY kalabilir. Operatör parser warning'lerini incelemelidir; üst seviye ready durumu onları atma izni değildir.
Deployment adapter'ları ledger'dan daha dardır
Yalnız kabul edilen satırlar adapter'a girer. Webflow import'u 301-only olduğu için 308'i dışarıda bırakır; status-aware çıktılar 308'i korur.
Rollback bu packet dışında blocker kalır
Engine operatörden önceki yapılandırmayı saklamasını ister fakat onu ingest veya hash etmez. Release onayı ayrı rollback artifact'ı gerektirir.
İndirilebilir kanıt ve exact SHA-256
Önce receipt-core hash'ini, sonra indirilen her artifact'ın hash'ini yeniden hesaplayın. Hash parity yalnız byte eşitliğini kanıtlar; kaynak yetkisini veya production davranışını kanıtlamaz.
Machine sonuçlar
JSON indirf5d0f4185f1b490d846f7cdf86841f20ef1422b3d8cdd2d0a05cb41b43088731Formula-safe senaryo ledger
CSV indir778e3db7aaea79c22d55a73ee95a6c707fa494b34f6c7e8a044269df952b9f54Yeniden üretim yöntemi
Markdown indir3a76bc308ccd98327020225984ea6dd5ed2f0911f46b4a02104213cffab43fc4Kapsam görseli
SVG indird1d49c86da284dfba39be1a91bc084447f0e01ca422107077a647c99efbe41ceHash-backed benchmark receipt
Receipt JSON indir98eb5297d757ae721625514eb6de4d03c10257f10ac55a3a29a4f43e9c9be619Receipt-core SHA-256
86cbe063adcbdec980bef48ea469e768b80108d9439c6d909faddcd9b882a0edSınırlar, gizlilik ve release sınırı
Bu benchmark neyi kanıtlıyor?
- 24 engine assertion'ı yukarıdaki exact renderer ve fixture hash'leri için geçti.
- Run başına üretilen her artifact advertised SHA-256 ile eşleşti.
- Her receipt core doğrulandı ve review-only satırlar Cloudflare adapter'ı dışında kaldı.
Neyi kanıtlamıyor?
- Canlı crawl, sunucu syntax kontrolü, CDN priority, link güncellemesi, canonical audit, sıralama korunumu veya trafik garantisi yok.
- İçerik sahibi eşdeğerlik kararı, authenticated URL işleme, server-log gerçeği veya Search Console durumu yok.
- Önceki config ve restore prosedürü ayrı yakalanıp hash'lenene kadar rollback coverage yok.
Gizlilik: bütün benchmark URL'leri reserved .test domainlerini kullanır. Harness yerel dosyaları yerel browser'a sunar. Fixture'ları credential, müşteri kimliği, preview token veya authenticated URL ile değiştirmeyin.
Birincil kaynaklar
- Google Search Central: URL değişiklikli site taşıma — envanter, eşleme, test ve izleme.
- Google Search Central: Redirects and Google Search — yönlendirme türleri ve yorumlama.
- Google Search Central: Canonicalization — sinyaller ve duplicate URL sınırları.
- RFC 9110 bölüm 15.4 — HTTP yönlendirme semantiği.
- Cloudflare Bulk Redirects, Nginx rewrite module ve Apache mod_alias — kendi ortamlarında ayrıca doğrulanması gereken adapter hedefleri.
Düzeltme ve yeniden üretim
FastTool bu benchmark'dan sorumludur. Stale hash, desteklenmeyen iddia, fixture kusuru veya engine/ledger uyuşmazlığını contact@fasttool.app adresine bildirin. Senaryo ID'sini, exact ifadeyi, yeniden üretim çıktısını ve önerilen düzeltmeyi ekleyin.
Benchmark fixture: website-migration-benchmark-20260717 · Engine sürümü: 20260709a · Yerel QA sonucu: 26/26 assertion geçti, blocker 0.