From 9b5ce2a850c89053b461f6e952e7a4ad10664656 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Sat, 22 Aug 2026 21:14:12 +0300 Subject: [PATCH] fix: keep unconfigured medium out of readiness --- cmd/cognitive-worker/main.go | 8 +++++-- dev/ACTIVE_TASK.json | 4 ++-- .../DEV-000169-optional-medium-readiness.json | 23 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 dev/tasks/DEV-000169-optional-medium-readiness.json diff --git a/cmd/cognitive-worker/main.go b/cmd/cognitive-worker/main.go index c4ecfbe..c8bfa38 100644 --- a/cmd/cognitive-worker/main.go +++ b/cmd/cognitive-worker/main.go @@ -132,10 +132,14 @@ func main() { readinessProbes := []health.Probe{ health.HTTPProbe(readinessClient, strings.TrimRight(envOr("CORE_RUNTIME_URL", "http://core-runtime:8080"), "/")+"/healthz"), cpuHealthProbe, - mediumHealthProbe, + } + if mediumURL != "" { + readinessProbes = append(readinessProbes, mediumHealthProbe) + } + readinessProbes = append(readinessProbes, health.HTTPProbe(readinessClient, lifeboatURL), health.OptionalHTTPProbe(readinessClient, strings.TrimRight(envOr("LOCAL_GPU_PROVIDER_URL", "http://192.168.220.91:11434"), "/")+"/api/tags"), - } + ) mux.Handle("/readyz", health.ReadinessHandler{Runtime: "cognitive-worker", Probes: readinessProbes}) mux.Handle("/v1/fleet/readiness", fleetReadinessHandler(fleetClient, preferredFleet, []fleetEndpoint{ {ProviderID: "local-cpu-primary", ModelID: "local-cpu-model", Tier: capability.FleetTierFast, URL: cpuEndpoint, Headers: cpuFleetHeaders, Client: &http.Client{Timeout: 10 * time.Second}}, diff --git a/dev/ACTIVE_TASK.json b/dev/ACTIVE_TASK.json index ae1104c..6de008b 100644 --- a/dev/ACTIVE_TASK.json +++ b/dev/ACTIVE_TASK.json @@ -1,5 +1,5 @@ { - "task_file": "dev/tasks/DEV-000168-configurable-medium-fleet-slot.json", - "task_id": "DEV-000168", + "task_file": "dev/tasks/DEV-000169-optional-medium-readiness.json", + "task_id": "DEV-000169", "task_revision": 1 } diff --git a/dev/tasks/DEV-000169-optional-medium-readiness.json b/dev/tasks/DEV-000169-optional-medium-readiness.json new file mode 100644 index 0000000..1221247 --- /dev/null +++ b/dev/tasks/DEV-000169-optional-medium-readiness.json @@ -0,0 +1,23 @@ +{ + "task_id": "DEV-000169", + "task_revision": 1, + "architecture_revision": "ADR-0018", + "base_repo_revision": "8f3920519b6a228d78b6ad775a7c19838dfbb70b", + "risk_tier": "E", + "intent": "Keep an absent optional MEDIUM provider out of runtime readiness while preserving its explicit NOT_CONFIGURED fleet member.", + "requirement_ids": ["WP-200", "WP-301", "Model fleet/failover"], + "allowed_change_scope": {"modules": ["cognitive-worker"], "paths": ["cmd/cognitive-worker/main.go", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000169-optional-medium-readiness.json"]}, + "forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "deploy/**", "contracts/**", "adapters/**", ".gitea/**"]}, + "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": ["existing readiness handler", "existing fleet readiness contract"], "may_change": []}, + "semantic_owner": "cognitive-worker", + "canonical_state": [], + "state_transitions": ["MEDIUM absent -> fleet NOT_CONFIGURED without runtime readiness degradation", "MEDIUM configured -> readiness probe included"], + "side_effects_and_privileges": ["none"], + "persistence_and_migrations": ["none"], + "failure_retry_restart": ["configured MEDIUM remains bounded by its 10-second client; absent MEDIUM is not probed"], + "assumptions": ["Fleet status remains the explicit inventory surface for unconfigured optional tiers"], + "acceptance_scenarios": ["production /readyz stays ready when MEDIUM URL is empty", "fleet readiness retains MEDIUM NOT_CONFIGURED", "configured MEDIUM is included in /readyz"], + "required_tests": ["go test ./...", "go vet ./...", "preflight", "check-diff", "check-architecture", "independent", "git diff --check", "CI", "production /readyz and fleet readiness"], + "terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY", "BLOCKED_BY_CONFLICT"] +} -- 2.54.0