Choose iOS slim categories per lease, and re-sync slim-labels.ts with simslim's new mdm category

未关闭
#1,244 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
45/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
ios, typescript

调研方向

Start by reviewing slim-labels.ts and the label changes in MobAI-App/simslim#66, once that PR is merged. Then trace how lease requests apply ios.slim.categories and determine how per-lease category choices should combine with the operator setting. Done means the labels are re-synced and a lease can select slim categories without making ordinary slim leases fail the readback rule or preventing simulator boot.

由索引模型根据 Issue 内容生成。

描述

platform:ios request:new
The problem

A lease can only choose slim or full, and the slim categories are fixed per host in ios.slim.categories. So a test that needs one slimmed capability has to take a full simulator, and on our farm that costs a great deal. Our PassKit tests are the example. On an iPhone 17 Pro / iOS 26.2, a full lease taken only for Wallet costs 5.7 GB, which is 4.5× one of our slim leases. That one dependency decides how many simulators fit on the host.

Separately, MobAI-App/simslim#66 adds a mdm category, and moves com.apple.accessibility.axassetsd and com.apple.ClipServices.clipserviced into other. On a fresh iOS 26.5 simulator that takes a fully slim one from 904 to 847 MiB under simslim measure, with 6 fewer processes. On our iOS 26.2 farm sims, which had been running tests, the same daemons were heavier: the device-management ones alone came to about 149 MB.

Who runs into this

We run a shared Mac Studio farm. The CI e2e and store-screenshot jobs of several React Native/Expo apps lease simulators from it through simlock. Most jobs are happy with slim. A few need one capability, such as Wallet/PassKit, so they lease full, and those leases crowd out the slim ones.

What you would like to happen
  1. Re-sync slim-labels.ts from simslim once MobAI-App/simslim#66 is merged.
  2. Choose slim categories per lease. For example, a lease request could carry except: ["store", "other"], or a lighter full that keeps only the named categories, on top of the operator's ios.slim.categories. For the PassKit case, keeping just store/other (passd, financed) would, we estimate, put that lease at about 1.6 GB instead of 5.7 GB.
Anything else

While preparing the simslim PR, I found two traps worth knowing before anyone extends the label list by hand:

  • The iPhone-side Watch companion labels drift. These are the 17 that CoreSimulator writes as explicit false into disabled.plist: NPKCompanionAgent, appconduitd, pairedsyncd, bulletindistributord, eventkitsyncd and others. On iOS 26.5, CoreSimulator rewrites them to false at every boot, even after they were written true while the device was shut down. Under simlock's readback rule ("a label not as written → full"), adding them would turn every slim lease into full.
  • simslim's forbiddenLabels still wedge iOS 26.5. I persisted the disable for sleepd, dmd, ManagedSettingsAgent, routined, biomesyncd, mobiletimerd and the nano* registry daemons on a throwaway simulator, and it never finished booting. SpringBoard looped on com.apple.sleepd.sleepserver, and appprotectiond looped on com.apple.dmd. The farm memory we saw from stopping them only applies to a live bootout after boot, never to a pre-boot override.
主要语言
TypeScript
星标
535
派生
21
平均合并
9 小时 31 分钟
30 天内合并 PR
434

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

callstackincubator/simlock 的其他 Issue

查看 callstackincubator/simlock 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。