Dashboard › spotlight › Distillation
b15f8771-a074-4118-9fe5-008b72d0e727["99057c802dea5563b1ef8113febea529","47c0aedc04eb58c85a1a5c6fa8ac70d3","9df2d342df412f22db4b6c65cffbf67c","26442b8f0e0040559aee4f05342dfae2","fca65904c48d31cbdb7696c8b0345f6c","a77b3b91054829c15835145989f9a66b","5f8bf3a914c67793e8d58186f4f96b8f","5441eada4980a8e68d5e9537adbea90a","8f07dda7b40ee06b462e38fc4b584ef8","39d595f37025f25c8634bb601003c513","d1ac9850724481e7d62bd92f329294a9","c7d537cdc34f6553a7a53a1a72368017","9bee7ce26e510ab8238ed1211df2f949","eed5d648e61c22bf74ef9a5ced5d2bb1","d105584fa2cb190769fbc5cf0a81746a","0b0eed178cd6f759f43b558f9d5557b8","e07efac935b72ea247b6f946f88ded73","bd8021da1aaf2351c4afcb8ad456aefa","1325b60c32ce1de4e81721903f1c357d","d8de1fb38140908d0dc9b7d6cbff9e72","1c4849f313f40f0db2bc70a6b4140ade","6d080ae6676ed68f852e3e1febc7f960","3d78809452f459765014a81ee605d127","cfcf3fa1ae716d304cd599d1be7a978f","6475c40b2e24819b71c19a9a19e21f04","70a2969a152c2344f1e1a9c8e2c0f041","df03dbeb02898ebdd27d29f865a8b42d","9f416a01e83306369e862a7e863bd987","70cb7b0eb2259654826fd3cd7d808b11","b2fc58261ffc55bc1385c4c129925950","2dee638cd751fec3de540167fe92d473","a0e0886e173bd1344c071b5894b14424","4b0d676d485c5c36b712f00835727413","51f648afb52235be879a516e5d2e5c88","f101aaa06b2379a5857ff928133118d7","a7fa702cafd5f393986c5c4358fee62f","a05802d367f5aae843909fff1d34b772","52e10eefe71af4aee717a556a7944562","cfb51c971562c63f572337812cb0283b","2dbb518d321aa3ceb1d82ec541a3a46a","dc2ff221f3169c562aa05769fc88c5a9","b54eb87f2c55e87efb679df7b3db4889","118b572d6d2f569eb321228c70720fcd","91fce25c0fb2d304dd2eb47d591d7a74","d19927201c3d109032d9e5f311e2ede8","036a42ece5d40b000aec5eae45c32f7e","a4f6ffa471cc9744361080696153ef59","e23564bca123ba4e4d3188dd43442f3e","75253b7c29532c28f990ded14157fc2b","412ddd41379dec2b28d2d9925601849b","549d5b36c689bb5dd4dccfbed09aa11c","78384c5d85b9c423b63fd52aa699ec25","aaa5a12e4e91f08a202b99e98f18b5be","5b1691aaed0b53ecf3f268c638881eab","918ff6c31621e49c55a6058dadebbda5","0547c840734cb058e12d3ccb256cd26f","92351694da4b1484e9b04492644f024a","fb1096ba5129c131a2690ee476fe01bb","444891085c20beb4dbed4e3f3c468bb6","f3b3b21d435a6b2dd0227b083cc39ce9","9dc0b4b553798253477e42ed4500f594","fd41b68bd736b3f1b1aae63a2903d7b5","424c4a6932662c72810613dc0e6e5c69","bf38116e89a44f49fc4ad72e56243944","c0d7f572a2b14e378ab1110bcd10b020","e24aaf2921b466f4d5b285a79a587e14","e4543b2a582e951c6620911ae61559c3","1f946ff2781d94a35d3b99148fa9e5eb","5302f5581015f9adc14f6b4898efe422","533737c8db19fcb055ee7923a9f42b6e","d271fc94d8a98baeca586d768a63eaba","7aab5e86cb1448539b1be308d7591172","955f9b6ca465f513d547ba9ff9c616d7","6b0a5fc8da00bec74a396ddcf8ef70c9","55fb9fcb17eb1c0cf86304fb67d25190","8fc89b94aa0dfcde55b09a3c2c18b0bd","a0592d67786fbc29bebbfa7ff74430cf","1299106b96c22b66e7d973bcc664dca0","d50d66113eef684c99dac97762a29e51","a9e5d23cc7b77de0a5e67320e69340a6","68322b23905f43dafd9921a86d5f5bbe","4bee2ecbcc06f0a895a08957da403cd5","66b489654dfd09662c8a141f780a870e","e4db3d7fae0488b6c201770aa4a7ad27","46c10956f5b5e6f8c8de5093750ca325","cadf4483370fa510295422e479aa9e90","457a41d64d6de45f0eae2abbd6e33102","e94a2cef542b0b00af7cebfb7a651eb6","e3121563023240ee5f8d2048a27ae902","793daa6ccf62f24c09a7257a264fd5bf","d74dc7b94548d2a95a20652a8d4a26e5","4b81394852cdf19a0b897b052b10d028","22bc4834d0efd51836d71bba6b659383","effc510994a0e2c2ab4b5e0e673b106b","f4f2d7d15ad92cf5fb4c5e9b71890e29","1f672ea0e858890553d678adb81f0ae2","1186e60a3ed7506e89150af7d263855d","283c67f627fe974cd0f271624214f89a","30bdc6f7cc268fa1d3cf14c192d166d5","217d57fcfa46cd9d3f68985c15d8f8fa","0f42e741a44333595e374f80004f8c4a","ca39f4f42d1d7e1d6aaacdefcabf7e70","2bea4feda58c7221c76a9b7c209cbad6","b20298d011c468f8689fd51533a2fb2b","7ea5ac232d8b798dfa03a53d4f017af1","e8116e80b19f3edceb86593ca3439749","864581c2cd436ce91f27cdbdc4fb96d1","f20711fc7f0aed1f764328f43ca19321","93b0f9c4574526d8e97d0817793702ab","4366f09985bde3f7d80e837a645965b7","5d2baabddc3ab421dec8cae92afce487","5b2b5c188e951a2f45cc282ff07327b2","1b7924e14d9bffa04bf3b7a83b87cbc5","cb45f8d2c929dece2896e92ee5cd628c","f64f7abda6f92f261cc5651ff8c8aa4e","f8f1d762c6c0de25dd19903d1cfc7067","52eeb9cc01789545d10ac3443aa5ee61","ca9d6f97ceda946527bf12c5c8aa298a","3e1b489e4f4373248f43e007480c38f4","266d2780a70fa2c1286ed46b93746f0a","35f16c43ae05f99a2321c7ab81b7d400","17b562e7a752ac72e01e7628b240869f","943146264a6331d82cf0bf6edf1971bf","597b5be8434d175c0198a101390560fe","d88a2e392f56660ff3e54b0551f5d99d","2159f7c2fecd3a1f4901c73cc1203919","d4a8f89f46015c22ae6feb20d8c1eb35","40a8de3ccfc3a7459eae02e017bd49d5","902eaae1e22c92de657d5185dbeca3c2","cc3557defeffe31e2ca2aa95984219e1","15b876d8f178f7b98a4919162c1b89f9","34417ce9a83e56c6c31af0db324eaf4e","b1f9a71ff334da9b7b2887892ebedf52","2e930bc42bc42ed6730add5fc573dd0a","0c564fef75d75cb7ba7ea238c17ca0d0","1d38313b39c7afd49715228ae6c998e4","0e22bd23bb8f26f5b2d795890f37ecca","f36a4151fe789da520b237c4ecbd1c2d","578d5b732a6c3115f59d0429f0218c58","2dcc6d6d0c2ca01debdc79d727fe61a1","4a69949a047f4b388bf4721d37d515ce","80925ac962056df1842b879a6e362d0c","f685c479a1424b413d225adc37b09b1b","5950bdfd0bf7944918de56e4c3cfd6fd","5e4553d52701b108cc03611c125e6c07","3bde6448a3eb00939ae5682f9a02d77c","5ba92e8ad69d9c291e3f00c3ff61eb72","bedee0b6332f458bca1aec7b5cf3920a","4b2be10594c7bf072934a8a1765c8d9f","55b07b5609b90cb13cfe0b248202f6bd","f9ff292d825006828029fe8be2c8e632","b02f33d4dc2d17228d24a4dc6aab8d73","e48ce272fd4aeddb49420b40918ea85a","117d3cec86bdfd1b3bff24d2add4176c","4ce9e380087c43c171dda33d48bd3039","ee3cf837598dc9e3cd062d34cb59f470","451804039ab317072473d59b36d51798","a54292286a1548484dc3abe40421cf46","a375311777ab3e8110657d5fa8e4adc2","0656609c2dda49e7854aa2b2214d2ab2","dbe716fe283d70eb645c0db8c34dc26e","02add1034f5705bf54dd6e9db66724dc","69a52bd62617e8cdb4f0391c991d9137","56b0dec4652519882e974ebacd3d7b93","f76ecc6db97dea4c522335cb07d53eef","2cce4c54c011d881ecde6232501fd5ba","ac2e198d71c7f64ca3a6c50d3fa1b8cf","1ab06e6b27e15f338c3295d1ac58e7db","7e4cfe3dc46ff7094748101d5c06a880","69f2f88b2db9d56402a6880b2f5bbe8b","2959026945a78589ee6677d1374f9d53","2e3dbf40f99bc131a9f75e6c767e099a","9c55eff7bd3ef6e208cf77beb1a84c2f","ef393c8bd50cffe8aeeadb9b44f41142","eae8344b554004ab5c4774b9ef1dda09","1a08aaa98a1a5fd76b0cd8fee29d212e","8cefe842adbbe14c40aa5d5535a322c4","f735cefb687cddf3d27fc194e5f4f928","da9d75af619dcdfee4b875fe4e84a7ee","0f5691442d3f65fff7e9ac2391ac00e4","203f12ef7af085abdaa6f7ecfcc6b633","4d8f43c1fc6c00ead863519fb8be51bc","e2f76a858a7b9d2412ce239739c7e7c2","637df8182a10eb2a70e995be148b9f26","b1a8a6da18f279aff3719f77f328edd1","a342b1e7a01126deb1320984a1b6d89d","9d9ab5123ecaddd8582a9b2c2e04c2d4","195f0332eee0e987a43bc8d71b984f6a","7ef6dd67c839b88f03277f87f6aaebaa","af0bb6be187ad6f1079f0d7413f437db","15ec1bc20ec754de33c3df25414f6cd9","3452d1f2b5127d5e4ba9fc62a4beacb7","18675dc5f6459a65c029bb39f219029f","21d8eba209c1b2600a3a6ff9557e4e76","2c53179c040964b15332bbbfdd8e4346","95dac26b478055cb19d5493e1b9280cf","1414c4a79c0ae1861023cf5176c2c518","ac6e78d94c0832b949a9c263305659df","1897ded8fff058c3f8ebdf2919cefae5","a4e215bcf63f73256c804e50eb62278d","72f31750a4f95bc26ba589ebfa5d733d","31a70ffd9551d0cfb4107091720f8ac8","9105ede4cde75f482f3e4ac853792c4c","bff71ed0772bbbd4e79655b627ed1b7c","baf45906e2637b18883f1764110f5fda","38d551b107882bd5c214b3a4082d4ce6","d67f1e1168da8c229baf8cc92ecc5a6b","d6ff0b8ed6271693f2e22aa70ec9e6f8","74eaee433813fd9792105ea89eebb1ff","461579e84e4a3f293bacddbd3a1006e5","7e59dc1e598cb9d8dc119fe472856516","cb5a5585c717ae7dfcf24fab51e9f51b","07b3f2ba664eb2f5a661cf8fba33ddba","4df9ad62faa0613be2d8e530e3d1e631","470d7d337a25e09955658fbe67da6d86","81e331763d0d74fd3f84988a1539a914","cd9e1f4d966f91f38ae1c2550f7e848a","1e35a8a4bda1b46c980f1afb69fe0336","cf334b5100203804573b3bda31852113","dbe0712fb598b5dd878ff0ef41eec11c","f7095c7cb36cf4052a79183cece29ad5","0af3a7793700e2d3e6b5f0ae170b0cf6","335385d1fbeaea3587bbdb254662c1b9","1d8e2f54aff5bdfab7286dfbb5e32c23","232bf017cf5321e73df279cc4aaee291","8c8b97dadcdd5311f2ef410e663f747b","4eef9960da4d88eaa2967a7ce9849a1a","3f485567f75f2ec216f8773edab4e658","f5e1301dd62e235296eaadd9711a9dcd","0f8b031685a9fc7b1d43dea524fae31f","90614a9993057d505aad64eb92e9f110","26037f3d13d90d9efd12841fe8f1f584","b9541858c1d3d58e0cdc078392ca6026","394006d9e7c8f1fe4ae8be82c4877673","6755444263b32c841dd026154ae9aff0","b2fa324c54a25d751af11fc892206f6f","e70cd467993a89b95dca86443139415b","56dc18c04d9dbf8823d9e42dbd25196e","2b1929afce25aeffffda803c01929090","7107a14b9fde1314762915f8a212a8ae","2b62209c9b6ba58e9359ea2260f408da","602a3f3619fa953bad1c869f6c5c8e4a","5114d8a769dde1b4ec38cdc1f30cd354","9c75860da5824c3ad7b58c44de2b4387","97b5e1c0f8b6edf222ed8022edc66190","e579f143bb64545f631c835f22538fa5","c79a04c87cb9d6f5a54a62a3e414c83a","4509caace067d2083edc43da7b44b480","ebaacd55fd6bab70aa5f49dd8a635e18","6a80b40ab0f1f2ba205a4954ee79a2fd","28d595eaabda4ef14700ade7e346e28a","13aa664f9f1a7ecbc92713829683313a","b66c737265eb61065521a641cd23096b","e9efa4dc9ae930b0e04410a673c0f8e4","995a781a3b8712a0db5f7ae29dbbb2ff","2b1cabfd341abe29db6d6f70b093e866","5446a205ef0be567111891895bb91b1d","6f34a79e6664acf9a63bdb824f641a6e","a5732a62e53f045a5b967268dd44a07b","e6e499de0f60d3a4acdb021b661153e9","df8afb27110fb58be10acecd33a5927f","f2c54cb945266dcdd806276ec2b7a5f3","bd7ae60edb2267e7ae9f1aee1296e85c","8dbb9920740df6b55ce10f32b416c065","22311668b1bccc078cdef895ca26e838","96eb6ace0e47eba0d4671a3b5dd82c8d","30dcc3295b466d2a34bca93ee084e63b","0ff1c02b345f9d6eb9adcd6450444bda","4b5c4a440355b1ba17a900708c82ee44","e131ef8faca6addbe41cc2913ea6a004","e5764bef3d72eccac01144a555bf408b","bfb47116636017a92b90848e5bedf350","1489ab560363365a6b7cbd2f780ba30e","afc421dc5e7b5eff78ceb9c256831ad2"]
getsentry/spotlight (local path /home/byk/Code/getsentry/spotlight), fixing a macOS Electron notarization CI break in .github/workflows/build.yml and packages/spotlight/.fix/notarize-key-pem-armor → main: PEM-armor fix for Apple API key. Merged as commit 66d991e3. Verified green end-to-end on main via GitHub Actions run 29828172734 ("notarization successful" logged for both x64 and arm64).chore/electron-builder-26: bump electron-builder ^24.13.3 → ^26.15.7 in packages/spotlight/package.json. All CI checks passed (Analyze x2, CodeQL, JUnit, Secret Scan, Seer Code Review, Socket Security x2, Unit Tests x2). User approved merge ("let's go" at 12:27); presumed merged (last confirmed status: all checks green).chore/remove-redundant-notarize-afterSign → main: removes now-redundant afterSign notarize hook (scripts/notarize.cjs) since electron-builder's internal auto-notarize path already handles it. Commit 826147f1, pushed. Adversarial review (session ses_07b389a45ffevXSycBLvMQtjqJ) returned SAFE TO MERGE, zero findings. As of last check (13:11), CI status: all checks green except semgrep-cloud-platform/scan still pending; mergeStateStatus=UNSTABLE, mergeable=MERGEABLE. A follow-up check was scheduled ~75s later (task id ruqgboyn) to merge (squash, delete branch) once semgrep passes, then sync local main — this merge had not yet been confirmed complete as of the last observation.<pty_exited> message, only pty_read for live output if user asks or exit code is non-zero.plan_exit..opencode/ dir and packages/website/content.config.ts excluded from commits; .lore.md always staged with git add .lore.md when modified.build.yml; (2) Secondary — bump electron-builder ^24.13.3 → ^26.15.7 for better error legibility (not required for the actual fix, since armoring alone solves the crash).notarize.cjs cleanup, user chose "Do it now as its own PR" over two rejected alternatives: "Hold the cleanup for now" (bundle with a future release-tested change) and "Only drop the devDep" (rejected as not viable — the script imports @electron/notarize, so the devDep can't be removed without removing the script too).--issuer omission logic in @electron/notarize 3.x was irrelevant); literal \n-escaping in the PEM (ruled out — actual issue was total absence of PEM armor, not escaping).BEGIN PRIVATE KEY marker) rather than always wrapping, to be safe regardless of whether the secret is later re-stored as pre-armored PEM.Bug 1 — Notarization crash on macos-26 runners (root cause + fix, PR #1334):
SyntaxError: Unexpected token 'E', "Error: inv"... is not valid JSON thrown from @electron/notarize@2.2.1, notarytool.ts:79:25, via macPackager.ts:478 (readDirectoryAndSign) → macPackager.ts:488 (signApp) → platformPackager.ts:336 (doSignAfterPack).macos-latest runner label switched from macOS 15/Xcode 16 to macos-26-arm64 (macOS 26.4, build 25E246, Xcode 26.6) on 2026-07-21 — the exact day of the first failure (last known-green run was 2026-06-24).~/k.txt): the CI workflow's cat /tmp/apple_key.json | jq .private_key -r > /tmp/apple_key.pem wrote the private_key field verbatim, which is a bare base64 DER body (no PEM armor, no BEGIN/END headers, no line wrapping, 201 bytes as extracted). Xcode 16's notarytool tolerated this; Xcode 26's notarytool rejects it, emitting a plain-text Error: inv... (invalid key) instead of JSON. electron-builder 24.13.3's bundled @electron/notarize@2.2.1 does a raw JSON.parse(stdout) on notarytool's response and crashes with an unhandled SyntaxError instead of surfacing Apple's real error.key_id = 3RC4SAF8T6, issuer_id = 69a6de81-4417-47e3-e053-5b8c7c11a4d1, P-256 (prime256v1) EC key — valid once properly PEM-armored (verified via openssl ec/pkcs8).KEY_BODY="$(jq -r .private_key /tmp/apple_key.json)"; if it already contains BEGIN PRIVATE KEY, pass through unchanged (idempotent); else wrap with -----BEGIN PRIVATE KEY----- / -----END PRIVATE KEY-----, strip spaces/CR/LF via tr -d ' \r\n', fold at 64 columns via fold -w 64, and insert a required blank line before END (bug found: without it, the folded body ran directly into the END line, causing openssl to still fail — verified via hexdump showing bare key body had no trailing new999line)..github/workflows/build.yml (two occurrences: build job ~line 84, electron-mac job ~line 391) + .lore.md. Diff: 2 files, 24 insertions, 2 deletions. Commit 86074143 "fix(ci): armor Apple API key as PEM for Xcode 26 notarytool" on branch fix/notarize-key-pem-armor. PR: https://github.com/getsentry/spotlight/pull/1334.CA886EB0F2EF765B26CDA592CD42DA4E9C92C916 applied to both dist-electron/mac/Spotlight.app (x64) and dist-electron/mac-arm64/Spotlight.app (arm64); "notarization successful" logged for both architectures (x64 at 2026-07-21T12:03:09.13Z, arm64 at 2026-07-21T12:06:53.03Z); DMGs built: Spotlight-4.11.7.dmg and Spotlight-4.11.7-arm64.dmg + blockmaps.scripts/notarize.cjs (using @electron/notarize@2.5.0) was identified as dead code — electron-builder notarizes internally via its own bundled version and never calls this script (this fact fed directly into the later PR #1336 cleanup).Change 2 — electron-builder version bump (PR #1335):
packages/spotlight/package.json: electron-builder bumped from ^24.13.3 → ^26.15.7.@electron/notarize@2.5.0 wraps notarytool's JSON.parse in try/catch and throws a clear message instead of crashing; @electron/osx-sign@1.3.3 confirmed CJS-safe via dist/cjs/index.js, avoiding prior osx-sign@1.0.5 exports-map breakage). Not required for the actual fix (PEM armor already fixed the root cause).chore/electron-builder-26 off latest main; ran pnpm install (initial attempt pty_d0a270ed failed with ERR_PNPM_NO_PKG_MANIFEST due to wrong workdir /home/byk/Code; fixed by rerunning as pty_8095652c with workdir explicitly /home/byk/Code/getsentry/spotlight, succeeded in 9.7s).electron-builder@26.15.7 resolved; @electron/notarize resolved to both 2.2.1 and 2.5.0 (coexisting, old version used by squirrel-windows); @electron/osx-sign resolved to both 1.0.5 and 1.3.3; confirmed via readlink that electron-builder@26.15.7 actually loads app-builder-lib@26.15.7 (not the old 24.13.3) for the mac build path.Change 3 — Remove redundant notarize afterSign hook (PR #1336):
packages/spotlight/electron-builder.cjs (removed let afterSign = "scripts/notarize.cjs";, the afterSign = undefined; branch, and the afterSign, key in builder config); packages/spotlight/scripts/notarize.cjs deleted (and now-empty scripts/ dir removed); packages/spotlight/package.json (@electron/notarize@^2.5.0 devDep removed); pnpm-lock.yaml updated.macPackager.js:317-319 calls notarizeIfProvided(appPath) inside sign() (only for non-MAS target, which spotlight uses); MacTargetHelper.js:256-270 notarizeIfProvided only skips when notarize===false or getNotarizeOptions returns undefined — config sets no notarize key, so internal path always runs; MacTargetHelper.js:236-244 reads APPLE_API_KEY, APPLE_API_KEY_ID, APPLE_API_ISSUER — same three env var names used by both the CI workflow (build.yml:406-408) and the now-deleted notarize.cjs script — confirming no env-var mismatch risk.APPLE_API_KEY_ISSUER_ID (different name) exists only in the unrelated Linux build job (build.yml:92-95, used for rcodesign/fossilize signing, not electron-builder).notarize.cjs, scripts/notarize, @electron/notarize, or afterSign outside pnpm-lock.yaml transitive entries.pnpm install (pty_e56aadae, exit 0, 6.6s) confirmed @electron/notarize remains only transitively (via app-builder-lib@26.15.7 at lockfile lines 740/744, and via squirrel-windows at 7793/7801). pnpm build (pty_21f0047b, exit 0, 2214 lines) succeeded — "Tasks: 2 successful, 2 total" (@spotlightjs/spotlight#build, @spotlightjs/website#build); build:sea created dist-bin/spotlight-linux-x64; build:electron ran successfully..lore.md matched HEAD, nothing to stage.chore/remove-redundant-notarize-afterSign, pushed to origin.@electron/asar@3.2.13 and stale @types/glob/@types/minimatch dropped; @electron/universal@1.5.1 repointed to @electron/asar@3.4.1.electron-mac job only runs on push to main/release/*, so full end-to-end proof is post-merge only.semgrep-cloud-platform/scan pending; mergeStateStatus=UNSTABLE, mergeable=MERGEABLE. Follow-up check scheduled (~75s later, task ruqgboyn) to merge via squash + delete branch once semgrep passes, then sync local main — completion not yet confirmed.pnpm build:mac with SyntaxError from @electron/notarize@2.2.1 parsing non-JSON notarytool output.app-builder-lib/@electron/notarize version histories (2.2.1 in electron-builder 24.13.3, 2.5.0 in 26.15.7, 3.1.1 in 27-alpha with Individual-key support), ruled out file permissions and (once user confirmed Team key at 11:35) Individual-key handling. Drafted a plan file with an open item requiring the user's key bundle.~/k.txt (with strict instructions: process, delete file, don't print contents). Decoded and confirmed key_id/issuer_id match; discovered private_key extracted with jq was a 201-byte bare base64 DER body with no PEM armor, which fails openssl parsing — but parses fine once properly armored (P-256 valid key).build.yml (Linux build job ~line 84, electron-mac job ~line 391 — noted these use differently-named env vars, APPLE_API_KEY_ISSUER_ID etc., for the Linux job specifically). Debugged PEM-armor script edge cases (idempotent wrap, blank-line-before-END fix confirmed via hexdump). Finalized root cause and fix plan; wrote plan to .opencode/plans/1784633071030-cosmic-engine.md; securely deleted ~/k.txt and temp files.fix/notarize-key-pem-armor, applied fix to both build.yml occurrences, committed 86074143, pushed, opened PR #1334. Flagged caveat that full verification requires a post-merge run on main.chore/electron-builder-26, bumped electron-builder to ^26.15.7 in packages/spotlight/package.json, ran pnpm install (after fixing a workdir mistake), verified lockfile resolution and that the mac build path actually uses app-builder-lib@26.15.7.scripts/notarize.cjs afterSign hook. Assistant investigated whether double notarization was occurring, set up a 6-item todo list, and paused to re-verify the "notarizes twice" claim via code inspection before deleting anything.APPLE_API_ISSUER, APPLE_API_KEY_ID, APPLE_API_KEY=/tmp/apple_key.pem; confirmed exactly one "notarization successful" log line per architecture, sourced from electron-builder's internal path. Assistant flagged risk/caution about touching the just-fixed signing/notarize path but user chose "Do it now as its own PR."chore/remove-redundant-notarize-afterSign, removed afterSign wiring, deleted scripts/notarize.cjs, removed @electron/notarize devDep, ran pnpm install/pnpm build (both succeeded), committed 826147f1, pushed, opened PR #1336.semgrep-cloud-platform/scan pending. Follow-up task scheduled (~75s, id ruqgboyn) to merge (squash, delete branch) once semgrep passes and sync local main — outcome not yet confirmed in observations.