Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docs/agent_orchestration_summary_contract.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,11 @@ Top-level summary:
scheduler-delay signal, affected task, worker health를 compact supplemental
risk context로 요약해 AIGuard/Lab/EdgeEnv가 사용할 수 있게 합니다.
`decision_owner=lab`과 `not_a_deployment_decision=true`를 명시합니다.
- `scheduler_fairness_summary`: sustained operation evidence 안의 additive
context로, 보호된 high-priority task, scheduler-delay 또는 starvation risk가
있는 task, degraded/constrained worker, task별 fairness context를
요약합니다. Orchestrator가 소유하는 supplemental scheduling evidence이며
Lab deployment decision이나 EdgeEnv regression judgement가 아닙니다.
- `runtime_event_timeline`: queue snapshot, drop, scheduler selection,
execution, policy decision, resource snapshot을 순서대로 남기는 event log입니다.
execution event는 backlog/delay 확인을 위한 additive
Expand Down
5 changes: 5 additions & 0 deletions docs/agent_orchestration_summary_contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,11 @@ Additive operation-health fields:
counts, scheduler-delay signals, affected tasks, and worker health into a
compact supplemental risk context for AIGuard/Lab/EdgeEnv. It explicitly
records `decision_owner=lab` and `not_a_deployment_decision=true`.
- `scheduler_fairness_summary`: additive context inside sustained operation
evidence that summarizes protected high-priority tasks, tasks with
scheduler-delay or starvation risk, degraded/constrained workers, and
per-task fairness context. It is Orchestrator-owned supplemental scheduling
evidence, not a Lab deployment decision or EdgeEnv regression judgement.
- `runtime_event_timeline`: ordered event log for queue snapshots, drops,
scheduler selections, executions, policy decisions, and resource snapshots.
Execution events include additive `scheduler_delay_cycles` and
Expand Down
5 changes: 3 additions & 2 deletions examples/telemetry/README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ portfolio evidence를 확인할 수 있도록 제공한다.
| Question | Start with | Why |
| --- | --- | --- |
| scheduler가 overload에서 high-priority work를 보호하는가? | `phase3_overload_sample.json` | baseline vs scheduled p95 latency와 low-priority drop을 보여준다. |
| 3-agent sustained path가 downstream review용 scheduler-delay evidence를 기록하는가? | `agent_scheduler_delay_sample.json` | 지연된 execution, policy/drop reason count, AIGuard/Lab signal name을 보여준다. |
| 3-agent sustained path가 downstream review용 scheduler-delay evidence와 fairness context를 기록하는가? | `agent_scheduler_delay_sample.json` | 지연된 execution, scheduler fairness/starvation context, policy/drop reason count, AIGuard/Lab signal name을 보여준다. |
| remote dispatch starter evidence가 production retry control을 주장하지 않고 bounded fallback recovery를 보여주는가? | `remote_fallback_recovery_sample.json` | primary failure, fallback recovery, compact runtime event summary, starter boundary field를 보여준다. |
| 어떤 sample이 local CI가 아니라 기존 Jetson evidence를 전제로 하는가? | `jetson_*_sample.json` files | portable CI output이 아니라 curated physical-device 또는 TensorRT-backed evidence snapshot이다. |

Expand All @@ -24,7 +24,7 @@ portfolio evidence를 확인할 수 있도록 제공한다.
| File | What it shows |
| --- | --- |
| `phase3_overload_sample.json` | synthetic FIFO baseline과 scheduler/load-shedding 비교. detector p95 end-to-end latency가 `782.0ms`에서 `8.0ms`로 개선되고 low-priority classifier work가 drop된다. |
| `agent_scheduler_delay_sample.json` | 3-agent sustained high-load config에서 추출한 curated excerpt. `scheduler_delay_event_count`, 지연된 execution event, policy/drop reason count, downstream AIGuard/Lab signal name을 보여준다. |
| `agent_scheduler_delay_sample.json` | 3-agent sustained high-load config에서 추출한 curated excerpt. `scheduler_delay_event_count`, `scheduler_fairness_summary`, 지연된 execution event, policy/drop reason count, downstream AIGuard/Lab signal name을 보여준다. |
| `remote_fallback_recovery_sample.json` | remote dispatch starter에서 primary HTTP starter `connection_error`, 제한된 fallback worker recovery, retry/fallback plan field, downstream AIGuard/Lab signal name을 보여주는 curated excerpt. |
| `jetson_smoke_dummy_sample.json` | Jetson dummy smoke path의 telemetry schema. task count, drop event, result event, scheduler decision, resource snapshot을 보여준다. |
| `jetson_onnx_smoke_sample.json` | ONNX Runtime worker smoke path의 telemetry schema. result event metadata, output shape `[1, 2]`, resource snapshot을 보여준다. |
Expand All @@ -41,6 +41,7 @@ sample은 다음 telemetry signal을 포함한다.
- drop events
- overload 또는 policy decisions
- scheduler delay event count와 queue wait evidence
- scheduler fairness / starvation context
- remote dispatch starter failure/fallback recovery evidence
- result events
- resource snapshots
Expand Down
5 changes: 3 additions & 2 deletions examples/telemetry/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ They are not benchmark artifacts. Raw runtime reports remain ignored under
| Question | Start with | Why |
| --- | --- | --- |
| Does the scheduler protect high-priority work under overload? | `phase3_overload_sample.json` | Shows baseline vs scheduled p95 latency and low-priority drops. |
| Did the 3-agent sustained path record scheduler-delay evidence for downstream review? | `agent_scheduler_delay_sample.json` | Shows delayed execution, policy/drop reason counts, and AIGuard/Lab signal names. |
| Did the 3-agent sustained path record scheduler-delay evidence and fairness context for downstream review? | `agent_scheduler_delay_sample.json` | Shows delayed execution, scheduler fairness/starvation context, policy/drop reason counts, and AIGuard/Lab signal names. |
| Does remote dispatch starter evidence show bounded fallback recovery without claiming production retry control? | `remote_fallback_recovery_sample.json` | Shows primary failure, fallback recovery, compact runtime event summary, and starter boundary fields. |
| Which samples require prior Jetson evidence rather than local CI? | `jetson_*_sample.json` files | They are curated physical-device or TensorRT-backed evidence snapshots, not portable CI outputs. |

Expand All @@ -24,7 +24,7 @@ They are not benchmark artifacts. Raw runtime reports remain ignored under
| File | What it shows |
| --- | --- |
| `phase3_overload_sample.json` | Synthetic FIFO baseline vs scheduler/load-shedding comparison. The detector p95 end-to-end latency improves from `782.0ms` to `8.0ms`, while low-priority classifier work is dropped. |
| `agent_scheduler_delay_sample.json` | Curated excerpt from the 3-agent sustained high-load config showing `scheduler_delay_event_count`, a delayed execution event, policy/drop reason counts, and the downstream AIGuard/Lab signal names. |
| `agent_scheduler_delay_sample.json` | Curated excerpt from the 3-agent sustained high-load config showing `scheduler_delay_event_count`, `scheduler_fairness_summary`, a delayed execution event, policy/drop reason counts, and the downstream AIGuard/Lab signal names. |
| `remote_fallback_recovery_sample.json` | Curated remote dispatch starter excerpt showing primary HTTP starter `connection_error`, bounded fallback worker recovery, retry/fallback plan fields, and downstream AIGuard/Lab signal names. |
| `jetson_smoke_dummy_sample.json` | Telemetry schema from the Jetson dummy smoke path: task counts, drop events, result events, scheduler decisions, and resource snapshots. |
| `jetson_onnx_smoke_sample.json` | Telemetry schema from the ONNX Runtime worker smoke path: result event metadata, output shape `[1, 2]`, and resource snapshots. |
Expand All @@ -41,6 +41,7 @@ The samples cover these telemetry signals:
- drop events
- overload or policy decisions
- scheduler delay event counts and queue wait evidence
- scheduler fairness / starvation context
- remote dispatch starter failure/fallback recovery evidence
- result events
- resource snapshots
Expand Down
62 changes: 62 additions & 0 deletions examples/telemetry/agent_scheduler_delay_sample.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,68 @@
"queue_overflow_drop_oldest": 12
}
},
"scheduler_fairness_summary": {
"schema_version": "inferedge-orchestrator-scheduler-fairness-summary-v1",
"operation_context_role": "supplemental",
"scheduler_owner": "orchestrator",
"decision_owner": "lab",
"not_a_deployment_decision": true,
"protected_high_priority_tasks": [
"safety_monitor_agent"
],
"tasks_with_starvation_risk": [
"vision_agent"
],
"tasks_with_scheduler_delay": [
"vision_agent"
],
"tasks_with_degradation": [
"voice_command_agent"
],
"first_read": "review_scheduler_fairness_context",
"task_fairness": {
"vision_agent": {
"priority": 80,
"executed_count": 3,
"dropped_count": 12,
"fallback_count": 0,
"scheduler_delay_event_count": 3,
"max_scheduler_delay_cycles": 3,
"health_state": "constrained",
"starvation_risk": true,
"starvation_reasons": [
"scheduler_delay_present",
"multi_cycle_scheduler_delay"
]
},
"voice_command_agent": {
"priority": 50,
"executed_count": 1,
"dropped_count": 9,
"fallback_count": 9,
"scheduler_delay_event_count": 0,
"max_scheduler_delay_cycles": 0,
"health_state": "degraded",
"starvation_risk": true,
"starvation_reasons": [
"fallback_policy_used",
"worker_degraded"
]
},
"safety_monitor_agent": {
"priority": 100,
"executed_count": 16,
"dropped_count": 0,
"fallback_count": 0,
"scheduler_delay_event_count": 0,
"max_scheduler_delay_cycles": 0,
"health_state": "healthy",
"starvation_risk": false,
"starvation_reasons": []
}
},
"interpretation": "Scheduler fairness is supplemental operation evidence; Lab remains the final deployment decision owner."
},
"delayed_execution_sample": {
"event_type": "execution",
"agent_id": "vision_agent",
Expand Down
13 changes: 13 additions & 0 deletions scripts/check_edgeenv_runtime_feed_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ def main(argv: list[str] | None = None) -> int:
affected = operation_timeline_summary.get("affected_tasks") or {}
review_hints = operation_timeline_summary.get("review_hints") or []
stale_drop = operation_timeline_summary.get("stale_drop") or {}
scheduler_fairness = operation_timeline_summary.get(
"scheduler_fairness"
) or {}
print(
"operation_timeline: "
f"review_hints={_format_list(review_hints)}; "
Expand All @@ -121,6 +124,16 @@ def main(argv: list[str] | None = None) -> int:
f"stale_drop_tasks={_format_list(affected.get('stale_drop'))}; "
f"max_queue_wait_ms={latency.get('max_queue_wait_ms', 0)}"
)
if scheduler_fairness:
print(
"scheduler_fairness: "
"protected="
f"{_format_list(scheduler_fairness.get('protected_high_priority_tasks'))}; "
"starvation_risk="
f"{_format_list(scheduler_fairness.get('tasks_with_starvation_risk'))}; "
"degraded="
f"{_format_list(scheduler_fairness.get('tasks_with_degradation'))}"
)
return 0


Expand Down
Loading