M-5: define JarvisAPI.Vision.requestFrameAttach typed Result (R-003) #121

Open
opened 2026-05-12 19:37:16 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-05-12 19:37:16 +00:00 (Migrated from github.com)

Goal

Define JarvisAPI.Vision protocol. requestFrameAttach returns typed Result<FrameAttachArmed, FrameAttachError>. MUST guard let controller = frameAttachController else { return .failure(.cameraPermissionDenied) } (R-003).

Scope

  • JarvisAPI.Vision protocol
  • requestFrameAttach() -> Result<FrameAttachArmed, FrameAttachError>
  • FrameCaptureID = UUID (server-generated)
  • FrameAttachError.{cameraPermissionDenied, captureUnavailable, ...}

Files

  • packages/JarvisAPI/Sources/JarvisAPI/Surfaces/Vision.swift (new)
  • packages/JarvisAPI/Sources/JarvisAPI/Surfaces/Vision+Adapter.swift (new)

Acceptance

  • Protocol + adapter compile
  • nil controller → Result.failure(.cameraPermissionDenied), NEVER .success
  • FrameCaptureID is UUID-generated server-side

Test

S-VIS-001 (happy path within 100 ms) + S-VIS-002 (nil controller → failure).

Parent epic

#9

Source

.planning/architecture/JARVIS-API-MIGRATION-PLAN.md §2.6 (M-5.1)
.planning/architecture/REVIEW-MIGRATION-RISK.md R-003

## Goal Define JarvisAPI.Vision protocol. requestFrameAttach returns typed Result<FrameAttachArmed, FrameAttachError>. MUST guard let controller = frameAttachController else { return .failure(.cameraPermissionDenied) } (R-003). ## Scope - `JarvisAPI.Vision` protocol - `requestFrameAttach() -> Result<FrameAttachArmed, FrameAttachError>` - `FrameCaptureID` = UUID (server-generated) - `FrameAttachError.{cameraPermissionDenied, captureUnavailable, ...}` ## Files - `packages/JarvisAPI/Sources/JarvisAPI/Surfaces/Vision.swift` (new) - `packages/JarvisAPI/Sources/JarvisAPI/Surfaces/Vision+Adapter.swift` (new) ## Acceptance - [ ] Protocol + adapter compile - [ ] nil controller → `Result.failure(.cameraPermissionDenied)`, NEVER `.success` - [ ] FrameCaptureID is UUID-generated server-side ## Test `S-VIS-001` (happy path within 100 ms) + `S-VIS-002` (nil controller → failure). ## Parent epic #9 ## Source `.planning/architecture/JARVIS-API-MIGRATION-PLAN.md` §2.6 (M-5.1) `.planning/architecture/REVIEW-MIGRATION-RISK.md` R-003
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/Jarvis#121