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

   <!-- gofannon-issue-triage-bot v2 -->
   
   **Automated triage** — analyzed at `main@2da7807a`
   
   **Type:** `unclear`  •  **Classification:** `no_action`  •  **Confidence:** 
`high`
   **Application domain(s):** `release_lifecycle`
   
   ### Summary
   Issue #930 is titled 'Compose feature complete' and described as a 'New 
master punch list to complete the compose phase,' but the issue body contains 
no specific action items, checkboxes, or task enumeration. The compose phase 
already has substantial functionality implemented (file uploads via SSH, file 
movement, deletion, hash generation, SBOM generation, quarantine handling, 
check management). Without enumerated punch list items, there is no specific 
code change to propose.
   
   ### Where this lives in the code today
   
   #### `atr/get/compose.py` — `selected` (lines 47-57)
   _currently does this_
   Main compose page handler that renders the full draft composition UI 
including file listing, move section, checks summary, quarantine status, SSH 
upload info, and admin controls.
   
   ```python
   @get.typed
   async def selected(
       session: web.Committer,
       _compose: Literal["compose"],
       project_key: safe.ProjectKey,
       version_key: safe.VersionKey,
   ) -> web.WerkzeugResponse | str:
       """
       URL: /compose/<project_key>/<version_key>
       Show the contents of the release candidate draft.
       """
   ```
   
   #### `atr/post/compose.py` — `selected` (lines 31-44)
   _currently does this_
   POST handler for the compose page, currently only handles the move-file 
operation.
   
   ```python
   @post.typed
   async def selected(
       session: web.Committer,
       _compose: Literal["compose"],
       project_key: safe.ProjectKey,
       version_key: safe.VersionKey,
       move_form: shared.compose.MoveFileForm,
   ) -> tuple[web.QuartResponse, int] | web.WerkzeugResponse:
       """
       URL: /compose/<project_key>/<version_key>
       """
       respond = _respond_helper(session, project_key, version_key)
   
       return await _move_file_to_revision(move_form, session, project_key, 
version_key, respond)
   ```
   
   #### `atr/post/draft.py` — `delete_file` (lines 40-51)
   _currently does this_
   One of several draft operations (delete, hashgen, quarantine_clear, recheck, 
sbomgen, sbomconvert) that support the compose phase.
   
   ```python
   @post.typed
   async def delete_file(
       session: web.Committer,
       _draft_delete_file: Literal["draft/delete-file"],
       project_key: safe.ProjectKey,
       version_key: safe.VersionKey,
       delete_file_form: shared.draft.DeleteFileForm,
   ) -> web.WerkzeugResponse:
       """
       URL: /draft/delete-file/<project_key>/<version_key>
       Delete a specific file from the release candidate, creating a new 
revision.
       """
   ```
   
   #### `atr/shared/compose.py` — `MoveFileForm` (lines 32-47)
   _currently does this_
   The only compose form variant currently defined, suggesting compose POST 
currently only supports file movement.
   
   ```python
   class MoveFileForm(form.Form):
       variant: MOVE_FILE = form.value(MOVE_FILE)
       source_files: form.RelPathList = form.label("Files to move")
       target_directory: safe.RelPath = form.label("Target directory")
   
       @pydantic.model_validator(mode="after")
       def validate_move(self) -> "MoveFileForm":
           if not self.source_files:
               raise ValueError("Please select at least one file to move.")
   
           target_dir_path = self.target_directory.as_path()
           for source_path in self.source_files:
               source = source_path.as_path()
               if source.parent == target_dir_path:
                   raise ValueError(f"Target directory cannot be the same as 
the source directory for {source.name}.")
           return self
   ```
   
   #### `atr/get/compose.py` — `_render_move_section` (lines 236-255)
   _currently does this_
   The move section mentions 'when ATR supports this feature' for SVN 
publishing, indicating some compose-related features are still pending.
   
   ```python
   def _render_move_section(max_files_to_show: int = 10) -> htm.Element:
       """Render the move files section with JavaScript interaction."""
       section = htm.Block()
   
       section.h2["Move items to a different directory"]
       section.p[
           """
           Move files in the compose area using the form below. You can change
           files freely until holding a vote, and then file locations are 
frozen.
           Moving files now only moves them on ATR, but as soon as a vote is
           started, if the vote is successful then the current locations will
           determine where they are published to SVN (when ATR supports this
           feature).
           """
           "Files with associated metadata (e.g. ",
           htm.code[".asc"],
           " or ",
           htm.code[".sha512"],
           " files) are treated as a single unit and will be moved together if 
any one of them is selected for movement.",
       ]
   ```
   
   ### Proposed approach
   This issue cannot be triaged into a specific code change because it is a 
punch list/tracking issue with no enumerated items in the body. The compose 
phase already has working implementations for: file uploads via SSH/rsync, file 
movement between directories, file deletion, SHA512 hash generation, SBOM 
generation and conversion, quarantine handling, recheck/cache reset, and draft 
deletion.
   
   To make this issue actionable, someone needs to enumerate the specific 
remaining items. Based on TODOs and hints in the code, potential items might 
include: (1) caching the expensive paths_recursive call noted at line ~73 of 
compose.py, (2) SVN publication support mentioned in the move section text, (3) 
additional compose form operations beyond just file movement, or (4) 
performance improvements. However, without the actual punch list, proposing 
diffs would be speculative.
   
   ### Open questions
   - What are the specific punch list items for completing the compose phase? 
The issue body contains no enumerated tasks.
   - Is there a related project board, milestone, or external document that 
contains the actual list of items?
   - Does 'feature complete' mean UI polish, missing operations (rename files, 
create directories directly), SVN publishing support, or something else 
entirely?
   
   _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/get/compose.py`
   - `atr/post/compose.py`
   - `atr/get/finish.py`
   - `atr/post/draft.py`
   - `atr/post/finish.py`
   - `atr/shared/compose.py`
   - `atr/shared/finish.py`
   - `atr/get/draft.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