---
plan: 260326-0lz
type: quick
status: complete
---

## Summary

Fixed 4 BUGSWEEPER feature gaps discovered during Phase 17 gap closure testing:

1. **Writable `lookup-modal-open`** — Changed from read-only to writable in PROPERTY_REGISTRY, added set_property match arm. Agents can now dismiss the lookup modal programmatically via `PUT /api/ui/property/lookup-modal-open {"value": false}`.

2. **Product tiles endpoint** — Added `GET /api/ui/product-tiles` returning the Slint product grid model as JSON array (name, product_id, image_hint, recipient_count, has_image, dimmed).

3. **Detail units endpoint** — Added `GET /api/ui/detail-units` returning the sidecar units model with product context (product_id, product_name, visible, units[]).

4. **Callback registry + GUIDE refresh** — The CALLBACK_REGISTRY was already updated by 17-07/17-08 executors. Updated GUIDE.md to match: removed stale ellipsis-era callbacks, documented new sidecar callbacks, added product model endpoint examples.

## Key Files

- `crates/bugsweeper/src/router.rs` — New trait methods + routes
- `crates/app/src/main.rs` — Implementations + writable lookup-modal
- `crates/bugsweeper/GUIDE.md` — Full refresh

## Commit

`bc22b72` feat(bugsweeper): writable lookup-modal, product/unit model endpoints, callback registry refresh
