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

@@ -324,8 +324,8 @@ As of 2026-05-17:
and classifies `legacy-command-shims/` as an opt-in archive/no-action
surface.
- `docs/stale-pr-salvage-ledger.md` records stale PR salvage outcomes,
skipped PRs, superseded work, and the remaining #1687 translator/manual
review tail.
skipped PRs, superseded work, and the remaining #1687, #1609, #1563, #1564,
and #1565 translator/manual review tail now attached to Linear ITO-55.
- AgentShield PR #53 reduced two context-rule false positives and closed the
remaining AgentShield issues.
- AgentShield PR #55 added GitHub Action organization-policy enforcement with
@@ -625,7 +625,7 @@ is not complete unless the evidence column exists and has been freshly verified.
| Keep public issues below 20 | Repo-family issue recheck | 0 open issues across `everything-claude-code`, AgentShield, JARVIS, `ECC-Tools/ECC-Tools`, and `ECC-Tools/ECC-website` on 2026-05-17; #1951 closed with #1953 | Complete |
| Manage repository discussions | Repo-family discussion recheck | Platform audit reports 0 discussion maintainer-touch gaps and 0 answerable Q&A missing accepted answers; trunk still has 58 total discussions | Complete |
| Manage PR discussions | PR review/comment closure plus merge/close state | ECC #1961, #1963, and #1953 merged after maintainer validation; no open tracked PRs remain | Complete |
| Salvage useful stale work | `docs/stale-pr-salvage-ledger.md` | Ledger records salvaged, superseded, skipped, and manual-review tails; #1815-#1818 added cost tracking, skill scout, frontend design guidance, code-reviewer false-positive guardrails, and the May 12 gap pass | Complete except translation/manual review tail |
| Salvage useful stale work | `docs/stale-pr-salvage-ledger.md` plus `docs/legacy-artifact-inventory.md` | Ledger records salvaged, superseded, skipped, and manual-review tails; #1815-#1818 added cost tracking, skill scout, frontend design guidance, code-reviewer false-positive guardrails, and the May 12 gap pass; #1687, #1609, #1563, #1564, and #1565 localization tails are attached to Linear ITO-55 for language-owner review and no automatic import remains release-blocking | Complete; repeat legacy scan before release |
| ECC 2.0 preview pack ready | Release docs, quickstart, publication readiness, release notes | `docs/releases/2.0.0-rc.1/` and readiness docs are in-tree; May 17 evidence records queue-zero state, localized docs merge, supply-chain recheck, lint/test/security gates, operator dashboard, and successful GitHub CI on `99dd6ac0` | Needs final clean-checkout release approval |
| Hermes specialized skills included safely | Hermes setup/import docs and sanitized skill surface | Hermes setup and import playbook are public; secrets stay local | Needs final release review |
| Naming and rename readiness | Naming matrix across package/plugin/docs/social surfaces | `docs/releases/2.0.0-rc.1/naming-and-publication-matrix.md` records current package, repo, Claude plugin, Codex plugin, OpenCode, and npm availability evidence | Complete for rc.1; post-rc rename remains future work |

View File

@@ -54,7 +54,11 @@ Expected result:
| `_legacy-documents-*` directories | Archive/no-action | No matching directories exist in the tracked checkout as of 2026-05-12. | Re-run the scan before release. If any appear, add each directory to this table before publishing. |
| `legacy-command-shims/` | Archive/no-action | `legacy-command-shims/README.md` states these retired short-name shims are opt-in and no longer loaded by the default plugin command surface. | Keep as an explicit compatibility archive. Do not move these back into the default plugin surface without a migration decision. |
| Closed-stale PR salvage ledger | Landed | `docs/stale-pr-salvage-ledger.md` records useful stale work recovered through maintainer PRs. | Continue using the ledger pattern for future stale closures. |
| #1687 zh-CN localization tail | Translator/manual review | Large safe subsets landed in #1746-#1752; remaining pieces require translator/manual review per salvage ledger. | Do not blindly cherry-pick. Split by docs, commands, agents, and skills if a translator review lane opens. |
| #1687 zh-CN localization tail | Translator/manual review | Large safe subsets landed in #1746-#1752; remaining pieces are attached to Linear ITO-55 for language-owner review. | Do not blindly cherry-pick. Split by docs, commands, agents, and skills if a translator review lane opens; no automatic import remains release-blocking. |
| #1609 Persian README translation | Translator/manual review | Recorded in the stale salvage ledger and attached to Linear ITO-55 for language-owner review. | Do not import stale README/version/count text without a Persian reviewer and a current catalog refresh. |
| #1563 zh-TW README sync | Translator/manual review | Recorded in the stale salvage ledger and attached to Linear ITO-55 for language-owner review. | Do not import stale README/version/count text without a zh-TW reviewer and a current catalog refresh. |
| #1564 Turkish README sync | Translator/manual review | Recorded in the stale salvage ledger and attached to Linear ITO-55 for language-owner review. | Do not import stale README/version/count text without a Turkish reviewer and a current catalog refresh. |
| #1565 pt-BR README sync | Translator/manual review | Recorded in the stale salvage ledger and attached to Linear ITO-55 for language-owner review. | Do not import stale README/version/count text without a pt-BR reviewer and a current catalog refresh. |
## Workspace-Level Legacy Repos

View File

@@ -122,7 +122,9 @@ porting.
## Remaining Manual-Review Backlog
The remaining plausibly useful backlog is translation/localization work that is
unsafe to auto-port without language-owner review:
unsafe to auto-port without language-owner review. This tail is attached to
Linear ITO-55 and is not a release-blocking salvage task; release work should
only verify that the backlog remains recorded and excluded from blind imports:
- #1687 zh-CN localization tail
- #1609 Persian README translation

View File

@@ -243,6 +243,14 @@ function includesAll(text, needles) {
return needles.every(needle => text.includes(needle));
}
const LOCALIZATION_MANUAL_REVIEW_TAIL = [
'#1687 zh-CN localization tail',
'#1609 Persian README translation',
'#1563 zh-TW README sync',
'#1564 Turkish README sync',
'#1565 pt-BR README sync',
];
function hasLegacySalvageTracking({ stalePrSalvage, legacyInventory, roadmap }) {
return stalePrSalvage.includes('Manual review tail')
|| stalePrSalvage.includes('Remaining Manual-Review Backlog')
@@ -251,6 +259,39 @@ function hasLegacySalvageTracking({ stalePrSalvage, legacyInventory, roadmap })
|| roadmap.includes('ITO-55');
}
function hasAttachedLegacyManualReviewTail({ stalePrSalvage, legacyInventory, roadmap }) {
return stalePrSalvage.includes('Linear ITO-55')
&& legacyInventory.includes('ITO-55')
&& roadmap.includes('ITO-55')
&& LOCALIZATION_MANUAL_REVIEW_TAIL.every(item => (
stalePrSalvage.includes(item) && legacyInventory.includes(item)
));
}
function legacySalvageStatus(context) {
if (hasAttachedLegacyManualReviewTail(context)) {
return 'current';
}
return hasLegacySalvageTracking(context) ? 'in_progress' : 'not_complete';
}
function legacySalvageEvidence(context) {
if (hasAttachedLegacyManualReviewTail(context)) {
return 'legacy salvage ledger and inventory are current; all localization tails are attached to Linear ITO-55 for manual language-owner review';
}
return 'legacy salvage ledger and ITO-55 tracking are present';
}
function legacySalvageGap(context) {
if (hasAttachedLegacyManualReviewTail(context)) {
return 'repeat legacy scan before release';
}
return 'final translation/manual-review tail remains';
}
function hasAgentShieldEnterpriseTracking(roadmap) {
return roadmap.includes('AgentShield Enterprise Iteration')
&& (
@@ -396,6 +437,7 @@ function buildRequirements(rootDir, platformReport) {
const supplyChainWorkflow = readText(rootDir, '.github/workflows/supply-chain-watch.yml');
const packageJson = readPackage(rootDir);
const scripts = packageJson.scripts || {};
const legacyContext = { stalePrSalvage, legacyInventory, roadmap };
const githubLive = !platformReport.github.skipped && platformReport.github.totals.errors === 0;
const queuesCurrent = githubLive
@@ -518,11 +560,9 @@ function buildRequirements(rootDir, platformReport) {
'legacy-salvage',
'Audit, prune, or attach legacy work',
'docs/stale-pr-salvage-ledger.md and legacy inventory',
hasLegacySalvageTracking({ stalePrSalvage, legacyInventory, roadmap })
? 'in_progress'
: 'not_complete',
'legacy salvage ledger and ITO-55 tracking are present',
'final translation/manual-review tail remains'
legacySalvageStatus(legacyContext),
legacySalvageEvidence(legacyContext),
legacySalvageGap(legacyContext)
),
buildRequirement(
'linear-roadmap-and-progress',

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);
}