M-5: harness scenarios S-VIS-001..006 (B-03 dissolution via WKWebView round-trip) #125

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

Goal

File harness scenarios S-VIS-001..006 including requestFrameAttach returning FrameAttachArmed within 100 ms; nil-controller → cameraPermissionDenied (R-003); 5s frameExpired deterministic via ManualClock (G-002). BOTH transport modes mandatory — .jsonRoundTripWebView is non-skippable for S-VIS-001 (B-03 dissolution gate).

Scope

  • 6 scenarios with deterministic assertions
  • S-VIS-001 happy path (100 ms latency assertion)
  • S-VIS-002 nil controller → .cameraPermissionDenied
  • S-VIS-003 5s frameExpired via ManualClock
  • S-VIS-004 cancelFrameAttach blocks expiry
  • S-VIS-005 late-connect hydration via getFrameAttachState
  • S-VIS-006 frameSent(turnId, captureId) correlation
  • Both transport modes; .jsonRoundTripWebView non-skippable for S-VIS-001

Files

  • packages/Harness/Tests/HarnessTests/VisionScenarioTests.swift (new)

Acceptance

  • 6 scenarios filed
  • All run in both transport modes
  • S-VIS-001 non-skippable in .jsonRoundTripWebView
  • All green
  • Closes #48 (B-03)

Test

swift test --package-path packages/Harness --filter VisionScenarioTests green.

Parent epic

#9

Source

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

## Goal File harness scenarios S-VIS-001..006 including requestFrameAttach returning FrameAttachArmed within 100 ms; nil-controller → cameraPermissionDenied (R-003); 5s frameExpired deterministic via ManualClock (G-002). BOTH transport modes mandatory — .jsonRoundTripWebView is non-skippable for S-VIS-001 (B-03 dissolution gate). ## Scope - 6 scenarios with deterministic assertions - `S-VIS-001` happy path (100 ms latency assertion) - `S-VIS-002` nil controller → `.cameraPermissionDenied` - `S-VIS-003` 5s `frameExpired` via ManualClock - `S-VIS-004` `cancelFrameAttach` blocks expiry - `S-VIS-005` late-connect hydration via `getFrameAttachState` - `S-VIS-006` `frameSent(turnId, captureId)` correlation - Both transport modes; `.jsonRoundTripWebView` non-skippable for `S-VIS-001` ## Files - `packages/Harness/Tests/HarnessTests/VisionScenarioTests.swift` (new) ## Acceptance - [ ] 6 scenarios filed - [ ] All run in both transport modes - [ ] `S-VIS-001` non-skippable in `.jsonRoundTripWebView` - [ ] All green - [ ] Closes #48 (B-03) ## Test `swift test --package-path packages/Harness --filter VisionScenarioTests` green. ## Parent epic #9 ## Source `.planning/architecture/JARVIS-API-MIGRATION-PLAN.md` §2.6 (M-5.5) `.planning/architecture/REVIEW-MIGRATION-RISK.md` R-003, R-015
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/Jarvis#125