From 1c66f97dab74cf6c839c538e02594e6b5b37a493 Mon Sep 17 00:00:00 2001 From: Alperen Date: Thu, 6 Aug 2026 01:00:51 +0300 Subject: [PATCH 1/5] =?UTF-8?q?docs(master):=20W3B2=20admission=20?= =?UTF-8?q?=E2=80=94=20Darwin=20dilim-2=20receipt=20aktif,=203347=20READY?= =?UTF-8?q?=20(tren=202026-08-06-b)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/MASTER-PLAN.md | 3 ++- docs/generated/master-plan-active.json | 31 +++++++++++++++++--------- docs/generated/master-plan-active.md | 8 +++---- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/docs/MASTER-PLAN.md b/docs/MASTER-PLAN.md index b82ac96cb..95899c1ce 100644 --- a/docs/MASTER-PLAN.md +++ b/docs/MASTER-PLAN.md @@ -314,6 +314,7 @@ Current receipt register: | `GR-2026-08-05-CI-RATCHET-519-01` | CI-DOCS-SCRIPTS-RATCHET-TIMEOUT-001 | G1 | `tests/scripts/test-containment-inventory-ratchet.test.ts@991d9b0e4c7a784610ecb89a949f18c9a51b832e6f157f34ddf54c8184868831`; 519 fix'i: 60s test-timeout'u ölçüm-temelli 180s'e çekilir (lokal build-free 48.9s; CI runner çarpanı ~2-3x) | owner=Alperen; decision=APPROVED; scope=exact one-path measured timeout raise; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T13:03:09Z | `ONE_SHOT`: consumed@2026-08-05T13:31:54Z | | `GR-2026-08-05-EXEC-AUTH-W3B1-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `src/core/file-lock.ts@dbc321feb2c441dc50b1a31b409aec938baa4374c8a39450f75b15e05ab9638d`; `scripts/clean.mjs@1c63b2b18d016a413e5ff5e90288f844fe5da10fb93e4132799650325ba4a532`; `tests/core/execution-authority-adapter-parity.test.ts@16760f78c7be6748ce5b9ac37c3db55dfff94df11340f092fe12228e75daaedf`; W3-PR-B dilim-1 (tasarım §10): op-tabanlı ExecutionAuthorityOpsV2 arayüzü (openDirAt/readdirOf/unlinkAt/renameAt/identityOf/realPathOf) file-lock'ta tanımlanır ve Linux impl'i mevcut /proc mekaniğiyle doldurulur; pinExecutionLockDirectories'in doğrudan open/stat işlemleri op-çağrılarına taşınır (Linux bayt-eşdeğer); clean.mjs ikizi aynı v2 şekline; parite testi v2 yüzeyini kapsar; Darwin impl'i + F_GETPATH + gerçek-Mac kanıt dilim-2/3 işi | owner=Alperen; decision=APPROVED; scope=exact three-path ops-v2 interface and linux migration; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T13:39:02Z | `ONE_SHOT`: consumed@2026-08-05T13:47:19Z | | `GR-2026-08-05-STATS-HERM-521-01` | CI-STATS-HERMETIC-001 | G1 | `scripts/update-readme-stats.mjs@e903538b116be362817216a81026b174e2a99833c6b5be0db7df6b54b76f9e51`; `tests/scripts/update-readme-stats.test.ts@08baa76976e2fdd639600ead094060dfe604cf2578192d8e7996302dbb8157aa`; `package.json@a3198253bf5c898080ee3c33a22afff18a21281e541ee094f4df3985c7a5a43a`; `README.md@d65cd7d13b2fe67b6cd8016c3eabc5a5e5d153a685d437543863009e776a15be`; `README.tr.md@e9ce5ac801a76d5e2f4c3f72143ac6c7a876884d6c2ad88add4c7f48227708ad`; `.deckent/workspace/IDENTITY.md@9f1341b0f390f7d7f56390d448b679d266270a5ed7b7235d6621262e4d996ed1`; `scripts/lint-test-hermeticity.mjs@8ea171a3045ab421de6884cea52d26dc7de075834606fac3a9a432bd268de6d7`; stats-hermetiklik yeniden-tasarımı (Alperen onayı): volatil rozet girdileri (sprint, coverage) yeni izlenen snapshot dosyasından (.deckent/workspace/stats-snapshot.json — yeni dosya, pin'siz) okunur; check ve write modları yalnız izlenen dosyaların fonksiyonu olur (temiz checkout deterministik); bilinçli güncelleme yeni refresh-snapshot moduyla yapılır (sprint monotonik; coverage yalnız açık with-coverage bayrağıyla artifact'tan alınır, aksi halde mevcut değer korunur); README/README.tr/IDENTITY regen bu snapshot'la; hermeticity baseline'ları test-değişimine göre tazelenir | owner=Alperen; decision=APPROVED; scope=exact seven-path stats snapshot hermeticity redesign plus new tracked snapshot file; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T21:26:31Z | `ONE_SHOT`: consumed@2026-08-05T21:45:51Z | +| `GR-2026-08-05-EXEC-AUTH-W3B2-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `native/exec-authority/src/exec_authority.c@df4b53a6e1d3dd45c84c9e3d0c055f4b0e4ff6fc28e08a86fe3bf5ca221c7571`; `tests/native/exec-authority-native.test.ts@4404eb93bbe7467b5ad7f99d9ec0ca171ceb6f32bf7dd5810f1e7e4f18d8e769`; `src/core/file-lock.ts@1fdac4cec0cf71e93d864648381ed618a9de483e38e5fbadd516373a3725c813`; `tests/core/execution-authority-adapter-parity.test.ts@3796de5c29fefebc4704e86db7f8d7bf7f0083a63e5be2f9369d31bce663b23c`; `.github/workflows/cross-platform-e2e.yml@0c0b7bb45ffebf23fbaef6acb28235876d42fc53530fb6f1f3df5dc811278061`; `scripts/lint-test-hermeticity.mjs@9038d3694492033bbd7767e57e3c57a2fac8dbf5a61edcee1adf473819f3a8d4`; `docs/analysis/platform-execution-authority-adapters-2026-08-05.md@3a79e65cc7d288005e7007ad7620fd1d065c94f44211b73edc4ccb691f545f72`; W3-PR-B dilim-2 (tasarım §10 adım-1'in Darwin yarısı): native addon'a tek yeni primitif fdPath (Darwin F_GETPATH, diğer POSIX'te /proc readlink — POSIX-portable, Linux CI'da test edilir); file-lock'ta darwinNativeExecutionAuthorityOpsV2 (ops-v2 yüzeyinin addon-tabanlı Darwin impl'i; binding yokluğu typed secure-open-unsupported, asla sessiz fallback) + platform-çözümlü ops-v2 resolver (classify tipi darwin'i kapsar, Linux yolu bayt-eşdeğer); parite testi Linux'ta native-vs-proc davranış paritesini, macos native job'ında gerçek-Darwin ops yaşam-döngüsünü koşar; workflow native job'ına parite dosyası eklenir; konsumer migrasyonu, clean.mjs twin'i ve gerçek-Mac real-binary clean/lock kanıtı dilim-3 işi; hermeticity baseline'ları test-değişimine göre tazelenir; tasarım-doku §10 dilim-kaydıyla güncellenir | owner=Alperen; decision=APPROVED; scope=exact seven-path darwin ops-v2 native implementation with dual-platform proof; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T22:00:11Z | `ONE_SHOT`: active | ### 3.5 Typed blocker register @@ -833,7 +834,7 @@ specification'ını execute eder. Legacy provider adapter'ının varlığı PAEP | 3344 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001 | KERNEL-001 | KERNEL | ExecutionAuthorityPlatformAdapter arayüz-çıkarımı: file-lock.ts Linux impl'i davranış-değişimsiz adapter arkasına, clean.mjs ikiz-parite kontrat testi, cross-verify-evidence-broker /proc taraması | P1 | — | G1 | DONE | 1/1/1/1/-/-/- | Linux yolu bayt-eşdeğer davranışta kalır (mevcut lock+clean suite'leri yeşil); adapter arayüzü 4-yetenek ayrıştırmasını (fd-traversal/mount-pin/host-boot-id/liveness) tipler; clean.mjs ikizi parite-testiyle sabitlenir | Açılış 2026-08-05: D1-D3 onayı (Alperen); tasarım: docs/analysis/platform-execution-authority-adapters-2026-08-05.md §5 W1; `receipt=GR-2026-08-05-EXEC-AUTH-W1-01`; 2026-08-05 SETTLEMENT (b7ed80cb1): tipli 4-yetenek arayüzü + linuxProcExecutionAuthorityAdapter (file-lock) + cleanExecutionAuthorityAdapter ikizi + ikiz-parite kontrat testi 5/5 (aynı gerçek fd için birebir dev+ino+mountId); stable-path literal'leri adapter üzerinden; broker taraması: cross-verify-evidence-broker zaten tipli UNSUPPORTED_PLATFORM kapılı, W3 üçüncü-tüketici adayı; `proof=lock-clean-parity-suites-205of206-green`; Linux bayt-eşdeğerlik: lock+clean+fence 205/206, tsc temiz, hermetic build-free; 2026-08-05 DONE: Alperen 'w3 başlat' direktifi (zincir-ilerletme onayı — W3 READY'si deps-DONE ister) | 2026-08-05 | | 3345 | COMPOSITE-WORKER-001 | KERNEL-001 | KERNEL | Composite worker / nested team delegasyon kontratı: parent-child execution, authority tavanı, bütçe tavanı, concurrency limiti, completion/failure policy ve nested evidence tree | P1 | KERNEL-ATTEMPT-001 | G2 | OPEN | 0/0/0/?/0/?/? | Owner G2 tasarım kararı: delegated objective + authority_ceiling + budget_ceiling + allowed_runtimes + completion_contract + failure_policy + evidence_requirement alanları tiplenir; delegasyon yetkiyi yalnız daraltır, asla genişletmez; recursive bütçe/authority çift-harcaması imkânsız olur; dış orchestrator'lar (AutoGen nested Team, AG2 network sınıfı) bu kontratın altında composite worker olarak modellenir | Açılış: Alperen 2026-08-04 reconciliation onayı. Tetikleyici: 2026-07-30 rekabet günlüğü — AutoGen nested Teams (Team içinde Team) ve AG2 v1 network yapıları "runner içinde runner" modelini standartlaştırıyor; ledger'da recursive delegasyon kontratı karşılığı yok (KERNEL-ATTEMPT-001 tek-seviye claim/lease/fencing taşıyor; GRACEFUL-BUDGET-LANDING→BUDGET-CONTINUATION-001 landing'i kapsıyor, delegasyonu kapsamıyor) | 2026-08-04 | | 3346 | PLATFORM-EXEC-AUTH-W2-PROBE-001 | KERNEL-001 | KERNEL | macOS+Windows capability-probe CI job'ı: /dev/fd dizin-traversal semantiği, POSIX-delete uygunluğu, FileIndex/VolumeSerial kararlılığı gerçek runner'da ölçülür ve evidence-artifact olarak yayımlanır | P1 | — | G1 | DONE | 1/1/1/1/1/1/- | Probe job'ı required-değildir ve ürün davranışını değiştirmez; her platform için ölçüm JSON artifact'ı üretir; W3/W4 tasarım kilidi bu kanıtla atılır | Açılış 2026-08-05: D1-D3 onayı (Alperen); tasarım: docs/analysis/platform-execution-authority-adapters-2026-08-05.md §5 W2; `receipt=GR-2026-08-05-EXEC-AUTH-W2-01`; 2026-08-05 SETTLEMENT (PR #57 run 30991850136, 3/3 probe pass): GERÇEK-RUNNER ÖLÇÜMLERİ — darwin-arm64 (`5566df23b8e1deb6…`): /dev/fd dizin-traversal ÇALIŞMIYOR (readdir ENOTDIR, child ENOENT, identity mismatch) → W3 Darwin için native openat-ailesi TEK yol, D1 ölçümle doğrulandı; POSIX-delete+dev/ino-kararlılık+O_NOFOLLOW/O_DIRECTORY+kern.uuid/boottime hepsi supported; win32-x64 (`0e988567fd93477f…`): POSIX-delete SUPPORTED (D2 tabanı doğrulandı), VolumeSerial+FileIndex rename/reopen kararlı ve non-zero, MachineGuid supported; O_NOFOLLOW/O_DIRECTORY Node-sabitleri 0 → W4 secure-open kontratı native handle-flag eşdeğerleriyle kurulacak; linux-x64 referans (`6f2ad5bf7de0f009…`): tam-destek beklendiği gibi; `proof=real-runner-capability-probe-3platforms-run30991850136`; artifact'lar 30 gün retention'lı, digest'ler tam-SHA256'nın ilk 16'sı — tam değerler run-artifact'larında; 2026-08-05 DONE: Alperen 'w3 başlat' direktifi (zincir-ilerletme onayı) | 2026-08-05 | -| 3347 | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | KERNEL-001 | KERNEL | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | P1 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001, PLATFORM-EXEC-AUTH-W2-PROBE-001 | G1 | OPEN | 1/0/0/?/0/?/? | Addon yalnız probe-doğrulanmış primitifleri sunar; yokluğu fail-closed; darwin adapter'ı file-lock+clean ikizinde aynı kontratla; kapanış macos CI'da gerçek-binary clean (dist'li rebuild) + lock yaşam-döngüsü yeşiliyle | Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner | 2026-08-05 | +| 3347 | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | KERNEL-001 | KERNEL | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | P1 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001, PLATFORM-EXEC-AUTH-W2-PROBE-001 | G1 | READY | 1/0/0/?/0/?/? | Addon yalnız probe-doğrulanmış primitifleri sunar; yokluğu fail-closed; darwin adapter'ı file-lock+clean ikizinde aynı kontratla; kapanış macos CI'da gerçek-binary clean (dist'li rebuild) + lock yaşam-döngüsü yeşiliyle | Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner; `receipt=GR-2026-08-05-EXEC-AUTH-W3B2-01`; dilim-2 admission 2026-08-05: Alperen direktifi 'darwin dilim-2 trenini başlat' | 2026-08-05 | ### P04 — Runtime-wide authority and security diff --git a/docs/generated/master-plan-active.json b/docs/generated/master-plan-active.json index 618688f5f..9cc1a8d27 100644 --- a/docs/generated/master-plan-active.json +++ b/docs/generated/master-plan-active.json @@ -3,16 +3,16 @@ "generatedFrom": "docs/MASTER-PLAN.md", "sourceDigest": { "algorithm": "sha256(normalized-lf-utf8)", - "value": "80f01f6681bfee95e02a0f47eb04dd859856789233e632258254699732e0ea1a" + "value": "cc73919259ea696fbea26af03870e111eb6e68b49d4e7156f50bd1ff34f9e253" }, "summary": { "total": 373, "active": 350, "terminal": 23, - "receipts": 54, + "receipts": 55, "byState": { - "OPEN": 256, - "READY": 0, + "OPEN": 255, + "READY": 1, "IN_PROGRESS": 0, "BLOCKED": 67, "VERIFY": 27, @@ -2951,10 +2951,10 @@ "id": "PLATFORM-EXEC-AUTH-W3-DARWIN-001", "program": "KERNEL", "priority": "P1", - "state": "OPEN", + "state": "READY", "updated": "2026-08-05", "definitionDigest": "f2b33b8cd8d8d5ea4ee7b1f93ca5774c3affb0cc84109ca7549b23f6bec412c5", - "progressDigest": "bd6e7bbd416d26ce15105934072945d00193752b8332f52f66e0c12ccbe0d8e7", + "progressDigest": "bf2aed1b2f73217c49de547e54874e5498253c7f1c0f822f0061f94130a6a701", "terminalClosureDigest": null }, { @@ -4708,6 +4708,16 @@ "transitionAt": "2026-08-05T21:45:51Z" }, "g7AttemptIdentity": null + }, + { + "id": "GR-2026-08-05-EXEC-AUTH-W3B2-01", + "authorityDigest": "05c2e722518cba2ff5e6b723b7846960ec2492a437da76a3d7de082349406aab", + "lifecycle": { + "mode": "ONE_SHOT", + "status": "active", + "transitionAt": null + }, + "g7AttemptIdentity": null } ], "workItems": [ @@ -14972,7 +14982,7 @@ "gates": [ "G1" ], - "state": "OPEN", + "state": "READY", "truth": { "C": "1", "W": "0", @@ -14987,10 +14997,11 @@ "closureBlockedBy": [], "evidenceReceipts": [ "GR-2026-08-05-EXEC-AUTH-W3A-01", - "GR-2026-08-05-EXEC-AUTH-W3B1-01" + "GR-2026-08-05-EXEC-AUTH-W3B1-01", + "GR-2026-08-05-EXEC-AUTH-W3B2-01" ], "acceptance": "Addon yalnız probe-doğrulanmış primitifleri sunar; yokluğu fail-closed; darwin adapter'ı file-lock+clean ikizinde aynı kontratla; kapanış macos CI'da gerçek-binary clean (dist'li rebuild) + lock yaşam-döngüsü yeşiliyle", - "evidence": "Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner", + "evidence": "Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner; `receipt=GR-2026-08-05-EXEC-AUTH-W3B2-01`; dilim-2 admission 2026-08-05: Alperen direktifi 'darwin dilim-2 trenini başlat'", "updated": "2026-08-05" }, { @@ -19437,6 +19448,6 @@ ], "registryIntegrity": { "algorithm": "sha256(canonical-json-utf8)", - "value": "152e8075200a8dae054776612a81649992e8227e45283d90738bd5363f82843c" + "value": "da39d392549f83eb5858ec253fa0da51a94367767a7fb335a19a788049281667" } } diff --git a/docs/generated/master-plan-active.md b/docs/generated/master-plan-active.md index 9cd5d2725..3b4889734 100644 --- a/docs/generated/master-plan-active.md +++ b/docs/generated/master-plan-active.md @@ -5,7 +5,7 @@ **Schema:** 3 -**Source digest:** `sha256(normalized-lf-utf8):80f01f6681bfee95e02a0f47eb04dd859856789233e632258254699732e0ea1a` +**Source digest:** `sha256(normalized-lf-utf8):cc73919259ea696fbea26af03870e111eb6e68b49d4e7156f50bd1ff34f9e253` **Rows:** 373 total · 350 active · 23 terminal @@ -13,8 +13,8 @@ | State | Count | |---|---:| -| OPEN | 256 | -| READY | 0 | +| OPEN | 255 | +| READY | 1 | | IN_PROGRESS | 0 | | BLOCKED | 67 | | VERIFY | 27 | @@ -269,7 +269,7 @@ | 3325 | `CLEAN-DASHBOARD-POLICY-001` | OPEN | P1 | ASSURANCE | — | — | `clean`'in dashboard-koru policy'si ile `build:dashboard`'ın boş-çıktı beklentisi tek kararda uzlaşır | | 3343 | `PLATFORM-CLEAN-IDENTITY-ADAPTER-001` | OPEN | P1 | KERNEL | — | — | identity-stable delete adapter'ı Linux-only (/proc/self/fd + fdinfo mnt_id): macOS ve Windows'ta clean.mjs dürüst HOLD (E_CLEAN_IDENTITY_STABLE_DELETE_UNSUPPORTED) — cross-platform-e2e'nin TÜM macos/windows job'ları npm run clean'de düşüyor (08-03'ten beri 40/40 kırmızı aile) | | 3345 | `COMPOSITE-WORKER-001` | OPEN | P1 | KERNEL | `KERNEL-ATTEMPT-001` | — | Composite worker / nested team delegasyon kontratı: parent-child execution, authority tavanı, bütçe tavanı, concurrency limiti, completion/failure policy ve nested evidence tree | -| 3347 | `PLATFORM-EXEC-AUTH-W3-DARWIN-001` | OPEN | P1 | KERNEL | `PLATFORM-EXEC-AUTH-W1-INTERFACE-001`, `PLATFORM-EXEC-AUTH-W2-PROBE-001` | — | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | +| 3347 | `PLATFORM-EXEC-AUTH-W3-DARWIN-001` | READY | P1 | KERNEL | `PLATFORM-EXEC-AUTH-W1-INTERFACE-001`, `PLATFORM-EXEC-AUTH-W2-PROBE-001` | — | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | | 4000 | `AUTHORITY-001` | OPEN | P0 | AUTHORITY | `SSOT-003` | — | Unified runtime authority parent | | 4010 | `PRINCIPAL-001` | OPEN | P0 | AUTHORITY | `SSOT-003` | — | VerifiedPrincipal across local, OIDC, workload and connector identities | | 4020 | `TENANT-001` | OPEN | P0 | AUTHORITY | `PRINCIPAL-001` | — | Canonical tenant/project/session scope enforcement | From 1d53067d6efa21de2c937426c4977be3502decdd Mon Sep 17 00:00:00 2001 From: Alperen Date: Thu, 6 Aug 2026 01:01:01 +0300 Subject: [PATCH 2/5] =?UTF-8?q?docs(master):=203347=20READY=E2=86=92IN=5FP?= =?UTF-8?q?ROGRESS=20(W3B2=20Darwin=20dilim-2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/MASTER-PLAN.md | 2 +- docs/generated/master-plan-active.json | 14 +++++++------- docs/generated/master-plan-active.md | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/MASTER-PLAN.md b/docs/MASTER-PLAN.md index 95899c1ce..e6c32b70a 100644 --- a/docs/MASTER-PLAN.md +++ b/docs/MASTER-PLAN.md @@ -834,7 +834,7 @@ specification'ını execute eder. Legacy provider adapter'ının varlığı PAEP | 3344 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001 | KERNEL-001 | KERNEL | ExecutionAuthorityPlatformAdapter arayüz-çıkarımı: file-lock.ts Linux impl'i davranış-değişimsiz adapter arkasına, clean.mjs ikiz-parite kontrat testi, cross-verify-evidence-broker /proc taraması | P1 | — | G1 | DONE | 1/1/1/1/-/-/- | Linux yolu bayt-eşdeğer davranışta kalır (mevcut lock+clean suite'leri yeşil); adapter arayüzü 4-yetenek ayrıştırmasını (fd-traversal/mount-pin/host-boot-id/liveness) tipler; clean.mjs ikizi parite-testiyle sabitlenir | Açılış 2026-08-05: D1-D3 onayı (Alperen); tasarım: docs/analysis/platform-execution-authority-adapters-2026-08-05.md §5 W1; `receipt=GR-2026-08-05-EXEC-AUTH-W1-01`; 2026-08-05 SETTLEMENT (b7ed80cb1): tipli 4-yetenek arayüzü + linuxProcExecutionAuthorityAdapter (file-lock) + cleanExecutionAuthorityAdapter ikizi + ikiz-parite kontrat testi 5/5 (aynı gerçek fd için birebir dev+ino+mountId); stable-path literal'leri adapter üzerinden; broker taraması: cross-verify-evidence-broker zaten tipli UNSUPPORTED_PLATFORM kapılı, W3 üçüncü-tüketici adayı; `proof=lock-clean-parity-suites-205of206-green`; Linux bayt-eşdeğerlik: lock+clean+fence 205/206, tsc temiz, hermetic build-free; 2026-08-05 DONE: Alperen 'w3 başlat' direktifi (zincir-ilerletme onayı — W3 READY'si deps-DONE ister) | 2026-08-05 | | 3345 | COMPOSITE-WORKER-001 | KERNEL-001 | KERNEL | Composite worker / nested team delegasyon kontratı: parent-child execution, authority tavanı, bütçe tavanı, concurrency limiti, completion/failure policy ve nested evidence tree | P1 | KERNEL-ATTEMPT-001 | G2 | OPEN | 0/0/0/?/0/?/? | Owner G2 tasarım kararı: delegated objective + authority_ceiling + budget_ceiling + allowed_runtimes + completion_contract + failure_policy + evidence_requirement alanları tiplenir; delegasyon yetkiyi yalnız daraltır, asla genişletmez; recursive bütçe/authority çift-harcaması imkânsız olur; dış orchestrator'lar (AutoGen nested Team, AG2 network sınıfı) bu kontratın altında composite worker olarak modellenir | Açılış: Alperen 2026-08-04 reconciliation onayı. Tetikleyici: 2026-07-30 rekabet günlüğü — AutoGen nested Teams (Team içinde Team) ve AG2 v1 network yapıları "runner içinde runner" modelini standartlaştırıyor; ledger'da recursive delegasyon kontratı karşılığı yok (KERNEL-ATTEMPT-001 tek-seviye claim/lease/fencing taşıyor; GRACEFUL-BUDGET-LANDING→BUDGET-CONTINUATION-001 landing'i kapsıyor, delegasyonu kapsamıyor) | 2026-08-04 | | 3346 | PLATFORM-EXEC-AUTH-W2-PROBE-001 | KERNEL-001 | KERNEL | macOS+Windows capability-probe CI job'ı: /dev/fd dizin-traversal semantiği, POSIX-delete uygunluğu, FileIndex/VolumeSerial kararlılığı gerçek runner'da ölçülür ve evidence-artifact olarak yayımlanır | P1 | — | G1 | DONE | 1/1/1/1/1/1/- | Probe job'ı required-değildir ve ürün davranışını değiştirmez; her platform için ölçüm JSON artifact'ı üretir; W3/W4 tasarım kilidi bu kanıtla atılır | Açılış 2026-08-05: D1-D3 onayı (Alperen); tasarım: docs/analysis/platform-execution-authority-adapters-2026-08-05.md §5 W2; `receipt=GR-2026-08-05-EXEC-AUTH-W2-01`; 2026-08-05 SETTLEMENT (PR #57 run 30991850136, 3/3 probe pass): GERÇEK-RUNNER ÖLÇÜMLERİ — darwin-arm64 (`5566df23b8e1deb6…`): /dev/fd dizin-traversal ÇALIŞMIYOR (readdir ENOTDIR, child ENOENT, identity mismatch) → W3 Darwin için native openat-ailesi TEK yol, D1 ölçümle doğrulandı; POSIX-delete+dev/ino-kararlılık+O_NOFOLLOW/O_DIRECTORY+kern.uuid/boottime hepsi supported; win32-x64 (`0e988567fd93477f…`): POSIX-delete SUPPORTED (D2 tabanı doğrulandı), VolumeSerial+FileIndex rename/reopen kararlı ve non-zero, MachineGuid supported; O_NOFOLLOW/O_DIRECTORY Node-sabitleri 0 → W4 secure-open kontratı native handle-flag eşdeğerleriyle kurulacak; linux-x64 referans (`6f2ad5bf7de0f009…`): tam-destek beklendiği gibi; `proof=real-runner-capability-probe-3platforms-run30991850136`; artifact'lar 30 gün retention'lı, digest'ler tam-SHA256'nın ilk 16'sı — tam değerler run-artifact'larında; 2026-08-05 DONE: Alperen 'w3 başlat' direktifi (zincir-ilerletme onayı) | 2026-08-05 | -| 3347 | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | KERNEL-001 | KERNEL | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | P1 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001, PLATFORM-EXEC-AUTH-W2-PROBE-001 | G1 | READY | 1/0/0/?/0/?/? | Addon yalnız probe-doğrulanmış primitifleri sunar; yokluğu fail-closed; darwin adapter'ı file-lock+clean ikizinde aynı kontratla; kapanış macos CI'da gerçek-binary clean (dist'li rebuild) + lock yaşam-döngüsü yeşiliyle | Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner; `receipt=GR-2026-08-05-EXEC-AUTH-W3B2-01`; dilim-2 admission 2026-08-05: Alperen direktifi 'darwin dilim-2 trenini başlat' | 2026-08-05 | +| 3347 | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | KERNEL-001 | KERNEL | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | P1 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001, PLATFORM-EXEC-AUTH-W2-PROBE-001 | G1 | IN_PROGRESS | 1/0/0/?/0/?/? | Addon yalnız probe-doğrulanmış primitifleri sunar; yokluğu fail-closed; darwin adapter'ı file-lock+clean ikizinde aynı kontratla; kapanış macos CI'da gerçek-binary clean (dist'li rebuild) + lock yaşam-döngüsü yeşiliyle | Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner; `receipt=GR-2026-08-05-EXEC-AUTH-W3B2-01`; dilim-2 admission 2026-08-05: Alperen direktifi 'darwin dilim-2 trenini başlat' | 2026-08-05 | ### P04 — Runtime-wide authority and security diff --git a/docs/generated/master-plan-active.json b/docs/generated/master-plan-active.json index 9cc1a8d27..a61b3f6a4 100644 --- a/docs/generated/master-plan-active.json +++ b/docs/generated/master-plan-active.json @@ -3,7 +3,7 @@ "generatedFrom": "docs/MASTER-PLAN.md", "sourceDigest": { "algorithm": "sha256(normalized-lf-utf8)", - "value": "cc73919259ea696fbea26af03870e111eb6e68b49d4e7156f50bd1ff34f9e253" + "value": "f71d3d9c051c7a9efb01912bd4285f560c2c42f7090087d50313f180749301d3" }, "summary": { "total": 373, @@ -12,8 +12,8 @@ "receipts": 55, "byState": { "OPEN": 255, - "READY": 1, - "IN_PROGRESS": 0, + "READY": 0, + "IN_PROGRESS": 1, "BLOCKED": 67, "VERIFY": 27, "DONE": 23, @@ -2951,10 +2951,10 @@ "id": "PLATFORM-EXEC-AUTH-W3-DARWIN-001", "program": "KERNEL", "priority": "P1", - "state": "READY", + "state": "IN_PROGRESS", "updated": "2026-08-05", "definitionDigest": "f2b33b8cd8d8d5ea4ee7b1f93ca5774c3affb0cc84109ca7549b23f6bec412c5", - "progressDigest": "bf2aed1b2f73217c49de547e54874e5498253c7f1c0f822f0061f94130a6a701", + "progressDigest": "367e82f7b5b2eb986ebd8e698bb82cca1ef590b4bb2250521b8bc2475360b714", "terminalClosureDigest": null }, { @@ -14982,7 +14982,7 @@ "gates": [ "G1" ], - "state": "READY", + "state": "IN_PROGRESS", "truth": { "C": "1", "W": "0", @@ -19448,6 +19448,6 @@ ], "registryIntegrity": { "algorithm": "sha256(canonical-json-utf8)", - "value": "da39d392549f83eb5858ec253fa0da51a94367767a7fb335a19a788049281667" + "value": "288db96bd9b7341531bd45f7dea29b2a003e832f1fc814b322da7a14ab52e622" } } diff --git a/docs/generated/master-plan-active.md b/docs/generated/master-plan-active.md index 3b4889734..071d4b620 100644 --- a/docs/generated/master-plan-active.md +++ b/docs/generated/master-plan-active.md @@ -5,7 +5,7 @@ **Schema:** 3 -**Source digest:** `sha256(normalized-lf-utf8):cc73919259ea696fbea26af03870e111eb6e68b49d4e7156f50bd1ff34f9e253` +**Source digest:** `sha256(normalized-lf-utf8):f71d3d9c051c7a9efb01912bd4285f560c2c42f7090087d50313f180749301d3` **Rows:** 373 total · 350 active · 23 terminal @@ -14,8 +14,8 @@ | State | Count | |---|---:| | OPEN | 255 | -| READY | 1 | -| IN_PROGRESS | 0 | +| READY | 0 | +| IN_PROGRESS | 1 | | BLOCKED | 67 | | VERIFY | 27 | | DONE | 23 | @@ -269,7 +269,7 @@ | 3325 | `CLEAN-DASHBOARD-POLICY-001` | OPEN | P1 | ASSURANCE | — | — | `clean`'in dashboard-koru policy'si ile `build:dashboard`'ın boş-çıktı beklentisi tek kararda uzlaşır | | 3343 | `PLATFORM-CLEAN-IDENTITY-ADAPTER-001` | OPEN | P1 | KERNEL | — | — | identity-stable delete adapter'ı Linux-only (/proc/self/fd + fdinfo mnt_id): macOS ve Windows'ta clean.mjs dürüst HOLD (E_CLEAN_IDENTITY_STABLE_DELETE_UNSUPPORTED) — cross-platform-e2e'nin TÜM macos/windows job'ları npm run clean'de düşüyor (08-03'ten beri 40/40 kırmızı aile) | | 3345 | `COMPOSITE-WORKER-001` | OPEN | P1 | KERNEL | `KERNEL-ATTEMPT-001` | — | Composite worker / nested team delegasyon kontratı: parent-child execution, authority tavanı, bütçe tavanı, concurrency limiti, completion/failure policy ve nested evidence tree | -| 3347 | `PLATFORM-EXEC-AUTH-W3-DARWIN-001` | READY | P1 | KERNEL | `PLATFORM-EXEC-AUTH-W1-INTERFACE-001`, `PLATFORM-EXEC-AUTH-W2-PROBE-001` | — | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | +| 3347 | `PLATFORM-EXEC-AUTH-W3-DARWIN-001` | IN_PROGRESS | P1 | KERNEL | `PLATFORM-EXEC-AUTH-W1-INTERFACE-001`, `PLATFORM-EXEC-AUTH-W2-PROBE-001` | — | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | | 4000 | `AUTHORITY-001` | OPEN | P0 | AUTHORITY | `SSOT-003` | — | Unified runtime authority parent | | 4010 | `PRINCIPAL-001` | OPEN | P0 | AUTHORITY | `SSOT-003` | — | VerifiedPrincipal across local, OIDC, workload and connector identities | | 4020 | `TENANT-001` | OPEN | P0 | AUTHORITY | `PRINCIPAL-001` | — | Canonical tenant/project/session scope enforcement | From bdabae2b32aade93670b8e9ccbc88485cce7699a Mon Sep 17 00:00:00 2001 From: Alperen Date: Thu, 6 Aug 2026 01:06:40 +0300 Subject: [PATCH 3/5] =?UTF-8?q?docs(master):=20W3B2-STATS-SUPP=20admission?= =?UTF-8?q?=20=E2=80=94=20mekanik=20stats-regen=20ek-receipt'i=20(B4-SUPP?= =?UTF-8?q?=20emsali)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/MASTER-PLAN.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/MASTER-PLAN.md b/docs/MASTER-PLAN.md index e6c32b70a..f6abbd9f4 100644 --- a/docs/MASTER-PLAN.md +++ b/docs/MASTER-PLAN.md @@ -315,6 +315,7 @@ Current receipt register: | `GR-2026-08-05-EXEC-AUTH-W3B1-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `src/core/file-lock.ts@dbc321feb2c441dc50b1a31b409aec938baa4374c8a39450f75b15e05ab9638d`; `scripts/clean.mjs@1c63b2b18d016a413e5ff5e90288f844fe5da10fb93e4132799650325ba4a532`; `tests/core/execution-authority-adapter-parity.test.ts@16760f78c7be6748ce5b9ac37c3db55dfff94df11340f092fe12228e75daaedf`; W3-PR-B dilim-1 (tasarım §10): op-tabanlı ExecutionAuthorityOpsV2 arayüzü (openDirAt/readdirOf/unlinkAt/renameAt/identityOf/realPathOf) file-lock'ta tanımlanır ve Linux impl'i mevcut /proc mekaniğiyle doldurulur; pinExecutionLockDirectories'in doğrudan open/stat işlemleri op-çağrılarına taşınır (Linux bayt-eşdeğer); clean.mjs ikizi aynı v2 şekline; parite testi v2 yüzeyini kapsar; Darwin impl'i + F_GETPATH + gerçek-Mac kanıt dilim-2/3 işi | owner=Alperen; decision=APPROVED; scope=exact three-path ops-v2 interface and linux migration; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T13:39:02Z | `ONE_SHOT`: consumed@2026-08-05T13:47:19Z | | `GR-2026-08-05-STATS-HERM-521-01` | CI-STATS-HERMETIC-001 | G1 | `scripts/update-readme-stats.mjs@e903538b116be362817216a81026b174e2a99833c6b5be0db7df6b54b76f9e51`; `tests/scripts/update-readme-stats.test.ts@08baa76976e2fdd639600ead094060dfe604cf2578192d8e7996302dbb8157aa`; `package.json@a3198253bf5c898080ee3c33a22afff18a21281e541ee094f4df3985c7a5a43a`; `README.md@d65cd7d13b2fe67b6cd8016c3eabc5a5e5d153a685d437543863009e776a15be`; `README.tr.md@e9ce5ac801a76d5e2f4c3f72143ac6c7a876884d6c2ad88add4c7f48227708ad`; `.deckent/workspace/IDENTITY.md@9f1341b0f390f7d7f56390d448b679d266270a5ed7b7235d6621262e4d996ed1`; `scripts/lint-test-hermeticity.mjs@8ea171a3045ab421de6884cea52d26dc7de075834606fac3a9a432bd268de6d7`; stats-hermetiklik yeniden-tasarımı (Alperen onayı): volatil rozet girdileri (sprint, coverage) yeni izlenen snapshot dosyasından (.deckent/workspace/stats-snapshot.json — yeni dosya, pin'siz) okunur; check ve write modları yalnız izlenen dosyaların fonksiyonu olur (temiz checkout deterministik); bilinçli güncelleme yeni refresh-snapshot moduyla yapılır (sprint monotonik; coverage yalnız açık with-coverage bayrağıyla artifact'tan alınır, aksi halde mevcut değer korunur); README/README.tr/IDENTITY regen bu snapshot'la; hermeticity baseline'ları test-değişimine göre tazelenir | owner=Alperen; decision=APPROVED; scope=exact seven-path stats snapshot hermeticity redesign plus new tracked snapshot file; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T21:26:31Z | `ONE_SHOT`: consumed@2026-08-05T21:45:51Z | | `GR-2026-08-05-EXEC-AUTH-W3B2-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `native/exec-authority/src/exec_authority.c@df4b53a6e1d3dd45c84c9e3d0c055f4b0e4ff6fc28e08a86fe3bf5ca221c7571`; `tests/native/exec-authority-native.test.ts@4404eb93bbe7467b5ad7f99d9ec0ca171ceb6f32bf7dd5810f1e7e4f18d8e769`; `src/core/file-lock.ts@1fdac4cec0cf71e93d864648381ed618a9de483e38e5fbadd516373a3725c813`; `tests/core/execution-authority-adapter-parity.test.ts@3796de5c29fefebc4704e86db7f8d7bf7f0083a63e5be2f9369d31bce663b23c`; `.github/workflows/cross-platform-e2e.yml@0c0b7bb45ffebf23fbaef6acb28235876d42fc53530fb6f1f3df5dc811278061`; `scripts/lint-test-hermeticity.mjs@9038d3694492033bbd7767e57e3c57a2fac8dbf5a61edcee1adf473819f3a8d4`; `docs/analysis/platform-execution-authority-adapters-2026-08-05.md@3a79e65cc7d288005e7007ad7620fd1d065c94f44211b73edc4ccb691f545f72`; W3-PR-B dilim-2 (tasarım §10 adım-1'in Darwin yarısı): native addon'a tek yeni primitif fdPath (Darwin F_GETPATH, diğer POSIX'te /proc readlink — POSIX-portable, Linux CI'da test edilir); file-lock'ta darwinNativeExecutionAuthorityOpsV2 (ops-v2 yüzeyinin addon-tabanlı Darwin impl'i; binding yokluğu typed secure-open-unsupported, asla sessiz fallback) + platform-çözümlü ops-v2 resolver (classify tipi darwin'i kapsar, Linux yolu bayt-eşdeğer); parite testi Linux'ta native-vs-proc davranış paritesini, macos native job'ında gerçek-Darwin ops yaşam-döngüsünü koşar; workflow native job'ına parite dosyası eklenir; konsumer migrasyonu, clean.mjs twin'i ve gerçek-Mac real-binary clean/lock kanıtı dilim-3 işi; hermeticity baseline'ları test-değişimine göre tazelenir; tasarım-doku §10 dilim-kaydıyla güncellenir | owner=Alperen; decision=APPROVED; scope=exact seven-path darwin ops-v2 native implementation with dual-platform proof; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T22:00:11Z | `ONE_SHOT`: active | +| `GR-2026-08-05-W3B2-STATS-SUPP-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `README.md@15965939098979d1849fa640d7a84e0d38934a0dcbcf29af566563de862d775e`; `README.tr.md@74269852fdb278be342b5f63a6c8e46bc05a238d4e301e7c12a9737c9ef7ce8e`; `.deckent/workspace/IDENTITY.md@fdcf77ea175dcb57c34f723c81289d9e4065f43138e6b7af9154162b57c81c76`; W3B2 ek-dilimi (B4-SUPP emsali): dilim-2'nin yeni testleri README test-rozet sayısını değiştirir; 521 sonrası stats-gate PR-required olduğundan üç regen hedefi mekanik docs:stats write çıktısıyla güncellenir — içerik tamamen üreteç-türevli, elle metin değişikliği yok | owner=Alperen; decision=APPROVED; scope=exact three-path mechanical stats regen for W3B2 test-count delta; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T22:06:15Z | `ONE_SHOT`: active | ### 3.5 Typed blocker register From c3bc7f1dd8d805b60cbb0f4e41b39054883b4048 Mon Sep 17 00:00:00 2001 From: Alperen Date: Thu, 6 Aug 2026 01:08:50 +0300 Subject: [PATCH 4/5] =?UTF-8?q?feat(core):=20W3-PR-B=20dilim-2=20=E2=80=94?= =?UTF-8?q?=20Darwin=20ops-v2=20native=20impl=20(fdPath/F=5FGETPATH)=20+?= =?UTF-8?q?=20platform-resolver,=20=C3=A7ift-platform=20kan=C4=B1t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Native addon'a tek yeni primitif fdPath (Darwin fcntl F_GETPATH, diğer POSIX /proc readlink — POSIX-portable, Linux gerçek-koşuyla test edilir; dönen path CURRENT'tır, rename-sonrası pin testli). file-lock'ta darwinNativeExecutionAuthorityOpsV2: ops-v2 yüzeyinin addon-tabanlı Darwin impl'i — binding lazy+memoized (module-eval side-effect-free kontratı), yokluk typed secure-open-unsupported (D3, asla path-fallback); identityOf mountId'yi f_fsid'den alır, Linux'ta typed fail-closed (negatif pin). resolveExecutionAuthorityOpsV2(): linux→/proc twin bayt-eşdeğer, darwin→native, diğeri typed throw. Parite testi ubuntu native job'ında binding-vs-proc davranış paritesini, macos job'ında gerçek-Darwin yaşam-döngüsünü koşar. Konsumer migrasyonu + clean twin + gerçek-Mac real-binary kanıt dilim-3 (tasarım §10.1). Stats regen supp-receipt'le (test-rozet +6); hermetic baseline'lar build-free (unresolved 12481, inventory 1197 digest-only). Co-Authored-By: Claude Fable 5 --- .deckent/workspace/IDENTITY.md | 2 +- .github/workflows/cross-platform-e2e.yml | 8 ++ README.md | 2 +- README.tr.md | 2 +- ...execution-authority-adapters-2026-08-05.md | 26 ++++ native/exec-authority/src/exec_authority.c | 34 +++++ scripts/lint-test-hermeticity.mjs | 15 +- src/core/file-lock.ts | 136 +++++++++++++++++- ...execution-authority-adapter-parity.test.ts | 112 ++++++++++++++- tests/native/exec-authority-native.test.ts | 20 ++- 10 files changed, 343 insertions(+), 14 deletions(-) diff --git a/.deckent/workspace/IDENTITY.md b/.deckent/workspace/IDENTITY.md index fa8109516..4e046fa94 100644 --- a/.deckent/workspace/IDENTITY.md +++ b/.deckent/workspace/IDENTITY.md @@ -17,7 +17,7 @@ Direction (2026-06-29 pivot): Tool-driven, progressive-disclosure, full-control Moat: Deterministik eval-backed orchestration · governance-by-construction · outcome→evidence→routing→promotion→training-trace kapalı öğrenme döngüsü SSOT: `docs/MASTER-PLAN.md` · core-memory: `.deckent/docs/core-memory/MEMORY.md` · yön gerekçesi: `.analysis/hermes-vs-deckent-direction-decisions.md` -Tests: 34,178 descriptors (parsed from tests/**/*.test.ts(x)) +Tests: 34,180 descriptors (parsed from tests/**/*.test.ts(x)) Dashboard Tests: 96 descriptors (parsed from src/dashboard/src/**/*.test.tsx) Coverage: N/A diff --git a/.github/workflows/cross-platform-e2e.yml b/.github/workflows/cross-platform-e2e.yml index 259429483..bf0452366 100644 --- a/.github/workflows/cross-platform-e2e.yml +++ b/.github/workflows/cross-platform-e2e.yml @@ -345,3 +345,11 @@ jobs: run: npx vitest run tests/native/exec-authority-native.test.ts env: VITEST_MAX_FORKS: '2' + + # W3-PR-B slice-2: with the binding built above, this exercises the + # binding-backed ops-v2 parity block on ubuntu and the real-Darwin + # pinned-handle lifecycle block on macos. + - name: Run execution-authority adapter parity suite + run: npx vitest run tests/core/execution-authority-adapter-parity.test.ts + env: + VITEST_MAX_FORKS: '2' diff --git a/README.md b/README.md index 172722257..17d122ac9 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ Deckent's three immutable laws are Dual Lens + Scale, Every Environment, and Nev License: MIT. [Evidence: `package.json:90-91`; `LICENSE`] -[![npm version](https://img.shields.io/npm/v/deckent.svg)](https://www.npmjs.com/package/deckent) [![tests](https://img.shields.io/badge/tests-34178%2B-brightgreen)](https://github.com/VerhexIO/deckent) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![sprints](https://img.shields.io/badge/sprints-492%2B-teal)](https://github.com/VerhexIO/deckent) [![version](https://img.shields.io/badge/version-v1.0.0--beta.1-orange)](https://github.com/VerhexIO/deckent) [![CI](https://img.shields.io/github/actions/workflow/status/VerhexIO/deckent/ci.yml?label=ci)](https://github.com/VerhexIO/deckent/actions) +[![npm version](https://img.shields.io/npm/v/deckent.svg)](https://www.npmjs.com/package/deckent) [![tests](https://img.shields.io/badge/tests-34180%2B-brightgreen)](https://github.com/VerhexIO/deckent) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![sprints](https://img.shields.io/badge/sprints-492%2B-teal)](https://github.com/VerhexIO/deckent) [![version](https://img.shields.io/badge/version-v1.0.0--beta.1-orange)](https://github.com/VerhexIO/deckent) [![CI](https://img.shields.io/github/actions/workflow/status/VerhexIO/deckent/ci.yml?label=ci)](https://github.com/VerhexIO/deckent/actions) diff --git a/README.tr.md b/README.tr.md index 40b36484e..e295bf567 100644 --- a/README.tr.md +++ b/README.tr.md @@ -94,7 +94,7 @@ Deckent'in üç Immutable Law'u Dual Lens + Scale, Every Environment ve Never MV License: MIT. [Kanıt: `package.json:90-91`; `LICENSE`] -[![npm version](https://img.shields.io/npm/v/deckent.svg)](https://www.npmjs.com/package/deckent) [![tests](https://img.shields.io/badge/tests-34178%2B-brightgreen)](https://github.com/VerhexIO/deckent) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![sprints](https://img.shields.io/badge/sprints-492%2B-teal)](https://github.com/VerhexIO/deckent) [![version](https://img.shields.io/badge/version-v1.0.0--beta.1-orange)](https://github.com/VerhexIO/deckent) [![CI](https://img.shields.io/github/actions/workflow/status/VerhexIO/deckent/ci.yml?label=ci)](https://github.com/VerhexIO/deckent/actions) +[![npm version](https://img.shields.io/npm/v/deckent.svg)](https://www.npmjs.com/package/deckent) [![tests](https://img.shields.io/badge/tests-34180%2B-brightgreen)](https://github.com/VerhexIO/deckent) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![sprints](https://img.shields.io/badge/sprints-492%2B-teal)](https://github.com/VerhexIO/deckent) [![version](https://img.shields.io/badge/version-v1.0.0--beta.1-orange)](https://github.com/VerhexIO/deckent) [![CI](https://img.shields.io/github/actions/workflow/status/VerhexIO/deckent/ci.yml?label=ci)](https://github.com/VerhexIO/deckent/actions) diff --git a/docs/analysis/platform-execution-authority-adapters-2026-08-05.md b/docs/analysis/platform-execution-authority-adapters-2026-08-05.md index 6b68779a5..e362f02e5 100644 --- a/docs/analysis/platform-execution-authority-adapters-2026-08-05.md +++ b/docs/analysis/platform-execution-authority-adapters-2026-08-05.md @@ -144,3 +144,29 @@ akışlarının kademeli migrasyonudur: 5. **Tahmin**: 2-3 PR (v2-arayüz+Linux-migrasyon → Darwin-impl+kanıt → temizlik); her biri kendi receipt'iyle. Windows (W4) aynı v2 arayüzünü handle-tabanlı NT-primitifleriyle doldurur — v2 tasarımı W4'ü de öndeler. + +### §10.1 Dilim-2 kaydı (2026-08-06, `GR-2026-08-05-EXEC-AUTH-W3B2-01`) + +Uygulanan kapsam — adım-1'in Darwin yarısı: + +- **Native**: tek yeni primitif `fdPath(fd)` — Darwin `fcntl(F_GETPATH)`, diğer + POSIX `/proc/self/fd` readlink (POSIX-portable: Linux CI aynı op yüzeyini + gerçek-koşuyla test eder). Dönen path handle'ın **CURRENT** path'idir (rename + sonrası bir sonraki çağrı yeni path'i verir — testle pinli). +- **file-lock**: `darwinNativeExecutionAuthorityOpsV2` — ops-v2 yüzeyinin + addon-tabanlı Darwin impl'i. Binding lazy+memoized yüklenir (module-eval + side-effect-free kontratı korunur); yokluk typed `secure-open-unsupported` + (D3), asla path-fallback yok. `identityOf` mountId'yi `f_fsid` çiftinden + alır; Linux'ta f_fsid typed-absent olduğundan identityOf Linux'ta fail-closed + (negatif pin testli). `resolveExecutionAuthorityOpsV2()` platform-çözümlü tek + giriş: linux→/proc twin (bayt-eşdeğer), darwin→native, diğerleri typed throw. +- **Kanıt**: ubuntu native CI job'ında binding-backed ops'un /proc twin'iyle + davranış paritesi; macos native job'ında gerçek-Darwin pinli-handle yaşam + döngüsü (classify/identity-fsid/realPathOf/readdir/rename/unlink). + +**Bilinçli dilim-3'e bırakılanlar**: `pinExecutionLockDirectories` + clean.mjs +twin'inin resolver'a bağlanması (konsumer migrasyonu — Darwin'de mkdirAt/ +openFileAt/fsyncFd ek primitiflerini de ister), SQLite secure-open Darwin yolu +(realPathOf + post-open fd-identity re-verify), addon'un ürün-kurulum yolunda +derlenme stratejisi (macos E2E'nin gerçek-binary clean/lock yeşili buna bağlı) +ve gerçek-Mac kapanış kanıtı. diff --git a/native/exec-authority/src/exec_authority.c b/native/exec-authority/src/exec_authority.c index db305df16..7c375ed7f 100644 --- a/native/exec-authority/src/exec_authority.c +++ b/native/exec-authority/src/exec_authority.c @@ -28,6 +28,7 @@ #ifdef __APPLE__ #include +#include #include #include #include @@ -255,6 +256,38 @@ static napi_value MountIdentity(napi_env env, napi_callback_info info) { return result; } +/* fdPath(fd) → kernel-verified CURRENT path of an open handle (W3-PR-B slice-2, + * design §10 step-3: the one primitive consumers need when a path-only API such + * as SQLite must be handed a path derived from a pinned handle). Darwin: + * fcntl(F_GETPATH) — the only kernel facility resolving a handle to its live + * path. Other POSIX: readlink(/proc/self/fd/N), so Linux CI exercises the same + * op surface the Darwin adapter ships. Never a cached or caller-supplied path. */ +static napi_value FdPath(napi_env env, napi_callback_info info) { + size_t argc = 1; + napi_value argv[1]; + napi_get_cb_info(env, info, &argc, argv, NULL, NULL); + int32_t fd; + if (argc < 1 || !get_fd_arg(env, argv[0], &fd)) return NULL; + +#ifdef __APPLE__ + char path[MAXPATHLEN]; + if (fcntl(fd, F_GETPATH, path) != 0) { + return throw_errno(env, "fcntl(F_GETPATH)", errno); + } +#else + char link[64]; + char path[MAX_NAME_BYTES]; + snprintf(link, sizeof(link), "/proc/self/fd/%d", fd); + ssize_t len = readlink(link, path, sizeof(path) - 1); + if (len < 0) return throw_errno(env, "readlink(/proc/self/fd)", errno); + path[len] = '\0'; +#endif + + napi_value result; + napi_create_string_utf8(env, path, NAPI_AUTO_LENGTH, &result); + return result; +} + /* hostBootIdentity() → { available, hostUuid?, bootTime? } (Darwin only). */ static napi_value HostBootIdentity(napi_env env, napi_callback_info info) { (void)info; @@ -298,6 +331,7 @@ static napi_value Init(napi_env env, napi_value exports) { { "unlinkAt", UnlinkAt }, { "renameAt", RenameAt }, { "mountIdentity", MountIdentity }, + { "fdPath", FdPath }, { "hostBootIdentity", HostBootIdentity }, }; for (size_t i = 0; i < sizeof(fns) / sizeof(fns[0]); i += 1) { diff --git a/scripts/lint-test-hermeticity.mjs b/scripts/lint-test-hermeticity.mjs index 95e367605..acd9516f4 100644 --- a/scripts/lint-test-hermeticity.mjs +++ b/scripts/lint-test-hermeticity.mjs @@ -100,18 +100,17 @@ export function createScanBudget( // Root cause of the long-running CI red (chronic since at least 2026-08-01): baselines // were being refreshed on built trees. Making the scan dist-blind is a MASTER-PLAN item. export const UNRESOLVED_BASELINE = Object.freeze({ - // 2026-08-05 (build-free, CI-STATS-HERMETIC-001/521): +6 from the new - // snapshot/refresh/temp-agent tests in update-readme-stats.test.ts — - // parent worktree re-measured at exactly the prior 12473. Prior: W3-PR-B1. - count: 12479, - digest: 'a2a428b57d1f26dd4b2347b63ca487501bf073afd87f89b7e60a47b7f3fef2c9', + // 2026-08-05 (build-free, W3-PR-B2): +2 from the darwin ops-v2 parity and + // fdPath native-suite additions. Prior: CI-STATS-HERMETIC-001/521 (12479). + count: 12481, + digest: '9ffe45a04d287fdab02cf9d0105a7952f30925c7e569dbbb2a50a0f10347bd86', }); export const PRODUCTION_INVENTORY_BASELINE = Object.freeze({ - // 2026-08-05 (CI-STATS-HERMETIC-001/521): update-readme-stats.mjs snapshot - // redesign — same 1197 count, content digest only. Prior: hotfix lazy-flags. + // 2026-08-05 (W3-PR-B2): file-lock darwin ops-v2 addition — same 1197 + // count, content digest only. Prior: CI-STATS-HERMETIC-001/521. count: 1197, - digest: '2095c587ebec3995b112d1cb40920d28bd4d23abe92f0f3ff66b394ae1212666', + digest: '0fa08c5397e39890a1d14adab5c3c30fc151400848ee23fca5864a77762c9f9d', }); const PROTECTED_ROOT_POLICY = new Map([ diff --git a/src/core/file-lock.ts b/src/core/file-lock.ts index b3ab49a1b..7fdc38434 100644 --- a/src/core/file-lock.ts +++ b/src/core/file-lock.ts @@ -18,6 +18,8 @@ import { statSync, constants as fsConstants, } from 'node:fs'; import { basename, dirname, join } from 'node:path'; +import { createRequire } from 'node:module'; +import { fileURLToPath } from 'node:url'; import { createHash, randomBytes, randomUUID } from 'node:crypto'; import { LOCKS_DIR } from './constants.js'; import { trace } from './observability.js'; @@ -1578,7 +1580,7 @@ export const linuxProcExecutionAuthorityAdapter: ExecutionAuthorityPlatformAdapt * Windows fills them with handle-relative NT primitives. */ export interface ExecutionAuthorityOpsV2 { - classify(): 'linux' | 'wsl'; + classify(): 'linux' | 'wsl' | 'darwin'; /** Open a directory strictly relative to an already-pinned parent handle * (or an absolute path when parentFd is null), O_NOFOLLOW at every step. */ openDirAt(parentFd: number | null, name: string): number; @@ -1624,6 +1626,138 @@ export const linuxProcExecutionAuthorityOpsV2: ExecutionAuthorityOpsV2 = realPathOf: (fd: number): string => realpathSync(`/proc/self/fd/${fd}`), }); +/** + * W3-PR-B slice-2 (PLATFORM-EXEC-AUTH-W3-DARWIN-001, design §4.1/§10): the + * Darwin implementation of the op surface, filled entirely from the native + * addon (@deckent/exec-authority-native — openat family + F_GETPATH + f_fsid). + * Binding absence is the same typed fail-closed boundary as every missing + * capability (`secure-open-unsupported`, D3) — never a path-based fallback. + * Consumer wiring (pinExecutionLockDirectories, clean.mjs twin) and the + * real-Mac real-binary closure proof are slice-3 scope. + */ +interface ExecAuthorityNativeBinding { + openDirAt(parentFd: number | null, name: string): number; + closeFd(fd: number): void; + fstatIdentity(fd: number): { dev: string; ino: string; isDirectory: boolean }; + readdirFd(fd: number): string[]; + unlinkAt(fd: number, name: string, removeDir: boolean): void; + renameAt(fromFd: number, fromName: string, toFd: number, toName: string): void; + mountIdentity(fd: number): { available: boolean; fsid?: string }; + fdPath(fd: number): string; +} + +// Loaded lazily and memoized: module-eval stays side-effect-free (the same +// contract that keeps fsConstants access lazy above), and repeated calls +// never re-probe the filesystem. Resolution is module-relative so the same +// candidates work from src/ (vitest) and dist/ (production build). +let execAuthorityNativeState: + | { readonly available: true; readonly binding: ExecAuthorityNativeBinding } + | { readonly available: false; readonly reason: string } + | null = null; + +function loadExecAuthorityNativeBinding(): + | { readonly available: true; readonly binding: ExecAuthorityNativeBinding } + | { readonly available: false; readonly reason: string } { + if (execAuthorityNativeState !== null) return execAuthorityNativeState; + const req = createRequire(import.meta.url); + const moduleDir = dirname(fileURLToPath(import.meta.url)); + const candidates = [ + join(moduleDir, '../../native/exec-authority/build/Release/exec_authority.node'), + join(moduleDir, '../../native/exec-authority/build/Debug/exec_authority.node'), + ]; + for (const candidate of candidates) { + try { + const binding = req(candidate) as ExecAuthorityNativeBinding; + execAuthorityNativeState = { available: true, binding }; + return execAuthorityNativeState; + } catch (error) { + if ((error as NodeJS.ErrnoException).code === 'MODULE_NOT_FOUND') continue; + execAuthorityNativeState = { + available: false, + reason: `binding-load-failed:${error instanceof Error ? error.message : String(error)}`, + }; + return execAuthorityNativeState; + } + } + execAuthorityNativeState = { available: false, reason: 'binding-not-built' }; + return execAuthorityNativeState; +} + +function requireExecAuthorityNative(): ExecAuthorityNativeBinding { + const state = loadExecAuthorityNativeBinding(); + if (!state.available) { + throw new ExecutionLockError( + `Execution authority native capability is unavailable (${state.reason})`, + 'unknown', + 'secure-open-unsupported', + ); + } + return state.binding; +} + +export const darwinNativeExecutionAuthorityOpsV2: ExecutionAuthorityOpsV2 = + Object.freeze({ + classify: (): 'darwin' => { + if (process.platform !== 'darwin') { + throw new ExecutionLockError( + `Darwin execution authority is unsupported on ${process.platform}`, + 'unknown', + 'secure-open-unsupported', + ); + } + requireExecAuthorityNative(); + return 'darwin'; + }, + openDirAt: (parentFd: number | null, name: string): number => + requireExecAuthorityNative().openDirAt(parentFd, name), + closeFd: (fd: number): void => requireExecAuthorityNative().closeFd(fd), + // The C primitive returns directory order; the op contract (twin parity) + // is sorted output. + readdirOf: (fd: number): string[] => + [...requireExecAuthorityNative().readdirFd(fd)].sort(), + unlinkAt: (fd: number, name: string, removeDir: boolean): void => + requireExecAuthorityNative().unlinkAt(fd, name, removeDir), + renameAt: (fromFd: number, fromName: string, toFd: number, toName: string): void => + requireExecAuthorityNative().renameAt(fromFd, fromName, toFd, toName), + identityOf: (fd: number): ExecutionLockDirectoryIdentity => { + const native = requireExecAuthorityNative(); + const identity = native.fstatIdentity(fd); + if (!identity.isDirectory) { + throw new ExecutionLockError( + 'Execution authority directory identity is unsupported', + 'unknown', + 'secure-open-unsupported', + ); + } + const mount = native.mountIdentity(fd); + if (!mount.available || !mount.fsid) { + throw new ExecutionLockError( + 'Execution authority mount identity is unavailable', + 'unknown', + 'secure-open-unsupported', + ); + } + return { dev: identity.dev, ino: identity.ino, mountId: mount.fsid }; + }, + realPathOf: (fd: number): string => requireExecAuthorityNative().fdPath(fd), + }); + +/** + * Platform-resolved op surface. Linux/WSL keeps the /proc facility + * byte-for-byte; Darwin resolves to the native-addon implementation whose + * every op is fail-closed on binding absence. Anything else is a typed + * unsupported boundary — never a guess (Law 2). + */ +export function resolveExecutionAuthorityOpsV2(): ExecutionAuthorityOpsV2 { + if (process.platform === 'linux') return linuxProcExecutionAuthorityOpsV2; + if (process.platform === 'darwin') return darwinNativeExecutionAuthorityOpsV2; + throw new ExecutionLockError( + `Identity-stable execution authority is unsupported on ${process.platform}`, + 'unknown', + 'secure-open-unsupported', + ); +} + function pinExecutionLockDirectories( projectRoot: string, ): ExecutionLockPinnedDirectories { diff --git a/tests/core/execution-authority-adapter-parity.test.ts b/tests/core/execution-authority-adapter-parity.test.ts index 69c47c910..67e83f51a 100644 --- a/tests/core/execution-authority-adapter-parity.test.ts +++ b/tests/core/execution-authority-adapter-parity.test.ts @@ -3,15 +3,25 @@ import { closeSync, mkdtempSync, openSync, rmSync, constants as fsConstants } fr import { tmpdir } from 'node:os'; import { join } from 'node:path'; -import { linuxProcExecutionAuthorityAdapter, linuxProcExecutionAuthorityOpsV2 } from '../../src/core/file-lock.js'; +import { + linuxProcExecutionAuthorityAdapter, + linuxProcExecutionAuthorityOpsV2, + darwinNativeExecutionAuthorityOpsV2, + resolveExecutionAuthorityOpsV2, +} from '../../src/core/file-lock.js'; // The build-time twin cannot be imported by production code (clean.mjs runs // before dist/ exists); this contract test is the ONLY sanctioned coupling // point between the two surfaces (PLATFORM-EXEC-AUTH-W1-INTERFACE-001). import { cleanExecutionAuthorityAdapter, cleanExecutionAuthorityOpsV2 } from '../../scripts/clean.mjs'; +// W3-PR-B slice-2: the native binding is built on demand (CI native job); +// its absence keeps every binding-backed block skipped, never guessed. +import { loadExecAuthorityNative } from '../../native/exec-authority/index.mjs'; const ADAPTER_SURFACE = ['classify', 'stableFdPath', 'pinnedMountId', 'directoryIdentity']; const onLinux = process.platform === 'linux'; +const onDarwin = process.platform === 'darwin'; +const nativeAvailable = loadExecAuthorityNative().available; describe('PLATFORM-EXEC-AUTH-W1-INTERFACE-001 — twin adapter parity', () => { it('exposes the identical frozen four-capability surface on both twins', () => { @@ -103,3 +113,103 @@ describe('W3-PR-B slice-1 — ops-v2 twin parity', () => { } }); }); + +describe('W3-PR-B slice-2 — darwin native ops-v2', () => { + it('exposes the identical frozen op surface as both existing twins', () => { + expect(Object.keys(darwinNativeExecutionAuthorityOpsV2).sort()) + .toEqual([...OPS_V2_SURFACE].sort()); + expect(Object.isFrozen(darwinNativeExecutionAuthorityOpsV2)).toBe(true); + }); + + it.runIf(onLinux)('resolver returns the /proc twin on linux and darwin classify fails closed', () => { + expect(resolveExecutionAuthorityOpsV2()).toBe(linuxProcExecutionAuthorityOpsV2); + // The darwin implementation must never activate off-platform (D3). + expect(() => darwinNativeExecutionAuthorityOpsV2.classify()) + .toThrowError(/unsupported/iu); + }); + + it.runIf(onDarwin)('resolver returns the native ops on darwin', () => { + expect(resolveExecutionAuthorityOpsV2()).toBe(darwinNativeExecutionAuthorityOpsV2); + }); + + it.runIf(onLinux && nativeAvailable)( + 'binding-backed ops behave identically to the /proc twin on a real tree', + () => { + // The exact code path Darwin ships, exercised on Linux CI: every op the + // darwin surface fills from the binding must match the /proc facility. + const root = mkdtempSync(join(tmpdir(), 'ops-v2-native-parity-')); + try { + const procOps = linuxProcExecutionAuthorityOpsV2; + const nativeOps = darwinNativeExecutionAuthorityOpsV2; + const procFd = procOps.openDirAt(null, root); + const nativeFd = nativeOps.openDirAt(null, root); + try { + expect(nativeOps.realPathOf(nativeFd)).toBe(procOps.realPathOf(procFd)); + const { mkdirSync: mk, writeFileSync: wf } = require('node:fs') as typeof import('node:fs'); + mk(join(root, 'child')); + wf(join(root, 'child', 'x.txt'), 'x\n'); + const childFd = nativeOps.openDirAt(nativeFd, 'child'); + const procChildFd = procOps.openDirAt(procFd, 'child'); + try { + expect(nativeOps.readdirOf(childFd)).toEqual(procOps.readdirOf(procChildFd)); + nativeOps.renameAt(childFd, 'x.txt', childFd, 'y.txt'); + expect(procOps.readdirOf(childFd)).toEqual(['y.txt']); + nativeOps.unlinkAt(childFd, 'y.txt', false); + expect(nativeOps.readdirOf(childFd)).toEqual([]); + } finally { + nativeOps.closeFd(childFd); + procOps.closeFd(procChildFd); + } + nativeOps.unlinkAt(nativeFd, 'child', true); + // identityOf needs a mount-identity source; on Linux the binding's + // f_fsid facility is typed-absent, so the darwin surface must fail + // CLOSED here rather than inventing a mountId (negative pin). + expect(() => nativeOps.identityOf(nativeFd)).toThrowError(/mount identity/iu); + } finally { + procOps.closeFd(procFd); + nativeOps.closeFd(nativeFd); + } + } finally { + rmSync(root, { recursive: true, force: true }); + } + }, + ); + + it.runIf(onDarwin && nativeAvailable)( + 'performs the full pinned-handle lifecycle on real Darwin', + () => { + const root = mkdtempSync(join(tmpdir(), 'ops-v2-darwin-')); + try { + const ops = darwinNativeExecutionAuthorityOpsV2; + expect(ops.classify()).toBe('darwin'); + const rootFd = ops.openDirAt(null, root); + try { + const identity = ops.identityOf(rootFd); + expect(identity.dev).toMatch(/^\d+$/u); + expect(identity.ino).toMatch(/^\d+$/u); + expect(identity.mountId).toMatch(/^-?\d+:-?\d+$/u); // f_fsid pair + const { realpathSync: rp, mkdirSync: mk, writeFileSync: wf } = + require('node:fs') as typeof import('node:fs'); + expect(ops.realPathOf(rootFd)).toBe(rp(root)); + mk(join(root, 'child')); + wf(join(root, 'child', 'x.txt'), 'x\n'); + const childFd = ops.openDirAt(rootFd, 'child'); + try { + expect(ops.readdirOf(childFd)).toEqual(['x.txt']); + ops.renameAt(childFd, 'x.txt', childFd, 'y.txt'); + expect(ops.readdirOf(childFd)).toEqual(['y.txt']); + ops.unlinkAt(childFd, 'y.txt', false); + expect(ops.readdirOf(childFd)).toEqual([]); + } finally { + ops.closeFd(childFd); + } + ops.unlinkAt(rootFd, 'child', true); + } finally { + ops.closeFd(rootFd); + } + } finally { + rmSync(root, { recursive: true, force: true }); + } + }, + ); +}); diff --git a/tests/native/exec-authority-native.test.ts b/tests/native/exec-authority-native.test.ts index 5460a1b89..35f5871d3 100644 --- a/tests/native/exec-authority-native.test.ts +++ b/tests/native/exec-authority-native.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { mkdirSync, mkdtempSync, rmSync, writeFileSync, existsSync } from 'node:fs'; +import { mkdirSync, mkdtempSync, rmSync, writeFileSync, existsSync, realpathSync, renameSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; @@ -106,6 +106,24 @@ describe.runIf(loaded.available)('exec-authority native primitives', () => { }); }); + it('resolves the kernel-verified CURRENT path of a handle (fdPath, W3-PR-B slice-2)', () => { + withTempTree(root => { + mkdirSync(join(root, 'inner')); + const fd = native.openDirAt(null, join(root, 'inner')) as number; + try { + // Darwin: F_GETPATH; other POSIX: /proc readlink — both must agree + // with the canonical filesystem view. + expect(native.fdPath(fd)).toBe(realpathSync(join(root, 'inner'))); + // The path is CURRENT, not cached at open: a rename of the directory + // is reflected by the very next fdPath call on the same handle. + renameSync(join(root, 'inner'), join(root, 'renamed')); + expect(native.fdPath(fd)).toBe(realpathSync(join(root, 'renamed'))); + } finally { + native.closeFd(fd); + } + }); + }); + it('reports platform-typed mount and host/boot identity availability', () => { withTempTree(root => { const rootFd = native.openDirAt(null, root) as number; From 747bca2acde992cce72ecb8bf9becd09abaad08e Mon Sep 17 00:00:00 2001 From: Alperen Date: Thu, 6 Aug 2026 01:09:25 +0300 Subject: [PATCH 5/5] =?UTF-8?q?docs(master):=20W3B2=20settlement=20?= =?UTF-8?q?=E2=80=94=20iki=20receipt=20consumed,=203347=20OPEN'a=20d=C3=B6?= =?UTF-8?q?ner=20(dilim-3=20kald=C4=B1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/MASTER-PLAN.md | 6 ++--- docs/generated/master-plan-active.json | 35 +++++++++++++++++--------- docs/generated/master-plan-active.md | 8 +++--- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/docs/MASTER-PLAN.md b/docs/MASTER-PLAN.md index f6abbd9f4..aead7981d 100644 --- a/docs/MASTER-PLAN.md +++ b/docs/MASTER-PLAN.md @@ -314,8 +314,8 @@ Current receipt register: | `GR-2026-08-05-CI-RATCHET-519-01` | CI-DOCS-SCRIPTS-RATCHET-TIMEOUT-001 | G1 | `tests/scripts/test-containment-inventory-ratchet.test.ts@991d9b0e4c7a784610ecb89a949f18c9a51b832e6f157f34ddf54c8184868831`; 519 fix'i: 60s test-timeout'u ölçüm-temelli 180s'e çekilir (lokal build-free 48.9s; CI runner çarpanı ~2-3x) | owner=Alperen; decision=APPROVED; scope=exact one-path measured timeout raise; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T13:03:09Z | `ONE_SHOT`: consumed@2026-08-05T13:31:54Z | | `GR-2026-08-05-EXEC-AUTH-W3B1-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `src/core/file-lock.ts@dbc321feb2c441dc50b1a31b409aec938baa4374c8a39450f75b15e05ab9638d`; `scripts/clean.mjs@1c63b2b18d016a413e5ff5e90288f844fe5da10fb93e4132799650325ba4a532`; `tests/core/execution-authority-adapter-parity.test.ts@16760f78c7be6748ce5b9ac37c3db55dfff94df11340f092fe12228e75daaedf`; W3-PR-B dilim-1 (tasarım §10): op-tabanlı ExecutionAuthorityOpsV2 arayüzü (openDirAt/readdirOf/unlinkAt/renameAt/identityOf/realPathOf) file-lock'ta tanımlanır ve Linux impl'i mevcut /proc mekaniğiyle doldurulur; pinExecutionLockDirectories'in doğrudan open/stat işlemleri op-çağrılarına taşınır (Linux bayt-eşdeğer); clean.mjs ikizi aynı v2 şekline; parite testi v2 yüzeyini kapsar; Darwin impl'i + F_GETPATH + gerçek-Mac kanıt dilim-2/3 işi | owner=Alperen; decision=APPROVED; scope=exact three-path ops-v2 interface and linux migration; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T13:39:02Z | `ONE_SHOT`: consumed@2026-08-05T13:47:19Z | | `GR-2026-08-05-STATS-HERM-521-01` | CI-STATS-HERMETIC-001 | G1 | `scripts/update-readme-stats.mjs@e903538b116be362817216a81026b174e2a99833c6b5be0db7df6b54b76f9e51`; `tests/scripts/update-readme-stats.test.ts@08baa76976e2fdd639600ead094060dfe604cf2578192d8e7996302dbb8157aa`; `package.json@a3198253bf5c898080ee3c33a22afff18a21281e541ee094f4df3985c7a5a43a`; `README.md@d65cd7d13b2fe67b6cd8016c3eabc5a5e5d153a685d437543863009e776a15be`; `README.tr.md@e9ce5ac801a76d5e2f4c3f72143ac6c7a876884d6c2ad88add4c7f48227708ad`; `.deckent/workspace/IDENTITY.md@9f1341b0f390f7d7f56390d448b679d266270a5ed7b7235d6621262e4d996ed1`; `scripts/lint-test-hermeticity.mjs@8ea171a3045ab421de6884cea52d26dc7de075834606fac3a9a432bd268de6d7`; stats-hermetiklik yeniden-tasarımı (Alperen onayı): volatil rozet girdileri (sprint, coverage) yeni izlenen snapshot dosyasından (.deckent/workspace/stats-snapshot.json — yeni dosya, pin'siz) okunur; check ve write modları yalnız izlenen dosyaların fonksiyonu olur (temiz checkout deterministik); bilinçli güncelleme yeni refresh-snapshot moduyla yapılır (sprint monotonik; coverage yalnız açık with-coverage bayrağıyla artifact'tan alınır, aksi halde mevcut değer korunur); README/README.tr/IDENTITY regen bu snapshot'la; hermeticity baseline'ları test-değişimine göre tazelenir | owner=Alperen; decision=APPROVED; scope=exact seven-path stats snapshot hermeticity redesign plus new tracked snapshot file; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T21:26:31Z | `ONE_SHOT`: consumed@2026-08-05T21:45:51Z | -| `GR-2026-08-05-EXEC-AUTH-W3B2-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `native/exec-authority/src/exec_authority.c@df4b53a6e1d3dd45c84c9e3d0c055f4b0e4ff6fc28e08a86fe3bf5ca221c7571`; `tests/native/exec-authority-native.test.ts@4404eb93bbe7467b5ad7f99d9ec0ca171ceb6f32bf7dd5810f1e7e4f18d8e769`; `src/core/file-lock.ts@1fdac4cec0cf71e93d864648381ed618a9de483e38e5fbadd516373a3725c813`; `tests/core/execution-authority-adapter-parity.test.ts@3796de5c29fefebc4704e86db7f8d7bf7f0083a63e5be2f9369d31bce663b23c`; `.github/workflows/cross-platform-e2e.yml@0c0b7bb45ffebf23fbaef6acb28235876d42fc53530fb6f1f3df5dc811278061`; `scripts/lint-test-hermeticity.mjs@9038d3694492033bbd7767e57e3c57a2fac8dbf5a61edcee1adf473819f3a8d4`; `docs/analysis/platform-execution-authority-adapters-2026-08-05.md@3a79e65cc7d288005e7007ad7620fd1d065c94f44211b73edc4ccb691f545f72`; W3-PR-B dilim-2 (tasarım §10 adım-1'in Darwin yarısı): native addon'a tek yeni primitif fdPath (Darwin F_GETPATH, diğer POSIX'te /proc readlink — POSIX-portable, Linux CI'da test edilir); file-lock'ta darwinNativeExecutionAuthorityOpsV2 (ops-v2 yüzeyinin addon-tabanlı Darwin impl'i; binding yokluğu typed secure-open-unsupported, asla sessiz fallback) + platform-çözümlü ops-v2 resolver (classify tipi darwin'i kapsar, Linux yolu bayt-eşdeğer); parite testi Linux'ta native-vs-proc davranış paritesini, macos native job'ında gerçek-Darwin ops yaşam-döngüsünü koşar; workflow native job'ına parite dosyası eklenir; konsumer migrasyonu, clean.mjs twin'i ve gerçek-Mac real-binary clean/lock kanıtı dilim-3 işi; hermeticity baseline'ları test-değişimine göre tazelenir; tasarım-doku §10 dilim-kaydıyla güncellenir | owner=Alperen; decision=APPROVED; scope=exact seven-path darwin ops-v2 native implementation with dual-platform proof; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T22:00:11Z | `ONE_SHOT`: active | -| `GR-2026-08-05-W3B2-STATS-SUPP-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `README.md@15965939098979d1849fa640d7a84e0d38934a0dcbcf29af566563de862d775e`; `README.tr.md@74269852fdb278be342b5f63a6c8e46bc05a238d4e301e7c12a9737c9ef7ce8e`; `.deckent/workspace/IDENTITY.md@fdcf77ea175dcb57c34f723c81289d9e4065f43138e6b7af9154162b57c81c76`; W3B2 ek-dilimi (B4-SUPP emsali): dilim-2'nin yeni testleri README test-rozet sayısını değiştirir; 521 sonrası stats-gate PR-required olduğundan üç regen hedefi mekanik docs:stats write çıktısıyla güncellenir — içerik tamamen üreteç-türevli, elle metin değişikliği yok | owner=Alperen; decision=APPROVED; scope=exact three-path mechanical stats regen for W3B2 test-count delta; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T22:06:15Z | `ONE_SHOT`: active | +| `GR-2026-08-05-EXEC-AUTH-W3B2-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `native/exec-authority/src/exec_authority.c@df4b53a6e1d3dd45c84c9e3d0c055f4b0e4ff6fc28e08a86fe3bf5ca221c7571`; `tests/native/exec-authority-native.test.ts@4404eb93bbe7467b5ad7f99d9ec0ca171ceb6f32bf7dd5810f1e7e4f18d8e769`; `src/core/file-lock.ts@1fdac4cec0cf71e93d864648381ed618a9de483e38e5fbadd516373a3725c813`; `tests/core/execution-authority-adapter-parity.test.ts@3796de5c29fefebc4704e86db7f8d7bf7f0083a63e5be2f9369d31bce663b23c`; `.github/workflows/cross-platform-e2e.yml@0c0b7bb45ffebf23fbaef6acb28235876d42fc53530fb6f1f3df5dc811278061`; `scripts/lint-test-hermeticity.mjs@9038d3694492033bbd7767e57e3c57a2fac8dbf5a61edcee1adf473819f3a8d4`; `docs/analysis/platform-execution-authority-adapters-2026-08-05.md@3a79e65cc7d288005e7007ad7620fd1d065c94f44211b73edc4ccb691f545f72`; W3-PR-B dilim-2 (tasarım §10 adım-1'in Darwin yarısı): native addon'a tek yeni primitif fdPath (Darwin F_GETPATH, diğer POSIX'te /proc readlink — POSIX-portable, Linux CI'da test edilir); file-lock'ta darwinNativeExecutionAuthorityOpsV2 (ops-v2 yüzeyinin addon-tabanlı Darwin impl'i; binding yokluğu typed secure-open-unsupported, asla sessiz fallback) + platform-çözümlü ops-v2 resolver (classify tipi darwin'i kapsar, Linux yolu bayt-eşdeğer); parite testi Linux'ta native-vs-proc davranış paritesini, macos native job'ında gerçek-Darwin ops yaşam-döngüsünü koşar; workflow native job'ına parite dosyası eklenir; konsumer migrasyonu, clean.mjs twin'i ve gerçek-Mac real-binary clean/lock kanıtı dilim-3 işi; hermeticity baseline'ları test-değişimine göre tazelenir; tasarım-doku §10 dilim-kaydıyla güncellenir | owner=Alperen; decision=APPROVED; scope=exact seven-path darwin ops-v2 native implementation with dual-platform proof; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T22:00:11Z | `ONE_SHOT`: consumed@2026-08-05T22:09:14Z | +| `GR-2026-08-05-W3B2-STATS-SUPP-01` | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | G1 | `README.md@15965939098979d1849fa640d7a84e0d38934a0dcbcf29af566563de862d775e`; `README.tr.md@74269852fdb278be342b5f63a6c8e46bc05a238d4e301e7c12a9737c9ef7ce8e`; `.deckent/workspace/IDENTITY.md@fdcf77ea175dcb57c34f723c81289d9e4065f43138e6b7af9154162b57c81c76`; W3B2 ek-dilimi (B4-SUPP emsali): dilim-2'nin yeni testleri README test-rozet sayısını değiştirir; 521 sonrası stats-gate PR-required olduğundan üç regen hedefi mekanik docs:stats write çıktısıyla güncellenir — içerik tamamen üreteç-türevli, elle metin değişikliği yok | owner=Alperen; decision=APPROVED; scope=exact three-path mechanical stats regen for W3B2 test-count delta; exclusions=sprint,provider-call,build,destructive-action,other-files | 2026-08-05T22:06:15Z | `ONE_SHOT`: consumed@2026-08-05T22:09:14Z | ### 3.5 Typed blocker register @@ -835,7 +835,7 @@ specification'ını execute eder. Legacy provider adapter'ının varlığı PAEP | 3344 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001 | KERNEL-001 | KERNEL | ExecutionAuthorityPlatformAdapter arayüz-çıkarımı: file-lock.ts Linux impl'i davranış-değişimsiz adapter arkasına, clean.mjs ikiz-parite kontrat testi, cross-verify-evidence-broker /proc taraması | P1 | — | G1 | DONE | 1/1/1/1/-/-/- | Linux yolu bayt-eşdeğer davranışta kalır (mevcut lock+clean suite'leri yeşil); adapter arayüzü 4-yetenek ayrıştırmasını (fd-traversal/mount-pin/host-boot-id/liveness) tipler; clean.mjs ikizi parite-testiyle sabitlenir | Açılış 2026-08-05: D1-D3 onayı (Alperen); tasarım: docs/analysis/platform-execution-authority-adapters-2026-08-05.md §5 W1; `receipt=GR-2026-08-05-EXEC-AUTH-W1-01`; 2026-08-05 SETTLEMENT (b7ed80cb1): tipli 4-yetenek arayüzü + linuxProcExecutionAuthorityAdapter (file-lock) + cleanExecutionAuthorityAdapter ikizi + ikiz-parite kontrat testi 5/5 (aynı gerçek fd için birebir dev+ino+mountId); stable-path literal'leri adapter üzerinden; broker taraması: cross-verify-evidence-broker zaten tipli UNSUPPORTED_PLATFORM kapılı, W3 üçüncü-tüketici adayı; `proof=lock-clean-parity-suites-205of206-green`; Linux bayt-eşdeğerlik: lock+clean+fence 205/206, tsc temiz, hermetic build-free; 2026-08-05 DONE: Alperen 'w3 başlat' direktifi (zincir-ilerletme onayı — W3 READY'si deps-DONE ister) | 2026-08-05 | | 3345 | COMPOSITE-WORKER-001 | KERNEL-001 | KERNEL | Composite worker / nested team delegasyon kontratı: parent-child execution, authority tavanı, bütçe tavanı, concurrency limiti, completion/failure policy ve nested evidence tree | P1 | KERNEL-ATTEMPT-001 | G2 | OPEN | 0/0/0/?/0/?/? | Owner G2 tasarım kararı: delegated objective + authority_ceiling + budget_ceiling + allowed_runtimes + completion_contract + failure_policy + evidence_requirement alanları tiplenir; delegasyon yetkiyi yalnız daraltır, asla genişletmez; recursive bütçe/authority çift-harcaması imkânsız olur; dış orchestrator'lar (AutoGen nested Team, AG2 network sınıfı) bu kontratın altında composite worker olarak modellenir | Açılış: Alperen 2026-08-04 reconciliation onayı. Tetikleyici: 2026-07-30 rekabet günlüğü — AutoGen nested Teams (Team içinde Team) ve AG2 v1 network yapıları "runner içinde runner" modelini standartlaştırıyor; ledger'da recursive delegasyon kontratı karşılığı yok (KERNEL-ATTEMPT-001 tek-seviye claim/lease/fencing taşıyor; GRACEFUL-BUDGET-LANDING→BUDGET-CONTINUATION-001 landing'i kapsıyor, delegasyonu kapsamıyor) | 2026-08-04 | | 3346 | PLATFORM-EXEC-AUTH-W2-PROBE-001 | KERNEL-001 | KERNEL | macOS+Windows capability-probe CI job'ı: /dev/fd dizin-traversal semantiği, POSIX-delete uygunluğu, FileIndex/VolumeSerial kararlılığı gerçek runner'da ölçülür ve evidence-artifact olarak yayımlanır | P1 | — | G1 | DONE | 1/1/1/1/1/1/- | Probe job'ı required-değildir ve ürün davranışını değiştirmez; her platform için ölçüm JSON artifact'ı üretir; W3/W4 tasarım kilidi bu kanıtla atılır | Açılış 2026-08-05: D1-D3 onayı (Alperen); tasarım: docs/analysis/platform-execution-authority-adapters-2026-08-05.md §5 W2; `receipt=GR-2026-08-05-EXEC-AUTH-W2-01`; 2026-08-05 SETTLEMENT (PR #57 run 30991850136, 3/3 probe pass): GERÇEK-RUNNER ÖLÇÜMLERİ — darwin-arm64 (`5566df23b8e1deb6…`): /dev/fd dizin-traversal ÇALIŞMIYOR (readdir ENOTDIR, child ENOENT, identity mismatch) → W3 Darwin için native openat-ailesi TEK yol, D1 ölçümle doğrulandı; POSIX-delete+dev/ino-kararlılık+O_NOFOLLOW/O_DIRECTORY+kern.uuid/boottime hepsi supported; win32-x64 (`0e988567fd93477f…`): POSIX-delete SUPPORTED (D2 tabanı doğrulandı), VolumeSerial+FileIndex rename/reopen kararlı ve non-zero, MachineGuid supported; O_NOFOLLOW/O_DIRECTORY Node-sabitleri 0 → W4 secure-open kontratı native handle-flag eşdeğerleriyle kurulacak; linux-x64 referans (`6f2ad5bf7de0f009…`): tam-destek beklendiği gibi; `proof=real-runner-capability-probe-3platforms-run30991850136`; artifact'lar 30 gün retention'lı, digest'ler tam-SHA256'nın ilk 16'sı — tam değerler run-artifact'larında; 2026-08-05 DONE: Alperen 'w3 başlat' direktifi (zincir-ilerletme onayı) | 2026-08-05 | -| 3347 | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | KERNEL-001 | KERNEL | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | P1 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001, PLATFORM-EXEC-AUTH-W2-PROBE-001 | G1 | IN_PROGRESS | 1/0/0/?/0/?/? | Addon yalnız probe-doğrulanmış primitifleri sunar; yokluğu fail-closed; darwin adapter'ı file-lock+clean ikizinde aynı kontratla; kapanış macos CI'da gerçek-binary clean (dist'li rebuild) + lock yaşam-döngüsü yeşiliyle | Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner; `receipt=GR-2026-08-05-EXEC-AUTH-W3B2-01`; dilim-2 admission 2026-08-05: Alperen direktifi 'darwin dilim-2 trenini başlat' | 2026-08-05 | +| 3347 | PLATFORM-EXEC-AUTH-W3-DARWIN-001 | KERNEL-001 | KERNEL | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | P1 | PLATFORM-EXEC-AUTH-W1-INTERFACE-001, PLATFORM-EXEC-AUTH-W2-PROBE-001 | G1 | OPEN | 1/0/0/?/0/?/? | Addon yalnız probe-doğrulanmış primitifleri sunar; yokluğu fail-closed; darwin adapter'ı file-lock+clean ikizinde aynı kontratla; kapanış macos CI'da gerçek-binary clean (dist'li rebuild) + lock yaşam-döngüsü yeşiliyle | Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner; `receipt=GR-2026-08-05-EXEC-AUTH-W3B2-01`; dilim-2 admission 2026-08-05: Alperen direktifi 'darwin dilim-2 trenini başlat'; 2026-08-05 B2-DİLİM SETTLEMENT (c3bc7f1dd, tren-2026-08-06-b): darwinNativeExecutionAuthorityOpsV2 — ops-v2 yüzeyinin addon-tabanlı Darwin impl'i (fdPath/F_GETPATH primitifi POSIX-portable eklendi; binding lazy+memoized, yokluk typed secure-open-unsupported, identityOf f_fsid Linux'ta negatif-pinli fail-closed) + resolveExecutionAuthorityOpsV2 platform-çözümlü tek giriş (linux /proc bayt-eşdeğer); `proof=native-vs-proc-parity-linux-real-run`; Linux kanıt: native+parite 17 pass (binding-backed ops /proc twin'le birebir; rename-sonrası fdPath CURRENT-path pini), lock+clean+fence 7-dosya yeşil (176 pass), agent-pool 86/86 (module-eval pin), tsc temiz; macos kanıt tren PR'ının native job'unda (gerçek-Darwin yaşam-döngüsü bloğu); stats-regen ek-receipt kapsamında yapıldı (test-rozet 34180); `receipt=GR-2026-08-05-W3B2-STATS-SUPP-01`; dilim-3 kapsamı tasarım §10.1'de tiplendi (konsumer migrasyonu + ek primitifler + clean twin + addon ürün-kurulum stratejisi + gerçek-Mac real-binary kanıt); satır alt-dilim kuralıyla OPEN'a döner | 2026-08-05 | ### P04 — Runtime-wide authority and security diff --git a/docs/generated/master-plan-active.json b/docs/generated/master-plan-active.json index a61b3f6a4..cdc918af5 100644 --- a/docs/generated/master-plan-active.json +++ b/docs/generated/master-plan-active.json @@ -3,17 +3,17 @@ "generatedFrom": "docs/MASTER-PLAN.md", "sourceDigest": { "algorithm": "sha256(normalized-lf-utf8)", - "value": "f71d3d9c051c7a9efb01912bd4285f560c2c42f7090087d50313f180749301d3" + "value": "096040292e5f78ebc7e2a390ab0d5a77b8a8160c01c0efad7e31988b9d7b5d15" }, "summary": { "total": 373, "active": 350, "terminal": 23, - "receipts": 55, + "receipts": 56, "byState": { - "OPEN": 255, + "OPEN": 256, "READY": 0, - "IN_PROGRESS": 1, + "IN_PROGRESS": 0, "BLOCKED": 67, "VERIFY": 27, "DONE": 23, @@ -2951,10 +2951,10 @@ "id": "PLATFORM-EXEC-AUTH-W3-DARWIN-001", "program": "KERNEL", "priority": "P1", - "state": "IN_PROGRESS", + "state": "OPEN", "updated": "2026-08-05", "definitionDigest": "f2b33b8cd8d8d5ea4ee7b1f93ca5774c3affb0cc84109ca7549b23f6bec412c5", - "progressDigest": "367e82f7b5b2eb986ebd8e698bb82cca1ef590b4bb2250521b8bc2475360b714", + "progressDigest": "c0c6f6dd7bbdb44937734e0844f4b49c1d76262beaae6489f6d3a10c514f1e4b", "terminalClosureDigest": null }, { @@ -4714,8 +4714,18 @@ "authorityDigest": "05c2e722518cba2ff5e6b723b7846960ec2492a437da76a3d7de082349406aab", "lifecycle": { "mode": "ONE_SHOT", - "status": "active", - "transitionAt": null + "status": "consumed", + "transitionAt": "2026-08-05T22:09:14Z" + }, + "g7AttemptIdentity": null + }, + { + "id": "GR-2026-08-05-W3B2-STATS-SUPP-01", + "authorityDigest": "c863267a3287bcba6c1b835f0015d90e9046e9ff67626efe240e5eabc41c0257", + "lifecycle": { + "mode": "ONE_SHOT", + "status": "consumed", + "transitionAt": "2026-08-05T22:09:14Z" }, "g7AttemptIdentity": null } @@ -14982,7 +14992,7 @@ "gates": [ "G1" ], - "state": "IN_PROGRESS", + "state": "OPEN", "truth": { "C": "1", "W": "0", @@ -14998,10 +15008,11 @@ "evidenceReceipts": [ "GR-2026-08-05-EXEC-AUTH-W3A-01", "GR-2026-08-05-EXEC-AUTH-W3B1-01", - "GR-2026-08-05-EXEC-AUTH-W3B2-01" + "GR-2026-08-05-EXEC-AUTH-W3B2-01", + "GR-2026-08-05-W3B2-STATS-SUPP-01" ], "acceptance": "Addon yalnız probe-doğrulanmış primitifleri sunar; yokluğu fail-closed; darwin adapter'ı file-lock+clean ikizinde aynı kontratla; kapanış macos CI'da gerçek-binary clean (dist'li rebuild) + lock yaşam-döngüsü yeşiliyle", - "evidence": "Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner; `receipt=GR-2026-08-05-EXEC-AUTH-W3B2-01`; dilim-2 admission 2026-08-05: Alperen direktifi 'darwin dilim-2 trenini başlat'", + "evidence": "Açılış 2026-08-05: W2 settlement kanıtı (run 30991850136) + D1-D3 onayı; tasarım §4.1/4.3/5-W3; `receipt=GR-2026-08-05-EXEC-AUTH-W3A-01`; 2026-08-05 PR-A ALT-DİLİM SETTLEMENT (ed86f6a86): in-repo N-API addon iskeleti (openat-ailesi + darwin-guarded kimlik) + fail-closed loader + Linux gerçek-koşu 6/6 (symlink-reddi dahil) + ubuntu+macos build+test CI job'ı + ADR-D-005 merit kaydı §9; `proof=native-primitive-suite-6of6-linux-real`; kalan: PR-B darwin adapter'ının file-lock+clean wiring'i + gerçek-Mac real-binary clean/lock kapanış kanıtı; satır alt-dilim kuralı gereği OPEN'a döner (IN_PROGRESS aktif-receipt ister); 2026-08-05 PR-A macOS KANITI (PR #58): addon gerçek Darwin'de derlendi + primitive suite 6/6; PR-B TASARIMI tasarım-doku §10'da — stableFdPath Linux-şekilli çıktı, op-tabanlı arayüz v2 + F_GETPATH secure-open deseni + 2-3 PR'lık kademeli migrasyon planı; W4 aynı v2'yi doldurur; `receipt=GR-2026-08-05-EXEC-AUTH-W3B1-01`; 2026-08-05 B1-DİLİM SETTLEMENT (ad1408985, tren-2026-08-05-a): ExecutionAuthorityOpsV2 + Linux impl + pin-open'ların op-migrasyonu (locks-fd pinli-root'a relative) + clean ops-v2 ikizi + parite 7/7; `proof=ops-v2-lock-clean-fence-199of199`; kalan: dilim-2 Darwin impl (addon+F_GETPATH) + dilim-3 gerçek-Mac clean/lock kanıtı; satır alt-dilim kuralıyla OPEN'a döner; `receipt=GR-2026-08-05-EXEC-AUTH-W3B2-01`; dilim-2 admission 2026-08-05: Alperen direktifi 'darwin dilim-2 trenini başlat'; 2026-08-05 B2-DİLİM SETTLEMENT (c3bc7f1dd, tren-2026-08-06-b): darwinNativeExecutionAuthorityOpsV2 — ops-v2 yüzeyinin addon-tabanlı Darwin impl'i (fdPath/F_GETPATH primitifi POSIX-portable eklendi; binding lazy+memoized, yokluk typed secure-open-unsupported, identityOf f_fsid Linux'ta negatif-pinli fail-closed) + resolveExecutionAuthorityOpsV2 platform-çözümlü tek giriş (linux /proc bayt-eşdeğer); `proof=native-vs-proc-parity-linux-real-run`; Linux kanıt: native+parite 17 pass (binding-backed ops /proc twin'le birebir; rename-sonrası fdPath CURRENT-path pini), lock+clean+fence 7-dosya yeşil (176 pass), agent-pool 86/86 (module-eval pin), tsc temiz; macos kanıt tren PR'ının native job'unda (gerçek-Darwin yaşam-döngüsü bloğu); stats-regen ek-receipt kapsamında yapıldı (test-rozet 34180); `receipt=GR-2026-08-05-W3B2-STATS-SUPP-01`; dilim-3 kapsamı tasarım §10.1'de tiplendi (konsumer migrasyonu + ek primitifler + clean twin + addon ürün-kurulum stratejisi + gerçek-Mac real-binary kanıt); satır alt-dilim kuralıyla OPEN'a döner", "updated": "2026-08-05" }, { @@ -19448,6 +19459,6 @@ ], "registryIntegrity": { "algorithm": "sha256(canonical-json-utf8)", - "value": "288db96bd9b7341531bd45f7dea29b2a003e832f1fc814b322da7a14ab52e622" + "value": "dc570ce2bc30ca179c24648ed738e8d7356995ba32d162e96be7750adcca0ed4" } } diff --git a/docs/generated/master-plan-active.md b/docs/generated/master-plan-active.md index 071d4b620..decb3d951 100644 --- a/docs/generated/master-plan-active.md +++ b/docs/generated/master-plan-active.md @@ -5,7 +5,7 @@ **Schema:** 3 -**Source digest:** `sha256(normalized-lf-utf8):f71d3d9c051c7a9efb01912bd4285f560c2c42f7090087d50313f180749301d3` +**Source digest:** `sha256(normalized-lf-utf8):096040292e5f78ebc7e2a390ab0d5a77b8a8160c01c0efad7e31988b9d7b5d15` **Rows:** 373 total · 350 active · 23 terminal @@ -13,9 +13,9 @@ | State | Count | |---|---:| -| OPEN | 255 | +| OPEN | 256 | | READY | 0 | -| IN_PROGRESS | 1 | +| IN_PROGRESS | 0 | | BLOCKED | 67 | | VERIFY | 27 | | DONE | 23 | @@ -269,7 +269,7 @@ | 3325 | `CLEAN-DASHBOARD-POLICY-001` | OPEN | P1 | ASSURANCE | — | — | `clean`'in dashboard-koru policy'si ile `build:dashboard`'ın boş-çıktı beklentisi tek kararda uzlaşır | | 3343 | `PLATFORM-CLEAN-IDENTITY-ADAPTER-001` | OPEN | P1 | KERNEL | — | — | identity-stable delete adapter'ı Linux-only (/proc/self/fd + fdinfo mnt_id): macOS ve Windows'ta clean.mjs dürüst HOLD (E_CLEAN_IDENTITY_STABLE_DELETE_UNSUPPORTED) — cross-platform-e2e'nin TÜM macos/windows job'ları npm run clean'de düşüyor (08-03'ten beri 40/40 kırmızı aile) | | 3345 | `COMPOSITE-WORKER-001` | OPEN | P1 | KERNEL | `KERNEL-ATTEMPT-001` | — | Composite worker / nested team delegasyon kontratı: parent-child execution, authority tavanı, bütçe tavanı, concurrency limiti, completion/failure policy ve nested evidence tree | -| 3347 | `PLATFORM-EXEC-AUTH-W3-DARWIN-001` | IN_PROGRESS | P1 | KERNEL | `PLATFORM-EXEC-AUTH-W1-INTERFACE-001`, `PLATFORM-EXEC-AUTH-W2-PROBE-001` | — | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | +| 3347 | `PLATFORM-EXEC-AUTH-W3-DARWIN-001` | OPEN | P1 | KERNEL | `PLATFORM-EXEC-AUTH-W1-INTERFACE-001`, `PLATFORM-EXEC-AUTH-W2-PROBE-001` | — | Darwin execution-authority adapter'ı: native openat-ailesi N-API modülü + W1 arayüzünün darwin impl'i + gerçek-Mac real-binary clean/lock kanıtı (W2 ölçümü: /dev/fd yolu ölü — native tek yol) | | 4000 | `AUTHORITY-001` | OPEN | P0 | AUTHORITY | `SSOT-003` | — | Unified runtime authority parent | | 4010 | `PRINCIPAL-001` | OPEN | P0 | AUTHORITY | `SSOT-003` | — | VerifiedPrincipal across local, OIDC, workload and connector identities | | 4020 | `TENANT-001` | OPEN | P0 | AUTHORITY | `PRINCIPAL-001` | — | Canonical tenant/project/session scope enforcement |