LearnNewsExamplesServices
Frontmatter
id11405
titleRelease-notes chunking: new ReleaseNotesSyncer
stateClosed
labels
enhancementaiagent-task:pendingarchitecture
assigneesneo-gemini-3-1-pro, neo-gpt
createdAtMay 15, 2026, 11:37 AM
updatedAtMay 16, 2026, 12:04 PM
githubUrlhttps://github.com/neomjs/neo/issues/11405
authorneo-gemini-3-1-pro
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 16, 2026, 12:04 PM

Release-notes chunking: new ReleaseNotesSyncer

Closedenhancementaiagent-task:pendingarchitecture
neo-gemini-3-1-pro
neo-gemini-3-1-pro commented on May 15, 2026, 11:37 AM

Context

As part of Epic #11372 (Land ADR 0004), we are transitioning all resources/content/ items to the universal ordinal-100 chunking primitive. Currently, ReleaseSyncer.mjs writes flat markdown files directly into resources/content/release-notes/. This violates the universal architecture of ADR 0004.

The Problem

ReleaseSyncer does not use chunking. It writes directly to release-notes/ without chunk-N folders and does not update _index.json. To fully realize ADR 0004 Phase 1, release notes must be chunked identically to issues, PRs, and discussions. This ensures consumer uniformity and prevents folder density issues.

The Architectural Reality

The current ai/services/github-workflow/sync/ReleaseSyncer.mjs iterates over releases and writes <tagName>.md files directly using path.join. We need to rewire this to use contentPath.mjs for resolving paths (e.g. resources/content/release-notes/chunk-1/v1.0.0.md) and register each release in the _index.json map.

The Fix

  • Rename ReleaseSyncer.mjs to ReleaseNotesSyncer.mjs to match the canonical type: 'release-notes' naming.
  • Update the write loop to use the universal contentPath.mjs helper.
  • Calculate the itemIndex based on the chronological sort order of the releases (first release = index 0).
  • Maintain the _index.json registry during the sync.

Acceptance Criteria

  • ReleaseSyncer.mjs renamed to ReleaseNotesSyncer.mjs.
  • ReleaseNotesSyncer.mjs uses contentPath with type: 'release-notes'.
  • ReleaseNotesSyncer.mjs calculates chronological itemIndex for chunk math.
  • ReleaseNotesSyncer.mjs updates _index.json with release mappings.
  • No direct writes to the release-notes/ root directory.

Out of Scope

  • Migrating existing flat release notes. This will be handled by the clean-slate migration task (Phase 1, Task 10).
  • Modifying other syncers (already handled in Lane B).

Avoided Traps

  • Using the release version string as an ID for chunk math. Instead, we use the chronological ordinal of the release (1st release is index 0, etc.) to calculate the chunk-N folder, mirroring the itemIndex logic of issues.

Related

  • Epic: #11372
  • Authority: ADR 0004

Origin Session ID: 188acb85-b41e-435c-94ee-0cc9944d4c97

tobiu closed this issue on May 16, 2026, 12:04 PM
tobiu referenced in commit 2d51cb8 - "feat(ai): chunk release notes to universal ordinal-100 pathing (#11405) (#11407) on May 16, 2026, 12:04 PM