# Release Candidate

Create and promote release candidates

* [`sfp releasecandidate abort`](#sfp-releasecandidate-abort)
* [`sfp releasecandidate fetch`](#sfp-releasecandidate-fetch)
* [`sfp releasecandidate finalize`](#sfp-releasecandidate-finalize)
* [`sfp releasecandidate generate`](#sfp-releasecandidate-generate)
* [`sfp releasecandidate list`](#sfp-releasecandidate-list)
* [`sfp releasecandidate status`](#sfp-releasecandidate-status)
* [`sfp releasecandidate unbundle`](#sfp-releasecandidate-unbundle)
* [`sfp releasecandidate update`](#sfp-releasecandidate-update)

## `sfp releasecandidate abort`

Abort a release candidate, marking it as no longer deployable. Once aborted, the status cannot be changed. Note: Finalized release candidates cannot be aborted.

```
USAGE
  $ sfp releasecandidate abort -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
    <value>] [-r <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

FLAGS
  -e, --email=<value>              Email address for authenticated user. Ignored if --application-token is provided. Can
                                   be set via SFP_SERVER_USER env var.
  -n, --releasecandidate=<value>   (required) Release candidate in format 'domain:releaseName' (e.g.,
                                   'core:Sprint_27.01-03-08')
  -r, --reason=<value>             Optional reason for aborting the release candidate
  -t, --application-token=<value>  Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
                                   (CLI flags take precedence over env vars).
      --loglevel=<option>          [default: info] logging level for this command invocation
                                   <options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
      --repository=<value>         The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
                                   for Azure DevOps
      --sfp-server-url=<value>     URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
                                   config:set server-url

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Abort a release candidate, marking it as no longer deployable. Once aborted, the status cannot be changed. Note:
  Finalized release candidates cannot be aborted.

EXAMPLES
  $ sfp releasecandidate abort -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core

  $ sfp releasecandidate abort -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --reason "Critical bug found"
```

*See code:* [*src/commands/releasecandidate/abort.ts*](https://source.flxbl.io/flxbl/sfp-pro)

## `sfp releasecandidate fetch`

Fetch a release candidate from the server and write the release definition to a file

```
USAGE
  $ sfp releasecandidate fetch -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
    <value>] [-o <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

FLAGS
  -e, --email=<value>              Email address for authenticated user. Ignored if --application-token is provided. Can
                                   be set via SFP_SERVER_USER env var.
  -n, --releasecandidate=<value>   (required) Release candidate in format 'domain:releaseName' (e.g., 'sales:MyRelease')
  -o, --output=<value>             Path to write the release definition file. If not specified, writes to a temp file
  -t, --application-token=<value>  Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
                                   (CLI flags take precedence over env vars).
      --loglevel=<option>          [default: info] logging level for this command invocation
                                   <options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
      --repository=<value>         The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
                                   for Azure DevOps
      --sfp-server-url=<value>     URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
                                   config:set server-url

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Fetch a release candidate from the server and write the release definition to a file

EXAMPLES
  $ sfp releasecandidate fetch -n sales:MyRelease --repository myorg/myrepo

  $ sfp releasecandidate fetch -n sales:MyRelease --repository myorg/myrepo -o ./release.yml
```

*See code:* [*src/commands/releasecandidate/fetch.ts*](https://source.flxbl.io/flxbl/sfp-pro)

## `sfp releasecandidate finalize`

Finalize a release candidate, marking it as fully deployed. Also finalizes any intermediate candidates.

```
USAGE
  $ sfp releasecandidate finalize -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
    <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

FLAGS
  -e, --email=<value>              Email address for authenticated user. Ignored if --application-token is provided. Can
                                   be set via SFP_SERVER_USER env var.
  -n, --releasecandidate=<value>   (required) Release candidate in format 'domain:releaseName' (e.g.,
                                   'core:Sprint_27.01-03-08')
  -t, --application-token=<value>  Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
                                   (CLI flags take precedence over env vars).
      --loglevel=<option>          [default: info] logging level for this command invocation
                                   <options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
      --repository=<value>         The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
                                   for Azure DevOps
      --sfp-server-url=<value>     URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
                                   config:set server-url

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Finalize a release candidate, marking it as fully deployed. Also finalizes any intermediate candidates.

EXAMPLES
  $ sfp releasecandidate finalize -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core

  $ sfp releasecandidate finalize --releasecandidate core:Sprint_27.01-03-08 --repository flxbl-io/sf-core
```

*See code:* [*src/commands/releasecandidate/finalize.ts*](https://source.flxbl.io/flxbl/sfp-pro)

## `sfp releasecandidate generate`

Generate a release candidate from the current project and publish to server

```
USAGE
  $ sfp releasecandidate generate -c <value> -f <value> -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>]
    [--sfp-server-url <value>] [-b <value>] [-m <value>] [-s pending|in_progress|finalized] [--scope <value>]
    [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

FLAGS
  -b, --branch=<value>             The branch name for the release candidate
  -c, --gitref=<value>             (required) Git reference (commit SHA, tag, or branch) to generate release candidate
                                   from
  -e, --email=<value>              Email address for authenticated user. Ignored if --application-token is provided. Can
                                   be set via SFP_SERVER_USER env var.
  -f, --configfile=<value>         (required) Path to the release config file which determines how the release
                                   definition should be generated
  -m, --metadata=<value>           Additional metadata in json format to include in the release candidate
  -n, --releasename=<value>        (required) Set a release name for the release candidate
  -s, --status=<option>            [default: pending] Initial status for the release candidate (default: pending)
                                   <options: pending|in_progress|finalized>
  -t, --application-token=<value>  Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
                                   (CLI flags take precedence over env vars).
      --loglevel=<option>          [default: info] logging level for this command invocation
                                   <options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
      --repository=<value>         The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
                                   for Azure DevOps
      --scope=<value>              NPM scope for artifacts (e.g., @myorg). Required when using --npm flag
      --sfp-server-url=<value>     URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
                                   config:set server-url

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Generate a release candidate from the current project and publish to server

EXAMPLES
  $ sfp releasecandidate generate -n MyRelease -c HEAD -f config/release.yml --repository myorg/myrepo

  $ sfp releasecandidate generate -n MyRelease -c HEAD -b main -f config/release.yml --repository myorg/myrepo

  $ sfp releasecandidate generate -n MyRelease -c abc123 -f config/release.yml --status pending --repository myorg/myrepo
```

*See code:* [*src/commands/releasecandidate/generate.ts*](https://source.flxbl.io/flxbl/sfp-pro)

## `sfp releasecandidate list`

List release candidates from the server with optional filters

```
USAGE
  $ sfp releasecandidate list -r <value> [--json] [-e <value>] [-t <value>] [--sfp-server-url <value>] [-d <value>] [-b
    <value>] [-s pending|in_progress|finalized|aborted] [--limit <value>] [--offset <value>] [--loglevel
    trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

FLAGS
  -b, --branch=<value>             Filter by branch
  -d, --domain=<value>             Filter by domain (release config name)
  -e, --email=<value>              Email address for authenticated user. Ignored if --application-token is provided. Can
                                   be set via SFP_SERVER_USER env var.
  -r, --repository=<value>         (required) Filter by repository identifier (e.g., flxbl-io/sf-core)
  -s, --status=<option>            Filter by status (pending, in_progress, finalized)
                                   <options: pending|in_progress|finalized|aborted>
  -t, --application-token=<value>  Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
                                   (CLI flags take precedence over env vars).
      --limit=<value>              [default: 50] Maximum number of results to return (default: 50)
      --loglevel=<option>          [default: info] logging level for this command invocation
                                   <options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
      --offset=<value>             Offset for pagination
      --sfp-server-url=<value>     URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
                                   config:set server-url

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  List release candidates from the server with optional filters

EXAMPLES
  $ sfp releasecandidate list --repository flxbl-io/sf-core

  $ sfp releasecandidate list --repository flxbl-io/sf-core --domain core --status pending

  $ sfp releasecandidate list --repository flxbl-io/sf-core --status in_progress --limit 10
```

*See code:* [*src/commands/releasecandidate/list.ts*](https://source.flxbl.io/flxbl/sfp-pro)

## `sfp releasecandidate status`

Get or update the status of a release candidate

```
USAGE
  $ sfp releasecandidate status -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
    <value>] [-s <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

FLAGS
  -e, --email=<value>              Email address for authenticated user. Ignored if --application-token is provided. Can
                                   be set via SFP_SERVER_USER env var.
  -n, --releasecandidate=<value>   (required) Release candidate in format 'domain:releaseName' (e.g.,
                                   'core:Sprint_27.01-03-08')
  -s, --set=<value>                Set the status to a new value. Reserved statuses: pending, in_progress, finalized.
                                   Custom statuses (e.g., testing, staging) are also allowed. Note: finalized and
                                   aborted statuses are locked and cannot be changed. Use 'sfp releasecandidate abort'
                                   to abort a release candidate.
  -t, --application-token=<value>  Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
                                   (CLI flags take precedence over env vars).
      --loglevel=<option>          [default: info] logging level for this command invocation
                                   <options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
      --repository=<value>         The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
                                   for Azure DevOps
      --sfp-server-url=<value>     URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
                                   config:set server-url

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Get or update the status of a release candidate

EXAMPLES
  $ sfp releasecandidate status -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core

  $ sfp releasecandidate status -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --set in_progress

  $ sfp releasecandidate status -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --set finalized

  $ sfp releasecandidate status -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --set testing
```

*See code:* [*src/commands/releasecandidate/status.ts*](https://source.flxbl.io/flxbl/sfp-pro)

## `sfp releasecandidate unbundle`

Unbundle commits from a release branch by reconstructing it from the previous release candidate's baseline. Resets the release branch to the previous finalized RC's state, then re-applies only the commits that should remain — identical to the repo:patch construction approach.

```
USAGE
  $ sfp releasecandidate unbundle -n <value> --commits <value> [--json] [--repository <value>] [-e <value>] [-t <value>]
    [--sfp-server-url <value>] [--release-branch <value>] [--baseline-release-candidate <value>] [--source-branch
    <value>] [--domain <value>] [--conflict-strategy ours|theirs] [--label <value>] [--loglevel
    trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

FLAGS
  -e, --email=<value>                       Email address for authenticated user. Ignored if --application-token is
                                            provided. Can be set via SFP_SERVER_USER env var.
  -n, --releasecandidate=<value>            (required) Release candidate in format 'domain:releaseName' (e.g.,
                                            'core:Sprint_27')
  -t, --application-token=<value>           Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN
                                            env var (CLI flags take precedence over env vars).
      --baseline-release-candidate=<value>  Previous release candidate to use as baseline (e.g., 'core:Sprint_26'). The
                                            release branch HEAD of this RC becomes the reconstruction baseline. Requires
                                            --sfp-server-url.
      --commits=<value>                     (required) Comma-separated list of commit SHAs (as they appear on the
                                            release branch) to remove
      --conflict-strategy=<option>          [default: ours] Conflict resolution strategy: 'ours' keeps release branch
                                            state (default), 'theirs' keeps incoming changes
                                            <options: ours|theirs>
      --domain=<value>                      Domain name (e.g., 'billing'). Filters commits to only those touching
                                            packages in this domain. Also used to auto-detect the baseline via the
                                            previous finalized RC for the domain.
      --label=<value>                       Optional label for the bundle being removed (e.g., 'PR #423: Revenue
                                            Category')
      --loglevel=<option>                   [default: info] logging level for this command invocation
                                            <options:
                                            trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
      --release-branch=<value>              Name of the release branch to reconstruct. Defaults to
                                            'release/{releaseName}'
      --repository=<value>                  The repository identifier. E.g `owner/repo` for GitHub/GitLab or
                                            `org/project/repo` for Azure DevOps
      --sfp-server-url=<value>              URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
                                            config:set server-url
      --source-branch=<value>               [default: main] The source branch the RC was built from (default: main)

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Unbundle commits from a release branch by reconstructing it from the previous release candidate's baseline. Resets the
  release branch to the previous finalized RC's state, then re-applies only the commits that should remain — identical
  to the repo:patch construction approach.

EXAMPLES
  $ sfp releasecandidate unbundle -n core:Sprint_27 --commits abc123 --sfp-server-url http://sfp --repository owner/repo

  $ sfp releasecandidate unbundle -n core:Sprint_27 --commits abc123 --baseline-release-candidate core:Sprint_26 --sfp-server-url http://sfp --repository owner/repo

  $ sfp releasecandidate unbundle -n billing:Sprint_27 --commits abc123 --domain billing --sfp-server-url http://sfp --repository owner/repo
```

*See code:* [*src/commands/releasecandidate/unbundle.ts*](https://source.flxbl.io/flxbl/sfp-pro)

## `sfp releasecandidate update`

Update packages in a release candidate by excluding packages or overriding their versions. Note: Cannot update release candidates with locked statuses (finalized, aborted).

```
USAGE
  $ sfp releasecandidate update -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
    <value>] [-e <value>] [-o <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

FLAGS
  -e, --email=<value>              Email address for authenticated user. Ignored if --application-token is provided. Can
                                   be set via SFP_SERVER_USER env var.
  -e, --exclude=<value>            Comma-separated list of package names to exclude from the release candidate (e.g.,
                                   'pkg-a,pkg-b')
  -n, --releasecandidate=<value>   (required) Release candidate in format 'domain:releaseName' (e.g.,
                                   'core:Sprint_27.01-03-08')
  -o, --override=<value>           Comma-separated list of package version overrides in format 'package=version' (e.g.,
                                   'pkg-a=1.2.3,pkg-b=2.0.0')
  -t, --application-token=<value>  Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
                                   (CLI flags take precedence over env vars).
      --loglevel=<option>          [default: info] logging level for this command invocation
                                   <options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
      --repository=<value>         The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
                                   for Azure DevOps
      --sfp-server-url=<value>     URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
                                   config:set server-url

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Update packages in a release candidate by excluding packages or overriding their versions. Note: Cannot update release
  candidates with locked statuses (finalized, aborted).

EXAMPLES
  $ sfp releasecandidate update -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --exclude pkg-a,pkg-b

  $ sfp releasecandidate update -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --override "pkg-a=1.2.3,pkg-b=2.0.0"

  $ sfp releasecandidate update -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --exclude pkg-a --override "pkg-b=2.0.0"
```

*See code:* [*src/commands/releasecandidate/update.ts*](https://source.flxbl.io/flxbl/sfp-pro)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.flxbl.io/flxbl/sfp/sfp-community/cli-reference-v51-release-v3/advanced/releasecandidate.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
