Skip to content

Commit 83a1208

Browse files
committed
#7564 ticket md files
1 parent c7c3223 commit 83a1208

5 files changed

Lines changed: 148 additions & 0 deletions
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
title: "Filter GitHub Issues by Date in SyncService"
3+
labels: enhancement, AI
4+
---
5+
6+
GH ticket id: #7573
7+
8+
**Epic:** #7564
9+
**Phase:** 1
10+
**Depends On:** #7571
11+
**Assignee:** tobiu
12+
**Status:** To Do
13+
14+
## Description
15+
16+
To significantly improve the performance and reduce the scope of the issue synchronization, the `#pullFromGitHub` method must be updated to process only the issues relevant to our configured time window.
17+
18+
## Acceptance Criteria
19+
20+
1. The `#pullFromGitHub()` method in `SyncService.mjs` is updated.
21+
2. After fetching the full list of issues from GitHub, the method filters the array.
22+
3. The filter logic should only keep issues where `createdAt >= syncStartDate` OR `updatedAt >= syncStartDate`.
23+
4. Only the issues that pass this filter are processed for local file creation, updates, or deletion.
24+
25+
## Benefits
26+
27+
- Drastically reduces the number of issues processed during a sync, improving performance.
28+
- Prevents the local repository from being cluttered with thousands of irrelevant, legacy issues.
29+
- Focuses the synchronization effort on active and recent work items.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
title: "Implement Dynamic Release Fetching in SyncService"
3+
labels: enhancement, AI
4+
---
5+
6+
GH ticket id: #7572
7+
8+
**Epic:** #7564
9+
**Phase:** 1
10+
**Depends On:** #7571
11+
**Assignee:** tobiu
12+
**Status:** To Do
13+
14+
## Description
15+
16+
With the configuration now based on a `syncStartDate`, the `SyncService` must be updated to dynamically fetch release data from GitHub instead of relying on a static list. This fetched data will be used by the archiving logic.
17+
18+
## Acceptance Criteria
19+
20+
1. A new private method, `#fetchAndCacheReleases()`, is created in `SyncService.mjs`.
21+
2. This method is called once at the beginning of the `runFullSync()` orchestration.
22+
3. It executes `gh release list --json tagName,publishedAt --limit 1000` to get all releases.
23+
4. It filters the fetched releases, keeping only those with a `publishedAt` date on or after the `syncStartDate` from the config.
24+
5. It sorts the filtered releases by `publishedAt` date in descending order (newest first).
25+
6. The resulting array of `{ tagName, publishedAt }` objects is stored in an instance property (e.g., `this.releases`) for use by other methods during the sync.
26+
27+
## Benefits
28+
29+
- Makes the archiving process fully automated and aware of the latest project releases.
30+
- Eliminates the need for manual configuration updates when a new version is released.
31+
- Ensures the service has an accurate, up-to-date list of all relevant releases.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: "Refactor Sync Config for Dynamic Date-Based Syncing"
3+
labels: enhancement, AI
4+
---
5+
6+
GH ticket id: #7571
7+
8+
**Epic:** #7564
9+
**Phase:** 1
10+
**Assignee:** tobiu
11+
**Status:** To Do
12+
13+
## Description
14+
15+
To make the issue synchronization process scalable and efficient, we need to move away from a static release list and instead use a date-based approach to limit the scope of the sync. This involves removing the hardcoded `releases` array from the configuration and replacing it with a single `syncStartDate`.
16+
17+
## Acceptance Criteria
18+
19+
1. The `ai/mcp/server/config.mjs` file is updated.
20+
2. The `githubWorkflow.issueSync.releases` array is **removed**.
21+
3. A new string property, `githubWorkflow.issueSync.syncStartDate`, is added. Its value should be set to a reasonable default, like `'2024-01-01T00:00:00Z'`, to limit the sync to recent v10+ issues.
22+
23+
## Benefits
24+
25+
- Decouples the sync logic from a static, manually maintained list of releases.
26+
- Provides a single, simple configuration point for controlling the time window of the synchronization.
27+
- Paves the way for the service to dynamically fetch release data from GitHub.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
title: "Implement Release Note Synchronization"
3+
labels: enhancement, AI
4+
---
5+
6+
GH ticket id: #7575
7+
8+
**Epic:** #7564
9+
**Phase:** 1
10+
**Depends On:** #7571
11+
**Assignee:** tobiu
12+
**Status:** To Do
13+
14+
## Description
15+
16+
To create a complete local mirror of the project's history, we need to synchronize the release notes from GitHub to local Markdown files. This provides valuable context for the AI knowledge base and for developers working offline.
17+
18+
## Acceptance Criteria
19+
20+
1. A new private method, `#syncReleaseNotes()`, is created in `SyncService.mjs`.
21+
2. This method is orchestrated by the main `runFullSync()` method.
22+
3. It uses `gh release list --json tagName,publishedAt` to get all releases.
23+
4. It filters this list to include only releases published on or after the `syncStartDate`.
24+
5. For each relevant release, it calls `gh release view <tagName>` to fetch the full, rendered release notes.
25+
6. The body of each release note is saved as a local Markdown file in the `.github/RELEASE_NOTES/` directory (e.g., `.github/RELEASE_NOTES/v10.9.0.md`).
26+
27+
## Benefits
28+
29+
- Provides a complete, local, and queryable archive of all project release notes.
30+
- Enriches the AI knowledge base with high-level summaries of changes and new features for each version.
31+
- Improves the agent's ability to understand the evolution of the codebase over time.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
title: "Update Archiving Logic to Use Dynamic Release Data"
3+
labels: enhancement, AI
4+
---
5+
6+
GH ticket id: #7574
7+
8+
**Epic:** #7564
9+
**Phase:** 1
10+
**Depends On:** #7572
11+
**Assignee:** TBD
12+
**Status:** To Do
13+
14+
## Description
15+
16+
The issue archiving logic in `#getIssuePath()` is currently tied to a static configuration. It needs to be refactored to use the dynamic list of releases fetched from GitHub at the start of the sync process.
17+
18+
## Acceptance Criteria
19+
20+
1. The `#getIssuePath()` method in `SyncService.mjs` is refactored.
21+
2. When determining the version for a closed issue, the method no longer references a static config.
22+
3. Instead, it iterates over the `this.releases` array (populated by `#fetchAndCacheReleases()`).
23+
4. It correctly identifies the target version by finding the first release in the sorted list whose `publishedAt` date is after the issue's `closedAt` date.
24+
5. The logic for handling issues with an explicit `milestone` remains as a priority.
25+
26+
## Benefits
27+
28+
- Completes the transition to a fully dynamic, date-based synchronization system.
29+
- Ensures that closed issues are always archived into the correct, most recent release folder without manual intervention.
30+
- Makes the archiving logic resilient to changes in the project's release cadence.

0 commit comments

Comments
 (0)