Repository navigation
feat(macos): integrate update recovery and permission continuity - #245
Conversation
|
Current head: e290d0c. The permission-handoff, uninstall-registration, typed-busy and Windows fixture fixes are committed and pushed to this PR; review-thread replies link the relevant commits.
The signing root cause is not established. Three hypothesis groups were checked: trust-inventory status alone does not explain the passing local baseline; the certificate really uses SHA256; and the controlled identity-selector/runtime/requirement matrix still fails on macOS 26.6.2. Local macOS 27.0.1 passes. Further speculative patches are stopped pending a dedicated macOS 26 lower-layer reproduction. No test skips, global trust/search-list changes, or production signing workaround were introduced. Private review/CI report: 40 paths verified remotely, 30 source/archive dual-SHA records. The report's earlier Windows-pending snapshot is superseded by the final successful job above. RC21 and the user's running App were untouched; no merge or release. |
旧六项诊断漏掉binary,失败不能证明完整签名方式不可用。执行真实诊断块的回归已观察目标参数RED,再补齐目标并通过7项本地测试。原始CI签名失败不被改写,生产签名和用户Keychain不变。
|
Correction to the previous signing investigation: the original test command included its synthetic target and did fail, but the six added diagnostic variants accidentally omitted that target. Their failures must not be used to exclude complete signing alternatives. f35f30f fixes the probe argument; an executed VM regression first failed on the missing target and then passed, and the full local remote-key file passed 7 tests. No production signing or CI gate changed. Corrected remote evidence is pending; the original signing root cause remains unknown. |
只在合成宿主测试查询CodeSigning候选:direct/array及SIGN/any使用同一私有Keychain,并读取随机SHA身份偏好状态。SPI仅用于未发布夹具,不改生产路径、信任或search list;失败日志保留原签名错误。本机实际查询四组均匹配同证书,偏好不存在。
诊断不得预热或改变原始签名查询;只在catch内读同一合成Keychain。原失败始终保留,不以诊断副作用制造绿测。
旧响应器只看固定文件名,单个临时名通知会丢请求。旧实现三项确定性RED后,复用主续接的25ms合并及一次ENOENT复读;退休/dispose/error清理timer。原nonce、owner和私有目录校验不变,不加轮询,不解释尚未获证的main watcher CI超时。
全套仍有1500ms超时,确定性过滤修复不能解释全部失败。仅失败时记录合成fixture的回调、错误、关闭和落盘状态;原期限与生产行为不变,后续据实际事件判断。
|
Follow-up: a35ae5b fixes a separate proven responder bug: a temporary-filename-only directory event could be ignored. The old implementation failed the async temp-only, early-publication and disposal cases; affected suites plus rebuilt migration check passed 111 tests. This does not explain every OS watcher timeout: full local 6b61540 still had one real 1500 ms responder timeout, although the latest remote 6b check passed all watcher cases and failed only signing. bdabda0 adds failure-only callback/error/close diagnostics without changing production or the deadline. The signing CI query also finds the expected identity in all four tested query shapes, while codesign still refuses it; the root cause remains unknown. Current evidence and the earlier probe correction are retained in the private correction report linked in the PR body. No CI bypass, merge, or host changes. |
实际本机codesign导入SecItemCopyMatching,不能用旧SPI查询的命中推断CLI命中。仅在原始失败后对比相同隔离身份的policy/sign/bare查询,并报告CI实际查询导入;不改变生产签名或信任。
Latest merge gate —
|
Merged —
|
Merged —
1a5118fc854f111epassedcheck,cargo,windows-cargoand the public-manual build. The macOScheckpassed on its second attempt; the first one-shot VM watcher timeout is retained, not reported as a product fix.Earlier checkpoints below remain historical. The RC21/current-head evidence distinction is intentional.
Summary
Integrate the macOS auto-restore experiment as one aggregate change:
incodex perm, post-update checks, and resumable permission handoffs.Real-app evidence — frozen RC21, not the current PR head
RC21 (
332fbee3) completed one observed official build 20586 → 20770 update: recovery committed, the new host started with the same local signing certificate, and the product post-update chain reported both permissions granted. The earlier RC20 failure remains recorded privately.External Doctor checks timed out and remain unknown. Complete UI/private-window acceptance, actual AX operations, and the live-target busy path were not established by this sample. The source fixes below have not been installed into the user's running App.
Review fixes in this PR
75; transaction/rollback errors still use failure1.Verification — current scope
a35ae5b7in6b61540a; no host deployment.bdabda09: permission-probe file 15 passed. It adds failure-only watcher callback/error/close evidence, not a production change or longer deadline.6b61540a. Latest-head CI is running.6b61540a: shared 715 passed; macOS 448 passed / 9 skipped / 1 real responder-watcher timeout at the existing 1500 ms bound. Targeted passes do not waive this failure; root cause remains unknown.codesign: no identity foundin one Bun and two Rust tests. Corrected complete-target probes also fail. The same CI fixture's direct/array, SIGN/any read-only Security queries each find and match the single certificate; the random-SHA preference is absent. This rules out those tested input differences, not all environment or product compatibility failures. Public historical source is not proof of the current CI codesign implementation.Investigation correction
The original signing command had the correct target and really failed. The six added diagnostic variants initially omitted the target and were not valid full-signing evidence. That probe bug was fixed in
f35f30fd, with an actually failing argument regression before the fix. Later corrected CI still fails. Failure-only native queries run only after the original failure, so they cannot prewarm that operation into a false pass. No tests were skipped and no trust/search-list/branch-protection changes were made.Private correction and evidence supersedes the earlier invalid matrix claim and preserves original failures.
This PR does not authorize merging, a public release, host reinstallation, Runtime publication, or permission changes. The installed RC21 and the user's current App remain untouched.