fix(engine): defend autostash drop against TOCTOU race
dropAutostashBySha resolved SHA→stash@{N} then ran git stash drop ${ref}
non-atomically. Any other process (interactive shell, parallel merger,
fix-agent) pushing a stash between resolve and drop shifted the index, so
we silently dropped the wrong entry while leaving ours behind. The task
log then claimed "Restored pre-merge autostash X cleanly" even though the
stash was still in the list — observed on FN-3558 (e81e922) and others.
Verify the ref still resolves to our SHA via git rev-parse before dropping;
on mismatch, re-resolve and retry up to 5x. Return success/failure so the
caller can record honest status to the task feed instead of unconditionally
logging "cleanly".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1150,6 +1150,16 @@ Read-only board/task card projection plugin for Even Realities companion flows.
|
||||
- Demonstrates: plugin routes protected with API-key auth, store reads via `ctx.taskStore`, and card-deck projection helpers
|
||||
- Features: `GET /board/cards`, `GET /board`, and `GET /tasks/:id/cards` endpoints with compact card payloads
|
||||
|
||||
### [Even Realities Glasses Plugin](../../plugins/fusion-plugin-even-realities-glasses/)
|
||||
|
||||
Task-focused card bridge plugin for Even Realities glasses companion flows.
|
||||
|
||||
- Features: quick capture text into new tasks via the plugin route
|
||||
- Features: polling-based task transition notifications on configured columns (default `in-review`)
|
||||
- Features: agent actions for start work (`in-progress`) and request review (`in-review`), gated by `enableAgentActions`
|
||||
- Demonstrates: settings schema for `fusionApiBaseUrl`, `fusionApiToken`, `glassesDeviceId`, `pollingIntervalSeconds`, `notifyOnColumns`, `quickCaptureDefaultColumn`, and `enableAgentActions`
|
||||
- Demonstrates FN-3737-aligned display limits: `EVEN_CARD_MAX_CHARS_PER_LINE = 28`, `EVEN_CARD_MAX_LINES_PER_CARD = 8`, `EVEN_CARD_MAX_DECK_SIZE = 12`
|
||||
|
||||
### Installing Example Plugins from Settings
|
||||
|
||||
All example plugins can be installed via the dashboard Settings → Plugins UI:
|
||||
|
||||
Reference in New Issue
Block a user