confirmed_execution to compare sequences that Core has already acquired. Each comparison executes the candidates in your environment and returns measured objectives. The application supplies repeatable contexts; Core supplies the candidates and retains the selected execution.
This guide continues the two-axis example in Configuration. It uses the same post, trajectory, and create_stage helpers, ACQUISITION_DOMAIN, and PREFIX. The application observes [x, y, vx, vy], accepts two normalized command values in [-1, 1], and holds each command for 0.5 seconds.
Export the acquired executions
Finish pending acquisition observations and stop acquisition writes before exporting. Retrieve every page, retain the API-generated record IDs, and carry the returnedincumbent_id into the next configuration.
records, total, and incumbent_id. Each execution carries id, actions, initial_state, and its initial measurement validity (initial_valid). Preserve these fields during transfer. Do not replace the returned IDs with array positions or manufacture a new incumbent.
These later Domains start with the acquired executions explicitly transferred into them. Create a separate Domain for each intervention so that each stage’s configuration and selected result remain inspectable.
Configure a structural stage
selection compares acquired executions. deletion tests removing commands. ordering tests command order. In all three cases, execute the returned candidates and report their outcomes before accepting the stage’s selected execution.
state_dimensions, action_dimensions, or action-bound fields. It receives the actual acquired execution records. Keep the action adapter and its bounds consistent with acquisition.
Make contexts repeatable
Acontext_id is an application identifier, not a state vector or a command to reset the environment. Your application must map it to a reproducible scenario, including its initial position, velocity, target, and relevant environment randomness. Reset that scenario before every candidate execution.
The following adapter illustrates the required boundary. reset_from_context_id and the returned environment object’s methods are application hooks, not Adapt-1 SDK methods. Implement them for your simulator or device. The neutral-padding rule shown here must also be used during acquisition: each trial has eight command slots, and a shorter candidate spends the remaining slots under the declared neutral command.
0.05 metres and speed at most 0.1 metres/second at the declared assessment time, with safety stops returning False. hold_command must stop physical actuation after a terminal event; further calls must not restart the device or simulator.
Run nomination and confirmation
Use one set of contexts for nomination, then a separate set for confirmation. For each proposal, evaluate every returned candidate on every supplied context. The candidate count can change between proposals; derive it from the response each time.propose request requires state and goal. For these structural comparisons, the client pattern uses an exported execution’s initial_state and the placeholder goal [0.0]; measured objectives supply the comparison outcome. The placeholder is not the environment’s target. The target is part of each reset context.
request_id identifies the proposal. Calling it nomination-v1 does not set a phase flag: there is no phase field in this request. Complete the first proposal’s observation before requesting the confirmation comparison.
The candidate_index is the position in that proposal’s candidates array. It is distinct from an execution record’s id. Keep the returned decision_id attached to the entire result batch. Do not submit only a winner, an average, or a partial candidate/context matrix.
Each outcome requires candidate_index (integer, 0–4095), context_id (a nonblank string of at most 128 characters), and objectives (a numeric vector). Send one objective per configured name, in that exact order. The request schema allows 1–32768 outcome rows; numeric values must be finite and within [-1e12, 1e12]. The single completion objective in this example is 0.0 or 1.0.
If execution is interrupted, preserve the proposal and measurements so that you can finish the batch. If you abandon it, cancel the pending decision using trajectory(domain, "cancel", {"decision_id": decision_id}); cancellation supplies no learning outcome.
Carry the selected execution into the next stage
Register the context IDs below in your application before running this loop. Each ID must resolve to its own saved scenario. The nomination and confirmation sets are disjoint, and the next intervention starts in a new Domain.selected_execution unchanged. It does not sort candidates by its own aggregate metric and choose a replacement. Keep base_execution available for the next stage: Contextual refinement.