# Hermes Update Autostash Triage `hermes update` auto-stashes local changes before pulling. These accumulate as `stash@{N}` with the naming pattern: ``` hermes-update-autostash-YYYYMMDD-HHMMSS ``` ## Triage Workflow ### Step 1: List all stashes ```bash git stash list ``` ### Step 2: Quick scan each stash — file types matter ```bash git stash show stash@{N} --stat ``` **Lock-file-only stashes** (only `package.json`, `package-lock.json`, `ui-tui/package-lock.json`): - Usually npm dependency resolution artifacts (registry mirror switches, peer dependency reclassification) - Safe to drop: `git stash drop stash@{N}` **Source-code stashes** (`.py`, `.ts`, `.tsx` files changed): - Need detailed analysis — these may contain valuable local features ### Step 3: For source-code stashes — compare against current code Don't just `git stash pop`. First check if the features were already merged upstream: ```bash # Get the full diff git stash show -p stash@{N} # For each key feature, search current code: grep -n "feature_keyword" path/to/file.py ``` **Classification:** - ✅ Already in current code → safe to drop - ❌ Missing from current code → candidate for restoration ### Step 4: Decision matrix | Stash type | Action | |------------|--------| | Lock files only | Drop immediately | | Source code, all features merged | Drop | | Source code, some features missing | Selective restore (cherry-pick specific hunks) or apply + resolve conflicts | | Source code, all features missing | `git stash apply stash@{N}` then test | ### Pitfalls - **Don't blindly pop stashes on an active branch** — always `apply` first (preserves stash), test, then `drop` if good. - **Registry mirror changes in lock files** (npmmirror.com, mirrors.tencentyun.com) are local environment artifacts, not valuable code. Drop them. - **`peer: true` removal** in lock files = npm re-resolved peer deps as direct deps. Not meaningful. - **5+ day old stashes** with source changes are likely abandoned experiments. Check if the user still needs them before restoring. - **Merge conflicts** are common after 5+ days — upstream moves fast. Expect to resolve manually. ### Restoring selectively If only some hunks from a stash are needed: ```bash # Apply but don't drop git stash apply stash@{N} # Review conflicts git diff # Or use interactive checkout for specific files git checkout stash@{N} -- path/to/specific/file.py ```