Skip to content

Commit 597d215

Browse files
sisureshCopilot
andauthored
Add per-CAP exit criteria for release readiness (#1941)
* Add per-CAP exit criteria for release readiness Define a release-readiness gate for CAPs by adding an Exit Criteria section to the CAP template and wiring it into the CAP process: a CAP must meet its exit criteria before it can move to Implemented and be included in a protocol release. Relates to stellar/pod-fsr#3 * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
1 parent fbf05c9 commit 597d215

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

cap-template.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,22 @@ completed before the CAP is accepted. While there is merit to the approach of re
140140
the specification and rationale before writing code, the principle of "rough consensus and running
141141
code" is still useful when it comes to resolving many discussions of API details.
142142

143+
## Exit Criteria
144+
The verifiable conditions that must be met before this CAP moves to `Implemented` and can be
145+
included in a protocol release. Each item should be objectively verifiable (e.g. a test run,
146+
transaction hash, or contract execution) and demonstrate the feature working end-to-end, not only in
147+
unit tests. Here are some examples:
148+
149+
- The feature has been exercised on [Futurenet] or via [Quickstart], with Horizon and RPC up and
150+
reflecting the change.
151+
- For Soroban CAPs, a contract using the new functionality has been executed on Futurenet or
152+
Quickstart.
153+
- Stellar Core `LedgerCloseMeta`s (captured via `--capture-lcm` from new tests relevant to this CAP)
154+
pass Horizon ingestion test cases.
155+
- The [Test Cases](#test-cases) are passing.
156+
157+
Add any feature-specific criteria below.
158+
143159
[stellar-core repository]: https://github.com/stellar/stellar-core
160+
[Futurenet]: https://developers.stellar.org/docs/networks
161+
[Quickstart]: https://github.com/stellar/quickstart

core/README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
- **Accepted** — A CAP that has been accepted on the merits of its idea pre-implementation, and is
1515
ready for implementation. It is still possible that the CAP may be rejected post-implementation
1616
due to the issues that may arise during an initial implementation.
17-
- **Implemented** - A CAP that has been implemented with the protocol version specified in the CAP. It will graduate to
17+
- **Implemented** - A CAP that has been implemented with the protocol version specified in the CAP,
18+
and whose [exit criteria](../cap-template.md#exit-criteria) have been met. It will graduate to
1819
**Final** when it has been formally accepted by a majority of validators (nodes) on the network.
1920
- **Final** — A CAP that has been accepted by a majority of validators (nodes) on the network. A
2021
final CAP should only be updated to correct errata.
@@ -236,6 +237,8 @@ Finally, submit a PR of your draft via your fork of this repository.
236237
#### Additional Tips
237238
- Use `TBD` for the protocol version. Don't assign a protocol version to the CAP — this will be
238239
established once the CAP has reached the state of *Final* and has been formally implemented.
240+
- Define the CAP's [exit criteria](../cap-template.md#exit-criteria) up front — the verifiable
241+
conditions, agreed with the working group, for when the feature is ready to be released.
239242

240243
### Draft: Merging & Further Iteration
241244
From there, the following process will happen.
@@ -309,7 +312,12 @@ Review**, along with the protocol version it was released in if applicable.
309312

310313
From here the proposal is brought up again before the protocol group for additional comment, where
311314
it is possible that the proposal is rejected based on the issues that arise from its
312-
implementation. If no issues arise, it will move to **Implemented** by a CAP team member.
315+
implementation.
316+
317+
Before the CAP can move to **Implemented**, its [exit criteria](../cap-template.md#exit-criteria)
318+
must be met — for example, exercising the feature on Futurenet or via Quickstart (with Horizon and
319+
RPC up), and, for Soroban CAPs, executing a contract that uses it. Once the criteria are met and no
320+
issues arise, a CAP team member moves it to **Implemented**.
313321

314322
### CAP Finalization
315323

0 commit comments

Comments
 (0)