Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions AGENTS.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -323,15 +323,16 @@ localStorage / auth gotchas.
readable by every seat — which is why it lives here, not only in a lane-specific skill file. **Release-adjacent
work stays open to every seat.** The release board, `.objectui-sha` pin bumps, version reconciliation, writing
changesets, compiling release notes when asked, and *verifying* release state (`npm view`, `git ls-remote --tags`)
are ordinary tasks. What is reserved is the **release act itself**: ⛔ running `changeset publish` /
`pnpm run release`, ⛔ pushing a version tag, ⛔ cutting a GitHub Release, ⛔ pushing a runtime image, ⛔
are ordinary tasks. What is reserved is the **release act itself**: ⛔ running `changeset publish` / `pnpm run
release`, ⛔ pushing a version tag, ⛔ cutting a GitHub Release, ⛔ pushing a runtime image, ⛔
`workflow_dispatch`-ing `release.yml` or any other publish-capable workflow, ⛔ **approving a pending `release`
environment deployment** (ADR-0125 — since 2026-08-20 that click IS the publish authorisation, and a deployment
waiting for hours is the system working, not a state you clear), and ⛔ merging — or queueing, or arming
auto-merge on — the **Version Packages** PR (`chore: version packages`). That PR is bot-authored and standing-open
by design: it is regenerated on every push to `main`, so "green, current, and nobody has objected" is its permanent
resting state, not a signal that it is due. When you find a publish nobody ordered — a tag or an npm version that
simply appeared — ⛔ do not "repair" it with a counter-publish: file it as an incident for the maintainer.
by design: it is regenerated six-hourly by `release.yml`'s `version-pr` job — never on a push to `main`; push
drives the publish lane — so "green, current, and nobody has objected" is its permanent resting state, not a
signal that it is due. When you find a publish nobody ordered — a tag or an npm version that simply appeared —
⛔ do not "repair" it with a counter-publish: file it as an incident for the maintainer.

**The precedent is that the mechanical channel fires with nobody deciding to use it.** The release workflow's
`on: push` lane once shipped a full release candidate end to end — 69 packages to npm, tags, GitHub Releases,
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
# ADR-0125: The human act that authorises a release is the environment approval, not a typed version string

**Status**: Proposed (2026-08-20) — awaiting the maintainer's hand-merge, which is itself the acceptance act for a governed surface (Prime Directive #14). Implementation ships in the same PR: `.github/workflows/release.yml`.
**Status**: Accepted (2026-08-20) — accepted by the merge that landed it on `main` ([#10150](https://github.com/objectstack-ai/objectstack/pull/10150), commit `81d1fa11d`), which is itself the acceptance act for a governed surface (Prime Directive #14). Implementation shipped in the same PR: `.github/workflows/release.yml`.
**Deciders**: ObjectStack Protocol Architects (maintainer ruling, 2026-08-20, on the back of the [#10146](https://github.com/objectstack-ai/objectstack/issues/10146) release failure)
**Builds on**: the 2026-08-07 maintainer ruling recorded in **AGENTS.md Prime Directive #15** (「版本发布必须是人工的」) and its implementation in [#6170](https://github.com/objectstack-ai/objectstack/issues/6170) (the two-lane split of `release.yml`)
**Supersedes**: nothing. It **re-implements** Prime Directive #15's requirement; the requirement itself is untouched and is quoted again below so no later reader has to reconstruct it.
Expand Down
10 changes: 9 additions & 1 deletion scripts/pm/check-skill-line-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -281,7 +281,15 @@ export const CEILINGS = new Map([
// 2026-08-20, verbatim and untranslated: 「A — 抬上限到 961 (Recommended)」
// (issue #10126, comment 5353111732). Headroom is 0 again by construction, and
// the next author needing a line is back to compressing.
['AGENTS.md', 1149],
//
// 1149 → 1150 (#11819): Prime Directive #15's warrant sentence described the
// Version Packages PR as regenerated "on every push to main" — false since the
// #11233 trigger split. The correct sentence (six-hourly schedule; push drives
// the publish lane) is longer, and the whole paragraph measures zero lossless
// rewrap headroom, so the correction costs one line. Maintainer ruling
// 2026-08-25, verbatim and untranslated, accepting the measured +1/D1 option:
// 「我看到了,你分析过了,接受你的建议」. Headroom is 0 again by construction.
['AGENTS.md', 1150],
// #9965: root CLAUDE.md is the other repo-root instruction file — same read
// path (every seat session), same governance (Prime Directive #14). It is
// structurally growth-prone in the way the ratchet is built for: it exists to
Expand Down
Loading