ADR-1239 Phase B (parent #1679). Replace copyWithPathReplacement's 13 hardcoded `const isX = runtime === 'x'` flags + two ~100-line per-runtime if/else converter chains with a module-level RUNTIME_CONTENT_DISPATCH table (one entry per runtime: md transform, mdSkipGenericRewrite, mdReattributeAfter, mdTomlRenameOnCommand, js transform) + a uniform dispatch loop that applies the cross-cutting steps (path rewrite -> attribution -> stamp -> normalize) once. Byte-identical install output for all 16 runtimes (golden-parity harness #1730); codex-verified the transform order + every per-runtime quirk (gemini .toml rename, copilot/antigravity skip-generic + reattribute, qwen/hermes inline swaps, .cjs/.js fall-through) is preserved. Also folds in a pre-existing bookkeeping fix (no-defer): gsd-core/bin/lib/ cli-skew-check.cjs (tsc build artifact from #1755) was eslint-ignored but missing from .gitignore — added for consistency with the other built artifacts. Closes #1758 Co-authored-by: review-bot <review-bot@gsd> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
442 B
442 B
type, pr
| type | pr |
|---|---|
| Changed | 1759 |
Internal: copyWithPathReplacement converter selection is now data-driven — the installer's back-compat content-copy path replaced its 13 hardcoded runtime === 'x' flag chains with a single per-runtime dispatch table (ADR-1239 Phase B). Install output is byte-identical for all 16 runtimes (golden-parity asserted); no user-facing change.