From bb67fd4ead6bc6c856712da0d4655bf0833af7f3 Mon Sep 17 00:00:00 2001
From: b00t0x <2325377+b00t0x@users.noreply.github.com>
Date: Sat, 7 Nov 2026 00:03:28 +0900
Subject: [PATCH 1/4] Prepare Graphics 0.4.1 with updated common Compat
provider
---
CHANGELOG.md | 8 ++++++++
docs/SOURCES.md | 4 ++--
docs/payload-provenance.json | 10 ++++++----
.../Contents/Info.plist | 4 ++--
.../Contents/MacOS/AppleIntelTGLCompat | Bin 29408 -> 29456 bytes
tools/policy.json | 2 +-
6 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index be8ab84..df883a9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.4.1
+
+Use the latest [WhateverXe](https://github.com/b00t0x/WhateverXe/releases) release with this update.
+
+### Fixed
+
+- Update the common graphics compatibility component to recognize compatible macOS kernel updates without requiring an exact build string.
+
## 0.4.0
Use the latest [WhateverXe](https://github.com/b00t0x/WhateverXe/releases) release with this update.
diff --git a/docs/SOURCES.md b/docs/SOURCES.md
index d0e7bb0..b5a5e14 100644
--- a/docs/SOURCES.md
+++ b/docs/SOURCES.md
@@ -9,8 +9,8 @@ for this repository.
Source and its shared headers remain in
[WhateverXe](https://github.com/b00t0x/WhateverXe). All supported macOS versions
-use one RELEASE build of AppleIntelTGLCompat 0.7.0 from WEX commit
-[`2aa06ad`](https://github.com/b00t0x/WhateverXe/tree/2aa06ad013e08f7b79779d446cdd12084b4e3dfd/AppleIntelTGLCompat).
+use one RELEASE build of AppleIntelTGLCompat 0.8.0 from WEX commit
+[`20b8ae5`](https://github.com/b00t0x/WhateverXe/tree/20b8ae5c705e12a54d418df03d3665efc874dac6/AppleIntelTGLCompat).
Build that checkout with `python3 tools/build.py --release`, then sign the
resulting kext with the Mod chain before importing the complete bundle into
`payloads/Common/Library/Extensions/`. The package contains no per-OS provider
diff --git a/docs/payload-provenance.json b/docs/payload-provenance.json
index 9f1abbd..016fa2c 100644
--- a/docs/payload-provenance.json
+++ b/docs/payload-provenance.json
@@ -2,18 +2,20 @@
"provider_source_repository": "https://github.com/b00t0x/WhateverXe",
"providers": {
"Common": {
- "source_commit": "2aa06ad013e08f7b79779d446cdd12084b4e3dfd",
+ "source_commit": "20b8ae5c705e12a54d418df03d3665efc874dac6",
"source_file": "AppleIntelTGLCompat/AppleIntelTGLCompat.cpp",
"source_file_sha256": "2a5f7622cbd35e222d1d0b1e3f78f421bd0a9f691fec51a7b18d3725ab61c445",
- "version": "0.7.0",
+ "version": "0.8.0",
"configuration": "RELEASE",
"build_command": "python3 tools/build.py --release",
- "sha256": "ea7d24b13c9554b361f82c714c4acc124cfa1f7155669e1b8663a1827630f1d0",
+ "sha256": "5f83bc96c73aed10c60b03a6593f6eb3abc04efc672e9564be907d876ef4fba7",
"policy_source_file": "AppleIntelTGLCompat/GraphicsPolicy.plist",
"policy_source_sha256": "dd9555491052208445abbd9daa96dd0a9dd4e5e71b1e6a14355224199cfb17eb",
"compatible_version": "0.5.0",
"device_table_source_file": "WhateverXe/kern_xelp_devices.hpp",
- "device_table_source_sha256": "7df149488e4a51066ca9953817c7e3529bc4a630e81442da83c116297d5dfad9"
+ "device_table_source_sha256": "7df149488e4a51066ca9953817c7e3529bc4a630e81442da83c116297d5dfad9",
+ "os_selector_source_file": "WhateverXe/kern_xelp_os.hpp",
+ "os_selector_source_sha256": "0a1e96c40f8f4dc3627f64c4699e73a79b041f59c845d2c17649375cbd65371b"
}
},
"amfipass_sha256": "71f41de42e355d2a83e6f093ef34a5b24d0a9c9a9085830b2317f1b874f56250",
diff --git a/payloads/Common/Library/Extensions/AppleIntelTGLCompat.kext/Contents/Info.plist b/payloads/Common/Library/Extensions/AppleIntelTGLCompat.kext/Contents/Info.plist
index 882ae65..e6dc144 100644
--- a/payloads/Common/Library/Extensions/AppleIntelTGLCompat.kext/Contents/Info.plist
+++ b/payloads/Common/Library/Extensions/AppleIntelTGLCompat.kext/Contents/Info.plist
@@ -11,9 +11,9 @@
CFBundlePackageType
KEXT
CFBundleShortVersionString
- 0.7.0
+ 0.8.0
CFBundleVersion
- 0.7.0
+ 0.8.0
IOKitPersonalities
WEX Display13 graphics policy
diff --git a/payloads/Common/Library/Extensions/AppleIntelTGLCompat.kext/Contents/MacOS/AppleIntelTGLCompat b/payloads/Common/Library/Extensions/AppleIntelTGLCompat.kext/Contents/MacOS/AppleIntelTGLCompat
index 485c2b2010554395c6c78168efd3369b6632a4a0..1233e138573ef9e76ea7e1e3b7e66ea37b99df5d 100755
GIT binary patch
delta 3964
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
delta 4435
zcma)93s@6Z7M>ZxQ(zEzTObOepoE!(gpjsKB+>AYhax`kg$VUkpsb^*S~3!%0*#>4
zcD3zx(e0|ZT~{`36d#p`MRENoqU}msE%rfOt-30LKs9?Nll04G$=99lyE*6l=bZnX
zJNM4yPJKVx_ajjbYk(obbt8u5hZy#|U*=)I_h(-5
z-skrRsKvjo(w?7|zpP!Qf8+Y?T5o0o{sp$)m$`$#g?acIXrE_JnB3c-@$<#7zqlEg
zfIif>*$qMD)g2ktrccWhJmhwx8>0)_k9oT>{NTOV7FXuuU_vuLTUF~U3V=x&-A=Pp
zsOrS4rl1Hy4yyDoi#-se`Vt;q1r7vJ;6`4OLfS@6z>T>Csxoy{^-y=rDA@xzUiA$`
zsq|`8rT1UKrgjy>C9viv%Y>AV%G8D%6I7-P$yI~YJqm;B(jx10%@*XW3J4m
z+YtO#0~=SGbB&g+f3x9@1k{IV-ur(Os9=a5c7-0lCR=VpuShk!FmA9g^ss_@M61yP
z>StPwl~et++G#V@N2_^jsjq0Ya|v~gR=e=2E?VuHPFy|Q)g(kM+s%5
z)#Hk&Q6H+NYe_ORLBKj(U?;`>v&S(CP`L6iuuB
zN^spKlgUJ@{rR|V18BH0J3yb-K@Sh&l}o`^Xo_)3$YQAK^$w
zp0gzheFaBh0tz4kj$3AjRKK|cY~Z*8wn|@yDap>%>XsBeuUZ3aCWYQ}jvShjTe~_6
zajE)bRE`_fs6xLGcsu0uh)4OQWZERdbv59Z!(E2yYFNq(Ezq2a-sXbB?n_3gCo1hz
z9DlPAd;mU-!*z=|_0c?BHz&(
zg@AFKI=lkcA)Gq02-iJ%W+oez;<`JW`ilhDeaorOAod!kJ_oduQ%y7Caowk&Ylnj<
zckPG^Ue#c>f^pqpRslr28XL4WQ8Q2(L@AglL9mA
z+|m+YE#V8}`2-;oOJpQrWsSFCl@dZiAdDvjq!d^a1!I$D2|3bSs>s|bDdrPW8FVX@
zT1myWqzQ=iN7
z)Ic1fFH5Lt#_i)0eK`E&2?E^9rWDv+`kbICaAWPvp
z0%jBY2)Y4n7H15U0Zng
z@raO}OMY5*Mm|&2wCMC`b|i7@pGUkVBr!LgE(wQzSg`MtQ-Li%eEwx4wRm91&u=Sr
zQ^TX5yxu%ht4_^n_;yp|TcMeIh6Z=?im;oft}czrxwhcMr-#=&l1{Tp-Cx%8*n8cH*Uq-rNDk!3dc;N^
zi+;hWVEI&WOKj>vk9n^SmTjq=H+oee-`3avb=9&retZz}_MdkRumA3z^Yq&O@1+&a
z)n1pkdu&@gbIJ5~W^RkDZRiVsdS;+$e6cd7U7T|GmiXt&7|k!PK3NgzO^KiX68i5v
zql@W!xctz>-9K*8-KPHNIuy70Y+cq@66J_+U#oy5r=&-BBpD~9oSaxU(R6Bkf^ki6
zt_RaFcq#a=Uaya4d|3TT#hVo`Wg9#)NneeSNDxWM#3e+Wi+jut)s7)A)SX98=J990
zt9df>d`073!B&^mT7Ka@>G}ExGnUe)KN1FqX6M}?@+}F4tKBg&lL&Qjp6>00h4B1(
zo#YO^lZ
zc@0pzb7CuVm)EyQg^ydAD=Y8L70#DtQo^<3xv##WNJuOxU09r+xv8K;smLgO*~8ua
zrMT4v8w-+H&8n1%<0ZN2rA717X9-i{h1s*?GqYb$m1ZWY7BKFsWE$S%oZa`7-%#NP
z^0&Jgt~{DaMEX6te{FB$Yqw9gqoVCY6~!HI-3XK%OY0xVn{ux6*=QGb^I%b1{TA8%
z;xB|ZdwrkvlzcNUvukk)_rc<6LUqw=GxZPd&EaO<-<;bmz_Xln8@_A>0=;7$w
z%S!we2bJGnzI!z%e#80i<|h_urq9~;PRahwO8%btg+BGiqQ(tX=D*O>hCD3yJ9npX
zb;kbZQN7K&(^;a;vI}1a2XszWd~{K%=b5aOuRd;Fq<*ib^blEkWSL99+s?q!bD2psLm5X4739gTEbRS9
NhMdB4IO7xP{U7X_o>l+=
diff --git a/tools/policy.json b/tools/policy.json
index dd68fd8..7660cbf 100644
--- a/tools/policy.json
+++ b/tools/policy.json
@@ -1,5 +1,5 @@
{
- "package_version": "0.4.0",
+ "package_version": "0.4.1",
"systems": [
{
"name": "Big Sur",
From 9d0144900a1cdfb7c8879aa9b981e11616923a47 Mon Sep 17 00:00:00 2001
From: b00t0x <2325377+b00t0x@users.noreply.github.com>
Date: Sat, 7 Nov 2026 01:41:13 +0900
Subject: [PATCH 2/4] Preserve released client matching and Compat dependency
contracts
---
tools/fixtures/released_clients.json | 645 +++++++++++++++++++++++++++
tools/kext_dependencies.py | 2 +
tools/released_contracts.py | 71 +++
tools/test.py | 2 +
tools/test_autopkg.py | 2 +
tools/test_dependencies.py | 38 ++
6 files changed, 760 insertions(+)
create mode 100644 tools/fixtures/released_clients.json
create mode 100644 tools/released_contracts.py
diff --git a/tools/fixtures/released_clients.json b/tools/fixtures/released_clients.json
new file mode 100644
index 0000000..2e78947
--- /dev/null
+++ b/tools/fixtures/released_clients.json
@@ -0,0 +1,645 @@
+{
+ "schema": 1,
+ "releases": [
+ {
+ "tag": "v0.1.0",
+ "commit": "444b348e7ee757ded480ff46d781d5efb0f5fb38",
+ "contracts": [
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphics",
+ "requires_provider": null,
+ "matches": [
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a788086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ },
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphicsFramebuffer",
+ "requires_provider": "0.5.0",
+ "matches": [
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a788086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ }
+ ]
+ },
+ {
+ "tag": "v0.2.0",
+ "commit": "e83018e76c0f39f0f870ff38dcc304fb357c3485",
+ "contracts": [
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphics",
+ "requires_provider": null,
+ "matches": [
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ },
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphicsFramebuffer",
+ "requires_provider": "0.5.0",
+ "matches": [
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ }
+ ]
+ },
+ {
+ "tag": "v0.3.0",
+ "commit": "7aa1a8340c862f764d42a5d7f5d08e9a66b6eab4",
+ "contracts": [
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphics",
+ "requires_provider": null,
+ "matches": [
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46a38086",
+ "0x46a68086",
+ "0x46a88086",
+ "0x46aa8086",
+ "0x46b38086",
+ "0x46c38086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086",
+ "0xa7a08086",
+ "0xa7a18086",
+ "0xa7a88086",
+ "0xa7a98086",
+ "0xa7aa8086",
+ "0xa7ab8086",
+ "0xa7ac8086",
+ "0xa7ad8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ },
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphicsFramebuffer",
+ "requires_provider": "0.5.0",
+ "matches": [
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46a38086",
+ "0x46a68086",
+ "0x46a88086",
+ "0x46aa8086",
+ "0x46b38086",
+ "0x46c38086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086",
+ "0xa7a08086",
+ "0xa7a18086",
+ "0xa7a88086",
+ "0xa7a98086",
+ "0xa7aa8086",
+ "0xa7ab8086",
+ "0xa7ac8086",
+ "0xa7ad8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ }
+ ]
+ },
+ {
+ "tag": "v0.3.1",
+ "commit": "59e4ca9e474781dba80a5b5f60fba1767d0a9c2a",
+ "contracts": [
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphics",
+ "requires_provider": null,
+ "matches": [
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46a38086",
+ "0x46a68086",
+ "0x46a88086",
+ "0x46aa8086",
+ "0x46b38086",
+ "0x46c38086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086",
+ "0xa7a08086",
+ "0xa7a18086",
+ "0xa7a88086",
+ "0xa7a98086",
+ "0xa7aa8086",
+ "0xa7ab8086",
+ "0xa7ac8086",
+ "0xa7ad8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ },
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphicsFramebuffer",
+ "requires_provider": "0.5.0",
+ "matches": [
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46a38086",
+ "0x46a68086",
+ "0x46a88086",
+ "0x46aa8086",
+ "0x46b38086",
+ "0x46c38086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086",
+ "0xa7a08086",
+ "0xa7a18086",
+ "0xa7a88086",
+ "0xa7a98086",
+ "0xa7aa8086",
+ "0xa7ab8086",
+ "0xa7ac8086",
+ "0xa7ad8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ }
+ ]
+ },
+ {
+ "tag": "v0.3.2",
+ "commit": "b4d3889206a609e29e991a833d8d91c2d110a661",
+ "contracts": [
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphics",
+ "requires_provider": null,
+ "matches": [
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46a38086",
+ "0x46a68086",
+ "0x46a88086",
+ "0x46aa8086",
+ "0x46b38086",
+ "0x46c38086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086",
+ "0xa7a08086",
+ "0xa7a18086",
+ "0xa7a88086",
+ "0xa7a98086",
+ "0xa7aa8086",
+ "0xa7ab8086",
+ "0xa7ac8086",
+ "0xa7ad8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ },
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphicsFramebuffer",
+ "requires_provider": "0.5.0",
+ "matches": [
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46a38086",
+ "0x46a68086",
+ "0x46a88086",
+ "0x46aa8086",
+ "0x46b38086",
+ "0x46c38086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086",
+ "0xa7a08086",
+ "0xa7a18086",
+ "0xa7a88086",
+ "0xa7a98086",
+ "0xa7aa8086",
+ "0xa7ab8086",
+ "0xa7ac8086",
+ "0xa7ad8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ }
+ ]
+ },
+ {
+ "tag": "v0.4.0",
+ "commit": "656eff430df8ff8e55131656324678cd5480347a",
+ "contracts": [
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphics",
+ "requires_provider": null,
+ "matches": [
+ "0x46268086",
+ "0x46288086",
+ "0x462a8086",
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46a08086",
+ "0x46a18086",
+ "0x46a28086",
+ "0x46a38086",
+ "0x46a68086",
+ "0x46a88086",
+ "0x46aa8086",
+ "0x46b08086",
+ "0x46b18086",
+ "0x46b28086",
+ "0x46b38086",
+ "0x46c08086",
+ "0x46c18086",
+ "0x46c28086",
+ "0x46c38086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a598086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0x9ac08086",
+ "0x9ac98086",
+ "0x9ad98086",
+ "0x9af88086",
+ "0xa7208086",
+ "0xa7218086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086",
+ "0xa7a08086",
+ "0xa7a18086",
+ "0xa7a88086",
+ "0xa7a98086",
+ "0xa7aa8086",
+ "0xa7ab8086",
+ "0xa7ac8086",
+ "0xa7ad8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ },
+ {
+ "identifier": "com.apple.driver.AppleIntelTGLGraphicsFramebuffer",
+ "requires_provider": "0.5.0",
+ "matches": [
+ "0x46268086",
+ "0x46288086",
+ "0x462a8086",
+ "0x46808086",
+ "0x46828086",
+ "0x46888086",
+ "0x468a8086",
+ "0x468b8086",
+ "0x46908086",
+ "0x46928086",
+ "0x46938086",
+ "0x46a08086",
+ "0x46a18086",
+ "0x46a28086",
+ "0x46a38086",
+ "0x46a68086",
+ "0x46a88086",
+ "0x46aa8086",
+ "0x46b08086",
+ "0x46b18086",
+ "0x46b28086",
+ "0x46b38086",
+ "0x46c08086",
+ "0x46c18086",
+ "0x46c28086",
+ "0x46c38086",
+ "0x46d08086",
+ "0x46d18086",
+ "0x46d28086",
+ "0x46d38086",
+ "0x46d48086",
+ "0x9a408086",
+ "0x9a498086",
+ "0x9a598086",
+ "0x9a608086",
+ "0x9a688086",
+ "0x9a708086",
+ "0x9a788086",
+ "0x9ac08086",
+ "0x9ac98086",
+ "0x9ad98086",
+ "0x9af88086",
+ "0xa7208086",
+ "0xa7218086",
+ "0xa7808086",
+ "0xa7818086",
+ "0xa7828086",
+ "0xa7838086",
+ "0xa7888086",
+ "0xa7898086",
+ "0xa78a8086",
+ "0xa78b8086",
+ "0xa7a08086",
+ "0xa7a18086",
+ "0xa7a88086",
+ "0xa7a98086",
+ "0xa7aa8086",
+ "0xa7ab8086",
+ "0xa7ac8086",
+ "0xa7ad8086"
+ ],
+ "components": [
+ "Big Sur",
+ "Monterey",
+ "Sequoia",
+ "Sonoma",
+ "Tahoe",
+ "Ventura"
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/tools/kext_dependencies.py b/tools/kext_dependencies.py
index 7aaf7bd..6694c3f 100644
--- a/tools/kext_dependencies.py
+++ b/tools/kext_dependencies.py
@@ -52,8 +52,10 @@ def check_dependencies(plists, label, device_ids=None):
def check_payload_sets(payloads, systems, device_ids=None):
+ from released_contracts import check_released_clients
common = list((payloads / 'Common/Library/Extensions').rglob('*.kext/Contents/Info.plist'))
for system in systems:
clients = list((payloads / system['payload'] / 'Library/Extensions').rglob('*.kext/Contents/Info.plist'))
if not check_dependencies(common + clients, system['name'], device_ids):
raise ValueError(f"{system['name']}: no bundled kext dependencies checked")
+ check_released_clients(common + clients, system['payload'])
diff --git a/tools/released_contracts.py b/tools/released_contracts.py
new file mode 100644
index 0000000..6f08882
--- /dev/null
+++ b/tools/released_contracts.py
@@ -0,0 +1,71 @@
+"""Retain released client dependency and physical-match contracts.
+
+The fixture is exported from each release's immutable Git tree. It is not
+derived from the current package policy. This checks loading/matching metadata,
+not native graphics execution or every mixed-version runtime combination.
+"""
+import argparse, json, plistlib, subprocess
+from functools import lru_cache
+from pathlib import Path
+from kext_dependencies import version
+
+ROOT=Path(__file__).resolve().parents[1]
+FIXTURE=ROOT/'tools/fixtures/released_clients.json'
+PROVIDER='org.b00t0x.AppleIntelTGLCompat'
+
+def matches(info):
+ return {value.lower() for p in info.get('IOKitPersonalities',{}).values()
+ for value in p.get('IOPCIPrimaryMatch','').split()}
+
+@lru_cache(maxsize=1)
+def released():
+ data=json.loads(FIXTURE.read_text())
+ if data.get('schema')!=1 or not data.get('releases'):
+ raise ValueError('missing released client contract corpus')
+ return data['releases']
+
+def check_released_clients(plists, component):
+ current={p['CFBundleIdentifier']:p for path in plists for p in [plistlib.loads(path.read_bytes())]}
+ provider=current.get(PROVIDER)
+ if provider is None:raise ValueError(component+': missing released client provider')
+ for release in released():
+ for contract in release['contracts']:
+ if component not in contract['components']:continue
+ client=current.get(contract['identifier'])
+ label=component+' / '+release['tag']+' / '+contract['identifier']
+ if client is None:raise ValueError(label+': released client missing')
+ lost=set(contract['matches'])-matches(client)
+ if lost:raise ValueError(label+': lost released physical matches '+','.join(sorted(lost)))
+ requested=contract['requires_provider']
+ if requested and not version(provider['OSBundleCompatibleVersion'])<=version(requested)<=version(provider['CFBundleVersion']):
+ raise ValueError(label+': released provider requirement outside current compatibility interval')
+
+def export():
+ def git(*args):return subprocess.check_output(['git','-C',str(ROOT),*args])
+ releases=[]
+ for tag in git('tag','--sort=version:refname').decode().splitlines():
+ commit=git('rev-parse',tag+'^{commit}').decode().strip();groups={}
+ for name in git('ls-tree','-r','--name-only',commit,'payloads').decode().splitlines():
+ if not name.endswith('.kext/Contents/Info.plist'):continue
+ info=plistlib.loads(git('show',commit+':'+name))
+ physical=tuple(sorted(matches(info)))
+ if not physical:continue
+ key=(info['CFBundleIdentifier'],info.get('OSBundleLibraries',{}).get(PROVIDER),physical)
+ groups.setdefault(key,[]).append(name.split('/')[1])
+ releases.append({'tag':tag,'commit':commit,'contracts':[
+ {'identifier':identifier,'requires_provider':requirement,'matches':list(physical),'components':components}
+ for (identifier,requirement,physical),components in groups.items()]})
+ if not releases:raise ValueError('local release history is required to export the corpus')
+ FIXTURE.parent.mkdir(exist_ok=True)
+ FIXTURE.write_text(json.dumps({'schema':1,'releases':releases},indent=2)+'\n')
+
+if __name__=='__main__':
+ p=argparse.ArgumentParser(description=__doc__);p.add_argument('--export',action='store_true');args=p.parse_args()
+ if args.export:export()
+ else:
+ policy=json.loads((ROOT/'tools/policy.json').read_text())
+ common=list((ROOT/'payloads/Common').rglob('*.kext/Contents/Info.plist'))
+ for system in policy['systems']:
+ name=system['payload']
+ check_released_clients(common+list((ROOT/'payloads'/name).rglob('*.kext/Contents/Info.plist')),name)
+ print('PASS released client requirements and physical matches')
diff --git a/tools/test.py b/tools/test.py
index 8ce8f51..bd84ddd 100644
--- a/tools/test.py
+++ b/tools/test.py
@@ -9,6 +9,7 @@
import xml.etree.ElementTree as ET
from pathlib import Path
from kext_dependencies import check_dependencies
+from released_contracts import check_released_clients
from servicing_policy import check_files, test_rejection
parser = argparse.ArgumentParser(description=__doc__)
@@ -113,6 +114,7 @@
assert actual.keys() == expected.keys()
plists = [p for rel, p in actual.items() if rel.startswith('Library/Extensions/') and rel.endswith('.kext/Contents/Info.plist')]
assert check_dependencies(plists, build, manifest['policy']['device_ids']) > 0
+ check_released_clients(plists, build)
for rel, p in actual.items():
data = p.read_bytes()
assert hashlib.sha256(data).hexdigest() == expected[rel]['sha256'], rel
diff --git a/tools/test_autopkg.py b/tools/test_autopkg.py
index 8a1926b..2cd7b47 100644
--- a/tools/test_autopkg.py
+++ b/tools/test_autopkg.py
@@ -10,6 +10,7 @@
import tempfile
import xml.etree.ElementTree as ET
from kext_dependencies import check_dependencies
+from released_contracts import check_released_clients
from servicing_policy import check_files as check_servicing_files
@@ -57,6 +58,7 @@ def check_autopkg(expanded, manifest, boundaries):
check_files(actual, manifest['systems'][name])
plists = [p for r, p in actual.items() if r.startswith('Library/Extensions/') and r.endswith('.kext/Contents/Info.plist')]
assert check_dependencies(plists, name, policy['device_ids']) > 0
+ check_released_clients(plists, name)
cases = [(v, name, 'success' if name else 'unsupported') for v, name in boundaries.items()]
cases += [('15.8.1', 'Sequoia', failure) for failure in (
diff --git a/tools/test_dependencies.py b/tools/test_dependencies.py
index a124218..30175ea 100644
--- a/tools/test_dependencies.py
+++ b/tools/test_dependencies.py
@@ -9,6 +9,7 @@
from pathlib import Path
import build
from kext_dependencies import check_dependencies, check_payload_sets
+from released_contracts import check_released_clients
class DependencyTests(unittest.TestCase):
@@ -77,6 +78,43 @@ def test_unknown_or_masked_identity(self):
self.check('0x46008086&0xff00ffff')
+class ReleasedContractTests(unittest.TestCase):
+ def check_mutation(self, remove_device=False, raise_floor=False):
+ # Change current policy and clients together. A self-consistency test
+ # accepts that pair; frozen released contracts must detect the loss.
+ devices = json.loads((build.HERE / 'policy.json').read_text())['device_ids']
+ if remove_device:
+ devices = [d for d in devices if d.lower() != '9a49']
+ floor = '0.6.0' if raise_floor else '0.5.0'
+ with tempfile.TemporaryDirectory() as tmp:
+ root = Path(tmp)
+ infos = [{'CFBundleIdentifier': 'org.b00t0x.AppleIntelTGLCompat',
+ 'CFBundleVersion': '0.8.0', 'OSBundleCompatibleVersion': floor}]
+ for name in ['AppleIntelTGLGraphics', 'AppleIntelTGLGraphicsFramebuffer']:
+ infos.append({'CFBundleIdentifier': 'com.apple.driver.' + name,
+ 'IOKitPersonalities': {'GPU': {'IOPCIPrimaryMatch': ' '.join('0x' + d + '8086' for d in devices)}},
+ 'OSBundleLibraries': {'org.b00t0x.AppleIntelTGLCompat': floor}})
+ paths = []
+ for i, info in enumerate(infos):
+ path = root / f'{i}.plist'
+ path.write_bytes(plistlib.dumps(info)); paths.append(path)
+ self.assertGreater(check_dependencies(paths, 'Big Sur', devices), 0)
+ if remove_device or raise_floor:
+ with self.assertRaisesRegex(ValueError, 'lost released physical matches|released provider requirement'):
+ check_released_clients(paths, 'Big Sur')
+ else:
+ check_released_clients(paths, 'Big Sur')
+
+ def test_preserved_contracts(self):
+ self.check_mutation()
+
+ def test_coordinated_device_removal_is_detected(self):
+ self.check_mutation(remove_device=True)
+
+ def test_coordinated_abi_floor_raise_is_detected(self):
+ self.check_mutation(raise_floor=True)
+
+
class BuildPreflightTests(unittest.TestCase):
def setUp(self):
temporary = tempfile.TemporaryDirectory()
From 6580e2faf440e6214fa8704f2d6625cf41f061aa Mon Sep 17 00:00:00 2001
From: b00t0x <2325377+b00t0x@users.noreply.github.com>
Date: Sat, 7 Nov 2026 02:15:05 +0900
Subject: [PATCH 3/4] test: preserve released native dispatch and GL URB
behavior
---
README.md | 1 +
README_ja.md | 1 +
tools/fixtures/released_dispatch.json | 1403 +++++++++++++++++++++++++
tools/native_dispatch.cpp | 92 ++
tools/test.py | 8 +
tools/test_released_dispatch.py | 145 +++
6 files changed, 1650 insertions(+)
create mode 100644 tools/fixtures/released_dispatch.json
create mode 100644 tools/native_dispatch.cpp
create mode 100644 tools/test_released_dispatch.py
diff --git a/README.md b/README.md
index 14960e3..c0863ce 100644
--- a/README.md
+++ b/README.md
@@ -66,6 +66,7 @@ python3 tools/test.py dist/WhateverXe-Graphics-0.4.0.pkg
```
For AutoPkg, add `--autopkg` to the build command and test `dist/autopkg/AutoPkg-Assets.pkg`.
+Add `--native-history` to the test command to replay released PCI dispatch and GL URB regressions on the extracted payloads; this requires x86_64 execution, either native or through Rosetta.
The builder uses the checked-in signed payloads; it does not fetch Apple originals or require signing keys.
[Source and signing information](docs/SOURCES.md) · [Third-party notices](THIRD_PARTY.md)
diff --git a/README_ja.md b/README_ja.md
index b0796f9..5be0756 100644
--- a/README_ja.md
+++ b/README_ja.md
@@ -66,6 +66,7 @@ python3 tools/test.py dist/WhateverXe-Graphics-0.4.0.pkg
```
AutoPkgはビルド時に`--autopkg`を追加し、`dist/autopkg/AutoPkg-Assets.pkg`を検査します。
+検査コマンドに`--native-history`を追加すると、展開したpayloadで過去版のPCI dispatchとGL URB補正を再生します。ネイティブまたはRosetta経由のx86_64実行環境が必要です。
Git内の署名済み資材を使用するため、Apple原本の取得や署名鍵は不要です。
[ソース・署名情報](docs/SOURCES.md) · [第三者の権利表記](THIRD_PARTY.md)
diff --git a/tools/fixtures/released_dispatch.json b/tools/fixtures/released_dispatch.json
new file mode 100644
index 0000000..8e3c74a
--- /dev/null
+++ b/tools/fixtures/released_dispatch.json
@@ -0,0 +1,1403 @@
+{
+ "schema": 1,
+ "releases": {
+ "v0.1.0": "444b348e7ee757ded480ff46d781d5efb0f5fb38",
+ "v0.2.0": "e83018e76c0f39f0f870ff38dcc304fb357c3485",
+ "v0.3.0": "7aa1a8340c862f764d42a5d7f5d08e9a66b6eab4",
+ "v0.3.1": "59e4ca9e474781dba80a5b5f60fba1767d0a9c2a",
+ "v0.3.2": "b4d3889206a609e29e991a833d8d91c2d110a661",
+ "v0.4.0": "656eff430df8ff8e55131656324678cd5480347a"
+ },
+ "admission_sets": [
+ [
+ "46d0",
+ "46d1",
+ "46d2",
+ "46d3",
+ "46d4",
+ "9a40",
+ "9a49",
+ "9a78"
+ ],
+ [
+ "46d0",
+ "46d1",
+ "46d2",
+ "46d3",
+ "46d4",
+ "9a49",
+ "9a78"
+ ],
+ [
+ "4680",
+ "4682",
+ "4688",
+ "468a",
+ "468b",
+ "4690",
+ "4692",
+ "4693",
+ "46d0",
+ "46d1",
+ "46d2",
+ "46d3",
+ "46d4",
+ "9a40",
+ "9a49",
+ "9a60",
+ "9a68",
+ "9a70",
+ "9a78",
+ "a780",
+ "a781",
+ "a782",
+ "a783",
+ "a788",
+ "a789",
+ "a78a",
+ "a78b"
+ ],
+ [
+ "4680",
+ "4682",
+ "4688",
+ "468a",
+ "468b",
+ "4690",
+ "4692",
+ "4693",
+ "46d0",
+ "46d1",
+ "46d2",
+ "46d3",
+ "46d4",
+ "9a49",
+ "9a60",
+ "9a68",
+ "9a70",
+ "9a78",
+ "a780",
+ "a781",
+ "a782",
+ "a783",
+ "a788",
+ "a789",
+ "a78a",
+ "a78b"
+ ],
+ [
+ "4680",
+ "4682",
+ "4688",
+ "468a",
+ "468b",
+ "4690",
+ "4692",
+ "4693",
+ "46a3",
+ "46a6",
+ "46a8",
+ "46aa",
+ "46b3",
+ "46c3",
+ "46d0",
+ "46d1",
+ "46d2",
+ "46d3",
+ "46d4",
+ "9a40",
+ "9a49",
+ "9a60",
+ "9a68",
+ "9a70",
+ "9a78",
+ "a780",
+ "a781",
+ "a782",
+ "a783",
+ "a788",
+ "a789",
+ "a78a",
+ "a78b",
+ "a7a0",
+ "a7a1",
+ "a7a8",
+ "a7a9",
+ "a7aa",
+ "a7ab",
+ "a7ac",
+ "a7ad"
+ ],
+ [
+ "4680",
+ "4682",
+ "4688",
+ "468a",
+ "468b",
+ "4690",
+ "4692",
+ "4693",
+ "46a3",
+ "46a6",
+ "46a8",
+ "46aa",
+ "46b3",
+ "46c3",
+ "46d0",
+ "46d1",
+ "46d2",
+ "46d3",
+ "46d4",
+ "9a49",
+ "9a60",
+ "9a68",
+ "9a70",
+ "9a78",
+ "a780",
+ "a781",
+ "a782",
+ "a783",
+ "a788",
+ "a789",
+ "a78a",
+ "a78b",
+ "a7a0",
+ "a7a1",
+ "a7a8",
+ "a7a9",
+ "a7aa",
+ "a7ab",
+ "a7ac",
+ "a7ad"
+ ],
+ [
+ "4626",
+ "4628",
+ "462a",
+ "4680",
+ "4682",
+ "4688",
+ "468a",
+ "468b",
+ "4690",
+ "4692",
+ "4693",
+ "46a0",
+ "46a1",
+ "46a2",
+ "46a3",
+ "46a6",
+ "46a8",
+ "46aa",
+ "46b0",
+ "46b1",
+ "46b2",
+ "46b3",
+ "46c0",
+ "46c1",
+ "46c2",
+ "46c3",
+ "46d0",
+ "46d1",
+ "46d2",
+ "46d3",
+ "46d4",
+ "9a40",
+ "9a49",
+ "9a59",
+ "9a60",
+ "9a68",
+ "9a70",
+ "9a78",
+ "9ac0",
+ "9ac9",
+ "9ad9",
+ "9af8",
+ "a720",
+ "a721",
+ "a780",
+ "a781",
+ "a782",
+ "a783",
+ "a788",
+ "a789",
+ "a78a",
+ "a78b",
+ "a7a0",
+ "a7a1",
+ "a7a8",
+ "a7a9",
+ "a7aa",
+ "a7ab",
+ "a7ac",
+ "a7ad"
+ ],
+ [
+ "4626",
+ "4628",
+ "462a",
+ "4680",
+ "4682",
+ "4688",
+ "468a",
+ "468b",
+ "4690",
+ "4692",
+ "4693",
+ "46a0",
+ "46a1",
+ "46a2",
+ "46a3",
+ "46a6",
+ "46a8",
+ "46aa",
+ "46b0",
+ "46b1",
+ "46b2",
+ "46b3",
+ "46c0",
+ "46c1",
+ "46c2",
+ "46c3",
+ "46d0",
+ "46d1",
+ "46d2",
+ "46d3",
+ "46d4",
+ "9a49",
+ "9a59",
+ "9a60",
+ "9a68",
+ "9a70",
+ "9a78",
+ "9ac0",
+ "9ac9",
+ "9ad9",
+ "9af8",
+ "a720",
+ "a721",
+ "a780",
+ "a781",
+ "a782",
+ "a783",
+ "a788",
+ "a789",
+ "a78a",
+ "a78b",
+ "a7a0",
+ "a7a1",
+ "a7a8",
+ "a7a9",
+ "a7aa",
+ "a7ab",
+ "a7ac",
+ "a7ad"
+ ]
+ ],
+ "urb_inputs": [
+ [
+ "0803078078300000",
+ "8000000078310000",
+ "8000000078320000",
+ "8000000078330000"
+ ],
+ [
+ "0803038078300000",
+ "4000000078310000",
+ "4000000078320000",
+ "4000000078330000"
+ ],
+ [
+ "0803058078300000",
+ "6000000078310000",
+ "6000000078320000",
+ "6000000078330000"
+ ],
+ [
+ "0800088078300000",
+ "2a00000078310000",
+ "2a00000078320000",
+ "2a03036078330000"
+ ]
+ ],
+ "contracts": [
+ {
+ "kind": "GL",
+ "system": "Common",
+ "offsets": [
+ 1650591,
+ 1651727,
+ 1650597
+ ],
+ "urb": {
+ "0": [
+ "0803052078300000",
+ "8000000078310000",
+ "8000000078320000",
+ "8000000078330000"
+ ],
+ "1": [
+ "0803020078300000",
+ "4000000078310000",
+ "4000000078320000",
+ "4000000078330000"
+ ],
+ "2": [
+ "0803058078300000",
+ "6000000078310000",
+ "6000000078320000",
+ "6000000078330000"
+ ],
+ "3": [
+ "0800088078300000",
+ "2a00000078310000",
+ "2a00000078320000",
+ "2a03036078330000"
+ ]
+ },
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "a27707cdfe5c5cadb623d2ea14b51e3a0bc714cde9e3b03ce9f792ff0e8d17da"
+ }
+ ],
+ "admission_set": 0
+ },
+ {
+ "kind": "VA",
+ "system": "Big Sur",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "1fda0b4049178b5c91c2db1fd2acd4c9b06bb49c37e72583c263252c43ce3ab5"
+ }
+ ],
+ "admission_set": 1
+ },
+ {
+ "kind": "VA",
+ "system": "Monterey",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "643517de95079559837068f0692ffad89bdc9d3ba242906061f8e9c36ea4d4fe"
+ }
+ ],
+ "admission_set": 1
+ },
+ {
+ "kind": "VA",
+ "system": "Ventura",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "42849edc360ce8785fcb7c88bbfae6d5bfac3e7941777c1a56fbc736201fe6dc"
+ }
+ ],
+ "admission_set": 1
+ },
+ {
+ "kind": "VA",
+ "system": "Sonoma",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "c4b49bb994bf77d695696515e5df0fef1b71b9a423978b90c4b9e96972c13337"
+ }
+ ],
+ "admission_set": 1
+ },
+ {
+ "kind": "VA",
+ "system": "Sequoia",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "6a3825a41dc29f041ef92b6abcf0838768832f8c3a88c6e9c9adbe9857403d4a"
+ }
+ ],
+ "admission_set": 1
+ },
+ {
+ "kind": "VA",
+ "system": "Tahoe",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "9ced9e7ccb262c7dc2fe445029919a955c414c20f585ff326fa2d7a029d4f0ff"
+ }
+ ],
+ "admission_set": 1
+ },
+ {
+ "kind": "CL",
+ "system": "Big Sur",
+ "offsets": [
+ 34975,
+ 34662,
+ 34982
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "a86e6daed21d42f6a5f3c80f2f198634b9c9f95132003b9d51a8750998b8f2fc"
+ }
+ ],
+ "admission_set": 0
+ },
+ {
+ "kind": "CL",
+ "system": "Monterey",
+ "offsets": [
+ 38248,
+ 36872,
+ 38255
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "fb949904f6fb0b59731fddc76bdfb56e50c9905e74886d9bcc914644d09d504e"
+ }
+ ],
+ "admission_set": 0
+ },
+ {
+ "kind": "CL",
+ "system": "Ventura",
+ "offsets": [
+ 38669,
+ 37759,
+ 38676
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "328334cd4c7e4becbef7cb5b1d4767bdee00716304f1c6173ee26d2453461fc0"
+ }
+ ],
+ "admission_set": 0
+ },
+ {
+ "kind": "CL",
+ "system": "Sonoma",
+ "offsets": [
+ 26795,
+ 25878,
+ 26802
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "67e7c533c44d84a7ddfc4ca08102c196739895e8c9ffafddc17c5c427ae10df5"
+ }
+ ],
+ "admission_set": 0
+ },
+ {
+ "kind": "CL",
+ "system": "Sequoia",
+ "offsets": [
+ 25876,
+ 25029,
+ 25883
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "25499f21ab681a54064c699de16eaa5f6dd78b26c6cbf866a67484d0ac8a0600"
+ }
+ ],
+ "admission_set": 0
+ },
+ {
+ "kind": "CL",
+ "system": "Tahoe",
+ "offsets": [
+ 25455,
+ 24593,
+ 25462
+ ],
+ "sources": [
+ {
+ "tag": "v0.1.0",
+ "sha256": "33cdf73786922bb6e19ff98d96b9b58f160f72c5f46ab09f50b0474206628d7e"
+ }
+ ],
+ "admission_set": 0
+ },
+ {
+ "kind": "GL",
+ "system": "Common",
+ "offsets": [
+ 1650591,
+ 1651727,
+ 1650597
+ ],
+ "urb": {
+ "0": [
+ "0803052078300000",
+ "8000000078310000",
+ "8000000078320000",
+ "8000000078330000"
+ ],
+ "1": [
+ "0803020078300000",
+ "4000000078310000",
+ "4000000078320000",
+ "4000000078330000"
+ ],
+ "2": [
+ "0803058078300000",
+ "6000000078310000",
+ "6000000078320000",
+ "6000000078330000"
+ ],
+ "3": [
+ "0800088078300000",
+ "2a00000078310000",
+ "2a00000078320000",
+ "2a03036078330000"
+ ]
+ },
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "f57b9bc678b7e23f9ed6ffeb5bf1547a5d6eee888d581aa7260a27f2fff4ca3b"
+ }
+ ],
+ "admission_set": 2
+ },
+ {
+ "kind": "VA",
+ "system": "Big Sur",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "8111b29a894db07ac9de4b4b013b0f73e122c69cc18b394a6b8bc72667251ade"
+ }
+ ],
+ "admission_set": 3
+ },
+ {
+ "kind": "VA",
+ "system": "Monterey",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "f7b223cba8857411dc5787d97739a49b348956624f54ef9ad119e9bba9f63965"
+ }
+ ],
+ "admission_set": 3
+ },
+ {
+ "kind": "VA",
+ "system": "Ventura",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "301ae82cda5c491422d96721332526deec576efe9fd608aaedf15be6be0f6179"
+ }
+ ],
+ "admission_set": 3
+ },
+ {
+ "kind": "VA",
+ "system": "Sonoma",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "e89ca7f9886cb335cdfd2937da2a5b645f928f84752ba65ef280734280456ff9"
+ }
+ ],
+ "admission_set": 3
+ },
+ {
+ "kind": "VA",
+ "system": "Sequoia",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "7485af024822fdc3ad47cec7b71a055c1cffe92a7d0c0391f143f51b57ee904f"
+ }
+ ],
+ "admission_set": 3
+ },
+ {
+ "kind": "VA",
+ "system": "Tahoe",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "2e27de2f72b0098e08b5e608da3a10810ef8cfd2b8a9d50944286d704d082f19"
+ }
+ ],
+ "admission_set": 3
+ },
+ {
+ "kind": "CL",
+ "system": "Big Sur",
+ "offsets": [
+ 34975,
+ 34662,
+ 34982
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "d9fdea8dce50a471f803046f78a0d73b4692aa32ffc2171f6cea549f09efbcaa"
+ }
+ ],
+ "admission_set": 2
+ },
+ {
+ "kind": "CL",
+ "system": "Monterey",
+ "offsets": [
+ 38248,
+ 36872,
+ 38255
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "04c39b1662f171ccba815966fb11184af6e2dff0fd38ff71f2eff60276619edd"
+ }
+ ],
+ "admission_set": 2
+ },
+ {
+ "kind": "CL",
+ "system": "Ventura",
+ "offsets": [
+ 38669,
+ 37759,
+ 38676
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "4912d9a2347a0ce8f45c0fd25e072c4c5cec6a38df5910b98e832479a2659c58"
+ }
+ ],
+ "admission_set": 2
+ },
+ {
+ "kind": "CL",
+ "system": "Sonoma",
+ "offsets": [
+ 26795,
+ 25878,
+ 26802
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "5ce9ecee0ab92997a001aec8db06daecf682838c785425bbdc1cb384ff268fd4"
+ }
+ ],
+ "admission_set": 2
+ },
+ {
+ "kind": "CL",
+ "system": "Sequoia",
+ "offsets": [
+ 25876,
+ 25029,
+ 25883
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "abbe3d2d0a601708a98c9dda4431a67403def5436ce831608bdbb151226178de"
+ }
+ ],
+ "admission_set": 2
+ },
+ {
+ "kind": "CL",
+ "system": "Tahoe",
+ "offsets": [
+ 25455,
+ 24593,
+ 25462
+ ],
+ "sources": [
+ {
+ "tag": "v0.2.0",
+ "sha256": "70dbf7fca174d2b68417e0a4c18396408e2348705da8b4f61f4025c2c1e88f87"
+ }
+ ],
+ "admission_set": 2
+ },
+ {
+ "kind": "GL",
+ "system": "Common",
+ "offsets": [
+ 1650591,
+ 1651727,
+ 1650597
+ ],
+ "urb": {
+ "0": [
+ "0803052078300000",
+ "8000000078310000",
+ "8000000078320000",
+ "8000000078330000"
+ ],
+ "1": [
+ "0803020078300000",
+ "4000000078310000",
+ "4000000078320000",
+ "4000000078330000"
+ ],
+ "2": [
+ "0803058078300000",
+ "6000000078310000",
+ "6000000078320000",
+ "6000000078330000"
+ ],
+ "3": [
+ "0800088078300000",
+ "2a00000078310000",
+ "2a00000078320000",
+ "2a03036078330000"
+ ]
+ },
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "a1d8cc1863a2813ab54f5db84c197a9a1c3bc80796d2402563b6aa3e159da5f6"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "a1d8cc1863a2813ab54f5db84c197a9a1c3bc80796d2402563b6aa3e159da5f6"
+ }
+ ],
+ "admission_set": 4
+ },
+ {
+ "kind": "VA",
+ "system": "Big Sur",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "9120758fd22a6c009647e919221e2bd1635215ba8eb2c7104dd7af3e79931803"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "9120758fd22a6c009647e919221e2bd1635215ba8eb2c7104dd7af3e79931803"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "9120758fd22a6c009647e919221e2bd1635215ba8eb2c7104dd7af3e79931803"
+ }
+ ],
+ "admission_set": 5
+ },
+ {
+ "kind": "VA",
+ "system": "Monterey",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "5460ca60a59567c1f4e31b7c48f26e9438b9110e82aaec98e5a4d1d90270f4b1"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "5460ca60a59567c1f4e31b7c48f26e9438b9110e82aaec98e5a4d1d90270f4b1"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "5460ca60a59567c1f4e31b7c48f26e9438b9110e82aaec98e5a4d1d90270f4b1"
+ }
+ ],
+ "admission_set": 5
+ },
+ {
+ "kind": "VA",
+ "system": "Ventura",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "08fe84f361c5f5070d5142e1193c940801d7943d1987b56729351f1b69fe83c4"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "08fe84f361c5f5070d5142e1193c940801d7943d1987b56729351f1b69fe83c4"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "08fe84f361c5f5070d5142e1193c940801d7943d1987b56729351f1b69fe83c4"
+ }
+ ],
+ "admission_set": 5
+ },
+ {
+ "kind": "VA",
+ "system": "Sonoma",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "01403035e1c7737b63d059d4367a2d74f37d240a461f28883c6113108cd4338d"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "01403035e1c7737b63d059d4367a2d74f37d240a461f28883c6113108cd4338d"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "01403035e1c7737b63d059d4367a2d74f37d240a461f28883c6113108cd4338d"
+ }
+ ],
+ "admission_set": 5
+ },
+ {
+ "kind": "VA",
+ "system": "Sequoia",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "58edb45d28a133cecc42b5e1ea2e3e25f3501bc89481c256b2edfb7ee463738b"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "58edb45d28a133cecc42b5e1ea2e3e25f3501bc89481c256b2edfb7ee463738b"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "58edb45d28a133cecc42b5e1ea2e3e25f3501bc89481c256b2edfb7ee463738b"
+ }
+ ],
+ "admission_set": 5
+ },
+ {
+ "kind": "VA",
+ "system": "Tahoe",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "b41dfb6f3efeb4279d8b29f66cc5dec240942f10397cd2d06c51f34a37ee48a3"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "b41dfb6f3efeb4279d8b29f66cc5dec240942f10397cd2d06c51f34a37ee48a3"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "b41dfb6f3efeb4279d8b29f66cc5dec240942f10397cd2d06c51f34a37ee48a3"
+ }
+ ],
+ "admission_set": 5
+ },
+ {
+ "kind": "CL",
+ "system": "Big Sur",
+ "offsets": [
+ 34975,
+ 34662,
+ 34982
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "74b07b1b6ceacf75c37857518e7362ec93f266dc1190b7dba424e96d8a6382ef"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "74b07b1b6ceacf75c37857518e7362ec93f266dc1190b7dba424e96d8a6382ef"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "74b07b1b6ceacf75c37857518e7362ec93f266dc1190b7dba424e96d8a6382ef"
+ }
+ ],
+ "admission_set": 4
+ },
+ {
+ "kind": "CL",
+ "system": "Monterey",
+ "offsets": [
+ 38248,
+ 36872,
+ 38255
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "0ce8ae385844304e5dbfbb3edc91eb95b5a026c45290052521099802a71d51fc"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "0ce8ae385844304e5dbfbb3edc91eb95b5a026c45290052521099802a71d51fc"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "0ce8ae385844304e5dbfbb3edc91eb95b5a026c45290052521099802a71d51fc"
+ }
+ ],
+ "admission_set": 4
+ },
+ {
+ "kind": "CL",
+ "system": "Ventura",
+ "offsets": [
+ 38669,
+ 37759,
+ 38676
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "042bef027e5a18ed27b686ad8caa2799b3e269dfda8f24e2106c3749b510067d"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "042bef027e5a18ed27b686ad8caa2799b3e269dfda8f24e2106c3749b510067d"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "042bef027e5a18ed27b686ad8caa2799b3e269dfda8f24e2106c3749b510067d"
+ }
+ ],
+ "admission_set": 4
+ },
+ {
+ "kind": "CL",
+ "system": "Sonoma",
+ "offsets": [
+ 26795,
+ 25878,
+ 26802
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "e3254097ec5341459828a86eaa4b26166fb67b9bd82a9ad4eca45fc1c0397be7"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "e3254097ec5341459828a86eaa4b26166fb67b9bd82a9ad4eca45fc1c0397be7"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "e3254097ec5341459828a86eaa4b26166fb67b9bd82a9ad4eca45fc1c0397be7"
+ }
+ ],
+ "admission_set": 4
+ },
+ {
+ "kind": "CL",
+ "system": "Sequoia",
+ "offsets": [
+ 25876,
+ 25029,
+ 25883
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "5cc9cde75992ce3bc38741f50a64a1483308078713b273d040a74753d680fea8"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "5cc9cde75992ce3bc38741f50a64a1483308078713b273d040a74753d680fea8"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "5cc9cde75992ce3bc38741f50a64a1483308078713b273d040a74753d680fea8"
+ }
+ ],
+ "admission_set": 4
+ },
+ {
+ "kind": "CL",
+ "system": "Tahoe",
+ "offsets": [
+ 25455,
+ 24593,
+ 25462
+ ],
+ "sources": [
+ {
+ "tag": "v0.3.0",
+ "sha256": "e9ca7997a8c0b505ffe73244347a55d941c4f4c6ac3e00696c157d8794f005ca"
+ },
+ {
+ "tag": "v0.3.1",
+ "sha256": "e9ca7997a8c0b505ffe73244347a55d941c4f4c6ac3e00696c157d8794f005ca"
+ },
+ {
+ "tag": "v0.3.2",
+ "sha256": "e9ca7997a8c0b505ffe73244347a55d941c4f4c6ac3e00696c157d8794f005ca"
+ }
+ ],
+ "admission_set": 4
+ },
+ {
+ "kind": "GL",
+ "system": "Common",
+ "offsets": [
+ 1650591,
+ 1651727,
+ 1650597
+ ],
+ "urb": {
+ "0": [
+ "0803052078300000",
+ "8000000078310000",
+ "8000000078320000",
+ "8000000078330000"
+ ],
+ "1": [
+ "0803020078300000",
+ "4000000078310000",
+ "4000000078320000",
+ "4000000078330000"
+ ],
+ "2": [
+ "0803052078300000",
+ "6000000078310000",
+ "6000000078320000",
+ "6000000078330000"
+ ],
+ "3": [
+ "0800088078300000",
+ "2a00000078310000",
+ "2a00000078320000",
+ "2a03030078330000"
+ ]
+ },
+ "sources": [
+ {
+ "tag": "v0.3.2",
+ "sha256": "404b85e5b547fd9486bf8f10e8f55244708bff06d21d0a3091a0e159c74e63bb"
+ }
+ ],
+ "admission_set": 4
+ },
+ {
+ "kind": "GL",
+ "system": "Common",
+ "offsets": [
+ 1650591,
+ 1651727,
+ 1650597
+ ],
+ "urb": {
+ "0": [
+ "0803052078300000",
+ "8000000078310000",
+ "8000000078320000",
+ "8000000078330000"
+ ],
+ "1": [
+ "0803020078300000",
+ "4000000078310000",
+ "4000000078320000",
+ "4000000078330000"
+ ],
+ "2": [
+ "0803052078300000",
+ "6000000078310000",
+ "6000000078320000",
+ "6000000078330000"
+ ],
+ "3": [
+ "0800088078300000",
+ "2a00000078310000",
+ "2a00000078320000",
+ "2a03030078330000"
+ ]
+ },
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "b0791039b77df44784b63ba36d37c266055092acbcc3b0c29ad1f9a5e8fb6008"
+ }
+ ],
+ "admission_set": 6
+ },
+ {
+ "kind": "VA",
+ "system": "Big Sur",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "5cbddcb193e9780fc3d482023ca0c3cbf5d80fc4c03e8146e13f15560cbdbc0e"
+ }
+ ],
+ "admission_set": 7
+ },
+ {
+ "kind": "VA",
+ "system": "Monterey",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "447574f51c0e2c2ffc1022b556effac81bb2325b5c5d6b2b53c483d5c790a049"
+ }
+ ],
+ "admission_set": 7
+ },
+ {
+ "kind": "VA",
+ "system": "Ventura",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "e69a79553a3f91e51359ff0e0f7850c91959c90461c158ea4c73e8207909717a"
+ }
+ ],
+ "admission_set": 7
+ },
+ {
+ "kind": "VA",
+ "system": "Sonoma",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "cff913f6bc113217ebeccba602ba4a54d8434919a6490aa24986c23afc9592c2"
+ }
+ ],
+ "admission_set": 7
+ },
+ {
+ "kind": "VA",
+ "system": "Sequoia",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "1c860fc8aee1ad690f7bf7551132bae631f5bd563ccd8204acbdb2a949ac5dc9"
+ }
+ ],
+ "admission_set": 7
+ },
+ {
+ "kind": "VA",
+ "system": "Tahoe",
+ "offsets": [
+ 77974,
+ 78017,
+ 77980
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "a972cdb7ddd56bcf38c3ab71e874b73efc34bc683d30e49f0a1a1919625a726d"
+ }
+ ],
+ "admission_set": 7
+ },
+ {
+ "kind": "CL",
+ "system": "Big Sur",
+ "offsets": [
+ 34975,
+ 34662,
+ 34982
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "6a4b9aaa34742ac8033b4ecce305825de01647e928464a3501c0b54455371347"
+ }
+ ],
+ "admission_set": 6
+ },
+ {
+ "kind": "CL",
+ "system": "Monterey",
+ "offsets": [
+ 38248,
+ 36872,
+ 38255
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "2f39439620f8ef81fd5dda7277e669f72b8597bc3ad41004fbea6a569ae92d7d"
+ }
+ ],
+ "admission_set": 6
+ },
+ {
+ "kind": "CL",
+ "system": "Ventura",
+ "offsets": [
+ 38669,
+ 37759,
+ 38676
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "912322c44c269db8a93db7a194e97215550b210f3a389f43a83765db66d72a48"
+ }
+ ],
+ "admission_set": 6
+ },
+ {
+ "kind": "CL",
+ "system": "Sonoma",
+ "offsets": [
+ 26795,
+ 25878,
+ 26802
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "8d06b528b454b6cb90295541650a7b3cd6be28a3ee54b2526588773b3df6fdcc"
+ }
+ ],
+ "admission_set": 6
+ },
+ {
+ "kind": "CL",
+ "system": "Sequoia",
+ "offsets": [
+ 25876,
+ 25029,
+ 25883
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "02da3606ae5419abe474eee1a348c1f19e6baa568d3851342554ca18367e4ae0"
+ }
+ ],
+ "admission_set": 6
+ },
+ {
+ "kind": "CL",
+ "system": "Tahoe",
+ "offsets": [
+ 25455,
+ 24593,
+ 25462
+ ],
+ "sources": [
+ {
+ "tag": "v0.4.0",
+ "sha256": "88cdf5bbc18137dc2f03e414aa3ca3a6d3e91e0cacdc162582d04de91808f9eb"
+ }
+ ],
+ "admission_set": 6
+ }
+ ]
+}
diff --git a/tools/native_dispatch.cpp b/tools/native_dispatch.cpp
new file mode 100644
index 0000000..f8eb622
--- /dev/null
+++ b/tools/native_dispatch.cpp
@@ -0,0 +1,92 @@
+// Execute private copies of released dispatch/URB code, never load the driver.
+// Only native continuation blocks become markers. Enter through the real site.
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+extern "C" unsigned runGL(void *, unsigned), runVA(void *, void *), runCL(void *, unsigned);
+extern "C" uint64_t runURB(void *, void *, unsigned);
+asm(".text\n"
+ ".globl _runGL\n_runGL:\nmov %rdi,%rax\nmov %esi,%edx\ncall *%rax\nret\n"
+ ".globl _runVA\n_runVA:\npush %rbx\nmov %rsi,%rbx\ncall *%rdi\npop %rbx\nret\n"
+ ".globl _runCL\n_runCL:\npush %rbp\nmov %rsp,%rbp\n"
+ "push %rbx\npush %r12\npush %r13\npush %r14\nsub $0x200,%rsp\n"
+ "mov %rdi,%r11\nmov %esi,%eax\nmov %esi,-0x1e8(%rbp)\n"
+ "lea -0x1f0(%rbp),%r13\nmov %r13,%r14\ncall *%r11\n"
+ "add $0x200,%rsp\npop %r14\npop %r13\npop %r12\npop %rbx\npop %rbp\nret\n"
+ ".globl _runURB\n_runURB:\npush %rbx\npush %r15\nmov %edx,%ebx\n"
+ "lea -0x3978(%rsi),%r15\nmovabs $0x123456789abcdef0,%rdx\ncall *%rdi\n"
+ "mov %rdx,%rax\npop %r15\npop %rbx\nret\n");
+
+static uint8_t *load(const char *path, size_t &size) {
+ std::ifstream f(path, std::ios::binary);
+ std::vector data((std::istreambuf_iterator(f)), {});
+ assert(data.size() >= 32);
+ uint32_t magic, cpu;
+ memcpy(&magic, data.data(), 4); memcpy(&cpu, data.data()+4, 4);
+ assert(magic == 0xfeedfacf && cpu == 0x1000007);
+ size = data.size();
+ auto p = static_cast(mmap(nullptr, size, 7, MAP_PRIVATE|MAP_ANON, -1, 0));
+ assert(p != MAP_FAILED); memcpy(p, data.data(), size); return p;
+}
+
+static void marker(uint8_t *p, size_t size, unsigned offset, unsigned value) {
+ assert(offset + 6 <= size);
+ const uint8_t code[] = {0xb8, uint8_t(value), 0, 0, 0, 0xc3};
+ memcpy(p+offset, code, sizeof(code));
+}
+
+static unsigned number(const char *s) {
+ char *end; auto n = strtoul(s, &end, 0); assert(*s && !*end && n <= UINT32_MAX);
+ return unsigned(n);
+}
+
+int main(int argc, char **argv) {
+ assert(argc == 7);
+ size_t size; auto p = load(argv[2], size);
+ if (!strcmp(argv[1], "urb")) {
+ assert(size > 0xa0c2);
+ p[0xa0c2] = 0xc3;
+ uint64_t words[4];
+ for (unsigned i=0; i<4; ++i) {
+ char *end; words[i]=strtoull(argv[3+i], &end, 16); assert(*argv[3+i] && !*end);
+ }
+ for (unsigned bank=0; bank<3; ++bank) {
+ std::vector state(4*0xa70+64, 0xa5);
+ for (unsigned j=0; j<4; ++j) memcpy(state.data()+j*0xa70+bank*8, words+j, 8);
+ auto untouched = state;
+ assert(runURB(p+0xa0b8, state.data(), bank) == 0x123456789abcdef0ULL);
+ printf("%u", bank);
+ for (unsigned j=0; j<4; ++j) {
+ uint64_t word; memcpy(&word, state.data()+j*0xa70+bank*8, 8);
+ printf(" %016llx", (unsigned long long)word);
+ memcpy(untouched.data()+j*0xa70+bank*8, &word, 8);
+ }
+ puts(""); assert(state == untouched); // Every other byte must survive.
+ }
+ } else {
+ assert(argc == 7);
+ unsigned entry=number(argv[3]), yes=number(argv[4]), no=number(argv[5]);
+ unsigned vendor=number(argv[6]); assert(entry object(0xa880); bool first=true;
+ for (unsigned device=0; device<65536; ++device) {
+ const unsigned identity=(device<<16)|vendor;
+ memcpy(object.data()+0xa878, &identity, 4);
+ unsigned result;
+ if (!strcmp(argv[1], "GL")) result=runGL(p+entry, device);
+ else if (!strcmp(argv[1], "VA")) result=runVA(p+entry, object.data());
+ else { assert(!strcmp(argv[1], "CL")); result=runCL(p+entry, identity); }
+ assert(result<=1);
+ if (result) { printf("%s%04x", first?"":" ", device); first=false; }
+ }
+ puts("");
+ }
+ assert(munmap(p,size)==0);
+}
diff --git a/tools/test.py b/tools/test.py
index bd84ddd..928cb04 100644
--- a/tools/test.py
+++ b/tools/test.py
@@ -15,6 +15,8 @@
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('package', type=Path)
parser.add_argument('--rcodesign', default='rcodesign')
+parser.add_argument('--native-history', action='store_true',
+ help='execute historical x86_64 dispatch/URB regressions; requires clang and native x86_64 or Rosetta')
args = parser.parse_args()
test_rejection()
subprocess.run([sys.executable, str(Path(__file__).with_name('test_uninstall.py'))], check=True)
@@ -47,6 +49,9 @@
assert args.package.name == 'AutoPkg-Assets.pkg'
from test_autopkg import check_autopkg
check_autopkg(root, manifest, cases)
+ if args.native_history:
+ from test_released_dispatch import check_payloads
+ check_payloads(root / 'AutoGraphics.pkg/Scripts/Assets')
action = subprocess.check_output(['installer', '-query', 'RestartAction', '-pkg', str(args.package.resolve()), '-target', '/'], text=True)
assert 'RequireRestart' in action, action
print('PASS: universal AutoPkg resources, OS selection, script execution and native restart')
@@ -121,5 +126,8 @@
assert len(data) == expected[rel]['size']
assert p.stat().st_mode & 0o777 == expected[rel]['mode'], rel
total += len(actual)
+ if args.native_history:
+ from test_released_dispatch import check_payloads
+ check_payloads(root, package_layout=True)
subprocess.run(['bash', '-n', str(Path(__file__).resolve().parents[1] / 'uninstall.sh')], check=True)
print(f'PASS: {len(cases)} version boundaries, {len(payload_choices)} standard payloads/BOMs, {total} reconstructed files, script syntax; autopkg={autopkg}')
diff --git a/tools/test_released_dispatch.py b/tools/test_released_dispatch.py
new file mode 100644
index 0000000..7627bcc
--- /dev/null
+++ b/tools/test_released_dispatch.py
@@ -0,0 +1,145 @@
+#!/usr/bin/env python3
+"""Preserve released native PCI routes and GL URB corrections, without a GPU.
+
+The frozen corpus comes from each immutable release binary, independently of
+current device tables and patch emitters. Native continuation blocks are markers;
+this does not exercise shader compilation, codecs, a GPU or physical output.
+Requires macOS, clang and x86_64 execution (native or Rosetta).
+"""
+import argparse
+import hashlib
+import json
+import subprocess
+import tempfile
+from pathlib import Path
+
+ROOT = Path(__file__).resolve().parents[1]
+FIXTURE = ROOT / 'tools/fixtures/released_dispatch.json'
+SYSTEMS = ('Big Sur', 'Monterey', 'Ventura', 'Sonoma', 'Sequoia', 'Tahoe')
+# Entry and continuation offsets describe the fixed bundled donors, not host OS.
+CL = {'Big Sur': (0x889f,0x8766,0x88a6), 'Monterey': (0x9568,0x9008,0x956f),
+ 'Ventura': (0x970d,0x937f,0x9714), 'Sonoma': (0x68ab,0x6516,0x68b2),
+ 'Sequoia': (0x6514,0x61c5,0x651b), 'Tahoe': (0x636f,0x6011,0x6376)}
+ROUTES = [('GL', 'Common', (0x192f9f,0x19340f,0x192fa5))] + [
+ (kind, system, (0x13096,0x130c1,0x1309c) if kind=='VA' else CL[system])
+ for kind in ('VA','CL') for system in SYSTEMS]
+
+
+def relative(kind):
+ if kind == 'CL': return 'Library/GPUBundles/XeOpenCL/libCLVMIGCPlugin.dylib'
+ return f'Library/GPUBundles/AppleIntelTGLGraphics{kind}Driver.bundle/Contents/MacOS/AppleIntelTGLGraphics{kind}Driver'
+
+
+def build(directory):
+ executable = directory / 'native-dispatch'
+ subprocess.run(['clang++', '-std=c++17', '-arch', 'x86_64', '-O1',
+ str(ROOT/'tools/native_dispatch.cpp'), '-o', str(executable)], check=True)
+ return executable
+
+
+def routes(executable, path, kind, offsets, vendor=0x8086):
+ output = subprocess.check_output([str(executable), kind, str(path),
+ *(hex(n) for n in offsets), hex(vendor)], text=True)
+ return output.split()
+
+
+def urb(executable, path, inputs):
+ result = {}
+ for shape, quartet in enumerate(inputs):
+ output=subprocess.check_output([str(executable),'urb',str(path),*quartet],text=True)
+ for line in output.splitlines():
+ bank, *words=line.split();assert len(words)==4
+ result[f'{shape}:{bank}']=words
+ assert len(result)==len(inputs)*3
+ return result
+
+
+def export(executable, directory, destination):
+ # Use the same immutable release identities as the client-history corpus.
+ releases=json.loads((ROOT/'tools/fixtures/released_clients.json').read_text())['releases']
+ groups={}
+ for release in releases:
+ tag, commit = release['tag'], release['commit']
+ for kind, system, offsets in ROUTES:
+ data=subprocess.check_output(['git','-C',str(ROOT),'show',commit+':payloads/'+system+'/'+relative(kind)])
+ path=directory/'input';path.write_bytes(data)
+ admitted=routes(executable,path,kind,offsets)
+ assert admitted, (tag,kind,system,'empty historical route')
+ if kind!='GL':
+ for vendor in (0,0x1234,0xffff):
+ assert not routes(executable,path,kind,offsets,vendor), (tag,kind,system,vendor)
+ corrections=None
+ if kind=='GL':
+ observed=urb(executable,path,SHAPES)
+ corrections={str(shape):observed[f'{shape}:0'] for shape in range(4)}
+ assert all(observed[f'{shape}:{bank}']==corrections[str(shape)]
+ for shape in range(4) for bank in range(3))
+ key=(kind,system,tuple(admitted),json.dumps(corrections,sort_keys=True))
+ record=groups.setdefault(key,dict(kind=kind,system=system,offsets=list(offsets),
+ admitted=admitted,**({'urb':corrections} if corrections else {}),sources=[]))
+ record['sources'].append(dict(tag=tag,sha256=hashlib.sha256(data).hexdigest()))
+ print('CAPTURE',tag,flush=True)
+ inventories=[]
+ for contract in groups.values():
+ admitted=contract.pop('admitted')
+ if admitted not in inventories:inventories.append(admitted)
+ contract['admission_set']=inventories.index(admitted)
+ destination.write_text(json.dumps({'schema':1,
+ 'releases':{r['tag']:r['commit'] for r in releases},
+ 'admission_sets':inventories,'urb_inputs':SHAPES,
+ 'contracts':list(groups.values())},indent=2)+'\n')
+
+
+def check(executable, fixture, payloads, package_layout=False):
+ corpus=json.loads(fixture.read_text());assert corpus['schema']==1 and corpus['contracts']
+ cache={};count=0
+ for contract in corpus['contracts']:
+ kind, system=contract['kind'],contract['system']
+ path=payloads/(system.replace(' ','')+'.pkg')/'Payload'/relative(kind) if package_layout else payloads/system/relative(kind)
+ key=(kind,system)
+ if key not in cache:
+ admitted=routes(executable,path,kind,contract['offsets'])
+ if kind!='GL':
+ for vendor in (0,0x1234,0xffff):
+ assert not routes(executable,path,kind,contract['offsets'],vendor), (kind,system,'foreign vendor route',vendor)
+ cache[key]=(set(admitted),urb(executable,path,corpus['urb_inputs']) if kind=='GL' else None)
+ admitted, corrections=cache[key]
+ label='/'.join(source['tag'] for source in contract['sources'])+' / '+kind+' / '+system
+ lost=set(corpus['admission_sets'][contract['admission_set']])-admitted
+ assert not lost, (label,'lost released native routes',sorted(lost))
+ if corrections:
+ # Old passthrough layouts may gain a new correction. Preserve every
+ # correction actually made by an old release, including peer words.
+ for shape, expected in contract['urb'].items():
+ original=corpus['urb_inputs'][int(shape)]
+ if expected!=original:
+ for bank in range(3):
+ case=f'{shape}:{bank}'
+ assert corrections[case]==expected,(label,'lost URB correction',case,expected,corrections[case])
+ count+=len(contract['sources'])
+ print(f'PASS: {count} released binary contracts; {len(cache)} actual-entry dispatches, all 16-bit IDs, vendor rejection and historical URB corrections')
+
+
+SHAPES = [
+ ['0803078078300000','8000000078310000','8000000078320000','8000000078330000'],
+ ['0803038078300000','4000000078310000','4000000078320000','4000000078330000'],
+ ['0803058078300000','6000000078310000','6000000078320000','6000000078330000'],
+ ['0800088078300000','2a00000078310000','2a00000078320000','2a03036078330000'],
+]
+
+
+def check_payloads(payloads, package_layout=False):
+ with tempfile.TemporaryDirectory(prefix='xe-native-history-') as tmp:
+ check(build(Path(tmp)),FIXTURE,payloads,package_layout)
+
+if __name__=='__main__':
+ p=argparse.ArgumentParser(description=__doc__)
+ p.add_argument('--payloads',type=Path,default=ROOT/'payloads')
+ p.add_argument('--fixture',type=Path,default=FIXTURE)
+ p.add_argument('--package-layout',action='store_true')
+ p.add_argument('--export',action='store_true',help='explicitly regenerate the corpus from immutable release commits')
+ args=p.parse_args()
+ with tempfile.TemporaryDirectory(prefix='xe-native-history-') as tmp:
+ directory=Path(tmp);executable=build(directory)
+ if args.export:export(executable,directory,args.fixture)
+ else:check(executable,args.fixture,args.payloads,args.package_layout)
From ebf3759a879f24b67af4fa3f18be50f93e9ed05d Mon Sep 17 00:00:00 2001
From: b00t0x <2325377+b00t0x@users.noreply.github.com>
Date: Sat, 7 Nov 2026 23:30:05 +0900
Subject: [PATCH 4/4] Use the current package version in build examples
---
README.md | 2 +-
README_ja.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index c0863ce..bf9650d 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@ Requires macOS, Xcode command-line tools and Python 3.10+. Verification also nee
```sh
python3 tools/build.py
-python3 tools/test.py dist/WhateverXe-Graphics-0.4.0.pkg
+python3 tools/test.py dist/WhateverXe-Graphics-0.4.1.pkg
```
For AutoPkg, add `--autopkg` to the build command and test `dist/autopkg/AutoPkg-Assets.pkg`.
diff --git a/README_ja.md b/README_ja.md
index 5be0756..0b5eb9a 100644
--- a/README_ja.md
+++ b/README_ja.md
@@ -62,7 +62,7 @@ macOS、Xcode Command Line Tools、Python 3.10以上が必要です。検査に
```sh
python3 tools/build.py
-python3 tools/test.py dist/WhateverXe-Graphics-0.4.0.pkg
+python3 tools/test.py dist/WhateverXe-Graphics-0.4.1.pkg
```
AutoPkgはビルド時に`--autopkg`を追加し、`dist/autopkg/AutoPkg-Assets.pkg`を検査します。