Tasks: Remote sub-tasks hear remote state changes between turns
A DAG derived from
design.mdandtesting-plan.md. Each task's_Test:_names a row of the plan's matrix. Single repository; everything lands on PR #28.
There are nine tasks. Every task is test-first: write the named test, watch it fail, then make it pass.
Task list
- [x] 1. Configuration:
updatesandfollow_intervalonRemoteAgentSpec- Add the fields and the
>= 1 svalidator, and update the settings schema snapshot. - Depends on: none
- Requirements: R4.1, R4.5
- Test: T1/T10
tests/unit/test_config_agents.py; T3 snapshot
- Add the fields and the
- [x] 2.
RemoteAgent: settings plus push, get and subscribe wrappers- Constructor and
connecttakeupdatesandfollow_interval, andbuild_runtimepasses them. - Add
push_supported,set_push_config,delete_push_config,get_taskandsubscribe. - Depends on: 1
- Requirements: R1.1, R3.1, R5.1
- Test: T2 (exercised end-to-end); T3 API snapshot
- Constructor and
- [x] 3. Push primitives and
PushReceiver- In
service/a2a/push.py:push_url,token_digest,PushIn(in durable models),PushReceiver.receivewith the refusal ordering. - Depends on: none
- Requirements: R2.1, R2.2; abuse cases 1–5, 9
- Test: T1
tests/unit/service/test_push_receiver.py
- In
- [x] 4. The push route in
create_app, wired inrunning_harnessPOST /a2a/push/{task_id}before the SDK routes, readingContent-Lengthfirst.running_harnessbuildsPushReceiver(client)and passespush_base_urltoActivities.- Depends on: 3
- Requirements: R2.1, abuse case 5
- Test: T8
tests/security/test_remote_push.py(route-level cases)
- [x] 5.
remote_outand the new activities- Factor
remote_outout of_remote_turn. - Add
register_remote_push,get_remote_task,follow_remote_taskanddelete_remote_push, with the newActivityNames and models. - Depends on: 2, 3
- Requirements: R1.1–1.3, R1.5, R2.3, R2.5, R3.1–3.3, R5.1
- Test: T1
tests/unit/service/test_remote_out.py; T2
- Factor
- [x] 6.
RemoteTaskWorkflow: the watch, theremote_pushupdate and its validator,_park,_end- Depends on: 5
- Requirements: R1.4, R2.2–2.4, R2.6, R2.8, R3.4, R4.2–4.4, R5.1–5.3
- Test: T2
tests/integration/agents/test_remote_updates.py; T8
- [x] 7. Parent
child_done: note only on terminal or interrupted remote states- Depends on: none
- Requirements: R2.7
- Test: T2 (row moves without a model turn on
WORKING)
- [x] 8. Security tests for every abuse case
- Include the token-absence check over workflow history, captured logs and the store.
- Depends on: 4, 6
- Requirements: abuse cases 1–9
- Test: T8
tests/security/test_remote_push.py
- [x] 9. Documentation
- Update
docs/capabilities/remote-agents.mdanda2a-server.md(the endpoint), the configuration capability doc and the example config. Record them inevidence/documentation.md. - Depends on: 6
- Requirements: all (capability docs)
- Test: T12 markdownlint
- Update
Dependency graph (DAG)
Checkpoints
- After 4:
uv run pytest tests/unit tests/contract. - After 7:
uv run pytest tests/integration -q. - After 9:
uv run pre-commit run --all-files.