From 531dfa85ad16adeebf19b9f5410549fe285ddddd Mon Sep 17 00:00:00 2001 From: Mikhail Date: Sun, 23 Aug 2026 23:45:45 +0300 Subject: [PATCH] feat(work): expose additional evaluation scheduling --- cmd/work-graph-runtime/main.go | 14 ++++++++++++++ ...able-additional-task-evaluation-scheduling.json | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cmd/work-graph-runtime/main.go b/cmd/work-graph-runtime/main.go index e9e11a3..fa68ca4 100644 --- a/cmd/work-graph-runtime/main.go +++ b/cmd/work-graph-runtime/main.go @@ -64,6 +64,20 @@ func main() { } writeJSON(w, map[string]any{"graph": graph, "scheduled_nodes": ready}) }) + mux.HandleFunc("POST /v1/work-graphs/task-evaluations/additional/schedule", func(w http.ResponseWriter, r *http.Request) { + var request application.TaskEvaluationExpansionScheduleRequest + if err := json.NewDecoder(http.MaxBytesReader(w, r.Body, 4<<20)).Decode(&request); err != nil { + http.Error(w, "invalid additional task evaluation request", http.StatusBadRequest) + return + } + graph, ready, err := application.ScheduleAdditionalTaskEvaluation(r.Context(), repository, request) + if err != nil { + log.Printf("additional task evaluation schedule rejected: %v", err) + http.Error(w, err.Error(), http.StatusUnprocessableEntity) + return + } + writeJSON(w, map[string]any{"graph": graph, "scheduled_nodes": ready}) + }) mux.HandleFunc("POST /v1/work-graphs/orchestration/next", func(w http.ResponseWriter, r *http.Request) { var request work.SolutionSearchInput if err := json.NewDecoder(http.MaxBytesReader(w, r.Body, 32<<10)).Decode(&request); err != nil { diff --git a/dev/tasks/DEV-000261-durable-additional-task-evaluation-scheduling.json b/dev/tasks/DEV-000261-durable-additional-task-evaluation-scheduling.json index 87dd181..f57b116 100644 --- a/dev/tasks/DEV-000261-durable-additional-task-evaluation-scheduling.json +++ b/dev/tasks/DEV-000261-durable-additional-task-evaluation-scheduling.json @@ -6,8 +6,8 @@ "risk_tier": "E", "intent": "Connect unresolved model-evaluation evidence to a bounded additional Work Graph and durable dispatch schedule.", "requirement_ids": ["model fleet/failover", "general-first qualification", "adaptive additional tests", "durable parallel dispatch"], - "allowed_change_scope": {"modules": ["work", "capability-evaluation"], "paths": ["modules/work/application/graph_runtime.go", "modules/work/application/task_evaluation_dispatch_test.go", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000261-durable-additional-task-evaluation-scheduling.json"]}, - "forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "deploy/**", "contracts/**", "LLM-local/**", "cmd/**", "adapters/**"]}, + "allowed_change_scope": {"modules": ["work", "capability-evaluation"], "paths": ["modules/work/application/graph_runtime.go", "modules/work/application/task_evaluation_dispatch_test.go", "cmd/work-graph-runtime/main.go", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000261-durable-additional-task-evaluation-scheduling.json"]}, + "forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "deploy/**", "contracts/**", "LLM-local/**", "cmd/core-runtime/**", "cmd/creator-web/**", "cmd/agent-worker/**", "adapters/**"]}, "allowed_architecture_delta": {"new_cross_module_dependencies": 0, "new_canonical_owners": 0, "new_privileges": 0, "new_third_party_dependencies": 0, "new_database_owner_roles": 0}, "contracts": {"consume": ["TaskEvaluationExpansionRequest", "UnresolvedTaskEvidence", "Work Graph admission and dispatch ports"], "may_change": ["application orchestration function only"]}, "semantic_owner": "Work application schedules; Capability domain decides qualification expansion", -- 2.54.0