{ "_comment": "Rename-aware extraction map for the polyrepo migration. Tags come from each plugin's .claude-plugin/plugin.json version (verified 2026-06-17), NOT from README/CLAUDE.md (which the migration corrects, Step 9). 11 targets = 10 plugins + the design-system. URLs are HTTPS (F2, #9740). Renamed plugins carry >=2 paths (F1). blob_strip_safe is (re)computed by 00-preflight.sh against the mirror history.", "drop": ["plugins/ultra-cc-architect/"], "targets": { "ai-psychosis": { "paths": ["plugins/ai-psychosis/"], "path_renames": { "plugins/ai-psychosis/": "" }, "tag": "v1.2.0", "repo_url": "https://git.fromaitochitta.com/open/ai-psychosis.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "node --test 'tests/**/*.test.mjs'", "standalone_caveat": "runs from repo root (relative-fixture cwd)" }, "claude-design": { "paths": ["plugins/claude-design/"], "path_renames": { "plugins/claude-design/": "" }, "tag": "v0.1.0", "repo_url": "https://git.fromaitochitta.com/open/claude-design.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "bash tests/validate-plugin.sh", "standalone_caveat": "structure check via validate-plugin.sh (no unit suite)" }, "config-audit": { "paths": ["plugins/config-audit/"], "path_renames": { "plugins/config-audit/": "" }, "tag": "v5.1.0", "repo_url": "https://git.fromaitochitta.com/open/config-audit.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "node --test 'tests/**/*.test.mjs'", "sc2_gate": "50-config-audit-sc2.sh", "standalone_caveat": "SC2 gate = full tests/**/*.test.mjs MINUS the 6-file machine-locked v5.0.0 byte-stability surface (json-backcompat, raw-backcompat, cli-humanizer, posture-humanizer, scan-orchestrator-humanizer, lint-default-output), re-seeding snapshot-default-output via UPDATE_SNAPSHOT=1 in-clone. Operator-ratified 2026-06-17 brief-correction: plan F4 named only 2 files; the verified surface is 6 (the v5.0.0 fixtures embed the original abs path AND the claude_md/plugin_hygiene scanners key off a plugins/ ancestor, so findings drift by path — not a string rewrite). DROPPED clean-room SC2 coverage = config-audit's humanizer/posture-humanizer/scan-orchestrator-humanizer prose-snapshot surface (recorded, not silent). config-audit backlog (out of migration scope): normalize the v5.0.0 fixtures' embedded paths + make scanners path-agnostic, then re-include. The 3 other v5.0.0-referencing tests (posture, scoring-humanizer, scenario-read-test) are path-independent and stay in the gate." }, "graceful-handoff": { "paths": ["plugins/graceful-handoff/"], "path_renames": { "plugins/graceful-handoff/": "" }, "tag": "v2.1.0", "repo_url": "https://git.fromaitochitta.com/open/graceful-handoff.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "node --test 'tests/**/*.test.mjs'", "standalone_caveat": "pilot candidate (low-churn, has tests, no DS, no blob bloat)" }, "human-friendly-style": { "paths": ["plugins/human-friendly-style/"], "path_renames": { "plugins/human-friendly-style/": "" }, "tag": "v1.1.0", "repo_url": "https://git.fromaitochitta.com/open/human-friendly-style.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "bash validate-plugin.generic.sh human-friendly-style", "standalone_caveat": "no unit suite — ported generic structure validator (Step 7)" }, "linkedin-studio": { "paths": ["plugins/linkedin-studio/", "plugins/linkedin-thought-leadership/"], "path_renames": { "plugins/linkedin-studio/": "", "plugins/linkedin-thought-leadership/": "" }, "tag": "v0.4.0", "repo_url": "https://git.fromaitochitta.com/open/linkedin-studio.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "node --test hooks/scripts/__tests__/*.test.mjs render/__tests__/*.test.mjs agents/__tests__/*.test.mjs", "test_cmd_advisory": "cd scripts/analytics && npm install && npm test", "standalone_caveat": "renamed from linkedin-thought-leadership (F1). SC2 two-tier (M11): .mjs core is the HARD gate (zero deps); TS analytics suite is ADVISORY (npm/network required, NOT a clean-room gate)" }, "llm-security": { "paths": ["plugins/llm-security/"], "path_renames": { "plugins/llm-security/": "" }, "tag": "v7.7.2", "repo_url": "https://git.fromaitochitta.com/open/llm-security.git", "has_vendor_ds": true, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "node --test 'tests/**/*.test.mjs'", "standalone_caveat": "single-path (CORRECTED 2026-06-17 by the S11 dry-run): llm-security-copilot was a SEPARATE, COEXISTING plugin (196 llm-security + 167 copilot paths at the SAME commits f778558d/f418a8fe, then copilot deleted) — NOT a rename ancestor. The earlier dual --path + rename-to-root collided at the coexistence commits and dropped 87 of 421 files (incl. 18 test files -> 51 e2e fails). Single-path retains ALL 421 files + 67 tests + 139 commits of llm-security history; the 3 copilot-only commits are correctly excluded (different plugin). vendors the design-system (playground)." }, "ms-ai-architect": { "paths": ["plugins/ms-ai-architect/"], "path_renames": { "plugins/ms-ai-architect/": "" }, "tag": "v1.15.0", "repo_url": "https://git.fromaitochitta.com/open/ms-ai-architect.git", "has_vendor_ds": true, "blob_strip": true, "blob_strip_safe": null, "test_cmd": "bash tests/validate-plugin.sh", "standalone_caveat": "148 MB screenshot blob-bomb (F3): single filter-repo pass strips >1MB blobs when blob_strip_safe (all under playground/screenshots/), else surgical --path-glob; vendors the design-system" }, "okr": { "paths": ["plugins/okr/"], "path_renames": { "plugins/okr/": "" }, "tag": "v1.3.0", "repo_url": "https://git.fromaitochitta.com/open/okr.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "bash validate-plugin.generic.sh okr", "standalone_caveat": "no unit suite — ported generic structure validator (Step 7). okr/templates/okr.local.md.template is intentionally tracked (SC7 allow-exception)" }, "voyage": { "paths": ["plugins/voyage/", "plugins/ultraplan-local/"], "path_renames": { "plugins/voyage/": "", "plugins/ultraplan-local/": "" }, "tag": "v5.1.1", "repo_url": "https://git.fromaitochitta.com/open/voyage.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "node --test 'tests/**/*.test.mjs'", "standalone_caveat": "renamed from ultraplan-local (F1, 136 pre-rename commits). Carries .forgejo/ISSUE_TEMPLATE/ under --path — assert it survives, no monorepo-relative refs (M17)" }, "playground-design-system": { "paths": ["shared/playground-design-system/", "shared/playground-examples/"], "path_renames": { "shared/playground-design-system/": "", "shared/playground-examples/": "playground-examples/" }, "tag": "v0.6.0", "repo_url": "https://git.fromaitochitta.com/open/playground-design-system.git", "has_vendor_ds": false, "blob_strip": false, "blob_strip_safe": null, "test_cmd": "bash -c 'test -f tokens.css && test -f base.css && test -d schemas'", "standalone_caveat": "DS source repo (the 2 consumers are llm-security + ms-ai-architect). Receives sync-design-system.mjs + test + PLAYGROUND-MAINTENANCE.md at standup (Step 4)" } } }