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

オープン
#1,244 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
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分
マージ済み PR(30日)
434

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

callstackincubator/simlock のほかの issue

callstackincubator/simlock の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。