Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-21.01

Source’tan deployment’a

Build output’un byte kimliğini, kontrol sonuçlarını ve release kararını ayrı kanıtlarla değerlendir.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Local build

  1. Input identity

    public-note.json ve theme.css source girdileri hazırdır. Yerel builder henüz index.html/site.css üretmedi; verifier bu çıktıları kontrol etmedi.

    Source inputs
    Fixed public inputs
    Local builder
    Builder not run
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  2. Input oku

    Builder yalnız own temporary public-note.json ve theme.css required inputs’ını okur; unrelated user file yoktur.

    Source inputs
    Fixed public inputs
    Local builder
    Required inputs read
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  3. Render / copy

    Own build title’ı HTML’e render eder ve CSS bytes’ını copy eder; JS module bundler çalıştırılmaz.

    Source inputs
    Fixed public inputs
    Local builder
    HTML / CSS produced
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  4. Artifact identity

    Fixed entry order ve timestamp ile static archive üretilir; digest exact bytes’ı kimlikler, approval değildir.

    Source inputs
    Fixed public inputs
    Local builder
    Archive / digest ready
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  5. Independent read

    Verifier independent HTML parser ve ZIP reader ile produced title, entries ve CSS bytes’ını inceler.

    Source inputs
    Fixed public inputs
    Local builder
    Archive / digest ready
    Independent verifier
    Tea title / entries read
    Local candidate registry
    baseline-a only
  6. Gate pass

    Selected local assertions geçer; bu verification publication, environment parity veya runtime health değildir.

    Source inputs
    Fixed public inputs
    Local builder
    Archive / digest ready
    Independent verifier
    Selected checks passed
    Local candidate registry
    baseline-a only
  7. Local record

    Yerel candidate registry kontrol edilen digest’i kaydeder. Bu kayıt deployment, route activation veya push yapıldığı anlamına gelmez.

    Source inputs
    Fixed public inputs
    Local builder
    Archive / digest ready
    Independent verifier
    Selected checks passed
    Local candidate registry
    candidate-a local only

Gate failed

  1. Input sabit

    Source yine Tea note içerir; bu dalın verifier girdisi Coffee note bekler. Builder henüz çıktı üretmedi ve bu uyuşmazlık için karar verilmedi.

    Source inputs
    Fixed public inputs
    Local builder
    Builder not run
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  2. Build geçer

    Own builder valid Tea HTML üretir; build success, independent expected content’in sağlandığı anlamına gelmez.

    Source inputs
    Fixed public inputs
    Local builder
    Tea HTML produced
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  3. Actual oku

    Independent parser actual Tea note title’ını okur; expected Coffee note hâlâ separate test expectation’dır.

    Source inputs
    Fixed public inputs
    Local builder
    Tea HTML produced
    Independent verifier
    Actual Tea title read
    Local candidate registry
    baseline-a only
  4. Gate reject

    Content assertion mismatch verifier result’u failed yapar; candidate promotion’a hazır sayılmaz.

    Source inputs
    Fixed public inputs
    Local builder
    Tea HTML produced
    Independent verifier
    Expected mismatch
    Local candidate registry
    baseline-a only
  5. Record korunur

    Yerel baseline korunur. Kontrolden kalan candidate, production veya onaylanmış artifact olarak işaretlenmez.

    Source inputs
    Fixed public inputs
    Local builder
    Tea HTML produced
    Independent verifier
    Expected mismatch
    Local candidate registry
    baseline-a unchanged

Missing input

  1. Eksik input

    Bu dalda zorunlu theme.css source girdisi yoktur. Eksik girdi, üretilmiş bir çıktının içerik kontrolünden kalmasıyla aynı durum değildir.

    Source inputs
    theme.css missing
    Local builder
    Builder not run
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  2. Set kontrolü

    Builder declared input set’i kontrol eder; old archive varmış gibi candidate reuse yapılmaz.

    Source inputs
    theme.css missing
    Local builder
    Input set checked
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  3. Build durur

    Required input yokken build stops ve candidateCreated=false kalır; partial output ready değildir.

    Source inputs
    theme.css missing
    Local builder
    Build stops: missing
    Independent verifier
    Verifier not run
    Local candidate registry
    baseline-a only
  4. Gate koşulmaz

    Candidate olmadığından verifier çalıştırılmaz; not-run sonucu passed olarak okunamaz.

    Source inputs
    theme.css missing
    Local builder
    Build stops: missing
    Independent verifier
    Verification not run
    Local candidate registry
    baseline-a only
  5. Yeni candidate yok

    Yerel registry baseline’ı korur; oluşmamış output için hash veya deployment sonucu yazılmaz.

    Source inputs
    theme.css missing
    Local builder
    Build stops: missing
    Independent verifier
    Verification not run
    Local candidate registry
    baseline-a unchanged

Runtime config

  1. Bytes sabit

    Aynı static package digest’i korunur; public runtime config bu package byte’larından ayrı bir girdidir. Config decoder henüz READ_ONLY değerini değerlendirmedi.

    Source inputs
    Static package fixed
    Local builder
    Public config supplied
    Independent verifier
    Parser not run
    Local candidate registry
    Deployment absent
  2. Text input

    Supplied READ_ONLY value false bir string’dir; native check process environment veya .env okumaz.

    Source inputs
    Static package fixed
    Local builder
    Public config supplied
    Independent verifier
    false text observed
    Local candidate registry
    Deployment absent
  3. Typed gate

    Selected parser exact false text’ini false boolean’a çevirir; generic truthiness kullanılmaz.

    Source inputs
    Static package fixed
    Local builder
    Public config supplied
    Independent verifier
    Typed false accepted
    Local candidate registry
    Deployment absent
  4. Alternate config seçimi

    Local builder alternate public true text’ini ayrı input olarak seçer; verifier’ın önceki typed false sonucu henüz değişmez, static package bytes aynı kalır.

    Source inputs
    Static package fixed
    Local builder
    Alternate true supplied
    Independent verifier
    Typed false accepted
    Local candidate registry
    Deployment absent
  5. Alternate typed kontrol

    Independent verifier seçilmiş true text’ini typed true’ya çevirir; builder’ın input seçimi ve static package bytes bu yerel adımda değişmez.

    Source inputs
    Static package fixed
    Local builder
    Alternate true supplied
    Independent verifier
    Typed true accepted
    Local candidate registry
    Deployment absent
  6. Scope ayrılır

    Yerel config parsing sonucu kaydedilir. Server startup, release approval veya deployment bu akışta gerçekleşmez.

    Source inputs
    Static package fixed
    Local builder
    Alternate true supplied
    Independent verifier
    Typed true accepted
    Local candidate registry
    Local only / no release

ROLLER · STATE · VERİ AKIŞI

Source, build output ve environment farklı kanıt taşır

Development, test, staging ve production adları kalite sonucu değildir. Development değişiklik üretir; test seçilen davranışı kontrol eder; staging release candidate’ı daha temsilî configuration ve dependency’lerle inceleyebilir; production kullanıcıya hizmet verir. Aynı ortam adı iki projede aynı izolasyon veya data policy’sini garanti etmez. Staging’de geçen bir kontrol, production secret’larının, network policy’nin, traffic load’un veya migration state’inin aynı olduğunu göstermez.

Source code’un kimliği ile build output’un byte kimliği ayrıdır. Build, belirlenmiş input’ları toolchain ve seçeneklerle işleyerek HTML render, TypeScript transform, CSS processing, resource copy veya package oluşturma gibi çıktılar üretir. Bir source değişikliği her artifact’ı değiştirmeyebilir; aynı source da farklı toolchain veya config ile farklı output verebilir. Bu yüzden source revision, dependency ve tool sürümleri, build seçenekleri ve output digest birlikte kaydedilir. SHA-256 byte kimliğini karşılaştırır; tek başına builder’a güven veya release izni sağlamaz.

Bu örnekte public-note.json ve theme.css input’larından index.html ve site.css üretilir. ZIP entry sırası ve timestamp değerleri sabitlendiğinde tekrarlanan build aynı byte digest’i verir. Yerel kontrol geçici dizinde dosyaları yazar; bağımsız HTML parser title’ı okurken archive entry’leri ve CSS byte’ları ayrıca incelenir. Bu, dar bir deterministik build örneğidir. Bütün toolchain’lerin reproducible olduğunu, gerçek repository build’inin veya deployment’ın çalıştığını göstermez.

Bundling, CI/CD ve configuration hangi aşamada etkili?

Bundling, entry point’ten başlayan imported dependency graph’ını işleyerek output’lara bağlar; basit file concatenation veya ZIP packaging ile aynı iş değildir. Minification representation boyutunu etkilerken bundling code ve dependency düzenini değiştirir. esbuild’in Bundle seçeneği recursive import’ları inlining ile birleştiren somut bir örnektir. External import’lar veya compile time’da çözülemeyen import’lar runtime dependency olarak kalabilir. Bu dersin ZIP örneği static dosyaları paketler; esbuild çalıştırmaz.

CI, değişiklikleri shared repository’ye sık entegre edip her integration için build ve test kontrollerinden hızlı feedback alma pratiğidir. Tek bir gece build’i veya automation job’ı bu sıklığı kendiliğinden sağlamaz. CD terimi bağlam ister: continuous delivery release candidate’ı hazırlar, release kararı ayrı kalabilir; continuous deployment ise policy’den geçen değişikliği otomatik production’a taşıyabilir. GitHub workflow içindeki job, runner ve step bu yapının bir provider örneğidir. Artifact kaydı veya yeşil job, release gate’in bütün kapsamını tek başına kanıtlamaz. Burada aşamalar yerel candidate defterinde izlenir; dağıtım yapılmaz.

Environment configuration build time’da browser’a gönderilen byte’lara gömülebilir veya runtime’da server tarafından okunabilir. Browser’a teslim edilen public config sır saklama alanı değildir. Node dotenv değerleri string olarak yorumlar; false metnini genel truthiness ile boolean sanmamak gerekir. Örnekte READ_ONLY için yalnız true ve false metinlerini kabul eden ayrı parser kullanılır; process environment veya .env dosyası okunmaz. İki runtime config aynı static artifact digest’ine eşlik edebilir. Hash eşitliği tek başına davranış eşitliği sağlamaz.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

İçerik gate’i

  1. Public input set’i

    public-note.json Tea note, theme.css ise verilen style bytes’ını taşır. Output set’i yalnız index.html ve site.css; source ve artifact aynı nesne değildir.

    Candidate ledger
    Two inputs / two output entries
    Verification gate
    Henüz değerlendirilmedi
    Local promotion sonucu
    Henüz değerlendirilmedi
  2. İçerik check farkı

    GateFailed expectedTitle Coffee note, actualTitle Tea note. Builder’ın HTML üretebilmesi independent content beklentisinin geçtiği anlamına gelmez.

    Candidate ledger
    Two inputs / two output entries
    Verification gate
    Coffee expected / Tea actual / verified false
    Local promotion sonucu
    Henüz değerlendirilmedi
  3. Baseline’ı koru

    Failed verifier promoted false bırakır ve baseline-a korunur. Local alias production route değildir; bu sonuç bir deploy veya rollback çalıştırıldığı iddiası taşımaz.

    Candidate ledger
    Two inputs / two output entries
    Verification gate
    Coffee expected / Tea actual / verified false
    Local promotion sonucu
    Failed candidate / baseline-a retained
  4. Digest’in sorusu

    Normal output digest’leri exact byte identity’yi bağlar. Manifest ve output birlikte kontrolsüz değişirse digest trusted source veya release authorization üretmez.

    Candidate ledger
    Byte identity ≠ trusted provenance
    Verification gate
    Coffee expected / Tea actual / verified false
    Local promotion sonucu
    Failed candidate / baseline-a retained
  5. Entry allowlist’i

    Archive entry listesi index.html/site.css ile sınırlı. Source note, expectation veya secret’ın bundle’a katılması hash eşleşse bile packaging contract’ını bozabilir.

    Candidate ledger
    Byte identity ≠ trusted provenance
    Verification gate
    Only index.html / site.css allowed
    Local promotion sonucu
    Failed candidate / baseline-a retained
  6. Gate sonucu ayrı

    Normal verified true candidate-a olarak kaydedilir, fakat deployed false. İçerik check’i ve exact artifact bağı local sonucu açıklar; yayın izni bunlardan türetilmez.

    Candidate ledger
    Byte identity ≠ trusted provenance
    Verification gate
    Only index.html / site.css allowed
    Local promotion sonucu
    Verified local candidate / deployed false

Input ve config

  1. Eksik required input

    MissingInput theme.css bulunmadığında candidateCreated false ve verificationRun false. Eski dosya adının görünmesi yeni candidate’ın üretildiğini söylemez.

    Candidate ledger
    theme.css missing / no new candidate
    Verification gate
    Henüz değerlendirilmedi
    Local promotion sonucu
    Henüz değerlendirilmedi
  2. Başarı default’u ekleme

    Verifier hiç çalışmadığında passed sonucu yazılamaz. Missing input, compile failure ve content mismatch farklı gate’ler; aynı fail sözcüğü bilgi kaybı yaratabilir.

    Candidate ledger
    theme.css missing / no new candidate
    Verification gate
    Not run ≠ check passed
    Local promotion sonucu
    Henüz değerlendirilmedi
  3. Candidate yokluğunu koru

    Bu branch’te archive candidate yok. Baseline bytes’ını yeni output saymak input coverage boşluğunu gizler; actual digest ve existence birlikte tutulmalı.

    Candidate ledger
    theme.css missing / no new candidate
    Verification gate
    Not run ≠ check passed
    Local promotion sonucu
    No candidate / baseline not a new build
  4. Boolean string farkı

    READ_ONLY false string’i parsedReadOnly false; alternateText true ise true. Nonempty string truthiness’i bu public config için doğru typed parser’ın yerine geçmez.

    Candidate ledger
    String false → false / true → true
    Verification gate
    Not run ≠ check passed
    Local promotion sonucu
    No candidate / baseline not a new build
  5. Aynı package ayrı davranış

    SameStaticPackage true iken config davranışı değişebilir. Config public ve processEnvironmentRead false; bu model server secret, vault veya gerçek runtime startup kanıtı değildir.

    Candidate ledger
    String false → false / true → true
    Verification gate
    Static identity same / config semantics differ
    Local promotion sonucu
    No candidate / baseline not a new build
  6. Üç sınırı koru

    Input existence, independent verification ve typed config ayrı tutulur. Static-file package bir JS module bundler değildir; esbuildExecuted false bu ayrımı korur.

    Candidate ledger
    String false → false / true → true
    Verification gate
    Static identity same / config semantics differ
    Local promotion sonucu
    Inputs / verification / config distinct

VARSAYIM · SINIR · KONTROL

Başarılı build’i onaylı release sanmak

Build command’ın exit code 0 ile bitmesi yalnız o command’ın başarılı olduğunu söyler. Bağımsız kontrol çalışmamış, farklı artifact incelenmiş veya release approval ayrı bir aşamada kalmış olabilir. Böyle bir candidate’ı hazır release saymak gate kapsamını yanlış anlatır. Failed check dalında builder geçerli HTML üretir, fakat verifier beklenen Coffee note ile okunan Tea note farkını görür ve promotion’ı durdurur. Bu, source compilation failure’dan farklı bir sonuçtur.

Artifact hash’inin eşleşmesi authorization, source review veya provenance imzası sağlamaz. Manifest ile artifact kontrolsüz biçimde birlikte değişirse digest onları güvenilen origin’e bağlamaz. İncelenecek ilişki, hangi input ve config ile hangi output’un test edildiği ve aynı candidate’ın hangi policy’ye sunulduğudur. baseline-a ve candidate-a bu yerel defterin alias’larıdır; gerçek production route veya release pointer değildir.

Configuration sınırını bytes sınırı sanmak

Runtime config değiştiğinde static package aynı kalabilir; bu, application davranışının aynı kaldığını kanıtlamaz. Build time’da browser config içine konan secret da server-only kalmaz. Örnek yalnız public değerler ve bunları type bakımından denetleyen ayrı parser kullanır. Secret yönetimi WEB-16.02’deki lifecycle sınırlarına bağlıdır; environment adı veya .env syntax tek başına vault ya da rotation sağlamaz.

Missing input dalında builder gerekli theme.css dosyasını bulamaz ve archive candidate üretmez. Eski candidate filename’inin görünmesi yeni output üretildiğini göstermez. Kontrol input set’ini, candidate’ın varlığını, hesaplanan digest’i ve verifier sonucunu ayrı kaydeder. Geçici dosyalardan readback yararlı kanıttır; deployment, application startup, external dependency erişimi veya browser rendering bu sonuca eklenmez.

3. Blue · Güvenli geliştirme ve savunma

Hareket olmadan bütün senaryoları oku

Candidate controls

  1. Output bytes’ı tanı

    Buradaki kayıtları yerel static-file builder, HTML title okuyucusu, hash hesabı ve typed config decoder üretir. GitHub workflow, production environment veya deployment log’u gözlenmez. Normal entries index.html ve site.css olarak kayıtlı. Her output digest’i ilgili bytes’a, package digest’i ise paketleme biçimine bağlı; hash türleri birbirinin yerine geçmez.

    Input/output manifest
    Two output digests + package identity
    Bağ ve içerik review’ü
    Henüz değerlendirilmedi
    Gate evidence
    Henüz değerlendirilmedi
  2. İçerik gözlemi

    ParsedTitle Tea note ve normal verified true. Digest equality aynı bytes sorusunu, title check doğru içerik sorusunu yanıtlar; ikisini birlikte candidate-a’ya bağlarız.

    Input/output manifest
    Two output digests + package identity
    Bağ ve içerik review’ü
    Title Tea note / candidate-a verified
    Gate evidence
    Henüz değerlendirilmedi
  3. Olumsuz kontroller

    Coffee expectation verified false ve promoted false; missing theme.css için verification çalışmaz. İki olumsuz örnek aynı rejected release sonucunun farklı nedenlerini korur.

    Input/output manifest
    Two output digests + package identity
    Bağ ve içerik review’ü
    Title Tea note / candidate-a verified
    Gate evidence
    Mismatch vs missing input distinct
  4. Repeatability kapsamı

    RepeatSameBytes verilen builder ve input için true. Bu gözlem dış dependency supply chain, signed provenance veya bütün repository build’inin reproducible olduğunu kanıtlamıyor.

    Input/output manifest
    Selected repeat bytes / broader provenance absent
    Bağ ve içerik review’ü
    Title Tea note / candidate-a verified
    Gate evidence
    Mismatch vs missing input distinct
  5. Config influence kaydı

    Runtime config static package’dan ayrı bağlanır. READ_ONLY parse sonucu public string comparison’dır; process environment veya production policy’nin uygulanması diye kaydedilmez.

    Input/output manifest
    Selected repeat bytes / broader provenance absent
    Bağ ve içerik review’ü
    Config identity separate from static bytes
    Gate evidence
    Mismatch vs missing input distinct
  6. Dar local receipt

    Entry allowlist, bytes, title ve verifier sonucu aynı candidate record’da kalır. Bu ledger deployed false tutar; local pass public activation’a dönüşmez.

    Input/output manifest
    Selected repeat bytes / broader provenance absent
    Bağ ve içerik review’ü
    Config identity separate from static bytes
    Gate evidence
    Local evidence bound / publication separate

Identity kaydı yok

  1. Tek build success

    Buradaki kayıtları yerel static-file builder, HTML title okuyucusu, hash hesabı ve typed config decoder üretir. GitHub workflow, production environment veya deployment log’u gözlenmez. Review yalnız build success mesajını görüyor; input manifest ve output digest yok. Hangi candidate’ın içerik check’inden geçtiği bu mesajla belirlenemez.

    Input/output manifest
    Build success / candidate identity missing
    Bağ ve içerik review’ü
    Henüz değerlendirilmedi
    Gate evidence
    Henüz değerlendirilmedi
  2. Beklentiyi gerçek sayma

    Normal packageSha256 bilinen fixture’a ait. Eksik olayın digest alanına bunu eklemek, incelenmeyen output’u aynı candidate gibi gösterir.

    Input/output manifest
    Build success / candidate identity missing
    Bağ ve içerik review’ü
    Expected digest ≠ missing output evidence
    Gate evidence
    Henüz değerlendirilmedi
  3. Promotion belirsizliği

    Bu kayıtta verifier run, gate result ve promoted state UNKNOWN. Compile success kadar bilgi korunuyor; approval veya deployment sonucu eklenmiyor.

    Input/output manifest
    Build success / candidate identity missing
    Bağ ve içerik review’ü
    Expected digest ≠ missing output evidence
    Gate evidence
    Verifier/promotion/deployment UNKNOWN
  4. Gerekli candidate bağı

    Input bytes/hash, builder identity, config influence ve output digest gerekli. Independent check sonucu aynı output’a bağlanmalı; filename tek başına exact identity değildir.

    Input/output manifest
    Needed: input/builder/config/output/check
    Bağ ve içerik review’ü
    Expected digest ≠ missing output evidence
    Gate evidence
    Verifier/promotion/deployment UNKNOWN
  5. Gate contradiction kontrolü

    Selector verified false iken promoted true tutarsızlığını arar. Zero matches missing record için sağlıklı release kanıtı değildir; observation coverage ayrıca gerekir.

    Input/output manifest
    Needed: input/builder/config/output/check
    Bağ ve içerik review’ü
    Contradiction absent ≠ complete coverage
    Gate evidence
    Verifier/promotion/deployment UNKNOWN
  6. Sonraki kanıtın sorusu

    Yeni record hangi candidate’ın neyi geçtiğini yanıtlamalı. Bu olay için yalnız build mesajı korunur; byte/source bağı kurulmadan release başarı iddiası eklenmez.

    Input/output manifest
    Needed: input/builder/config/output/check
    Bağ ve içerik review’ü
    Contradiction absent ≠ complete coverage
    Gate evidence
    Collect exact candidate/check binding

UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA

Test edilen candidate’ın kimliğini sabitle

Buradaki kayıtları yerel static-file builder, HTML title okuyucusu, hash hesabı ve typed config decoder üretir. GitHub workflow, production environment veya deployment log’u gözlenmez. Input manifest’i, builder kimliğini, config’in etkisini ve output digest’i aynı candidate kaydında ilişkilendir. Gerekli input eksikse candidate üretimini durdur; partial output’u hazır release gibi gösterme. Örnek title ve CSS için belirlenmiş dosyaları kullanır. Tekrarlanan build aynı byte’ları verirken sıradan bir title değişikliği index ve package digest’ini değiştirir. HTML parser’ın okuduğu title içerik beklentisini, hash ise kontrol edilen byte’ların kimliğini yanıtlar.

Archive entry allowlist ile package’a yalnız planlanan dosyaların girdiğini kontrol et. Bu örnekte index.html ve site.css vardır; source notları, test beklentileri veya secrets package’a eklenmez. Dependency cache ile release artifact farklı ömürler taşır. Cache yokken build input’ları yeniden edinilebilmeli; release kaydı ise hangi output’un incelendiğini korumalıdır. Static dosya paketinin kontrolü bir module bundler’ın dependency graph’ını işlemesini ölçmez.

Gate sonucu ve publication state’i ayrı tut

Candidate’ın geçtiği, check’in başarısız olduğu, input’un eksik kaldığı ve config’in uyuşmadığı sonuçları ayrı tut. Yerel build sonucu deployment yapıldığı anlamına gelmez. READ_ONLY parser’ında false metni boolean false olur, beklenmeyen metin reddedilir. Bu yerel type kontrolüdür; Node process.env okuması veya production policy enforcement ölçümü değildir. Config’in string semantics’i ile uygulamanın verdiği karar ayrı değerlendirilir.

Build candidate’ın kontrolü ile onu aktif route’a almak farklı state transition’lardır. Release kararı environment policy’sini, rollback hedefini ve aynı candidate için doğrulama sonucunu birlikte kullanır. Bu yerel defter gerçek deployment yapmaz. Selector failed verifier ile promoted=true tutarsızlığını arar; missing verifier kaydı başarılı release kanıtı değildir.

ŞİMDİ VAKAYA UYGULA

Aynı package hash’i başarılı release anlamına gelir mi?

İki public input’tan index.html ve site.css üretiliyor. Tea note içeriği doğru candidate’a bağlanırken Coffee note bekleyen check başarısız kalıyor. Static package aynı olsa bile READ_ONLY string’inin false veya true yorumlanması farklı runtime davranışı tarif ediyor.

Vakadaki data journey’yi environment, dependency ve telemetry context’iyle birlikte değerlendir. Bir operational success etiketi bütün application sonuçlarını kanıtlar mı?

Bağlı vaka dosyasını aç ↗

ÖRNEĞİ BİRLİKTE OKUYALIM

Source ve static artifact karar defteri

Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.

Ham kaydı ve alan açıklamalarını oku
{
  "environments": {
    "development": "author changes",
    "test": "selected assertions",
    "staging": "representative release-candidate review",
    "production": "serves users; not activated here"
  },
  "inputs": {
    "public-note.json": "{\"title\":\"Tea note\"}",
    "theme.css": "body { color: #222; }\n"
  },
  "outputs": {
    "index.html": "<!doctype html><html lang=\"en\"><head><link rel=\"stylesheet\" href=\"site.css\"></head><body><h1>Tea note</h1></body></html>",
    "site.css": "body { color: #222; }\n"
  },
  "normal": {
    "entries": [
      "index.html",
      "site.css"
    ],
    "packageSha256": "23d0b6423be7f017c5578ccf073562921fe645210e2f0703e1ee2162d7c61a05",
    "outputSha256": {
      "index.html": "a16a5f8c563d184509983d42d01daa3fdf60fbf6d549f071b2c06204b4a3e9c0",
      "site.css": "117f85041fb8bb248011e3ade19c2f8b567e9b4cbaa9cb9e9bb4fb3cabc8367e"
    },
    "repeatSameBytes": true,
    "parsedTitle": "Tea note",
    "verified": true,
    "recordedLocalCandidate": "candidate-a",
    "deployed": false
  },
  "gateFailed": {
    "expectedTitle": "Coffee note",
    "actualTitle": "Tea note",
    "verified": false,
    "promoted": false,
    "localBaseline": "baseline-a"
  },
  "missingInput": {
    "required": "theme.css",
    "candidateCreated": false,
    "verificationRun": false
  },
  "runtimeConfig": {
    "READ_ONLY": "false",
    "parsedReadOnly": false,
    "alternateText": "true",
    "alternateReadOnly": true,
    "sameStaticPackage": true,
    "configIsPublic": true,
    "processEnvironmentRead": false
  },
  "bundling": {
    "dependencyGraphExample": {
      "entry": "main-demo",
      "imports": [
        "label-demo"
      ],
      "labelDemoImports": []
    },
    "nativeFixture": "static-file packaging, not a JS module bundler",
    "esbuildExecuted": false
  },
  "limits": {
    "repositoryBuildRun": false,
    "githubWorkflowRun": false,
    "deploymentRun": false,
    "browserRenderRun": false,
    "secretRead": false,
    "signedProvenanceVerified": false
  },
  "selector": {
    "language": "XPath",
    "xml": "<audit><candidate verified=\"false\" promoted=\"false\"/></audit>",
    "xpath": "count(/audit/candidate[@verified='false' and @promoted='true'])",
    "expected": 0,
    "positiveFixtureXml": "<audit><candidate verified=\"false\" promoted=\"true\"/></audit>",
    "positiveExpected": 1,
    "scope": "Own inert decision observations, not vendor log fields.",
    "missingFieldBehavior": "Missing observation is insufficient evidence; zero matches alone proves no healthy runtime/control."
  }
}
inputs/outputs
Public source byte’ları ile üretilen HTML/CSS byte’ları.
normal/gateFailed
Byte kimliği ve bağımsız içerik kontrolü farklı kararları gösterir.
runtimeConfig/bundling
Runtime config ayrı değerlendirilir; static ZIP packaging, JavaScript bundling değildir.
selector/limits
Yerel karar gözlemleri; repository build’i, deployment veya gerçek secret okuması yok.

Geçici dosyalarda çalışan static builder, HTML parser, ZIP ve hash kontrolleriyle sınırlıdır. Repository build’i, gerçek module bundler, GitHub workflow, deployment, runtime server veya browser rendering çalıştırılmaz.

İki yanlış kanı

Başarılı build ve eşleşen artifact hash’i, onaylanmış deployment demektir.

Build sonucu, kontrol edilen byte’lar, verifier sonucu ve release approval ayrı kanıtlar gerektirir.

Aynı artifact hash’i her environment’da aynı davranışı garanti eder.

Runtime config ve dependency’ler değişebilir; config type’ları ve uygulama yetkileri ayrıca değerlendirilir.

SIRA SENDE

Bu hikâyeyi sen çöz.

Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.

Beklenen başlık Coffee note, fakat package içinden Tea note okunuyor. Bu candidate mevcut baseline’ın yerine geçer mi?

  1. Evet. Package oluştuysa bütün acceptance koşulları sağlanır.
  2. Hayır. verified=false; promoted=false.
Gerekçeli cevabı oku

Hayır. verified=false; promoted=false. — İstenen başlık eşleşmediği için doğrulama başarısızdır. baseline-a korunur; package üretmek tek başına release onayı değildir.

Bu kayıt reproducible package ve gerçek deployment hakkında ne gösteriyor?

Dersten seçilen artifact alanları; öğretim örneği

normal.entries
["index.html","site.css"]
normal.repeatSameBytes
true
normal.verified
true
normal.deployed
false
  1. Tekrar aynı byte’lar üretilmiş; doğrulama geçmiş, deployment yapılmamış.
  2. SHA eşleştiği için production kullanıcıları bu sürümü almıştır.
Gerekçeli cevabı oku

Tekrar aynı byte’lar üretilmiş; doğrulama geçmiş, deployment yapılmamış. — repeatSameBytes=true ve verified=true yerel candidate’ı açıklar. deployed=false olduğu için bunu production yayını sayamayız.

READ_ONLY değeri "false" string’i, alternateText "true". Aynı static package neden iki farklı runtime davranışı için kullanılabilir?

Gerekçeli cevabı oku

String’in dolu olması boolean true demek değildir. Bu örnek "false" için parsedReadOnly=false, "true" için alternateReadOnly=true üretir. Config değişse de sameStaticPackage=true kalabilir. Buradaki config public’tir; gerçek process environment veya secret okunmaz. Static file packaging de gerçek JS module bundler çalışması değildir.

□ String ile parse edilmiş boolean’ı ayırdım.

□ Package byte’larının aynı olmasını runtime config’in aynı olması saymadım.

Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç

Kaynaklar ve kapsam