When creating an Envoy pull request (PR) the text box will automatically be filled
in with the basic fields from the [pull request template](PULL_REQUEST_TEMPLATE.md). The following
is a more detailed explanation of what should go in each field.
### Title
The title of the PR should brief (one line) noting the subsystem or the aspect this PR applies to and
explaining the overall change. Both the component and the explanation must be lower case. For example:
* ci: update build image to 44d539cb
* docs: fix indent, buffer: add copyOut() method
* router:add x-envoy-overloaded header
* tls: add support for specifying TLS session ticket keys
### Commit Message
The commit message field should include an explanation of what this PR
does. This will be used as the final commit message that maintainers will use to
populate the commit message when merging. If this PR causes a change in behavior
it should document the behavior before and after. If fixing a bug, please
describe what the original issue is and how the change resolves it. If it is
configuration controlled, it should note how the feature is enabled etc...
### Additional Description
The additional description field should include information of what this PR does
that may be out of scope for a commit message. This could include additional
information or context useful to reviewers.
### Risk
Risk Level is one of: Low | Medium | High
Low: Small bug fix or small optional feature.
Medium: New features that are not enabled(for example: new filter). Small-medium
features added to existing components(for example: modification to an existing
filter).
High: Complicated changes such as flow control, rewrites of critical
components, etc.
Note: The above is only a rough guide for choosing a level,
please ask if you have any concerns about the risk of the PR.
### Testing
The testing section should include an explanation of what testing was done, for example: unit test,
integration, manual testing, etc.
Note: It isn’t expected to do all forms of testing, please use your best judgement or ask for
guidance if you are unsure. A good rule of thumb is the riskier the change, the
more comprehensive the testing should be.
### Documentation
If there are documentation changes, please include a brief description of what they are. Docs
changes may be in [docs/root](docs/root) and/or inline with the API protos. Please write in
N/A if there were no documentation changes.
Any PRs with structural changes to the dataplane should also update the [Life of a
Request](https://www.envoyproxy.io/docs/envoy/latest/intro/life_of_a_request) documentation as appropriate.
### Release notes
If this change is user impacting OR extension developer impacting (filter API, etc.) you **must**
add a release note to the [version history](docs/root/version_history/current.rst) for the
current version. Please include any relevant links. Each release note should be prefixed with the
relevant subsystem in **alphabetical order** (see existing examples as a guide) and include links
to relevant parts of the documentation. Thank you! Please write in N/A if there are no release notes.
### Platform Specific Features
If this change involves any platform specific features (e.g. utilizing OS-specific socket options)
or only implements new features for a limited set of platforms (e.g. Linux amd64 only), please
include an explanation that addresses the reasoning behind this. Please also open a new tracking
issue for each platform this change is not implemented on (and link them in the PR) to enable
maintainers and contributors to triage. Reviewers will look for the change to avoid
`#ifdef ` and rather prefer feature guards to not enable the change on a given platform
using the build system.
### Runtime guard
If this PR has a user-visible behavioral change, or otherwise falls under the
guidelines for runtime guarding in the [contributing doc](CONTRIBUTING.md)
it should have a runtime guard, which should be documented both in the release
notes and here in the PR description.
For new feature additions guarded by configs, no-op refactors, docs changes etc.
this field can be disregarded and/or removed.
### Issues
If this PR fixes an outstanding issue, please add a line of the form:
Fixes #Issue
This will result in the linked issue being automatically closed when the PR is
merged. If you want to associate an issue with a PR without closing the issue,
you may instead just tag the PR with the issue:
\#Issue
### Deprecated
If this PR deprecates existing Envoy APIs or code, it should include an update to the deprecated
section of the [version history](docs/root/version_history/current.rst) and a one line note in the
PR description.
If you mark existing APIs or code as deprecated, when the next release is cut, the
deprecation script will create and assign an issue to you for
cleaning up the deprecated code path.