Skip to content

chore(blog): make the two taxonomy axes disjoint - #635

Merged
Timur Tukaev (tym83) merged 1 commit into
mainfrom
chore/taxonomy-cleanup
Aug 3, 2026
Merged

chore(blog): make the two taxonomy axes disjoint#635
Timur Tukaev (tym83) merged 1 commit into
mainfrom
chore/taxonomy-cleanup

Conversation

@tym83

@tym83 Timur Tukaev (tym83) commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

article_types and topics are two orthogonal axes feeding the blog filter UI, but five terms had leaked across the boundary between them. The same word therefore meant different things depending on which list it ended up in. This makes the two vocabularies disjoint and records them as data.

What

  • Moved each contested term to the axis it belongs to, across seven posts. release is a genre and no longer appears among subjects; talos, networking, community and storage are subjects and no longer appear among genres. Every one of them was already present in the correct axis, so no post loses a term.
  • Brought the 1.4 and 1.5 release posts in line with 1.0 and 1.3, which carry the release genre rather than announcement.
  • Added data/taxonomy.yaml holding both closed vocabularies, with a note on why a one-off term is undesirable: it produces a taxonomy page with a single entry, which reads as thin content.

Result: 6 genres, 20 subjects, zero overlap.

Why

Without a closed vocabulary the axes drift, and a term invented while writing produces a taxonomy page nobody links to. One post already carried an image filename among its topics, which is what an unchecked list eventually yields.

data/taxonomy.yaml is also intended as the source of truth for a publishing validator, so that the same vocabulary applies to tooling and to hand-written posts alike.

Notes for reviewers

No template or config changes: both axes stay registered in hugo.yaml as before, so no taxonomy URL changes and no aliases are needed.

The site does not build in my local environment, and it does not build on a clean main either — Hugo 0.162.1 is installed while the repository asks for 0.160.1, and the newer security.allowContent policy rejects content/*/_index.html. That failure is unrelated to this change; verification here was done by auditing front matter across all 83 posts.

Summary by CodeRabbit

  • Documentation
    • Added a centralized taxonomy reference for validating blog article types and topics.
    • Standardized blog post metadata by correcting release classifications and removing outdated or duplicate categories.
    • Refined topic labels across security, networking, storage, platform, and infrastructure articles for more consistent discovery and filtering.

article_types is the genre of a post; topics is its subject area. Five
terms had leaked across that line, so the same word meant two different
things depending on which list it landed in.

Moved each contested term to the axis where it belongs and brought the
1.4 and 1.5 release posts in line with 1.0 and 1.3, which carry the
release genre rather than announcement.

Adds data/taxonomy.yaml as the source of truth for both vocabularies.
Term counts: 6 genres, 20 subjects, zero overlap.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: tym83 <6355522@gmail.com>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@netlify

netlify Bot commented Aug 3, 2026

Copy link
Copy Markdown

Deploy Preview for cozystack ready!

Name Link
🔨 Latest commit d1537d3
🔍 Latest deploy log https://app.netlify.com/projects/cozystack/deploys/6a705112e202f00008220b11
😎 Deploy Preview https://deploy-preview-635--cozystack.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 72cab41f-a367-4810-a950-0e5447483633

📥 Commits

Reviewing files that changed from the base of the PR and between b119c66 and d1537d3.

📒 Files selected for processing (8)
  • content/en/blog/2026-05-21-cozystack-1-4-new-dashboard-persistent-workers-backup-strategies-gpu-sharing/index.md
  • content/en/blog/2026-06-28-cozystack-1-5-gateway-api-default-backups-flux-sharding-tls-gpu-passthrough/index.md
  • content/en/blog/2026-07-14-cve-2026-43499-ghostlock-cozystack-exposure-assessment/index.md
  • content/en/blog/2026-07-14-fixing-cve-2026-53359-januscape-talos-linux/index.md
  • content/en/blog/2026-07-14-network-isolation-between-tenants-cilium-ebpf-kube-ovn-vpc/index.md
  • content/en/blog/2026-07-17-using-cozystack-independently/index.md
  • content/en/blog/2026-07-22-linstor-drbd-replicated-storage/index.md
  • data/taxonomy.yaml
💤 Files with no reviewable changes (5)
  • content/en/blog/2026-07-14-cve-2026-43499-ghostlock-cozystack-exposure-assessment/index.md
  • content/en/blog/2026-07-17-using-cozystack-independently/index.md
  • content/en/blog/2026-07-14-network-isolation-between-tenants-cilium-ebpf-kube-ovn-vpc/index.md
  • content/en/blog/2026-07-22-linstor-drbd-replicated-storage/index.md
  • content/en/blog/2026-07-14-fixing-cve-2026-53359-januscape-talos-linux/index.md

📝 Walkthrough

Walkthrough

The pull request adds a blog taxonomy source of truth and updates article frontmatter to use the defined article types and topics.

Changes

Blog taxonomy

Layer / File(s) Summary
Taxonomy vocabulary definition
data/taxonomy.yaml
Defines the separate article_types and topics vocabularies, usage rules, and alphabetical maintenance requirements.
Article metadata alignment
content/en/blog/*/index.md
Updates article types and removes non-applicable topics from affected blog posts.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: kvaps, lllamnyp, myasnikovdaniil

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: separating the blog's article_types and topics taxonomies.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/taxonomy-cleanup

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@IvanHunters IvanHunters left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Verified the central claims against the full blog corpus (all 84 .md files under content/en/blog, not just the 7 touched posts):

  • Vocabulary is complete and tight. Every used article_type (announcement, case, how-to, news, release, tech-article) and every used topic (20 terms) maps exactly to data/taxonomy.yaml — no undeclared term in any post, no declared-but-unused term. case is genuinely in use.
  • Axes are disjoint in the actual data, not only in the declaration: the set of used article_types and the set of used topics do not intersect anywhere, so none of the five relocated terms (release, talos, networking, community, storage) remains on the wrong axis in any post. The cleanup is complete across the corpus, not just the diff.
  • Both lists are alphabetical; 1.0 / 1.3 / 1.4 / 1.5 release posts now all carry the release genre consistently.
  • No broken taxonomy links. Pruning terms from the article_types axis only drops the auto-generated term pages on that axis; a grep across content/ and layouts/ finds no inbound links to /article-types/*/ or /topics/*/, so the "no URL changes, no aliases needed" note holds.

Non-blocking notes:

  1. data/taxonomy.yaml is currently inert — nothing consumes it, so the closed vocabulary is convention-only and the next post can silently reintroduce drift. Worth a follow-up CI validator (already flagged as intended future work).
  2. hugo.yaml:7 still lists article_types as five terms (missing announcement), now a second listing that diverges from the new source of truth. Out of this PR's stated scope, but a candidate for a small follow-up.
  3. 2026-07-17-using-cozystack-independently carries two article_types (news + announcement), which contradicts the file's own "normally exactly one article_type" note. Pre-existing and both valid, so not a regression here.

@tym83
Timur Tukaev (tym83) merged commit 8306d96 into main Aug 3, 2026
7 checks passed
@tym83
Timur Tukaev (tym83) deleted the chore/taxonomy-cleanup branch August 3, 2026 15:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants