Repository navigation
feat: reorganize into 5 clouds with workload tags and an Emerging & Unverified badge - #571
Merged
Merged
Conversation
…y format Additive and backward-compatible: parser emits tags/unverified when present and is byte-identical on the current README. Evaluator and README migration follow in the next PR.
…nverified badge Replace the 24 legacy categories with Notable's five clouds (Infrastructure, Workload, Sovereign, Service, Vertical) and add a tag vocabulary: five Workload families (App, Data, AI, Agent, Build & Run) that only apply to Workload entries, plus cross-cutting tags (agent-native, open-source, owns-hardware, gpu, region:*) valid on every category. "Emerging & Unverified" is no longer a category: it is a 🔵 badge shown next to the 🟢/🟡 score, so those 13 entries now live in their real category. README / data - scripts/migrate_readme.py restructures the README (legacy -> new, with a review CSV at analysis/taxonomy-migration.csv); refuses to re-run on a migrated README. - Tags live in a trailing `<!-- tags: ... -->` comment; scripts/lib/entry_format.py is the shared parser/formatter. parse_readme_to_json emits `tags`/`unverified` and is byte-identical on legacy READMEs. - scripts/lib/taxonomy.py is the source of truth, mirrored in src/lib/taxonomy.ts (drift is caught by tests/test_taxonomy_sync.py). - Keyword rules in scripts/lib/tag_rules.py plus CURATED_OVERRIDES for hand-checked entries (Supabase, Baseten, Modal, Fal.ai, cloudscale.ch). Pipeline - evaluate_submission.py: single shared prompt block and normalize_classification() for all four LLM paths; returns category + tags (fail-open: unknown tags dropped, workload tags dropped outside Workload, invalid category falls back). - Graduation now clears the 🔵 badge (re-filing only if the category changes), with tags validated against the final category. audit_emerging_badges keeps the 🔵. - generate_llms.py and the workflow comments use the new taxonomy. Site - Category + tag filtering on the homepage with faceted counts, a Tags fly-out next to Sort by, removable tag pills, and a 🔵 pill on cards. - Retired category pages redirect to the new categories (base-path aware). Docs: CLAUDE.md and CONTRIBUTING.md describe the new taxonomy, entry format and graduation flow. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
AriaEdo
previously approved these changes
Nov 9, 2026
ronggur
previously approved these changes
Nov 9, 2026
# Conflicts: # README.md
AriaEdo
approved these changes
Nov 9, 2026
This was referenced Nov 9, 2026
felixwidjaja
added a commit
that referenced
this pull request
Nov 10, 2026
Re-filed under the five-cloud taxonomy (#571).
felixwidjaja
added a commit
that referenced
this pull request
Nov 10, 2026
Re-filed under the five-cloud taxonomy (#571).
felixwidjaja
added a commit
that referenced
this pull request
Nov 10, 2026
Re-filed under the five-cloud taxonomy (#571).
felixwidjaja
added a commit
that referenced
this pull request
Nov 10, 2026
Re-filed under the five-cloud taxonomy (#571).
felixwidjaja
added a commit
that referenced
this pull request
Nov 10, 2026
Re-filed under the five-cloud taxonomy (#571).
felixwidjaja
added a commit
that referenced
this pull request
Nov 10, 2026
Re-filed under the five-cloud taxonomy (#571).
felixwidjaja
added a commit
that referenced
this pull request
Nov 10, 2026
Re-filed under the five-cloud taxonomy (#571).
felixwidjaja
added a commit
that referenced
this pull request
Nov 10, 2026
Re-filed under the five-cloud taxonomy (#571).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reorganizes the directory from 24 categories into five clouds, and adds a tag vocabulary for filtering.
"Emerging & Unverified" is now a badge, not a category. It sits next to the score (
* 🟡🔵 [Name](url) - ...). The 13 entries that were in that section now live in their real category.Tags (stored as a trailing
<!-- tags: a, b -->comment on the README bullet, so README.md stays the single source of truth):agent-native,open-source,owns-hardware,gpu,region:<code>, plus the derivedunverifiedstatus.What changed
scripts/migrate_readme.pyrestructured the README (legacy → new) and wroteanalysis/taxonomy-migration.csv, a per-entry review sheet of legacy → new category, aneeds_reviewflag, and tags. It refuses to re-run on a migrated README.scripts/lib/taxonomy.py, mirrored insrc/lib/taxonomy.ts;tests/test_taxonomy_sync.pyfails on drift (categories, definitions, tags, redirects).scripts/lib/entry_format.pyis the shared parse/format for bullets.parse_readme_to_json.pynow emitstags/unverified, and its output is byte-identical to before on a legacy README.evaluate_submission.py: one shared prompt block +normalize_classification()across all four LLM paths. Returns category + tags; unknown tags are dropped, workload tags are dropped outside Workload, an invalid category falls back.audit_emerging_badgeskeeps the 🔵.generate_llms.py, workflow comments,CLAUDE.md,CONTRIBUTING.mdupdated.Please review
Category placement is heuristic. Entries from one-to-one legacy categories moved by rule; the split buckets (Databases, Observability, Dev Tooling, Security/Sovereignty, Comms, AI Assistants, Customer/Marketing) were classified by keyword rules and are flagged
needs_review=Truein the CSV.CURATED_OVERRIDESinscripts/lib/tag_rules.pyholds hand-checked entries (Supabase, Baseten, Modal, Fal.ai, cloudscale.ch); add to it as you correct more.Heads-up: open submission PRs
8 open submission PRs target the old category headings (e.g. #568
boxd→ "Infrastructure Clouds", #531CloudGPU→ "GPU & AI Compute Clouds"). They will conflict with this change and need their entries re-filed under the new categories after merge. Vercel and STACKIT (named in the brief, not yet listed) should be submitted after merge so the updated evaluator handles them.Not in this PR
public/clouds.json/llms*.txtare regenerated bydeploy-pages.yml; I didn't commit them./categories/<slug>/) don't have the tag filter yet.parse_readme_to_jsonstill treats a bullet with no score badge as 3/3 (unchanged from before); the README-edit helpers now reject such bullets.Test plan
python3 -m pytest tests— 234 passed (new: taxonomy sync, entry format, tag rules, classification/normalization, migration, graduation tags, redirects)npm run build(production) and a preview-mode build — redirects resolve correctly in bothastro check0 errors, ESLint clean, Prettier clean on changed filesmainon the legacy README?tags=deep links, fly-out open/close, mobile width (no horizontal scroll)analysis/taxonomy-migration.csvfor misplaced entries (filterneeds_review=True)nosql-timeseriestag with Jacob🤖 Generated with Claude Code