Skip to content

Conversation

@m-linner-ericsson
Copy link
Member

@m-linner-ericsson m-linner-ericsson commented Oct 29, 2025

Applicable Issues

Fixes #236

Description of the Change

  • Adding PRECURSOR link to show how an event supersedes another
  • Adding description of how Confidence Level Modified Event can be used to show Source Change approvals

Diff of the definition file:

> diff -u definitions/EiffelConfidenceLevelModifiedEvent/4.0.1.yml definitions/EiffelConfidenceLevelModifiedEvent/4.1.0.yml
--- definitions/EiffelConfidenceLevelModifiedEvent/4.0.1.yml    2025-10-29 13:59:22.149261157 +0100
+++ definitions/EiffelConfidenceLevelModifiedEvent/4.1.0.yml    2025-10-29 14:02:20.139262254 +0100
@@ -15,12 +15,14 @@
 ---
 $schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelConfidenceLevelModifiedEvent
-_version: 4.0.1
+_version: 4.1.0
 _abbrev: CLM
 _description: |-
   The EiffelConfidenceLevelModifiedEvent declares that an entity has achieved (or failed to achieve) a certain level of confidence, or in a broader sense to annotate it as being applicable or relevant to a certain case (e.g. fit for release to a certain customer segment or having passed certain criteria). This is particularly useful for promoting various engineering artifacts, such as product revisions, through the continuous integration and delivery pipeline.

   Confidence levels may operate at high or low levels of abstraction - ranging from "smokeTestsOk" to "releasable" or "released" - and they may group other confidence levels of lower abstraction levels. They may also be general or very niched, e.g. "releasable" or "releasableToCustomerX". Confidence levels frequently figure in automated delivery interfaces within a tiered system context: lower level tiers issue an agreed confidence level signaling that a new version is ready for integration in a higher level tier.
+
+  See [Source Change Approval Using Confidence Levels](../eiffel-syntax-and-usage/clm-source-change-approved.md) for guidance on how to use the CLM event for reviews.
 type: object
 properties:
   meta:
@@ -133,6 +135,14 @@
       any_type: false
       types:
         - EiffelFlowContextDefinedEvent
+  PREDECESSOR:
+    description: 'Identifies which other CLM events this event supersedes. For example, in a scenario where CLM events signal reviews, this link indicates which earlies reviews became outdated due to this review.'
+    required: false
+    multiple: true
+    targets:
+      any_type: false
+      types:
+        - EiffelConfidenceLevelModifiedEvent
   SUBJECT:
     description: Identifies a subject of the confidence level; in other
       words, what the confidence level applies to.
@@ -160,6 +170,8 @@
       types:
         - EiffelConfidenceLevelModifiedEvent
 _history:
+  - version: 4.1.0
+    changes: Add PREDECESSOR link (see [Issue 236](https://github.com/eiffel-community/eiffel/issues/236)).
   - version: 4.0.1
     changes: Detail the expected representation of public key and signature in meta.security  (see [Issue 375](https://github.com/eiffel-community/eiffel/issues/375)).
   - version: 4.0.0

Diff of the JSON:

> diff -u schemas/EiffelConfidenceLevelModifiedEvent/4.0.1.json schemas/EiffelConfidenceLevelModifiedEvent/4.1.0.json
--- schemas/EiffelConfidenceLevelModifiedEvent/4.0.1.json       2025-10-29 14:02:51.859262450 +0100
+++ schemas/EiffelConfidenceLevelModifiedEvent/4.1.0.json       2025-10-29 14:02:51.929262450 +0100
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "4.0.1"
+            "4.1.0"
           ],
-          "default": "4.0.1"
+          "default": "4.1.0"
         },
         "time": {
           "type": "integer"

Alternate Designs

One could have skipped the PRECUSOR but it was deemed good to have it.

Possible Drawbacks

None that I can think of

Sign-off

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

Signed-off-by: Mattias Linnér [email protected]

@m-linner-ericsson m-linner-ericsson requested a review from a team as a code owner October 29, 2025 13:51
@m-linner-ericsson m-linner-ericsson changed the title CLM source change approved Modeling Source Change Verdicts Oct 29, 2025
@m-linner-ericsson m-linner-ericsson self-assigned this Oct 29, 2025

Confidence levels may operate at high or low levels of abstraction - ranging from "smokeTestsOk" to "releasable" or "released" - and they may group other confidence levels of lower abstraction levels. They may also be general or very niched, e.g. "releasable" or "releasableToCustomerX". Confidence levels frequently figure in automated delivery interfaces within a tiered system context: lower level tiers issue an agreed confidence level signaling that a new version is ready for integration in a higher level tier.

See [Source Change Approval Using Confidence Levels](../eiffel-syntax-and-usage/clm-source-change-approved.md) for guidance on how to use the CLM event for reviews.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
See [Source Change Approval Using Confidence Levels](../eiffel-syntax-and-usage/clm-source-change-approved.md) for guidance on how to use the CLM event for reviews.
See [Source Change Approval Using Confidence Levels](../eiffel-syntax-and-usage/clm-source-change-approved.md) for guidance on how to use the CLM event for source change reviews.

__Required:__ No
__Legal targets:__ [EiffelConfidenceLevelModifiedEvent](../eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md)
__Multiple allowed:__ Yes
__Description:__ Identifies which other CLM events this event supersedes. For example, in a scenario where CLM events signal reviews, this link indicates which earlies reviews became outdated due to this review.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
__Description:__ Identifies which other CLM events this event supersedes. For example, in a scenario where CLM events signal reviews, this link indicates which earlies reviews became outdated due to this review.
__Description:__ Identifies which other CLM events this event supersedes. For example, in a scenario where CLM events signal source change reviews, this link indicates which earlies reviews became outdated due to this review.


_Source change approval_ is the process of signaling when a source change has been reviewed and approved according to project requirements. This document describes how to represent source change approval states using [EiffelConfidenceLevelModifiedEvent][CLM] events, providing a standardized way to communicate approval status using the Eiffel protocol.

Source change approval is a critical gate in software development workflows, determining when changes are ready for integration. By modeling approval as confidence levels, teams can create flexible approval workflows that integrate naturally with existing Eiffel-based CI/CD pipelines.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Source change approval is a critical gate in software development workflows, determining when changes are ready for integration. By modeling approval as confidence levels, teams can create flexible approval workflows that integrate naturally with existing Eiffel-based CI/CD pipelines.
Source change approvals can be used as a trigger to execute certain test pipelines. Those pipelines could either consume serious amounts of hardware/network resources and thus should not run unless the source change is deemed interesting enough, or they could run in sensitive environments and should therefore not be executed unless the reviewer(s) say it's safe to run. By modeling approval as confidence levels, teams can create flexible approval workflows that integrate naturally with existing Eiffel-based CI/CD pipelines.

}
```

**Supported values:**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The schema does not limit what values are possible to use, so I don't think we should say 'Supported values'

Suggested change
**Supported values:**
**Proposed values:**

Comment on lines +52 to +55
- `PENDING`: Review process initiated but not complete
- `APPROVED`: All required approvals received
- `REJECTED`: Change rejected during review
- `INSUFFICIENT_REVIEWS`: Not enough reviews to meet requirements
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In what scenario should PENDING be used and not INSUFFICIENT_REVIEWS or vice versa? To me, they are mostly the same. I propose to remove the last value.

```json
{
"data": {
"name": "review-approval",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The CLM docs recommend camelCase on the name

Suggested change
"name": "review-approval",
"name": "reviewApproval",

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR proposes several new values for the data object, so the schema needs to add the value enum. It currently only supports "SUCCESS", "FAILURE", "INCONCLUSIVE".
This would mean that the new values would be legal also for 'non-source-change-approval' CLMs... Is that what we want?

@m-linner-ericsson
Copy link
Member Author

m-linner-ericsson commented Nov 12, 2025

Due to the amount of rewrite needed in this PR I will close it and will open a new to lessen the amount of confusion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add EiffelSourceChangeApprovedEvent

2 participants