From 651e145a1386a1bc2fdf3be1c5ba403a2130a6f0 Mon Sep 17 00:00:00 2001 From: Lari Hotari Date: Wed, 14 Oct 2026 11:42:26 +0300 Subject: [PATCH] Fix duplicate role key in committee roster JSON The roster entries use a symbol :role key, but the chair role was set with a string 'role' key. This produced a hash with both keys, and newer versions of the json gem reject it with "detected duplicate key", which makes /roster/committee/.json fail with HTTP 500. Assisted-by: Claude Code (claude-opus-5-5) --- www/roster/models/committee.rb | 2 +- www/roster/models/nonpmc.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/www/roster/models/committee.rb b/www/roster/models/committee.rb index 4406e60b34..5f31690337 100644 --- a/www/roster/models/committee.rb +++ b/www/roster/models/committee.rb @@ -120,7 +120,7 @@ def self.serialize(id, env) roster.each {|k, v| v[:member] = ASF::Person.find(k).asf_member?} if pmc.chair and roster[pmc.chair.id] - roster[pmc.chair.id]['role'] = 'PMC chair' + roster[pmc.chair.id][:role] = 'PMC chair' end # separate out the known ASF members and extract any matching committer details diff --git a/www/roster/models/nonpmc.rb b/www/roster/models/nonpmc.rb index 3c01a76fbe..9fadd3eacf 100644 --- a/www/roster/models/nonpmc.rb +++ b/www/roster/models/nonpmc.rb @@ -100,7 +100,7 @@ def self.serialize(id, env) end if cttee.chair and roster[cttee.chair.id] - roster[cttee.chair.id]['role'] = 'Committee chair' + roster[cttee.chair.id][:role] = 'Committee chair' end # separate out the known ASF members and extract any matching committer details