From e3a21950d7669a2da4419243b130e2a4f5843047 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 00:24:29 +0300 Subject: [PATCH 01/15] docs: record v0.40 B2 process contract --- docs/CONTINUITY.md | 110 +-- docs/RELEASE_PROCESS.md | 31 +- docs/VERIFICATION_LEDGER.json | 665 ++++++++++++++++++ tests/test_continuity_regressions.py | 23 +- .../test_release_documentation_regressions.py | 36 + 5 files changed, 805 insertions(+), 60 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 2742b64..dabd459 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -5,11 +5,11 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `VERIFICATION_LEDGER.json`, diğer tarihsel anlatı `PROJECT_STATUS.md`, `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. -- Güncelleme: 27 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `ebc628bb82e468fefec047b3c779c28b5c765abc` +- Güncelleme: 28 Ağustos 2026 +- Kayıt hazırlanırken doğrulanan HEAD: `994f0e25c7774b3bbdd5f961530a62137a847f16` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-ebc-build-acceptance` (`origin/master` ile `0/0`; EV028-EV029 iki-belge kanıt paketi uncommitted) -- Son kanıt: `EV-20260827-029` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `0/0`; EV030-EV038 ve EV-20260828-001/002 beş-dosya paketi uncommitted) +- Son kanıt: `EV-20260828-002` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -60,56 +60,59 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi ve seçim kayıt paketi exact `f432c73` commit'iyle bağlandı (`EV-20260826-008`). A ve B yalnız karşılaştırma referansıdır. Bitmap'ler Git'e alınmaz ve seçim gerçek Inno Setup davranışı sayılmaz. -- v0.40/Inno paketi PR #53 ile `3dc9dde` master'a alındı; exact-master run tek flaky - reentry testinde durdu, timer kök nedeni test-only kapatıldı (`EV-20260826-077/078`). -- Test-only reentry düzeltmesi PR #54 ile exact `98c9511` protected master'a - alındı. PR run'ı ve yeni exact-master dispatch sırasıyla **5025 passed / 30 - skipped / 0 failed** verdi; eski başarısız run retry edilmedi. -- Exact `98c9511` kaynak build'inin 55,934,004 baytlık ana v0.40 setup'ı önce - kurulu v0.39'u kullanıcı kontrollü interaktif akışta v0.40'a yükseltti; - kurulu Player build EXE'siyle exact eş, 91 dist dosyasında eksik/uyuşmazlık - sıfır ve normal kullanıcı kapanışı sonrasında süreç sızıntısı sıfırdı. -- Ayrı aynı-sürüm maintenance senaryosunda kurulu Player açık bırakıldı; - Restart Manager uygulamayı listeledi ve kullanıcı close-applications yolunu - seçti. Eski PID kopya başlamadan kapandı, kurulum logu başarı ve restart yok - sonucu verdi, 91 dist dosyası yine exact eş kaldı ve üç Finish eylemi kapalıyken - yeni Player/Settings/tarayıcı süreci açılmadı (`EV-20260826-079`). Setup launcher - exit code'u tutulmadığından ve aktif ayar baseline'ı Player açılmadan önce - alındığından genel exit-code veya kullanıcı-ayar-koruma PASS'i yazılmadı. -- Exact v0.40 add-on maintenance, Ready ekranı görünmeyen `Sonraki` eylemine - yönlendirirken gerçek düğme `Kur` olduğu için kopya başlamadan iptal edildi; - 103 dosya, ayarlar, kayıtlar ve süreçler değişmeden kaldı (`EV-20260826-080`). - Regression-first düzeltme yalnız Inno'nun iki hatalı Türkçe Ready mesajını - override eder; hedef/aile **1/14 passed**, ilgili aile **33 passed**, gerçek - main+add-on compile preflight PASS ve çift-süzgeç temizdir (`EV-20260826-081`). -- Düzeltme PR #55 ile iki ebeveynli exact `6dacfd5` merge commit'i olarak - protected master'a ulaştı. PR koşumu `33013632094` ve zorunlu exact-master - dispatch `33014038693` ayrı ayrı **5026 passed / 30 skipped / 0 failed** verdi. - Yalnız add-on'u hedefleyen private build exact `6dacfd5`ten tek, unsigned - 48.909.130 baytlık `85b9b249...fcd3b51` artifact üretti; repo ve resmî - çıktı konumu değişmedi (`EV-20260826-082`). Bu kaynak build sonucu henüz - Türkçe Ready/Geri→İleri veya kurulu bakım kabulü değildir. -- Exact `85b9b249...fcd3b51` insan kontrollü Türkçe same-version akışında tüm - ekranları ve beş exact payload'ı geçti; yalnız beklenen uninstaller/InstallDate - metadata'sı değişti (`EV-20260826-083`). Log/exit, silent ve uninstall ölçülmedi. -- Exact `ca4999d` dispatch'i **5058 passed / 30 skipped / 0 failed** verdi ve - resmî zincir iki v0.40 setup ile doğrulanmış Ed25519 imzalarını üretti; iki - EXE Authenticode `NotSigned` (`EV-20260827-011`). -- Ana v0.40 maintenance/upgrade 91/91 eşlik verdi; active add-on yt-dlp - kapanmayınca Abort/rollback ile v0.39 kaldı (`EV-20260827-012`). Corrected - URL önkoşulu da setup başlamadan FAILED; release bloklu (`EV-20260827-013`). -- Internet Video düzeltmesi hedef **2/2**, aile **42 passed / 2 skipped** verdi; paket `3abdf13`, provenance `e64f8c2`, koruma `07df9c1` olarak bağlıdır (`EV-20260827-014/015/016`). - PR #64 `07df9c1` head'i **5059 passed / 30 skipped / 0 failed** verdi (`EV-20260827-017`); yalnız belge commit'i `d465ee2` sonrasında yeni required run Qt testinde native AV ile FAILED (`EV-20260827-018`). - Regression-first session sahipliği exact `417877c` oldu; `50c4928` hosted koşumu native AV olmadan **5059 passed / 30 skipped / 2 failed** verdi. İki geçici `QMenu` test ömrü kırmızı **2 failed**, sonra hedef/aile **2/32 passed**, karşıt P0/P1/P2=0 ve exact commit `f658fc1` ile test-only düzeltildi (`EV-20260827-019/020/021/022/023`). Ağ/native NOT_RUN. +- v0.40/Inno, reentry ve Türkçe Ready düzeltme zinciri PR #53–#55 üzerinden + protected master'a alındı; exact hosted koşumlar yeşil, insan kontrollü + ana/add-on ekran ve payload sınırları kabul edildi. Tam tarih ve ara kusurlar + append-only `EV-20260826-077`–`083` kayıtlarındadır. +- İlk resmî v0.40 artifact zinciri hosted **5058 passed / 30 skipped** ve geçerli + Ed25519 verdi; Authenticode `NotSigned`. Active add-on kapanış ve ürün URL + önkoşulları fail-closed durdu (`EV-20260827-011`–`013`). +- Internet Video fallback ve geçici `QMenu` test ömrü regression-first kapatıldı; + protected PR #64 head'i **5059 passed / 30 skipped / 0 failed** verdi. Ara + hosted başarısızlıklar retry edilmedi; kaynak/test/provenance ayrıntıları + `EV-20260827-014`–`023` içindedir. - PR #64 build kanıtı ve PR #65 path-contract düzeltmesi protected master'a exact `ebc628b` olarak ulaştı; başarısız run retry edilmedi (`EV-20260827-024`–`027`). - Exact-master dispatch `33077939420`, **5061 passed / 30 skipped / 0 failed** - verdi (`EV-20260827-028`). Yeni resmî build ana/add-on setup SHA-256 değerlerini - `07118348...cf6c5` / `d4a4d799...f9e675` olarak üretti; Ed25519 geçerli, - Authenticode `NotSigned`, main dist 91 dosya ve ölçülen hedef süreç 0 - (`EV-20260827-029`). Add-on'a özgü payload-final kapısı yok; exact yeni ana - artifact için B2 **NOT_RUN**, eski kabul taşınmaz, tag/release blokludur. + Exact-master dispatch **5061 passed / 30 skipped / 0 failed** verdi (`EV-20260827-028`); + EV029 exact ebc build'i ana/add-on `07118348...cf6c5` / `d4a4d799...f9e675` üretti. + Son B2 farklı `B8001DAA...fe2fc` ana artifact ile yürüdü fakat çağdaş source-build + transcript'i yoktu. Provenance preflight'ı shared output'taki iki installer EXE'yi + kaldırdı; imzalar ve kurulu v0.40 kaldı, ölçülen ürün/kullanıcı/kayıt durumu exact + aynı ve süreç 0 (`EV-20260827-038`, imza sınırı düzeltmesi `EV-20260828-001`). Final cycle NOT_RUN; tag/release blokludur. +- Exact `994f0e2` artifact'larıyla yürütülen B2 zincirinde silent/interaktif + kurulumlar, gerçek v0.39 yükseltmeleri, iki kaldırma sırası, altı geçersiz + add-on hedefi, payload/ayar/süreç okumaları geçti. Gerçek Blender URL'si + Player-owned exact `yt-dlp` ile 00:01→00:02 / 10:35 ilerledi; çıkarım Deno + gerektirmedi. Bağımsız birlikte çalıştırılan finite `yt-dlp`/Deno engelleyici + denemesi Restart Manager'da fail-closed durdu; kullanıcı Abort seçti, exit 5, + rollback sonrası 103 kurulu ve iki kullanıcı dosyasında fark sıfır, süreç + sızıntısı sıfırdı (`EV-20260827-030`). Karşıt inceleme bunun installer kusuru + değil güvenli negatif davranış olduğunu doğruladı; `force` eklenmedi. +- EV031'deki o tarihteki B2 sözleşmesi regression-first olarak gerçek ürün URL başarısını + yapay engelleyicilerden ayırdı. Product-success yalnız Player'ın başlattığı + exact `yt-dlp`, PID/ebeveyn/komut ve ilerleyen position/duration ile geçer; + Deno yalnız gerçek çıkarım kullanırsa gerekir. Refusing `yt-dlp` ve Deno + diğer hedefler kapalıyken ayrı tek-engelleyici senaryolarında ölçülür; Ignore + ve force yasak, Abort/rollback/hash/AppData/süreç sınırları fail-closed kalır. + Hedef kırmızıdan sonra belge ailesi **206 passed**, karşıt P0/P1/P2=0 verdi; + ürün ve Inno kaynakları değişmedi (`EV-20260827-031`); bu Deno refusal şartı + daha sonra EV035 ile ölçülen cooperative-Deno kuralıyla değiştirildi. +- Exact kurulu v0.39 `yt-dlp` root+child diğer hedefler kapalı tek engelleyici + olarak sınandı. Restart Manager yalnız iki `yt-dlp` sürecini buldu, kapanışın + tamamlanamadığını kaydetti; kullanıcı Ignore/Retry yerine Abort seçti. Setup + exit 5, kopya/başarı marker'ı yok, rollback sonrası 103 kurulu dosya, iki + kullanıcı dosyası, kayıtlar ve hashler exact aynı, hedef süreç sızıntısı + sıfırdı. İlk evaluator şema-kesişimini yanlış yorumlayarak güvenli BLOCKED + verdi; fiziksel retry yapılmadan ayrı düzeltilmiş verdict **16/16 PASS** oldu + (`EV-20260827-032`). Bu PASS yalnız yt-dlp fail-closed negatif kapısına aittir. +- Restart Manager exact Deno'yu kooperatif kapattı; v0.39→v0.40 add-on upgrade + sızıntısız PASS (`EV-20260827-033`), normal fixture refusal BLOCKED (`EV-20260827-034`). + Sözleşme graceful Deno + exact yt-dlp fail-closed oldu; belge **206 passed**, P0/P1/P2=0 (`EV-20260827-035`). +- Askıya alınmış tek exact v0.40 Player kapanmayınca ana setup kopya öncesi durdu; + kullanıcı Retry/Ignore yerine Abort seçti, exit 5 ve rollback başarılıydı. Tüm + ölçülen 103+2 dosya ile ayar/uninstall/OpenWith/kısayol yüzeyleri exact korundu; resume 0, normal kapanış, watchdog + ateşlenmedi, sızıntı 0; evaluator **23/23 PASS**, karşıt P0/P1=0 (`EV-20260827-036`); app-level semantik/normal maintenance/silent/add-on'a aktarılmaz, belge kapanışı P0/P1/P2=0 (`EV-20260827-037`). - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -173,12 +176,11 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -Exact iki belgeli `EV-20260827-028`–`029` merge/CI/source-build paketini ayrıca -açık onayla commit et; push, fiziksel kabul, tag veya release yok. +Final cycle'ı durdur; beş-dosya paketi için ayrı commit, ardından ayrı build onayı olmadan restore/rebuild/install/uninstall/retry/push/tag/release yapma. ## Sonraki sıra -1. B2 fiziksel kabulünde silent/ikinci uninstall/invalid-target bitmeden tag/release yapma. +1. Beş-dosya kanıt paketini ayrı onayla commit et; sonra izole exact build ve yeni artifact kimliği için ayrı build onayı iste. 2. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md index a07f1bd..b69b426 100644 --- a/docs/RELEASE_PROCESS.md +++ b/docs/RELEASE_PROCESS.md @@ -104,8 +104,35 @@ doğrular. Bu koşum yeşil olmadan build başlamaz. Yerel - Test medyası ile `%APPDATA%\MLCPlayer` ayar/log ağacı önce/sonra dosya listesi, metadata ve SHA-256 hash ile aynı kalır. - Add-on, boş/relative/root/UNC/eski/wrong-product InstallLocation - kayıtlarını dosya yazmadan reddeder; aktif Player, yt-dlp ve deno - süreçleriyle gerçek upgrade ayrıca ölçülür. + kayıtlarını dosya yazmadan reddeder. + - Gerçek ürün URL'si yalnız Player tarafından başlatılan exact kurulu + `yt-dlp` yolu, PID/ebeveyn/komut korelasyonu, ilerleyen + `position/duration` ve başarılı oynatma ile kabul edilir. Deno yalnız + gerçek çıkarım gerektirirse aynı ürün süreç ağacında aranır; Deno + yokluğu başarısızlık değildir ve ihtiyaç duyulmayan Deno'yu yapay + biçimde başlatmak başarılı ürün senaryosu sayılmaz. + - Bağımsız kapanmayı reddeden exact kurulu `yt-dlp`, diğer hedef süreçler + kapalıyken tek engelleyici ve exact kurulu çalıştırılabilir yol/PID + baseline'ıyla sınanır. Kaydedilmemiş kullanıcı verisini riske atan + `CloseApplications=force` kullanılmaz. Installer kopya başlamadan + fail-closed durmalı; “Sorun yok sayılıp ilerlensin” seçilmez, + “Kurulum iptal edilsin” ile abort ölçülür ve setup başarı marker'ı + bulunmamalıdır. Rollback sonrasında kurulu dosya listesi, metadata ve + SHA-256 değerleri, uninstall kaydı ve `%APPDATA%` ağacı exact aynı + kalır. Teste ait engelleyici fixture PID'leri kontrollü kapatılır; + ardından sıfır süreç sızıntısı ölçülür. + - Exact kurulu Deno aktifken diğer hedef süreçler kapalı tutulur ve exact + yol/PID baseline'ı alınır. Restart Manager yalnız Deno'yu bulmalı; + kooperatif kapanış sonrasında kurulum başarıyla tamamlanmalı, exit 0 + vermeli ve restart gerekmemelidir. Beş add-on payload'ı exact hashlerle + eşleşmeli; kullanıcı verisi ve ayarlar korunmalı; ana uninstall kaydı, + OpenWith ve kısayollar exact korunmalı ve sıfır süreç sızıntısı + ölçülmelidir. Normal Deno'nun kooperatif kapanması hata veya + eksik negatif kanıt sayılmaz. `suspended-Deno` fault injection ancak + ayrı risk/onay kararıyla yürütülür ve zorunlu B2 kapısı değildir. + - `yt-dlp` negatif güvenlik sonucu ile Deno graceful-upgrade sonucu ürün + URL oynatımına veya birbirine aktarılmaz; normal install/upgrade ve + gerçek ürün URL zincirleri ayrıca geçmelidir. - İki kaldırma sırası da denenir; yalnız boş kurulum dizinleri silinir. Bu kabul yeni artifact'in ad/boyut/SHA-256 değeriyle kaydedilir. Eski bir build'in fiziksel kabulü yeni artifact için kanıt SAYILMAZ. diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 2207e8c..4555675 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -8647,6 +8647,671 @@ "The exact new main artifact has not completed mandatory B2 installed-artifact acceptance; tag and release remain blocked." ], "next_action": "Request separate approval to commit this exact two-document EV028-EV029 evidence package; do not push, install, tag or release." + }, + { + "id": "EV-20260827-030", + "recorded_at_utc": "2026-08-27T18:27:09Z", + "proof_layer": "installed_artifact", + "result": "blocked", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "artifact_source_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "Start-Process -FilePath 'C:\\Program Files\\MLC Player\\MLC Player.exe' -PassThru", + "user action: Ctrl+U -> https://www.youtube.com/watch?v=aqz-KE-bpKQ -> accept", + "watch_product_runtime_and_start_addon.ps1 -EvidenceRoot -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe -RunId 37", + "run_finite_active_addon_upgrade.ps1 -EvidenceRoot -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe", + "C:\\Program Files\\MLC Player\\_internal\\bin\\deno.exe run --no-config finite_deno_wait.ts", + "C:\\Program Files\\MLC Player\\_internal\\bin\\yt-dlp.exe --ignore-config --no-plugin-dirs --no-remote-components --socket-timeout 15 --retries 0 --sleep-requests 180 --skip-download --dump-single-json -- https://www.youtube.com/watch?v=aqz-KE-bpKQ", + "MLCPlayer_InternetVideo_v0.40.exe /LOG=42-addon-finite-active-upgrade.log", + "user action: Uygulamalar kapatılsın -> Sonraki -> Kurulum iptal edilsin", + "b2_capture.ps1 -OutputPath 43-addon-finite-active-post.json -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe" + ], + "private_artifact_digests": [ + { + "name": "MLCPlayer_Setup_v0.40.exe", + "size_bytes": 55914571, + "sha256": "B8001DAA3722D99A5E85313CFD417F80E8E405C6990859E81BE8C52D378FE2FC" + }, + { + "name": "MLCPlayer_InternetVideo_v0.40.exe", + "size_bytes": 48909126, + "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675" + }, + { + "name": "37-addon-product-runtime-watch.jsonl", + "size_bytes": 3393, + "sha256": "79156B05AF939AE6A0CF3CBBA23FF5D9172EDD6C2FA8D890C54E2FA971B882B7" + }, + { + "name": "41-addon-finite-active-pre.json", + "size_bytes": 34041, + "sha256": "9D7D9C3CDB0DC0437D3C61E69CB2155DA5E8CFC0D94691962853B5575181EABD" + }, + { + "name": "42-addon-finite-active-upgrade.log", + "size_bytes": 2918, + "sha256": "6AC5F63641F59AC1A86FD74F763AE01A52D63C36390185215B8A0578E94F8AC3" + }, + { + "name": "43-addon-finite-active-post.json", + "size_bytes": 32454, + "sha256": "A3BA411103A5F3A2A872C10A1BA63EC8E97D79D36876F72406D874C0C80FD161" + }, + { + "name": "watch_product_runtime_and_start_addon.ps1", + "size_bytes": 2631, + "sha256": "3BBC7346D8226425B298AB68631D2F735C3AB7001B2218D7F77779E63663AC83" + }, + { + "name": "run_finite_active_addon_upgrade.ps1", + "size_bytes": 3984, + "sha256": "4BB95AE5E6514D41579B0577DB7E485E17D0FF579B7215F5BEA83BB931D89A91" + }, + { + "name": "finite_deno_wait.ts", + "size_bytes": 62, + "sha256": "42DDB4ECFB1F8751D0AAC29A045663D4E4CB2BCF30458150794B069534EBA577" + }, + { + "name": "b2_capture.ps1", + "size_bytes": 3849, + "sha256": "9CDB8AF55C5D0B07C9C4EB652B22D1F98A70810A97671C71FCD0EA6655449559" + } + ], + "subject": "Exact v0.40 B2 product URL success and independent combined-blocker rollback", + "evidence": [ + "the installed exact v0.40 Player loaded the verified Blender Big Buck Bunny URL through Ctrl+U and visibly advanced from 00:01 to 00:02 of 10:35", + "the persistent exact-path watcher observed the installed Player and its exact installed yt-dlp child command for the same URL, including the PyInstaller child; Deno was not spawned because this extraction did not require it", + "a separate negative scenario began from 103 installed files, two user files, main v0.40, add-on v0.39 and exact installed Player, yt-dlp and Deno blocker identities", + "Restart Manager listed two yt-dlp processes, Deno and MLC Player, then reported that some applications could not be shut down; Retry and Ignore were not selected", + "the user selected Abort, setup returned exit code 5, logged cancellation, rollback and successful rollback-uninstall, and emitted no successful-install completion", + "post-readback found zero installed-file differences, zero user-file differences, main v0.40 and add-on v0.39 unchanged, and zero target or setup process leaks", + "independent adversarial review found no installer defect in this negative scenario: the finite yt-dlp and Deno blockers were independently launched test fixtures rather than Player-owned children, so CloseApplications=yes stopping safely is expected and force-close is not justified" + ], + "summary": "The real product URL path passes with Player-owned yt-dlp and advancing playback, while independent finite runtime blockers produce an exact fail-closed abort and zero-difference rollback; final B2 remains blocked because the corrected contract requires isolated single-blocker scenarios and remaining final cleanup gates.", + "limitations": [ + "Absolute private evidence and artifact paths are deliberately omitted under repository privacy policy; their safe filenames, sizes and SHA-256 values bind the path-redacted command forms above.", + "This record is deliberately scoped to the two exact current product-URL and combined-blocker scenarios; it does not independently bind earlier B2 commands or transfer their results.", + "The product URL did not spawn Deno, so no product-owned Deno behavior is claimed and its absence is not a playback failure.", + "The combined independent-blocker scenario cannot prove which blocker caused Restart Manager refusal and does not satisfy the corrected isolated yt-dlp and isolated Deno negative gates.", + "This record does not pass the complete final-artifact B2 gate; isolated blockers, remaining fault boundary, final clean silent cycle and documentation closure remain incomplete.", + "No tag, release, upload or publication action was performed." + ], + "next_action": "After the approved contract correction is verified, request separate approval for one isolated exact-installed yt-dlp refusing-blocker scenario; do not auto-retry, build, tag or release." + }, + { + "id": "EV-20260827-031", + "recorded_at_utc": "2026-08-27T18:27:09Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "python -m pytest -q tests/test_release_documentation_regressions.py::test_addon_process_gate_separates_real_usage_from_refusing_blockers", + "python -m pytest -q tests/test_release_documentation_regressions.py", + "python -m pytest -q tests/test_continuity_regressions.py", + "python -m json.tool docs/VERIFICATION_LEDGER.json > $null", + "python -c \"import json; e=json.load(open('docs/VERIFICATION_LEDGER.json',encoding='utf-8'))['entries']; ids=[x['id'] for x in e]; assert len(ids)==len(set(ids)); print('LEDGER_IDS_UNIQUE',len(ids))\"", + "python scripts/verify_ledger_append_only.py --base-ref origin/master", + "python -c \"import json,pathlib,subprocess,os,tempfile; norm=lambda s:s.replace(chr(92),'/').casefold(); needles=(norm(os.environ['USERPROFILE']),norm(tempfile.gettempdir()),'.'+'codex/visualizations','.'+'codex/generated_images'); base=json.loads(subprocess.check_output(['git','show','HEAD:docs/VERIFICATION_LEDGER.json'],text=True,encoding='utf-8')); cur=json.load(open('docs/VERIFICATION_LEDGER.json',encoding='utf-8')); new=cur['entries'][len(base['entries']):]; blobs=[json.dumps(new),pathlib.Path('docs/CONTINUITY.md').read_text(encoding='utf-8')]; assert not any(norm(n) in norm(b) for n in needles for b in blobs); print('PRIVATE_PATH_SCAN_OK',len(new))\"", + "git diff --check" + ], + "subject": "Regression-first split of optional-runtime product success and blocker safety gates", + "evidence": [ + "the new focused regression first failed against the prior release contract because it required a simultaneous Player, yt-dlp and Deno success even when genuine extraction did not need Deno", + "the canonical release process now accepts only Player-started exact installed yt-dlp with PID-parent-command correlation and advancing position/duration for the real product URL path; artificial runtimes cannot satisfy that success gate", + "Deno is required in the success path only when genuine extraction spawns it, and Deno absence is explicitly not a failure", + "independent refusing yt-dlp and Deno fixtures must run as separate single-blocker scenarios with the other target processes closed, exact path/PID baselines, no force-close, no Ignore, user-controlled Abort, no setup success marker, exact rollback and cleanup-before-leak measurement", + "the focused red test passed after the minimal documentation change and the complete release-documentation family passed 206 tests", + "independent adversarial review of the final diff reported P0=0, P1=0 and P2=0; product and Inno sources were unchanged", + "the final four-file package passed 10 continuity regressions and 206 release-documentation tests; all 290 ledger IDs were unique, the committed ledger remained an exact prefix, two new entries passed private-path scanning, diff-check had no whitespace error and continuity was compacted to 186 lines without changing the historical archive" + ], + "summary": "The official B2 process contract now separates genuine optional-runtime product success from isolated fail-closed blocker safety without weakening rollback or user-data protections.", + "limitations": [ + "This deterministic PASS validates the written release contract and regression only; it is not installed-artifact acceptance.", + "The two newly isolated blocker scenarios are not yet run and final B2 remains blocked.", + "The change is uncommitted and has no evidence_commit until separately approved, committed and read back." + ], + "next_action": "Request separate approval for the isolated exact-installed yt-dlp blocker scenario; commit, push, build, tag and release remain separate gates." + }, + { + "id": "EV-20260827-032", + "recorded_at_utc": "2026-08-27T19:03:15Z", + "proof_layer": "installed_artifact", + "result": "passed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "artifact_source_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "run_isolated_ytdlp_blocker.ps1 -EvidenceRoot -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe", + "C:\\Program Files\\MLC Player\\_internal\\bin\\yt-dlp.exe --ignore-config --no-plugin-dirs --no-remote-components --socket-timeout 15 --retries 0 --sleep-requests 600 --skip-download --dump-single-json -- https://www.youtube.com/watch?v=aqz-KE-bpKQ", + "MLCPlayer_InternetVideo_v0.40.exe /LOG=45-addon-isolated-ytdlp-upgrade.log", + "user action: Uygulamalar kapatılsın -> Sonraki -> Kurulum iptal edilsin", + "evaluate_isolated_ytdlp_blocker.ps1 -EvidenceRoot -> 48-addon-isolated-ytdlp-verdict.json (safe false-BLOCKED due schema mismatch)", + "evaluate_isolated_ytdlp_blocker.ps1 -EvidenceRoot -> 49-addon-isolated-ytdlp-corrected-verdict.json" + ], + "private_artifact_digests": [ + { + "name": "MLCPlayer_Setup_v0.40.exe", + "size_bytes": 55914571, + "sha256": "B8001DAA3722D99A5E85313CFD417F80E8E405C6990859E81BE8C52D378FE2FC" + }, + { + "name": "MLCPlayer_InternetVideo_v0.40.exe", + "size_bytes": 48909126, + "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675" + }, + { + "name": "run_isolated_ytdlp_blocker.ps1", + "size_bytes": 8759, + "sha256": "ACA71CD8078EC133F654C1F663E47A9872283D7FA77D39235A3C02BC510376E3" + }, + { + "name": "evaluate_isolated_ytdlp_blocker.ps1", + "size_bytes": 7079, + "sha256": "94072DE4F63A6C1444E0FF29A466BF305132BF11D284C691E7A0CA1F16746A6E" + }, + { + "name": "44-addon-isolated-ytdlp-pre.json", + "size_bytes": 33399, + "sha256": "8BE0AD3314B9403D66F8680BBC838D8827DAC1D86003768DDD14AA8D85C3A64A" + }, + { + "name": "44-addon-isolated-ytdlp-result.json", + "size_bytes": 2096, + "sha256": "AC4F0A454A44FA13D6609A3443E0D7B2455F1DF86CBA2B23477E7C748C045CE6" + }, + { + "name": "45-addon-isolated-ytdlp-upgrade.log", + "size_bytes": 2681, + "sha256": "E3788CD168CA2BD2345539956E7C827AA3C807CF2FE6F73C87359CE9433DB0AA" + }, + { + "name": "46-addon-isolated-ytdlp-return.json", + "size_bytes": 32454, + "sha256": "776750C2C9665E5A754965B9306C5EF5F48D274AD21BE39EB57E252FF4516852" + }, + { + "name": "47-addon-isolated-ytdlp-leak.json", + "size_bytes": 32454, + "sha256": "8251D7D84664E39B8F10FF3291427BA8BBB6C1BB59B177D239045597B25E775A" + }, + { + "name": "48-addon-isolated-ytdlp-verdict.json", + "size_bytes": 1240, + "sha256": "BEC6FDCA2DFF7541A18F2D02D42B96096DCAA4642470BA7CEA1DBD051C032D2E" + }, + { + "name": "49-addon-isolated-ytdlp-corrected-verdict.json", + "size_bytes": 1147, + "sha256": "2890506F8D31709426381F40B242867321878F7929E153F8D907F48019724691" + } + ], + "subject": "Exact installed yt-dlp isolated fail-closed blocker acceptance", + "evidence": [ + "the one-shot precondition contained only the exact installed v0.39 yt-dlp root and its PyInstaller child; Player and Deno were absent and the installed executable SHA-256 was 66674953FE251B89F4D08C5F0E35E0728679BD67AB3D7D05C0562AF101DD3E7A", + "Restart Manager listed exactly the two yt-dlp processes and logged that some applications could not be shut down", + "the user kept close-applications selected, did not choose Retry or Ignore, chose Abort, and setup returned exit code 5", + "the setup log contains cancellation, rollback and successful rollback-uninstall, contains no destination-copy marker and no installation-success marker", + "the setup-return comparison found no differences in installed files, user data, active settings, main or add-on uninstall registration, OpenWith registration or shortcuts", + "the final target-process leak check found zero Player, yt-dlp or Deno processes", + "the first evaluator result was conservatively BLOCKED because it compared a capture schema without CreationDate to the richer runner identity and incorrectly required the fixture to remain alive after setup returned; no physical retry was performed", + "independent adversarial review confirmed the contract does not require the PID to remain alive after Abort and approved comparison on the schemas' exact common fields while preserving CreationDate for cleanup ownership", + "the separate corrected verdict passed all 16 fail-closed checks with no failed check" + ], + "summary": "The exact installed yt-dlp isolated blocker gate passed: Restart Manager refusal led to user-controlled Abort before copying, exact rollback, unchanged user state and zero target-process leak; no physical retry was used.", + "limitations": [ + "This PASS is limited to the exact installed yt-dlp single-blocker negative scenario and does not prove successful product URL playback, successful add-on upgrade, Deno behavior or Player fault behavior.", + "The exact yt-dlp processes were no longer alive when setup returned; the PASS relies on the exact pre-baseline, Restart Manager refusal log, Abort/no-copy result, exact rollback and zero leak, as permitted by the canonical contract.", + "The initial conservative evaluator verdict is preserved as private evidence and was not overwritten; its schema interpretation was corrected in a separately named verdict without rerunning the physical installer.", + "Absolute private evidence and artifact paths are deliberately omitted; safe filenames, sizes and SHA-256 values bind the path-redacted commands.", + "No commit, push, build, tag, upload or release action was performed." + ], + "next_action": "Request separate approval for one isolated exact-installed Deno blocker scenario; do not auto-retry, commit, push, build, tag or release." + }, + { + "id": "EV-20260827-033", + "recorded_at_utc": "2026-08-27T19:14:37Z", + "proof_layer": "installed_artifact", + "result": "passed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "artifact_source_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "run_isolated_deno_blocker.ps1 -EvidenceRoot -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe", + "C:\\Program Files\\MLC Player\\_internal\\bin\\deno.exe run --no-config finite_deno_wait.ts", + "MLCPlayer_InternetVideo_v0.40.exe /LOG=51-addon-isolated-deno-upgrade.log", + "user action: Sonraki -> Kur -> Bitti", + "evaluate_isolated_deno_blocker.ps1 -EvidenceRoot " + ], + "private_artifact_digests": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55914571, "sha256": "B8001DAA3722D99A5E85313CFD417F80E8E405C6990859E81BE8C52D378FE2FC"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"}, + {"name": "run_isolated_deno_blocker.ps1", "size_bytes": 6948, "sha256": "D8CFB236964F62D0DEC10D4461CEAA85A745B9B2F740AB2A226A1DCFA2D521C6"}, + {"name": "evaluate_isolated_deno_blocker.ps1", "size_bytes": 7433, "sha256": "9FA1D94E14187181A658D0DE3A263438F0199F33320341447502C2CC42DE05E0"}, + {"name": "finite_deno_wait.ts", "size_bytes": 62, "sha256": "42DDB4ECFB1F8751D0AAC29A045663D4E4CB2BCF30458150794B069534EBA577"}, + {"name": "50-addon-isolated-deno-pre.json", "size_bytes": 32843, "sha256": "E9B5BD35B98458A78561E7629A3B30158E792A0BEFAF3CC2D07AF1CBEC29F705"}, + {"name": "50-addon-isolated-deno-result.json", "size_bytes": 1540, "sha256": "4CE409331AE3648CEBEC46BAD29CB0EFCE769855205F96C73CB0946FD502D474"}, + {"name": "51-addon-isolated-deno-upgrade.log", "size_bytes": 5793, "sha256": "D740B99FC2ACF36E019CE1224A5277265997307AA4FF001777D5DDC1EC43686F"}, + {"name": "52-addon-isolated-deno-return.json", "size_bytes": 32445, "sha256": "4FF3031B8F6EB25D7EF2AB04A73CEE086F0ED92E32C80446B2C1B3F0A918978D"}, + {"name": "53-addon-isolated-deno-leak.json", "size_bytes": 32445, "sha256": "988B7E9CB83EE18D7DB8D9B6C2E4748FDCE5274411F37A9F51BE858E83A3A679"}, + {"name": "54-addon-isolated-deno-verdict.json", "size_bytes": 1488, "sha256": "8846086604C70268F3DA0A6460CA1A01D09B789B6FA83EF7CB28A79A31CD5A28"} + ], + "subject": "Exact v0.40 add-on upgrade with one active exact installed Deno", + "evidence": [ + "the precondition contained one exact installed Deno 2.9.5 process with SHA-256 98F8C2A2D470E4CCB04C935C86FF8050817D877762AEC5EAEEB9E409CCB3B9FD and the exact finite fixture; Player and yt-dlp were absent", + "Restart Manager found exactly Deno: A secure runtime for JavaScript and TypeScript, shut it down cooperatively and continued without a refusal dialog", + "setup copied the add-on payload, logged Installation process succeeded, returned exit code 0 and reported no Windows restart requirement", + "the add-on uninstall registration changed from v0.39 to v0.40 while main v0.40 registration, user data, active settings, OpenWith and shortcuts remained exact", + "the five current add-on payloads have expected SHA-256 values: yt-dlp 66674953FE251B89F4D08C5F0E35E0728679BD67AB3D7D05C0562AF101DD3E7A, Deno 98F8C2A2D470E4CCB04C935C86FF8050817D877762AEC5EAEEB9E409CCB3B9FD, yt-dlp license 7E12E5DF4BAE12CB21581BA157CED20E1986A0508DD10D0E8A4AB9A4CF94E85C, third-party licenses 472AEFE951C7DB35E1657C1D13FD337140511ED6F2B329205105AD441C5A02B7 and Deno license F62497FFFECC0852960C8D3E6934B9DB86D16396E9B604072E923892CAE3A588", + "the final target-process check found zero Player, yt-dlp or Deno processes" + ], + "summary": "The exact v0.40 add-on artifact successfully upgraded v0.39 to v0.40 while one exact installed Deno was active; Restart Manager closed Deno gracefully, preserved user-facing state and left zero target-process leaks.", + "limitations": [ + "This PASS proves only the active exact-Deno graceful Restart Manager upgrade path; it does not prove Deno refusal, rollback, product-owned Deno, product URL playback or Player fault behavior.", + "Installed-file metadata and add-on uninstall data changed as expected for a successful upgrade; this is not a rollback scenario.", + "No automatic downgrade or physical retry was performed after the successful installation.", + "Absolute private paths are omitted; safe names, sizes and SHA-256 values bind the path-redacted commands.", + "No commit, push, build, tag, upload or release action was performed." + ], + "next_action": "Record the same run's Deno-refusal gate as blocked, then request a separate user decision between a new suspended-Deno adversarial scenario and a measured-evidence contract revision." + }, + { + "id": "EV-20260827-034", + "recorded_at_utc": "2026-08-27T19:14:37Z", + "proof_layer": "installed_artifact", + "result": "blocked", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "artifact_source_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "run_isolated_deno_blocker.ps1 -EvidenceRoot -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe", + "evaluate_isolated_deno_blocker.ps1 -EvidenceRoot -> 54-addon-isolated-deno-verdict.json" + ], + "private_artifact_digests": [ + {"name": "50-addon-isolated-deno-pre.json", "size_bytes": 32843, "sha256": "E9B5BD35B98458A78561E7629A3B30158E792A0BEFAF3CC2D07AF1CBEC29F705"}, + {"name": "50-addon-isolated-deno-result.json", "size_bytes": 1540, "sha256": "4CE409331AE3648CEBEC46BAD29CB0EFCE769855205F96C73CB0946FD502D474"}, + {"name": "51-addon-isolated-deno-upgrade.log", "size_bytes": 5793, "sha256": "D740B99FC2ACF36E019CE1224A5277265997307AA4FF001777D5DDC1EC43686F"}, + {"name": "52-addon-isolated-deno-return.json", "size_bytes": 32445, "sha256": "4FF3031B8F6EB25D7EF2AB04A73CEE086F0ED92E32C80446B2C1B3F0A918978D"}, + {"name": "53-addon-isolated-deno-leak.json", "size_bytes": 32445, "sha256": "988B7E9CB83EE18D7DB8D9B6C2E4748FDCE5274411F37A9F51BE858E83A3A679"}, + {"name": "54-addon-isolated-deno-verdict.json", "size_bytes": 1488, "sha256": "8846086604C70268F3DA0A6460CA1A01D09B789B6FA83EF7CB28A79A31CD5A28"} + ], + "subject": "Deno isolated refusal gate not produced by normal finite Deno", + "evidence": [ + "the exact isolated Deno precondition and Restart Manager attribution were valid", + "Deno exited cooperatively when Restart Manager requested shutdown, so no close-refusal dialog, Abort, cancellation or rollback occurred", + "the fail-closed evaluator correctly returned BLOCKED because setup exited 0, copied files and completed successfully rather than exercising the requested negative scenario", + "independent diagnosis found no installer defect and classified the installed/add-on-registry changes as the expected successful v0.39 to v0.40 upgrade outcome" + ], + "summary": "The normal finite Deno fixture cannot satisfy the canonical refusal gate because Restart Manager closes it cooperatively; the negative Deno gate remains blocked without implying a product failure.", + "limitations": [ + "This BLOCKED result is not an installer failure and does not invalidate EV-20260827-033's graceful-upgrade PASS.", + "A refusal result would require a separately designed and approved adversarial suspended-Deno scenario, which may still be terminated successfully by Restart Manager.", + "No rollback was expected or claimed because installation completed successfully.", + "No downgrade, automatic retry, commit, push, build, tag, upload or release action was performed." + ], + "next_action": "Request an explicit user decision: authorize a new controlled suspended-Deno adversarial physical scenario, or revise the canonical contract to accept normal-Deno graceful PASS plus the exact yt-dlp refusal PASS as the measured process-safety coverage." + }, + { + "id": "EV-20260827-035", + "recorded_at_utc": "2026-08-27T19:22:47Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "python -m pytest -q tests/test_release_documentation_regressions.py::test_addon_process_gate_matches_measured_ytdlp_and_deno_behavior", + "python -m pytest -q tests/test_release_documentation_regressions.py", + "python -m pytest -q tests/test_continuity_regressions.py", + "python -m json.tool docs/VERIFICATION_LEDGER.json > $null", + "python scripts/verify_ledger_append_only.py --base-ref origin/master", + "git diff --check" + ], + "subject": "Measured yt-dlp refusal and graceful Deno B2 process contract", + "evidence": [ + "the focused regression first failed against the former contract because it still required an unmeasured Deno refusal outcome", + "the canonical B2 contract now keeps exact installed yt-dlp as the isolated fail-closed refusal gate proven by EV-20260827-032", + "the Deno gate now requires the measured EV-20260827-033 behavior: one exact active Deno, Restart Manager attribution to Deno only, cooperative shutdown, successful exit 0 upgrade, no restart, five exact payload hashes, preserved user data, settings, main uninstall registration, OpenWith and shortcuts, and zero target-process leak", + "suspended-Deno fault injection is explicitly outside mandatory B2 and remains separately risk-and-approval gated", + "the negative yt-dlp result, graceful Deno result and genuine product URL playback remain non-transferable evidence boundaries", + "the focused regression passed after the minimal documentation update and the full release-documentation family passed 206 tests", + "independent adversarial review of the final documentation and regression diff reported P0=0, P1=0 and P2=0" + ], + "summary": "The official B2 process contract now matches measured exact-artifact behavior without weakening yt-dlp fail-closed safety or user-state protections: yt-dlp supplies the refusal gate and Deno supplies the cooperative active-upgrade gate.", + "limitations": [ + "This deterministic PASS validates the written release contract and regression only; it does not add new installed-artifact, product URL, Player fault or release acceptance.", + "EV-20260827-033 and EV-20260827-034 remain the installed-artifact truth for the Deno run; this record does not rewrite those results.", + "The change is uncommitted and has no evidence_commit until separately approved, committed and read back.", + "No commit, push, build, installation, downgrade, retry, tag, upload or release action was performed for this contract revision." + ], + "next_action": "Request separate approval for one installed Player close-refusal or suspended fault-boundary scenario; do not auto-retry, commit, push, build, tag or release." + }, + { + "id": "EV-20260827-036", + "recorded_at_utc": "2026-08-27T20:22:11Z", + "proof_layer": "installed_artifact", + "result": "passed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "artifact_source_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "run_suspended_player_fault.ps1 -EvidenceRoot -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe", + "evaluate_suspended_player_fault.ps1 -EvidenceRoot -> 59-main-suspended-player-verdict.json" + ], + "artifacts": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55914571, "sha256": "B8001DAA3722D99A5E85313CFD417F80E8E405C6990859E81BE8C52D378FE2FC"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"}, + {"name": "installed MLC Player.exe", "size_bytes": 3133269, "sha256": "14872D7DA2D924BD627D77A015EB32B1FB1B995D39A4E8BB6D95CF95A3230691"} + ], + "private_artifact_digests": [ + {"name": "55-main-suspended-player-pre.json", "size_bytes": 32704, "sha256": "F3EF242BB8CAAAF5BAC3DD2116557A0875002250229DCA11B64E1D832C413932"}, + {"name": "55-main-suspended-player-result.json", "size_bytes": 2661, "sha256": "131EBC8F3694FE3A50C9E286486F26079484334FF55DACCC8EEF22B0D24D5FF8"}, + {"name": "56-main-suspended-player-upgrade.log", "size_bytes": 2513, "sha256": "AC79839E41B7AE542A398C9AA42B2E48DB0F1EE7BE37A6106B4C5D94BFCB208E"}, + {"name": "57-main-suspended-player-return.json", "size_bytes": 32704, "sha256": "053EF35ADCBB44785F3AB01B0994A5F3DED2F402A273EC66E2D2219862BEB9C7"}, + {"name": "58-main-suspended-player-leak.json", "size_bytes": 32445, "sha256": "BCB7C3C112C58F00E276D2B21A2A228C4C02BD13903CFABFCA89D6B8DB989CA9"}, + {"name": "59-main-suspended-player-verdict.json", "size_bytes": 1381, "sha256": "920E44F9B2A3A622B0E951615319467797BCA18064AC738B7C800C8CF42BF4CD"}, + {"name": "resume_player_watchdog.ps1", "size_bytes": 1966, "sha256": "4D5C8CBDCD8F9E6A22F9E3490C42E501A9652D5F4BB77743A211DC5912E8A191"}, + {"name": "run_suspended_player_fault.ps1", "size_bytes": 10564, "sha256": "3ACD7855F238113FC28A4527C92E747A5F565D6531D2011CC0BCBF89359768E1"}, + {"name": "evaluate_suspended_player_fault.ps1", "size_bytes": 6617, "sha256": "0B8A8FCB01CF94C31BE35DB90C26F16BD913E0F3931CF039CAB59A06951AE4BA"} + ], + "subject": "Suspended installed Player fail-closed main-installer fault boundary", + "evidence": [ + "the precondition contained exactly one target process: the exact installed v0.40 Player; no yt-dlp or Deno target was active", + "the exact Player was suspended successfully and Restart Manager attributed the conflict only to MLC Player", + "after cooperative shutdown failed, the user selected Abort rather than Retry or Ignore; setup returned exit 5 and logged cancellation, rollback and successful rollback uninstallation", + "the setup log contained neither a destination-copy marker nor an installation-success marker", + "the same exact suspended Player PID, path, command and creation identity survived until setup returned", + "the pre/return snapshots matched exactly for 103 installed files, two user files, active settings, main/add-on uninstall registrations, OpenWith and shortcuts", + "the exact Player resumed with status 0, closed through its normal window path without forced cleanup, and the final target-process count was zero", + "the exact watchdog identity remained valid and did not fire; all recorded evidence hashes matched", + "the fail-closed evaluator passed all 23 checks and independent adversarial post-run review found no P0 or P1 contradiction" + ], + "summary": "The exact B2 v0.40 main installer safely stopped before copying when the exact installed v0.40 Player could not close: Abort and rollback preserved the complete measured state, then controlled resume and graceful cleanup left no target-process leak.", + "limitations": [ + "This PASS is limited to the exact same-version interactive suspended-Player fault scenario and the named artifact/runtime identities.", + "It does not prove normal maintenance or upgrade success, silent behavior, add-on fault handling, another artifact or application-level user-data semantics.", + "Private evidence paths are intentionally omitted; only safe names, sizes and SHA-256 digests are recorded.", + "The documentation package remains uncommitted and has no evidence_commit until separately approved, committed and read back.", + "No automatic retry, build, uninstall, downgrade, commit, push, tag, upload or release action was performed." + ], + "next_action": "Run the final clean silent install, maintenance and uninstall cycle only with separate approval; then close documentation and request separate commit approval before any push, tag or release." + }, + { + "id": "EV-20260827-037", + "recorded_at_utc": "2026-08-27T20:32:02Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "python -m pytest -q tests/test_release_documentation_regressions.py", + "python -m pytest -q tests/test_continuity_regressions.py", + "python -m json.tool docs/VERIFICATION_LEDGER.json > $null", + "python scripts/verify_ledger_append_only.py --base-ref origin/master", + "scoped private-path scan over uncommitted ledger suffix and four-file diff", + "git diff --check" + ], + "subject": "Final B2 process-evidence boundaries and continuity closure", + "evidence": [ + "the historical EV031 Deno-refusal contract is explicitly marked as superseded by the measured EV035 cooperative-Deno decision", + "the EV036 continuity statement is restricted to the measured 103 installed files, two user files and named settings, uninstall, OpenWith and shortcut surfaces", + "application-level semantics, normal maintenance, silent behavior and add-on behavior are explicitly outside the EV036 transfer boundary", + "the release-documentation regression now requires the non-transfer rule and separate normal install or upgrade evidence", + "the full release-documentation family passed 206 tests and continuity passed 10 tests at exactly 200 lines", + "the ledger contained 296 unique entries, remained append-only against origin/master, and the scoped private-path scan and diff check were clean", + "independent final adversarial diff review reported P0=0, P1=0 and P2=0 after the three findings were closed" + ], + "summary": "The B2 documentation now states the current measured process contract without preserving a contradictory stale Deno-refusal rule or overstating the suspended-Player evidence boundary.", + "limitations": [ + "This deterministic PASS validates documentation, regression and ledger integrity only; it adds no new installed-artifact or release acceptance.", + "EV-20260827-036 remains the installed-artifact evidence for the suspended-Player scenario and is not rewritten by this record.", + "The package is uncommitted and has no evidence_commit until separately approved, committed and read back.", + "No physical retry, build, install, uninstall, commit, push, tag, upload or release action was performed." + ], + "next_action": "Request separate approval for one final clean silent install, maintenance and uninstall cycle; do not auto-retry, commit, push, tag or release." + }, + { + "id": "EV-20260827-038", + "recorded_at_utc": "2026-08-27T21:12:05Z", + "proof_layer": "source_build", + "result": "failed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "commands": [ + "b2_capture.ps1 -OutputPath 61-final-clean-pre.json -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe", + "concurrent command A: python -B packaging/verify_dependencies.py requirements-lock.txt; python -B packaging/verify_build.py --pre; python -B packaging/verify_build.py --post; python -B packaging/verify_build.py --final installer_output/MLCPlayer_Setup_v0.40.exe", + "concurrent command B: python packaging/verify_inno.py all; signature readback and dist identity readback", + "b2_capture.ps1 -OutputPath 62-artifact-provenance-failure-post.json -MainArtifact MLCPlayer_Setup_v0.40.exe -AddonArtifact MLCPlayer_InternetVideo_v0.40.exe" + ], + "artifacts_before_failure": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55914571, "sha256": "B8001DAA3722D99A5E85313CFD417F80E8E405C6990859E81BE8C52D378FE2FC"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"} + ], + "remaining_orphan_signature_digests": [ + {"name": "MLCPlayer_Setup_v0.40.exe.sig", "size_bytes": 88, "sha256": "3C7165A3A70FFB3602436A70B7AED12D6072B77845240B3D9B09FC6E749CFEBA"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe.sig", "size_bytes": 88, "sha256": "516CA07EE797C06C8B0902CE16EB85E98BCC2713D277FFDC689D6C4D15E2DF73"} + ], + "private_artifact_digests": [ + {"name": "61-final-clean-pre.json", "size_bytes": 32445, "sha256": "90B2A27EAB20C1973391ACD804DA0BE001D512E19EEE9CE8DE47F824C278A52F"}, + {"name": "62-artifact-provenance-failure-post.json", "size_bytes": 32017, "sha256": "4C06DF3A0C8E49620B7FAF3B59A043502E5669C7CAB4C4B58610C2F02DE76806"} + ], + "subject": "Release-candidate provenance split and compile-preflight artifact loss", + "evidence": [ + "the official EV029 source-build record identifies exact ebc628b main artifact 071183487940D5EAB79F641BB1D86F42D02AC0AF7E0E2FB5DFF635FC8B8CF6C5, while later B2 installed-artifact evidence used a different B8001DAA3722D99A5E85313CFD417F80E8E405C6990859E81BE8C52D378FE2FC main artifact without a contemporaneous source-build transcript", + "the only source changes from ebc628b to 994f0e2 were continuity and ledger documents, and the B800 artifact timestamp, dist and valid detached signature supported but did not prove exact-commit source-build provenance", + "the final clean silent cycle did not start because independent preflight classified the release-candidate identity split as P0", + "during provenance inspection, packaging/verify_inno.py all invoked the compile-preflight on the shared output directory and removed both ignored installer executables; only their detached signature files remained", + "the concurrently collected verify-build and signature outputs are invalidated by the output-directory race and are not used as PASS evidence", + "the pre/post snapshots proved exact equality for 103 installed files, two user files, active settings, both uninstall registrations, OpenWith and shortcuts; no target process was present after the event", + "the post snapshot independently recorded both installer artifact identities as absent; no restore, rebuild, install, maintenance, uninstall or retry followed", + "independent adversarial review classified the missing release executables as P0, the concurrent verification result as unusable P1 and shared-output compile-preflight as a deferred P2 hardening issue" + ], + "summary": "The final silent cycle was stopped before product mutation: the release-candidate identity was unresolved, then the compile-preflight removed both installer executables from the ignored output directory while leaving the installed product and measured user/system state unchanged.", + "limitations": [ + "The two remaining .sig files cannot restore, identify or validate future installer bytes and are not publishable artifacts by themselves.", + "EV029 and EV030-EV036 remain valid historical evidence for their exact named bytes but do not prove that a current publishable installer exists.", + "The final clean install, maintenance and uninstall cycle is NOT_RUN and tag or release remains blocked.", + "The compile-preflight isolation defect is recorded for a later separately authorized code or governance fix; it does not authorize artifact restoration.", + "No automatic rebuild, restore, install, uninstall, commit, push, tag, upload or release action was performed after the failure." + ], + "next_action": "Request separate commit approval for this four-file evidence package; after exact clean commit readback, request separate build approval to generate one new isolated release-candidate artifact set before planning any new exact-artifact B2 acceptance." + }, + { + "id": "EV-20260828-001", + "recorded_at_utc": "2026-08-27T21:14:28Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "corrects": [ + { + "entry_id": "EV-20260827-038", + "field": "evidence[1]", + "incorrect": "the only source changes from ebc628b to 994f0e2 were continuity and ledger documents, and the B800 artifact timestamp, dist and valid detached signature supported but did not prove exact-commit source-build provenance", + "corrected": "the only source changes from ebc628b to 994f0e2 were continuity and ledger documents; the B800 artifact timestamp, dist and the presence of a detached signature file supported but did not prove exact-commit source-build provenance, and no race-independent signature-validity PASS is claimed" + }, + { + "entry_id": "EV-20260827-038", + "field": "commands[2]", + "incorrect": "concurrent command B: python packaging/verify_inno.py all; signature readback and dist identity readback", + "corrected": "concurrent command B: python packaging/verify_inno.py all; python -B -c ; Get-Item/Get-FileHash readback for dist MLC Player.exe and packaged mpv-2.dll" + } + ], + "commands": [ + "python -m pytest -q tests/test_release_documentation_regressions.py", + "python -m pytest -q tests/test_continuity_regressions.py", + "python -m json.tool docs/VERIFICATION_LEDGER.json > $null", + "python scripts/verify_ledger_append_only.py --base-ref origin/master", + "scoped private-path scan over uncommitted ledger suffix and four-file diff", + "git diff --check" + ], + "subject": "Correction of EV038 signature and concurrent-command evidence boundaries", + "evidence": [ + "EV038 remains the immutable failure record; this new entry supplies machine-readable field corrections without rewriting it", + "the concurrent signature and dist readbacks overlapped the compile-preflight output deletion and therefore cannot establish a valid detached-signature PASS", + "the surviving detached signature files are orphan evidence only and cannot validate missing or future installer bytes", + "independent adversarial delta review found the installed-state, artifact-loss, NOT_RUN and separate-approval boundaries otherwise correct" + ], + "summary": "EV038 is corrected to remove the unsupported B800 signature-validity implication and to identify the concurrent readback command family explicitly.", + "limitations": [ + "This correction adds no artifact, source-build, installed-artifact or release acceptance.", + "The exact readback expressions were not captured as an immutable standalone transcript; the known command family is recorded and all concurrent results remain invalidated.", + "The compile-preflight remains unsafe for auditing a shared artifact directory and requires a later separately authorized isolation fix.", + "No rebuild, restore, install, uninstall, commit, push, tag, upload or release action was performed." + ], + "next_action": "Request separate commit approval for the four-file evidence package; only after exact clean commit readback request separate isolated build approval." + }, + { + "id": "EV-20260828-002", + "recorded_at_utc": "2026-08-27T21:17:16Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "baseline_commit": "994f0e25c7774b3bbdd5f961530a62137a847f16", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_continuity_regressions.py", + "tests/test_release_documentation_regressions.py" + ], + "corrects": [ + { + "entry_id": "EV-20260828-001", + "field": "changed_files", + "incorrect": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "corrected": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_continuity_regressions.py", + "tests/test_release_documentation_regressions.py" + ] + }, + { + "entry_id": "EV-20260828-001", + "field": "corrects[1]", + "incorrect": { + "entry_id": "EV-20260827-038", + "field": "commands[2]", + "incorrect": "concurrent command B: python packaging/verify_inno.py all; signature readback and dist identity readback", + "corrected": "concurrent command B: python packaging/verify_inno.py all; python -B -c ; Get-Item/Get-FileHash readback for dist MLC Player.exe and packaged mpv-2.dll" + }, + "corrected": { + "entry_id": "EV-20260827-038", + "field": "commands[2]", + "incorrect": "concurrent command B: python packaging/verify_inno.py all; signature readback and dist identity readback", + "corrected": "exact command transcript unrecorded; known concurrent family: packaging/verify_inno.py all plus signature_is_valid and dist identity readbacks; every concurrent result is invalidated" + } + }, + { + "entry_id": "EV-20260828-001", + "field": "next_action", + "incorrect": "Request separate commit approval for the four-file evidence package; only after exact clean commit readback request separate isolated build approval.", + "corrected": "Request separate commit approval for the five-file evidence package; only after exact clean commit readback request separate isolated build approval." + } + ], + "commands": [ + "python -m pytest -q tests/test_continuity_regressions.py", + "python -m pytest -q tests/test_release_documentation_regressions.py", + "python -m json.tool docs/VERIFICATION_LEDGER.json > $null", + "python scripts/verify_ledger_append_only.py --base-ref origin/master", + "scoped private-path scan over uncommitted ledger suffix and five-file diff", + "git diff --check" + ], + "subject": "General ledger-field correction schema and EV001 provenance correction", + "evidence": [ + "the existing continuity regression first failed because it incorrectly restricted every corrects entry to the commit field despite the root agent contract allowing arbitrary field corrections", + "the generalized regression resolves a top-level field or one indexed list item, requires the incorrect value to equal the immutable target value, rejects unchanged, null and empty string/list/dict corrections, and retains SHA validation only for commit corrections", + "the downstream Git object check now consumes only corrected commit hashes rather than treating arbitrary corrected field values as hashes", + "EV001 is corrected to identify the actual five-file dirty package and to describe the unavailable exact concurrent transcript without a command-like placeholder", + "independent adversarial review found the indexed resolver fail-closed for the two current fields and preserved the four historical explicit commit-correction assertions" + ], + "summary": "The ledger regression now enforces the repository's general append-only field-correction contract without weakening historical commit correction or Git-object validation.", + "limitations": [ + "The resolver supports top-level fields and one numeric list index; nested object paths are not claimed or currently required.", + "This deterministic record adds no artifact, build, installed-artifact or release acceptance.", + "The package remains uncommitted and has no evidence_commit until separately approved, committed and read back.", + "No rebuild, restore, install, uninstall, commit, push, tag, upload or release action was performed." + ], + "next_action": "Request separate commit approval for this five-file evidence package; only after clean commit readback request separate isolated build approval." } ] } diff --git a/tests/test_continuity_regressions.py b/tests/test_continuity_regressions.py index b865d07..d5e6166 100644 --- a/tests/test_continuity_regressions.py +++ b/tests/test_continuity_regressions.py @@ -121,19 +121,33 @@ def test_the_ledger_is_typed_complete_and_chronological(): assert timestamps == sorted(timestamps) -def test_ledger_commit_corrections_are_structured_later_and_unambiguous(): +def test_ledger_corrections_are_structured_later_and_unambiguous(): entries = ledger()["entries"] positions = {entry["id"]: index for index, entry in enumerate(entries)} corrections = {} + + def original_value(entry, field): + match = re.fullmatch(r"([^\[\]]+)\[(\d+)\]", field) + if match: + return entry[match.group(1)][int(match.group(2))] + return entry[field] + for index, entry in enumerate(entries): for correction in entry.get("corrects", []): target_id = correction["entry_id"] key = (target_id, correction["field"]) assert target_id in positions assert positions[target_id] < index - assert correction["field"] == "commit" - assert correction["incorrect"] == entries[positions[target_id]]["commit"] - assert SHA.fullmatch(correction["corrected"]) + assert correction["incorrect"] == original_value( + entries[positions[target_id]], correction["field"]) + assert correction["corrected"] != correction["incorrect"] + assert correction["corrected"] is not None + if isinstance(correction["corrected"], str): + assert correction["corrected"].strip() + elif isinstance(correction["corrected"], (list, dict)): + assert correction["corrected"] + if correction["field"] == "commit": + assert SHA.fullmatch(correction["corrected"]) assert key not in corrections corrections[key] = correction @@ -152,6 +166,7 @@ def test_every_ledger_commit_resolves_or_has_a_later_correction(): corrections = { (item["entry_id"], item["field"]): item["corrected"] for entry in entries for item in entry.get("corrects", []) + if item["field"] == "commit" } hashes = {entry["commit"] for entry in entries} | set(corrections.values()) completed = subprocess.run( diff --git a/tests/test_release_documentation_regressions.py b/tests/test_release_documentation_regressions.py index 1d28179..6ef8820 100644 --- a/tests/test_release_documentation_regressions.py +++ b/tests/test_release_documentation_regressions.py @@ -159,6 +159,42 @@ def test_final_artifact_process_safety_is_a_pre_tag_gate(): assert phrase in text, f"final-artifact kabulunde eksik: {phrase}" +def test_addon_process_gate_matches_measured_ytdlp_and_deno_behavior(): + """Require measured yt-dlp refusal and cooperative Deno upgrade outcomes.""" + text = fold(read(RELEASE_DOC)).lower() + start = text.index("b2) tag'den once") + end = text.index("c) python packaging/fetch_sources.py", start) + gate = " ".join(text[start:end].replace("`", "").split()) + + for phrase in ( + "gercek urun url'si", "player tarafindan baslatilan", + "exact kurulu yt-dlp", "pid/ebeveyn/komut korelasyonu", + "position/duration", "basarili oynatma", + "deno yalniz gercek cikarim gerektirirse", + "deno yoklugu basarisizlik degildir", "bagimsiz", + "kapanmayi reddeden exact kurulu yt-dlp", + "diger hedef surecler kapaliyken tek engelleyici", + "exact kurulu calistirilabilir yol/pid baseline'i", + "closeapplications=force kullanilmaz", "fail-closed", + "sorun yok sayilip ilerlensin", "kurulum iptal edilsin", + "setup basari marker'i bulunmamali", "rollback", + "dosya listesi, metadata ve sha-256", "uninstall kaydi", + "appdata", "fixture pid'leri kontrollu kapatilir", + "sifir surec sizintisi", "exact kurulu deno aktifken", + "restart manager yalniz deno'yu bulmali", + "kooperatif kapanis", "kurulum basariyla tamamlanmali", + "exit 0", "restart gerekmemeli", "bes add-on payload'i", + "kullanici verisi ve ayarlar korunmali", + "ana uninstall kaydi", "openwith ve kisayollar exact korunmali", + "suspended-deno", "ayri risk/onay karariyla", + "zorunlu b2 kapisi degildir", "birbirine aktarilmaz", + "normal install/upgrade"): + assert phrase in gate, f"add-on surec kapisinda eksik: {phrase}" + + assert "aktif player, yt-dlp ve deno surecleriyle gercek upgrade" not in gate + assert "yt-dlp ve exact kurulu deno'nun her biri ayri senaryoda" not in gate + + # --- 4. Dinamik varlik ve SHA-256 esligi ------------------------------- def test_the_dynamic_asset_contract_is_recorded(): From dcfb343f931bee98f439bcc5f8516f980bd30d09 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 00:26:45 +0300 Subject: [PATCH 02/15] docs: bind B2 evidence commit --- docs/CONTINUITY.md | 10 +++++----- docs/VERIFICATION_LEDGER.json | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index dabd459..76aa4e7 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `994f0e25c7774b3bbdd5f961530a62137a847f16` +- Kayıt hazırlanırken doğrulanan HEAD: `e3a21950d7669a2da4419243b130e2a4f5843047` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `0/0`; EV030-EV038 ve EV-20260828-001/002 beş-dosya paketi uncommitted) -- Son kanıt: `EV-20260828-002` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `1/0`; beş-dosya B2 paketi exact `e3a2195`, EV-20260828-003 iki-belge readback kaydı uncommitted) +- Son kanıt: `EV-20260828-003` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -176,11 +176,11 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -Final cycle'ı durdur; beş-dosya paketi için ayrı commit, ardından ayrı build onayı olmadan restore/rebuild/install/uninstall/retry/push/tag/release yapma. +Final cycle'ı durdur; iki-belge `e3a2195` evidence-commit kaydını ayrı onayla commit et, ardından ayrı build onayı olmadan restore/rebuild/install/uninstall/retry/push/tag/release yapma. ## Sonraki sıra -1. Beş-dosya kanıt paketini ayrı onayla commit et; sonra izole exact build ve yeni artifact kimliği için ayrı build onayı iste. +1. İki-belge evidence-commit kaydını ayrı onayla commit et; sonra izole exact build ve yeni artifact kimliği için ayrı build onayı iste. 2. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 4555675..2ff526c 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9312,6 +9312,35 @@ "No rebuild, restore, install, uninstall, commit, push, tag, upload or release action was performed." ], "next_action": "Request separate commit approval for this five-file evidence package; only after clean commit readback request separate isolated build approval." + }, + { + "id": "EV-20260828-003", + "recorded_at_utc": "2026-08-27T21:24:49Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "e3a21950d7669a2da4419243b130e2a4f5843047", + "evidence_commit": "e3a21950d7669a2da4419243b130e2a4f5843047", + "subject": "Committed v0.40 B2 process-contract and artifact-loss evidence package", + "commands": [ + "git commit -m \"docs: record v0.40 B2 process contract\"", + "git rev-parse HEAD; git rev-parse HEAD^; git show --stat --oneline --decorate --no-renames HEAD; git diff-tree --no-commit-id --name-only -r HEAD; git status --short --branch; git rev-list --left-right --count HEAD...origin/master", + "python -m pytest -q tests/test_continuity_regressions.py tests/test_release_documentation_regressions.py", + "python -m json.tool docs/VERIFICATION_LEDGER.json > $null; python scripts/verify_ledger_append_only.py --base-ref origin/master" + ], + "evidence": [ + "the separately approved five-file package committed as exact e3a21950d7669a2da4419243b130e2a4f5843047 with sole parent 994f0e25c7774b3bbdd5f961530a62137a847f16", + "commit readback reports exactly docs/CONTINUITY.md, docs/RELEASE_PROCESS.md, docs/VERIFICATION_LEDGER.json, tests/test_continuity_regressions.py and tests/test_release_documentation_regressions.py with 805 insertions and 60 deletions", + "post-commit scoped regressions passed 216 tests and the ledger remained valid JSON with the committed origin/master ledger as an exact prefix", + "the worktree was clean immediately after commit and the branch readback was one commit ahead and zero behind origin/master" + ], + "summary": "The approved five-file B2 process-contract package is committed and read back at exact e3a2195; no artifact build or product mutation followed.", + "limitations": [ + "This deterministic commit evidence does not restore the missing installer executables or add source-build, installed-artifact, native, tag or release acceptance.", + "The final clean physical cycle remains NOT_RUN.", + "This append-only evidence entry and continuity update are prepared after e3a2195 and remain uncommitted until separately approved.", + "No push, PR, merge, build, install, uninstall, retry, tag, upload or release action was performed." + ], + "next_action": "Request separate approval to commit this two-document evidence_commit record; after its clean readback request isolated build approval separately." } ] } From a4a4ba207e8f233eea07680486f6ffb7a5e24b77 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 00:41:33 +0300 Subject: [PATCH 03/15] docs: record isolated v0.40 build --- docs/CONTINUITY.md | 9 ++-- docs/VERIFICATION_LEDGER.json | 92 +++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 4 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 76aa4e7..6a9b77a 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -8,8 +8,8 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Güncelleme: 28 Ağustos 2026 - Kayıt hazırlanırken doğrulanan HEAD: `e3a21950d7669a2da4419243b130e2a4f5843047` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `1/0`; beş-dosya B2 paketi exact `e3a2195`, EV-20260828-003 iki-belge readback kaydı uncommitted) -- Son kanıt: `EV-20260828-003` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `2/0`; B2 belgeleri exact `e3a2195` ve `dcfb343`, EV-20260828-004 iki-belge source-build kaydı uncommitted) +- Son kanıt: `EV-20260828-005` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -113,6 +113,7 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi kullanıcı Retry/Ignore yerine Abort seçti, exit 5 ve rollback başarılıydı. Tüm ölçülen 103+2 dosya ile ayar/uninstall/OpenWith/kısayol yüzeyleri exact korundu; resume 0, normal kapanış, watchdog ateşlenmedi, sızıntı 0; evaluator **23/23 PASS**, karşıt P0/P1=0 (`EV-20260827-036`); app-level semantik/normal maintenance/silent/add-on'a aktarılmaz, belge kapanışı P0/P1/P2=0 (`EV-20260827-037`). +- Ayrı onaylı izole build exact `dcfb343` üzerinde exit 0 ve `DONE` verdi; ana setup `B7EAA997...FC8119` / 55.928.017 bayt, add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Dal protected master'dan 2 commit ileride olduğundan bu yalnız `source_build` PASS'tir; publishable RC veya fiziksel B2 değildir (`EV-20260828-004`). - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -176,11 +177,11 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -Final cycle'ı durdur; iki-belge `e3a2195` evidence-commit kaydını ayrı onayla commit et, ardından ayrı build onayı olmadan restore/rebuild/install/uninstall/retry/push/tag/release yapma. +İki-belge `EV-20260828-004` source-build kaydını ayrı onayla commit et; ardından exact yeni artifact B2 fiziksel kabulü için ayrıca onay almadan install/uninstall/retry/push/tag/release yapma. ## Sonraki sıra -1. İki-belge evidence-commit kaydını ayrı onayla commit et; sonra izole exact build ve yeni artifact kimliği için ayrı build onayı iste. +1. İki-belge source-build kaydını ayrı onayla commit et; sonra exact yeni artifact B2 fiziksel kabulü için ayrı onay iste. 2. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 2ff526c..081615d 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9341,6 +9341,98 @@ "No push, PR, merge, build, install, uninstall, retry, tag, upload or release action was performed." ], "next_action": "Request separate approval to commit this two-document evidence_commit record; after its clean readback request isolated build approval separately." + }, + { + "id": "EV-20260828-004", + "recorded_at_utc": "2026-08-27T21:39:20Z", + "proof_layer": "source_build", + "result": "passed", + "commit": "dcfb343f931bee98f439bcc5f8516f980bd30d09", + "baseline_commit": "dcfb343f931bee98f439bcc5f8516f980bd30d09", + "working_tree_state": "clean before evidence recording", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json" + ], + "subject": "Isolated v0.40 main and Internet Video source build", + "commands": [ + "git rev-parse HEAD; git status --porcelain=v1; exact pre-build installer_output identity readback", + "cmd.exe /d /c packaging\\build_release.bat", + "git rev-parse HEAD; git status --short --branch; git rev-list --left-right --count HEAD...origin/master", + "python packaging/verify_build.py --post", + "python packaging/verify_build.py --final installer_output\\MLCPlayer_Setup_v0.40.exe", + "python packaging/verify_build.py --final installer_output\\MLCPlayer_InternetVideo_v0.40.exe", + "Get-Item and Get-FileHash SHA256 for the four exact artifacts; packaging.prepublish.signature_is_valid for both EXEs; Get-AuthenticodeSignature for both EXEs; worktree process readback" + ], + "artifacts": [ + { + "name": "MLCPlayer_Setup_v0.40.exe", + "size_bytes": 55928017, + "sha256": "B7EAA9972B347F2546BDC72B1B198917C6B7DDE4B5FE35D902EDC826C2FC8119" + }, + { + "name": "MLCPlayer_Setup_v0.40.exe.sig", + "size_bytes": 88, + "sha256": "FE17A04682831A3C1628856E19C481666AE746B4575C2513DD6702C1B55A3664" + }, + { + "name": "MLCPlayer_InternetVideo_v0.40.exe", + "size_bytes": 48909126, + "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675" + }, + { + "name": "MLCPlayer_InternetVideo_v0.40.exe.sig", + "size_bytes": 88, + "sha256": "516CA07EE797C06C8B0902CE16EB85E98BCC2713D277FFDC689D6C4D15E2DF73" + } + ], + "evidence": [ + "the approved isolated build started from exact clean dcfb343f931bee98f439bcc5f8516f980bd30d09, produced the final DONE marker and exited zero without changing HEAD or tracked source state", + "dependency pins, three runtime identities, publishability, both Inno compile preflights, translation compile, PyInstaller, dist post-check, both Inno builds, detached signing and final checks completed in one sequential transcript", + "the main and add-on EXEs and their detached signatures were read back by exact name, byte size and SHA-256; both Ed25519 signatures independently verified against their corresponding EXE bytes", + "both installer EXEs report product version 0.40.0.0 and Authenticode NotSigned as expected by the active unsigned chain; Authenticode is not substituted by Ed25519", + "the add-on bytes equal EV029 because its exact inputs are unchanged and deterministic; the pre-build add-on EXE was absent, the exact old signature was removed, and new timestamps plus independent signature verification exclude stale carry-over", + "two independent adversarial reviews found no P0/P1/P2 defect in the bounded source-build claim; the worktree process count after build was zero" + ], + "summary": "Exact dcfb343 produced a fresh isolated v0.40 main installer and a deterministic add-on installer with four bound artifact identities and two valid detached Ed25519 signatures.", + "limitations": [ + "dcfb343 is two commits ahead of origin/master and has no exact hosted-tested protected-master acceptance; these bytes are not yet a publishable release candidate or tag basis.", + "The add-on final helper checks artifact presence and size rather than unpacking its payload; add-on payload and installed behavior remain a physical B2 responsibility.", + "Both EXEs are Authenticode NotSigned; SignPath and SmartScreen acceptance are NOT_RUN.", + "Install, upgrade, maintenance, uninstall, Restart Manager, native playback, human acceptance, source fetch, push, PR, merge, tag, upload and release are NOT_RUN for these exact bytes.", + "No automatic retry or product mutation followed the successful build." + ], + "next_action": "Request separate approval to commit this two-document source-build record; after clean readback request separate exact-artifact B2 physical acceptance approval." + }, + { + "id": "EV-20260828-005", + "recorded_at_utc": "2026-08-27T21:40:36Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "dcfb343f931bee98f439bcc5f8516f980bd30d09", + "baseline_commit": "dcfb343f931bee98f439bcc5f8516f980bd30d09", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json" + ], + "subject": "Lossless continuity compaction after isolated build record", + "commands": [ + "python -m pytest -q tests/test_continuity_regressions.py tests/test_release_documentation_regressions.py (first run: 1 failed, 215 passed because continuity was 206 lines)", + "python -m pytest -q tests/test_continuity_regressions.py tests/test_release_documentation_regressions.py (after compaction: 216 passed)" + ], + "evidence": [ + "the first post-record regression run failed only the explicit continuity compactness limit because the live handoff grew to 206 lines; the source build and artifact evidence did not fail", + "the new EV004 continuity paragraph was reflowed without deleting any artifact identity, proof boundary, process result or next-action decision", + "the second scoped run passed all 216 continuity and release-documentation regressions with continuity at the 200-line limit" + ], + "summary": "The live continuity handoff is losslessly back within its enforced compactness limit after a recorded red-to-green documentation regression.", + "limitations": [ + "This deterministic documentation result adds no build, installed-artifact, native or release acceptance beyond EV004.", + "The two-document EV004/EV005 package remains uncommitted until separately approved.", + "No build retry, install, uninstall, push, tag, upload or release action was performed." + ], + "next_action": "Request separate approval to commit the two-document EV004/EV005 package; after clean readback request separate exact-artifact B2 physical acceptance approval." } ] } From 315e83a5d6d1a0a5c97873356abb61ce1b0af39b Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 01:08:23 +0300 Subject: [PATCH 04/15] fix: fail fast when Player blocks setup --- docs/CONTINUITY.md | 15 ++-- docs/VERIFICATION_LEDGER.json | 85 +++++++++++++++++++ packaging/MLCPlayer.iss | 19 +++++ tests/test_installer_language_regressions.py | 6 +- ...st_installer_process_safety_regressions.py | 31 +++++++ 5 files changed, 146 insertions(+), 10 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 6a9b77a..6f54155 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `e3a21950d7669a2da4419243b130e2a4f5843047` +- Kayıt hazırlanırken doğrulanan HEAD: `a4a4ba207e8f233eea07680486f6ffb7a5e24b77` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `2/0`; B2 belgeleri exact `e3a2195` ve `dcfb343`, EV-20260828-004 iki-belge source-build kaydı uncommitted) -- Son kanıt: `EV-20260828-005` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `3/0`; fast-fail kaynak ve EV006/EV007 kayıt paketi uncommitted) +- Son kanıt: `EV-20260828-007` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -114,6 +114,8 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi ölçülen 103+2 dosya ile ayar/uninstall/OpenWith/kısayol yüzeyleri exact korundu; resume 0, normal kapanış, watchdog ateşlenmedi, sızıntı 0; evaluator **23/23 PASS**, karşıt P0/P1=0 (`EV-20260827-036`); app-level semantik/normal maintenance/silent/add-on'a aktarılmaz, belge kapanışı P0/P1/P2=0 (`EV-20260827-037`). - Ayrı onaylı izole build exact `dcfb343` üzerinde exit 0 ve `DONE` verdi; ana setup `B7EAA997...FC8119` / 55.928.017 bayt, add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Dal protected master'dan 2 commit ileride olduğundan bu yalnız `source_build` PASS'tir; publishable RC veya fiziksel B2 değildir (`EV-20260828-004`). +- Exact B7/D4 normal fiziksel döngüsü gerçek v0.39 yükseltmesi, iki kaldırma sırası, clean install, maintenance, payload/ayar koruması ve final restore ile geçti. Askıya alınmış Player yolu kopya öncesi Abort/exit 5, tam rollback ve sıfır sızıntıyla güvenliydi; fakat Restart Manager **66,715 saniye** bekledi. Kullanıcının 5–10 saniye UX sınırı nedeniyle tam B2 **FAILED** (`EV-20260828-006`). +- Regression-first installer-only düzeltme maintenance/upgrade sırasında süreç-ömürlü `MLCPlayer-Running` mutex'ini `PrepareToInstall` içinde önce denetler ve çalışan Player varsa kopya/RM bekleyişinden önce sekiz dilde hızlı fail-closed durur. `CloseApplications` fallback'i korunur; force/taskkill/ürün kodu yoktur. Dil sözleşmesi ve yanlış aynı-sihirbaz talimatı kapatıldı; dar paket **60 passed** (`EV-20260828-007`). - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -177,12 +179,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -İki-belge `EV-20260828-004` source-build kaydını ayrı onayla commit et; ardından exact yeni artifact B2 fiziksel kabulü için ayrıca onay almadan install/uninstall/retry/push/tag/release yapma. - -## Sonraki sıra - -1. İki-belge source-build kaydını ayrı onayla commit et; sonra exact yeni artifact B2 fiziksel kabulü için ayrı onay iste. -2. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV006/EV007 beş-dosya fast-fail paketinin son JSON/append-only/private-path ve bağımsız karşıt okumasını tamamla; sonra commit için ayrıca onay iste. Build ve tek fiziksel süre retry'ı daha sonra ayrı ayrı onaylanmadan yapılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 081615d..9764151 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9433,6 +9433,91 @@ "No build retry, install, uninstall, push, tag, upload or release action was performed." ], "next_action": "Request separate approval to commit the two-document EV004/EV005 package; after clean readback request separate exact-artifact B2 physical acceptance approval." + }, + { + "id": "EV-20260828-006", + "recorded_at_utc": "2026-08-27T22:03:47Z", + "proof_layer": "installed_artifact", + "result": "failed", + "commit": "a4a4ba207e8f233eea07680486f6ffb7a5e24b77", + "baseline_commit": "a4a4ba207e8f233eea07680486f6ffb7a5e24b77", + "working_tree_state": "clean before the physical cycle and before evidence recording", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json", + "packaging/MLCPlayer.iss", + "tests/test_installer_language_regressions.py", + "tests/test_installer_process_safety_regressions.py" + ], + "subject": "Exact B7/D4 physical B2 cycle and rejected suspended-Player close latency", + "commands": [ + "read-only artifact, installed-state, registry, shortcut, user-data and target-process snapshots before and after each approved physical step", + "separately approved elevated silent v0.39 seed install, exact v0.39-to-v0.40 upgrade, both uninstall orders, clean install, same-version maintenance and final restore", + "single approved suspended exact installed Player fault run with an exact B7 artifact-hash guard, bounded watchdog and no automatic retry", + "read-only setup-log timestamp comparison for Starting installation process, Shutting down applications, Some applications could not be shut down, user Abort and log close" + ], + "artifacts": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55928017, "sha256": "B7EAA9972B347F2546BDC72B1B198917C6B7DDE4B5FE35D902EDC826C2FC8119"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"} + ], + "private_artifact_digests": [ + {"name": "29-final-restored.json", "size_bytes": 32444, "sha256": "181092C38ECB17906F824BEA7C275F1D7AC1447C767A952C45BA78DC8B5A8C18"}, + {"name": "55-main-suspended-player-pre.json", "size_bytes": 32704, "sha256": "BF4164DBEEE6C5495BE5D27EAC3DCF2258EF380A401BD92A659F559CB696B97F"}, + {"name": "56-main-suspended-player-upgrade.log", "size_bytes": 2524, "sha256": "64163DA0549E0A75735A3FBE191E5538E5D003AF47FEB68524AF90F7DB65FA84"}, + {"name": "57-main-suspended-player-return.json", "size_bytes": 32704, "sha256": "E90EDB4111E8B0FBD060D023F6DB003CF46B49F66EA6166884FD5E4D65208ECC"}, + {"name": "58-main-suspended-player-leak.json", "size_bytes": 32444, "sha256": "649FFFF5DBC1FD8231E5FF3331C38F18D0F9C09EB7DFD122876043F4E0458176"} + ], + "evidence": [ + "the normal exact B7/D4 path passed real v0.39-to-v0.40 main and add-on upgrades, two opposite uninstall orders, clean silent install, same-version maintenance, exact payload readback, preserved two-file user data and zero target-process leakage", + "the final restore left exact v0.40 main and add-on installed with 103 files, both uninstall records, Open-with registration, three shortcuts, exact two-file user data and zero target processes", + "the exact suspended-Player negative run stopped before copying; user selected Abort, setup exited 5, rollback restored all measured 103 installed plus two user files and controlled resume then normal close left zero target-process leakage", + "the same log measured 66.715 seconds from Restart Manager shutdown start at 00:53:58.252 to inability report at 00:55:04.967; the user explicitly rejected this latency and required a maximum near 5-10 seconds", + "no automatic physical retry followed the failed human UX boundary" + ], + "summary": "The exact artifacts passed the normal physical lifecycle and the suspended fault remained technically fail-closed, but complete B2 acceptance failed because the visible application-closing wait was 66.715 seconds and violated the user's 5-10-second UX ceiling.", + "limitations": [ + "Technical Abort, rollback and leak safety do not override the failed human latency acceptance.", + "This result is bound to exact a4a4ba2 source, B7/D4 installer bytes, the measured Windows host and the suspended-Player scenario.", + "B2, tag and release remain blocked; no push, PR, merge, tag, upload or release was performed." + ], + "next_action": "Validate and commit only after separate approval the regression-first installer fast-fail source package; build and a single exact physical latency retry each require later separate approval." + }, + { + "id": "EV-20260828-007", + "recorded_at_utc": "2026-08-27T22:03:47Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "a4a4ba207e8f233eea07680486f6ffb7a5e24b77", + "baseline_commit": "a4a4ba207e8f233eea07680486f6ffb7a5e24b77", + "working_tree_state": "uncommitted", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json", + "packaging/MLCPlayer.iss", + "tests/test_installer_language_regressions.py", + "tests/test_installer_process_safety_regressions.py" + ], + "subject": "Regression-first maintenance fast-fail gate for a running Player", + "commands": [ + "python -m pytest -q tests/test_installer_process_safety_regressions.py -k rejects_a_running_player_before_restart_manager_waits (red: 1 failed)", + "python -m pytest -q tests/test_installer_process_safety_regressions.py (green: 9 passed)", + "python -m pytest -q tests/test_installer_process_safety_regressions.py tests/test_installer_language_regressions.py tests/test_installer_branding_regressions.py tests/test_inno_compile_preflight_regressions.py tests/test_continuity_regressions.py (first impact run: 1 failed, 59 passed; final: 60 passed)", + "git diff --check" + ], + "evidence": [ + "the new process-safety regression first failed on the unchanged source because PrepareToInstall did not reject the running lifecycle mutex before Restart Manager", + "PrepareToInstall now validates the target first and only for reinstall or upgrade returns a localized error immediately when the process-lifetime MLCPlayer-Running mutex exists", + "CloseApplications=yes and the exact resource filter remain as a safety fallback; no force, taskkill, process-name kill, polling sleep or product-code change was added", + "the first impact run exposed a real eight-language contract omission; all eight supported languages now define the new message and the final bounded package passed 60 tests", + "the strengthened regression binds the Result assignment inside the maintenance-only mutex condition rather than checking loose token order; adversarial review also corrected the user instruction to close Player and restart Setup because Inno cannot continue in the same wizard after this error" + ], + "summary": "The minimal installer-only source change deterministically bypasses the long Restart Manager path for a running MLC Player by failing fast before copy while retaining safe fallback behavior.", + "limitations": [ + "Deterministic source tests do not prove compiled Inno behavior or the 5-10-second physical latency target.", + "The new behavior asks the user to close MLC Player and restart Setup; it does not automatically force or remotely close the application.", + "The five-file package is uncommitted; no build, install, retry, push, PR, merge, tag, upload or release followed." + ], + "next_action": "Complete independent adversarial readback and required JSON, append-only, continuity and private-path checks; then request separate commit approval." } ] } diff --git a/packaging/MLCPlayer.iss b/packaging/MLCPlayer.iss index b14d28e..e2135bb 100644 --- a/packaging/MLCPlayer.iss +++ b/packaging/MLCPlayer.iss @@ -127,6 +127,7 @@ english.CWelcomeUpgradeBody=This wizard will update MLC Player from %1 to %2. english.CWelcomeLicenseInfo=MLC Player is an open-source media player distributed under GPLv3. You do not need to accept the licence to install or run it. The Internet Video add-on is not included in this package. english.CDowngradeBlocked=A newer version of MLC Player is installed on this computer. An older version cannot be installed automatically. english.CVersionStateUnknown=The installed MLC Player version could not be verified. Setup stopped without making changes. +english.CClosePlayerBeforeInstall=MLC Player is still running. Close it completely, then restart Setup. english.CTargetLocationMismatch=The selected folder does not match the registered MLC Player installation location. Use the registered folder or uninstall the existing version first. english.CTargetAlreadyOccupied=The selected folder already contains an unregistered MLC Player executable. Setup stopped without overwriting it. english.CTargetNotEmpty=The selected folder is not empty and is not a registered MLC Player installation. Choose an empty folder or remove the leftover files first. @@ -163,6 +164,7 @@ turkish.CWelcomeUpgradeBody=Bu sihirbaz MLC Player'ı %1 sürümünden %2 sürü turkish.CWelcomeLicenseInfo=MLC Player, GPLv3 kapsamında dağıtılan açık kaynaklı bir medya oynatıcıdır. Kurmak veya çalıştırmak için lisansı kabul etmeniz gerekmez. Internet Video eklentisi bu pakete dahil değildir. turkish.CDowngradeBlocked=Bu bilgisayarda daha yeni bir MLC Player sürümü yüklü. Daha eski bir sürüm otomatik olarak kurulamaz. turkish.CVersionStateUnknown=Yüklü MLC Player sürümü doğrulanamadı. Kurulum değişiklik yapmadan durduruldu. +turkish.CClosePlayerBeforeInstall=MLC Player hâlâ çalışıyor. Programı tamamen kapatıp kurulumu yeniden başlatın. turkish.CTargetLocationMismatch=Seçilen klasör kayıtlı MLC Player kurulum konumuyla eşleşmiyor. Kayıtlı klasörü kullanın veya önce mevcut sürümü kaldırın. turkish.CTargetAlreadyOccupied=Seçilen klasörde kayıtlı olmayan bir MLC Player çalıştırılabilir dosyası var. Kurulum bu dosyanın üzerine yazmadan durduruldu. turkish.CTargetNotEmpty=Seçilen klasör boş değil ve kayıtlı bir MLC Player kurulumu değil. Boş bir klasör seçin veya önce kalan dosyaları kaldırın. @@ -199,6 +201,7 @@ german.CWelcomeUpgradeBody=Dieser Assistent aktualisiert MLC Player von %1 auf % german.CWelcomeLicenseInfo=MLC Player ist ein unter GPLv3 vertriebener Open-Source-Mediaplayer. Für die Installation oder Ausführung müssen Sie die Lizenz nicht akzeptieren. Die Internet Video-Erweiterung ist in diesem Paket nicht enthalten. german.CDowngradeBlocked=Auf diesem Computer ist eine neuere Version von MLC Player installiert. Eine ältere Version kann nicht automatisch installiert werden. german.CVersionStateUnknown=Die installierte MLC Player-Version konnte nicht überprüft werden. Das Setup wurde ohne Änderungen beendet. +german.CClosePlayerBeforeInstall=MLC Player wird noch ausgeführt. Schließen Sie das Programm vollständig und starten Sie dann das Setup erneut. german.CTargetLocationMismatch=Der ausgewählte Ordner stimmt nicht mit dem registrierten Installationsordner von MLC Player überein. Verwenden Sie den registrierten Ordner oder deinstallieren Sie zuerst die vorhandene Version. german.CTargetAlreadyOccupied=Der ausgewählte Ordner enthält bereits eine nicht registrierte ausführbare MLC Player-Datei. Das Setup wurde beendet, ohne sie zu überschreiben. german.CTargetNotEmpty=Der ausgewählte Ordner ist nicht leer und keine registrierte MLC Player-Installation. Wählen Sie einen leeren Ordner oder entfernen Sie zuerst die verbliebenen Dateien. @@ -235,6 +238,7 @@ spanish.CWelcomeUpgradeBody=Este asistente actualizará MLC Player de %1 a %2. spanish.CWelcomeLicenseInfo=MLC Player es un reproductor multimedia de código abierto distribuido bajo la GPLv3. No necesita aceptar la licencia para instalarlo o ejecutarlo. El complemento Internet Video no está incluido en este paquete. spanish.CDowngradeBlocked=Hay una versión más reciente de MLC Player instalada en este equipo. No se puede instalar automáticamente una versión anterior. spanish.CVersionStateUnknown=No se pudo verificar la versión instalada de MLC Player. La instalación se detuvo sin realizar cambios. +spanish.CClosePlayerBeforeInstall=MLC Player aún se está ejecutando. Ciérrelo por completo y reinicie el programa de instalación. spanish.CTargetLocationMismatch=La carpeta seleccionada no coincide con la ubicación de instalación registrada de MLC Player. Use la carpeta registrada o desinstale primero la versión existente. spanish.CTargetAlreadyOccupied=La carpeta seleccionada ya contiene un ejecutable de MLC Player no registrado. La instalación se detuvo sin sobrescribirlo. spanish.CTargetNotEmpty=La carpeta seleccionada no está vacía y no es una instalación registrada de MLC Player. Elija una carpeta vacía o elimine primero los archivos restantes. @@ -271,6 +275,7 @@ french.CWelcomeUpgradeBody=Cet assistant va mettre à jour MLC Player de %1 vers french.CWelcomeLicenseInfo=MLC Player est un lecteur multimédia open source distribué sous GPLv3. Vous n'avez pas besoin d'accepter la licence pour l'installer ou l'exécuter. L'extension Internet Video n'est pas incluse dans ce paquet. french.CDowngradeBlocked=Une version plus récente de MLC Player est installée sur cet ordinateur. Une version antérieure ne peut pas être installée automatiquement. french.CVersionStateUnknown=La version installée de MLC Player n'a pas pu être vérifiée. L'installation s'est arrêtée sans apporter de modifications. +french.CClosePlayerBeforeInstall=MLC Player est toujours en cours d'exécution. Fermez-le complètement, puis redémarrez le programme d'installation. french.CTargetLocationMismatch=Le dossier sélectionné ne correspond pas à l'emplacement d'installation enregistré de MLC Player. Utilisez le dossier enregistré ou désinstallez d'abord la version existante. french.CTargetAlreadyOccupied=Le dossier sélectionné contient déjà un exécutable MLC Player non enregistré. L'installation s'est arrêtée sans l'écraser. french.CTargetNotEmpty=Le dossier sélectionné n'est pas vide et ne correspond pas à une installation enregistrée de MLC Player. Choisissez un dossier vide ou supprimez d'abord les fichiers restants. @@ -307,6 +312,7 @@ italian.CWelcomeUpgradeBody=Questa procedura guidata aggiornerà MLC Player dall italian.CWelcomeLicenseInfo=MLC Player è un lettore multimediale open source distribuito sotto GPLv3. Non è necessario accettare la licenza per installarlo o eseguirlo. Il componente aggiuntivo Internet Video non è incluso in questo pacchetto. italian.CDowngradeBlocked=In questo computer è installata una versione più recente di MLC Player. Non è possibile installare automaticamente una versione precedente. italian.CVersionStateUnknown=Non è stato possibile verificare la versione installata di MLC Player. L'installazione è stata interrotta senza apportare modifiche. +italian.CClosePlayerBeforeInstall=MLC Player è ancora in esecuzione. Chiudilo completamente, quindi riavvia il programma di installazione. italian.CTargetLocationMismatch=La cartella selezionata non corrisponde al percorso di installazione registrato di MLC Player. Usa la cartella registrata o disinstalla prima la versione esistente. italian.CTargetAlreadyOccupied=La cartella selezionata contiene già un eseguibile MLC Player non registrato. L'installazione è stata interrotta senza sovrascriverlo. italian.CTargetNotEmpty=La cartella selezionata non è vuota e non è un'installazione registrata di MLC Player. Scegli una cartella vuota o rimuovi prima i file rimasti. @@ -343,6 +349,7 @@ russian.CWelcomeUpgradeBody=Этот мастер обновит MLC Player с russian.CWelcomeLicenseInfo=MLC Player — медиаплеер с открытым исходным кодом, распространяемый по лицензии GPLv3. Для установки или запуска принимать лицензию не требуется. Дополнение Internet Video не входит в этот пакет. russian.CDowngradeBlocked=На этом компьютере установлена более новая версия MLC Player. Автоматическая установка более старой версии невозможна. russian.CVersionStateUnknown=Не удалось проверить установленную версию MLC Player. Установка остановлена без внесения изменений. +russian.CClosePlayerBeforeInstall=MLC Player всё ещё работает. Полностью закройте программу, затем перезапустите программу установки. russian.CTargetLocationMismatch=Выбранная папка не совпадает с зарегистрированным расположением MLC Player. Используйте зарегистрированную папку или сначала удалите существующую версию. russian.CTargetAlreadyOccupied=В выбранной папке уже находится незарегистрированный исполняемый файл MLC Player. Установка остановлена без его перезаписи. russian.CTargetNotEmpty=Выбранная папка не пуста и не является зарегистрированной установкой MLC Player. Выберите пустую папку или сначала удалите оставшиеся файлы. @@ -379,6 +386,7 @@ brazilianportuguese.CWelcomeUpgradeBody=Este assistente atualizará o MLC Player brazilianportuguese.CWelcomeLicenseInfo=O MLC Player é um reprodutor de mídia de código aberto distribuído sob a GPLv3. Você não precisa aceitar a licença para instalá-lo ou executá-lo. O complemento Internet Video não está incluído neste pacote. brazilianportuguese.CDowngradeBlocked=Há uma versão mais recente do MLC Player instalada neste computador. Uma versão anterior não pode ser instalada automaticamente. brazilianportuguese.CVersionStateUnknown=Não foi possível verificar a versão instalada do MLC Player. A instalação foi interrompida sem fazer alterações. +brazilianportuguese.CClosePlayerBeforeInstall=O MLC Player ainda está em execução. Feche-o completamente e reinicie o instalador. brazilianportuguese.CTargetLocationMismatch=A pasta selecionada não corresponde ao local de instalação registrado do MLC Player. Use a pasta registrada ou desinstale primeiro a versão existente. brazilianportuguese.CTargetAlreadyOccupied=A pasta selecionada já contém um executável não registrado do MLC Player. A instalação foi interrompida sem substituí-lo. brazilianportuguese.CTargetNotEmpty=A pasta selecionada não está vazia e não é uma instalação registrada do MLC Player. Escolha uma pasta vazia ou remova primeiro os arquivos restantes. @@ -767,6 +775,17 @@ end; function PrepareToInstall(var NeedsRestart: Boolean): String; begin Result := ValidateInstallTarget; + if Result <> '' then + Exit; + + // Restart Manager yanıt vermeyen bir uygulamada yaklaşık bir dakika + // bekleyebilir. Bakım/yükseltme sırasında ürünün süreç-ömürlü mutex'ini + // önce denetleyerek kopyalama başlamadan hızlı ve güvenli biçimde dururuz. + // CloseApplications, mutex kurulamadığında veya başka yüklü kaynaklar kilitli + // olduğunda güvenlik fallback'i olarak korunur; zorla kapatma yapılmaz. + if (CurrentInstallMode <> InstallModeFirst) and + CheckForMutexes('{#PlayerLifecycleMutex}') then + Result := CustomMessage('CClosePlayerBeforeInstall'); end; procedure SetInstallPhase(Phase: String); diff --git a/tests/test_installer_language_regressions.py b/tests/test_installer_language_regressions.py index 8d9244e..5758d94 100644 --- a/tests/test_installer_language_regressions.py +++ b/tests/test_installer_language_regressions.py @@ -28,7 +28,8 @@ REQUIRED_C_KEYS = ( "CWelcomeTitle", "CWelcomeInstallBody", "CWelcomeReinstallBody", "CWelcomeUpgradeBody", "CWelcomeLicenseInfo", "CDowngradeBlocked", - "CVersionStateUnknown", "CTargetLocationMismatch", + "CVersionStateUnknown", "CClosePlayerBeforeInstall", + "CTargetLocationMismatch", "CTargetAlreadyOccupied", "CTargetNotEmpty", "CPreferencesTitle", "CPreferencesBody", "CInstallLocation", "COpenWithInfo", "CPrivacyInfo", "CAddonInfo", @@ -120,6 +121,9 @@ def test_c_screen_contract_strings_exist_for_every_language(): assert used_c_keys <= set(REQUIRED_C_KEYS), sorted(used_c_keys - set(REQUIRED_C_KEYS)) assert set(REQUIRED_C_KEYS) - {"OpenDefaultApps"} == used_c_keys + assert "select Install again" not in section + assert "yeniden Kur'u seçin" not in section + def test_the_addon_error_is_translated(): section = _read(ADDON).split("[CustomMessages]", 1)[1].split("\n[", 1)[0] diff --git a/tests/test_installer_process_safety_regressions.py b/tests/test_installer_process_safety_regressions.py index 33b67a2..30d2a20 100644 --- a/tests/test_installer_process_safety_regressions.py +++ b/tests/test_installer_process_safety_regressions.py @@ -148,6 +148,37 @@ def test_main_installer_revalidates_the_effective_target_before_install(): assert "Result := ValidateInstallTarget" in prepare +def test_main_installer_rejects_a_running_player_before_restart_manager_waits(): + """Maintenance must fail fast before Inno enters its long RM shutdown.""" + iss = read(MAIN_ISS) + code = executable_lines(iss).split("[Code]", 1)[1] + prepare = code.split("function PrepareToInstall", 1)[1] + prepare = prepare.split("procedure SetInstallPhase", 1)[0] + + validation = prepare.index("Result := ValidateInstallTarget") + early_exit = prepare.index("if Result <> '' then", validation) + maintenance = prepare.index( + "CurrentInstallMode <> InstallModeFirst", early_exit) + mutex = prepare.index( + "CheckForMutexes('{#PlayerLifecycleMutex}')", maintenance) + message = prepare.index("CustomMessage('CClosePlayerBeforeInstall')", mutex) + + assert validation < early_exit < maintenance < mutex < message + assert re.search( + r"if\s*\(CurrentInstallMode\s*<>\s*InstallModeFirst\)\s*and\s*" + r"CheckForMutexes\s*\(\s*'\{#PlayerLifecycleMutex\}'\s*\)\s*then\s*" + r"Result\s*:=\s*CustomMessage\s*\(\s*" + r"'CClosePlayerBeforeInstall'\s*\)\s*;", + prepare, + re.IGNORECASE, + ), "running-player rejection must remain scoped to maintenance/upgrade" + assert "CloseApplications=yes" in iss + assert 'CloseApplicationsFilter="MLC Player.exe,*.dll"' in iss + assert "force" not in prepare.lower() + assert "taskkill" not in prepare.lower() + assert "Sleep(" not in prepare + + def test_target_directory_enumeration_fails_closed(): iss = read(MAIN_ISS) code = executable_lines(iss).split("[Code]", 1)[1] From 1dafe1fc0149200a0f8cbbd81b6713431d785384 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 01:09:47 +0300 Subject: [PATCH 05/15] docs: bind setup fast-fail evidence --- docs/CONTINUITY.md | 9 +++++---- docs/VERIFICATION_LEDGER.json | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 6f54155..f8ed0e1 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `a4a4ba207e8f233eea07680486f6ffb7a5e24b77` +- Kayıt hazırlanırken doğrulanan HEAD: `315e83a5d6d1a0a5c97873356abb61ce1b0af39b` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `3/0`; fast-fail kaynak ve EV006/EV007 kayıt paketi uncommitted) -- Son kanıt: `EV-20260828-007` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `4/0`; EV008 iki-belge commit-readback kaydı uncommitted) +- Son kanıt: `EV-20260828-008` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -116,6 +116,7 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Ayrı onaylı izole build exact `dcfb343` üzerinde exit 0 ve `DONE` verdi; ana setup `B7EAA997...FC8119` / 55.928.017 bayt, add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Dal protected master'dan 2 commit ileride olduğundan bu yalnız `source_build` PASS'tir; publishable RC veya fiziksel B2 değildir (`EV-20260828-004`). - Exact B7/D4 normal fiziksel döngüsü gerçek v0.39 yükseltmesi, iki kaldırma sırası, clean install, maintenance, payload/ayar koruması ve final restore ile geçti. Askıya alınmış Player yolu kopya öncesi Abort/exit 5, tam rollback ve sıfır sızıntıyla güvenliydi; fakat Restart Manager **66,715 saniye** bekledi. Kullanıcının 5–10 saniye UX sınırı nedeniyle tam B2 **FAILED** (`EV-20260828-006`). - Regression-first installer-only düzeltme maintenance/upgrade sırasında süreç-ömürlü `MLCPlayer-Running` mutex'ini `PrepareToInstall` içinde önce denetler ve çalışan Player varsa kopya/RM bekleyişinden önce sekiz dilde hızlı fail-closed durur. `CloseApplications` fallback'i korunur; force/taskkill/ürün kodu yoktur. Dil sözleşmesi ve yanlış aynı-sihirbaz talimatı kapatıldı; dar paket **60 passed** (`EV-20260828-007`). +- Onaylı beş-dosya fast-fail/kayıt paketi exact `315e83a` olarak commit edildi; sole parent `a4a4ba2`, dosya sınırı doğru ve post-commit dar paket **266 passed**. EV008 iki-belge evidence-commit kaydı henüz uncommitted; build/fiziksel süre kanıtı yoktur (`EV-20260828-008`). - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -179,7 +180,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV006/EV007 beş-dosya fast-fail paketinin son JSON/append-only/private-path ve bağımsız karşıt okumasını tamamla; sonra commit için ayrıca onay iste. Build ve tek fiziksel süre retry'ı daha sonra ayrı ayrı onaylanmadan yapılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV008 iki-belge evidence-commit kaydını ayrı onayla commit et; sonra isolated build için ayrıca onay iste. Tek fiziksel süre retry'ı daha sonra ayrıca onaylanmadan yapılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 9764151..4ea9b56 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9518,6 +9518,35 @@ "The five-file package is uncommitted; no build, install, retry, push, PR, merge, tag, upload or release followed." ], "next_action": "Complete independent adversarial readback and required JSON, append-only, continuity and private-path checks; then request separate commit approval." + }, + { + "id": "EV-20260828-008", + "recorded_at_utc": "2026-08-27T22:08:37Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "315e83a5d6d1a0a5c97873356abb61ce1b0af39b", + "evidence_commit": "315e83a5d6d1a0a5c97873356abb61ce1b0af39b", + "subject": "Committed running-Player installer fast-fail and B2 latency evidence package", + "commands": [ + "git add -- docs/CONTINUITY.md docs/VERIFICATION_LEDGER.json packaging/MLCPlayer.iss tests/test_installer_language_regressions.py tests/test_installer_process_safety_regressions.py", + "git commit -m \"fix: fail fast when Player blocks setup\"", + "git rev-parse HEAD; git rev-parse HEAD^; git show --stat --oneline --decorate --no-renames HEAD; git diff-tree --no-commit-id --name-only -r HEAD; git status --short --branch; git rev-list --left-right --count HEAD...origin/master", + "python -m pytest -q tests/test_installer_process_safety_regressions.py tests/test_installer_language_regressions.py tests/test_installer_branding_regressions.py tests/test_inno_compile_preflight_regressions.py tests/test_continuity_regressions.py tests/test_release_documentation_regressions.py", + "python -m json.tool docs/VERIFICATION_LEDGER.json; python scripts/verify_ledger_append_only.py --base-ref origin/master" + ], + "evidence": [ + "the separately approved five-file package committed as exact 315e83a5d6d1a0a5c97873356abb61ce1b0af39b with sole parent a4a4ba207e8f233eea07680486f6ffb7a5e24b77", + "commit readback reports exactly the two live evidence documents, main Inno source and two installer regression files with 146 insertions and 10 deletions", + "post-commit bounded installer, language, branding, compile-preflight, continuity and release-documentation package passed 266 tests", + "the ledger remained valid JSON and the committed origin/master ledger remained an exact prefix; the branch was clean and four commits ahead, zero behind origin/master immediately after commit" + ], + "summary": "The approved fast-fail source, regression and failed physical-latency evidence package is committed and read back at exact 315e83a.", + "limitations": [ + "No compiled artifact exists for 315e83a; physical 5-10-second behavior remains NOT_RUN.", + "This post-commit evidence entry and continuity update remain uncommitted until separately approved.", + "No build, install, retry, push, PR, merge, tag, upload or release followed the commit." + ], + "next_action": "Request separate approval to commit this two-document evidence_commit record; then request isolated build approval separately." } ] } From 703c12698f03c79dc301243eb28deaa5f72c8135 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 01:16:08 +0300 Subject: [PATCH 06/15] docs: record setup fast-fail build --- docs/CONTINUITY.md | 10 ++++----- docs/VERIFICATION_LEDGER.json | 42 +++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index f8ed0e1..ab7bf17 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `315e83a5d6d1a0a5c97873356abb61ce1b0af39b` +- Kayıt hazırlanırken doğrulanan HEAD: `1dafe1fc0149200a0f8cbbd81b6713431d785384` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `4/0`; EV008 iki-belge commit-readback kaydı uncommitted) -- Son kanıt: `EV-20260828-008` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `5/0`; EV009 iki-belge source-build kaydı uncommitted) +- Son kanıt: `EV-20260828-009` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -113,7 +113,7 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi kullanıcı Retry/Ignore yerine Abort seçti, exit 5 ve rollback başarılıydı. Tüm ölçülen 103+2 dosya ile ayar/uninstall/OpenWith/kısayol yüzeyleri exact korundu; resume 0, normal kapanış, watchdog ateşlenmedi, sızıntı 0; evaluator **23/23 PASS**, karşıt P0/P1=0 (`EV-20260827-036`); app-level semantik/normal maintenance/silent/add-on'a aktarılmaz, belge kapanışı P0/P1/P2=0 (`EV-20260827-037`). -- Ayrı onaylı izole build exact `dcfb343` üzerinde exit 0 ve `DONE` verdi; ana setup `B7EAA997...FC8119` / 55.928.017 bayt, add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Dal protected master'dan 2 commit ileride olduğundan bu yalnız `source_build` PASS'tir; publishable RC veya fiziksel B2 değildir (`EV-20260828-004`). +- Ayrı onaylı izole build exact `1dafe1f` üzerinde tek çalıştırmada exit 0 ve `DONE` verdi; fast-fail ana setup `ABBB01C3...DC34` / 55.945.176 bayt, değişmeyen add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Bu yalnız `source_build` PASS'tir; 5–10 saniye fiziksel davranış ve B2 henüz kanıtlanmadı (`EV-20260828-009`). - Exact B7/D4 normal fiziksel döngüsü gerçek v0.39 yükseltmesi, iki kaldırma sırası, clean install, maintenance, payload/ayar koruması ve final restore ile geçti. Askıya alınmış Player yolu kopya öncesi Abort/exit 5, tam rollback ve sıfır sızıntıyla güvenliydi; fakat Restart Manager **66,715 saniye** bekledi. Kullanıcının 5–10 saniye UX sınırı nedeniyle tam B2 **FAILED** (`EV-20260828-006`). - Regression-first installer-only düzeltme maintenance/upgrade sırasında süreç-ömürlü `MLCPlayer-Running` mutex'ini `PrepareToInstall` içinde önce denetler ve çalışan Player varsa kopya/RM bekleyişinden önce sekiz dilde hızlı fail-closed durur. `CloseApplications` fallback'i korunur; force/taskkill/ürün kodu yoktur. Dil sözleşmesi ve yanlış aynı-sihirbaz talimatı kapatıldı; dar paket **60 passed** (`EV-20260828-007`). - Onaylı beş-dosya fast-fail/kayıt paketi exact `315e83a` olarak commit edildi; sole parent `a4a4ba2`, dosya sınırı doğru ve post-commit dar paket **266 passed**. EV008 iki-belge evidence-commit kaydı henüz uncommitted; build/fiziksel süre kanıtı yoktur (`EV-20260828-008`). @@ -180,7 +180,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV008 iki-belge evidence-commit kaydını ayrı onayla commit et; sonra isolated build için ayrıca onay iste. Tek fiziksel süre retry'ı daha sonra ayrıca onaylanmadan yapılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV009 iki-belge source-build kaydını ayrı onayla commit et; sonra exact ABBB/D4 artifact için tek fiziksel fast-fail süre retry'ı ayrıca onaylanmadan yapılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 4ea9b56..7343407 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9547,6 +9547,48 @@ "No build, install, retry, push, PR, merge, tag, upload or release followed the commit." ], "next_action": "Request separate approval to commit this two-document evidence_commit record; then request isolated build approval separately." + }, + { + "id": "EV-20260828-009", + "recorded_at_utc": "2026-08-27T22:14:21Z", + "proof_layer": "source_build", + "result": "passed", + "commit": "1dafe1fc0149200a0f8cbbd81b6713431d785384", + "baseline_commit": "1dafe1fc0149200a0f8cbbd81b6713431d785384", + "working_tree_state": "clean before build and before evidence recording", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json" + ], + "subject": "Isolated v0.40 build containing the running-Player setup fast-fail gate", + "commands": [ + "git rev-parse --show-toplevel; git status --short --branch; git log -1 --oneline --decorate; git rev-list --left-right --count HEAD...origin/master; targeted installer regressions; old four-artifact identity and target-process readback", + "cmd.exe /d /c packaging\\build_release.bat", + "python packaging/verify_build.py --post; python packaging/verify_build.py --final installer_output\\MLCPlayer_Setup_v0.40.exe; python packaging/verify_build.py --final installer_output\\MLCPlayer_InternetVideo_v0.40.exe", + "first Ed25519 helper attempt failed because the external packaging module shadowed the repository directory; second file-loaded helper attempt failed because it received Path instead of its documented string input; neither changed artifacts and no build retry occurred", + "repository prepublish signature_is_valid with string paths and independent app.release_signature.verify readback; Get-Item, Get-FileHash SHA256, Get-AuthenticodeSignature, PE version, exact HEAD/tree/origin and process readback" + ], + "artifacts": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55945176, "sha256": "ABBB01C337535DB989E4A36D61D4362604C448323A2D27506F155C84EA48DC34"}, + {"name": "MLCPlayer_Setup_v0.40.exe.sig", "size_bytes": 88, "sha256": "7D003B8CF705549111D54BDC8543D5E1B8D6C9651A6AA8A590020531E519CC3E"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe.sig", "size_bytes": 88, "sha256": "516CA07EE797C06C8B0902CE16EB85E98BCC2713D277FFDC689D6C4D15E2DF73"} + ], + "evidence": [ + "the separately approved build started once from exact clean 1dafe1fc0149200a0f8cbbd81b6713431d785384, completed preflight, translation, PyInstaller, both Inno builds, signing and final verification with exit 0 and DONE", + "the new main installer is byte-distinct from the prior B7 artifact and is bound to the committed fast-fail Inno source; unchanged add-on inputs reproduced the exact prior D4 bytes with a new build timestamp", + "both detached Ed25519 signatures independently verified True against the corresponding exact EXE bytes; both PE files report FileVersion and ProductVersion 0.40.0.0", + "both installer EXEs remain Authenticode NotSigned; Ed25519 is not substituted for Authenticode", + "post-build HEAD remained exact 1dafe1f, tracked tree remained clean, branch was five ahead and zero behind origin/master, and measured target-process count was zero", + "independent adversarial post-build readback found P0/P1=0 and issued GO only for the bounded source_build claim" + ], + "summary": "Exact 1dafe1f produced a fresh fast-fail-capable v0.40 main installer and deterministic add-on with four bound artifact identities, two valid detached signatures and no source or process leakage.", + "limitations": [ + "This source_build PASS does not prove compiled installer interaction, the 5-10-second fast-fail latency, install/rollback, installed payload, human acceptance, tag or release readiness.", + "Both EXEs are Authenticode NotSigned; SignPath and SmartScreen acceptance remain NOT_RUN.", + "The two-document EV009 record is uncommitted until separately approved; no install, physical retry, push, PR, merge, tag, upload or release followed the build." + ], + "next_action": "Request separate approval to commit this two-document source-build record; after clean readback request one exact-artifact physical fast-fail latency retry separately." } ] } From e35ee2a5ea1dc1961220a2f80a32be6e2a6fe7a4 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 01:26:44 +0300 Subject: [PATCH 07/15] docs: record blocked setup latency preflight --- docs/CONTINUITY.md | 11 +++++---- docs/VERIFICATION_LEDGER.json | 45 +++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index ab7bf17..6b04981 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `1dafe1fc0149200a0f8cbbd81b6713431d785384` +- Kayıt hazırlanırken doğrulanan HEAD: `703c12698f03c79dc301243eb28deaa5f72c8135` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `5/0`; EV009 iki-belge source-build kaydı uncommitted) -- Son kanıt: `EV-20260828-009` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `6/0`; EV010 iki-belge BLOCKED kaydı uncommitted) +- Son kanıt: `EV-20260828-010` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -116,7 +116,8 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Ayrı onaylı izole build exact `1dafe1f` üzerinde tek çalıştırmada exit 0 ve `DONE` verdi; fast-fail ana setup `ABBB01C3...DC34` / 55.945.176 bayt, değişmeyen add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Bu yalnız `source_build` PASS'tir; 5–10 saniye fiziksel davranış ve B2 henüz kanıtlanmadı (`EV-20260828-009`). - Exact B7/D4 normal fiziksel döngüsü gerçek v0.39 yükseltmesi, iki kaldırma sırası, clean install, maintenance, payload/ayar koruması ve final restore ile geçti. Askıya alınmış Player yolu kopya öncesi Abort/exit 5, tam rollback ve sıfır sızıntıyla güvenliydi; fakat Restart Manager **66,715 saniye** bekledi. Kullanıcının 5–10 saniye UX sınırı nedeniyle tam B2 **FAILED** (`EV-20260828-006`). - Regression-first installer-only düzeltme maintenance/upgrade sırasında süreç-ömürlü `MLCPlayer-Running` mutex'ini `PrepareToInstall` içinde önce denetler ve çalışan Player varsa kopya/RM bekleyişinden önce sekiz dilde hızlı fail-closed durur. `CloseApplications` fallback'i korunur; force/taskkill/ürün kodu yoktur. Dil sözleşmesi ve yanlış aynı-sihirbaz talimatı kapatıldı; dar paket **60 passed** (`EV-20260828-007`). -- Onaylı beş-dosya fast-fail/kayıt paketi exact `315e83a` olarak commit edildi; sole parent `a4a4ba2`, dosya sınırı doğru ve post-commit dar paket **266 passed**. EV008 iki-belge evidence-commit kaydı henüz uncommitted; build/fiziksel süre kanıtı yoktur (`EV-20260828-008`). +- Onaylı beş-dosya fast-fail/kayıt paketi exact `315e83a`, EV008 iki-belge evidence-commit kaydı exact `1dafe1f` olarak bağlandı; dosya sınırları ve post-commit dar paket **266 passed** (`EV-20260828-008`). +- Exact ABBB tek fiziksel denemesi setup başlamadan runner izolasyon kapısında **BLOCKED** oldu: başlangıç hedef süreç 0 ve başlatılan Player kimliği doğruydu, fakat üç saniye sonra hedef küme tek değildi. UAC/setup/suspend/kopya yok; Player normal kapandı, force/watchdog/sızıntı 0, 103+2 final durum korundu. Eski runner geçici hedef kimliğini kaydetmediğinden guard gevşetilmedi; prepared fresh runner sonraki ayrı onaylı denemede tam kümeyi kaydedecek (`EV-20260828-010`). - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -180,7 +181,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV009 iki-belge source-build kaydını ayrı onayla commit et; sonra exact ABBB/D4 artifact için tek fiziksel fast-fail süre retry'ı ayrıca onaylanmadan yapılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV010 iki-belge BLOCKED kaydını ayrı onayla commit et; sonra tam hedef kümesini kaydeden tek fresh-runner retry'ı ayrıca onaylanmadan yapılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 7343407..61746d5 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9589,6 +9589,51 @@ "The two-document EV009 record is uncommitted until separately approved; no install, physical retry, push, PR, merge, tag, upload or release followed the build." ], "next_action": "Request separate approval to commit this two-document source-build record; after clean readback request one exact-artifact physical fast-fail latency retry separately." + }, + { + "id": "EV-20260828-010", + "recorded_at_utc": "2026-08-27T22:22:48Z", + "proof_layer": "installed_artifact", + "result": "blocked", + "commit": "703c12698f03c79dc301243eb28deaa5f72c8135", + "baseline_commit": "703c12698f03c79dc301243eb28deaa5f72c8135", + "working_tree_state": "clean before the approved physical attempt and before evidence recording", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json" + ], + "subject": "Fresh ABBB fast-fail physical latency preflight blocked before setup", + "commands": [ + "exact checkout, ABBB/D4 artifact, installed v0.40 registration, installed Player E30 hash and zero-target-process preflight readback", + "fresh private runner parse/hash validation with exact artifact, installed Player, registration, mutex, PID/path/time, watchdog, stale-evidence and leak guards", + "single approved run_fast_fail_latency.ps1 attempt; setup was never started because the post-launch target-isolation guard failed", + "read-only result, leak snapshot, application log and available Windows process-audit log inspection; no automatic retry" + ], + "artifacts": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55945176, "sha256": "ABBB01C337535DB989E4A36D61D4362604C448323A2D27506F155C84EA48DC34"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"} + ], + "private_artifact_digests": [ + {"name": "run_fast_fail_latency.ps1", "size_bytes": 9079, "sha256": "0DA8BCE26D471C2BD405F1CE96C64F5B56A31B3A87101EB8080F783100D5842B"}, + {"name": "04-fast-fail-leak.json", "size_bytes": 71876, "sha256": "9342A59CF43320FC8AF5C5C5347AA1DBB78D2B4E4FD0D33BDCF7F0BF545880EC"}, + {"name": "05-fast-fail-result.json", "size_bytes": 1072, "sha256": "045B6F81ABF78821BAC66F6B255A9416F49BB89249929C715626787865DB92E0"}, + {"name": "run_fast_fail_latency.ps1.prepared-next", "size_bytes": 9332, "sha256": "A2F5BFA7FF74CE1BB15A6BD88E2D79A15F78E2CE2611CA9E6423233A3CAF799C"} + ], + "evidence": [ + "the approved attempt started from exact clean 703c126, exact ABBB/D4 artifacts, registered v0.40 main and add-on, exact installed Player E30 and zero pre-existing target processes", + "the fresh runner launched the exact installed Player and read back its PID, parent PID, executable path, command line and creation time, but the immediate target-isolation guard observed a non-single target set and failed closed before mutex verification, suspension or setup launch", + "SetupStartedUtc and SetupReturnedUtc are null, setup exit is null, no setup log or pre/return install snapshot exists, and no UAC or installer interaction occurred; the 5-10-second product scenario remains NOT_RUN", + "the exact Player was closed normally, forced Player/setup cleanup was false, watchdog did not fire, measured target-process count after cleanup was zero, and the final snapshot retained 103 installed plus two user files", + "available application and Windows audit logs did not preserve the transient second target identity, so the guard was not weakened and no automatic retry occurred", + "the prepared next runner only adds fail-closed recording of every observed target before the unchanged isolation decision; it parses cleanly but has not been executed" + ], + "summary": "The first ABBB physical attempt was safely blocked by its own process-isolation preflight before setup; it proves cleanup safety only and does not measure the installer fast-fail latency.", + "limitations": [ + "The transient extra target identity was not captured by the original runner and cannot be reconstructed from available read-only logs.", + "No install, copy, rollback or fast-fail behavior was exercised; this is not a failed product result and cannot pass B2.", + "The next physical attempt requires separate approval; push, PR, merge, tag, upload and release remain blocked." + ], + "next_action": "Request separate approval for one fresh-runner retry that records the complete observed target set and still stops before setup unless exact single-target isolation and mutex verification pass." } ] } From d9aa143cb95f2add841639641e5f5b96fca61885 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 08:48:15 +0300 Subject: [PATCH 08/15] docs: record setup fast-fail acceptance --- docs/CONTINUITY.md | 11 ++++---- docs/VERIFICATION_LEDGER.json | 47 +++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 6b04981..38f619c 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `703c12698f03c79dc301243eb28deaa5f72c8135` +- Kayıt hazırlanırken doğrulanan HEAD: `e35ee2a5ea1dc1961220a2f80a32be6e2a6fe7a4` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `6/0`; EV010 iki-belge BLOCKED kaydı uncommitted) -- Son kanıt: `EV-20260828-010` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `7/0`; EV011 iki-belge PASS kaydı uncommitted) +- Son kanıt: `EV-20260828-011` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -113,11 +113,12 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi kullanıcı Retry/Ignore yerine Abort seçti, exit 5 ve rollback başarılıydı. Tüm ölçülen 103+2 dosya ile ayar/uninstall/OpenWith/kısayol yüzeyleri exact korundu; resume 0, normal kapanış, watchdog ateşlenmedi, sızıntı 0; evaluator **23/23 PASS**, karşıt P0/P1=0 (`EV-20260827-036`); app-level semantik/normal maintenance/silent/add-on'a aktarılmaz, belge kapanışı P0/P1/P2=0 (`EV-20260827-037`). -- Ayrı onaylı izole build exact `1dafe1f` üzerinde tek çalıştırmada exit 0 ve `DONE` verdi; fast-fail ana setup `ABBB01C3...DC34` / 55.945.176 bayt, değişmeyen add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Bu yalnız `source_build` PASS'tir; 5–10 saniye fiziksel davranış ve B2 henüz kanıtlanmadı (`EV-20260828-009`). +- Ayrı onaylı izole build exact `1dafe1f` üzerinde tek çalıştırmada exit 0 ve `DONE` verdi; fast-fail ana setup `ABBB01C3...DC34` / 55.945.176 bayt, değişmeyen add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Bu yalnız `source_build` PASS'tir; 5–10 saniye fiziksel davranış daha sonra EV011 ile geçti fakat tam B2 hâlâ tamamlanmadı (`EV-20260828-009`). - Exact B7/D4 normal fiziksel döngüsü gerçek v0.39 yükseltmesi, iki kaldırma sırası, clean install, maintenance, payload/ayar koruması ve final restore ile geçti. Askıya alınmış Player yolu kopya öncesi Abort/exit 5, tam rollback ve sıfır sızıntıyla güvenliydi; fakat Restart Manager **66,715 saniye** bekledi. Kullanıcının 5–10 saniye UX sınırı nedeniyle tam B2 **FAILED** (`EV-20260828-006`). - Regression-first installer-only düzeltme maintenance/upgrade sırasında süreç-ömürlü `MLCPlayer-Running` mutex'ini `PrepareToInstall` içinde önce denetler ve çalışan Player varsa kopya/RM bekleyişinden önce sekiz dilde hızlı fail-closed durur. `CloseApplications` fallback'i korunur; force/taskkill/ürün kodu yoktur. Dil sözleşmesi ve yanlış aynı-sihirbaz talimatı kapatıldı; dar paket **60 passed** (`EV-20260828-007`). - Onaylı beş-dosya fast-fail/kayıt paketi exact `315e83a`, EV008 iki-belge evidence-commit kaydı exact `1dafe1f` olarak bağlandı; dosya sınırları ve post-commit dar paket **266 passed** (`EV-20260828-008`). - Exact ABBB tek fiziksel denemesi setup başlamadan runner izolasyon kapısında **BLOCKED** oldu: başlangıç hedef süreç 0 ve başlatılan Player kimliği doğruydu, fakat üç saniye sonra hedef küme tek değildi. UAC/setup/suspend/kopya yok; Player normal kapandı, force/watchdog/sızıntı 0, 103+2 final durum korundu. Eski runner geçici hedef kimliğini kaydetmediğinden guard gevşetilmedi; prepared fresh runner sonraki ayrı onaylı denemede tam kümeyi kaydedecek (`EV-20260828-010`). +- Ayrı onaylı tek fresh-runner denemesinde exact ABBB setup askıya alınmış tek exact Player ve doğrulanmış mutex karşısında **6,983 saniyede** exit 7 ile hızlı fail-closed durdu; setup içi süre yaklaşık 0,131 saniyeydi. Restart Manager, kopya ve başarı marker'ı yok; 103 kurulu dosya, iki kullanıcı dosyası, ayarlar, kayıtlar, OpenWith ve üç kısayol exact korundu. Suspend/resume 0/0, normal kapanış, force/watchdog yok ve süreç sızıntısı 0; karşıt P0/P1=0 (`EV-20260828-011`). Bu PASS yalnız fast-fail senaryosudur; exact ABBB normal install/upgrade/uninstall B2 zincirinin yerine geçmez. - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -181,7 +182,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV010 iki-belge BLOCKED kaydını ayrı onayla commit et; sonra tam hedef kümesini kaydeden tek fresh-runner retry'ı ayrıca onaylanmadan yapılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV011 iki-belge fast-fail PASS kaydını ayrı onayla commit et; sonra exact ABBB artifact'ı için kalan normal B2 install/upgrade/uninstall zinciri ayrıca onaylanmadan çalıştırılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 61746d5..a75fdc8 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9634,6 +9634,53 @@ "The next physical attempt requires separate approval; push, PR, merge, tag, upload and release remain blocked." ], "next_action": "Request separate approval for one fresh-runner retry that records the complete observed target set and still stops before setup unless exact single-target isolation and mutex verification pass." + }, + { + "id": "EV-20260828-011", + "recorded_at_utc": "2026-08-28T05:44:02Z", + "proof_layer": "installed_artifact", + "result": "passed", + "commit": "e35ee2a5ea1dc1961220a2f80a32be6e2a6fe7a4", + "baseline_commit": "e35ee2a5ea1dc1961220a2f80a32be6e2a6fe7a4", + "working_tree_state": "clean before the separately approved single physical retry and before evidence recording", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json" + ], + "subject": "Exact ABBB suspended-Player installer fast-fail latency acceptance", + "commands": [ + "exact checkout, ABBB/D4 artifact, installed E30 Player, v0.40 registration and zero-target-process preflight readback", + "fresh private evidence root with exact A2F5 runner, 9CDB capture helper, 4D5C watchdog and zero stale evidence targets", + "single separately approved run_fast_fail_latency.ps1 execution with exact artifact, PID/path/time, mutex, suspend/resume, 30-second setup timeout and cleanup guards", + "read-only setup log, pre/return/leak/result, live process and independent adversarial readback; no automatic retry" + ], + "artifacts": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55945176, "sha256": "ABBB01C337535DB989E4A36D61D4362604C448323A2D27506F155C84EA48DC34"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"} + ], + "private_artifact_digests": [ + {"name": "run_fast_fail_latency.ps1", "size_bytes": 9332, "sha256": "A2F5BFA7FF74CE1BB15A6BD88E2D79A15F78E2CE2611CA9E6423233A3CAF799C"}, + {"name": "01-fast-fail-pre.json", "size_bytes": 32704, "sha256": "D64DB9C000720E148342D19A36AF0491EFEBC5134E5D993567434059A7F58EA1"}, + {"name": "02-fast-fail-setup.log", "size_bytes": 1923, "sha256": "52118AD44541FFEF90683BF9B564A3D172C77528F8BC476772A8840CEB25C0F9"}, + {"name": "03-fast-fail-return.json", "size_bytes": 32704, "sha256": "3D7B4AC8B5F74C70589AD442D08FFE77CEF67B822532B46254E9503E2C59E67E"}, + {"name": "04-fast-fail-leak.json", "size_bytes": 32444, "sha256": "7464B8993512CD4BAA775F4D5CC590D15F2E640C5DF7EC5D7415E5F84F21BF74"}, + {"name": "05-fast-fail-result.json", "size_bytes": 1476, "sha256": "6D661C4393851DB3152FBDE2A910D071418135511694C4CC70E8D297FC4F4925"} + ], + "evidence": [ + "the single approved retry started from exact clean e35ee2a, exact ABBB/D4 artifacts, registered v0.40 main and add-on, exact installed E30 Player and zero pre-existing target processes", + "the fresh runner recorded one exact Player target with matching PID, path, command line and creation time, verified the MLCPlayer-Running mutex, and suspended then resumed the same process with status 0/0", + "setup returned exit 7 in 6.983 seconds wall-clock; its own log opened and closed in about 0.131 seconds and recorded the localized PrepareToInstall fast-fail message before Restart Manager, file copy or any success marker", + "pre and return snapshots differed only by capture timestamp; 103 installed files, two user files, active settings, main and add-on registrations, OpenWith, three shortcuts and ABBB/D4 artifact identities were exact equal", + "the exact Player resumed and closed normally; setup and Player force cleanup were false, the watchdog did not fire, remaining and live target-process counts were zero, and no automatic retry occurred", + "independent adversarial readback found P0/P1=0 and issued GO only for this exact suspended-Player fast-fail latency, no-copy, state-preservation and leak scenario" + ], + "summary": "The exact ABBB installer replaced the prior 66.715-second suspended-Player wait with a bounded 6.983-second fail-closed result while preserving every measured product and user state surface and leaving zero process leakage.", + "limitations": [ + "This PASS is bound to exact ABBB/D4 artifact bytes, e35ee2a baseline, the measured Windows host and the suspended exact Player scenario.", + "It does not prove the exact ABBB normal install, v0.39 upgrade, maintenance, add-on, uninstall-order or product-URL B2 paths; older B7 normal-cycle evidence cannot be transferred to new artifact bytes.", + "Both EXEs remain Authenticode NotSigned; no push, PR, merge, tag, upload or release followed." + ], + "next_action": "Request separate approval to commit this two-document PASS record; then request the remaining exact ABBB normal B2 physical lifecycle as a separately approved bounded cycle." } ] } From 11bb2b01bf180c61d802717ead6f7a2f72558ca8 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 09:01:04 +0300 Subject: [PATCH 09/15] docs: align B2 with Player fast-fail --- docs/CONTINUITY.md | 14 +++---- docs/RELEASE_PROCESS.md | 14 +++++-- docs/VERIFICATION_LEDGER.json | 37 +++++++++++++++++++ .../test_release_documentation_regressions.py | 23 ++++++++++++ 4 files changed, 76 insertions(+), 12 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 38f619c..ff06e3d 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `e35ee2a5ea1dc1961220a2f80a32be6e2a6fe7a4` +- Kayıt hazırlanırken doğrulanan HEAD: `d9aa143cb95f2add841639641e5f5b96fca61885` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `7/0`; EV011 iki-belge PASS kaydı uncommitted) -- Son kanıt: `EV-20260828-011` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `8/0`; EV012 dört-dosya sözleşme kaydı uncommitted) +- Son kanıt: `EV-20260828-012` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -109,16 +109,14 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Restart Manager exact Deno'yu kooperatif kapattı; v0.39→v0.40 add-on upgrade sızıntısız PASS (`EV-20260827-033`), normal fixture refusal BLOCKED (`EV-20260827-034`). Sözleşme graceful Deno + exact yt-dlp fail-closed oldu; belge **206 passed**, P0/P1/P2=0 (`EV-20260827-035`). -- Askıya alınmış tek exact v0.40 Player kapanmayınca ana setup kopya öncesi durdu; - kullanıcı Retry/Ignore yerine Abort seçti, exit 5 ve rollback başarılıydı. Tüm - ölçülen 103+2 dosya ile ayar/uninstall/OpenWith/kısayol yüzeyleri exact korundu; resume 0, normal kapanış, watchdog - ateşlenmedi, sızıntı 0; evaluator **23/23 PASS**, karşıt P0/P1=0 (`EV-20260827-036`); app-level semantik/normal maintenance/silent/add-on'a aktarılmaz, belge kapanışı P0/P1/P2=0 (`EV-20260827-037`). +- Askıya alınmış tek exact v0.40 Player kapanmayınca ana setup kopya öncesi durdu; kullanıcı Retry/Ignore yerine Abort seçti, exit 5 ve rollback başarılıydı. Tüm ölçülen 103+2 dosya ile ayar/uninstall/OpenWith/kısayol yüzeyleri exact korundu; resume 0, normal kapanış, watchdog ateşlenmedi, sızıntı 0; evaluator **23/23 PASS**, karşıt P0/P1=0 (`EV-20260827-036`); app-level semantik/normal maintenance/silent/add-on'a aktarılmaz, belge kapanışı P0/P1/P2=0 (`EV-20260827-037`). - Ayrı onaylı izole build exact `1dafe1f` üzerinde tek çalıştırmada exit 0 ve `DONE` verdi; fast-fail ana setup `ABBB01C3...DC34` / 55.945.176 bayt, değişmeyen add-on `D4A4D799...F9E675` / 48.909.126 bayt, iki detached Ed25519 geçerli, iki EXE Authenticode `NotSigned` ve süreç sızıntısı 0. Bu yalnız `source_build` PASS'tir; 5–10 saniye fiziksel davranış daha sonra EV011 ile geçti fakat tam B2 hâlâ tamamlanmadı (`EV-20260828-009`). - Exact B7/D4 normal fiziksel döngüsü gerçek v0.39 yükseltmesi, iki kaldırma sırası, clean install, maintenance, payload/ayar koruması ve final restore ile geçti. Askıya alınmış Player yolu kopya öncesi Abort/exit 5, tam rollback ve sıfır sızıntıyla güvenliydi; fakat Restart Manager **66,715 saniye** bekledi. Kullanıcının 5–10 saniye UX sınırı nedeniyle tam B2 **FAILED** (`EV-20260828-006`). - Regression-first installer-only düzeltme maintenance/upgrade sırasında süreç-ömürlü `MLCPlayer-Running` mutex'ini `PrepareToInstall` içinde önce denetler ve çalışan Player varsa kopya/RM bekleyişinden önce sekiz dilde hızlı fail-closed durur. `CloseApplications` fallback'i korunur; force/taskkill/ürün kodu yoktur. Dil sözleşmesi ve yanlış aynı-sihirbaz talimatı kapatıldı; dar paket **60 passed** (`EV-20260828-007`). - Onaylı beş-dosya fast-fail/kayıt paketi exact `315e83a`, EV008 iki-belge evidence-commit kaydı exact `1dafe1f` olarak bağlandı; dosya sınırları ve post-commit dar paket **266 passed** (`EV-20260828-008`). - Exact ABBB tek fiziksel denemesi setup başlamadan runner izolasyon kapısında **BLOCKED** oldu: başlangıç hedef süreç 0 ve başlatılan Player kimliği doğruydu, fakat üç saniye sonra hedef küme tek değildi. UAC/setup/suspend/kopya yok; Player normal kapandı, force/watchdog/sızıntı 0, 103+2 final durum korundu. Eski runner geçici hedef kimliğini kaydetmediğinden guard gevşetilmedi; prepared fresh runner sonraki ayrı onaylı denemede tam kümeyi kaydedecek (`EV-20260828-010`). - Ayrı onaylı tek fresh-runner denemesinde exact ABBB setup askıya alınmış tek exact Player ve doğrulanmış mutex karşısında **6,983 saniyede** exit 7 ile hızlı fail-closed durdu; setup içi süre yaklaşık 0,131 saniyeydi. Restart Manager, kopya ve başarı marker'ı yok; 103 kurulu dosya, iki kullanıcı dosyası, ayarlar, kayıtlar, OpenWith ve üç kısayol exact korundu. Suspend/resume 0/0, normal kapanış, force/watchdog yok ve süreç sızıntısı 0; karşıt P0/P1=0 (`EV-20260828-011`). Bu PASS yalnız fast-fail senaryosudur; exact ABBB normal install/upgrade/uninstall B2 zincirinin yerine geçmez. +- Resmî B2 metnindeki eski “Player'ı Restart Manager kapatır” şartı committed ABBB davranışıyla çeliştiği için regression-first hizalandı: yalnız bakım/yükseltmede `MLCPlayer-Running` mutex'i `PrepareToInstall` içinde RM'den önce denetlenir; responsive/asılı Player'da 10 saniye içinde kopya öncesi nonzero fail-closed, mesaj, değişmeyen durum ve sıfır sızıntı zorunludur. İlk kurulum etkilenmez; RM mutex dışındaki kilitler için fallback kalır. İlk hedef test kırmızı, son etki paketi **226 passed**, karşıt P0/P1/P2=0 (`EV-20260828-012`). Ürün kodu veya artifact değişmedi. - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -182,7 +180,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV011 iki-belge fast-fail PASS kaydını ayrı onayla commit et; sonra exact ABBB artifact'ı için kalan normal B2 install/upgrade/uninstall zinciri ayrıca onaylanmadan çalıştırılmaz. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV012 dört-dosya B2 sözleşme hizalamasını ayrı onayla commit et; ardından daha önce ayrı onaylanan exact ABBB/D4 normal B2 zinciri fresh bounded orchestrator ile yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md index b69b426..0a71766 100644 --- a/docs/RELEASE_PROCESS.md +++ b/docs/RELEASE_PROCESS.md @@ -96,11 +96,17 @@ doğrular. Bu koşum yeşil olmadan build başlamaz. Yerel ÇIKIŞ : ana paket ve add-on için install -> upgrade -> uninstall zinciri, interaktif ve silent yollar ayrı ayrı geçti KORUMA : - - Gerçek kurulu Player, Restart Manager ile nazikçe kapanır; kapanış - marker'ı/exit durumu doğrulanır ve yardımcı süreç sızmaz. + - Bakım/yükseltme sırasında gerçek kurulu Player açıksa süreç-ömürlü + `MLCPlayer-Running` mutex'i `PrepareToInstall` içinde Restart + Manager'dan önce doğrulanır. Responsive/asılı ayrımı yapılmadan + 10 saniye içinde kopya öncesi fail-closed durmalı; kullanıcı + Player'ı kapatıp Setup'ı yeniden başlatır. İlk kurulum etkilenmez. + Restart Manager yalnız mutex dışındaki kilitler için fallback kalır; + nonzero exit, kullanıcı mesajı, değişmeyen ürün/kullanıcı durumu ve + sıfır yardımcı süreç sızıntısı doğrulanır. - Başka klasörde çalışan aynı adlı `MLC Player.exe` hayatta kalır. - - Kapanmayı reddeden/asılı süreçte kurulum DURUR; kurulu program - ağacında tek bir byte bile değişmemeli. + - Kapanmayı reddeden/asılı Player'da aynı hızlı mutex kapısı geçerlidir; + kurulu program ağacında tek bir byte bile değişmemeli. - Test medyası ile `%APPDATA%\MLCPlayer` ayar/log ağacı önce/sonra dosya listesi, metadata ve SHA-256 hash ile aynı kalır. - Add-on, boş/relative/root/UNC/eski/wrong-product InstallLocation diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index a75fdc8..24e33d4 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9681,6 +9681,43 @@ "Both EXEs remain Authenticode NotSigned; no push, PR, merge, tag, upload or release followed." ], "next_action": "Request separate approval to commit this two-document PASS record; then request the remaining exact ABBB normal B2 physical lifecycle as a separately approved bounded cycle." + }, + { + "id": "EV-20260828-012", + "recorded_at_utc": "2026-08-28T05:58:01Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "d9aa143cb95f2add841639641e5f5b96fca61885", + "baseline_commit": "d9aa143cb95f2add841639641e5f5b96fca61885", + "working_tree_state": "clean before the regression-first governance change", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/RELEASE_PROCESS.md", + "docs/VERIFICATION_LEDGER.json", + "tests/test_release_documentation_regressions.py" + ], + "subject": "Official B2 process contract aligned with the committed running-Player fast-fail policy", + "commands": [ + "python -m pytest -q tests/test_release_documentation_regressions.py -k running_player_fast_fail_policy (red: 1 failed)", + "python -m pytest -q tests/test_release_documentation_regressions.py -k running_player_fast_fail_policy (green: 1 passed, 206 deselected)", + "python -m pytest -q tests/test_installer_process_safety_regressions.py tests/test_release_documentation_regressions.py tests/test_continuity_regressions.py (226 passed)", + "git diff --check and independent adversarial readback" + ], + "evidence": [ + "read-only preflight found a P0 contradiction: RELEASE_PROCESS required Restart Manager to close the real Player while the committed and physically accepted ABBB policy rejects any running Player from PrepareToInstall before Restart Manager", + "the new B2-slice regression first failed because the official gate did not mention the MLCPlayer-Running mutex or the compiled fast-fail behavior", + "the minimal documentation change now requires maintenance or upgrade with a responsive or suspended Player to stop within 10 seconds before copy with nonzero exit, user message, unchanged product and user state and zero helper-process leakage", + "first install remains unaffected and Restart Manager remains a fallback only for locks outside the Player lifecycle mutex; external same-name survival and every Deno, yt-dlp, rollback, force prohibition and payload guard remain unchanged", + "the first adversarial pass found a fail-open regression test; the strengthened B2-slice test now directly binds scope, responsive and suspended states, timing, copy boundary, first install, fallback, exit, message, state, leak, external same-name and byte-preservation requirements", + "the final bounded package passed 226 tests, git diff --check was clean and independent adversarial review reported P0/P1/P2=0" + ], + "summary": "The single official release contract now matches the already committed and exact-artifact-tested Player mutex-first policy without weakening any other B2 acceptance surface.", + "limitations": [ + "This deterministic PASS changes only release documentation and its regression; it does not execute or pass the remaining exact ABBB normal physical lifecycle.", + "No product or installer source, artifact, build, installation, push, PR, merge, tag, upload or release changed in this step.", + "The four-file package remains uncommitted until separately approved." + ], + "next_action": "Request separate approval to commit this four-file B2 contract package; then continue the already approved exact ABBB/D4 normal B2 lifecycle with a fresh bounded orchestrator." } ] } diff --git a/tests/test_release_documentation_regressions.py b/tests/test_release_documentation_regressions.py index 6ef8820..f855db8 100644 --- a/tests/test_release_documentation_regressions.py +++ b/tests/test_release_documentation_regressions.py @@ -159,6 +159,29 @@ def test_final_artifact_process_safety_is_a_pre_tag_gate(): assert phrase in text, f"final-artifact kabulunde eksik: {phrase}" +def test_final_artifact_gate_matches_the_running_player_fast_fail_policy(): + """The release gate must require the compiled mutex-first behavior.""" + text = fold(read(RELEASE_DOC)).lower() + start = text.index("b2) tag'den once") + end = text.index("c) python packaging/fetch_sources.py", start) + gate = " ".join(text[start:end].replace("`", "").split()) + + for phrase in ( + "bakim/yukseltme sirasinda", "mlcplayer-running", "preparetoinstall", + "restart manager'dan once", "10 saniye icinde", + "responsive/asili ayrimi yapilmadan", + "kopya oncesi fail-closed", "ilk kurulum etkilenmez", + "player'i kapatip setup'i yeniden baslatir", + "mutex disindaki kilitler icin fallback", "nonzero exit", + "kullanici mesaji", "degismeyen urun/kullanici durumu", + "sifir yardimci surec sizintisi", "baska klasorde calisan", + "ayni adli", "hayatta", "kapanmayi reddeden/asili player", + "tek bir byte bile degismemeli"): + assert phrase in gate, f"player fast-fail kapisinda eksik: {phrase}" + + assert "gercek kurulu player, restart manager ile nazikce kapanir" not in gate + + def test_addon_process_gate_matches_measured_ytdlp_and_deno_behavior(): """Require measured yt-dlp refusal and cooperative Deno upgrade outcomes.""" text = fold(read(RELEASE_DOC)).lower() From 8ae5fca37492b95ae43291eb1f4f2456581f01fb Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 10:48:25 +0300 Subject: [PATCH 10/15] docs: record silent B2 lifecycle --- docs/CONTINUITY.md | 9 +++--- docs/VERIFICATION_LEDGER.json | 52 +++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index ff06e3d..2bad40a 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `d9aa143cb95f2add841639641e5f5b96fca61885` +- Kayıt hazırlanırken doğrulanan HEAD: `11bb2b01bf180c61d802717ead6f7a2f72558ca8` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `8/0`; EV012 dört-dosya sözleşme kaydı uncommitted) -- Son kanıt: `EV-20260828-012` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `9/0`; EV013 iki-belge fiziksel kanıt kaydı uncommitted) +- Son kanıt: `EV-20260828-013` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -117,6 +117,7 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Exact ABBB tek fiziksel denemesi setup başlamadan runner izolasyon kapısında **BLOCKED** oldu: başlangıç hedef süreç 0 ve başlatılan Player kimliği doğruydu, fakat üç saniye sonra hedef küme tek değildi. UAC/setup/suspend/kopya yok; Player normal kapandı, force/watchdog/sızıntı 0, 103+2 final durum korundu. Eski runner geçici hedef kimliğini kaydetmediğinden guard gevşetilmedi; prepared fresh runner sonraki ayrı onaylı denemede tam kümeyi kaydedecek (`EV-20260828-010`). - Ayrı onaylı tek fresh-runner denemesinde exact ABBB setup askıya alınmış tek exact Player ve doğrulanmış mutex karşısında **6,983 saniyede** exit 7 ile hızlı fail-closed durdu; setup içi süre yaklaşık 0,131 saniyeydi. Restart Manager, kopya ve başarı marker'ı yok; 103 kurulu dosya, iki kullanıcı dosyası, ayarlar, kayıtlar, OpenWith ve üç kısayol exact korundu. Suspend/resume 0/0, normal kapanış, force/watchdog yok ve süreç sızıntısı 0; karşıt P0/P1=0 (`EV-20260828-011`). Bu PASS yalnız fast-fail senaryosudur; exact ABBB normal install/upgrade/uninstall B2 zincirinin yerine geçmez. - Resmî B2 metnindeki eski “Player'ı Restart Manager kapatır” şartı committed ABBB davranışıyla çeliştiği için regression-first hizalandı: yalnız bakım/yükseltmede `MLCPlayer-Running` mutex'i `PrepareToInstall` içinde RM'den önce denetlenir; responsive/asılı Player'da 10 saniye içinde kopya öncesi nonzero fail-closed, mesaj, değişmeyen durum ve sıfır sızıntı zorunludur. İlk kurulum etkilenmez; RM mutex dışındaki kilitler için fallback kalır. İlk hedef test kırmızı, son etki paketi **226 passed**, karşıt P0/P1/P2=0 (`EV-20260828-012`). Ürün kodu veya artifact değişmedi. +- Exact `11bb2b0` ve ABBB/D4 artifact'larıyla silent fiziksel B2 zinciri immutable checkpoint resume ile tamamlandı: gerçek v0.39 seed/yükseltme, iki maintenance, iki kaldırma sırası, iki temiz durum, clean install ve final restore geçti. Final exact 103 dosya, iki uninstall kaydı, OpenWith, üç kısayol, korunmuş iki kullanıcı dosyası ve sıfır hedef süreçle `phase_passed` verdi (`EV-20260828-013`). Bu yalnız silent installed-artifact PASS'tir; `InteractiveMain` ve yeni exact Player product URL NOT_RUN kaldı. - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -180,7 +181,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV012 dört-dosya B2 sözleşme hizalamasını ayrı onayla commit et; ardından daha önce ayrı onaylanan exact ABBB/D4 normal B2 zinciri fresh bounded orchestrator ile yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV013 iki-belge silent fiziksel kanıt kaydını ayrı onayla commit et; ardından `InteractiveMain` lifecycle ve yeni exact kurulu Player product-URL kapıları yalnız kendi açık senaryo onaylarıyla yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 24e33d4..8c0191c 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9718,6 +9718,58 @@ "The four-file package remains uncommitted until separately approved." ], "next_action": "Request separate approval to commit this four-file B2 contract package; then continue the already approved exact ABBB/D4 normal B2 lifecycle with a fresh bounded orchestrator." + }, + { + "id": "EV-20260828-013", + "recorded_at_utc": "2026-08-28T07:43:42Z", + "proof_layer": "installed_artifact", + "result": "passed", + "commit": "11bb2b01bf180c61d802717ead6f7a2f72558ca8", + "baseline_commit": "11bb2b01bf180c61d802717ead6f7a2f72558ca8", + "working_tree_state": "clean before every physical segment and before evidence recording", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json" + ], + "subject": "Exact ABBB/D4 silent B2 lifecycle with immutable checkpoint resume", + "commands": [ + "exact HEAD, clean tree, artifact name/size/SHA-256, baseline, prior immutable evidence, zero-stale-evidence and zero-target-process preflight", + "private runner parser, stale/create-only, forged handoff, TOCTOU held-lock, concurrent single-writer, resume mutation, unique physical-label and remaining-state assertion tests", + "separately approved elevated silent lifecycle segments: preparation, v0.39 seed, v0.40 upgrade, maintenance, both uninstall orders, clean install and final restore", + "read-only result, progress, installer logs, snapshots, registry, payload, user-state and target-process inspection after each nonzero runner return; no blind automatic retry", + "python -m pytest -q tests/test_continuity_regressions.py" + ], + "artifacts": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55945176, "sha256": "ABBB01C337535DB989E4A36D61D4362604C448323A2D27506F155C84EA48DC34"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"}, + {"name": "MLCPlayer_Setup_v0.39.exe", "size_bytes": 56329783, "sha256": "00ED3EF67DA44ADF1F4D997426636BA7642413098C66BF08FADE54DD44584915"}, + {"name": "MLCPlayer_InternetVideo_v0.39.exe", "size_bytes": 48896196, "sha256": "07F69153E498E0537F7C9446B69DB1DC36A43256142C03B91FAA0EFC16C5A491"} + ], + "private_artifact_digests": [ + {"name": "retry-01-S-result.json", "size_bytes": 1128, "sha256": "5C32D45BE40B8416D72C8091D304E57A99EAC90FB564636F2D52850BCDCF7742"}, + {"name": "resume-01-S-result.json", "size_bytes": 1015, "sha256": "613729C0131A2DE2B843953E0500627DFF340F2FBE9D36C90143302C37A16061"}, + {"name": "resume-02-clean-S-result.json", "size_bytes": 2076, "sha256": "CDA27B191C9596ABD10126678AEC2A9BAE2C4D5DAD61E8A5A94AC47BF1D964E5"}, + {"name": "resume-03-upgraded-S-result.json", "size_bytes": 3282, "sha256": "0E5BF84295A2822DB28D41243E59EC0342FD968366AB35950FF92FC01FD700A4"}, + {"name": "resume-04-tail-S-result.json", "size_bytes": 5495, "sha256": "AD25EF48D2AE6CE2F3D253FF58C6A989C2C32C2D2D82C562A3CFE4911EF60C25"}, + {"name": "resume-04-tail-S-28-final-restored.json", "size_bytes": 32638, "sha256": "6E1459582A81B38D4D4BB8E9C5FF7E1BA82BC9B5553484F3E9B5B6794A531A4F"}, + {"name": "resume-04-tail-run_b2_lifecycle.ps1", "size_bytes": 29727, "sha256": "14A78E2C19B4F143EBFDB99957C7E0DED9678A49EF9656466029C0180D6FAAA0"}, + {"name": "resume-04-tail-test_tail_contract.ps1", "size_bytes": 4237, "sha256": "1FF19CEB9A0A077F67EAB462C66DDF29C4F27DADAC1D5C048160AEF9A2839B21"} + ], + "evidence": [ + "the private runner stale-evidence overwrite P0 was closed with create-only result/snapshot writes, a create-new run lock, prerequisite identity locks and stale preflight outside the catch path", + "four nonzero orchestration segments were preserved rather than overwritten: premature second-phase log read, null clean-collection cardinality, source-path versus installed-destination manifest mapping, and duplicate maintenance log label; each cause was inspected before a checkpoint-bound continuation", + "the corrected manifest maps the three add-on licence source paths to the installer-declared _internal\\licenses destinations; the final installed set is exactly 99 static plus four generated uninstaller files", + "the exact silent chain passed v0.39 seed, v0.39-to-v0.40 main and add-on upgrade, two same-version maintenance cycles, main-first and add-on-first uninstall boundaries, two complete clean states, clean install and final restore", + "every executed setup and uninstaller returned exit 0 with its success marker and explicit restart No; final result is immutable phase_passed and binds the final snapshot digest", + "final state contains exact v0.40 main and add-on payload, both uninstall registrations, OpenWith, three shortcuts and preserved two-file user data; target-process count is zero" + ], + "summary": "The exact ABBB/D4 artifacts passed the silent physical B2 lifecycle on exact 11bb2b0 with immutable checkpoint evidence, exact payload and user-state readback, final restore and zero process leakage.", + "limitations": [ + "This PASS is limited to the silent installed-artifact lifecycle and the exact artifact, commit, host and private evidence chain recorded here.", + "InteractiveMain lifecycle and the new exact installed Player product-URL scenario remain NOT_RUN; complete B2, tag and release are not passed.", + "The runner corrections are private evidence tooling, not committed product source; no commit, push, PR, merge, tag, upload or release was performed." + ], + "next_action": "After separate commit approval for this two-document evidence record, run InteractiveMain and the new exact installed Player product-URL gate only under their explicit scenario approvals." } ] } From 8edd6a91fb58e647a3f1839d02894d27ae35d387 Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 10:49:43 +0300 Subject: [PATCH 11/15] docs: bind silent B2 evidence commit --- docs/CONTINUITY.md | 9 +++++---- docs/VERIFICATION_LEDGER.json | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 2bad40a..656f1e9 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `11bb2b01bf180c61d802717ead6f7a2f72558ca8` +- Kayıt hazırlanırken doğrulanan HEAD: `8ae5fca37492b95ae43291eb1f4f2456581f01fb` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `9/0`; EV013 iki-belge fiziksel kanıt kaydı uncommitted) -- Son kanıt: `EV-20260828-013` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `10/0`; EV014 iki-belge evidence-commit bağı uncommitted) +- Son kanıt: `EV-20260828-014` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -118,6 +118,7 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Ayrı onaylı tek fresh-runner denemesinde exact ABBB setup askıya alınmış tek exact Player ve doğrulanmış mutex karşısında **6,983 saniyede** exit 7 ile hızlı fail-closed durdu; setup içi süre yaklaşık 0,131 saniyeydi. Restart Manager, kopya ve başarı marker'ı yok; 103 kurulu dosya, iki kullanıcı dosyası, ayarlar, kayıtlar, OpenWith ve üç kısayol exact korundu. Suspend/resume 0/0, normal kapanış, force/watchdog yok ve süreç sızıntısı 0; karşıt P0/P1=0 (`EV-20260828-011`). Bu PASS yalnız fast-fail senaryosudur; exact ABBB normal install/upgrade/uninstall B2 zincirinin yerine geçmez. - Resmî B2 metnindeki eski “Player'ı Restart Manager kapatır” şartı committed ABBB davranışıyla çeliştiği için regression-first hizalandı: yalnız bakım/yükseltmede `MLCPlayer-Running` mutex'i `PrepareToInstall` içinde RM'den önce denetlenir; responsive/asılı Player'da 10 saniye içinde kopya öncesi nonzero fail-closed, mesaj, değişmeyen durum ve sıfır sızıntı zorunludur. İlk kurulum etkilenmez; RM mutex dışındaki kilitler için fallback kalır. İlk hedef test kırmızı, son etki paketi **226 passed**, karşıt P0/P1/P2=0 (`EV-20260828-012`). Ürün kodu veya artifact değişmedi. - Exact `11bb2b0` ve ABBB/D4 artifact'larıyla silent fiziksel B2 zinciri immutable checkpoint resume ile tamamlandı: gerçek v0.39 seed/yükseltme, iki maintenance, iki kaldırma sırası, iki temiz durum, clean install ve final restore geçti. Final exact 103 dosya, iki uninstall kaydı, OpenWith, üç kısayol, korunmuş iki kullanıcı dosyası ve sıfır hedef süreçle `phase_passed` verdi (`EV-20260828-013`). Bu yalnız silent installed-artifact PASS'tir; `InteractiveMain` ve yeni exact Player product URL NOT_RUN kaldı. +- Ayrı onaylanan EV013 iki-belge paketi exact `8ae5fca` commit'ine bağlandı; tek ebeveyn `11bb2b0`, post-commit ağaç temiz, dal `10/0`, continuity **10 passed** ve ledger JSON geçerliydi (`EV-20260828-014`). Push veya yeni fiziksel işlem yapılmadı. - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -181,7 +182,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV013 iki-belge silent fiziksel kanıt kaydını ayrı onayla commit et; ardından `InteractiveMain` lifecycle ve yeni exact kurulu Player product-URL kapıları yalnız kendi açık senaryo onaylarıyla yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV014 iki-belge evidence-commit bağını ayrı onayla commit et; ardından `InteractiveMain` lifecycle ve yeni exact kurulu Player product-URL kapıları yalnız kendi açık senaryo onaylarıyla yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 8c0191c..63c19f8 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9770,6 +9770,39 @@ "The runner corrections are private evidence tooling, not committed product source; no commit, push, PR, merge, tag, upload or release was performed." ], "next_action": "After separate commit approval for this two-document evidence record, run InteractiveMain and the new exact installed Player product-URL gate only under their explicit scenario approvals." + }, + { + "id": "EV-20260828-014", + "recorded_at_utc": "2026-08-28T07:51:00Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "8ae5fca37492b95ae43291eb1f4f2456581f01fb", + "evidence_commit": "8ae5fca37492b95ae43291eb1f4f2456581f01fb", + "baseline_commit": "11bb2b01bf180c61d802717ead6f7a2f72558ca8", + "working_tree_state": "clean after exact commit readback and before this append-only binding record", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json" + ], + "subject": "Evidence-commit binding for exact ABBB/D4 silent B2 lifecycle", + "commands": [ + "git add -- docs/CONTINUITY.md docs/VERIFICATION_LEDGER.json; git diff --cached --check; git commit -m \"docs: record silent B2 lifecycle\"", + "git show -s --format=%H%n%P%n%s HEAD; git show --stat --oneline --decorate HEAD; git status --short --branch; git rev-list --left-right --count HEAD...origin/master", + "python -m pytest -q tests/test_continuity_regressions.py; JSON parse readback" + ], + "evidence": [ + "the separately approved two-document EV013 package committed as exact 8ae5fca37492b95ae43291eb1f4f2456581f01fb with sole parent 11bb2b01bf180c61d802717ead6f7a2f72558ca8", + "commit readback contains only docs/CONTINUITY.md and docs/VERIFICATION_LEDGER.json with 57 insertions and four deletions", + "post-commit working tree was clean, branch was ten ahead and zero behind origin/master, continuity regressions passed 10 tests and the ledger parsed as valid JSON", + "no push, PR, merge, build, installation, tag, upload or release followed the commit" + ], + "summary": "The exact installed-artifact evidence in EV013 is now immutably bound to evidence commit 8ae5fca with clean post-commit readback.", + "limitations": [ + "This deterministic binding adds no new physical product evidence and does not extend the EV013 silent scope.", + "InteractiveMain and exact installed Player product-URL gates remain NOT_RUN.", + "This EV014 append and continuity update remain uncommitted until separately approved; no push was performed." + ], + "next_action": "Request separate approval to commit this two-document evidence-commit binding; then request InteractiveMain physical lifecycle approval separately." } ] } From 4c5dbd29d47d35e65eb998976989c8ccc8734dfe Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 10:55:57 +0300 Subject: [PATCH 12/15] docs: record interactive B2 lifecycle --- docs/CONTINUITY.md | 8 +++--- docs/VERIFICATION_LEDGER.json | 50 +++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 656f1e9..3fb05e1 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -8,8 +8,8 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Güncelleme: 28 Ağustos 2026 - Kayıt hazırlanırken doğrulanan HEAD: `8ae5fca37492b95ae43291eb1f4f2456581f01fb` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `10/0`; EV014 iki-belge evidence-commit bağı uncommitted) -- Son kanıt: `EV-20260828-014` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `11/0`; EV015 iki-belge InteractiveMain kaydı uncommitted) +- Son kanıt: `EV-20260828-015` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -118,7 +118,7 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Ayrı onaylı tek fresh-runner denemesinde exact ABBB setup askıya alınmış tek exact Player ve doğrulanmış mutex karşısında **6,983 saniyede** exit 7 ile hızlı fail-closed durdu; setup içi süre yaklaşık 0,131 saniyeydi. Restart Manager, kopya ve başarı marker'ı yok; 103 kurulu dosya, iki kullanıcı dosyası, ayarlar, kayıtlar, OpenWith ve üç kısayol exact korundu. Suspend/resume 0/0, normal kapanış, force/watchdog yok ve süreç sızıntısı 0; karşıt P0/P1=0 (`EV-20260828-011`). Bu PASS yalnız fast-fail senaryosudur; exact ABBB normal install/upgrade/uninstall B2 zincirinin yerine geçmez. - Resmî B2 metnindeki eski “Player'ı Restart Manager kapatır” şartı committed ABBB davranışıyla çeliştiği için regression-first hizalandı: yalnız bakım/yükseltmede `MLCPlayer-Running` mutex'i `PrepareToInstall` içinde RM'den önce denetlenir; responsive/asılı Player'da 10 saniye içinde kopya öncesi nonzero fail-closed, mesaj, değişmeyen durum ve sıfır sızıntı zorunludur. İlk kurulum etkilenmez; RM mutex dışındaki kilitler için fallback kalır. İlk hedef test kırmızı, son etki paketi **226 passed**, karşıt P0/P1/P2=0 (`EV-20260828-012`). Ürün kodu veya artifact değişmedi. - Exact `11bb2b0` ve ABBB/D4 artifact'larıyla silent fiziksel B2 zinciri immutable checkpoint resume ile tamamlandı: gerçek v0.39 seed/yükseltme, iki maintenance, iki kaldırma sırası, iki temiz durum, clean install ve final restore geçti. Final exact 103 dosya, iki uninstall kaydı, OpenWith, üç kısayol, korunmuş iki kullanıcı dosyası ve sıfır hedef süreçle `phase_passed` verdi (`EV-20260828-013`). Bu yalnız silent installed-artifact PASS'tir; `InteractiveMain` ve yeni exact Player product URL NOT_RUN kaldı. -- Ayrı onaylanan EV013 iki-belge paketi exact `8ae5fca` commit'ine bağlandı; tek ebeveyn `11bb2b0`, post-commit ağaç temiz, dal `10/0`, continuity **10 passed** ve ledger JSON geçerliydi (`EV-20260828-014`). Push veya yeni fiziksel işlem yapılmadı. +- EV013 paketi exact `8ae5fca` commit'ine temiz post-commit readback ile bağlandı (`EV-20260828-014`). Ardından exact ABBB/D4 `InteractiveMain` zinciri silent handoff sonrasında tamamlandı: kullanıcı kontrollü ana v0.40 yükseltme, maintenance, uninstall ve clean install ile eşlik eden add-on adımları exit 0/restart No verdi; final exact 103 dosya, iki kullanıcı dosyası, iki v0.40 kayıt, OpenWith, üç kısayol ve sıfır süreçle `phase_passed` oldu (`EV-20260828-015`). Computer Use kullanılmadı; görsel düzen kabulü iddia edilmez. Yalnız yeni exact Player product URL NOT_RUN kaldı. - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -182,7 +182,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV014 iki-belge evidence-commit bağını ayrı onayla commit et; ardından `InteractiveMain` lifecycle ve yeni exact kurulu Player product-URL kapıları yalnız kendi açık senaryo onaylarıyla yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV015 iki-belge InteractiveMain kaydını ayrı onayla commit et; ardından yeni exact kurulu Player product-URL kapısı yalnız kendi açık senaryo onayıyla yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 63c19f8..790f53c 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9803,6 +9803,56 @@ "This EV014 append and continuity update remain uncommitted until separately approved; no push was performed." ], "next_action": "Request separate approval to commit this two-document evidence-commit binding; then request InteractiveMain physical lifecycle approval separately." + }, + { + "id": "EV-20260828-015", + "recorded_at_utc": "2026-08-28T07:53:55Z", + "proof_layer": "installed_artifact", + "result": "passed", + "commit": "11bb2b01bf180c61d802717ead6f7a2f72558ca8", + "baseline_commit": "11bb2b01bf180c61d802717ead6f7a2f72558ca8", + "evidence_checkout_commit": "8edd6a91fb58e647a3f1839d02894d27ae35d387", + "working_tree_state": "clean detached exact scenario checkout and clean evidence branch before the approved physical run", + "changed_files": [ + "docs/CONTINUITY.md", + "docs/VERIFICATION_LEDGER.json" + ], + "subject": "Exact ABBB/D4 InteractiveMain B2 lifecycle", + "commands": [ + "fresh private interactive root, exact silent-handoff contract, parser, unique-label, artifact identity, zero-target-process and detached 11bb2b0 clean-checkout preflight", + "separately approved elevated InteractiveMain lifecycle; user controlled the visible main-installer wizard actions without Computer Use while add-on and preparation steps remained bounded silent operations", + "read-only immutable result, all Inno logs, final snapshot digest, installed payload, registry, shortcuts, user data and live target-process readback", + "python -m pytest -q tests/test_continuity_regressions.py" + ], + "artifacts": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55945176, "sha256": "ABBB01C337535DB989E4A36D61D4362604C448323A2D27506F155C84EA48DC34"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"}, + {"name": "MLCPlayer_Setup_v0.39.exe", "size_bytes": 56329783, "sha256": "00ED3EF67DA44ADF1F4D997426636BA7642413098C66BF08FADE54DD44584915"}, + {"name": "MLCPlayer_InternetVideo_v0.39.exe", "size_bytes": 48896196, "sha256": "07F69153E498E0537F7C9446B69DB1DC36A43256142C03B91FAA0EFC16C5A491"} + ], + "private_artifact_digests": [ + {"name": "I-result.json", "size_bytes": 6503, "sha256": "0ED90D3D9B0B9117C592D71B98BF69A919EDCADDD76B3CC6CAF00A4D702423A4"}, + {"name": "I-19-interactive-final-restored.json", "size_bytes": 32638, "sha256": "684071C0E2E0B509B3F3EF49457203D15785D1C75857D6BAC2F2565D597C41B7"}, + {"name": "run_b2_lifecycle.ps1", "size_bytes": 29727, "sha256": "14A78E2C19B4F143EBFDB99957C7E0DED9678A49EF9656466029C0180D6FAAA0"}, + {"name": "test_interactive_contract.ps1", "size_bytes": 4546, "sha256": "517F28D1C0628B42908CBD58D310A3A97E022FB0FBF4F777024A09B5C5317C63"}, + {"name": "launch_interactive.ps1", "size_bytes": 1458, "sha256": "2AF4CA03745332144824CB0CA54435AB74D53B12E882B22A8034CD1019F46156"} + ], + "evidence": [ + "the exact EV013 silent phase result and final snapshot passed the actual handoff function before any interactive mutation; the scenario checkout was detached at exact clean 11bb2b0 and both ABBB/D4 artifact hashes matched", + "the 102.695-second run completed 20 checkpoints including real v0.39 seed, human-controlled v0.40 main upgrade, same-version maintenance, interactive main uninstall and interactive clean install; paired add-on operations also completed", + "every setup and uninstaller returned exit 0; all twelve logs contained the applicable installation or uninstallation success marker, explicit restart No and Log closed", + "the immutable result is phase_passed, binds final snapshot SHA-256 684071C0E2E0B509B3F3EF49457203D15785D1C75857D6BAC2F2565D597C41B7 and leaves only the new exact installed Player product-URL gate", + "final readback contains exact 103 installed files, two preserved user files, v0.40 main and add-on registrations, OpenWith, three shortcuts and zero snapshot or live target processes", + "Computer Use was not used; no automated visual-content or injected-input claim is made" + ], + "summary": "The exact ABBB/D4 artifacts passed the bounded InteractiveMain install, v0.39 upgrade, maintenance, uninstall and final-restore lifecycle with user-controlled wizard actions, exact final state and zero process leakage.", + "limitations": [ + "This installed-artifact PASS is bound to the exact artifacts, 11bb2b0 scenario checkout, measured host and retained private evidence.", + "No screenshots or independent visual-layout acceptance were captured; the claim is limited to completed human-controlled actions plus installer and exact-state evidence.", + "The new exact installed Player product-URL scenario remains NOT_RUN, so complete B2, tag and release remain blocked.", + "This EV015 record is uncommitted until separately approved; no push, PR, merge, tag, upload or release was performed." + ], + "next_action": "Request separate approval to commit this two-document InteractiveMain record; then request the exact installed Player product-URL scenario separately." } ] } From fd7fbdc80cd3ac49d562a54bd5216ed8661b204b Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 10:57:30 +0300 Subject: [PATCH 13/15] docs: bind interactive B2 evidence commit --- docs/CONTINUITY.md | 10 +++++----- docs/VERIFICATION_LEDGER.json | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index 3fb05e1..d8ab48b 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `8ae5fca37492b95ae43291eb1f4f2456581f01fb` +- Kayıt hazırlanırken doğrulanan HEAD: `4c5dbd29d47d35e65eb998976989c8ccc8734dfe` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `11/0`; EV015 iki-belge InteractiveMain kaydı uncommitted) -- Son kanıt: `EV-20260828-015` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `12/0`; EV016 iki-belge evidence-commit bağı uncommitted) +- Son kanıt: `EV-20260828-016` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -118,7 +118,7 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Ayrı onaylı tek fresh-runner denemesinde exact ABBB setup askıya alınmış tek exact Player ve doğrulanmış mutex karşısında **6,983 saniyede** exit 7 ile hızlı fail-closed durdu; setup içi süre yaklaşık 0,131 saniyeydi. Restart Manager, kopya ve başarı marker'ı yok; 103 kurulu dosya, iki kullanıcı dosyası, ayarlar, kayıtlar, OpenWith ve üç kısayol exact korundu. Suspend/resume 0/0, normal kapanış, force/watchdog yok ve süreç sızıntısı 0; karşıt P0/P1=0 (`EV-20260828-011`). Bu PASS yalnız fast-fail senaryosudur; exact ABBB normal install/upgrade/uninstall B2 zincirinin yerine geçmez. - Resmî B2 metnindeki eski “Player'ı Restart Manager kapatır” şartı committed ABBB davranışıyla çeliştiği için regression-first hizalandı: yalnız bakım/yükseltmede `MLCPlayer-Running` mutex'i `PrepareToInstall` içinde RM'den önce denetlenir; responsive/asılı Player'da 10 saniye içinde kopya öncesi nonzero fail-closed, mesaj, değişmeyen durum ve sıfır sızıntı zorunludur. İlk kurulum etkilenmez; RM mutex dışındaki kilitler için fallback kalır. İlk hedef test kırmızı, son etki paketi **226 passed**, karşıt P0/P1/P2=0 (`EV-20260828-012`). Ürün kodu veya artifact değişmedi. - Exact `11bb2b0` ve ABBB/D4 artifact'larıyla silent fiziksel B2 zinciri immutable checkpoint resume ile tamamlandı: gerçek v0.39 seed/yükseltme, iki maintenance, iki kaldırma sırası, iki temiz durum, clean install ve final restore geçti. Final exact 103 dosya, iki uninstall kaydı, OpenWith, üç kısayol, korunmuş iki kullanıcı dosyası ve sıfır hedef süreçle `phase_passed` verdi (`EV-20260828-013`). Bu yalnız silent installed-artifact PASS'tir; `InteractiveMain` ve yeni exact Player product URL NOT_RUN kaldı. -- EV013 paketi exact `8ae5fca` commit'ine temiz post-commit readback ile bağlandı (`EV-20260828-014`). Ardından exact ABBB/D4 `InteractiveMain` zinciri silent handoff sonrasında tamamlandı: kullanıcı kontrollü ana v0.40 yükseltme, maintenance, uninstall ve clean install ile eşlik eden add-on adımları exit 0/restart No verdi; final exact 103 dosya, iki kullanıcı dosyası, iki v0.40 kayıt, OpenWith, üç kısayol ve sıfır süreçle `phase_passed` oldu (`EV-20260828-015`). Computer Use kullanılmadı; görsel düzen kabulü iddia edilmez. Yalnız yeni exact Player product URL NOT_RUN kaldı. +- EV013 paketi exact `8ae5fca` commit'ine bağlandı (`EV-20260828-014`). Ardından exact ABBB/D4 `InteractiveMain` zinciri kullanıcı kontrollü ana yükseltme/maintenance/uninstall/clean install ve eşlik eden add-on adımlarıyla exit 0/restart No, final exact 103+2 durum ve sıfır süreç verdi (`EV-20260828-015`); kayıt exact `4c5dbd2` commit'ine temiz readback ile bağlandı (`EV-20260828-016`). Computer Use kullanılmadı; görsel düzen kabulü iddia edilmez. Yalnız yeni exact Player product URL NOT_RUN kaldı. - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -182,7 +182,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV015 iki-belge InteractiveMain kaydını ayrı onayla commit et; ardından yeni exact kurulu Player product-URL kapısı yalnız kendi açık senaryo onayıyla yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV016 iki-belge evidence-commit bağını ayrı onayla commit et; ardından yeni exact kurulu Player product-URL kapısı yalnız kendi açık senaryo onayıyla yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 790f53c..8cc3d9d 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9853,6 +9853,36 @@ "This EV015 record is uncommitted until separately approved; no push, PR, merge, tag, upload or release was performed." ], "next_action": "Request separate approval to commit this two-document InteractiveMain record; then request the exact installed Player product-URL scenario separately." + }, + { + "id": "EV-20260828-016", + "recorded_at_utc": "2026-08-28T07:58:00Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "4c5dbd29d47d35e65eb998976989c8ccc8734dfe", + "evidence_commit": "4c5dbd29d47d35e65eb998976989c8ccc8734dfe", + "baseline_commit": "8edd6a91fb58e647a3f1839d02894d27ae35d387", + "working_tree_state": "clean after exact commit readback and before this append-only binding record", + "changed_files": ["docs/CONTINUITY.md", "docs/VERIFICATION_LEDGER.json"], + "subject": "Evidence-commit binding for exact InteractiveMain B2 lifecycle", + "commands": [ + "git add -- docs/CONTINUITY.md docs/VERIFICATION_LEDGER.json; git diff --cached --check; git commit -m \"docs: record interactive B2 lifecycle\"", + "git show -s --format=%H%n%P%n%s HEAD; git show --stat --oneline HEAD; git status --short --branch; git rev-list --left-right --count HEAD...origin/master", + "python -m pytest -q tests/test_continuity_regressions.py; JSON parse readback" + ], + "evidence": [ + "the separately approved EV015 two-document package committed as exact 4c5dbd29d47d35e65eb998976989c8ccc8734dfe with sole parent 8edd6a91fb58e647a3f1839d02894d27ae35d387", + "commit readback contains only docs/CONTINUITY.md and docs/VERIFICATION_LEDGER.json with 54 insertions and four deletions", + "post-commit working tree was clean, branch was twelve ahead and zero behind origin/master, continuity regressions passed 10 tests and the ledger parsed as valid JSON", + "no push, PR, merge, build, installation, tag, upload or release followed the commit" + ], + "summary": "The exact InteractiveMain installed-artifact evidence in EV015 is immutably bound to evidence commit 4c5dbd2 with clean post-commit readback.", + "limitations": [ + "This deterministic binding adds no new physical product evidence and does not extend EV015.", + "The exact installed Player product-URL gate remains NOT_RUN.", + "This EV016 append and continuity update remain uncommitted until separately approved; no push was performed." + ], + "next_action": "Request separate approval to commit this two-document evidence-commit binding; then request the exact installed Player product-URL scenario separately." } ] } From abdf71c8229eb6f12f9e52b6d982f1073f17641f Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 11:08:55 +0300 Subject: [PATCH 14/15] docs: record product URL B2 closure --- docs/CONTINUITY.md | 8 +++--- docs/VERIFICATION_LEDGER.json | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index d8ab48b..c844173 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -8,8 +8,8 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Güncelleme: 28 Ağustos 2026 - Kayıt hazırlanırken doğrulanan HEAD: `4c5dbd29d47d35e65eb998976989c8ccc8734dfe` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `12/0`; EV016 iki-belge evidence-commit bağı uncommitted) -- Son kanıt: `EV-20260828-016` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `13/0`; EV017 iki-belge ürün-URL kaydı uncommitted) +- Son kanıt: `EV-20260828-017` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -118,7 +118,7 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi - Ayrı onaylı tek fresh-runner denemesinde exact ABBB setup askıya alınmış tek exact Player ve doğrulanmış mutex karşısında **6,983 saniyede** exit 7 ile hızlı fail-closed durdu; setup içi süre yaklaşık 0,131 saniyeydi. Restart Manager, kopya ve başarı marker'ı yok; 103 kurulu dosya, iki kullanıcı dosyası, ayarlar, kayıtlar, OpenWith ve üç kısayol exact korundu. Suspend/resume 0/0, normal kapanış, force/watchdog yok ve süreç sızıntısı 0; karşıt P0/P1=0 (`EV-20260828-011`). Bu PASS yalnız fast-fail senaryosudur; exact ABBB normal install/upgrade/uninstall B2 zincirinin yerine geçmez. - Resmî B2 metnindeki eski “Player'ı Restart Manager kapatır” şartı committed ABBB davranışıyla çeliştiği için regression-first hizalandı: yalnız bakım/yükseltmede `MLCPlayer-Running` mutex'i `PrepareToInstall` içinde RM'den önce denetlenir; responsive/asılı Player'da 10 saniye içinde kopya öncesi nonzero fail-closed, mesaj, değişmeyen durum ve sıfır sızıntı zorunludur. İlk kurulum etkilenmez; RM mutex dışındaki kilitler için fallback kalır. İlk hedef test kırmızı, son etki paketi **226 passed**, karşıt P0/P1/P2=0 (`EV-20260828-012`). Ürün kodu veya artifact değişmedi. - Exact `11bb2b0` ve ABBB/D4 artifact'larıyla silent fiziksel B2 zinciri immutable checkpoint resume ile tamamlandı: gerçek v0.39 seed/yükseltme, iki maintenance, iki kaldırma sırası, iki temiz durum, clean install ve final restore geçti. Final exact 103 dosya, iki uninstall kaydı, OpenWith, üç kısayol, korunmuş iki kullanıcı dosyası ve sıfır hedef süreçle `phase_passed` verdi (`EV-20260828-013`). Bu yalnız silent installed-artifact PASS'tir; `InteractiveMain` ve yeni exact Player product URL NOT_RUN kaldı. -- EV013 paketi exact `8ae5fca` commit'ine bağlandı (`EV-20260828-014`). Ardından exact ABBB/D4 `InteractiveMain` zinciri kullanıcı kontrollü ana yükseltme/maintenance/uninstall/clean install ve eşlik eden add-on adımlarıyla exit 0/restart No, final exact 103+2 durum ve sıfır süreç verdi (`EV-20260828-015`); kayıt exact `4c5dbd2` commit'ine temiz readback ile bağlandı (`EV-20260828-016`). Computer Use kullanılmadı; görsel düzen kabulü iddia edilmez. Yalnız yeni exact Player product URL NOT_RUN kaldı. +- EV013 paketi exact `8ae5fca` commit'ine bağlandı (`EV-20260828-014`). Exact ABBB/D4 `InteractiveMain` zinciri final 103+2 durum ve sıfır süreç verdi (`EV-20260828-015`); kayıt exact `4c5dbd2` commit'ine bağlandı (`EV-20260828-016`). Son exact Player ürün-URL kapısında Player PID 37340 exact kurulu yt-dlp root 54132 ve child 41648'i aynı URL ile başlattı; Deno gerekmedi, kullanıcı oynatmayı “SORUN YOK” diye kabul etti, normal kapanış sonrası 103+2 durum ve sıfır süreç korundu (`EV-20260828-017`). Sayısal position/duration kullanıcı tarafından yazıya geçirilmedi ve bu sınır açıkça kayıtlıdır; Computer Use kullanılmadı. Exact ABBB/D4 B2 ürün kapıları tamamlandı. - `WIN-P0-03` ilk native koşumu exact `06cebc4` üzerinde fixture kapısını geçtikten sonra QMenu sınırında TIMEOUT oldu; exit 1 ve eksik final marker nedeniyle **FAILED** kaydedildi, seçim/ürün bug'ı iddia edilmedi @@ -182,7 +182,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV016 iki-belge evidence-commit bağını ayrı onayla commit et; ardından yeni exact kurulu Player product-URL kapısı yalnız kendi açık senaryo onayıyla yürütülür. `P0-06`–`08` yayın sonrası; thumbnail cache politikası ürün kararıdır. +EV017 iki-belge ürün-URL/B2 kapanış kaydını ayrı onayla commit et. Push/PR/merge/tag/release ayrı kapılardır; `P0-06`–`08` yayın sonrası, thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 8cc3d9d..4fae68f 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9883,6 +9883,52 @@ "This EV016 append and continuity update remain uncommitted until separately approved; no push was performed." ], "next_action": "Request separate approval to commit this two-document evidence-commit binding; then request the exact installed Player product-URL scenario separately." + }, + { + "id": "EV-20260828-017", + "recorded_at_utc": "2026-08-28T08:08:00Z", + "proof_layer": "installed_artifact", + "result": "passed", + "commit": "11bb2b01bf180c61d802717ead6f7a2f72558ca8", + "baseline_commit": "11bb2b01bf180c61d802717ead6f7a2f72558ca8", + "evidence_checkout_commit": "fd7fbdc80cd3ac49d562a54bd5216ed8661b204b", + "working_tree_state": "clean detached exact scenario checkout and clean evidence branch before the separately approved physical product-URL run", + "changed_files": ["docs/CONTINUITY.md", "docs/VERIFICATION_LEDGER.json"], + "subject": "Exact installed Player product-URL B2 gate and final restore", + "commands": [ + "fresh private create-only watcher preflight: 14 assertions, exact clean 11bb2b0 checkout, exact artifact/runtime identities and zero initial target processes", + "separately approved visible installed Player run; user manually opened https://www.youtube.com/watch?v=aqz-KE-bpKQ without Computer Use while the watcher recorded exact process identity, PID, parent and command-line transitions", + "read-only recovery after the post-observation watcher hash sharing violation; no physical retry, normal Player close, immutable final snapshot and live zero-process readback", + "python -m pytest -q tests/test_continuity_regressions.py" + ], + "artifacts": [ + {"name": "MLCPlayer_Setup_v0.40.exe", "size_bytes": 55945176, "sha256": "ABBB01C337535DB989E4A36D61D4362604C448323A2D27506F155C84EA48DC34"}, + {"name": "MLCPlayer_InternetVideo_v0.40.exe", "size_bytes": 48909126, "sha256": "D4A4D79995B23228231B8D16091AB85D4805862FDBDDEC415842CE9DFDF9E675"}, + {"name": "MLC Player.exe", "size_bytes": 3133269, "sha256": "82F77C0FBDAC0655B91534E33EED15F60A6D8ADA930854EF96BDB79396BBCA03"}, + {"name": "yt-dlp.exe", "size_bytes": 17840399, "sha256": "66674953FE251B89F4D08C5F0E35E0728679BD67AB3D7D05C0562AF101DD3E7A"}, + {"name": "deno.exe", "size_bytes": 97408288, "sha256": "98F8C2A2D470E4CCB04C935C86FF8050817D877762AEC5EAEEB9E409CCB3B9FD"} + ], + "private_artifact_digests": [ + {"name": "P-result.json", "size_bytes": 1016, "sha256": "88B38B3B6B88BFF18990315124F89288E46018E61BB36642AF5186A3B8375AFC"}, + {"name": "P-events.jsonl", "size_bytes": 3323, "sha256": "486C0F49F91204BDDB8B2878EE17536A52A139650452429632EEBE76B9A10A68"}, + {"name": "P-00-pre.json", "size_bytes": 32444, "sha256": "73D65386F4B7CCD297E41F77A04E67B05713B78B333D96F2EB9228E8DBD5E2DF"}, + {"name": "P-01-final.json", "size_bytes": 32444, "sha256": "3939A2FCF6A9A513F8CB7BF52729E9C04AF6324B393B2AF4D05810DCB6A20920"} + ], + "evidence": [ + "the exact installed Player PID 37340 started exact installed yt-dlp root PID 54132, which started same-path child PID 41648; both command lines contained the exact requested Blender URL", + "Deno was not observed and was not artificially launched; the acceptance contract permits absence when extraction does not require it", + "the user explicitly answered SORUN YOK to the requested visible playback check; this is recorded as successful/progressing human playback acceptance without inventing numeric position or duration values", + "the watcher completed physical observation but failed only while hashing its still-open event file; root cause was inspected, the writer-disposal order was repaired and the already immutable events were recovered without repeating the physical scenario", + "Player closed through CloseMainWindow without force; final snapshot retained exact 103 installed files, two user files and zero target processes" + ], + "summary": "The last exact ABBB/D4 B2 product gate passed with Player-owned exact yt-dlp root/child URL correlation, explicit user playback acceptance, normal close, unchanged final state and zero leakage.", + "limitations": [ + "The user confirmed successful/progressing playback qualitatively but did not transcribe numeric position/duration values; the record does not claim such numeric samples.", + "This PASS is bound to exact 11bb2b0, ABBB/D4 artifacts, installed runtime hashes, the requested URL, measured host and retained private evidence.", + "No Computer Use, build, installation, uninstall, push, PR, merge, tag, upload or release was performed in this gate.", + "This EV017 record remains uncommitted until separately approved." + ], + "next_action": "Request separate approval to commit this two-document EV017 B2 closure; keep push, PR, merge, tag and release separately gated." } ] } From 0a4f34cf601961a2d9c8fe361241ed82562f5f1c Mon Sep 17 00:00:00 2001 From: IzzmooPro Date: Fri, 28 Aug 2026 11:10:57 +0300 Subject: [PATCH 15/15] docs: bind product URL B2 evidence --- docs/CONTINUITY.md | 8 ++++---- docs/VERIFICATION_LEDGER.json | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/docs/CONTINUITY.md b/docs/CONTINUITY.md index c844173..be6c002 100644 --- a/docs/CONTINUITY.md +++ b/docs/CONTINUITY.md @@ -6,10 +6,10 @@ Bu dosya projenin tek canlı devir noktasıdır. Tarihsel continuity kronolojisi `ROADMAP.md` ve `ENGINEERING_AUDIT.md` içindedir. - Güncelleme: 28 Ağustos 2026 -- Kayıt hazırlanırken doğrulanan HEAD: `4c5dbd29d47d35e65eb998976989c8ccc8734dfe` +- Kayıt hazırlanırken doğrulanan HEAD: `abdf71c8229eb6f12f9e52b6d982f1073f17641f` - Güncel HEAD/origin farkı her oturumda `git rev-list --left-right --count` ile ölçülür; bu belge kendi commit hash'ini tahmin etmez. -- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `13/0`; EV017 iki-belge ürün-URL kaydı uncommitted) -- Son kanıt: `EV-20260828-017` +- Dal: `codex/v040-b2-process-contract` (`origin/master` ile `14/0`; EV018 iki-belge evidence-commit bağı uncommitted) +- Son kanıt: `EV-20260828-018` - Yayın kararı: **v0.39 canlı/latest; 87 varlık eş, public indirme/kurulum/açılış/medya kabulü geçti.** ## Canlı ürün ve yayın durumu @@ -182,7 +182,7 @@ merge/parent/run/`0/0` readback'ini sonraki gerçek kayıt provenance'ına bağl ## Sıradaki tek adım -EV017 iki-belge ürün-URL/B2 kapanış kaydını ayrı onayla commit et. Push/PR/merge/tag/release ayrı kapılardır; `P0-06`–`08` yayın sonrası, thumbnail cache politikası ürün kararıdır. +EV018 iki-belge evidence-commit bağını ayrı onayla commit et. Push/PR/merge/tag/release ayrı kapılardır; `P0-06`–`08` yayın sonrası, thumbnail cache politikası ürün kararıdır. ## Dokunulmayacaklar ve ayrı onaylar diff --git a/docs/VERIFICATION_LEDGER.json b/docs/VERIFICATION_LEDGER.json index 4fae68f..f547ebd 100644 --- a/docs/VERIFICATION_LEDGER.json +++ b/docs/VERIFICATION_LEDGER.json @@ -9929,6 +9929,36 @@ "This EV017 record remains uncommitted until separately approved." ], "next_action": "Request separate approval to commit this two-document EV017 B2 closure; keep push, PR, merge, tag and release separately gated." + }, + { + "id": "EV-20260828-018", + "recorded_at_utc": "2026-08-28T08:11:00Z", + "proof_layer": "deterministic", + "result": "passed", + "commit": "abdf71c8229eb6f12f9e52b6d982f1073f17641f", + "evidence_commit": "abdf71c8229eb6f12f9e52b6d982f1073f17641f", + "baseline_commit": "fd7fbdc80cd3ac49d562a54bd5216ed8661b204b", + "working_tree_state": "clean after exact EV017 commit readback and before this append-only binding record", + "changed_files": ["docs/CONTINUITY.md", "docs/VERIFICATION_LEDGER.json"], + "subject": "Evidence-commit binding for exact product-URL B2 closure", + "commands": [ + "git add -- docs/CONTINUITY.md docs/VERIFICATION_LEDGER.json; git diff --cached --check; git commit -m \"docs: record product URL B2 closure\"", + "git show -s --format=%H%n%P%n%s HEAD; git show --stat --oneline HEAD; git diff-tree --no-commit-id --name-only -r HEAD", + "python -m pytest -q tests/test_continuity_regressions.py; JSON EV017 readback; git status --porcelain=v1; git rev-list --left-right --count HEAD...origin/master" + ], + "evidence": [ + "the separately approved EV017 two-document package committed as exact abdf71c8229eb6f12f9e52b6d982f1073f17641f with sole parent fd7fbdc80cd3ac49d562a54bd5216ed8661b204b", + "commit readback contains only docs/CONTINUITY.md and docs/VERIFICATION_LEDGER.json with 50 insertions and four deletions", + "post-commit working tree was clean, branch was fourteen ahead and zero behind origin/master, continuity regressions passed 10 tests and EV017 parsed as the final ledger entry", + "no push, PR, merge, build, installation, uninstall, tag, upload or release followed the commit" + ], + "summary": "The exact product-URL installed-artifact evidence in EV017 and completed ABBB/D4 B2 closure are immutably bound to evidence commit abdf71c with clean post-commit readback.", + "limitations": [ + "This deterministic binding adds no new physical product evidence and does not extend EV017.", + "The numeric position/duration transcription limitation stated in EV017 remains unchanged.", + "This EV018 append and continuity update remain uncommitted until separately approved; no push was performed." + ], + "next_action": "Request separate approval to commit this terminal two-document evidence-commit binding; keep push, PR, merge, tag and release separately gated." } ] }