Move the line-delimited JSON frames from crates/taskito-python/src/prefork/protocol.rs into crates/taskito-core/src/worker/protocol.rs so one wire format serves both the pipe and socket transports, and migrate the prefork pool onto it.
Add three frames:
| Frame |
Direction |
Payload |
hello |
executor to scheduler |
{executor_id, sdk, version, tasks[], slots} |
hello_ack |
scheduler to executor |
{scheduler_id, protocol_version} |
heartbeat |
executor to scheduler |
{free_slots} |
Payload bytes stay CBOR per crates/taskito-core/BINDING_CONTRACT.md. Protocol version mismatch is rejected at hello_ack, never silently downgraded.
Done when cargo test --workspace is green and prefork behaviour is unchanged. First phase — everything else builds on it. Plan: tasks/executor-attach.md.
Move the line-delimited JSON frames from
crates/taskito-python/src/prefork/protocol.rsintocrates/taskito-core/src/worker/protocol.rsso one wire format serves both the pipe and socket transports, and migrate the prefork pool onto it.Add three frames:
hello{executor_id, sdk, version, tasks[], slots}hello_ack{scheduler_id, protocol_version}heartbeat{free_slots}Payload bytes stay CBOR per
crates/taskito-core/BINDING_CONTRACT.md. Protocol version mismatch is rejected athello_ack, never silently downgraded.Done when
cargo test --workspaceis green and prefork behaviour is unchanged. First phase — everything else builds on it. Plan:tasks/executor-attach.md.