Skip to content

spec(v18): move PROTOCOL_VERSION 17 → 18 in an ordinary pull request with full CI: regenerate spec-changes.json and the 17 → 18 upgrade-guide section, rewrite the in-repo ^17 handshakes, and give the lockstep test one pre-mode exception (#22085 Q1) #22130

Description

@objectstack-fleet

Ruled: 6056808625 · letter E · 2026-10-08T09:29Z

This card carries #22085's Q1 half: the ruling 6049734955 (Q1 → B). #22085 keeps Q2, the v18 release page (a release-side action), and Q3, filed as the domain:devx sub-issue filed in the same act (both numbers are recorded on #22085).

Filing gate: ③ a direct task from a maintainer ruling. The ruling 6049734955 records the maintainer's 「22082 22085 同意」 (2026-10-08T00:37Z) taking Q1 → B: "the protocol major moves in an ordinary pull request that runs the full CI, not in the version pass … The constant lives in packages/spec, so the work is the domain:spec lane's card, filed by the domain:devx seat in execution."

Reader: the domain:spec seat claims and dispatches it from its queue. Lane and priority come from the ruling and the parent (#22085, priority:p1, target:v18); p1 carries down the chain. Filed by PM seat domain:devx#2 (session_01VF48aw8RPG6wzDnMgp6rtw). ⛔ Not a claim.

Order: this lands after PR #22084 (#22080, pre mode plus the major marker). The lockstep exception below keys on the pre mode that PR opens. Development can start now. Until this lands, release.yml's version-pr refresh stays red at Validate the post-version tree, and that red publishes nothing. ⛔ #21988 is not merged.

What is measured (on origin/main 8fc50b7647)

  • packages/spec/src/kernel/protocol-version.ts:18: export const PROTOCOL_VERSION = '17.0.0';.

  • scripts/sync-protocol-version.mjs derives the constant from @objectstack/spec's major at version time, inside the root version script. In pre mode that would rewrite the constant inside the bot's Version Packages PR, which runs no CI. The script's own note on fix(spec): PROTOCOL_VERSION 13.0.0 → 14.0.0 — re-lockstep with the released major #2769 warns against that shape.

  • PR fix(release): judge the major-boundary template stamps on the version-pr lane, and stop prerelease cuts re-dating the last GA #22095 (8a925b3b47) made release.yml's Validate the post-version tree refuse a version pass that changes protocol-version.ts. Its refusal text names the reason: the handshake would refuse every engines.protocol: '^17' manifest, and no gate on that lane boots them.

  • Files declaring a ^17 protocol handshake: 56, from git grep -l -E "protocol['\"]?\s*:\s*['\"]\^17".

    Path Files
    packages/cli 21
    packages/metadata 6
    content/docs 6
    packages/qa 4
    packages/runtime 3
    packages/metadata-core 2
    packages/lint 2
    examples/app-multi-package 2
    packages/spec 1
    packages/mcp 1
    packages/create-objectstack 1
    examples/app-todo 1

    Some may pin an old protocol on purpose (a refusal test). Each is judged, not swept.

  • The generated documents: packages/spec/spec-changes.json and docs/protocol-upgrade-guide.md, which needs its 17 → 18 section. Their gates are check:spec-changes and check:upgrade-guide.

  • The lockstep test: packages/spec/src/kernel/protocol-version.test.ts.

Done when

Dedupe

REST page loop (since 2026-09-01, state=all, 1,940 issues: 45 open, 1,895 closed) grepped for PROTOCOL_VERSION|protocol-version\.ts|\^18|protocol major|protocol 18|17 → 18 → 18 hits.

None moves the constant.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions