LabKit MATLAB Workbench

history

Gait consumes the Video Marker file contract without a sibling App dependency

id: LK-20260717-gait-app-path-isolation
date: 2026-07-17
sequence: 124
type: fix
compatibility: compatible
component: `labkit_GaitAnalysis_app` | `2.0.7 -> 2.0.8`
scope: Gait
scope: App packaging
scope: Video Marker file contract

Context

Gait Analysis correctly parsed saved Video Marker MAT documents in production, but its synthetic debug writer created those documents by calling video_marker.projectSpec, video_marker.skeletonDefinition, and video_marker.frameAnnotations. Tests added every App root to the MATLAB path, while the launcher adds only the selected App root. Debug startup could therefore pass tests and fail in a real isolated launch.

Decision and rationale

Treat the saved labkitProject payload as the boundary between the producer and consumer. Gait owns its parser, diagnostics, and synthetic consumer fixture. Video Marker owns serialization and schema validation. One explicit integration test may load both Apps to prove their current file contracts agree, but neither Gait production nor debug code may call the Video Marker package.

Changes

User and data impact

Gait debug startup and its packaged App behavior no longer depend on every public App being present on the MATLAB path. Users continue to open the same current Video Marker project and autosave MAT files; parsing, timing, calibration, gait calculations, and exports are unchanged.

Developers receive an immediate guardrail failure if a shared test path hides a new sibling-App runtime dependency.

Compatibility and migration

No project or output migration is required. Video Marker payload version 2 remains the accepted input contract.

Validation

Focused validation covers isolated debug sample generation, consumer parsing, current Video Marker producer-to-Gait import, Gait calculations and hidden GUI workflow, and the App package boundary guardrail.

Evidence

Known limitations and follow-up

The integration test protects the current saved schema, not scientific validity of manually marked trajectories. Those data and workflow checks remain App-owned.