Content Taxonomy
This document defines the canonical taxonomy for all content in the Engineering Journal.
The taxonomy is strictly enforced and defined in .github/taxonomy.yml.
Structure
The taxonomy consists of:
- Domains (high-level classification)
- Tags (controlled vocabulary)
Domains
Each document MUST have one primary_domain and may have optional secondary_domains.
primary_domain: networking
secondary_domains:
- troubleshooting
Current allowed domains: governance, networking, security, systems, cloud, devops, troubleshooting, career, learning, personal, academia, knowledge, engineering.
Tags
Tags MUST:
- come from the approved taxonomy in
.github/taxonomy.yml - be relevant to the content
- be consistent across documents
tags:
- smb
- authentication
- windows
Enforcement
The following rules are enforced via CI:
primary_domainMUST exist in taxonomysecondary_domainsMUST exist in taxonomytagsMUST exist in taxonomy- Unknown values result in CI failure
Design Principles
- Deterministic — all values are controlled and validated
- Scalable — new domains and tags are added via PR
- Flexible — domains provide structure, tags provide flexibility
- Consistent — no free-form tagging allowed
Adding to Taxonomy
To add a new domain or tag:
- Update
.github/taxonomy.yml - Submit a PR with label
type:chore,area:repo - Ensure naming consistency
- Avoid duplicates or synonyms
Anti-Patterns
Avoid:
- duplicate tags (e.g.,
networkvsnetworking) - overly broad tags (e.g.,
misc) - redundant domains
- tagging everything