Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[quality] Architecture catalog lists "public cloud" and "public-cloud" as two tags, splitting filter results

Closed Beginner friendly
#1,966 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@hivecommons-hive is already working on this.

Since Oct 28, 2026.

  • #1967 by @hivecommons-hive — open

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

agent/quality stage/040-covered-by-pr testing

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:

  1. Data. data/architectures/records/zeiss.json and data/architectures/catalog.json: "public-cloud" → "public cloud". Spaces are the stated convention for this field, Allianz already spells it that way, and the sibling tag private cloud is spelled with a space by four records.

  2. Gate. Extend the existing tag rule in scripts/validate-architectures.mjs to 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

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from cncf/endusers

All issues in cncf/endusers

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.