fix(migration): re-review MAJOR (30-fix-references) — drop stale repository.directory + test the package.json branch
The /trekreview re-review's high-effort deep read of 30-fix-references.mjs surfaced 2 MAJOR (both pre-existing in the original delivery, not remediation regressions): - PLAN_EXECUTE_DRIFT: the rewriter set repository.url but left a monorepo-relative repository.directory (e.g. llm-security's plugins/llm-security) intact, so the standalone package.json/plugin.json shipped a directory pointing nowhere. Now dropped in BOTH the plugin.json (3a) and package.json (3b) object branches; idempotency preserved (gated on 'directory' in repository). - MISSING_TEST: the package.json rewrite branch only ran against voyage/llm-security but the only test used graceful-handoff (no package.json) — unguarded. Added a test driving both branches against a synthetic llm-security extract (pre-init .git, fixtures carrying repository.directory), asserting reconciliation + directory-drop on both files + idempotency. Independent code-correctness reviewer re-verified both RESOLVED, no new issue. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
fef4b33c97
commit
85a8ee345e
2 changed files with 62 additions and 7 deletions
|
|
@ -6,7 +6,9 @@
|
|||
// 2. Rewrites any remaining ../../README.md and ../../.claude-plugin/marketplace.json reference
|
||||
// (e.g. graceful-handoff README footer, linkedin-studio remediation docs) to the absolute catalog URL.
|
||||
// 3. Sets plugin.json `repository` (and package.json homepage/repository/bugs, when present) to the
|
||||
// standalone open/<plugin> HTTPS URL read from plugin-map.json.
|
||||
// standalone open/<plugin> HTTPS URL read from plugin-map.json, and DROPS any monorepo-relative
|
||||
// `repository.directory` sub-path (e.g. llm-security's "plugins/llm-security") — it points nowhere
|
||||
// once the content lives at the standalone repo root.
|
||||
// ai-psychosis already points at open/ai-psychosis (verify-only no-op, M14). Idempotent: a second run
|
||||
// rewrites zero files. Reports every file it touched. NULL push (D8) — operates only inside $WORK/<key>.
|
||||
//
|
||||
|
|
@ -62,14 +64,19 @@ async function main() {
|
|||
if (next !== orig) { await fs.writeFile(file, next, 'utf8'); changed.push(path.relative(dest, file)); }
|
||||
}
|
||||
|
||||
// 3a) plugin.json repository → standalone URL
|
||||
// 3a) plugin.json repository → standalone URL (+ drop any stale monorepo-relative repository.directory)
|
||||
const pjPath = path.join(dest, '.claude-plugin', 'plugin.json');
|
||||
if (await exists(pjPath)) {
|
||||
const pj = await readJson(pjPath);
|
||||
const cur = pj.repository && typeof pj.repository === 'object' ? pj.repository.url : pj.repository;
|
||||
if (cur !== base) {
|
||||
if (pj.repository && typeof pj.repository === 'object') pj.repository.url = base;
|
||||
else pj.repository = base;
|
||||
let touched = false;
|
||||
if (pj.repository && typeof pj.repository === 'object') {
|
||||
if (pj.repository.url !== base) { pj.repository.url = base; touched = true; }
|
||||
// A monorepo-relative repository.directory points nowhere in the standalone repo — drop it.
|
||||
if ('directory' in pj.repository) { delete pj.repository.directory; touched = true; }
|
||||
} else if (pj.repository !== base) {
|
||||
pj.repository = base; touched = true;
|
||||
}
|
||||
if (touched) {
|
||||
await fs.writeFile(pjPath, JSON.stringify(pj, null, 2) + '\n', 'utf8');
|
||||
changed.push('.claude-plugin/plugin.json');
|
||||
}
|
||||
|
|
@ -83,6 +90,8 @@ async function main() {
|
|||
if (pkg.homepage !== base) { pkg.homepage = base; touched = true; }
|
||||
if (pkg.repository && typeof pkg.repository === 'object') {
|
||||
if (pkg.repository.url !== base) { pkg.repository.url = base; touched = true; }
|
||||
// Drop any stale monorepo-relative repository.directory (points nowhere in the standalone repo).
|
||||
if ('directory' in pkg.repository) { delete pkg.repository.directory; touched = true; }
|
||||
} else if (pkg.repository && pkg.repository !== base) { pkg.repository = base; touched = true; }
|
||||
if (pkg.bugs && typeof pkg.bugs === 'object' && pkg.bugs.url !== `${base}/issues`) {
|
||||
pkg.bugs.url = `${base}/issues`; touched = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue