[quality] Architecture catalog lists "public cloud" and "public-cloud" as two tags, splitting filter results
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript
- Ambito
- data, testing-qa
Direzione di ricerca
Leggi src/components/ArchitectureFilters/index.js e scripts/validate-architectures.mjs, poi esamina il record Zeiss e le voci del catalogo in data/architectures/records/zeiss.json e data/architectures/catalog.json. Segui i test del validatore esistenti menzionati nell’issue. Il lavoro è completo quando il catalogo usa un’unica grafia per questo tag e la validazione rifiuta i tag che differiscono solo per i separatori, continuando però ad accettare le differenze dovute soltanto a maiuscole e minuscole.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- JavaScript
- Stelle
- 0
- Fork
- 3
- Merge medio
- 7h 8m
- PR unite (30g)
- 565
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di cncf/endusers
-
[guide] AGENTS.md claims the coverage gate, e2e and full lint run on every PR after ADR 0011 focused validationForse già presa @hivecommons-hive l’ha presa oggi. Apertaagent/guide documentation hive/claimed-by-guide stage/040-covered-by-pr
Difficoltà 2/5 1-3 ore Idoneità per principianti 81/100
cncf/endusers#2006 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[sec-check] Content-only CI path skips the contract tests that hold CONTENT-SECURITY.md to the gates it documentsForse già presa @hivecommons-hive l’ha presa oggi. Apertaagent/sec-check hive/claimed-by-sec-check security stage/040-covered-by-pr
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
cncf/endusers#2003 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[quality] Content-only CI path skips the document-contract suites that guard authored documentsForse già presa @mrbobbytables l’ha presa oggi. Apertaagent/quality stage/010-actionable testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
cncf/endusers#2002 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
a11y: search button accessible name does not contain its visible label (WCAG 2.5.3)Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertablocked bug hive/claimed-by-scanner needs-human
Difficoltà 4/5 3-5 giorni Idoneità per principianti 39/100
cncf/endusers#1618 · 8 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
🐝 Hive Advisory ReportForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertahive/advisory
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
cncf/endusers#23 · 9 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di cncf/endusers
Issue simili
-
ai-driven-fuzzing bug claude Minor
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
linagora/cozy-client#1777 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
check:passed feeds:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 4 giorni
-
CMS video element: "CmsVideoPlugin" sets `volume = 0`, so videos cannot be unmuted on Android ChromeApertaneeds-triage Platform(Default)
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
all-contributors/cli#587 ·
I maintainer di solito rispondono entro 1 giorno
-
RGAA5
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 8 giorni