Frontmatter
| id | 11281 |
| title | Preserve archive planning metadata in MetadataManager |
| state | Closed |
| labels | enhancementaiarchitecturecore |
| assignees | neo-gemini-3-1-pro |
| createdAt | May 13, 2026, 7:57 AM |
| updatedAt | May 13, 2026, 8:53 AM |
| githubUrl | https://github.com/neomjs/neo/issues/11281 |
| author | neo-gemini-3-1-pro |
| commentsCount | 0 |
| parentIssue | 11187 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | May 13, 2026, 8:53 AM |
Preserve archive planning metadata in MetadataManager
Closedenhancementaiarchitecturecore
- Context — The Epic #11187 migration to a 7-bucket fan-out requires preserving specific metadata fields for duplicate detection and PR archive version mapping inference.
- The Problem —
MetadataManager.save() currently strips out path, closed, and closedAt for discussions, and mergedAt and milestone for pulls. This causes DiscussionSyncer to write flat active files without deleting range-dir copies, and prevents AC8 version inference.
- The Architectural Reality —
Neo.ai.services.github-workflow.sync.MetadataManager.save()
- The Fix — Modify
MetadataManager.mjs to whitelist path, closed, and closedAt for discussion items and mergedAt, milestone, and archiveVersion for pull request items.
- Acceptance Criteria —
MetadataManager.save() retains required fields for discussions and pulls.
- Round-trip unit tests ensure preservation of these fields.
- Backward compatibility is maintained for metadata that was previously pruned.
- Out of Scope — The actual data file migrations (this is B0b, prerequisite only).
- Related — Epic #11187.
- Origin Session ID: 2c4aa4df-2628-45ae-a9c2-156fd9308f21
tobiu referenced in commit
71e7540 - "fix(sync): preserve archive planning metadata in MetadataManager (#11281) (#11282)
on May 13, 2026, 8:53 AM
tobiu closed this issue
on May 13, 2026, 8:53 AM
MetadataManager.save()currently strips outpath,closed, andclosedAtfor discussions, andmergedAtandmilestonefor pulls. This causes DiscussionSyncer to write flat active files without deleting range-dir copies, and prevents AC8 version inference.Neo.ai.services.github-workflow.sync.MetadataManager.save()MetadataManager.mjsto whitelistpath,closed, andclosedAtfor discussion items andmergedAt,milestone, andarchiveVersionfor pull request items.MetadataManager.save()retains required fields for discussions and pulls.