Configure the acquisition stage
Request one sequence
POST tohttps://rei-neuroadapt-api.reilabs.org/api/v1/domains/{domain_id}/trajectory/propose:
The reference client consumes
decision_id and actions from the response. actions is a nonempty matrix with one row per proposed command and action_dimensions columns. It also reads reference_state and reference_valid when applying an explicit geometric retargeting transform. An action proposal is not evidence that the action was executed.
Implement the application adapter
The following are application functions, not API endpoints:
For this example, normalize each actuator command to
[-1, 1]. Keep the physical mapping and 0.5-second hold duration fixed. Pad a proposal shorter than eight commands with neutral [0.0, 0.0] commands before execution. These are real applied commands and belong in the returned trace. Preserve the original proposal separately. Store physical commands alongside the native numeric coordinates so the actual applied operation is reconstructable.
Align the observation arrays
ForT commands actually executed:
The
T/T+1 alignment is enforced by the runner pattern, not fully expressed by the JSON schema. Check it before sending. For an early physical stop, return only the executed prefix. Never append unexecuted proposal rows to make the array reach the configured horizon.
If no command executed, do not send an empty or fabricated observation. Preserve the pending decision and use supported cancellation when appropriate. Keep invalid measurements separate from a valid physical attempt with a poor outcome.
Connect the loop
This code depends on the adapter hooks above and the request helper from the configuration guide. It supplies no task-solving controller or simulator.POST /domains/{domain_id}/trajectory/observe, relative to the production base. Do not send this body to generic Domain /feedback. Report neutral padding only when it actually executed. A safety stop takes precedence over completing the eight-slot window.
Validate outcome range and direction in measure_outcome. json.dumps(..., allow_nan=False) in the shared transport rejects non-finite values before dispatch. If safety logic changes an action, retain both proposal and actual execution and the reason; do not claim the original proposal was executed unchanged.
Revisit an acquired context
The optional context workflow asks the learner for a retained acquisition reference:POST /domains/{domain_id}/trajectory/context. The client reads response.request; when non-null, it uses request.record_id to restore the associated environment context and supplies that same ID as acquisition_reference in the next proposal.
Maintain an authoritative native-record-ID to local-reset mapping. Record IDs are not guaranteed to equal attempt counters. If the mapping is unavailable, do not invent it. Ordinary reset sampling can continue without this optional context-revisit feature.