WEB / WEB-21.S03
Resource limits, errors ve fail-open boundaries
Resource budget, permission ve partial failure kanıtını ayrı tut.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Read izinli
- Read request hazır
Reader Tea & Bread public title’ı için read request hazırlamıştır. Admission henüz permission, byte budget, concurrency ve deadline değerlendirmedi; store’a read veya write gönderilmedi.
- Reader
- Fixed note read request ready
- Admission / errors
- Admission pending; no reservation/dispatch
- Public note store
- Own public note unchanged; no read/write
- Request gate’e geldi
Admission completed request arrival’ını görür; body size, permission, concurrency ve deadline ayrı koşullardır.
- Reader
- Fixed note read request ready
- Admission / errors
- Read arrived; size/permission/quota/deadline pending
- Public note store
- Own public note unchanged; no read/write
- Admission allow
Finite size, known permission, available quota ve deadline kabul edilir; local reservation sonrası read hazırlanır.
- Reader
- Fixed note read request ready
- Admission / errors
- Permission/budget accepted; reserved; read ready
- Public note store
- Own public note unchanged; no read/write
- Approved read geldi
Store completed approved read arrival’ını kaydeder; sadece read-only projection yapacağı selected profile’dır.
- Reader
- Fixed note read request ready
- Admission / errors
- Permission/budget accepted; reserved; read ready
- Public note store
- Approved read received; projection pending
- Title projection hazır
Store fixed Tea & Bread title’ı local read-only adımda hazırlar; no write sonucu bu operasyonun scope’ıdır.
- Reader
- Fixed note read request ready
- Admission / errors
- Permission/budget accepted; reserved; read ready
- Public note store
- Tea & Bread title body ready; write=false
- Body gate’e geldi
Completed body arrival gate’e ulaşır; reservation cleanup ve safe client projection sonraki local adımda yapılır.
- Reader
- Fixed note read request ready
- Admission / errors
- Title body received; cleanup pending
- Public note store
- Tea & Bread title body ready; write=false
- Cleanup ve response
Local reservation release edilir ve public title response hazırlanır; distributed counter veya crash recovery testi değildir.
- Reader
- Fixed note read request ready
- Admission / errors
- Reservation released; title response ready
- Public note store
- Tea & Bread title body ready; write=false
- Read result teslimi
Reader completed response arrival’da title alır; actual HTTP status, resource isolation ve throughput kanıtı yoktur.
- Reader
- Received title=Tea & Bread; read-only result
- Admission / errors
- Reservation released; title response ready
- Public note store
- Tea & Bread title body ready; write=false
Quota dolu
- Read request hazır
Reader Tea & Bread public title’ı için read request hazırlamıştır. Admission henüz permission, byte budget, concurrency ve deadline değerlendirmedi; store’a read veya write gönderilmedi.
- Reader
- Fixed note read request ready
- Admission / errors
- Admission pending; no reservation/dispatch
- Public note store
- Own public note unchanged; no read/write
- Request gate’e geldi
Admission completed request arrival’ını görür; body size, permission, concurrency ve deadline ayrı koşullardır.
- Reader
- Fixed note read request ready
- Admission / errors
- Read arrived; size/permission/quota/deadline pending
- Public note store
- Own public note unchanged; no read/write
- Gate evidence ayrıldı
Finite predicate gerekli koşulları ayrı değerlendirir; unknown permission’a spare quota nedeniyle izin verilmez.
- Reader
- Fixed note read request ready
- Admission / errors
- Known quota full; no reservation
- Public note store
- Own public note unchanged; no read/write
- Dispatch withheld
Pre-dispatch denial store’u untouched bırakır; body ve write yokluğu bu selected state order’dan çıkar.
- Reader
- Fixed note read request ready
- Admission / errors
- Dispatch=0; delivery=0; body absent; write=false
- Public note store
- Own public note unchanged; no read/write
- Safe error hazır
Safe client diagnostic hazırlanır; stack dump, secret veya internal path bu response içine girmez.
- Reader
- Fixed note read request ready
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
- Safe error alındı
Reader completed error arrival’ını görür; pre-dispatch evidence sonradan unknown commit iddiasıyla karıştırılmaz.
- Reader
- Error received; protected body absent; no read/write
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
- Evidence scope sonucu
Reader local diagnostic’i yorumlar; genel response-lost write senaryosu ayrı ledger’da unknown olarak kalır.
- Reader
- No dispatch/delivery/body/write; cause retained
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
Permission eksik
- Read request hazır
Reader Tea & Bread public title’ı için read request hazırlamıştır. Admission henüz permission, byte budget, concurrency ve deadline değerlendirmedi; store’a read veya write gönderilmedi.
- Reader
- Fixed note read request ready
- Admission / errors
- Admission pending; no reservation/dispatch
- Public note store
- Own public note unchanged; no read/write
- Request gate’e geldi
Admission completed request arrival’ını görür; body size, permission, concurrency ve deadline ayrı koşullardır.
- Reader
- Fixed note read request ready
- Admission / errors
- Read arrived; size/permission/quota/deadline pending
- Public note store
- Own public note unchanged; no read/write
- Gate evidence ayrıldı
Finite predicate gerekli koşulları ayrı değerlendirir; unknown permission’a spare quota nedeniyle izin verilmez.
- Reader
- Fixed note read request ready
- Admission / errors
- Permission evidence unknown; no allow
- Public note store
- Own public note unchanged; no read/write
- Dispatch withheld
Pre-dispatch denial store’u untouched bırakır; body ve write yokluğu bu selected state order’dan çıkar.
- Reader
- Fixed note read request ready
- Admission / errors
- Dispatch=0; delivery=0; body absent; write=false
- Public note store
- Own public note unchanged; no read/write
- Safe error hazır
Safe client diagnostic hazırlanır; stack dump, secret veya internal path bu response içine girmez.
- Reader
- Fixed note read request ready
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
- Safe error alındı
Reader completed error arrival’ını görür; pre-dispatch evidence sonradan unknown commit iddiasıyla karıştırılmaz.
- Reader
- Error received; protected body absent; no read/write
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
- Evidence scope sonucu
Reader local diagnostic’i yorumlar; genel response-lost write senaryosu ayrı ledger’da unknown olarak kalır.
- Reader
- No dispatch/delivery/body/write; cause retained
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
Deadline doldu
- Read request hazır
Reader Tea & Bread public title’ı için read request hazırlamıştır. Admission henüz permission, byte budget, concurrency ve deadline değerlendirmedi; store’a read veya write gönderilmedi.
- Reader
- Fixed note read request ready
- Admission / errors
- Admission pending; no reservation/dispatch
- Public note store
- Own public note unchanged; no read/write
- Request gate’e geldi
Admission completed request arrival’ını görür; body size, permission, concurrency ve deadline ayrı koşullardır.
- Reader
- Fixed note read request ready
- Admission / errors
- Read arrived; size/permission/quota/deadline pending
- Public note store
- Own public note unchanged; no read/write
- Gate evidence ayrıldı
Finite predicate gerekli koşulları ayrı değerlendirir; unknown permission’a spare quota nedeniyle izin verilmez.
- Reader
- Fixed note read request ready
- Admission / errors
- now=deadline; pre-dispatch deadline denied
- Public note store
- Own public note unchanged; no read/write
- Dispatch withheld
Pre-dispatch denial store’u untouched bırakır; body ve write yokluğu bu selected state order’dan çıkar.
- Reader
- Fixed note read request ready
- Admission / errors
- Dispatch=0; delivery=0; body absent; write=false
- Public note store
- Own public note unchanged; no read/write
- Safe error hazır
Safe client diagnostic hazırlanır; stack dump, secret veya internal path bu response içine girmez.
- Reader
- Fixed note read request ready
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
- Safe error alındı
Reader completed error arrival’ını görür; pre-dispatch evidence sonradan unknown commit iddiasıyla karıştırılmaz.
- Reader
- Error received; protected body absent; no read/write
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
- Evidence scope sonucu
Reader local diagnostic’i yorumlar; genel response-lost write senaryosu ayrı ledger’da unknown olarak kalır.
- Reader
- No dispatch/delivery/body/write; cause retained
- Admission / errors
- Safe error response ready; protected body absent
- Public note store
- Own public note unchanged; no read/write
ROLLER · STATE · VERİ AKIŞI
Quota ile permission birbirinin yerine geçmez
Resource policy request size, concurrency, work budget, deadline ve queue sınırları gibi farklı koşullar içerir. Rate limit belirli zaman penceresindeki sıklığı sınırlar; tek pahalı operation’ın memory veya fan-out’unu tek başına kontrol etmez. Atlas Notları public title read için maxConcurrent=2, maxBytes=64 ve deadlineTick=10 kullanır. Bunlar örnek değerleridir, gerçek capacity ölçümü değildir. Permission’ın bilinmesi ve verilmesi quota gate’inden ayrıdır. İzinli actor quota doluyken read başlatamaz; boş quota da unknown permission’a izin vermez. Ucuz size/shape kontrolünü pahalı işten önce yapmak yararlı sınırdır, OS/container isolation kanıtı değildir. Sahne gate tamamlanmadan store’a dispatch yapmaz. Başarı read-only title projection’dır; store mutation veya write modellenmez.
Deadline, cancellation ve partial failure
Deadline caller’ın artık beklemeyeceğini belirleyebilir; downstream işin kesin durduğu veya side effect’in geri alındığı anlamına gelmez. Bu model admission’ı deadline’dan önce kontrol ettiğinden expired dalı store’a ulaşmaz. Daha önce dispatch edilmiş write için response kaybı farklıdır: sonuç unknown kalabilir ve koşulsuz retry aynı action’ı yeniden uygulayabilir. Artifact bu genel durumu ayrı partial-failure tablosunda tutar; read-only ret dallarıyla karıştırmaz. Cancellation propagation, transaction commit ve idempotency kapsamı gerçek integration evidence ister. Yerel quota reservation normal sonuçta veya exception sonrası finally ile bırakılır. Bu local counter davranışı ölçülebilir; process crash, distributed lease ve yük altında autoscaling doğrulanmış sayılmaz.
Error formatı ile evidence scope’ı
Error handling client’a anlaşılır status ve sınırlı açıklama verirken server diagnostic’i erişim kontrollü tutar. Stack dump, secret veya internal path client body’sine eklenmez. RFC 9457 problem details, troubleshooting için sınırlı açıklama formatı sunar ve RFC 7807’nin yerini alır. Defter typed decision code kullanır; gerçek HTTP response üretmez. 429 rate limiting’i anlatır ve Retry-After isteğe bağlıdır. Her concurrency exhaustion’ın mutlaka 429 olması veya retry’ın kesin başarılı olması sonucu çıkarılmaz. Permission unknown, known deny, deadline ve quota-full farklı internal nedenlerdir. Sade client mesajı telemetry’nin bütün nedenleri tek error altında toplamasını gerektirmez. Dispatch edilen action, recipient ve commit evidence ayrı izlenir.
Graceful degradation’ın yetki sınırı
Dependency hatasında sistemin tamamen durmaması yararlı olabilir; permission service’e ulaşılamamasını allow’a çevirmek ise farklı policy kararıdır. Fail-closed gate protected action’ı teslim etmez. Public yardım metni veya offline reference ayrı policy ile sunulabilir; protected body yerine sessizce verilmez. Defter permission-missing için evidence=null ve allow=false tutar. Cached karar kullanılacaksa actor/object/action kapsamı, freshness ve revocation ihtiyacı açık olmalıdır. Eski allow’u sınırsız kullanmak graceful degradation değildir. Error boundary exception’ları kontrol dışı success’e çevirmemelidir. Resource limit de authorization’ın üzerinde bağımsız admission katmanıdır; bu sınırlı predicate fault tolerance, network availability veya resource isolation garantisi vermez.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Quota/permission
- Normal read admission
19 byte ≤ maxBytes 64, active 1 + requested 1=2 ve permissionEvidence true. now 2 deadline 10’dan önce; bu finite koşullar title delivery’ye izin verir, write false kalır.
- Admission/failure ledger
- Normal allowed / public body / no write
- Budget ve authority gate
- Henüz değerlendirilmedi
- Operation sonucu
- Henüz değerlendirilmedi
- Quota-full farklı neden
active 2 + requested 1 maxConcurrent 2’yi aşıyor. Quota-full expectedDispatch false ve body null; permission true olsa da budget kapanır, caller unauthorized sayılmaz.
- Admission/failure ledger
- Normal allowed / public body / no write
- Budget ve authority gate
- Quota full / dispatch false / not authz denial
- Operation sonucu
- Henüz değerlendirilmedi
- Unknown permission gate
Permission-missing null tutar ve protected delivery kapalıdır. Known-denied false ile aynı no-body sonucu olsa da evidence türü farklı; dependency unknown allow’a tamamlanmaz.
- Admission/failure ledger
- Normal allowed / public body / no write
- Budget ve authority gate
- Quota full / dispatch false / not authz denial
- Operation sonucu
- Permission null ≠ false / both withheld
- Deadline equality
now 10 deadlineTick 10 olduğunda dispatch başlamaz. Logical equality kontrolü network timeout, request cancellation veya downstream worker’ların durduğu kanıtı değildir.
- Admission/failure ledger
- Deadline equality / no dispatch
- Budget ve authority gate
- Quota full / dispatch false / not authz denial
- Operation sonucu
- Permission null ≠ false / both withheld
- Concurrency ve rate
MaxConcurrent aynı anda active işler için budget. RateLimitWindowDefined false; bunu her platformda 429 veya zorunlu Retry-After sonucu diye sunmuyoruz.
- Admission/failure ledger
- Deadline equality / no dispatch
- Budget ve authority gate
- Concurrency budget / no rate-window claim
- Operation sonucu
- Permission null ≠ false / both withheld
- Pre-dispatch kapsamı
Bu üç denial’da store untouched sonucu explicit no-dispatch sırasına bağlı. Finite integer gates gerçek overload capacity, distributed counter veya isolation doğrulaması değil.
- Admission/failure ledger
- Deadline equality / no dispatch
- Budget ve authority gate
- Concurrency budget / no rate-window claim
- Operation sonucu
- Known pre-dispatch denial / no downstream mutation
Partial outcome
- Response lost context
After-write-response-lost ledger dispatch true, commitEvidence null ve writeOutcome null taşıyor. ActualWritePerformed false; bu satır gerçek write deneyi değil, evidence sınırı.
- Admission/failure ledger
- Dispatch true / commit unknown
- Budget ve authority gate
- Henüz değerlendirilmedi
- Operation sonucu
- Henüz değerlendirilmedi
- Error rollback değildir
Caller error’ı downstream rollback olduğunu söylemez. Known before-dispatch denial false commit taşıyabilir; dispatched unknown outcome aynı Boolean’a indirgenemez.
- Admission/failure ledger
- Dispatch true / commit unknown
- Budget ve authority gate
- Client error ≠ proven rollback
- Operation sonucu
- Henüz değerlendirilmedi
- Retry garantisi ekleme
RetryGuaranteesSuccess iki partial row’da da false. Mutating action retry’ı için transaction ve idempotency scope gerekir; client response yokluğu duplicate effect’i dışlamaz.
- Admission/failure ledger
- Dispatch true / commit unknown
- Budget ve authority gate
- Client error ≠ proven rollback
- Operation sonucu
- Retry outcome unguaranteed / effect scope needed
- Safe error projection
ClientMessage The requested read is unavailable. olur; stack, secret ve internal path dahil değil. Minimum dış mesaj internal diagnostic reason’un hiç kaydedilmediği anlamına gelmez.
- Admission/failure ledger
- Safe message / no sensitive internals
- Budget ve authority gate
- Client error ≠ proven rollback
- Operation sonucu
- Retry outcome unguaranteed / effect scope needed
- Cleanup ownership
Accepted local work sonunda reserved counter finally ile release edilir. Böyle yerel bir cleanup sonucu process crash recovery veya remote cancellation propagation kanıtı değildir.
- Admission/failure ledger
- Safe message / no sensitive internals
- Budget ve authority gate
- Local cleanup / distributed lifecycle separate
- Operation sonucu
- Retry outcome unguaranteed / effect scope needed
- Outcome’u honest tut
Pre-dispatch no-write bilinir, post-dispatch write unknown kalır. Safe error veya quota başarı sayısı bu bilinmeyeni kapatmaz; commit kendi observer evidence’ını ister.
- Admission/failure ledger
- Safe message / no sensitive internals
- Budget ve authority gate
- Local cleanup / distributed lifecycle separate
- Operation sonucu
- No-dispatch known / dispatched outcome unknown
VARSAYIM · SINIR · KONTROL
Hata aldı; o hâlde işlem olmadı varsayımı
Caller’ın error görmesi bütün downstream action’ların yapılmadığını kanıtlamaz. Böyle bir sonuç dispatch ve commit boundary’si hakkında yeterli evidence ister. Quota-full ve deadline dalları dispatch öncesinde kapanır; store’a dokunulmadığı sonucu bu adım sırasına bağlıdır. Genel partial-failure tablosunda ise write dispatch edilmiş, response kaybolmuş ve commit evidence unknown kalmıştır; writeOutcome null’dır. Bu verilen durum gerçek write veya timeout deneyi değildir. İnceleme kanıtın hangi aşamada kaybolduğunu ve retry policy’nin hangi action’a uygulandığını sorar. Client error, server rollback, bütün worker’lara cancellation ulaşması veya eksiksiz audit anlamına gelmez. Her biri ayrı integration ya da transaction evidence gerektirir; normal read kontrolü bunların yerine geçmez.
Dependency unknown’dan allow’a sıçrama
Resource veya permission dependency’si yanıt vermediğinde protected işlemi açmak yalnız availability tercihi değildir; authorization control’ünü de değiştirir. Gerekli actor/object/action evidence olmadan protected delivery yapılması boundary’yi aşar. Model permission-missing için null saklar, dispatch ve body olmadan kapanır. Known deny ayrı false evidence taşır. İki branch’in aynı no-delivery sonucuna ulaşması kanıtlarının aynı olduğu anlamına gelmez. Quota-full da actor’ın yetkisiz olduğunu göstermez; yalnız seçilen budget aşılmıştır. Review nedenleri karıştırmadan gerekli koşulları izler. Örnek finite sayılarla admission kararını inceler; gerçek overload, endpoint davranışı veya distributed counter ölçümü yapmaz.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
Admission controls
- Bağımsız gate’ler
Request size, permission, concurrency ve deadline ayrı değerlendirilir. Normal title Tea & Bread ve write false; protected fallback farklı operation/policy isteyecektir.
- Admission records
- Size/permission/concurrency/deadline distinct
- Gate/counter review
- Henüz değerlendirilmedi
- Evidence sonucu
- Henüz değerlendirilmedi
- Üç negative outcome
Quota-full, permission-missing ve deadline dispatch false, delivery false, body null tutar. Aynı withheld sonuç farklı gate reasons ile correlation’a bağlanır.
- Admission records
- Size/permission/concurrency/deadline distinct
- Gate/counter review
- Three reasons / no dispatch or body
- Evidence sonucu
- Henüz değerlendirilmedi
- Counter release kontrolü
Normal local success ve sabit benign exception sonunda finally counter release beklenir. Bu kontrol finite local reservation’dır; actual concurrency veya stress scheduler kanıtı değildir.
- Admission records
- Size/permission/concurrency/deadline distinct
- Gate/counter review
- Three reasons / no dispatch or body
- Evidence sonucu
- Success/exception cleanup / finite scope
- Error disclosure kontrolü
Client safe message stack/secret/path taşımıyor. Internal reason, user response ve store outcome ayrı projections; birinin boş oluşu diğerinin başarısı diye yorumlanmaz.
- Admission records
- Safe client projection / internal reason separate
- Gate/counter review
- Three reasons / no dispatch or body
- Evidence sonucu
- Success/exception cleanup / finite scope
- Commit evidence karşılaştırması
Before-dispatch denial commit false; after-dispatch lost response commit null. Unknown write outcome’ı false yapmamak mutating retry kararının doğru scope’ta kalmasını sağlar.
- Admission records
- Safe client projection / internal reason separate
- Gate/counter review
- False commit ≠ unknown commit
- Evidence sonucu
- Success/exception cleanup / finite scope
- Dar resource kanıtı
Native integer predicate/cleanup sonucu capacity, circuit breaker, cancellation veya transaction sınaması değildir. Yeni production requirement varsa bu ayrı observer koşullarıyla değerlendirilir.
- Admission records
- Safe client projection / internal reason separate
- Gate/counter review
- False commit ≠ unknown commit
- Evidence sonucu
- Finite admission known / wider runtime unmeasured
Dispatch eksik
- Tek client error
Review yalnız unavailable client message görüyor; dispatch ve commit kaydı yok. Aynı görünüm pre-dispatch deny veya post-dispatch unknown result olabilir.
- Admission records
- Client error known / dispatch evidence missing
- Gate/counter review
- Henüz değerlendirilmedi
- Evidence sonucu
- Henüz değerlendirilmedi
- Expected gate’i kopyalama
Quota-full fixture’sındaki dispatch false bu eksik olayın actual execution kaydı değildir. Failure label’dan no-write sonucu üretmek correlation ve receipt boşluğunu gizler.
- Admission records
- Client error known / dispatch evidence missing
- Gate/counter review
- Expected no-dispatch ≠ event evidence
- Evidence sonucu
- Henüz değerlendirilmedi
- Write outcome açık
Bu review dispatch/commit/write UNKNOWN tutar. Retry veya rollback önerisi bu result’ı garanti etmiyor; işin idempotency/transaction owner’ı ayrıca bilgilendirilmeli.
- Admission records
- Client error known / dispatch evidence missing
- Gate/counter review
- Expected no-dispatch ≠ event evidence
- Evidence sonucu
- Dispatch/commit/write UNKNOWN
- Gerekli boundaries
Admission reason, dispatch receipt, operation identity ve store transaction outcome gerekli. Sensitive stack veya private body olmadan bu karşılaştırma alanları tutulabilir.
- Admission records
- Needed: reason/dispatch/operation/commit
- Gate/counter review
- Expected no-dispatch ≠ event evidence
- Evidence sonucu
- Dispatch/commit/write UNKNOWN
- Cleanup boşluğu ayrı
Counter release gözlemi olsa bile request cancellation veya business rollback kanıtı değildir. Kaynak budget’i ile persistence effect farklı sahipler; birinin sonucu diğerini doldurmaz.
- Admission records
- Needed: reason/dispatch/operation/commit
- Gate/counter review
- Budget release ≠ rollback or cancellation
- Evidence sonucu
- Dispatch/commit/write UNKNOWN
- Sınırlı review sonucu
Yeni evidence dispatch’ten önce mi sonra mı kaybolduğunu yanıtlamalı. Bu olay client error’ı korur; no-write, successful retry veya healthy overload control sonucu eklemez.
- Admission records
- Needed: reason/dispatch/operation/commit
- Gate/counter review
- Budget release ≠ rollback or cancellation
- Evidence sonucu
- Retain error / collect scoped boundary evidence
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Admission ve cleanup sahipliğini belirle
Request size, permission evidence, concurrency ve deadline gate’lerini pahalı resource işleminden önce uygula. Counter reservation yalnız kabul edilen iş için yapılır; yerel operation sonunda finally release edilir. Distributed sistemde counter’ın node/tenant kapsamı, atomicity’si ve crash recovery’si ayrı tasarım sorularıdır. İki integer karşılaştırması bunları çözmez. Permission dependency hatasında protected title teslim edilmez. Sınırlı public fallback varsa ayrı operation ID ve policy ile açıkça gösterilir. Server diagnostic nedeniyle client’a uygun sade mesaj ayrı projection’lar kullanır; plaintext secret, stack ve internal filesystem path dışarı verilmez. HTTP adapter status’u kendi profile’ına göre seçer. Bu defterdeki typed code’lar evrensel Event ID veya her platform için zorunlu HTTP code değildir.
No-dispatch ile unknown commit kanıtını koru
Bağımsız fixture normal read’in title ürettiğini; quota-full, permission-missing ve deadline dallarının dispatch=0, delivery=0, write=false ve body=null tuttuğunu kontrol eder. Yerel counter testinde success ve sabit benign exception sonrası finally cleanup gözlenir. Bu scheduler veya yük testi değildir. Input data ve request context’inin değişmemesi de ayrı kontrol edilir. Partial-failure tablosundaki unknown commit known false yapılmaz; mutating action retry’ı idempotency ve transaction evidence ister. Sade error formatı internal nedeni kaybetmeden client’a fazla ayrıntı taşımamayı amaçlar. Bu kanıt admission tasarımını açıklar; gerçek concurrency, cancellation, circuit breaker veya overload capacity için ayrı integration test’i gerekir.
ŞİMDİ VAKAYA UYGULA
Her client error no-write anlamına gelir mi?
Normal public read 19 byte request’i active1+requested1 ≤ maxConcurrent2 ve now2 < deadline10 ile geçiriyor. Quota-full, permission-missing ve deadline dispatch’ten önce duruyor. Genel partial-failure örneğinde response lost sonrası commit evidence null; bu ikinci durumu no-dispatch ile eşitlemeyeceğiz.
Vakadaki doğrulanmış actor, tenant ilişkisi ve requested action için gereken kararları ayır. Authentication veya proof başarısını object permission yerine kullanma.
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Atlas Notları — resource ve error karar defteri
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"profile": {
"title": "Tea & Bread",
"requestText": "{\"noteId\":\"note-A\"}",
"maxBytes": 64,
"maxConcurrent": 2,
"deadlineTick": 10,
"actualResourceIsolation": false,
"actualHTTP": false,
"actualPersistence": false
},
"rows": [
{
"case": "normal",
"bytes": 19,
"active": 1,
"requested": 1,
"permissionEvidence": true,
"now": 2,
"expectedDispatch": true,
"expectedDelivery": true,
"expectedBody": {
"title": "Tea & Bread"
},
"expectedWrite": false,
"expectedDecision": "allowed"
},
{
"case": "quota-full",
"bytes": 19,
"active": 2,
"requested": 1,
"permissionEvidence": true,
"now": 2,
"expectedDispatch": false,
"expectedDelivery": false,
"expectedBody": null,
"expectedWrite": false,
"expectedDecision": "quota-full"
},
{
"case": "permission-missing",
"bytes": 19,
"active": 1,
"requested": 1,
"permissionEvidence": null,
"now": 2,
"expectedDispatch": false,
"expectedDelivery": false,
"expectedBody": null,
"expectedWrite": false,
"expectedDecision": "permission-missing"
},
{
"case": "deadline",
"bytes": 19,
"active": 1,
"requested": 1,
"permissionEvidence": true,
"now": 10,
"expectedDispatch": false,
"expectedDelivery": false,
"expectedBody": null,
"expectedWrite": false,
"expectedDecision": "deadline"
}
],
"partialFailureLedger": [
{
"case": "before-dispatch-denial",
"dispatch": false,
"commitEvidence": false,
"writeOutcome": false,
"retryGuaranteesSuccess": false
},
{
"case": "after-write-response-lost",
"dispatch": true,
"commitEvidence": null,
"writeOutcome": null,
"retryGuaranteesSuccess": false,
"actualWritePerformed": false
}
],
"errorProfile": {
"clientMessage": "The requested read is unavailable.",
"stackIncluded": false,
"secretIncluded": false,
"internalPathIncluded": false,
"actualHTTPResponse": false
},
"rateVsConcurrency": {
"rateLimitWindowDefined": false,
"concurrencyProfileDefined": true,
"universal429ForConcurrency": false,
"retryAfterMandatory": false
},
"unknownEvidence": {
"permission": null,
"expectedDispatch": false,
"expectedDelivery": false,
"expectedBody": null,
"expectedWrite": false
},
"boundaries": {
"actualStress": false,
"actualCancellation": false,
"actualDistributedCounter": false,
"actualCircuitBreaker": false,
"actualTransaction": false
},
"knownDeniedEvidence": {
"permission": false,
"expectedDispatch": false,
"expectedDelivery": false,
"expectedBody": null,
"expectedWrite": false
}
}- rows
- Sınırlı admission koşulu; ret durumunda dispatch, delivery veya write yoktur.
- partialFailureLedger
- Önceden dispatch varsa commit unknown olabilir; burada gerçek write çalıştırılmaz.
- errorProfile
- Client’a uygun sade projection; hassas internal ayrıntı içermez.
- unknownEvidence
- Eksik permission evidence, bilinen deny kararı değildir.
Sınırlı integer hesabı ve sabit benign local exception kullanılır. Resource isolation, stress, network timeout, transaction veya gerçek HTTP response testi değildir.
İki yanlış kanı
Error varsa işlem kesin yapılmamıştır.
Dispatch öncesi kanıt bunu gösterebilir; dispatch sonrası response kaybında commit unknown kalabilir.
Permission service unavailable ise allow vermek güvenlidir.
Protected action için unknown evidence izin değildir; fallback varsa ayrı policy ve operation gerektirir.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
maxConcurrent=2; active=2 ve requested=1. Permission true ve byte budget uygun. Yeni request dispatch edilir mi?
- Hayır. quota-full; body ve dispatch yok.
- Evet. Permission true olduğunda bütün resource limit’leri kalkar.
Gerekçeli cevabı oku
Hayır. quota-full; body ve dispatch yok. — 2+1 toplamı 2 sınırını aşar. Permission başarısı resource quota’yı geçersiz kılmaz.
Permission null ve permission false iki kayıtta da dispatch’i durduruyor. Aynı evidence anlamına mı gelir?
Dersten seçilen artifact alanları; öğretim örneği
- unknownEvidence
- {"permission":null,"expectedDispatch":false,"expectedDelivery":false,"expectedBody":null,"expectedWrite":false}
- knownDeniedEvidence
- {"permission":false,"expectedDispatch":false,"expectedDelivery":false,"expectedBody":null,"expectedWrite":false}
- Evet. Null her zaman açık policy denial veya saldırı kanıtıdır.
- Hayır. Null bilinmeyen, false bilinen ret.
Gerekçeli cevabı oku
Hayır. Null bilinmeyen, false bilinen ret. — İkisi de body vermese de nedenleri farklıdır. Missing evidence’ı automatic allow veya kanıtlanmış hostile davranış diye sınıflandırmayız.
Deadline ve concurrency retleri neden universal HTTP 429 anlamına gelmez? Response yokluğundan önceki write’ın geri alındığı çıkarılır mı?
Gerekçeli cevabı oku
Bu sonlu profile concurrency kontrolü tanımlar, rate-limit window değil. HTTP status ve Retry-After policy’si ayrıca belirlenir; universal429ForConcurrency=false. Response’un olmaması commit veya write sonucunu tek başına bildirmez; conceptual after-write-response-lost sonucu unknown kalır. Bu branch gerçek write veya cancellation testi değildir. Kullanıcı hata mesajı internal path/stack/secret taşımamalıdır.
□ Concurrency kotasını rate window veya universal status saymadım.
□ Response yokluğunu business rollback garantisi saymadım.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- OWASP Denial of Service Cheat SheetSoftware Design Concepts: cheap validation, graceful degradation/bulkheads · Input validation: total request size and bounded resource allocation
- OWASP Authorization Cheat SheetDeny by Default · Validate the Permissions on Every Request
- OWASP Error Handling Cheat SheetObjective: generic client response with server-side diagnostics
- RFC9457 Problem Details for HTTP APIs§5 Security Considerations: limit sensitive implementation detail exposure
- RFC6585 Additional HTTP Status Codes§4 429 Too Many Requests / optional Retry-After / unspecified counting scope
- RFC9110 HTTP Semantics§9.2.2 Idempotent Methods: response loss, intended effect and non-idempotent automatic retry conditions