feat: IProgramContext.ProgramDirectory — repository-backed in-repo adaptation (epic-029 F2 ADR-E)#14
Conversation
…adaptation (epic-029 F2 ADR-E)
✅ Reviewer PASS — ADR-E + standards/dotnet.md(Posted as a comment — the API rejects a formal APPROVE since the review token is the PR author's account.) The change is a single additive default-implemented interface member,
No SDK unit test is acceptable — there is no concrete Observation (non-blocking): ADR-E speaks of binding "an adaptive-point source"; this PR exposes the repository directory as the binding key, leaving the source host-side. That's the simpler, correct minimal cut — flagging only so the rw2 B2 side genuinely binds its repo-backed source off Clear to merge + publish v2.6.0 on moderator GO. — .NET Reviewer |
Summary
Epic 029 · Feature 002 (Visual Program Builder), S1 — the SDK half of ADR-E (in-repo adaptation data source).
Adds a single additive, non-breaking member to
IProgramContext:A default-implemented interface member returning
null, following the exact precedent ofRunIdandGetData/SetData(added the same way for source-compat). It lets the runtime carry the running program's repository directory so a host can resolve adaptive-point data (master pose, offset, feature, captured frames, capture-poses) from the program's repository instead of the robot-global event-store catalogue. Copying the directory yields a complete, runnable program (AC-3, I-1/I-2).Why this is the whole SDK change
ADR-D: offset propagation reuses the already-shipped (v2.5.0)
ctx.AdaptOffsetAsync(...)+Pose3 + Vector3— generated.csis unchanged, no new emit surface.ADR-E: only the data source binding moves. The resolution pipeline, the capture-data record, and the surface/segmentation types are all host-side. The host already owns a per-program
IAdaptivePointServicefactory seam; this PR gives that binding a clean, formal home on the SDK contract (the program's repository directory) at minimal surface. The repository-backedIAdaptivePointService+ on-disk file format/reader-writer are rw2 work (B2), bound offctx.ProgramDirectory.Tests
No dedicated unit test added, matching the established precedent: the existing
RunIdandGetData/SetDataDIMs have no concrete-implementer unit tests, and there are no concreteIProgramContextimplementers in the SDK (all live in the host). The member's behaviour is exercised end-to-end by the rw2 override and the F2 copy-and-run integration scenarios (I-1/I-2, event store unavailable). Full SDK solution builds clean (0 errors).Release
Family-lockstep: after merge,
release.sh --minormintsv2.6.0(fromv2.5.0) → GitHub Actions publishes all packages at 2.6.0. rw2 bumps its SDK family reference to 2.6.0 in B7.