---
# Usage:
#
# reno -qd .releasenotes list
# reno -qd .releasenotes new slug-title --edit
# reno -qd .releasenotes report --no-show-source

# Change prelude_section_name to 'summary' from default value prelude
prelude_section_name: summary
show_source: False
sections:
  - [features, New features]
  - [upgrades, Upgrade notes]
  - [deprecations, Deprecation notes]
  - [fixes, Bug fixes]
  - [others, Other notes]
template: |
  ---
  # Author the following sections or remove the section if it is not related.
  # Use one release note per a feature.
  #
  # If you miss a section from the list below, please first submit a review
  # adding it to .releasenotes/config.yaml.
  #
  # Format content with reStructuredText (RST).
  # **Formatting examples:**
  # - |
  #   This is a brief description of the feature. It may include a
  #   number of components:
  #
  #   * List item 1
  #   * List item 2.
  #     This code block below will appear as part of the list item 2:
  #
  #     .. code-block:: yaml
  #
  #        classes:
  #        - system.class.to.load
  #
  #   The code block below will appear on the same level as the feature
  #   description:
  #
  #   .. code-block:: text
  #
  #      provide model/formula pillar snippets


  summary: >
    This section is not mandatory. Use it to highlight the change.

  features:
    - Use the list to record summary of **NEW** features
    - Provide detailed description of the feature indicating the use cases
      when users benefit from using it
    - Explain how the feature integrates into the overall reference
      architecture of a deployment.
    - Provide steps to deploy the feature (if the procedure is complicated
      indicate during what stage of the deployment workflow it should be
      deployed).
    - Indicate limitations or incompatibility with other versions, if applicable.
    - Provide a brief overview of how to use the feature after installation
      (Day2 operations).
    - Provide troubleshooting information, if any.
    - Provide disaster recovery information (in case of hardware or software
      failure.)

  upgrades:
    - Use the list to record summary of an **improvement** to an existing
      functionality/feature
    - Document how to use a feature.
    - Document the related upgrade instructions.
    - Indicate limitations, if applicable.

  deprecations:
    - Use the list to record deprecated features.
    - Explain the reason of deprecation.
    - Point to the functionality that can be used instead.

  fixes:
    - Use the list to record summary of a bug fix for blocker, critical,
      and/or customer-found issues.
    - Provide a brief summary of what has been fixed.

  others:
    - Author any additional notes. Use this section if note is not related to
      any of the common sections above.

