asf-tooling commented on issue #851:
URL: 
https://github.com/apache/tooling-trusted-releases/issues/851#issuecomment-4407550831

   <!-- gofannon-issue-triage-bot v2 -->
   
   **Automated triage** — analyzed at `main@751c2146`
   
   **Type:** `discussion`  •  **Classification:** `no_action`  •  
**Confidence:** `high`
   **Application domain(s):** `release_lifecycle`, `automated_checks`
   
   ### Summary
   This issue began as a request to add a confirmation step for release 
managers ignoring non-blocking errors, but has evolved into a design discussion 
about reclassifying the entire check result type system. @sbp proposed renaming 
result types from success/error/blocker/exception to 
pass/suggestion/concern/blocker/exception, and adding a 'selective strict mode' 
(inverse of ignores). @dave2wave noted more discussion is needed and suggested 
'dismiss' as better terminology. The team decided to draw up a reclassification 
table for review but no implementation decision has been reached.
   
   ### Where this lives in the code today
   
   #### `atr/tasks/checks/__init__.py` — `Recorder` (lines 256-282)
   _currently does this_
   The Recorder class has methods for each current check result type (success, 
warning, failure, blocker, exception) - any reclassification would modify these 
methods.
   
   ```python
       async def blocker(
           self,
           message: str,
           data: Any,
           primary_rel_path: safe.RelPath | None = None,
           member_rel_path: str | None = None,
       ) -> sql.CheckResult:
           result = await self._add(
               sql.CheckResultStatus.BLOCKER,
               message,
               data,
               primary_rel_path=primary_rel_path,
               member_rel_path=member_rel_path,
           )
           return result
   
       async def exception(
           ...
   
       async def failure(
           ...
   
       async def success(
           ...
   
       async def warning(
           ...
   ```
   
   #### `atr/storage/readers/checks.py` — `GeneralPublic.__check_ignore_match` 
(lines 105-122)
   _currently does this_
   Shows the current ignore logic where SUCCESS and BLOCKER are never ignored - 
a 'selective strict mode' or reclassification would need to modify this 
boundary logic.
   
   ```python
       def __check_ignore_match(self, cr: sql.CheckResult, cri: 
sql.CheckResultIgnore) -> bool:
           # Does not check that the project name matches
           if cr.status == sql.CheckResultStatus.SUCCESS:
               # Successes are never ignored
               return False
           if cr.status == sql.CheckResultStatus.BLOCKER:
               # Blockers are never ignored
               return False
           if cri.release_glob is not None:
               if not self.__check_ignore_match_pattern(cri.release_glob, 
str(cr.release_key)):
                   return False
           if cri.revision_number is not None:
               if cri.revision_number != cr.revision_number:
                   return False
           if cri.checker_glob is not None:
               if not self.__check_ignore_match_pattern(cri.checker_glob, 
cr.checker):
                   return False
           return self.__check_ignore_match_2(cr, cri)
   ```
   
   #### `atr/shared/ignores.py` — `IgnoreStatus` (lines 35-41)
   _currently does this_
   Current ignore status enum maps to existing check result statuses - would 
need updating if result types are reclassified.
   
   ```python
   class IgnoreStatus(enum.Enum):
       """Wrapper enum for ignore status."""
   
       NO_STATUS = "-"
       EXCEPTION = "Exception"
       FAILURE = "Failure"
       WARNING = "Warning"
   ```
   
   ### Proposed approach
   This issue is still in active design discussion. The team has not converged 
on an implementation approach. The original idea of a confirmation checkbox was 
critiqued by @sbp as ineffective. The current proposal involves reclassifying 
check result types from success/warning/failure/blocker/exception to 
pass/suggestion/concern/blocker/exception, plus adding a 'selective strict 
mode' (inverse of ignores that promotes concerns to blockers). @dave2wave 
suggested 'dismiss' as terminology. The team decided to produce a 
reclassification table for review before proceeding.
   
   No diff should be proposed at this time. The changes would touch the SQL 
model enum (CheckResultStatus), the Recorder class methods, ignore matching 
logic, statistics computation, and all UI rendering of check results - but the 
exact new taxonomy hasn't been agreed upon.
   
   ### Open questions
   - What is the final agreed taxonomy of check result types? 
(pass/suggestion/concern/blocker/exception vs other options)
   - What does the reclassification table look like - which existing checks map 
to which new types?
   - Should 'selective strict mode' be implemented alongside reclassification 
or separately?
   - Is 'dismiss' (per @dave2wave) the preferred term for the 
ignore/acknowledge action?
   - Does a database migration need to handle existing check results with the 
old status values?
   - Where is sql.CheckResultStatus defined and what are its current enum 
values? (not in provided files)
   
   _The agent reviewed this issue and is not proposing patches in this run. 
Review the existing-code citations and open questions above before deciding 
next steps._
   
   ### Files examined
   - `atr/shared/ignores.py`
   - `atr/storage/writers/checks.py`
   - `atr/post/ignores.py`
   - `atr/storage/readers/checks.py`
   - `atr/get/checks.py`
   - `atr/tasks/checks/__init__.py`
   - `atr/get/compose.py`
   - `atr/get/ignores.py`
   
   ---
   *Draft from a triage agent. A human reviewer should validate before merging 
any change. The agent did not run tests or verify diffs apply.*


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to