S113 · SOURCE-BOUND GATE EVIDENCE
Makine-okunur proje durumu, insan özeti ve claim sınırları tek kaynağa bağlandı
Operations --test hedefi → focused test içindeki include_str!/#[path] bağı → kaynak kesiti Bu sayfa yalnız S113 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.
S113Focused kod testiOperations id exactsource SHA exacttest target exact
operation: project-status-manifest-synced
uygulama/model · focused test · Operations · 3 exact excerpt
sequence-bound=true · implementation-bound=false
01 · Testin bağlı olduğu uygulama/model kodu
Kapının yürüttüğü gerçek kaynak
tam dosyaL1–L1315
docs/M8.1-RPi5-Post-G8e-SMP-Roadmap.md::M8.1-RPi5-Post-G8e-SMP-Roadmap.md
# M8.1 — RPi5 G8e Sonrası Fail-Closed SMP Yol Haritası
**Durum:** G8f fiziksel PASS; G8g corrected contract/parser, per-CPU timer,
bounded runtime, RPi5-only production handoff/IRQ wiring ve hardened
machine-code/layout, tam regresyon matrisi ve deploy-relevant payload
reproducibility ile immutable BOOT8G package kapıları GREEN; S90 physical
microSD, S91 actual same-descriptor pre-arm ve S92 physical BOOT8G VERIFIED;
S93 permanent evidence/promotion PASS ile G8g `CPU1_PER_CPU_TIMER_ONLY`
kapsamında COMPLETE; S94 G8h contract/parser, S95 dormant bounded runtime,
S96 RPi5-only production wiring ve S97 production machine-code + layout
ile S98 image-free full matrix ve S99 reproducibility kapıları GREEN; S100
immutable package yerel olarak STAGED+VERIFIED; roadmap S101/program S109
mantıksal microSD kapısı S115–S119 fail-closed zinciri sonunda S119'da
STORAGE VERIFIED; S120'de kartın güç verilmemiş Pi'ye takılması kullanıcı
beyanı olarak kaydedildi; S121 BOOT8H capture/PTY ve direct immutable
physical-raw validator hazırlığını source-only kapattı, serialized workspace
`419/419` ve independent audit FINAL GO verdi; S122 actual same-descriptor UART
pre-arm `VERIFIED_PREPOWER_ARM`; S123'te tek power-on ve durable immutable
capture tamamlandı fakat direct strict wrapper leading NUL `23 > 5` nedeniyle
`12/12` REJECT verdi; S123 tüketildi, S124 archive/promotion STOP
**Güncel checkpoint tarihi:** 23 Ağustos 2026
**Boot/runtime fiziksel temel:** Sequence 92 `BOOT8G`, 18.978 B /
`4abf8bb1…1a2` immutable UART10 raw; Sequence 93 permanent evidence ile
VERIFIED. Sequence 80 `BOOT8F` tarihsel immutable prerequisite olarak korunur.
**Depolama fiziksel temel:** Sequence 119, S100 G8h exact4 için AppleDouble-aware
staged write/temp read-back/paired commit/final read-back ve eject kabulüdür.
S120'de kullanıcı eject edilmiş kartı güç verilmemiş Pi'ye taktığını bildirdi;
bu yerleşim bağımsız gözlenmedi. SUCCESS host lock exact retained ve helper
rerun yasak kalır. S121 host-only hazırlığı gerçek UART'ı açmadı ve physical raw
üretmedi. S122 actual UART'ı tek helper ile arm etti. S123 aynı helper üzerinden
tek power-on capture'ı durable `22.512 B / 0076cd00…a0f85 / 0444` kapattı;
strict wrapper `23` leading NUL'u maksimum `5` sözleşmesine karşı reddetti.
S119–S123 temeli physical `BOOT8H` PASS'i değildir; son fiziksel PASS S92
`BOOT8G` kalır. S123 validator-close snapshot'ı değişmeden power-on/off `1/0`
olarak korunur; ardından kullanıcı Pi gücünü bir kez kestiğini bildirdi.
Post-S123 closeout `post_S123_closeout_power_off=1`, lifecycle power-on/off
`1/1` ve güncel state `USER-REPORTED POWERED OFF`'tur; geçiş bağımsız
gözlenmedi, raw yeniden okunmadı/doğrulanmadı ve bu amendment yeni sequence ya
da physical PASS değildir.
## 1. Değişmez başlangıç sınırı
G8e, G8d'nin ilk CPU0→CPU1 SGI1 turunu değiştirmeden aynı kanalda yalnız bir
yeni delivery/ack/EOI/reschedule ve mevcut pinned task için yalnız bir yeni
wake/run turu ekledi. Fiziksel toplamların tamamı exact `2`, SGI1 pending ve
active son durumları `0`, aynı stack SP `0xd5000`, canary ve stack restore
sağlamdır. `GENERIC_SMP`, migration, TLB shootdown ve CPU2/CPU3 kapalıdır.
Sequence 80 G8f, bu temeli değiştirmeden post-BOOT8E quiescent release/ack
handoff'ını immutable direct UART10 raw üzerinde fiziksel PASS'e taşıdı.
Sequence 82 ise yalnız dormant per-CPU timer storage/API kaynak yüzeyini ekledi;
yeni bir runtime veya fiziksel davranış açmadı.
Sequence 83, fiziksel olarak imkânsız ilk G8g counter fixture'ını düzeltti;
runtime draft, production wiring ve fiziksel temel yine açılmadı.
Sequence 84 bounded runtime source'unu gerçek AArch64 compile harness ile kabul
etti; main/G8f/exception reachability, production image ve fiziksel davranış
yine açılmadı.
Sequence 85 yalnız RPi5 production reachability'yi açtı: G8f CPU0/CPU1
continuation seam'leri ve G8g-first IRQ interceptor bağlandı. Yeni bir image,
microSD/UART kanıtı veya generic SMP davranışı açılmadı.
Sequence 86 aynı production ELF üzerinde function-bounded G8g
call/CFG/store/barrier/system-register ve forbidden-path denetimini, ayrıca
tarihsel G8–G8f layout regresyonlarını bağımsız reviewer GO ile kapattı. Tam
board/feature matrisi, reproducibility, image ve fiziksel davranış açılmadı.
Sequence 87 workspace `227/227`, fault'suz QEMU hello+IPC+SEC5, üç production
build + iki compile-only SMP profil, G8–G8g layout `7/7` ve G8g marker `5/5`
kapılarıyla tam matrisi kapattı. Reproducibility, immutable package ve fiziksel
davranış açılmadı.
Sequence 88 ilk clean build'deki eksik gömülü-userspace prerequisite'ini
fail-closed yakalayıp dependency graph'ını düzeltti; ardından üç temiz
workspace/target'ta flat/loadable deploy payload'ını byte-for-byte doğruladı.
Immutable package, microSD/UART ve fiziksel davranış yine açılmadı.
Sequence 89 ilk G8g-aware image target'ını bütün G8g kapılarına bağlayıp exact
dört-file mode-`0444` frozen package'i dondurdu. Sequence 90 helper'ı önce
source-only auditlerden geçti; ardından kullanıcı power-off + 60 saniye teyidi
sonrası `/dev/disk6` TISD64G removable medya salt-okunur kimlikle bağlandı.
Frozen exact4 package formatsız yazıldı; read-back cmp/hash `4/4`, iki sync,
bağımsız post-write audit ve güvenli eject PASS verdi. Sequence 91'de iki
bağımsız audit actual IOSerial pair ve holder `0` sınırını doğruladı; frozen
helper aynı serial FD 3 üzerinde TIOCEXCL, 115200/8N1 raw, TCIFLUSH ve
`capture_armed=YES` verdi. Sequence 91 kapanışındaki tarihsel sınırda Sequence
92 aggregate strict raw validator hazırdı; Pi power-on veya physical raw henüz
açılmamıştı. Sonraki S92 tek-power BOOT8G ve S93 permanent evidence/promotion
kapıları artık tamamlandı; G8g dar `CPU1_PER_CPU_TIMER_ONLY` kapsamında
COMPLETE oldu. S94/G8h allocation-free contract ve strict host parser kapısı
GREEN'dir. S95 dormant bounded runtime source, gerçek AArch64 object kapısı ve
recursive production-unreachability denetimi de bağımsız FINAL GO ile GREEN;
S96 main/G8g/exceptions üzerindeki dar production wiring ve actual RPi5 build
kapısı ile S97 production machine-code/layout da bağımsız FINAL GO ile GREEN;
S98 image-free full matrix workspace `307/307`, nested S97 `56/56`, aggregate
`363/363`, beş clean profil `5/5`, QEMU/RPi4 absence ve fresh RPi5 layout/marker
kapılarıyla bağımsız FINAL GO aldı. S99 mevcut workspace semantic reference ile
dört fresh main/A/B/C production replica'yı layout `5×8=40/40`, raw,
strip-all ve loadable exact equality yüzeylerinde bağımsız FINAL GO ile
kapattı. S100 sıralı production bridge, exact 183-file source closure,
main/clean/evidence `4/4`, raw+ALLOC marker `6/6`/`G8HERR=0` ve atomic
no-overwrite publish ile immutable package'i yerel olarak STAGED+VERIFIED
yaptı. Roadmap'teki S101 ve programdaki S109 aynı mantıksal physical microSD
hedefini ifade eder; gerçek operasyon kronolojisi bu kapıyı S115–S119 olarak
kapattı. S115 `system_profiler` canonical-key ve S116 IORegistry exact-path
preflight'ları lock veya yazma öncesi fail-closed durdu. S117 ilk staged kopyadan
sonra macOS'un otomatik temp AppleDouble sidecar'ını saptayıp PREPARED lock'u
korudu; final S89 exact4 dörtlüsü bozulmadı, fakat temp pair kart durumunu MIXED
yaptı. S118 yalnız açık kurtarma yetkisiyle temp
pair'i temizledi, bir sync ve S89 exact doğrulamasından sonra lock'u kaldırdı.
S119 AppleDouble-aware helper ile S100 exact4'te `cp=4`, temp data read-back
`4/4` + sidecar exact `4/4`, paired commit `mv=4`, final data read-back `4/4` +
sidecar exact `4/4`, `sync=2` ve tam başarı sonrası `eject=1` verdi. Format,
UART, Pi power ve physical `BOOT8H` yapılmadı; SUCCESS host lock exact retained
ve helper rerun yasak kaldı. S120'de kullanıcı eject edilmiş S100 kartı güç
verilmemiş Pi'ye taktığını bildirdi; bu yalnız kullanıcı gözlemidir, bağımsız
cihaz gözlemi veya yeni aygıt işlem sayacı değildir. UART açılmadı ve Pi'ye güç
verilmedi. S121'de BOOT8H capture source `6/6`, strict contract `24/24`, PTY
`6/6`, physical-raw semantic `8/8` ve source `5/5` PASS verdi. Canonical
`12` validator / `60` marker occurrence / `57` distinct marker / `13.157 B /
27496440…c155` sonucu sentetiktir (`physical=NO`). Read-only Debug Probe
descriptor snapshot'ı port açılmadan alındı. Helper arm raw'ını exact
`0600`/nlink1/size0 doğrulayıp `capture_identity` device/inode yayımlar, checked
64 MiB cap uygular ve final aynı kimliği exact `0444` ile korur. Beş argümanlı
wrapper device/inode'u helper çıktısı + bağımsız live-FD audit'ten alır;
self-derived kimliği reddeder ve atomic PRE/POST stat'ları beklenen kimliğe ve
birbirine bağlar. Serialized workspace `419/419` (`64` test binary + `2`
doc-test, `66` grup) ve independent audit FINAL GO verdi. Actual UART, power ve
physical raw sayaçları yine `0` kaldı.
S122'de üç fresh pre-open örnek same-parent identity, holder `0` ve tek
candidate kapısını geçti. Exact S121 source ve iki byte-equal clean build
sonrası helper exact bir kez çağrıldı; aynı serial FD üzerinde TIOCEXCL,
`115200/8N1`, raw/flow-off, TCIFLUSH ve `capture_armed=YES` PASS verdi. Helper
canlı, invocation/open/retry `1/1/0`, Pi power `0`'dır. Arm raw kimliği
`16777231:22679159`, initial `0 B`; üç post-arm örnekte `1 B` hex `00`, mode
`0600`, nlink `1` stable kaldı. Açık raw immutable evidence değildir; close,
validator, physical `BOOT8H` ve promotion yapılmadı.
S123 final pre-power continuity'yi `2026-08-23T09:21:33Z` PID `4516`, FD
`3/4`, aynı raw identity, `1 B/00/0600` ve kalan `328 s` timeout ile geçti.
Kullanıcı tek power-on yaptı; raw `09:24:46Z` büyüdü. Helper retained exec
session'da exact exit `0` gözlemiyle `09:25:12Z` kapandı; BOOT8H offset
`21229..21244`, grace `3 s`, durable true. Immutable audit `09:26:14Z` aynı
device/inode, `22.512 B`, `0444`, nlink `1`, holder `0`, SHA-256
`0076cd00…a0f85` verdi. Beş-positional direct wrapper yalnız bir kez çağrıldı
ve `leading NUL prefix exceeds capture allowance: observed 23, maximum 5`
nedeniyle exit `1`; bütün `12/12` validator REJECT verdi. Preservation audit
`09:27:31Z` unchanged; post-exit USB continuity `09:29:58Z` PASS'tir. Retry,
raw edit/copy/delete, archive ve promotion `0`; capture transaction
validator-close power-on/off snapshot'ı `1/0`.
`PHYSICAL_RAW=REJECTED_IMMUTABLE`, `PHYSICAL_BOOT8H=REJECTED_NO_PASS`; S123
tüketildi, S124 STOP. Post-rejection non-gate closeout'ta kullanıcı tek
power-off bildirdi (`09:56:56Z` receipt; transition independently observed
değil); event-local yalnız power-off `1`, bütün cihaz/raw/validator/archive
işlemleri `0`, current power user-reported off'tur.
Bu kanıt yeni çalışmaların immutable regression temelidir. Sonraki hiçbir kapı:
- önceki `BOOT0`–`BOOT8F` marker zincirini değiştiremez;
- G8e sayaçlarını, raw ACK/EOI değerlerini veya final GIC durumunu sıfırlayamaz;
- kapsamına almadığı timer, IRQ, task, CPU veya address-space özelliğini açamaz;
- host/source/layout/matris/reproducibility kapıları yeşil olmadan karta gidemez;
- immutable UART raw ve strict validator olmadan boot/runtime fiziksel PASS
sayılamaz; microSD storage kabulü ayrı kapsamdır.
## 2. Tarihsel SMP compile temeli ve güncel runtime STOP
Sequence 61 tarihsel salt-okunur compile/topology kontrolünde şu dört profil
derlendi:
```text
board-rpi5,smp PASS
board-qemu,smp PASS
board-rpi5 PASS
board-qemu PASS
```
Bu sonuç yalnız compile/topology/stack temelidir. Olumlu parçalar:
- `kernel/src/percpu.rs`, BCM2712 `Aff1` topolojisini fail-closed çözer ve dört
bağımsız `PerCpu` slotu sağlar;
- `PERCPU_KERNEL_STACKS`, dört ayrı 16 KiB secondary stack taşır;
- `kernel/src/arch/aarch64/boot.S`, affinity alanlarını stack adresi veya
çarpımı yapılmadan önce doğrular; geçersiz topolojiyi park eder;
- SMP ve non-SMP profillerindeki eski `cpu % MAX_CPUS` alias yolu kaldırılmıştır.
Sequence 93 itibarıyla dar G8g runtime production akışına bağlı, kendi
machine-code/layout, tam matrix ve deploy-relevant payload reproducibility
ile immutable package kapılarından geçmiştir; generic SMP runtime yine de
açılamaz:
- `kernel/src/arch/aarch64/timer.rs` dört explicit periodic timer slotu ve
fail-closed API taşır; `rpi5_g8g.rs` yalnız G8f continuation ve CPU1 PPI27
interceptor üzerinden erişilir;
- `kernel/src/arch/aarch64/exceptions.rs::TICKS` globaldir;
- `kernel/src/task/scheduler.rs::SCHEDULER` tek, kilitsiz `static mut` nesnedir;
- local IRQ maskesi yalnız çağıran CPU'yu korur; çekirdekler arası kilit değildir;
- generic `secondary_core_entry`, UART ve global `yield_now()` yoluna girer;
- per-CPU IRQ stack ve tam exception-frame/task-context sahipliği tamamlanmamıştır;
- UART yazarı çekirdekler arası serialize edilmemiştir.
Bu yüzden `board-rpi5,smp` ile derlenmiş bir image generic SMP runtime'a hazır
ilan edilmez. Güncel boot/runtime fiziksel temel, SMP feature'ı kapalı S89
G8g-aware package'in S90'da karta yazılması ve S92 immutable raw'ında BOOT8G
PASS vermesiyle kuruldu; S93 bunu kalıcı evidence'a taşıdı. Bu kabul yalnız
`CPU1_PER_CPU_TIMER_ONLY` kapsamındadır ve son boot/runtime fiziksel PASS hâlâ
S92 `BOOT8G`'dir. Kart yükü S119 storage PASS ile S100 G8h exact4'e ilerledi;
bu değişiklik henüz çalıştırılmadı ve `BOOT8H` kanıtı değildir.
## 3. Kapı sırası
### G8f — Post-BOOT8E quiescent handoff/inventory
G8e sonunda CPU1 `rpi5_g8e_secondary_run` içindeki WFE parkında, CPU0 ise
`BOOT8E` sonrasındaki WFI döngüsündedir. Sonraki her özellik önce bu devam
seam'ini yeni donanım olayı üretmeden açmalıdır.
Tek yeni davranış:
1. CPU0, `BOOT8E` yayımlandıktan sonra exact bir release generation yayınlar ve
`SEV` üretir.
2. CPU1 WFE parkından uyanır, immutable G8e prerequisite'ini ve kendi local
durumunu salt-okunur doğrular, exact bir ack generation yayınlar ve yeniden
WFE parkına döner.
3. CPU0 ack'i en fazla beş CPU0 tick içinde gözler, kanıtı UART'a tek başına
yazar ve terminal `BOOT8F` marker'ını yayımlar.
Kabul:
- release/ack exact `1/1`, generation ve source/target doğru;
- CPU1 `MPIDR=0x100`, `TPIDR_EL1=1`, EL1h, IRQ maskeli ve timer kapalı;
- CPU0 timer açık ve tick sayacı handoff boyunca ilerliyor;
- G8e total send/delivery/ack/EOI/reschedule/wake/run değerleri exact `2`;
- SGI1 pending/active `0/0`, canary ve stack restore sağlam;
- yeni SGI send/delivery/EOI/reschedule, task wake/run ve GIC write exact `0`;
- `GENERIC_SMP=OFF MIGRATION=OFF TLB_SHOOTDOWN=OFF CPU2_3=OFF`.
STOP:
- timeout, duplicate release/ack veya yanlış MPIDR/TPIDR/EL/DAIF;
- CPU1 timer'ın açık olması ya da CPU0 timer/tick ilerlemesinin bozulması;
- CPU1 UART, heap, global scheduler, GIC write veya timer write yolu;
- G8e sayacı, stack/canary veya pending/active durumunda herhangi bir sapma;
- yeni IRQ, task veya address-space davranışı.
### G8g — Per-CPU periodic timer bookkeeping
G8f PASS olmadan başlanmaz. Periodic timer state ve tick ownership önce
çekirdek başına ayrılır; CPU0 compatibility accessor'ları G8e zincirini aynen
korur. CPU1 yalnız iki adet local PPI27 alır, her ACK/EOI sonrası mutlak CVAL
bir period ilerler ve sonunda timer kapatılır. Scheduler ve task çalıştırma yoktur.
Kabul:
- CPU0/CPU1 frequency, period, start, next-CVAL ve tick slotları alias değildir;
- CPU0 son işlenmiş deadline'ı checked `start + ticks * period`, next-CVAL
değeri checked `start + (ticks + 1) * period` olur; zero-period/overflow
reddedilir ve next-CVAL G8g boyunca değişmez;
- CPU0/CPU1 common-counter frequency ve period değerleri exact eşittir; CPU0
zaman kökeni G8b release-before-timer-start ve fired-before-future-capture
nedensel bağlarına uyar;
- CPU0 capture BOOT8F UART yazımı bittikten sonra fakat release öncesinde
alınır; CPU1 start-count strict olarak capture'dan büyüktür;
- CPU1 local PPI27 delivery/ack/EOI exact `2`; üçüncü IRQ yoktur;
- CPU1 first-CVAL→G8G1 previous-CVAL→G8G1 next-CVAL→G8G2 previous-CVAL
zinciri kopuksuzdur ve her advance exact bir perioddur;
- her tur `PREV_CVAL <= FIRED_COUNT < NEXT_CVAL` sınırındadır; drift exact
`FIRED_COUNT - PREV_CVAL` farkıdır ve bir perioddan küçüktür;
- ikinci next-CVAL sonrasındaki bounded third-check hâlâ exact iki IRQ görür;
iki IRQ, third-check ve final state herhangi bir G8g UART satırından önce
tamamlanır;
- CPU1 final timer durumu off/masked;
- CPU0 periodic timer ve global tarihsel marker zamanlaması bağımsız ilerler;
- yanlış CPU ID hiçbir zaman slot 0'a alias olmaz.
STOP: slot alias, CPU0 state mutasyonu, eksik/üçüncü IRQ, drift sınırı aşımı,
timer açık kalması, capture/start nedensellik hatası, G8G0–BOOT8G arasında
`[SEC` CPU0 tick marker'ı veya scheduler/task/heap/UART erişimi.
#### Sequence 81 contract/parser başlangıç checkpoint'i
21 Ağustos 2026 tarihinde G8g'nin allocation-free sabit sözleşmesi, strict
UART validator'ı, canonical dört satırlık sentetik suffix'i ve adversarial
test matrisi ilk kez donduruldu. Bu checkpoint runtime veya fiziksel BOOT8G
değildir. İçindeki `START + one period` CPU0 bağı Sequence 83 tarafından
fiziksel olarak imkânsız bulunmuş ve supersede edilmiştir.
Dondurulan observable sözleşme:
- `CPU0_SLOT=0`, `CPU1_SLOT=1`, `ALIAS=NO`;
- toplam dört slot vardır; geçersiz CPU kimliği `REJECT` olur ve CPU0'a
modulo/clamp/fallback ile alias edilmez;
- CPU0/CPU1 frequency, period, start, next-CVAL ve tick alanları açıkça ayrı
taşınır;
- tarihsel ilk fixture CPU0 next-CVAL'i start-count'tan yalnız bir period ileri
kabul ediyordu; bu madde artık geçerli kabul ölçütü değildir;
- CPU1 PPI27 delivery/ack/EOI ve local tick toplamları exact `2/2/2/2`'dir;
- CPU1 first-CVAL, G8G1 previous/next-CVAL ve G8G2 previous-CVAL zinciri
kopuksuzdur; her mutlak CVAL geçişi exact bir `period` ilerler;
- her `DRIFT_COUNTS`, `FIRED_COUNT - PREV_CVAL` ile aynıdır ve bir perioddan
küçüktür; üçüncü IRQ yoktur;
- final CPU1 timer `OFF`, interrupt mask `ON` kalır;
- CPU0 next-CVAL ve historical tick görünümü değişmeden kalır;
- scheduler, task, heap, CPU1 UART, SGI, migration, TLB shootdown ve CPU2/3
exact kapalıdır.
Sequence 81 tarihsel sentetik validator özeti (current acceptance değildir):
```text
G8g PASS: cpu0_slot=0 cpu1_slot=1 cpu1_irqs=2 acks=2 eois=2
local_ticks=2 deadline_deltas=540000/540000 cpu0_mutations=0
final_timer=off+masked boot8g_tick=1101
```
Bu checkpoint'in tarihsel G8g UART/adversarial testleri `9/9`, source-boundary
testleri `4/4` PASS vermiştir. Bu sayılar corrected Sequence 83 hedefinin
yerine kullanılamaz.
Runtime o checkpoint'te bilinçli STOP'tur. Bugün workspace'te bulunan
`kernel/src/rpi5_g8g.rs` draft'ı Sequence 81 kabulünün parçası değildir ve
production'a hâlâ bağlı değildir.
#### Sequence 82 timer storage/API source checkpoint'i
21 Ağustos 2026 tarihinde dört explicit, cache-line hizalı periodic timer
slotu ve fail-closed lookup/API yüzeyi source TDD ile tamamlandı. CPU0'ın
mevcut init/accessor/rearm imzaları slot 0'a delege olur; CPU1 yazma API'leri
yalnız exact CPU1 kimliği ve BCM2712 MPIDR doğrulamasından sonra CVAL/CTL
registerlarına erişebilir. CPU2/3 yalnız storage/snapshot slotudur; invalid ID,
CPU2/3 ve yanlış current-CPU yolları ilk yazımdan önce reddedilir.
Alanlar even/odd generation protokolüyle yayımlanır. Writer sırası
`AcqRel CAS → fields/registers → ISB → Release`, bounded snapshot sırası
`Acquire generation → fields → Acquire fence → Acquire generation` olur ve
yalnız aynı çift generation kabul edilir. CPU0 rearm hata yolu timer'ı
off+masked bırakıp terminal WFE'ye geçer; dispatcher'a dönerek phantom global
tick üretemez.
Sequence 83 correction sonrası dar contract kapıları: G8f UART `9/9`, G8g
source `7/7`, G8g UART `11/11`, toplam contract hedefi `27/27` + CLI ve tam
simulation `206/206` PASS verdi. Sequence 82'deki beş board/feature compile
profili ile mevcut G8–G8f production layout zinciri `6/6` tarihsel regresyon
temeli olarak kalır. Sequence 84, `rpi5_g8g.rs` bounded runtime'ını dormant
AArch64 harness'ta ayrıca kabul eder. SMP profilleri compile-only'dir;
dispatcher/handoff wiring, G8g layout, image, microSD, UART ve fiziksel
`BOOT8G` hâlâ STOP'tur.
#### Sequence 83 counter-contract correction checkpoint'i
İlk `CPU0_START=540000000`, `CPU0_NEXT_CVAL=540540000`,
`CPU0_TICKS=1101` fixture'ı `START + one period` bağı nedeniyle fiziksel olarak
imkânsızdır. Corrected tek-kaynak bağı checked
`start + (ticks + 1) * period`'dur; canonical CPU0 değerleri
`START=0`, `LAST=594540000`, `NEXT=595080000` olur. Zero-period ile add/mul
overflow açıkça reddedilir.
Common-counter geçmişi nested G8b evidence'ına period equality,
`last_processed(start, period, g8b.start_ticks) <= g8b.timer_start_count` ve
`g8b.timer_fired_count <= CPU0_CAPTURE_COUNT` ile bağlanır. BOOT8F'nin yaklaşık
1602 karakterlik final UART çıkışının 115200/8N1 alt sınırı geçildikten sonra
`CPU0_CAPTURE_COUNT=603000000` alınır; release/wake sonrasındaki
`CPU1_START=603000100` strict olarak daha büyüktür.
CPU1 canonical zinciri
`603540100→604080100→604620100`, fired-count'lar `603540200/604080220` ve
`THIRD_CHECK_COUNT=604620200` olur. İki IRQ, third-deadline check ve final
timer/GIC state herhangi bir G8g UART satırından önce toplanır. G8G0 ile BOOT8G
arasındaki `[SEC` marker'ı CPU0 immutable tick iddiasıyla çeliştiği için
reddedilir. Ayrıntılar
[G8g Counter Contract Correction](M8.1-RPi5-G8g-Counter-Contract-Correction.md)
belgesindedir.
Bu checkpoint yalnız corrected contract/parser/fixture ve mevcut timer
storage/API testlerini kabul eder. Runtime kabulü daha sonraki Sequence 84'ün
ayrı kapısıdır; main, G8f ve exception dispatcher G8g referansı taşımaz.
#### Sequence 84 dormant bounded runtime checkpoint'i
Bounded `IDLE→ARMED→IRQ1→IRQ2→PARKED` runtime source'u ayrı source testleri ve
`aarch64-unknown-none` hedefli gerçek `no_std` compile harness ile kabul edildi.
Harness actual timer, GIC, G8/G8g contract ve runtime kaynaklarını `board-rpi5`
cfg açıkken aynı metadata derlemesine verir. Yalnız G8f prerequisite,
exception/TICKS ve arch IRQ guard/control yüzeyleri minimal mirror'dır; actual
G8f değişikliği ayrıca board-RPi5 cargo check'ten geçer. Production `main.rs`,
G8f continuation veya exception dispatcher reachability eklemez.
Bağımsız dar kabul `rpi5_g8g_runtime_source=13/13`, gerçek AArch64
`rpi5_g8g_runtime_compile=1/1`, aggregate
`verify-rpi5-g8g-runtime=41/41` + CLI + board-rpi5 check ve tam simulation
`216/216` PASS vermiştir. Workspace check mevcut 232 warning ile PASS;
production main/G8f/exception reachability taraması boştur.
Yetki ve publication sırası exact dondurulmuştur:
1. CPU0 immutable G8f ve CPU0 timer snapshot'ını doğrular, final BOOT8F UART
sonrasında `CPU0_CAPTURE_COUNT` değerini alır ve ancak sonra
release/barrier/`SEV` yayımlar.
2. CPU1 release'i Acquire-okur; prerequisite ve MPIDR kontrollerinden sonra
`CPU1_START` alır. CPU1 IRQ'ı açmadan önce kendi ARMED publication'ının CPU0
tarafından ayrı acknowledgement ile gözlendiğini doğrular.
3. İlk PPI27 EOI/completion sonrasında IRQ dönüşü unmasked kalır; böylece ikinci
PPI27 yaklaşık bir period sonra CPU0 veya UART ilerlemesinden bağımsız gelir.
4. İkinci PPI27 sonunda timer off+masked ve CPU1 IRQ maskelidir. CPU1 raw CNTVCT
ile ikinci next-CVAL yani üçüncü deadline'a aktif ve bounded ulaşır;
`THIRD_CHECK_COUNT`, read-only PPI27 snapshot ve PARKED publication'ın tek
sahibidir.
5. CPU0 PARKED/evidence atomiklerini Acquire-okuduktan sonra dört G8g marker'ını
tek yazar olarak yayımlar. Başarı yolunda IRQ1 ile IRQ2 arasında veya
third-deadline öncesinde G8g UART yoktur.
Runtime bu Sequence 84 checkpoint'inde yalnız dormant kaynaktır. G8f CPU0/CPU1
seam'leri, IRQ dispatcher interceptor, production layout, image, microSD, UART
ve fiziksel BOOT8G o aşamada STOP'tur. Ayrıntılar
[G8g Dormant Bounded Runtime Source Proof](M8.1-RPi5-G8g-Dormant-Bounded-Runtime-Source-Proof.md)
belgesindedir.
#### Sequence 85 IRQ + handoff wiring checkpoint'i
22 Ağustos 2026 tarihinde RPi5-only production reachability, test-first
entegrasyonla açıldı. İlk tur iki mevcut-sınır testi PASS ve wiring isteyen dört
test beklenen RED verdi; final integration source matrisi `6/6` PASS oldu.
Exact production sırası:
1. `main.rs`, `g8g_contract` ve `rpi5_g8g` modüllerini exact-once ve yalnız
`board-rpi5` cfg altında alır.
2. CPU1 G8f ack/repark publication sonrasında release predicate'ini WFE'den
önce poll eder; true olduğunda `rpi5_g8g_secondary_run()` no-return yoluna
girer, false olduğunda WFE sonrası yeniden poll eder.
3. CPU0 `BOOT8F` final UART write sonrasında aynı `IrqGuard` kapsamında
`rpi5_g8g_primary_run(final_ticks)` no-return continuation'ına girer.
4. IRQ dispatcher sahiplik sırası `G8g→G8e→G8d→G8b→generic timer/TICKS` olur.
G8g inactive iken `false`; active yanlış stage/INTID/raw-ack/count durumunda
terminal fail-closed `true` döner.
Aggregate `verify-rpi5-g8g-integration=47/47` + CLI + actual AArch64/RPi5
kernel build + historical G8f layout PASS verdi. Full simulation `222/222`,
workspace check mevcut 232 warning ile PASS; bağımsız G8f source `7/7` ve
tarihsel G8b/G8d/G8e/G8f source `36/36` PASS'tir. Mevcut G8b/G8d/G8e/G8f
layout kapıları da GREEN kaldı.
Production RPi5 ELF exact 7.690.768 B /
`db66471a8aed397e97cd95a27905e5066f2cbf34b91c981ef8405d1a5c8845f6`'dır.
Bu build henüz G8g function-bounded layout, immutable flat image veya fiziksel
kanıt değildir.
LLVM release-poll loop'unu peel ettiği için
`rpi5_g8g_secondary_released` predicate'i iki static direct `BL` taşır: ilk
anlık poll ve WFE sonrası loop poll. Primary-run, secondary-run ve interceptor
exact birer direct `BL` taşır; dar seam'de indirect `BLR/BR` yoktur. Sıra 86
predicate'i kör exact-one count ile değil CFG/sıra semantiğiyle denetleyecektir.
Ayrıntılar
[G8g IRQ + Handoff Wiring Proof](M8.1-RPi5-G8g-IRQ-Handoff-Wiring-Proof.md)
belgesindedir. G8g machine-code/layout, image/package, reproducibility,
microSD, UART ve fiziksel BOOT8G STOP'tur.
#### Sequence 86 production machine-code/layout checkpoint'i
22 Ağustos 2026 tarihinde gerçek `board-rpi5` production ELF'i hardened,
function-bounded AArch64 gate ile kabul edildi. Final gate exact symbol
binding/size ve function sınırlarına ek olarak şu semantiği bağlar:
1. LLVM'nin ayırdığı iki release-poll `BL` call-site'ı ayrı
true/false/WFE/no-return-run CFG segmentleridir; primary-run ve interceptor
exact birer direct call'dır.
2. Dispatcher segmentleri G8g→G8e→G8d→G8b→generic timer sırasını, handled
branch, false fallthrough ve ortak return epilogue'u korur.
3. Active predicate CPU1 MPIDR + explicit ownership Acquire conjunction'ıdır;
inactive/foreign CPU yolu false, active mismatch terminal fail-closed'dur.
4. PPI helper `16 <= INTID < 32`, checked shift, exact read-only GIC snapshot
ve bounded sret yüzeyine sahiptir.
5. Handler raw ACK/INTID 27'yi, exact iki EOIR base/payload write'ını ve her
write sonrası DSB/ISB→evidence sırasını kanıtlar.
6. Stage CAS old/new/base/failure hedefleri, CPU1 full
`[d3, d3+period)` third-check loop CFG'si ve post-deadline PPI recheck'i
exact bağlanır.
7. CPU0 TICKS yüzeyi exact iki Acquire read/no-store ve register address
lifetime ile; marker yolu PARKED/evidence-before-UART olarak doğrulanır.
8. Primary/fail/error/checked-arithmetic transitive closure'ları ile
panic/indirect/PAC/FP-SIMD-SVE-SME/MSR/forbidden paths self-fixture'larla
fail-closed denetlenir; terminal helper'lar exact WFE self-loop ve no-return
CFG taşır.
İlk mevcut-ELF GREEN script reviewer tarafından kabul edilmedi: peeled CFG,
predicate branch anlamı, PPI alt sınırı, EOI provenance, CAS binding,
third-check interval, TICKS address lifetime, transitive closures, geniş
FP/PAC yüzeyi ve WFE→RET drift'inde false-negative alanları bulundu. Script
harden edildi. Ara plain-`b` target parser değişikliği false RED üretti ve
düzeltildi. GIC PPI maskesindeki `1u32 << int_id` release panic edge'i
`checked_shl` ile kaldırıldı. Yalnız hardened final tekrar ve bağımsız GO kabul
sayılmıştır.
Final sonuç:
```text
verify-rpi5-g8g-layout=PASS (exit 0)
contract/runtime/integration=27/14/6=47/47 PASS
actual AArch64/RPi5 build=PASS
G8/G8b/G8c/G8d/G8e/G8f/G8g layouts=PASS
gate=100507 B / a42b613f…d3aa20
ELF=7692096 B / 91697a37…54f1b8
independent reviewer=GO
```
Ayrıntılar
[G8g Production Machine-Code + Layout Proof](M8.1-RPi5-G8g-Production-Layout-Proof.md)
belgesindedir. Tam board/feature/QEMU matrisi Sıra 87'ye aittir; flat payload,
reproducibility, image/package, microSD, UART ve fiziksel BOOT8G STOP'tur.
#### Sequence 87 full regression matrix checkpoint'i
22 Ağustos 2026 tarihinde durable `make verify-rpi5-g8g-matrix` hedefi
bağımsız tekrarında exit `0` verdi:
```text
workspace=227/227 PASS
QEMU hello+IPC+SEC5=PASS · fault=0
profiles=5/5 PASS · qemu/rpi4/rpi5 BUILD · qemu+smp/rpi5+smp COMPILE_ONLY
G8/G8b/G8c/G8d/G8e/G8f/G8g layouts=7/7 PASS
G8G0/G8G1/G8G2/BOOT8G/G8GERR markers=5/5 exact-once
fresh RPi5 ELF=7692040 B / 858644c8…ace620d
```
Her profil ayrı `target/g8g-matrix/<profile>` kökünde ve kalıcı
`kernel/.cargo/config.toml` bağlamı için `kernel/` çalışma dizininde yürütülür.
Workspace kökünden exit 0 veren diagnostic RPi5 build'i bu config bağlamını
taşımadı; 3.590.872 B / `17187014…f60a9a` ELF G8g local-symbol size kapısında
reddedildi ve `NON_PRODUCTION` olarak kaydedildi.
Başlangıç Sıra 86 34-girdi manifest aggregate'i
`f2a5241e…8021f1`'dir. Sıra 87 Makefile/script/test eklediği için bütün manifest
unchanged denmez; main/G8f/G8g/exceptions/timer/GIC kritik kaynak individual
hashleri aynen korunur.
`verify-core` dependency'sinin ürettiği 292.256 B / `985fbe10…3c747` image
yalnız build yan etkisidir. Tarihsel image target G8f seviyesinde bittiğinden
G8g reproducibility veya package acceptance sayılamaz. Ayrıntılar
[G8g Full Regression Matrix Proof](M8.1-RPi5-G8g-Full-Matrix-Proof.md)
belgesindedir. Sıra 88 reproducibility, image/package, microSD, UART ve fiziksel
BOOT8G STOP'tur.
#### Sequence 88 reproducible payload checkpoint'i
22 Ağustos 2026 tarihinde üç temiz workspace/target ile deploy-relevant RPi5
payload reproducibility kapısı bağımsız incelemeden GO aldı. İlk clean deneme,
kernel'in gömdüğü release `hello` ve `ipc_demo` çıktıları için runtime kapısında
explicit prerequisite bulunmadığından doğru biçimde STOP oldu. Pre-fix
manifest `227bf285…8bc65`, tarihsel Makefile 18.040 B / `698c1283…15b7c` idi.
Runtime hedefine yalnız `userspace-binaries` prerequisite'i eklenip source
testi genişletildi:
```text
post source manifest=167 files / 2807566 B / 2d58e9bd…f044f / modes exact
Makefile=18059 B / b8d4c2a4…2b7980a
matrix source test=2845 B / d038bde3…ad932a
full simulation=228/228 PASS
A/B/C each=47/47 G8g + 7/7 layouts PASS
```
Main/A/B/C flat payload 292.256 B / `985fbe10…3c747`, A/B/C `--strip-all`
ELF 358.216 B / `122578ab…389e5f` olarak byte-for-byte aynıdır. Entry
`0x80000`, PT_LOAD count `3`, `.bss=0xc8000` / 17.061.056 B ve normalized
program-header hash `f444d91f…d886c` exact eşleşir. Embedded hello, IPC, DTB
ve config de exact'tir.
Full debug ve `--strip-debug` ELF'ler temiz workspace mutlak yollarını taşıyan
`.debug_info/.debug_str/.symtab/.strtab` section'ları nedeniyle exact değildir;
karşılaştırılan 14 section'ın 10'u eşleşmiştir. GO yalnız boot'a giren
flat/loadable/strip-all yüzey içindir. İlk STOP'un özgün stdout'u arşivlenmedi;
clean snapshot'lar ve dependency graph kök nedeni doğrular, uydurma transcript
yoktur.
Tarihsel `image-rpi5` target'ı G8g contract/runtime/integration/layout
kapılarını prerequisite olarak almadığından reproducible flat çıktı immutable
BOOT8G image/package kabulü değildir. Ayrıntılar
[G8g Reproducible Payload Proof](M8.1-RPi5-G8g-Reproducible-Payload-Proof.md)
belgesindedir. Sıra 89 package, microSD, UART ve fiziksel BOOT8G STOP'tur.
#### Sequence 89 immutable BOOT8G package checkpoint'i
22 Ağustos 2026 tarihinde `image-rpi5` fail-closed dependency zinciri
G8g layout→integration→runtime→contract kapılarına bağlandı. Artifact-free
167 dosya / 2.813.885 B clean source snapshot'ı `5de51108…8c375` content ve
`f56d6cb8…158c0b` mode manifestleriyle başladı; tek clean `make image-rpi5`
exit `0` verdi:
```text
G8g contract/runtime/integration=27/14/7 PASS
G8/G8b/G8c/G8d/G8e/G8f/G8g layout=7/7 PASS
ELF/raw G8G0/G8G1/G8G2/BOOT8G/G8GERR=5/5 exact-once
canonical fixture=4 lines / 1734 B / 9996bfc9…13ab7 / success 4/4 / ERR 0
```
Frozen package exact
`evidence/rpi5/g8g/sequence-89-package-staged/package/` altındadır. Dizin exact
dört visible regular file taşır ve dördü de mode `0444`'tür. Image 292.256 B /
`985fbe10…3c747`, DTB 78.703 B / `40a2fbe9…bca00`, config 501 B /
`1248275…d76b`, SHA256SUMS 248 B / `fb112a41…3cb7a` olarak donduruldu.
Build/clean/evidence `cmp 4/4`, package manifest `3/3`, content/mode manifest
aggregate'leri `c84ceee0…bd7e51` / `0861bc4e…33c4e1` PASS'tir.
Bağımsız salt-okunur audit fixture SHA ve line-count RED kapılarını, unexpected
dördüncü checksum kaydı rejection'ını, clean image yolunda SD/UART/web komutu
yokluğunu ve evidence tree'de capture/UART dosyası bulunmadığını doğruladı.
README exact 98 satır / 4.179 B / `caccb85a…064b98`; final verdict GO'dur.
Ayrıntılar
[G8g Immutable Package Proof](M8.1-RPi5-G8g-Immutable-Package-Proof.md)
belgesindedir. Yalnız frozen evidence package Sıra 90 kart yazımının kaynağı
olabildi; UART ve fiziksel BOOT8G hâlâ STOP'tur.
#### Sequence 90 verified physical microSD checkpoint'i
22 Ağustos 2026 tarihinde S90 formatsız staged-write helper'ı ve S91
same-descriptor capture helper'ı gerçek aygıta dokunmadan donduruldu. S90
helper/test kimliği 9.570 B / `19428766…e2cad5c` ve 7.994 B /
`7af7ee46…958f3`; targeted `5/5`, S91 freeze full simulation `244/244` ve
bağımsız source-only no-device audit PASS'tir. Audit xtrace içinde
diskutil/cp/sync/cmp/Volumes erişimlerini exact `0/0/0/0/0` doğruladı.
S91 helper/source/PTY kimliği 17.775 B / `0edad273…d3599`, 7.121 B /
`4b64a5ac…90384` ve 18.449 B / `587275fb…9de0`'dır. Owner kapısı
source/contract/PTY `5/27/5`, direct PTY raw CLI ve full simulation `244/244`
PASS verdi. Bağımsız audit marker split `14/14`, signal/HUP durable mode-0444
raw ve framing/NUL negative kapılarını doğruladı.
Darwin PTY sonucu `pty_tiocexcl_enforcement=UNAVAILABLE
second_open=ALLOWED`'dır; exclusivity enforcement iddiası yoktur. Gerçek S91
actual IOSerial cu/tty pair, holder-free `lsof` ve aynı açık descriptor ister.
S90 source freeze tarihinde disk access/write/read-back/eject yapılmadı, gerçek
UART açılmadı veya arm edilmedi ve `capture_armed=YES` yoktu. Bu, fiziksel
adımdan önceki tarihsel STOP sınırıdır. Sonraki exact fiziksel
kapıda kullanıcı Pi'nin kapalı olduğunu ve 60 saniye beklendiğini teyit etti.
Salt-okunur kimlik `/dev/disk6` TISD64G / serial `0x425001fa` /
62.549.655.552 B / Physical WholeDisk / removable-ejectable /
`OSInternalMedia=false`; volume `/dev/disk6s1` FAT32 `ASELSANBOOT`, UUID
`44ABB50F-DB63-3DB8-A6B2-C5303E3211E9` ve mount
`/Volumes/ASELSANBOOT` olarak bağlandı. Built-in reader'ın `Internal=true`
niteliği medyaya `Internal=false` diye aktarılmadı.
Exact formatsız target exit `0`; source `5/5`, package exact4/mode0444 `4/4`,
manifest `3/3`, write/read-back cmp `4/4` ve hash `4/4` PASS verdi. Helper sync'i
ve ikinci `/bin/sync`, bağımsız post-write audit `FINAL GO` ve
`diskutil eject /dev/disk6` exit `0` tamamlandı. Post-eject disk ve mount
ikisi de yoktu. S90 yalnız fiziksel SD kapısı olarak VERIFIED'dır; boot/runtime
kabulü değildir.
Ayrıntılar
[G8g SD ve UART Preparation Proof](M8.1-RPi5-G8g-SD-and-UART-Preparation-Proof.md)
ve [G8g Verified MicroSD Write Proof](M8.1-RPi5-G8g-Verified-MicroSD-Write-Proof.md)
belgelerindedir.
#### Sequence 91 verified same-descriptor UART pre-arm checkpoint'i (tarihsel)
Verified S90 kartı güçsüz Pi'ye takıldı; disk ve mount absent kaldı. Root `3/3`
örnek/10 saniye ve bağımsız `3/3` örnek/12 saniye boyunca exact
`/dev/cu.usbmodem214402` inode 799 rdev 9,3 / `/dev/tty.usbmodem214402` inode
801 rdev 9,2 pair'i, IOSerial `0x1000044a7`, Debug Probe USB
`0x100004496`, session `783935390455`, address `7`, location
`0x02144000/34881536`, serial `E6647C74033F9131` sabit; diğer usbmodem ve
holder exact `0` kaldı.
Frozen source 17.775 B / `0edad273…d3599` ve prepared binary 35.016 B /
`5029a0f5…c28d` ile helper PID 83702 açıldı. Sequence 91 arm anında tek serial
FD 3 ve raw FD 4 canlı tutuluyordu; output
`/tmp/aselsanos-g8g-s91-prearm.QU5V4V/uart10.raw` yolundaydı.
Actual read-back `same_descriptor=true`, `TIOCEXCL_APPLIED`, effective
115200/8N1 raw, flow-off, termios `0/0/0/0xcb00`, VMIN/VTIME `0/0`,
`TCIFLUSH=PASS` ve `capture_armed=YES` verdi.
Üç post-arm pre-power örneğinde FD/USB kimliği ve raw inode `21967471`, size
`1`, mode `0600`, nlink `1`, hex `00` sabit kaldı. Sequence 91 kapanışında
POWER NOT GIVEN; terminal marker, capture close, raw mode `0444` ve physical
BOOT8G henüz yoktu. Ayrıntılar
[G8g Same-Descriptor UART Pre-arm Proof](M8.1-RPi5-G8g-UART-Prearm-Proof.md)
belgesindedir. O tarihsel anda aktif kapı Sequence 92 fiziksel BOOT8G idi.
Sequence 91 aşamasında S92 strict raw validator source-only final GO aldı. On
bir authoritative
validator, 54 milestone ve 51 distinct marker tag'i stage-prefix + global
full-raw taramayla bağlar. Semantic/source `7/5`, independent raw/identity
`25/8` ve serialized full simulation `256/256` PASS'tir. Same-FD reader
`O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK`, fstat-before/after, exact+1 EOF ve
dev/inode/mode0444/nlink1/bytes/SHA kimliğini locked/offline korur.
Canonical exact-LF 9.658 B / `f8f9c41a…9c2f6b` ve two-leading-NUL 9.660 B /
`a535d0b6…03b90c` positive raw'ları `physical=NO` sentetik girdilerdir.
Immutable S80 raw yalnız dört G8g markerı eksik olduğu için compatibility STOP
vermiş, Unicode/framing false reject üretmemiştir. Sequence 91 kapanışında
canonical physical raw/capture henüz üretilmemiş, S90 ve S91 tamamlanmış ve
aktif kapı S92 olmuştu. Sonraki S92 tek-power fiziksel BOOT8G ve S93 permanent
evidence/promotion kapıları artık tamamlandı; G8g dar
`CPU1_PER_CPU_TIMER_ONLY` kapsamında COMPLETE oldu. Sonraki S94/G8h
contract/parser, S95 dormant runtime source/object, S96 RPi5-only production
wiring ve S97 production machine-code/layout kapıları da GREEN; aktif kapı
ayrı S98 full matrix'tir.
Ayrıntılar
[G8g Physical Raw Validator Preparation Proof](M8.1-RPi5-G8g-Physical-Raw-Validator-Preparation-Proof.md)
belgesindedir. Tamamlanan fiziksel ve kalıcı kanıtlar sırasıyla
[G8g Physical UART Proof](M8.1-RPi5-G8g-Physical-UART-Proof.md) ve
[G8g Permanent Evidence and Promotion Proof](M8.1-RPi5-G8g-Permanent-Evidence-and-Promotion-Proof.md)
belgelerinde dondurulmuştur.
#### G8g tamamlanan operasyon zinciri
Aşağıdaki numaralar bütün kapıların ilk denemede geçtiği başarı yoludur.
Fail-closed reddedilen her gerçek checkpoint ayrı sıra tüketir; sonraki
numaralar buna göre kaydırılır.
1. **Sıra 82 — Timer storage/API source TDD (GREEN):** dört explicit,
cache-line ayrık slot; invalid-ID rejection; CPU0 compatibility;
MPIDR-doğrulamalı yalnız CPU1 yazma yetkisi; checked CVAL/local-tick
advance; final off+masked helper. Runtime, dispatcher ve image kapalı kalır.
2. **Sıra 83 — Counter-contract correction (GREEN):** imkânsız
`START+one period` fixture'ı reddedilir; checked `(ticks+1)*period`, G8b
causal bounds, post-BOOT8F-UART capture, strict CPU1 start ve pre-UART
third-deadline kanıtı dondurulur. Runtime draft kabul edilmez ve bağlanmaz.
3. **Sıra 84 — Dormant bounded runtime source TDD (GREEN):**
`IDLE→ARMED→IRQ1→IRQ2→PARKED` state machine, capture-before-release ve bütün
evidence-before-UART sırası source testleri + gerçek AArch64 dormant compile
harness ile kanıtlandı; main, G8f ve exception dispatcher erişimi yasaktır.
4. **Sıra 85 — IRQ ve handoff wiring (GREEN):** G8f CPU0/CPU1 continuation seam'leri
ile yalnız CPU1 PPI27 interceptor'ı bağlanır. CPU0 generic tick yolu
değişmez; ikinci IRQ sonunda CPU1 timer off+masked ve IRQ maskeli park olur.
5. **Sıra 86 — Production machine-code/layout (GREEN):** function-bounded çağrı,
system-register write, CVAL/CTL/ISB/EOI sırası, forbidden symbol ve section
yerleşimi hardened self-fixture/CFG gate'iyle fail-closed doğrulandı.
6. **Sıra 87 — Tam regresyon matrisi (GREEN):** önceki G7a–G8f kapıları, G8g
host testleri, QEMU smoke ve `board-rpi5`, `board-rpi5,smp`, `board-qemu`,
`board-qemu,smp`, `board-rpi4` profilleri çalıştırıldı. Reproducibility veya
image freeze iddiası yoktur.
7. **Sıra 88 — Üç yönlü reproducible payload (GREEN):** üç temiz workspace/target,
source ve toolchain fingerprint'i, flat payload byte eşitliği ve gerekiyorsa
stripped/loadable ELF eşitliği kaydedildi. Tam debug path farkları kapsam
dışında dürüstçe sınıflandırıldı; image/package kabulü yoktur.
8. **Sıra 89 — Immutable BOOT8G package (GREEN):** canonical kernel payload,
DTB, config ve checksum manifesti exact dört-file `0444` evidence package
olarak donduruldu; microSD'ye dokunulmadı.
9. **Sıra 90 — Exact microSD write (VERIFIED):** `/dev/disk6` TISD64G
removable medya ve FAT32 `ASELSANBOOT` salt-okunur kimlikle bağlandı; frozen
exact4 formatsız yazıldı, read-back cmp/hash `4/4`, iki sync, bağımsız audit
ve güvenli eject PASS verdi. Bu bir boot/runtime kabulü değildir.
10. **Sıra 91 — Same-descriptor UART pre-arm (VERIFIED):** actual pair ve holder
`0`, frozen helper identity, aynı FD 3 üzerinde TIOCEXCL + 115200/8N1
raw/flow-off + `TCIFLUSH`, `capture_armed=YES` ve üç stable pre-power sample
doğrulandı. POWER NOT GIVEN; raw açık ve mode `0600` kaldı.
11. **Sıra 92 — Fiziksel BOOT8G (VERIFIED):** aynı açık descriptor üzerinden
tek power-on; immutable 18.978 B mode-0444 raw ve aggregate/direct strict
validator ile `G8G0→G8G1→G8G2→BOOT8G` PASS. Exact iki CPU1 PPI27, third IRQ
NO ve final OFF+IMASK yalnız `CPU1_PER_CPU_TIMER_ONLY` kapsamını kapattı.
12. **Sıra 93 — Kalıcı evidence ve promotion (PASS):** 9-file archive,
evidence manifest 8/8, cmp 7/7, package 3/3, arithmetic 61/61 ve bağımsız
FINAL GO ile G8g tamamlandı; G8h ayrı workstream olarak açıldı.
13. **Sıra 94 — G8h contract/parser (GREEN):** allocation-free contract, exact
altı-satır canonical evidence block'u ve strict full-history parser CPU1'de
iki static 64 KiB stack, `ABABA`, 10/20/30/40 switch tick'i, checked
deadline/frame ownership ve final off+masked sınırını dondurdu. Canonical
PASS `physical=NO`; G8h runtime ve production reachability yoktur.
14. **Sıra 95 — G8h dormant bounded runtime (GREEN):** iki static 64 KiB
stack/frame, exact state/current/completion CAS zinciri, task-owned
`100/200/300/400` progress, `ABABA` switch'leri, checked iki-aşamalı
timeout publication'ı, tick-40 EOI/frame/ownership sırası ve bounded
post-stop denetimi source TDD + gerçek AArch64 `opt-level=1/z` object
kapısında doğrulandı. Host hedefi `43/43`, serialized simulation `288/288`
ve bağımsız audit FINAL GO'dur; production reachability yoktur.
15. **Sıra 96 — G8h RPi5 production wiring (GREEN):** main altında exact iki
RPi5-only module, G8g success-only CPU0/CPU1 continuation ve IRQ
dispatcher'da G8h-first `Option` frame-pointer seam'i bağlandı. Error park
G8h'den erişilemez; CPU0 `final_ticks+third_check_count` ile no-return
handoff yapar. Aggregate `52/52`, serialized simulation `297/297` (42
result block), actual RPi5 build ve narrow ELF denetimi bağımsız FINAL GO
aldı. Historical G8g layout beklenen RED'dir; full G8h layout kapalıdır.
16. **Sıra 97 — G8h production machine-code + layout (GREEN):** current
`board-rpi5` ELF'te G8g→G8h CPU0/CPU1 reachability, lower-EL sync restore,
264 B explicit state + 8 B pad / implicit SP restore, CPU1 critical CFG,
CPU0 dar formatter/UART sınırı ve altı success marker bağlandı. Exact hedef
`56/56`, G8–G8h layout `8/8`, serialized simulation `301/301` (43 result
block), mutation `4/4` ve 23 rejected ELF mutation PASS verdi. `G8HERR`
linked yüzeyde yoktur; bağımsız audit FINAL GO'dur.
17. **Sıra 98 — G8h full regression matrix (GREEN):** serialized workspace
`307/307` (44 result block), nested S97 layout `56/56` (7 group) ve
aggregate `363/363` (51 result block) PASS verdi. Üç clean BUILD ile iki
linked-ELF-free COMPILE_ONLY SMP profil exact `5/5`; fresh QEMU smoke PASS,
QEMU/RPi4 G8h symbol/ALLOC marker/reachability `0`, fresh RPi5 G8–G8h
layout `8/8`, success marker `6/6` ve `G8HERR=0` bağımsız FINAL GO aldı.
Matrix image-free'dir; build/rpi5 byte/hash/mtime envanteri değişmedi.
18. **Sıra 99 — G8h reproducibility (GREEN):** mevcut workspace ELF
salt-okunur semantic reference kaldı; aynı exact 177-file source
snapshotından dört fresh main/A/B/C production replica üretildi. Beş
subject G8–G8h layout `5×8=40/40`; raw payload `316.864 B /
7e4b713a…70de1`, strip-all `382.824 B / 59a23f58…79fa` ve loadable
signature `2.066 B / 4dac229f…8ee1` exact eşleşti. Full/strip-debug
farkları yalnız izinli non-ALLOC section'lardır; image/package üretilmedi.
19. **Sıra 100 — G8h immutable package (STAGED+VERIFIED):** sıralı
`kernel-rpi5→layout→S99→image-rpi5` bridge'i ve exact 183-file clean source
closure'ı ile ana/clean image üretildi; main/clean/evidence image, DTB,
config ve SHA256SUMS `4/4` exact eşleşti. Image `316.864 B /
7e4b713a…70de1`; raw ve ALLOC success marker `6/6`, `G8HERR=0`. Package
directory mode `0755`, exact dört payload mode `0444`/nlink1/distinct inode
ve atomic no-overwrite rename ile donduruldu. Package source `12/12`,
self-test `16/16`, final verify `12/12`, serialized simulation `325/325`
(46 result block) ve independent audit FINAL GO verdi.
20. **Sıra 115 — `system_profiler` preflight (REJECTED):** gerçek macOS
canonical anahtarlarıyla uyuşmayan kimlik parser'ı lock oluşturmadan ve
karta yazmadan fail-closed durdu. Kart final S89 exact4 kaldı.
21. **Sıra 116 — IORegistry exact-path preflight (REJECTED):** property-tree
prefix sonu hakkındaki hatalı varsayım lock ve yazma öncesi durduruldu;
gerçek exact path snapshot'ına göre düzeltildi. Kart final S89 exact4 kaldı.
22. **Sıra 117 — ilk staged-copy AppleDouble olayı (STOP):** ilk S100 temp
image kopyasından sonra macOS aynı temp adı için otomatik 4.096 B sidecar
yarattı. Helper bunu reddetti, PREPARED lock'u korudu ve retry/eject yapmadı;
final dört dosya S89 exact4 kaldı.
23. **Sıra 118 — exact S89 recovery (VERIFIED):** yalnız kullanıcının adını
verdiği temp ana dosya ve sidecar pair'i temizlendi; bir sync sonrası S89
exact4/base inventory doğrulandı ve ancak bundan sonra retained lock
kaldırıldı. Eject, final overwrite, helper retry, UART ve power yapılmadı.
24. **Sıra 119 — AppleDouble-aware microSD write (STORAGE VERIFIED):** S100
exact4 için staged `cp=4`, temp data read-back `4/4` + temp-sidecar exact
`4/4`, paired commit `mv=4`, final data read-back `4/4` + final-sidecar exact
`4/4`, `sync=2` ve yalnız tam başarıdan sonra `eject=1` tamamlandı. Format,
UART, Pi power ve `BOOT8H` yapılmadı; SUCCESS host lock exact retained ve
helper rerun yasak kaldı.
25. **Sıra 120 — powered-off Pi card insertion (USER-REPORTED):** kullanıcı,
eject edilmiş S100 kartı Pi'ye güç verilmeden fiziksel olarak taktığını
bildirdi. Bu yerleşim bağımsız gözlenmedi; aygıt işlem sayaçları S119
kapsamında değişmedi. UART, Pi power ve `BOOT8H` yapılmadı.
26. **Sıra 121 — capture + physical-raw preparation (SOURCE-ONLY VERIFIED):**
BOOT8H terminal-aware capture helper source `6/6`, G8h contract `24/24`,
PTY `6/6`; direct immutable G7a→G8h raw semantic `8/8` ve source `5/5`
PASS verdi. Canonical fixture `12` validator, `60` occurrence, `57`
distinct marker ve `13.157 B / 27496440…c155`, `physical=NO` verdi. İki
fresh helper build `35.048 B / f21d0027…9df2` byte-equal oldu; binary
kalıcı publish/freeze edilmedi. Arm FD exact `0600`/nlink1/size0 ve final
aynı device/inode exact `0444`; capture checked 64 MiB ile bounded'dır.
Raw wrapper'ın beş positional argümanındaki device/inode yalnız helper
`capture_identity` + independent live-FD audit provenance'inden gelir;
atomic PRE/POST stat aynı expected identity'ye ve birbirine bağlanır.
Serialized workspace `419/419`, `66` grup ve independent audit FINAL GO.
Production deployment `48497d9c-36c2-4890-959e-604c3b3469bc`; web
`212/212`, lint, tsc, `23/23` route ve dört cache-busted custom-domain exact
cmp PASS. Stale dashboard `Source=47d22c9` provenance değildir.
Descriptor yalnız salt-okunur keşfedildi; gerçek UART open, power ve raw
capture `0`/absent kaldı.
27. **Sıra 122 — actual same-descriptor UART pre-arm (VERIFIED_PREPOWER_ARM):**
üç fresh pre-open örnek exact Debug Probe pair, same-parent ve holder `0`
verdi. S121 source exact ve iki clean rebuild byte-equal doğrulandı. Tek
helper invocation serial FD 3 üzerinde TIOCEXCL, `115200/8N1`, raw,
flow-off, TCIFLUSH ve `capture_armed=YES` verdi; raw FD 4 aynı
`16777231:22679159` kimliğinde açık kaldı. Üç post-arm örnekte raw `1 B`
hex `00`, mode `0600`, nlink `1` stable idi. Helper canlı;
invocation/open/retry `1/1/0`, power `0`, physical raw
`OPEN_MUTABLE_NOT_EVIDENCE`. Sonraki kapı yeni ayrı exact S123 power
yetkisidir. Production publication
`2ec4e609-0a1b-4882-989f-f8d9d8d415d8`; web `213/213`, lint, tsc,
`23/23` rota ve dört cache-busted custom-domain exact cmp PASS verdi.
28. **Sıra 123 — one-shot power/capture (REJECTED_FAIL_CLOSED):** final
pre-power continuity PASS sonrası kullanıcı tek power-on yaptı. Mevcut
helper BOOT8H `21229..21244`, grace `3 s` ve durable close ile exit `0`
verdi. Immutable raw `22.512 B / 0076cd00…a0f85 / 0444`, identity
`16777231:22679159`; fakat beş-positional direct wrapper tek invocation'da
leading NUL `23 > 5` nedeniyle exit `1` verdi ve `12/12` validator REJECT
oldu. Preservation ve post-exit USB continuity PASS; retry/edit/copy/
archive/promotion yok. S123 tüketildi, physical BOOT8H PASS yok, S124 STOP.
Her sıra Operations'a exact test/hash/STOP kaydı, Timeline'a güncel kabul
noktası ve sıradaki tek yetkili işlem olarak girilir. Son boot/runtime fiziksel
PASS Sıra 92 G8g/BOOT8G'dir; Sıra 93 yeni physical run değil promotion, Sıra 94 host-only
sentetik contract/parser, Sıra 95 dormant source/object, Sıra 96 production
wiring/build, Sıra 97 production layout, Sıra 98 image-free full matrix ve Sıra
99 reproducibility, Sıra 100 ise yerel immutable package kaydıdır. Son
storage PASS S119'dur. Son yerleşim kaydı S120 kullanıcı beyanıdır: eject
edilmiş S100 kart güç verilmemiş Pi'dedir ve bu bağımsız gözlenmemiştir.
S121 son host-only hazırlıktır; S122 actual UART pre-arm tamamlanmıştır. S123
tek-power capture immutable olarak kapandı fakat strict validator leading NUL
`23 > 5` nedeniyle fail-closed reddetti. Son fiziksel PASS S92 `BOOT8G` kalır.
S123 aynı-sequence retry yetkisiz ve tüketilmiştir. Sequence tüketmeyen
post-rejection closeout'ta kullanıcı power-off bildirdi; geçiş bağımsız
gözlenmedi ve yeni PASS değildir. Yeni deneme ayrı exact fresh powered-off
continuity, fresh pre-arm ve yeni raw yetkisi ister.
S124 permanent archive yalnız strict physical PASS sonrasında açılır.
### G8h — CPU1 local static preemption
G8g'nin local periodic timer'ı iki sabit EL1 task ve iki ayrı 64 KiB stack
arasında yalnız CPU1 üzerinde preemption üretir. Heap ve generic scheduler yoktur.
G7d benzeri exact `ABABA`, dört switch ve tam integer exception frame kanıtlanır.
Kabul: ayrı stack bölgeleri, canary/SP restore, exact IRQ/EOI/switch sırası,
task progress ve terminal timer-off. STOP: frame veya stack alias, eksik EOI,
yanlış sıra, CPU1 UART/global scheduler sembolü, FP/SIMD ya da allocation.
#### Sequence 94 contract/parser checkpoint'i (GREEN)
Allocation-free contract ve strict validator aşağıdaki exact sınırı host-only
olarak dondurdu:
```text
PREREQ=BOOT8G
TARGET=CPU1 MPIDR=0x100 TPIDR=1
TIMER=PPI27 TIMER_SLOT=1 TIMER_EPOCH=NEW
PRIOR_TIMER=OFF PRIOR_IMASK=ON
TASKS=2 STACKS=2x64K STACK_ALIAS=NO
ORDER=ABABA SWITCH_LOCAL_TICKS=10/20/30/40
CPU1_DELIVERIES/ACKS/EOIS/DEADLINE_ADVANCES/LOCAL_TICKS=40/40/40/40/40
FINAL_TIMER=OFF FINAL_IMASK=ON GIC_ENABLED=1 GIC_PENDING=0 GIC_ACTIVE=0
SCOPE=CPU1_LOCAL_STATIC_PREEMPTION_ONLY
```
İki stack 4 KiB aligned ve ayrı 64 KiB bölgelerdir. Integer context
`GPR31+ELR+SPSR+SP` exact 264 B, trap frame 272 B/16-byte aligned'dır. Dördüncü
IRQ B'yi A'ya redirect ettiği için `TASK_B_RETURN=NO`; A completion token ile
original CPU1 monitor stack'e döner. Post-stop owner CPU1, yeni IRQ yok, CPU0
compatibility state immutable'dır.
Canonical block exact `G8H0→G8H1→G8H2→G8H3→G8H4→BOOT8H` sırasındadır.
Parser prerequisite zincirini, field count/set/order'i, binary framing'i,
stack/frame ownership'i, checked CVAL kronolojisini ve exact terminal state'i
adversarial olarak bağlar. CLI sonucu `source=synthetic physical=NO`'dur.
Sequence 94'te `kernel/src/rpi5_g8h.rs`, main/exception/timer reachability,
runtime/layout/package hedefi, image, microSD, UART, power-on veya physical
`BOOT8H` yoktur. Ayrıntılar
[G8h Contract/Parser Proof](M8.1-RPi5-G8h-Contract-Parser-Proof.md)
belgesindedir.
#### Sequence 95 dormant bounded runtime checkpoint'i (GREEN)
İki static stack/frame storage'ı, canary'ler ve
`IDLE→RELEASED→TASK_A→SWITCH1→SWITCH2→SWITCH3→SWITCH4→RETURNED→PARKED`
bounded state machine'i actual runtime source'ta kuruldu; her sapma terminal
`ERROR`'a gider. CPU0 capture + 200 period inclusive start limiti, bir-period
observation payı ve CPU1 start + 200 period published stage deadline'ı checked
aritmetikle ayrıldı.
Task A mevcut call-on-stack seam'iyle kendi stack'inde başlar; Task B
fixed-SP global assembly island'ında call ve SP mutation olmadan ilerler.
Task-owned progress `100/200/300/400`, segment toplamları A=3/B=2 ve switch
rotası `ABABA` / local tick `10/20/30/40`'tır. Dördüncü turda timer-off,
EOI+barrier, target-A saved-I, active ownership close ve frame redirect sırası
bağımsız audit ile doğrulandı. A completion token'ı tüketip monitor stack'e
normal döner; post-stop bir period'dan kısa pencerede 41. IRQ olmadığını bağlar.
Gerçek AArch64 `no_std` object gate'i actual runtime/timer/GIC/frame kaynaklarını
`opt-level=1` ve `opt-level=z` ile derledi; whole-object FP/SIMD/SVE/SME ve
panic-edge taraması, Task A unmasked CFG ve Task B fixed-SP denetimleri PASS
verdi. `make verify-rpi5-g8h-runtime` exact `43/43`, serialized full simulation
`288/288` (41 result block), workspace/fmt/diff kapıları PASS ve bağımsız audit
FINAL GO'dur. Runtime production source ağacından recursive olarak erişilemez.
Ayrıntılar
[G8h Dormant Bounded Runtime Source Proof](M8.1-RPi5-G8h-Dormant-Bounded-Runtime-Source-Proof.md)
belgesindedir.
#### Sequence 96 production wiring checkpoint'i (GREEN)
Dormant runtime yalnız RPi5'te tam üç dar production yüzeyine bağlandı. `main`
G8h contract/runtime modüllerini exact birer kez `board-rpi5` altında kaydeder.
G8g CPU1 başarı publication'ından sonra positive release poll üzerinden G8h
secondary no-return yoluna devam eder; bütün error yolları ayrı terminal WFE
parkında kalır. CPU0, `BOOT8G` UART yazımından sonra exact
`final_ticks+third_check_count` ile G8h primary no-return handoff'u yapar.
IRQ dispatcher raw ACK/INTID çözümünden sonra G8h `Option` frame pointer'ını
G8g ve generic timer/TICKS yolundan önce tüketir. `Some` exact returned frame'i
korur; `None` eski zincire delegasyondur. Mevcut trampoline `mov sp,x0`, 272 B
frame restore ve `eret` sırasını değiştirmeden kullanır.
Aggregate hedef `52/52`, serialized full simulation `297/297` (42 result
block), workspace/fmt/diff ve actual `board-rpi5` kernel build PASS verdi.
Frozen ELF `7.969.640 B / 8cb118b9…923a4`, runtime `86.153 B /
85ea5c0d…e7541`, integration source test `11.777 B / 68fdafb5…2d66`'dır.
Bağımsız reviewer inverted-release ve error-escape mutation açıkları
kapatıldıktan sonra FINAL GO verdi.
Historical G8g layout, genişleyen production symbol surface nedeniyle
beklendiği gibi RED/exit 1'dir. Bu sonuç G8h layout kabulü olarak yeniden
sınıflandırılmadı. Ayrıntılar
[G8h Production Wiring Proof](M8.1-RPi5-G8h-Production-Wiring-Proof.md)
belgesindedir.
Sequence 96 image/package, microSD, UART, power veya physical `BOOT8H` kapısı
değildir. Bu checkpoint'te son boot/runtime fiziksel PASS S92 BOOT8G, Pi
kapalıdır.
#### Sequence 97 production machine-code + layout checkpoint'i (GREEN)
Current `7.972.592 B / a005d1c1…c5bc` production ELF üzerinde exact G8g→G8h
CPU0/CPU1 reachability, function-bounded call/CFG/store/barrier/system-register
yüzeyi, lower-EL 43-instruction sync restore ve tarihsel G8–G8h layout zinciri
fail-closed bağlandı. Context machine ABI'si `264 B` explicit state + `8 B`
padding, toplam `272 B` frame ve `frame+272` implicit SP restore'dur.
CPU1 critical closure panic-free'dir. CPU0 pre-report path'leri panic-free;
terminal çıktı exact `core::fmt::write` + `fmt::Write for Uart` vtable + UART
write leaf sınırına bağlıdır. Bütün formatter graph için panic-free iddiası
yoktur. CPU0 `0x18f0` peak / `0xe700` headroom yalnız G8→G8h terminal path'in
G7-B task top'una göre relative bound'udur; whole-lifetime maximum değildir.
`make verify-rpi5-g8h-layout` exact `56/56 =
11/11+5/5+8/8+1/1+18/18+9/9+4/4`, G8–G8h `8/8`, serialized simulation
`301/301` (43 result block) ve mutation `4/4` ile 23 rejected ELF mutation
PASS verdi. ALLOC/read-only yüzeyde `G8H0..G8H4+BOOT8H` exact `6/6`;
`G8HERR` absent'tır. Workspace/fmt/diff/shell ve bağımsız audit FINAL GO'dur.
Ayrıntılar
[G8h Production Machine-Code + Layout Proof](M8.1-RPi5-G8h-Production-Machine-Code-Layout-Proof.md)
belgesindedir.
Sequence 97 full matrix, reproducibility, image/package, microSD, UART, power
veya physical `BOOT8H` yetkisi vermez. Bu checkpoint'te son boot/runtime
fiziksel PASS S92 BOOT8G, Pi kapalıdır.
#### Sequence 98 full matrix checkpoint'i (GREEN)
`make verify-rpi5-g8h-matrix` serialized workspace `307/307` (44 result
block), nested S97 layout `56/56` (7 group) ve aggregate `363/363` (51 result
block) verdi. Matrix yalnız `kernel/.cargo/config.toml` production context'iyle
beş clean/isolated profil çalıştırdı: QEMU, RPi4 ve RPi5 exact üç BUILD;
QEMU+SMP ve RPi5+SMP exact iki COMPILE_ONLY. SMP profillerinde linked ELF
üretilmedi.
Fresh QEMU ELF smoke PASS verdi. QEMU ve RPi4 linked ELF'lerinde G8h symbol,
SHF_ALLOC `.rodata` marker ve reachability exact `0` kaldı. Fresh RPi5 ELF'te
G8–G8h layout `8/8`; `G8H0..G8H4+BOOT8H` exact-once `6/6`, `G8HERR=0` PASS
verdi. Fresh ELF kimlikleri QEMU `8.805.016 B / 1c03511c…b9f0`, RPi4
`8.826.056 B / 0da581c9…476f`, RPi5 `7.972.576 B / bfeb9d6e…0008`'dir.
S98 source freeze'i Makefile `26.591 B / 57985a16…2a85`, matrix script
`7.720 B / 0ae6694d…56ca` ve source test `9.072 B / 11d72281…1c84`'tür.
S97 runtime/layout/test kimlikleri değişmedi. `build/rpi5` tarihsel image,
DTB, config ve SHA256SUMS byte/hash/mtime envanteri pre/post exact aynı kaldı;
`IMAGE_BUILD=NOT_RUN`.
Ayrıntılar
[G8h Full Regression Matrix Proof](M8.1-RPi5-G8h-Full-Matrix-Proof.md)
belgesindedir.
Sequence 98 reproducibility, image/package, microSD, UART, power, Generic SMP
runtime veya fiziksel `BOOT8H` yetkisi vermez. Bu checkpoint'te son
boot/runtime fiziksel PASS S92 BOOT8G, Pi kapalıdır.
#### Sequence 99 reproducibility checkpoint'i (GREEN)
`make verify-rpi5-g8h-reproducible` mevcut workspace ELF'i yeniden üretmeden
semantic reference olarak aldı; exact 177-file / 3.352.289 B source snapshotı
ile dört artifact-free fresh main/A/B/C production replica kurdu. Source path
hash'i `5244beea…0b8`, content manifest `18.224 B / a9e769aa…6a51`, mode
manifest `6.496 B / 1948ee4d…d4a`; independent inode denetimi `885/885` PASS
verdi. Workspace testleri `313/313` kapandı.
Workspace + main/A/B/C adaylarının her biri G8–G8h layout `8/8`, toplam
`5×8=40/40` PASS verdi. Beş subject'te raw payload `316.864 B /
7e4b713a…70de1`, strip-all ELF `382.824 B / 59a23f58…79fa`, loadable
signature `2.066 B / 4dac229f…8ee1` ve normalized PHDR `739 B /
edf9f3cb…0d7` exact eşleşti. Entry `0x80000`, PT_LOAD `3`, ALLOC `4/4` ve BSS
exact'tir.
Full-debug ELF'ler exact değildir: exact varyans kümesi `.debug_info`,
`.debug_str`, `.symtab`, `.strtab`; strip-debug varyans kümesi yalnız
`.symtab`, `.strtab` non-ALLOC bölümleridir. Bu beklenen diagnostic varyans
deploy divergence sayılmaz ve allowlist dışındaki her fark RED'dir.
Frozen source kimlikleri Makefile `27.275 B / a5f86bfa…a3a7`, reproducibility
script `36.168 B / ed1e8132…9f78`, S99 source test `13.374 B /
64822a5f…3956` ve versioned S98 test `10.834 B / 408f4df3…24f9`'dur.
Workspace source/ELF, araçlar, `build/rpi5` ve DTB/config pre/post değişmedi;
`IMAGE_BUILD=NOT_RUN`. Bağımsız reviewer FINAL GO verdi.
Ayrıntılar
[G8h Reproducible Payload Proof](M8.1-RPi5-G8h-Reproducible-Payload-Proof.md)
belgesindedir.
Sequence 99 image freeze/package, evidence staging, microSD, device, UART,
power, Generic SMP runtime veya fiziksel `BOOT8H` yetkisi vermez. Bu
checkpoint'te son boot/runtime fiziksel PASS S92 BOOT8G, Pi kapalıdır.
#### Sequence 100 immutable package checkpoint'i (STAGED+VERIFIED)
`make stage-rpi5-g8h-package`, production kernel ve G8h layout tamamlanmadan
S99'u başlatmayan sıralı bridge üzerinden yalnız `image-rpi5` kullandı. Exact
183-file source closure'ından ana ve artifact-free clean offline replica
üretildi. Main, clean ve frozen evidence package arasında image/DTB/config/
SHA256SUMS `4/4` exact eşleşti.
```text
source paths=f54f583b…246be
source content=a337bf55…ee0e6
source modes=9d3e9e2c…60ee1
image=316864 B / 7e4b713a…70de1
SHA256SUMS=248 B / dfc5eaac…1f5f
DTB=78703 B / 40a2fbe9…ca00
config=501 B / 1248275…76b
MAIN=CLEAN=EVIDENCE 4/4
raw markers=6/6
ALLOC markers=6/6
G8HERR=0
```
Package directory mode `0755`; exact dört regular payload mode `0444`, nlink1
ve birbirinden bağımsız inode taşır. Fully validated sibling stage yalnız
atomic final rename ile publish edildi; destination no-overwrite ve
`package.lock=absent` kaldı. Package source `12/12`, negative self-test `16/16`,
final verify `12/12`, serialized simulation `325/325` (46 result block),
check/fmt/sh-n/diff ve independent reviewer FINAL GO kapıları geçti.
Ayrıntılar
[G8h Immutable BOOT8H Package Proof](M8.1-RPi5-G8h-Immutable-Package-Proof.md)
belgesindedir.
Sequence 100 yalnız yerel `STAGED+VERIFIED` immutable package kabulüdür. Bu
checkpoint'te son boot/runtime fiziksel PASS S92 BOOT8G ve Pi kapalıdır.
#### Roadmap Sequence 101 / mantıksal S109 physical microSD checkpoint'i (S115–S119 ile STORAGE VERIFIED)
Roadmap'te S101, program durumunda S109 olarak adlandırılan hedef; tarihsel S90
yöntemini frozen S100 exact4 package'e dar uyarlayan tek mantıksal physical
microSD write/read-back/eject kapısıdır. Operasyon sıra numaraları, iki gerçek
preflight rejection'ı ve ayrı kurtarma yetkisini kaybetmemek için S115–S119
olarak korunur:
- [S115](../evidence/rpi5/g8h/sequence-115-system-profiler-preflight-rejected/README.md),
canonical `system_profiler` anahtar sapmasını lock/write öncesi reddetti.
- [S116](../evidence/rpi5/g8h/sequence-116-ioregistry-exact-path-preflight-rejected/README.md),
IORegistry exact property-tree path sapmasını lock/write öncesi reddetti.
- [S117](../evidence/rpi5/g8h/sequence-117-first-staged-copy-appledouble-incident/README.md),
ilk temp image kopyasından sonra otomatik temp AppleDouble sidecar'ını
saptadı; PREPARED lock korundu, final S89 exact4 bozulmadı ve retry/eject
yapılmadı.
- [S118](../evidence/rpi5/g8h/sequence-118-s89-exact-recovery-verified/README.md),
yalnız adı verilmiş temp pair'in yetkili temizliğini, bir sync'i ve S89 exact
doğrulamasından sonra lock kaldırmayı kapsadı; final overwrite/helper retry/
eject/UART/power yapılmadı.
- [S119](../evidence/rpi5/g8h/sequence-119-appledouble-aware-microsd-write-verified/README.md),
exact hedef kimliğinde S100 exact4 için AppleDouble-aware staged `cp=4`, temp
data read-back `4/4` + temp-sidecar exact `4/4`, paired commit `mv=4`, final
data read-back `4/4` + final-sidecar exact `4/4`, `sync=2` ve yalnız tam başarı
sonrası `eject=1` ile storage PASS verdi. SUCCESS host lock exact retained;
helper rerun yasaktır.
- [S120](../evidence/rpi5/g8h/sequence-120-powered-off-card-insertion-user-reported/README.md),
kullanıcının eject edilmiş S100 kartı güç verilmemiş Pi'ye taktığı beyanını
kaydeder; yerleşim bağımsız gözlenmemiştir ve S119 aygıt sayaçlarını
değiştirmez.
- [S121](../evidence/rpi5/g8h/sequence-121-capture-and-physical-raw-preparation/README.md),
BOOT8H capture helper/PTY ve direct immutable physical-raw validator'ı
host-only doğrular. External `capture_identity` + live-FD audit provenance'i,
beş argümanlı wrapper'ı, `419/419` serialized matrisi ve independent FINAL GO
kaydeder; actual UART açmaz, power vermez ve physical raw üretmez.
- [S122](../evidence/rpi5/g8h/sequence-122-uart-prearm/README.md), actual tek
same-descriptor UART pre-arm'ı `VERIFIED_PREPOWER_ARM` olarak kaydeder;
o sequence kapanışında helper canlı, Pi power `0`, raw açık/mutable ve
evidence değildir.
- [S123](../evidence/rpi5/g8h/sequence-123-power-capture-validator-rejected/README.md),
tek power-on capture'ın durable immutable kapandığını; strict wrapper'ın
leading NUL `23 > 5` nedeniyle `12/12` validator'da fail-closed REJECT
verdiğini kaydeder. Raw permanent evidence'e taşınmadı.
Birleşik kabul
[G8h Verified MicroSD Write Proof](M8.1-RPi5-G8h-Verified-MicroSD-Write-Proof.md)
belgesindedir. Mantıksal S101/S109 microSD kapısı kapanmıştır; format, UART,
Pi power ve physical `BOOT8H` kapsam dışı kalmıştır. S120'de kullanıcı kartı
güç verilmemiş Pi'ye taktığını bildirdi; bu bağımsız gözlem değildir.
S121 hazırlık kanıtı
[G8h Capture and Physical-Raw Preparation Proof](M8.1-RPi5-G8h-Capture-and-Physical-Raw-Preparation-Proof.md)
belgesindedir. S122 actual pre-arm kanıtı
[G8h Same-Descriptor UART Pre-arm Proof](M8.1-RPi5-G8h-UART-Prearm-Proof.md)
belgesindedir. S123 rejection kanıtı
[G8h Physical Capture Rejection Proof](M8.1-RPi5-G8h-Physical-Capture-Rejection-Proof.md)
belgesindedir. S123 tüketildi; post-rejection user-reported power-off closeout
yeni sequence/PASS değildir. Yeni deneme ayrı exact fresh powered-off
continuity, fresh pre-arm ve yeni raw yetkisi ister. S124 archive/promotion physical PASS ister.
`PHYSICAL_BOOT8H=REJECTED_NO_PASS` ve
`GENERIC_SMP_RUNTIME=STOP`.
### G8i — Per-CPU runqueue ve exception ownership
Önce queue/current/idle/tick sahipliği CPU başına ayrılır. Her task exact bir
owner CPU'dadır. Foreign CPU queue'yu doğrudan değiştirmez; mailbox generation
ve SGI ile target CPU'ya istek gönderir, queue'yu yalnız target drain eder.
Genel scheduler'a geçmeden önce per-CPU IRQ stack ile exception-frame ve task
context sahipliği aynı kapıda tamamlanmalıdır.
STOP: bir task'ın iki queue'da görünmesi, foreign direct mutation, context
switch veya WFI sırasında lock tutulması, local IRQ ile deadlock, kilitsiz
global scheduler erişimi.
### G8j — EL1, shared-root/ASID0 migration
İlk migration yalnız statik EL1 task için, shared root ve ASID 0 ile yapılır.
Önce tek yön CPU0→CPU1, ayrı fiziksel turda round-trip kanıtlanır.
Durum zinciri exact
`RUNNING0→MIGRATING→READY1→RUNNING1` olmalı; generation, owner, source ve
target değerleri her adımda doğrulanmalıdır.
STOP: eşzamanlı iki yürütme, stale request, task kaybı, stack sahipliği
belirsizliği veya EL0/nonzero-ASID task'ın bu kapıya girmesi.
### G8k — ASID kodlaması ve TLB shootdown
Nonzero-ASID migration'dan önce ayrı bir MMU kapısı zorunludur. Mevcut kodda:
- `write_ttbr0_to` 8-bit ASID'i `asid << 56` ile yerleştiriyor;
- `invalidate_asid` `TLBI ASIDE1IS` operandına kaydırılmamış ham ASID veriyor;
- ASID allocator kilitsizdir ve tükenmede generation/flush olmadan reuse eder.
G8k önce TTBR/TLBI operand kodlamasını testli helper'larda düzeltir, TCR.AS
konfigürasyonunu read-back ile bağlar, allocator'ı kilit+generation ile korur.
Sonra bütün online CPU'lara bounded shootdown request gönderir; her target
`DSB ISHST → TLBI → DSB ISH → ISB` sırasını tamamlayıp generation ack yayımlar.
Kabul: exact online-mask ack, stale-mapping sentinel testi, ASID reuse öncesi
tam completion ve hiçbir missing/duplicate ack olmaması. STOP: encoding testi
geçmeden runtime, eksik ack, online-mask değişimi sırasında erken completion
veya flush olmadan ASID reuse.
Mimari dayanak:
- Arm Memory Management: https://developer.arm.com/-/media/Arm%20Developer%20Community/PDF/Learn%20the%20Architecture/LearnTheArchitecture-MemoryManagement-101811_0100_00_en.pdf
- Linux arm64 TLB referansı: https://github.com/torvalds/linux/blob/master/arch/arm64/include/asm/tlbflush.h
### G8l — EL0/nonzero-ASID migration
Yalnız G8j ve G8k fiziksel PASS olduktan sonra tek bir EL0 task, benzersiz
address-space generation ile CPU0→CPU1 taşınır. TTBR0 read-back, ASID, shootdown
completion ve user progress aynı immutable capture içinde korele edilir.
STOP: eski mapping erişilebilirliği, yanlış TTBR/ASID, shootdown completion
öncesi ERET veya task'ın iki CPU'da görünmesi.
### G8m/G8n — CPU2, sonra CPU3
CPU2 ve CPU3 aynı kapıda açılmaz. Her CPU için sırasıyla PSCI bring-up,
benzersiz MPIDR/TPIDR/stack/timer/runqueue, pinned workload ve quiescent return
kanıtlanır. CPU2 PASS dondurulmadan CPU3'e geçilmez.
STOP: stack/slot alias, yanlış topology, birden fazla yeni CPU, online mask veya
target list sapması. Dört CPU tamamlanmadan `online_mask=0xf` veya genel SMP
iddiası yoktur.
### G8o — Çok çekirdek soak
Önce 30 dakika, sonra iki saat, release adayı için 24 saat. IRQ, SGI, switch,
migration ve TLBI generation sayaçları başlangıç/bitiş arasında korunur.
STOP: tek kayıp/duplicate, watchdog, drift sınırı, canary, unknown IRQ, panic,
stale mapping veya sayaç tutarsızlığı.
### G8p — Hotplug
Önce yalnız CPU1 off/on: queue drain, timer/PPI off, shootdown online-mask'ten
güvenli çıkarma, PSCI affinity doğrulama ve generation yenileme. Sonra CPU2 ve
CPU3 tek tek eklenir; döngülü soak en son yapılır.
STOP: offline CPU'da task veya pending IRQ, shootdown ack maskı hatası,
generation reuse, task kaybı veya stale stack/queue sahipliği.
## 4. Her kapının zorunlu kanıt paketi
Her yeni kapı aşağıdaki sırayı fail-closed uygular:
1. Allocation-free contract ve parser; negatif/adversarial fixture'lar.
2. Source TDD; forbidden path ve exact marker/sayaç sözleşmesi.
3. Production AArch64 machine-code/layout gate; function-bounded call, store,
barrier ve instruction denetimi.
4. `board-rpi5`, `board-rpi5,smp`, `board-qemu,smp` ve production non-SMP
compile; önceki G8–G8e kapılarının tamamı.
5. Workspace tam test matrisi ve QEMU smoke.
6. Üç temiz workspace/target üretimi; raw image, DTB, config ve manifest exact
byte eşitliği; debug ELF path farkı varsa stripped/loadable eşitlik kaydı.
7. Exact removable SD kimliği; formatsız write, bağımsız read-back/cmp, iki sync
ve güvenli eject.
8. Pi güçsüzken aynı UART descriptor'ında 115200/8N1 raw, flow-off ve TCIFLUSH;
yalnız `capture_armed=YES` sonrasında güç.
9. Immutable mode 0444 raw, SHA-256, framing/marker audit ve strict validator.
10. Kalıcı evidence arşivi, operations kaydı, full web kapısı, production deploy
ve canonical custom-domain byte-for-byte karşılaştırması.
Herhangi bir kırmızı adım sonraki adıma geçişi durdurur. Eski fiziksel PASS
geri alınmaz; yeni kapı yalnız kendi dar kapsamı için başarısız veya başarılıdır.
## 5. Hemen sıradaki işlem
Sequence 81 başlangıç contract/parser, Sequence 82 per-CPU timer storage/API
source, Sequence 83 counter-contract correction, Sequence 84 dormant bounded
runtime + gerçek AArch64 compile-harness, Sequence 85 RPi5-only production
wiring, Sequence 86 hardened function-bounded machine-code/layout ve Sequence
87 tam regresyon matrisi ile Sequence 88 deploy-relevant reproducible payload,
Sequence 89 immutable package, Sequence 90 microSD, Sequence 91 actual UART
pre-arm, Sequence 92 physical BOOT8G, Sequence 93 permanent evidence/promotion,
Sequence 94 G8h contract/parser ve Sequence 95 dormant bounded runtime
source/object, Sequence 96 RPi5-only production wiring, Sequence 97 production
machine-code/layout, Sequence 98 image-free full matrix ve Sequence 99
reproducibility ile Sequence 100 immutable package kapıları
tamamlanmıştır. S115–S118'in iki preflight rejection, bir AppleDouble olayı
ve exact recovery adımlarından sonra S119 AppleDouble-aware storage kapısını
tamamlamıştır. Son boot/runtime fiziksel PASS Sequence 92 BOOT8G'dir; Sequence 94 sentetik
`physical=NO`, Sequence 95 dormant object, Sequence 96 production source/build,
Sequence 97 machine-code/layout, Sequence 98 clean-context matrix ve Sequence
99 reproducible deploy-semantics, Sequence 100 yerel immutable package
kabulüdür; son storage PASS S119'dur. Mantıksal S101/S109 microSD kapısı
kapanmıştır. S120 kullanıcı beyanına göre eject edilmiş S100 kart güç
verilmemiş Pi'ye takılmıştır; bu bağımsız gözlenmemiştir. S121 host-only
capture/PTY/immutable-validator hazırlığını tamamlamıştır; S121'de gerçek UART
ve power `0`, physical raw absent'tır. Final host matrisi `419/419`, `66` grup
ve independent audit FINAL GO'dur. S122 actual UART pre-arm tamamlanmış,
invocation/open/retry `1/1/0` olmuştur. S123 tek-power capture'ı durable
immutable kapatmış, fakat strict wrapper leading NUL `23 > 5` nedeniyle
`12/12` REJECT vermiştir. Son fiziksel PASS S92 BOOT8G'dir; S123 tüketilmiş ve
aynı-sequence retry yasaktır. Capture transaction validator-close snapshot'ı
`POWER_ON=1`, `POWER_OFF=0` olarak korunur. Post-S123 closeout event'inde
kullanıcı power-off bildirmiştir; bağımsız gözlem yok, event-local
`POWER_OFF=1`, diğer işlemler `0` ve güncel Pi gücü yalnız kullanıcı beyanına
göre kapalıdır. S124 permanent archive yalnız physical PASS sonrasında açılır;
`BOOT8H=REJECTED_NO_PASS` ve `GENERIC_SMP_RUNTIME=STOP`.
snippet sha256: eb98412d6625…file sha256: eb98412d6625…
02 · Doğrulayan test kodu
Operations komutuna bağlı focused test
tam Rust öğesiL959–L997
simulation/tests/project_status_manifest.rs::project_status_is_valid_versioned_and_feature_ids_are_unique
#[test]
fn project_status_is_valid_versioned_and_feature_ids_are_unique() {
let root: Value = serde_json::from_str(STATUS).expect("project status must be valid JSON");
assert_eq!(root["schema_version"], 1);
assert_eq!(root["status_date"], "2026-09-01");
assert_eq!(root["source"]["base_commit"].as_str().unwrap().len(), 40);
let allowed_states = BTreeSet::from([
"foundation_host_verified",
"policy_host_verified",
"kernel_integrated_partial",
"kernel_userspace_integrated",
]);
let features = root["features"].as_array().expect("features array");
assert!(!features.is_empty());
let mut ids = BTreeSet::new();
for feature in features {
let id = feature["id"].as_str().expect("feature id");
assert!(ids.insert(id), "duplicate feature id: {id}");
let state = feature["state"].as_str().expect("feature state");
assert!(allowed_states.contains(state), "unknown state: {state}");
let boards = feature["boards"].as_array().unwrap();
assert!(!boards.is_empty());
let board_evidence = feature["board_evidence"]
.as_object()
.expect("board evidence map");
assert_eq!(board_evidence.len(), boards.len());
for board in boards {
let board = board.as_str().unwrap();
assert!(
board_evidence.contains_key(board),
"missing evidence scope for {id}/{board}"
);
}
assert!(!feature["evidence"].as_array().unwrap().is_empty());
assert!(!feature["limitations"].as_array().unwrap().is_empty());
}
}snippet sha256: a25e08334dad…file sha256: ed6e95ef5215…
03 · Kapı kimlik kaydı
Operations sıra, kimlik ve başlık bağı
tam Operations kaydıL27448–L27476
website/src/lib/operations.ts::project-status-manifest-synced
{
id: "project-status-manifest-synced",
date: "2026-08-22",
sequence: 113,
status: "verified",
title:
"Makine-okunur proje durumu, insan özeti ve claim sınırları tek kaynağa bağlandı",
summary:
"Yeni versioned `status/project-status.json`, fiziksel kanıt sınırını ve K1/K2 feature dilimlerini makine-okunur tek sözleşmede topluyor; `status/README.md` bu manifestten deterministik üretiliyor. Dört test JSON şemasını/benzersiz feature kimliklerini, source-only kanıtın fiziksel iddiaya yükselmemesini, K1/K2'nin PARTIAL kalmasını ve README render eşitliğini doğruluyor. readmee4 v1.2 ile readmee5 implementation delta aynı ayrımı insan planında görünür tutuyor. Bu durum kaydı yetki belgesi değildir: S109 fiziksel kapı olarak NEXT/STOP kalır.",
evidence: [
"`project_status_manifest` 4/4 PASS: valid/versioned+unique feature IDs, source-only≠physical, incomplete K1/K2≠complete ve deterministic human-summary check.",
"Manifest son fiziksel PASS'i `S92 BOOT8G`, kapsamı `CPU1_PER_CPU_TIMER_ONLY`, kart yükünü `S89 G8g exact4` ve S100 durumunu `staged_verified_not_written` olarak sabitler.",
"Manifest source gate'i Rust 13/13, shell 148/148, positive 3/3, negative 145/145, journal 44/44 ve device_commands=0 olarak kaydeder.",
"Manifestteki fiziksel sayaçlar proje ömrü boyunca birikmiş toplamlar değildir; S110 source-only koşumu ile henüz başlatılmamış S109 fiziksel denemesinin güncel snapshot'ıdır.",
"K1, MEM0, MEM1, MEM2 ve K2 kapılarının her biri açıkça `partial`; S106_source_closure=`verified`, S109_physical_write=`stopped`.",
"Deterministik `status/README.md` feature başına state/board/evidence/limitation ve fiziksel sayaçların tamamını manifestten render eder.",
"readmee4 v1.2 ve readmee5 implementation delta, kaynakta uygulanan temelleri ürün/tam reclaim iddiasından ayırır.",
],
commands: [
"cargo test -p aselsan_microkernel_simulation --test project_status_manifest -- --test-threads=1",
"python3 scripts/render-project-status.py --check",
],
limitations: [
"Manifest kanıt kapsamını kaydeder; fiziksel veya destructive işlem yetkisi vermez.",
"K1/K2 ve MEM0–MEM2 PARTIAL'dır; production phone, iPhone-class memory density ve Generic SMP runtime iddiaları yasaktır.",
"S109 için fresh read-only prewrite identity ile ayrıca açık destructive authorization zorunludur.",
"Güncel S110 + pending S109-attempt snapshot'ı: CARD_WRITE=0, PHYSICAL_CARD_READBACK=0, REAL_DEVICE_OPEN=0, SYNC=0, EJECT=0, UART=STOP, POWER=STOP ve PHYSICAL_BOOT8H=STOP; bunlar lifetime toplam değildir.",
],
},snippet sha256: 72f8f8299d91…file sha256: 9726dbf00f84…
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test project_status_manifest -- --test-threads=1Registry schema v5 · generator
website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9