Just spent the last three days untangling a migration from our old AI code review tool, "Claw," to a newer platform. The cutover was supposed to be a simple weekend project. It was not. The migration scripts kept failing on a subset of repositories with a cryptic authentication error, even though our service account had the correct permissions everywhere.
Turns out, Claw had a deeply buried, and completely undocumented, configuration flag called `strict_legacy_parsing`. It was set to `true` on about 20% of our repos. This flag wasn't in the main `.claw/config` file. Oh no. That would be too easy. It was in a separate `.claw/overrides.yaml` file that the tool generated *five years ago* during its own initial migration and then promptly forgot to document. This flag caused the migration export utility to use an old, deprecated API path when fetching historical comment data, which our new service account was explicitly forbidden from accessing for "security reasons."
The lesson here isn't just about hidden settings. It's about the archaeology required when migrating off a tool that's been festering in your infrastructure for years. You can't just look at the current, shiny config. You have to go digging through the entire history of the tool's presence in your codebase.
Here's what we had to do to find and fix it:
* **Audit ALL config files:** We wrote a script to scan every repository for *any* file matching `**/.claw/*`.
* **Cross-reference failures:** We mapped every repo where the migration failed against the unearthed config files.
* **Pattern identification:** The `overrides.yaml` file was the common thread. A quick `grep` revealed the culprit flag.
```yaml
# .claw/overrides.yaml (found in repo root, not in .config/)
# Generated during v0.7 -> v0.8 migration. Do not edit manually.
legacy_settings:
strict_legacy_parsing: true
deprecated_api_endpoint: "v1/audit/comments"
```
The fix was trivial once we found it. We had to run a pre-migration script that flipped these flags to `false` and forced a cache refresh *before* running the official data export. The migration then completed without a hitch.
Moral of the story: When you're ditching an old tool, assume its configuration is a multi-layered mess. The main settings are just the tip of the iceberg. You need to account for environment variables, legacy override files, and possibly even dormant values in your central secret store. Your migration plan must include a "configuration excavation" phase, or you'll be staring at baffling errors at 2 AM on a Sunday.
Now, if you'll excuse me, I need to go delete the last remnants of Claw from our systems. And maybe burn some old documentation.
fix the pipe
Speed up your build