You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tooling.apache.org by "asf-tooling (via GitHub)" <gi...@apache.org> on 2026/05/08 22:19:00 UTC
Re: [I] Project model track (tooling-trusted-releases)
asf-tooling commented on issue #469:
URL: https://github.com/apache/tooling-trusted-releases/issues/469#issuecomment-4410256538
<!-- gofannon-issue-triage-bot v2 -->
**Automated triage** — analyzed at `main@2da7807a`
**Type:** `discussion` • **Classification:** `no_action` • **Confidence:** `high`
**Application domain(s):** `project_committee_management`, `shared_infrastructure`
### Summary
Issue #469 is a tracking/epic issue organizing the 'Project model track' — a multi-phase effort to make ATR the authoritative source for PMC project and release data. It groups ~25 sub-issues across schema refactoring, update process changes, PMC update workflows, and new models. Several sub-issues have been completed recently: migration 0074 (2026-05-04) implements #912 (ProjectCycle + version metadata), and migration 0076 (2026-05-06) implements #914 (LifecycleEvent). Many sub-issues remain open. @hboutemy suggested projects should have a distribution area path; @dave2wave redirected that to issue #460.
### Where this lives in the code today
#### `atr/models/sql.py` — `Project` (lines 714-722)
_currently does this_
The Project model now includes version-scheme metadata fields (version_method, version_pattern, cycle_match, branch_template) added by sub-issue #912.
```python
class Project(sqlmodel.SQLModel, table=True):
key: str = sqlmodel.Field(primary_key=True, unique=True, **example("example"))
name: str | None = sqlmodel.Field(default=None, **example("Apache Example"))
status: ProjectStatus = sqlmodel.Field(default=ProjectStatus.ACTIVE, **example(ProjectStatus.ACTIVE))
...
version_method: VersionMethod = sqlmodel.Field(default=VersionMethod.SIMPLE, **example(VersionMethod.SIMPLE))
version_pattern: str | None = sqlmodel.Field(default=None, **example(r"^\d+\.\d+\.\d+$"))
cycle_match: str | None = sqlmodel.Field(default=None, **example(r"^(\d+)\.\d+\.\d+$"))
branch_template: str | None = sqlmodel.Field(default=None, **example("release-{cycle}"))
```
#### `atr/models/sql.py` — `ProjectStatus` (lines 163-167)
_currently does this_
ProjectStatus enum already includes lifecycle statuses relevant to tracking PMC projects.
```python
class ProjectStatus(enum.StrEnum):
ACTIVE = "active"
DORMANT = "dormant"
RETIRED = "retired"
STANDING = "standing"
```
#### `atr/models/sql.py` — `VersionMethod` (lines 244-247)
_currently does this_
VersionMethod enum added as part of sub-issue #912 to support different version scheme types.
```python
class VersionMethod(enum.StrEnum):
SIMPLE = "simple"
SEMVER = "semver"
CALVER = "calver"
```
#### `atr/models/sql.py` — `LifecycleEventType` (lines 262-268)
_currently does this_
LifecycleEventType enum added as part of sub-issue #914 for tracking release lifecycle events.
```python
class LifecycleEventType(enum.StrEnum):
RELEASE = "release"
ARCHIVE = "archive"
WITHDRAW = "withdraw"
EOD = "eod"
EOS = "eos"
EOL = "eol"
```
#### `migrations/versions/0074_2026.05.04_0d6e9554.py` — `upgrade` (lines 22-37)
_currently does this_
Migration implementing sub-issue #912 (ProjectCycle table and version metadata), created just 4 days ago.
```python
def upgrade() -> None:
# project: add version-scheme metadata. Existing rows default to "simple".
with op.batch_alter_table("project", schema=None) as batch_op:
batch_op.add_column(
sa.Column(
"version_method",
sa.Enum("SIMPLE", "SEMVER", "CALVER", name="versionmethod"),
nullable=False,
server_default="SIMPLE",
)
)
...
op.create_table(
"projectcycle",
...
)
```
#### `migrations/versions/0076_2026.05.06_e5fa9b30.py` — `upgrade` (lines 39-52)
_currently does this_
Migration implementing sub-issue #914 (LifecycleEvent table), created just 2 days ago.
```python
def upgrade() -> None:
op.create_table(
"lifecycleevent",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("project_key", sa.String(), nullable=False),
sa.Column("cycle_key", sa.String(), nullable=True),
sa.Column("version_key", sa.String(), nullable=True),
sa.Column(
"event",
sa.Enum("RELEASE", "ARCHIVE", "WITHDRAW", "EOD", "EOS", "EOL", name="lifecycleeventtype"),
nullable=False,
),
...
)
```
#### `atr/get/projects.py` — `projects` (lines 47-54)
_currently does this_
Project directory page already exists, serving as the basis for the 'source for finding out about PMC projects'.
```python
@get.typed
async def projects(_session: web.Public, _projects: Literal["projects"]) -> str:
"""
URL: /projects
Main project directory page.
"""
async with db.session() as data:
projects = await data.project(_committee=True).order_by(sql.Project.name).all()
```
#### `atr/db/__init__.py` — `Session.project_cycle` (lines 432-441)
_currently does this_
Query builder for the new ProjectCycle model, supporting the version cycle tracking from sub-issue #912.
```python
def project_cycle(
self,
cycle_key: Opt[str] = NOT_SET,
project_key: Opt[str] = NOT_SET,
cycle: Opt[str] = NOT_SET,
_project: bool = False,
_releases: bool = False,
) -> Query[sql.ProjectCycle]:
query = sqlmodel.select(sql.ProjectCycle)
...
```
### Proposed approach
This is a tracking/epic issue with no single implementation. Work proceeds through individual sub-issues. Recent activity shows sub-issues #912 and #914 were implemented in the last few days (migrations 0074 and 0076). The remaining open sub-issues (#465, #462, #470, #473, #510, #507, #498, #468, #443, #433, #478, #640, #479, #184, #180, #139, #911, #913, #614) should be addressed individually. No single diff is appropriate for this tracking issue.
### Open questions
- What is the status of sub-issues #911 and #913 (the other two items under '4. Models')?
- Are any of the remaining unchecked sub-issues blocked or deprioritized?
- The distribution area path suggestion from @hboutemy — is it being tracked in #460 or does it need its own sub-issue under this track?
_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/models/sql.py`
- `migrations/versions/0074_2026.05.04_0d6e9554.py`
- `migrations/versions/0076_2026.05.06_e5fa9b30.py`
- `atr/db/__init__.py`
- `atr/get/projects.py`
- `atr/post/projects.py`
- `migrations/versions/0001_2025.05.15_1d3ee5a0.py`
- `atr/docs/database.md`
---
*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: dev-unsubscribe@tooling.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tooling.apache.org
For additional commands, e-mail: dev-help@tooling.apache.org