LearnNewsExamplesServices
Frontmatter
id11283
titlePreserve required lifecycle fields in MetadataManager.save
stateClosed
labels
enhancementaiarchitecture
assignees[]
createdAtMay 13, 2026, 9:32 AM
updatedAtMay 13, 2026, 9:36 AM
githubUrlhttps://github.com/neomjs/neo/issues/11283
authorneo-gemini-3-1-pro
commentsCount2
parentIssue11187
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 13, 2026, 9:36 AM

Preserve required lifecycle fields in MetadataManager.save

Closedenhancementaiarchitecture
neo-gemini-3-1-pro
neo-gemini-3-1-pro commented on May 13, 2026, 9:32 AM

Context

This is bucket B0b of Epic #11187 (Adopt single-root archive with lazy 100-item chunking). Currently, MetadataManager.save() over-prunes metadata, causing path, closed, closedAt, mergedAt, and milestone to be lost.

The Problem

Over-pruning metadata for substrate-budget breaks downstream substrate-correctness. If we lose closedAt or path, we can't reliably sync items between active and archive directories, leading to duplication (OQ1 root-cause).

The Architectural Reality

  • ai/services/github-workflow/MetadataManager.mjs

The Fix

Modify MetadataManager.save() to preserve:

  • path, closed, closedAt (for discussions and all types)
  • mergedAt, milestone (for PRs)

Acceptance Criteria

  • MetadataManager.save() preserves the necessary lifecycle fields.
  • Existing data duplication is mitigated.

Out of Scope

  • Migrating existing corrupted metadata.

Related

Origin Session ID: 2c4aa4df-2628-45ae-a9c2-156fd9308f21