Deployment profileΒΆ
FlowEdge checkpoints may carry a flowedge.deployment_profile value in the
.safetensors __metadata__ map. The value is a compact JSON object describing
the model-to-runtime contract. Profile parsing is setup-time work; the runtime
does not allocate while sampling.
Version 1 uses this shape:
{
"profile_version": 1,
"model_compatibility_version": 1,
"observation_schema_hash": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"action_dim": 8,
"action_horizon": 16,
"action_units": "normalized",
"normalization_type": "minmax",
"normalization_parameters": {
"min": [-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0],
"max": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
},
"solver_default": "euler",
"solver_min_steps": 6,
"solver_max_steps": 16
}
The profile version and model compatibility version are independent. FlowEdge
currently accepts only version 1 for each. action_dim is in the range
1..65536, action_horizon is 1..4096, and solver limits are in
1..4096 with the minimum no greater than the maximum.
observation_schema_hash is an exact sha256: prefix followed by 64 hexadecimal
digits. action_units is normalized or physical; normalization_type is
none or minmax. A minmax profile must provide finite, equal-length min
and max arrays with one strictly increasing pair per action dimension. A
none profile must provide empty normalization parameters.
Profiles are descriptive metadata. FlowEdge validates the contract but does not execute observation preprocessing. Checkpoints without a profile remain valid through the legacy compatibility path until a future profile version makes metadata mandatory.
The C++ contract is implemented in
src/core/protocol/deployment_profile.h; conversion and runtime exposure are
tracked separately in the deployment-profile issues.