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]