Individual skill

release-ota-promote

Publish signed Electron UI/daemon bundles to a local OTA feed with atomic manifest switch and digest readback, while dry-running the K8s drain_respawn rollout. Prod is refused before writes; feed publication is not client apply.

sdk/apc/skills/release-ota-promote/SKILL.md

Read pinned source

Source commit f83b859a173802a73d978197e92328ab2bf57a6e

What was checked

Matches the observed repository HEAD
Yes
Scanner rules are current
Yes
Repository scan complete
No
Skill scan complete
No
Observed behavior
Network or broad shell
Last checked
Nov 9, 2026

These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.

Install this skill

Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.

An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.

Repository context

Repository stars (not skill ratings)
1,364
Repository last updated
Oct 22, 2026
License
MIT

Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.

Files and excerpt

File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.

Browse files
Read excerpt

# release-ota-promote

把一份 runtime OTA 沿**双通道**下发(`apc/01` §2 ota-promote,收口步 7/8/11)。这是**线 3 admin fleet 下发**,交付模式治 **doc01 #8**("promote 用了线 1 kill1 而非线 3 drain_respawn"):

- **K8s daemon 通道**:交付 **drain_respawn**(排空在飞 task → 优雅 `exit(0)` → supervisor respawn → boot-OTA 换版,用户**无感/无中断**)。正规落点 = admin fleet rollout endpoint `POST /api/admin/runtime-releases/rollout`(`src/im/api/admin.ts`)→ 给每个目标 daemon 下发 `runtime.update.apply` 帧 → daemon **arm drain_respawn**。本 verb **不再 spawn 线 1 `kill 1` 的 `runtime-ota.ts`**(那会打断在飞 task),而是**构造这条 drain_respawn rollout 请求**。本机替身**只 dry-run 出请求、不真 POST**(真 POST 需 approvalId + release row + 在线 daemon = M5)。
- **桌面 feed 通道**:本机替身**未接线**——诚实标 ⬜(铁律 4)。缺①桌面本地 feed 基座(`apc/05` §3,P0-4 未落)②本机禁写真 Nacos manifest(= M5)。

**什么时候用**:一个新 runtime 版本发布后,要让 fleet 里的 daemon 采用它。

## 承重纪律(发版 skill 的命根子,先记死)

- **prod OTA 必拒**(不变量 2)。`--env prod` **先于任何 OTA 动作硬拒**,不做任何下发。**别试 prod**:真 prod promote = M5。
- **交付模式 = `drain_respawn`,绝非 `kill1`**。线 3 fleet 下发必须排空在飞后再 respawn(`kill 1` 会打断用户在飞 task,那是线 1,仅 dev/紧急)。`k8s.directive` 必须是 `drain_respawn`。
- **不宣称 `drain_respawn` 已执行**。本机替身**只 dry-run 出 rollout 请求(`k8s.posted:false`),不真 POST**(= M5:approvalId + release row + 在线 daemon)。照实报"已构造 drain_respawn 请求,未真下发",**绝不说"已 drain_respawn 下发"**。
Back to top