Track legacy localization tail in readiness dashboard

This commit is contained in:
Affaan Mustafa
2026-05-17 14:45:41 -04:00
parent 7b2f0125bb
commit f397216aa0
7 changed files with 101 additions and 13 deletions

View File

@@ -131,9 +131,20 @@ test('legacy command shim table tracks the current archive contents', () => {
test('stale salvage backlog records the remaining manual-review tail', () => {
const source = read('docs/legacy-artifact-inventory.md');
assert.ok(source.includes('#1687 zh-CN localization tail'));
for (const pr of [
'#1687 zh-CN localization tail',
'#1609 Persian README translation',
'#1563 zh-TW README sync',
'#1564 Turkish README sync',
'#1565 pt-BR README sync',
]) {
assert.ok(source.includes(pr), `Missing manual-review inventory row for ${pr}`);
}
assert.ok(source.includes('Translator/manual review'));
assert.ok(source.includes('#1746-#1752'));
assert.ok(source.includes('ITO-55'));
assert.ok(source.includes('no automatic import remains release-blocking'));
});
if (failed > 0) {

View File

@@ -88,7 +88,9 @@ test('stale PR salvage ledger keeps localization tails manual-review only', () =
assert.ok(source.includes('#1609 Persian README translation'));
assert.ok(source.includes('#1563 zh-TW README sync'));
assert.ok(source.includes('translator/manual review'));
assert.ok(source.includes('Linear ITO-55'));
assert.ok(source.includes('Do not import stale top-level docs'));
assert.ok(source.includes('not a release-blocking salvage task'));
});
test('legacy inventory and roadmap link to the durable salvage ledger', () => {
@@ -97,7 +99,10 @@ test('legacy inventory and roadmap link to the durable salvage ledger', () => {
assert.ok(inventory.includes('docs/stale-pr-salvage-ledger.md'));
assert.ok(roadmap.includes('docs/stale-pr-salvage-ledger.md'));
assert.ok(roadmap.includes('#1687 translator/manual'));
assert.ok(roadmap.includes('#1687, #1609, #1563, #1564'));
assert.ok(roadmap.includes('Linear ITO-55'));
assert.ok(roadmap.includes('#1609'));
assert.ok(roadmap.includes('no automatic import remains release-blocking'));
});
test('stale PR salvage ledger records the May 12 gap pass', () => {

View File

@@ -77,7 +77,26 @@ function seedRepo(rootDir, overrides = {}) {
].join('\n'),
'docs/HERMES-SETUP.md': 'Hermes setup',
'skills/hermes-imports/SKILL.md': 'Hermes imports',
'docs/stale-pr-salvage-ledger.md': 'Manual review tail',
'docs/stale-pr-salvage-ledger.md': [
'Remaining Manual-Review Backlog',
'Linear ITO-55',
'#1687 zh-CN localization tail',
'#1609 Persian README translation',
'#1563 zh-TW README sync',
'#1564 Turkish README sync',
'#1565 pt-BR README sync',
'not a release-blocking salvage task'
].join('\n'),
'docs/legacy-artifact-inventory.md': [
'Translator/manual review',
'ITO-55',
'#1687 zh-CN localization tail',
'#1609 Persian README translation',
'#1563 zh-TW README sync',
'#1564 Turkish README sync',
'#1565 pt-BR README sync',
'no automatic import remains release-blocking'
].join('\n'),
'docs/architecture/progress-sync-contract.md': 'GitHub PRs/issues/discussions Linear project local handoff repo roadmap scripts/work-items.js',
'docs/architecture/observability-readiness.md': 'observability-readiness.js',
'docs/security/supply-chain-incident-response.md': 'TanStack Mini Shai-Hulud node-ipc scan-supply-chain-iocs.js supply-chain-advisory-sources.js',
@@ -214,7 +233,14 @@ function runTests() {
&& item.evidence.includes('unsupported npm age-key drift')
&& item.gap === 'repeat advisory/source refresh and Linear sync after each significant supply-chain batch'
)));
assert.ok(report.requirements.some(item => (
item.id === 'legacy-salvage'
&& item.status === 'current'
&& item.evidence.includes('all localization tails are attached to Linear ITO-55')
&& item.gap === 'repeat legacy scan before release'
)));
assert.ok(report.top_actions.some(item => item.id === 'naming-and-plugin-publication'));
assert.ok(!report.top_actions.some(item => item.id === 'legacy-salvage'));
} finally {
cleanup(rootDir);
}