| 1 | # AVLN2000 Recovery Checklist (NuGet + родительские submodules) |
| 2 | |
| 3 | ## Purpose |
| 4 | |
| 5 | Run this checklist when `AVLN2000` reappears after a known fix was already made in **`AIGuiders.AvaloniaEdit`** (или в исходниках форка), or when parent repos show unexpected submodule drift for **`cascade-ide` itself**. |
| 6 | |
| 7 | **Важно:** в репозитории CascadeIDE **нет** субмодуля `externals/avaloniaedit` — редактор подключается **NuGet-пакетами** (`CascadeIDE.csproj`). Патчи в исходниках ведут в отдельном клоне форка (типичный путь машины: **`D:\Experiments\AvaloniaEdit`** → push → публикация на nuget.org → bump версии пакетов в `CascadeIDE.csproj`). |
| 8 | |
| 9 | Root cause pattern для **родителей** `open` / workspace: `cascade-ide` fix exists in one remote/history, but parent repos still reference an older gitlink, or `main` differs across remotes. |
| 10 | |
| 11 | ## Preconditions |
| 12 | |
| 13 | - You have access to all `cascade-ide` remotes used by the team (for example: `origin`, `github`, `wissance`). |
| 14 | - You are in a clean state (or have stashed WIP) in each repo before sync. |
| 15 | |
| 16 | ## Checklist |
| 17 | |
| 18 | 1. **Verify `main` parity inside `cascade-ide`** |
| 19 | - `git fetch --all --prune` |
| 20 | - `git checkout main` |
| 21 | - `git pull --ff-only` |
| 22 | - Compare remote heads: |
| 23 | - `git rev-parse main` |
| 24 | - `git rev-parse origin/main` |
| 25 | - `git rev-parse github/main` (if configured) |
| 26 | - `git rev-parse wissance/main` (if configured) |
| 27 | - All hashes for `main` must match. |
| 28 | |
| 29 | 2. **Publish missing commits from `cascade-ide/main`** |
| 30 | - If local `main` contains needed fix not present on one of remotes: |
| 31 | - `git push <remote> main` |
| 32 | - Repeat until all remotes point to the same `main` commit. |
| 33 | |
| 34 | 3. **Update gitlink in parent repo `open`** |
| 35 | - In `Financial/software/open`: |
| 36 | - `git submodule update --init --recursive` |
| 37 | - `cd cascade-ide` and checkout the synced `main` commit |
| 38 | - `cd ..` |
| 39 | - `git add cascade-ide` |
| 40 | - `git commit -m "chore(submodules): bump cascade-ide"` |
| 41 | - `git push` |
| 42 | |
| 43 | 4. **Update gitlink in workspace root parent (if used)** |
| 44 | - In the workspace root repo (for example `PersonalCursorFolder`), bump pointer to `Financial/software/open` the same way: |
| 45 | - `git add Financial/software/open` |
| 46 | - `git commit -m "chore(submodules): bump open"` |
| 47 | - `git push` |
| 48 | |
| 49 | 5. **Validate build on clean state** |
| 50 | - `git submodule update --init --recursive` |
| 51 | - Clean build: |
| 52 | - `dotnet build CascadeIDE.sln -c Debug` |
| 53 | - Confirm `AVLN2000` does not reproduce. |
| 54 | |
| 55 | ## Fast diagnosis commands |
| 56 | |
| 57 | - Show remotes: `git remote -v` |
| 58 | - Show current submodule pointer in parent: `git ls-tree HEAD cascade-ide` |
| 59 | - Show submodule status in parent: `git submodule status` |
| 60 | - Detect dirty submodule in parent status: `git status` |
| 61 | |
| 62 | ## Completion criteria |
| 63 | |
| 64 | - `cascade-ide/main` is equal across active remotes. |
| 65 | - Parent gitlinks (`open`, then workspace root if applicable) are bumped and pushed. |
| 66 | - Fresh recursive checkout builds without `AVLN2000`. |
| 67 | |