diff --git a/contracts/capability/admission.go b/contracts/capability/admission.go index 69c7b23..96a6d96 100644 --- a/contracts/capability/admission.go +++ b/contracts/capability/admission.go @@ -27,10 +27,10 @@ type AdmissionPolicy struct { } type AdmissionRequest struct { - Complexity AdmissionComplexity - InputBytes int - MaxOutputBytes int - DeadlineMillis int64 + Complexity AdmissionComplexity `json:"complexity"` + InputBytes int `json:"input_bytes"` + MaxOutputBytes int `json:"max_output_bytes"` + DeadlineMillis int64 `json:"deadline_millis"` } type AdmissionCounters struct { @@ -39,14 +39,14 @@ type AdmissionCounters struct { } type AdmissionDecision struct { - State AdmissionDecisionState - Reason AdmissionReason - PolicyID string + State AdmissionDecisionState `json:"state"` + Reason AdmissionReason `json:"reason"` + PolicyID string `json:"policy_id"` } type AdmissionLease struct { - ID string - PolicyID string + ID string `json:"id"` + PolicyID string `json:"policy_id"` } func Admit(request AdmissionRequest, policy AdmissionPolicy, counters AdmissionCounters, nowMillis int64) AdmissionDecision { diff --git a/dev/ACTIVE_TASK.json b/dev/ACTIVE_TASK.json index 1486695..08d7180 100644 --- a/dev/ACTIVE_TASK.json +++ b/dev/ACTIVE_TASK.json @@ -1,5 +1,5 @@ { "task_file": "dev/tasks/DEV-000115-cognitive-admission-control.json", "task_id": "DEV-000115", - "task_revision": 2 + "task_revision": 3 } diff --git a/dev/tasks/DEV-000115-cognitive-admission-control.json b/dev/tasks/DEV-000115-cognitive-admission-control.json index b0d3f3e..2184d36 100644 --- a/dev/tasks/DEV-000115-cognitive-admission-control.json +++ b/dev/tasks/DEV-000115-cognitive-admission-control.json @@ -1,6 +1,6 @@ { "task_id": "DEV-000115", - "task_revision": 2, + "task_revision": 3, "architecture_revision": "ADR-0018", "base_repo_revision": "9b26260", "risk_tier": "E", diff --git a/tests/cognitive_admission/admission_test.go b/tests/cognitive_admission/admission_test.go index 4268a76..4f32017 100644 --- a/tests/cognitive_admission/admission_test.go +++ b/tests/cognitive_admission/admission_test.go @@ -1,6 +1,8 @@ package cognitive_admission_test import ( + "encoding/json" + "strings" "testing" "git.cin.su/m/Assistant/contracts/capability" @@ -26,6 +28,13 @@ func TestAdmitReturnsExplainableDecision(t *testing.T) { } } +func TestAdmissionRequestUsesStableWireFields(t *testing.T) { + raw, err := json.Marshal(capability.AdmissionRequest{Complexity: capability.AdmissionNormal, InputBytes: 10, MaxOutputBytes: 20, DeadlineMillis: 30}) + if err != nil || !strings.Contains(string(raw), `"input_bytes":10`) || !strings.Contains(string(raw), `"max_output_bytes":20`) || !strings.Contains(string(raw), `"deadline_millis":30`) { + t.Fatalf("admission wire shape drifted: %s %v", raw, err) + } +} + func TestAdmitRejectsBudgetAndDeadline(t *testing.T) { policy := capability.AdmissionPolicy{ID: "local-v1", MaxConcurrent: 1, MaxAcceptedPerHour: 1, MaxInputBytes: 10, MaxOutputBytes: 10} if decision := capability.Admit(capability.AdmissionRequest{InputBytes: 11, MaxOutputBytes: 1}, policy, capability.AdmissionCounters{}, 1); decision.Reason != capability.AdmissionReasonInputBudget {