docs(skills): align release modes with implementation

This commit is contained in:
DIYgod 2026-04-13 15:33:49 +08:00
parent bb8bf67a29
commit 6d7de75230
2 changed files with 8 additions and 43 deletions

View File

@ -20,7 +20,7 @@ Important notes:
- `mainHash` is still regenerated automatically, but it is **not** the OTA compatibility switch anymore. Do not use it as the release decision point.
- `runtimeVersion` in `apps/desktop/package.json` is the desktop OTA compatibility key. `apps/desktop/scripts/apply-release-config.impl.ts` writes it during bump.
- This skill covers the normal `build` and `ota` desktop release flow.
- `binary-policy` exists in `apps/desktop/release-plan.json`, and the current `tag.yml` automation dispatches a standalone desktop metadata-only publish path.
- Do not recommend or write any other mode. The current implementation only supports `build` and `ota`.
## Pre-flight checks
@ -100,14 +100,9 @@ Use this decision table:
For `ota`, you must choose:
- `runtimeVersion`: the newest installed desktop binary version that this renderer update is compatible with
- `channel`: usually `stable`
- `distributions`: any desktop distributions that should receive policy metadata alongside the OTA release
If you are unsure whether a change is binary-compatible, prefer `build`.
- `binary-policy`
Metadata-only policy release.
Use this when the release should update desktop binary policy metadata without rebuilding installers.
Present the analysis to the user with:
- changed runtime-affecting files

View File

@ -13,7 +13,8 @@ The skill must recommend one of these modes, explain why, ask the user to confir
- `store`: normal App Store / Google Play release
- `ota`: OTA-only publish, no store builds
- `store-policy`: metadata-only publish for `/policy`, no store builds
Do not recommend or write any other mode. The current implementation only supports `store` and `ota`.
The CI release flow is file-driven:
@ -80,16 +81,9 @@ The CI release flow is file-driven:
- no native or runtime-affecting paths changed
- the goal is to ship without store review
### Recommend `store-policy` only when:
- the user explicitly wants `/policy` to prompt or block older binaries
- no new store binary should be built
Do not recommend `store-policy` by default for ordinary releases.
### Determine the target runtime
If recommending `ota` or `store-policy`, derive the target store binary version from recent `origin/mobile-main` releases and propose it as the `runtimeVersion`.
If recommending `ota`, derive the target store binary version from recent `origin/mobile-main` releases and propose it as the `runtimeVersion`.
If you cannot determine the runtime confidently, stop and ask the user to confirm it.
@ -99,9 +93,8 @@ Present:
- the recommended mode
- rationale based on changed files and commits
- for `ota` or `store-policy`, the proposed `runtimeVersion`
- for `ota` or `store-policy`, the proposed `channel`
- for `store-policy`, whether `/policy` should block (`storeRequired=true`) or just prompt (`storeRequired=false`)
- for `ota`, the proposed `runtimeVersion`
- for `ota`, the proposed `channel`
Wait for explicit user confirmation before continuing.
@ -117,9 +110,7 @@ Examples:
{
"mode": "store",
"runtimeVersion": null,
"channel": null,
"storeRequired": false,
"message": null
"channel": null
}
```
@ -129,21 +120,7 @@ Examples:
{
"mode": "ota",
"runtimeVersion": "0.4.1",
"channel": "production",
"storeRequired": false,
"message": null
}
```
### Store policy release
```json
{
"mode": "store-policy",
"runtimeVersion": "0.4.3",
"channel": "production",
"storeRequired": true,
"message": "Install 0.4.3 from the store."
"channel": "production"
}
```
@ -196,7 +173,6 @@ Examples:
- new version
- final release mode
- runtimeVersion and channel if present
- storeRequired and message for `store-policy`
- PR URL
3. Summarize expected post-merge automation:
@ -214,12 +190,6 @@ Examples:
- trigger OTA publish only
- no store builds
### `mode=store-policy`
- create mobile tag
- trigger metadata-only OTA publish
- no store builds
## References
- Bump config: `apps/mobile/bump.config.ts`