summaryrefslogtreecommitdiffhomepage
path: root/.rules/plan/01-30-rename-namespace.md
diff options
context:
space:
mode:
Diffstat (limited to '.rules/plan/01-30-rename-namespace.md')
-rw-r--r--.rules/plan/01-30-rename-namespace.md181
1 files changed, 181 insertions, 0 deletions
diff --git a/.rules/plan/01-30-rename-namespace.md b/.rules/plan/01-30-rename-namespace.md
new file mode 100644
index 0000000..6b0e39b
--- /dev/null
+++ b/.rules/plan/01-30-rename-namespace.md
@@ -0,0 +1,181 @@
+# Phase 01 — Rename namespace
+
+**Estimated time:** ~30 minutes
+**Touches:** Every file in the gem.
+
+## Goal
+
+Rename the entire codebase from `Claude` to `MiniMax`. After this phase the
+gem still functionally targets api.anthropic.com (configuration swap is in
+phase 04) — we are only renaming the Ruby surface, files, and gemspec here.
+
+## Steps
+
+### 1. Rename source directories and files
+
+```text
+lib/dispatch/adapter/claude.rb → lib/dispatch/adapter/minimax.rb
+lib/dispatch/adapter/claude/ → lib/dispatch/adapter/minimax/
+sig/dispatch/adapter/claude.rbs → sig/dispatch/adapter/minimax.rbs
+spec/dispatch/adapter/claude/ → spec/dispatch/adapter/minimax/
+spec/dispatch/adapter/claude_spec.rb → spec/dispatch/adapter/minimax_spec.rb
+dispatch-adapter-claude.gemspec → dispatch-adapter-minimax.gemspec
+```
+
+DELETE the built-gem artifact:
+
+```text
+dispatch-adapter-claude-0.2.0.gem → DELETED
+```
+
+### 2. Rename Ruby module everywhere
+
+Replace `Dispatch::Adapter::Claude` with `Dispatch::Adapter::MiniMax`
+throughout the codebase. `MiniMax` uses CamelCase exactly as written
+(double capital).
+
+Concretely, in every `*.rb` and `*.rbs` file under `lib/`, `spec/`, `sig/`,
+`bin/`, and `examples/`:
+
+- `class Claude < Base` → `class MiniMax < Base`
+- `Dispatch::Adapter::Claude` → `Dispatch::Adapter::MiniMax`
+- `class Claude::Foo` (and similar nested forms) → `class MiniMax::Foo`
+- `Claude::VERSION` → `MiniMax::VERSION`
+- `Claude::DEFAULT_*` → `MiniMax::DEFAULT_*`
+- The `module ClaudeVersion` block in `lib/dispatch/adapter/minimax/version.rb`
+ → `module MiniMaxVersion`
+- The `ClaudeErrors` module → `MiniMaxErrors`
+
+### 3. Update `require_relative` paths in `lib/dispatch/adapter/minimax.rb`
+
+All sub-module requires must point at the new directory:
+
+```ruby
+require_relative "minimax/version"
+require_relative "minimax/errors"
+require_relative "minimax/key_store" # was token_store — rename in phase 03
+require_relative "minimax/headers"
+require_relative "minimax/pricing_table"
+require_relative "minimax/model_catalog"
+require_relative "minimax/request_builder"
+require_relative "minimax/response_builder"
+require_relative "minimax/stream_collector"
+require_relative "minimax/sse_parser"
+require_relative "minimax/http_client"
+```
+
+NOTE: At this phase `key_store` does not yet exist; the file is still named
+`token_store.rb`. Leave the require pointing at `minimax/token_store` for now
+and rename in phase 03. DO NOT delete `pkce`, `oauth`, `cloaking`,
+`usage_client`, or `rate_limit_headers` requires yet — that's phase 02.
+
+### 4. Reset the version
+
+Edit `lib/dispatch/adapter/minimax/version.rb`:
+
+```ruby
+# frozen_string_literal: true
+
+module Dispatch
+ module Adapter
+ module MiniMaxVersion
+ VERSION = "0.1.0"
+ end
+ end
+end
+```
+
+### 5. Rewrite the gemspec
+
+Edit `dispatch-adapter-minimax.gemspec`:
+
+- `spec.name` → `"dispatch-adapter-minimax"`
+- `spec.version` → `Dispatch::Adapter::MiniMaxVersion::VERSION`
+- `spec.summary` → `"MiniMax adapter for the Dispatch interface."`
+- `spec.description` → A one-paragraph description mentioning MiniMax M2.7,
+ Token Plan, Anthropic-compatible /v1/messages endpoint.
+- `spec.metadata["source_code_uri"]` and `homepage_uri` → adjust as needed
+ (leave placeholder if you don't know the new repo URL yet).
+
+Keep all existing runtime dependencies (`dispatch-adapter-interface`).
+DO NOT add new dependencies in this phase.
+
+### 6. Rename the spec helper if it references Claude
+
+`spec/spec_helper.rb` may contain `require "dispatch/adapter/claude"` —
+update to `require "dispatch/adapter/minimax"`.
+
+### 7. Update the `Gemfile` if it has explicit references
+
+The `Gemfile` should NOT need changes (it loads the gemspec dynamically),
+but verify there are no hardcoded `dispatch-adapter-claude` references.
+
+### 8. Delete the lockfile so it regenerates
+
+DELETE `Gemfile.lock`. It will regenerate on the next `bundle install`.
+
+### 9. Update `.rspec`, `Rakefile`, `README.md`, `CHANGELOG.md`
+
+For now, just rename references; the full README rewrite is phase 09.
+At minimum:
+
+- `.rspec` — usually doesn't reference the module; verify.
+- `Rakefile` — replace any `Dispatch::Adapter::Claude` references.
+- `README.md` — replace `Claude` with `MiniMax` in references; full rewrite later.
+- `CHANGELOG.md` — replace existing content with a single line:
+ ```
+ ## 0.1.0 (unreleased)
+ - Initial release: forked from dispatch-adapter-claude.
+ ```
+- `AGENTS.md` — leave for now or skip; rewriting is phase 09.
+
+### 10. Update file headers
+
+The `# Anthropic Claude adapter` style comments at the top of files should
+be updated to MiniMax equivalents where they appear (do not invent
+references; just retarget existing comments).
+
+## Acceptance criteria
+
+After completing this phase:
+
+- `grep -rn 'Dispatch::Adapter::Claude' .` (excluding `.git/`, `.rules/`,
+ `Gemfile.lock`) returns ZERO matches.
+- `grep -rn 'class Claude' lib/ spec/ sig/` returns ZERO matches.
+- `grep -rn 'ClaudeVersion\|ClaudeErrors' lib/ spec/ sig/` returns ZERO matches.
+- The file `lib/dispatch/adapter/claude.rb` does NOT exist.
+- The file `lib/dispatch/adapter/minimax.rb` exists.
+- The directory `lib/dispatch/adapter/claude/` does NOT exist.
+- The directory `lib/dispatch/adapter/minimax/` exists with the
+ ten `.rb` files (version, errors, token_store [still named that for now],
+ pkce, oauth, oauth/callback_server.rb, cloaking, headers, pricing_table,
+ model_catalog, request_builder, response_builder, stream_collector,
+ sse_parser, http_client, usage_client, rate_limit_headers).
+- `dispatch-adapter-minimax.gemspec` exists; `dispatch-adapter-claude.gemspec`
+ and `dispatch-adapter-claude-0.2.0.gem` do NOT.
+- `bundle install` runs cleanly inside the gem directory.
+
+## Verification
+
+Run `run_tests` with `project_path=reference/dispatch-adapter-minimax`.
+Both rubocop and rspec must exit 0.
+
+The specs may have many failures referencing OAuth / PKCE / cloaking
+machinery that hasn't been deleted yet — this is expected. They should
+not have failures from the rename itself (e.g. `NameError:
+uninitialized constant Dispatch::Adapter::Claude`). If a spec fails
+because of a renamed constant, fix the spec to use the new name.
+
+If specs targeting OAuth/PKCE/cloaking/usage are STILL failing after the
+rename (because the underlying code still uses Anthropic endpoints, which
+won't be reachable in test mode), that's acceptable — those specs will
+be deleted in phase 08. As long as rspec EXITS NON-ZERO only on
+test-doubles / NameError / NoMethodError that the rename caused, you can
+proceed.
+
+**HOWEVER**: rubocop MUST pass cleanly. Resolve any naming-related
+violations (e.g. `Naming/FileName` if a file's class name no longer matches
+its filename) before calling `ask_for_next_plan`.
+
+If rspec failures persist beyond rename-related causes, document them in
+the summary and proceed. Phase 02 will delete the offending code.