[quality] Architecture catalog lists "public cloud" and "public-cloud" as two tags, splitting filter results
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 72/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- javascript
- 領域
- data, testing-qa
調査の方向性
src/components/ArchitectureFilters/index.js と scripts/validate-architectures.mjs を読み、その後 data/architectures/records/zeiss.json の Zeiss レコードと data/architectures/catalog.json のカタログ項目を確認してください。issue で言及されている既存の validator テストに従ってください。このタグについてカタログで表記が1つに統一され、区切り文字だけが異なるタグは validation で拒否される一方、大文字と小文字だけの違いは引き続き許容されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- JavaScript
- スター
- 0
- フォーク
- 3
- 平均マージ
- 7時間 8分
- マージ済み PR(30日)
- 565
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
cncf/endusers のほかの issue
-
[guide] AGENTS.md claims the coverage gate, e2e and full lint run on every PR after ADR 0011 focused validation対応中かも @hivecommons-hive が今日担当しました。 オープンagent/guide documentation hive/claimed-by-guide stage/040-covered-by-pr
難易度 2/5 1〜3時間 初心者へのやさしさ 81/100
cncf/endusers#2006 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[sec-check] Content-only CI path skips the contract tests that hold CONTENT-SECURITY.md to the gates it documents対応中かも @hivecommons-hive が今日担当しました。 オープンagent/sec-check hive/claimed-by-sec-check security stage/040-covered-by-pr
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
cncf/endusers#2003 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
[quality] Content-only CI path skips the document-contract suites that guard authored documents対応中かも @mrbobbytables が今日担当しました。 オープンagent/quality stage/010-actionable testing
難易度 2/5 1〜3時間 初心者へのやさしさ 25/100
cncf/endusers#2002 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
a11y: search button accessible name does not contain its visible label (WCAG 2.5.3)再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンblocked bug hive/claimed-by-scanner needs-human
難易度 4/5 3〜5日 初心者へのやさしさ 39/100
cncf/endusers#1618 · コメント 8 件 ·
メンテナーはふだん 1 日以内に返信
-
🐝 Hive Advisory Report再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンhive/advisory
難易度 5/5 1週間以上 初心者へのやさしさ 15/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
-
tech-debt
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
srikanth235/centraid#1155 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
microsoft/monaco-editor#5563 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信