[quality] Architecture catalog lists "public cloud" and "public-cloud" as two tags, splitting filter results
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript
- Domain
- data, testing-qa
Research direction
Read src/components/ArchitectureFilters/index.js and scripts/validate-architectures.mjs, then inspect the Zeiss record and catalog entries in data/architectures/records/zeiss.json and data/architectures/catalog.json. Follow the existing validator tests mentioned in the issue. Done means the catalog uses one spelling for this tag and validation rejects tags that differ only by separators while still allowing case-only differences.
Written by the indexing model from the issue text.
Description
Finding
On /architectures, the "Add a tag" control lists public cloud and public-cloud as two separate tags, and each one returns only half of the records that carry the concept:
| picked tag | catalog results |
|---|---|
public cloud |
allianz |
public-cloud |
zeiss |
Typed search splits the same way: typing public cloud does not match Zeiss, because filterArchitectures searches architecture.tags.join(' ') and Zeiss's tag text is public-cloud.
This is a user-observable wrong result on the production catalog: a visitor filtering for public-cloud architectures sees one of the two that exist, with no indication that a second spelling of the same tag is sitting further down the same dropdown.
Reproduced against main (75a3db8) by running the shipped useArchitectureFilterOptions / filterArchitectures logic over data/architectures/catalog.json:
dropdown has both: [ 'public cloud', 'public-cloud' ]
select "public cloud" -> [ 'allianz' ]
select "public-cloud" -> [ 'zeiss' ]
"private cloud" (sibling, spaced) -> [ 'cern-scientific-computing', 'sncf-onprem',
'swisscom-cloud-native-telco', 'swisscom-kubernetes-service' ]
src/components/ArchitectureFilters/index.js folds tags by case only (tagKey), which is deliberate and documented — upstream tags are not consistently cased, so Kubernetes/kubernetes correctly collapse to one entry. Separators are not folded, so this pair does not collapse.
Why no gate caught it
scripts/validate-architectures.mjs already gates tag spelling, but only for underscores:
if (typeof tag !== 'string' || tag.includes('_'))
A tag that differs from another tag only by - vs a space passes. public cloud and public-cloud are the only such pair in the catalog today; the gate does not cover the class.
Recommendation
Two parts, both in one change:
-
Data.
data/architectures/records/zeiss.jsonanddata/architectures/catalog.json:"public-cloud"→"public cloud". Spaces are the stated convention for this field, Allianz already spells it that way, and the sibling tagprivate cloudis spelled with a space by four records. -
Gate. Extend the existing tag rule in
scripts/validate-architectures.mjsto reject two spellings that fold to the same key under case and separators, while still accepting a pure case difference (which the UI collapses on purpose). On the pre-fix data it reports:[error] zeiss: tag "public-cloud" differs only in separators from "public cloud" on allianz; the catalog filter lists both and each returns only its own records, so one spelling must be used
Priority
- Impact: medium — wrong catalog results on a published page; affects two of ten records today and every future import.
- Effort: low — one data value, one validator rule, four tests.
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5n31 | SHA: 75a3db8
— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88
- Dominant language
- JavaScript
- Stars
- 0
- Forks
- 3
- Avg merge
- 7h 15m
- Merged PRs (30d)
- 565
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cncf/endusers
-
agent/quality bug ci stage/010-actionable
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
[quality] /resources/metrics publishes a commit count as "Reference architecture submissions" (28 on the chart, 8 on the card)Possibly taken @hivecommons-hive claimed this today. Openagent/quality hive/claimed-by-scanner stage/040-covered-by-pr testing
Difficulty 2/5 1-3 hours Newbie friendliness 35/100
cncf/endusers#1977 · 3 comments ·
Maintainers usually reply within 1 day
-
a11y: search button accessible name does not contain its visible label (WCAG 2.5.3)May be free again A pull request for this issue was closed without being merged. Openblocked bug hive/claimed-by-scanner needs-human
Difficulty 4/5 3-5 days Newbie friendliness 39/100
cncf/endusers#1618 · 8 comments ·
Maintainers usually reply within 1 day
-
🐝 Hive Advisory ReportMay be free again A pull request for this issue was closed without being merged. Openhive/advisory
Difficulty 5/5 Over a week Newbie friendliness 15/100
cncf/endusers#23 · 8 comments ·
Maintainers usually reply within 1 day
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
swc-project/swc-next#1165 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nhsuk/nhsuk-prototype-kit-package#439 ·
Maintainers usually reply within 1 day
-
Add: &TV LogoOpencheck:passed logos:add
Difficulty 1/5 Under an hour Newbie friendliness 74/100
-
BUG: Appointment time renders blank and PM appointment slots miscalculate vertical position in CalendarScreenPossibly taken @aryanpatil-07 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
AOSSIE-Org/BabyNest#297 · 1 comment ·
Maintainers usually reply within 1 day
-
Onboarding form: instructor radio never pre-selected "Yes" (permission vs permissions typo)Possibly taken @ThakuraAnki claimed this today. Openbug
Difficulty 1/5 Under an hour Newbie friendliness 72/100
WikiEducationFoundation/WikiEduDashboard#7235 ·
Maintainers usually reply within 1 day