﻿---
title: "macOS Release Smoke"
description: "验证签名、公证、安装、核心功能和 GitHub Release updater 链路。"
image: "https://kxen.ai/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://kxen.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# macOS Release Smoke

每个公开版本在 GitHub Release 发布前必须完成以下检查。自动步骤只证明签名和公证，真实功能链路仍需在已签名 App 中验证。

## 自动检查

在 release runner 或本地已签名产物目录执行:

```bash
bash scripts/verify-macos-release.sh
```

必须全部为 `PASS`:

- `Kxen.app` 的 `codesign --verify --deep --strict`。
- `Kxen.app` 的 Gatekeeper `spctl --assess`。
- `Kxen.app` 的 notarization ticket `xcrun stapler validate`。
- DMG 的 code signature 和 Gatekeeper。Tauri 先公证并 staple App，再封装和签名 DMG；DMG 容器本身没有单独的 ticket。

## 已签名 App E2E

1. 从 GitHub Release 下载 DMG，不使用本地 build 目录的 App。
2. 挂载 DMG，把 Kxen 拖入 `/Applications`，首次启动不应出现「无法验证开发者」。
3. Settings 的首次运行检查显示 Workspace、Provider 和 Routing 均为 `PASS`。
4. 新建 Session，选择一个 Provider，发送消息并确认模型标签与实际 Provider 一致。
5. 选择 Workspace 内文件执行 read/edit，选择 Workspace 外普通文件后可读取；选择 `.p8` 或 Kxen 数据目录必须被拒绝。
6. 执行 Shell 命令，必须先出现包含完整 command 和 cwd 的宿主机 Approval；拒绝后不得执行。
7. 创建 Goal、Schedule、Workflow 和 Team，并确认各入口可发现、状态可回放。
8. 分别执行「直接删除」和「删除并沉淀个人知识」；后者不得写项目 `.agents/`。
9. Browser automation、Remote MCP、自动知识沉淀在全新配置中必须为关闭。
10. 用上一公开版本检查更新，必须读取 GitHub Release 的 `latest.json`，签名验证通过后完成安装和重启。

任何一项未验证均记录为 `UNKNOWN`，不得写成 `PASS`。

Source: https://kxen.ai/reference/release-smoke/index.mdx
