# ADR 0005: Authenticated development lane projection - Status: accepted for the next HoloLake desktop candidate - Date: 2026-08-17 ## Context The same-device HoloLake broker can already discover an external AI, open an expression-only visitor session, and resume a HoloLake-issued authenticated session. The local development bridge can already enforce one writer per account, but it is reachable only from the WebView command surface. As a result, an external programming carrier can be visibly connected while still being unable to acquire the HoloLake-owned development lane. The system page also cannot distinguish a connected visitor from an active development writer. ## Decision Expose acquire, inspect, and release operations for the existing local development lane through the user-only Unix broker. Every operation requires a non-visitor HoloLake session. The session account must equal the lane account, the session lane must equal the requested write lane, and the session client instance must equal the requested writer instance. A generic expression-only visitor is rejected before any lane mutation. Project the active lane and writer on the HoloLake system-details page by reading the same Rust-owned bridge state. The projection does not create authority and is not a second state store. This slice establishes the controlled writer handoff only. It does not yet provide a general shell, file mutation, patch, build, deployment, model, persona binding, or reality-execution engine. ## Why The user needs to see whether development is merely connected or has actually switched into HoloLake's single-writer environment. Reusing the existing session and writer kernels closes that gap without turning socket discovery, MCP, or a visitor message into execution authority. ## Rejected alternatives - Letting any same-device visitor acquire a write lane: discovery and expression are not authorization. - Maintaining a separate UI-only development status: it would create a second truth source. - Calling the lane handoff a complete native development container: the programming tool loop and supervised execution engine remain unimplemented. ## Evidence - `src-tauri/src/direct_local_broker.rs` - `src-tauri/src/direct_local_session.rs` - `src-tauri/src/local_development_bridge.rs` - `src/main.tsx` - `contracts/local-development-bridge.json`