Skip to content

docs: add Varar rename migration plan - #41

Closed
aslakhellesoy wants to merge 13 commits into
mainfrom
claude/plan-dotnet-port-q83reg
Closed

docs: add Varar rename migration plan#41
aslakhellesoy wants to merge 13 commits into
mainfrom
claude/plan-dotnet-port-q83reg

Conversation

@aslakhellesoy

@aslakhellesoy aslakhellesoy commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Superseded by #42, which targets rename-to-varar as its base so the diff is only the six .NET (C#) port planning docs. Closing to avoid confusion — this PR pointed the same branch at main, which pulled in the whole unmerged rename (963 files).

Aslak Hellesøy and others added 13 commits July 18, 2026 19:23
Full plan for renaming oselvar/var -> varar across all language ports,
release tooling, docs, and registries. Executed on the rename-to-varar branch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Package coordinates change from @oselvar/var* to the @VarAR scope with the
redundant prefix dropped: @varar/varar (facade), @varar/core, @varar/config,
@varar/language, @varar/runner, @varar/vitest, @varar/cli, @varar/lsp. The VS
Code extension becomes varar.varar (publisher varar, display name "Varar").
Subpath exports, the vitest plugin's virtual-module codegen, the init
scaffold, website config, and doc/repo URLs (github.com/oselvar/varar,
varar.dev) update to match.

BREAKING CHANGE: npm packages are renamed from the @oselvar scope to @VarAR.
Update imports: `@oselvar/var` -> `@varar/varar`, `@oselvar/var-vitest` ->
`@varar/vitest`, etc.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Distributions rename oselvar-var* -> varar* (facade `varar`, plus varar-core,
varar-config, varar-runner, varar-unittest, and the pytest plugin
`pytest-varar`). Import packages become varar, varar_core, varar_config,
varar_runner, varar_unittest, varar_pytest. Homepage -> varar.dev.

BREAKING CHANGE: PyPI distributions are renamed. Install `varar` /
`pytest-varar` instead of `oselvar-var` / `pytest-var`, and import `varar*`
instead of `var*`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
groupId com.oselvar -> dev.varar; artifactIds drop the redundant prefix
(dev.varar:varar facade, plus core, config, runner, junit, kotlin, kotest).
Java packages com.oselvar.var* -> dev.varar.*; the Kotlin leaf
com.oselvar.varkt -> dev.varar.kotlin (and .kotest). SCM/URLs -> oselvar/varar.

BREAKING CHANGE: Maven coordinates change from com.oselvar:var* to
dev.varar:* and package imports from com.oselvar.var* to dev.varar.* (Kotlin:
com.oselvar.varkt -> dev.varar.kotlin).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Gems rename oselvar-var* -> varar* (facade `varar`, plus varar-core,
varar-config, varar-runner, varar-rspec, varar-minitest). The load path moves
from oselvar/var/** to varar/**, and the module nesting Oselvar::Var::*
collapses to a top-level Varar::*. Homepage -> varar.dev.

BREAKING CHANGE: RubyGems names change from oselvar-var* to varar*; require
paths from 'oselvar/var...' to 'varar...'; and the module namespace from
Oselvar::Var to Varar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Crate + lib names, workspace members, dependency keys/paths and crate
directories move var* -> varar* (facade `varar`, plus varar-core, varar-config,
varar-runner, varar-cargotest). All crates remain publish=false; the planned
crates.io facade name becomes `varar` (the `var` name was taken).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Retarget the release scripts at the @VarAR / dev.varar / varar coordinates and
the oselvar/varar-examples sync repo (rubygems dir lookup by gemspec, maven
namespace dev.varar, open-vsx/marketplace varar.varar, 1Password npm-varar /
pypi-varar tokens, 70-varar-examples.sh). Point languages.json, the Makefile,
CI, and the badge generator at the new names and varar.dev. Reframe the front
page and README around "Varar" (Old Norse for *oaths*) while keeping the
goddess Vár; update CLAUDE.md, CONTRIBUTING, ARCHITECTURE, RELEASING, and the
package READMEs. The dated doc/superpowers and doc/adr archive is left as a
historical record.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
…to varar

The project's product tokens follow the rename: the config file
var.config.json -> varar.config.json, the drift baseline var.lock.json ->
varar.lock.json, and the JSON schema var.config.schema.json ->
varar.config.schema.json (served from varar.dev). The command-line tool is now
`varar` (varar run / varar lint / varar init) with the LSP binary varar-lsp,
and `varar init` scaffolds specs under varar-examples/.

BREAKING CHANGE: rename var.config.json -> varar.config.json and
var.lock.json -> varar.lock.json in your project, point "$schema" at
varar.config.schema.json, and invoke the CLI as `varar` instead of `var`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Rename the package container directories to match the dropped-prefix package
names: <lang>/packages/var -> varar (facade) and var-core -> core, var-config
-> config, var-language -> language, var-runner -> runner, var-vitest ->
vitest, var-cli -> cli, var-lsp -> lsp, var-vscode -> vscode, var-junit ->
junit, var-kotlin -> kotlin, var-kotest -> kotest, var-unittest -> unittest,
var-pytest -> pytest, var-rspec -> rspec, var-minitest -> minitest (Rust
varar-* -> bare too). Only directory names change — published package names,
crate names, gem names, and Maven coordinates are unaffected; workspace
members, path dependencies, module lists, and build configs are updated to
match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018FcUDtbtT4SvX2ySEN5H8n
Full-pipeline port on the CLR (no runtime sharing), gated on all four
conformance artifacts. C# owns the engine; F# is a later facade over it
(Kotlin-over-Java route, registry-only conformance). Coordinates use the
post-rename Varar scheme (NuGet Varar.*; varar.config.json; varar-examples).

- ADR 0008 (.NET port) + ADR 0009 (VSTest ITestDiscoverer/ITestExecutor adapter)
- core+facade and config+runner+adapter design specs
- two TDD task plans

Key forks (static-language precedent): injected Registrar, full-replacement
immutable Value state, [CallerFilePath]/[CallerLineNumber] call-site capture.
UTF-16 offsets expected free (C# strings are UTF-16); official
Cucumber.CucumberExpressions 20.0.0 gives exact version parity.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TZsEqbSdXCtqvKcs5cuMMj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants