From ad1cba41c24d57ae1a59f11e6226161b8bb9997d Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Sun, 9 Aug 2026 18:49:29 +0000 Subject: [PATCH] Fix OpenAI reconciliation schema --- .../deduplication/schemas/semantic_reconciliation_llm.v1.json | 1 - internal/framework/semanticreconcile/schema_test.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/assets/generic/normalize/deduplication/schemas/semantic_reconciliation_llm.v1.json b/assets/generic/normalize/deduplication/schemas/semantic_reconciliation_llm.v1.json index 17e1a03..a46f014 100644 --- a/assets/generic/normalize/deduplication/schemas/semantic_reconciliation_llm.v1.json +++ b/assets/generic/normalize/deduplication/schemas/semantic_reconciliation_llm.v1.json @@ -16,7 +16,6 @@ "candidate_ids": { "type": "array", "minItems": 2, - "uniqueItems": true, "items": { "type": "integer", "minimum": 1 diff --git a/internal/framework/semanticreconcile/schema_test.go b/internal/framework/semanticreconcile/schema_test.go index 4cc891e..757e6dd 100644 --- a/internal/framework/semanticreconcile/schema_test.go +++ b/internal/framework/semanticreconcile/schema_test.go @@ -52,7 +52,7 @@ func TestResponseSchemaAcceptsOnlyTheIntegerProposalShape(t *testing.T) { {name: "missing canonical", value: map[string]any{"duplicate_groups": []any{map[string]any{"candidate_ids": []any{1, 2}}}}, valid: false}, {name: "unknown group field", value: map[string]any{"duplicate_groups": []any{map[string]any{"candidate_ids": []any{1, 2}, "canonical_candidate_id": 1, "name": "replacement"}}}, valid: false}, {name: "too few members", value: map[string]any{"duplicate_groups": []any{map[string]any{"candidate_ids": []any{1}, "canonical_candidate_id": 1}}}, valid: false}, - {name: "repeated members", value: map[string]any{"duplicate_groups": []any{map[string]any{"candidate_ids": []any{1, 1}, "canonical_candidate_id": 1}}}, valid: false}, + {name: "semantic repeated members", value: map[string]any{"duplicate_groups": []any{map[string]any{"candidate_ids": []any{1, 1}, "canonical_candidate_id": 1}}}, valid: true}, {name: "zero member", value: map[string]any{"duplicate_groups": []any{map[string]any{"candidate_ids": []any{0, 1}, "canonical_candidate_id": 1}}}, valid: false}, {name: "negative member", value: map[string]any{"duplicate_groups": []any{map[string]any{"candidate_ids": []any{-1, 1}, "canonical_candidate_id": 1}}}, valid: false}, {name: "non-integer member", value: map[string]any{"duplicate_groups": []any{map[string]any{"candidate_ids": []any{1, 2.5}, "canonical_candidate_id": 1}}}, valid: false},