Skip to content

Commit f52aab1

Browse files
authored
Merge pull request #2767 from dipesh-rawat/improve-handbook
Improvements to Enhancements handbook from recent release learnings
2 parents db9df09 + 8d02c62 commit f52aab1

File tree

1 file changed

+91
-4
lines changed
  • release-team/role-handbooks/enhancements

1 file changed

+91
-4
lines changed

release-team/role-handbooks/enhancements/README.md

Lines changed: 91 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ An Enhancements Lead holds the following responsibilities:
1010

1111
- Maintain the active status of Enhancements within [kubernetes/enhancements][k/enhancements]
1212
- Facilitate communication between Enhancement Owners, and SIG leadership, as necessary
13-
- Collate the major themes of the release, including but not limited to:
13+
- Collate the Release Highlights of the release, including but not limited to:
1414
- new enhancements
1515
- long-awaited enhancements
1616
- enhancements moving into GA
@@ -291,7 +291,10 @@ See the sig-architecture Enhancements [KEP Template](https://github.com/kubernet
291291
#### Post Enhancements Freeze
292292
293293
- Any enhancements removed from the milestone will now require an exception. As exception requests come in, discuss each with the Release Lead (and Shadows) to arrive at an approve/reject decision.
294-
- Create an exception file in the Release for exceptions Example [1](https://github.com/kubernetes/sig-release/blob/master/releases/release-1.14/exception.yaml).
294+
- Create an exception file in the Release for exceptions Example [1](https://github.com/kubernetes/sig-release/blob/master/releases/release-1.33/exceptions.yaml).
295+
- Example PRs where the `exceptions.yaml` file was created to track enhancement freeze exception requests:
296+
- [Add exceptions from v1.33 Enhancement Freeze](https://github.com/kubernetes/sig-release/pull/2732)
297+
- [Add exceptions from v1.32 Enhancement Freeze](https://github.com/kubernetes/sig-release/pull/2645)
295298
- Stay on top of issues and continually monitor them twice a week and look at attached PRs. As Code Freeze gets closer, if there are PRs that have not been merged, move the issue to `At risk for code freeze`. If there is no activity, ping issue owners on either the issue or the k/k PR.
296299
- Monitor issues that are `At risk for code freeze` closely, almost daily. Code Freeze means no new code and keeping tabs on the status of the k/k PR is critical to planning. Make decisions if the enhancement should be deferred and work with SIG Leads to determine the best path forward.
297300
@@ -313,6 +316,78 @@ To avoid delays and ensure everything is in place for Code Freeze:
313316
314317
Read https://github.com/kubernetes/sig-release/blob/master/releases/release_phases.md#code-freeze for more information on the Code Freeze.
315318
319+
#### Pre-Freeze Check: Catching untracked feature changes
320+
321+
As part of the Enhancements team’s responsibilities, this step helps ensure that user-facing feature changes are not merged without being properly tracked via a KEP.
322+
323+
#### When to check for Untracked feature work
324+
325+
- Before **Code Freeze**
326+
- Especially useful in active release cycles where many `kind/feature` PRs are being merged.
327+
328+
#### How to identify merged feature PRs for current release
329+
330+
Use the GitHub search below to list PRs:
331+
- Labeled `kind/feature`
332+
- Closed (i.e., merged or declined)
333+
- Targeting the **current release milestone**
334+
335+
[View feature PRs merged in v1.33](https://github.com/kubernetes/kubernetes/pulls?q=is%3Apr+milestone%3Av1.33+is%3Aclosed+sort%3Acreated-asc+label%3Akind%2Ffeature)
336+
337+
```text
338+
https://github.com/kubernetes/kubernetes/pulls?q=is%3Apr+milestone%3Av1.33+is%3Aclosed+sort%3Acreated-asc+label%3Akind%2Ffeature
339+
```
340+
> [!NOTE]
341+
> Be sure to update the milestone (`v1.33`) in the query to the current release (e.g., `v1.34`).
342+
343+
#### Why check for untracked user-facing features
344+
345+
In past releases, we've seen partial implementations get merged without being fully tracked. This can result in:
346+
- User-facing features with no docs or release notes.
347+
- Confusion during testing or upgrade planning.
348+
- Late-stage reversions or rushed exceptions.
349+
350+
By doing this simple check, we give ourselves an early window to document changes, request follow-ups, or even coordinate a rollback if needed.
351+
352+
#### Visual Flow: Handling partially merged KEPs
353+
Use this decision flow to determine next steps when a KEP’s implementation is only partially complete at freeze time:
354+
355+
```mermaid
356+
flowchart TD
357+
direction TB
358+
359+
Start["Start: KEP is targeting this release"]
360+
361+
Intent["What are you working on this cycle?"]
362+
AddFeature["Graduating to a new stage or adding user-facing features"]
363+
RefineQuietly["Refining implementation only (no graduation or user-facing changes)"]
364+
365+
%% Add feature path
366+
EF1["Enhancement Freeze: 1. KEP issue: lead-opted-in label, milestone added, 2. KEP updates: kep.yaml, README.md, 3. PRR review complete"]
367+
CF1["Code and Test Freeze: Were all implementation and tests PRs merged?"]
368+
AllMerged["KEP marked tracked for Code Freeze as usual"]
369+
NotAllMerged{"Some PRs merged, others not"}
370+
UserImpact{"Do merged PRs include user-facing changes?"}
371+
NotifyRelease["Reach out to the release team and have multiple iterations of the same stage."]
372+
NotTracked1["No user-facing impact. KEP will not be tracked for this release (no docs, no release highlights)."]
373+
374+
%% Continue work path
375+
EF2["Enhancement Freeze: No KEP updates needed"]
376+
CF2["Code Freeze: All or some PRs merged, no user-facing changes"]
377+
ChangelogOnly["KEP appears in changelog, but not tracked by release team."]
378+
379+
%% Flow
380+
Start --> Intent
381+
Intent -->|Graduate or add user-facing features| AddFeature --> EF1 --> CF1
382+
383+
CF1 -->|All merged| AllMerged
384+
CF1 -->|Some merged| NotAllMerged --> UserImpact
385+
UserImpact -->|Yes| NotifyRelease
386+
UserImpact -->|No| NotTracked1
387+
388+
Intent -->|Refine only| RefineQuietly --> EF2 --> CF2 --> ChangelogOnly
389+
```
390+
316391
#### Week of Code Freeze
317392

318393
- Delegate enhancements to shadows to reach out to assigned KEPs two weeks before code freeze.
@@ -321,7 +396,7 @@ Read https://github.com/kubernetes/sig-release/blob/master/releases/release_phas
321396
- Update `Enhancement Status` field for this Enhancement in the Enhancement Tracking Board (`Tracked for code freeze` or `At risk for code freeze`)
322397
- If the code PRs are not tracked in the GitHub issue description, search [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) for the KEP number or KEP keywords to find the PRs and add them to the GitHub issue description. Validate that you found the correct code PRs with the KEP author.
323398
- KEPs targeting `stable` for the release will now need to be marked as `implemented` after code PRs are merged and the feature gates are removed.
324-
- Start planning for the next release while assisting the Release Lead with anything relating to analytics or Public Relation planning of the release. Work with the Communications Lead to develop major themes for the official Kubernetes blog post.
399+
- Start planning for the next release while assisting the Release Lead with anything relating to analytics or Public Relation planning of the release. Work with the Communications Lead to develop Release Highlights for the official Kubernetes blog post.
325400

326401
**Note**: out-of-tree enhancements i.e. enhancements with label `tracked/out-of-tree` applied to them don't have their PRs inside [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) repository unlike other enhancements, therefore during enhancements-freeze and code-freeze they might not strictly comply with the tracking criteria.
327402
Examples:
@@ -341,7 +416,7 @@ Read https://github.com/kubernetes/sig-release/blob/master/releases/release_phas
341416
- Remove the milestone from all open `k/k` PRs related to the enhancement.
342417
- Any enhancements removed from the milestone will now require an exception. As exception requests come in, discuss each with the Release Lead (and Shadows) to arrive at an approve/reject decision.
343418
- Add a `/hold` label to `k/k` PRs associated with incoming exceptions to prevent from accidental merge.
344-
- Add incoming exception information to the previous created `exception.yaml` file.
419+
- Add incoming exception information to the previous created `exceptions.yaml` file (e.g., [PR #2753](https://github.com/kubernetes/sig-release/pull/2753), [PR #2593](https://github.com/kubernetes/sig-release/pull/2593)).
345420
- If an **Exception Request** for a previously removed Enhancement is approved by the Release Team (on the Exception Request email), update its **Enhancement Status** to `Tracked for enhancements freeze` on the Enhancement Tracking Board.
346421
347422
### Communication Templates
@@ -413,6 +488,7 @@ Unfortunately, this enhancement did not meet requirements for [enhancements free
413488

414489
If you still wish to progress this enhancement in {current release}, please file an [exception](https://github.com/kubernetes/sig-release/blob/master/releases/EXCEPTIONS.md) request as soon as possible, within three days. If you have any questions, you can reach out in the #release-enhancements channel on Slack and we'll be happy to help. Thanks!
415490

491+
/label tracked/no
416492
/milestone clear
417493
```
418494

@@ -424,6 +500,8 @@ If the Enhancement Issue **does** meet the enhancement freeze criteria for inclu
424500
Hello {enhancement owner} 👋, {current release} Enhancements team here.
425501

426502
With all the requirements fulfilled, this enhancement is now marked as tracked for the upcoming enhancements freeze 🚀
503+
504+
/label tracked/yes
427505
```
428506

429507
Then make sure the status of the enhancement is set to `Tracked for enhancements freeze`.
@@ -448,6 +526,8 @@ For this enhancement, it looks like the following PRs need to be merged before c
448526
If the implementation work for this enhancement is occurring **out-of-tree** (i.e., outside of [`k/k`](https://github.com/kubernetes/kubernetes)), please link the relevant PRs in the issue description for visiblity.
449527
Alternativelty, if you're unable to provide specific PR links, a confirmation that **all out-of-tree implementation work is complete and merged** will help us finalize tracking and maintain accuracy.
450528

529+
The status of this enhancement is marked as `At risk for code freeze`.
530+
451531
If you anticipate missing code freeze, you can file an [exception request](https://github.com/kubernetes/sig-release/blob/master/releases/EXCEPTIONS.md) in advance.
452532

453533
Also, please let me know if there are other PRs in k/k we should be tracking for this KEP.
@@ -482,8 +562,13 @@ Hello {enhancement owner} 👋, {current release} Enhancements team here,
482562

483563
Unfortunately, the implementation (code-related) PRs associated with this enhancement are not in the merge-ready state by code-freeze and hence this enhancement is now removed from the {current release} milestone.
484564

565+
<!-- Use the following paragraph if not all implementation PRs for the KEP were merged before freeze deadline -->
566+
Additionally, if **any of the merged implementation PRs** for this enhancement include **user-facing changes**, please let us know. This will help us determine
567+
whether the changes should be documented or considered for rollback to maintain release integrity.
568+
485569
If you still wish to progress this enhancement in {current release}, please file an [exception](https://github.com/kubernetes/sig-release/blob/master/releases/EXCEPTIONS.md) request as soon as possible, within three days. If you have any questions, you can reach out in the #release-enhancements channel on Slack and we'll be happy to help. Thanks!
486570

571+
/label tracked/no
487572
/milestone clear
488573
```
489574

@@ -500,6 +585,8 @@ With all the implementation (code-related) PRs merged per the issue description:
500585
This enhancement is now marked as `Tracked for code freeze` for the {current release} Code Freeze!
501586

502587
Please note that KEPs targeting `stable` need to have the `status` field marked as `implemented` in the kep.yaml file after code PRs are merged and the feature gates are removed.
588+
589+
/label tracked/yes
503590
```
504591

505592
Then make sure the status of the enhancement is set to `Tracked for code freeze`.

0 commit comments

Comments
 (0)