jason810496 opened a new pull request, #75391:
URL: https://github.com/apache/airflow/pull/75391

   The TypeScript, Java and Go SDKs publish to three different registries, and 
nothing said when a release happens, which branch it is cut from, or what makes 
it an ASF release rather than a convenience binary. The Go SDK had three 
published tags and no publishing instructions at all.
   
   `dev/README_RELEASE_LANG_SDKS.md` is the shared guide, next to the other 
`README_RELEASE_*` docs. Each SDK keeps its own publishing steps, since the 
toolchains have nothing in common.
   
   **Release cycle.** Each SDK decides when to release. What ties a release to 
core is the branch it is cut from, not its timing.
   
   **Release branch.** Land on `main`, cherry-pick to the active `vX-Y-test`, 
tag from there. This matters more than for a Python distribution: an SDK built 
from `main` can declare a supervisor schema a released core rejects, and the 
runtime is turned away before the first task starts. A patch release is the 
same thing again, so language SDKs do not get release branches of their own.
   
   **Schema and spec drift.** Every SDK vendors the supervisor and Dag 
serialization schemas and generates code from them. Prek keeps those in step on 
`main`, firing on the files a commit touches. A release branch is assembled 
from partial cherry-picks, so one side can move without the other and no hook 
fails. The guide adds a pre-tag step that runs them over the whole tree:
   
   ```shell
   prek run --all-files \
     sync-ts-sdk-schemas sync-java-sdk-supervisor-schema 
sync-java-sdk-dag-schema \
     sync-go-sdk-schemas check-go-sdk-generated-drift \
     ts-sdk:check-ts-sdk-supervisor-schema ts-sdk:check-ts-sdk-dag-schema \
     check-ts-sdk-serialization-conformance-shared \
     check-go-sdk-serialization-conformance 
check-java-sdk-serialization-conformance
   ```
   
   **What a release requires.** A source package in `dist/dev`, a `[VOTE]`, and 
promotion to `dist/release` before any convenience binary is published, from 
the first GA of each SDK onwards. The Java SDK already does this and is the 
worked example.
   
   `go-sdk/DEVELOPMENT.md` gains the publishing section it never had: the 
`go-sdk/v<version>` tag prefix the module path requires, prerelease semantics, 
proxy immutability and `retract`, and verification before and after tagging. 
`ts-sdk/DEVELOPMENT.md` and `java-sdk/README.md` gain pointers to the shared 
guide.
   
   Java's publishing section moves to `java-sdk/DEVELOPMENT.md` in a follow-up, 
once the Java SDK doc rewrite lands.
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   - [X] Yes — Claude Code (Opus 5)
   
   Generated-by: Claude Code (Opus 5) following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to