Context
Epic #11187 Phase 6 is rescuing the resources/content archive substrate from stale issue-archive / pr-archive / unversioned assumptions. Discussion #11359 and PR #11362 narrow the immediate data cleanup, but live V-B-A on the gh-workflow config surface shows a separate contract pocket still outside #11360 / #11362 scope.
Current branch evidence:
ai/mcp/server/github-workflow/config.mjs still exposes issueSync.archiveDir pointing at resources/content/issue-archive.
ai/mcp/server/github-workflow/config.template.mjs exposes the same legacy archiveDir fallback.
- Both config files still expose
defaultArchiveVersion: 'unversioned'.
- Consumer grep still finds
issueSync.archiveDir references in IssueSyncer.mjs, LocalFileService.mjs, and related unit tests.
This is a config-contract cleanup ticket, not another data-migration ticket. The goal is to prevent the deleted legacy folders and the invalid unversioned bucket from remaining alive as official gh-workflow configuration.
Problem
archiveRoot is the intended versioned archive root. Keeping archiveDir and defaultArchiveVersion in the public config/template layer creates three risks:
- Fresh worktrees copy stale contract defaults from
config.template.mjs.
- Consumers and tests keep treating
resources/content/issue-archive as a supported path after Phase 6 removes the folder.
unversioned remains a config-supported archive bucket even though the archive structure must use real release versions only.
Acceptance Criteria
Out of Scope
- PR #11362 data cleanup and manifest-generation fixes.
- MetadataManager / PullRequestSyncer
archiveVersion propagation cleanup; that is Pocket B and should be handled by a separate ticket.
- Recursive archive ingestion for IssueIngestor / graph sources; that is already tracked by #11361.
- Release publishing mechanics in
buildScripts/release/publish.mjs unless a direct config consumer is discovered.
Avoided Traps
- Do not bundle this into #11360 / #11362; those already have enough blast radius.
- Do not keep
archiveDir for backward compatibility without a measured sunset condition.
- Do not treat
unversioned as a release version.
- Do not remove consumer code blindly; first prove whether it is runtime contract, historical fallback, or test-only scaffolding.
Related
- Parent epic: #11187
- Rescue strategy: Discussion #11359
- Immediate cleanup ticket: #11360
- Current cleanup PR: #11362
- Existing archive-ingestion follow-up: #11361
- Historical config completeness context: #10209
Origin Session
- Origin Session ID: d6d89930-f408-42a0-b60e-ec4487a8cc46
Retrieval Hint
Search for archiveDir defaultArchiveVersion unversioned gh-workflow config Phase 6.
Context
Epic #11187 Phase 6 is rescuing the
resources/contentarchive substrate from staleissue-archive/pr-archive/unversionedassumptions. Discussion #11359 and PR #11362 narrow the immediate data cleanup, but live V-B-A on the gh-workflow config surface shows a separate contract pocket still outside #11360 / #11362 scope.Current branch evidence:
ai/mcp/server/github-workflow/config.mjsstill exposesissueSync.archiveDirpointing atresources/content/issue-archive.ai/mcp/server/github-workflow/config.template.mjsexposes the same legacyarchiveDirfallback.defaultArchiveVersion: 'unversioned'.issueSync.archiveDirreferences inIssueSyncer.mjs,LocalFileService.mjs, and related unit tests.This is a config-contract cleanup ticket, not another data-migration ticket. The goal is to prevent the deleted legacy folders and the invalid
unversionedbucket from remaining alive as official gh-workflow configuration.Problem
archiveRootis the intended versioned archive root. KeepingarchiveDiranddefaultArchiveVersionin the public config/template layer creates three risks:config.template.mjs.resources/content/issue-archiveas a supported path after Phase 6 removes the folder.unversionedremains a config-supported archive bucket even though the archive structure must use real release versions only.Acceptance Criteria
ai/mcp/server/github-workflow/config.mjsno longer exposesissueSync.archiveDirorissueSync.defaultArchiveVersionas part of the public gh-workflow config contract.ai/mcp/server/github-workflow/config.template.mjsis kept in sync withconfig.mjsand no longer seedsarchiveDirordefaultArchiveVersioninto fresh clones/worktrees.issueSync.archiveDiris audited. Consumers are either removed, rewritten to derive fromarchiveRoot, or given a narrowly documented transitional fallback that does not requireresources/content/issue-archiveto exist at boot.archiveDirordefaultArchiveVersionas mandatory config keys.rg "defaultArchiveVersion|issueSync\.archiveDir|resources/content/issue-archive|unversioned" ai/mcp/server/github-workflow ai/services/github-workflow test/playwright/unit/ai/services/github-workflow -g "*.mjs"shows no active config-contract fallback. Historical comments or tests may remain only when they describe the retired behavior and cannot steer runtime paths.resources/content/issue-archive.Out of Scope
archiveVersionpropagation cleanup; that is Pocket B and should be handled by a separate ticket.buildScripts/release/publish.mjsunless a direct config consumer is discovered.Avoided Traps
archiveDirfor backward compatibility without a measured sunset condition.unversionedas a release version.Related
Origin Session
Retrieval Hint
Search for
archiveDir defaultArchiveVersion unversioned gh-workflow config Phase 6.