|
| 1 | +# Todo: Improve Label Categorization in Monthly Reports |
| 2 | + |
| 3 | +**Created:** 2026-01-28 |
| 4 | +**Status:** Pending |
| 5 | +**Estimated Effort:** 30-45 minutes |
| 6 | +**Priority:** Medium |
| 7 | + |
| 8 | +## Objective |
| 9 | + |
| 10 | +Expand label categorization in monthly reports to include uncategorized `area/*` labels and add descriptive text for each category section. |
| 11 | + |
| 12 | +## Background |
| 13 | + |
| 14 | +Currently, several labels from `projectbluefin/common` appear in the "Other" section because they're not mapped to report categories. This todo addresses the remaining uncategorized labels while maintaining the established pattern of only showing `area/*` labels in sections (with exceptions for specific `kind/*` labels already included). |
| 15 | + |
| 16 | +## Changes Required |
| 17 | + |
| 18 | +### 1. Add Missing Labels to Categories |
| 19 | + |
| 20 | +**File:** `scripts/lib/label-mapping.mjs` |
| 21 | + |
| 22 | +Add these labels to existing categories: |
| 23 | + |
| 24 | +```javascript |
| 25 | +export const LABEL_CATEGORIES = { |
| 26 | + Desktop: ["area/gnome", "area/aurora", "area/bling"], |
| 27 | + Development: ["area/dx"], |
| 28 | + Ecosystem: ["area/brew", "area/bluespeed", "area/flatpak"], |
| 29 | + "System Services & Policies": ["area/services", "area/policy"], |
| 30 | + Hardware: ["area/hardware", "area/nvidia", "aarch64"], // ADD aarch64 |
| 31 | + Infrastructure: [ |
| 32 | + "area/iso", |
| 33 | + "area/upstream", |
| 34 | + "area/buildstream", |
| 35 | + "area/finpilot", |
| 36 | + "area/just", |
| 37 | + "area/testing", |
| 38 | + ], |
| 39 | + Documentation: ["kind/documentation"], |
| 40 | + "Tech Debt": ["kind/tech-debt", "kind/parity"], // ADD kind/parity |
| 41 | + Automation: ["kind/automation", "kind/github-action", "kind/renovate"], |
| 42 | + Localization: ["kind/translation"], |
| 43 | +}; |
| 44 | +``` |
| 45 | + |
| 46 | +### 2. Add Category Descriptions |
| 47 | + |
| 48 | +**File:** `scripts/lib/markdown-generator.mjs` |
| 49 | + |
| 50 | +Modify `generateCategorySection()` to include italic descriptions below each category header. Use these descriptions (derived from label descriptions in GitHub): |
| 51 | + |
| 52 | +- **Desktop:** _GNOME desktop environment, Aurora variant (KDE), and terminal enhancements_ |
| 53 | +- **Development:** _Development tools and IDE integrations_ |
| 54 | +- **Ecosystem:** _Homebrew packages, AI/ML tools (Bluespeed), and Flatpak applications_ |
| 55 | +- **System Services & Policies:** _Systemd services and system-level policies_ |
| 56 | +- **Hardware:** _Hardware support, drivers, NVIDIA GPU, and ARM64 architecture_ |
| 57 | +- **Infrastructure:** _ISO images, upstream integration, build systems, and testing frameworks_ |
| 58 | +- **Documentation:** _Documentation improvements and additions_ |
| 59 | +- **Tech Debt:** _Maintenance work and feature parity between variants_ |
| 60 | +- **Automation:** _CI/CD pipelines, GitHub Actions, and automated dependency updates_ |
| 61 | +- **Localization:** _Translation and internationalization work_ |
| 62 | + |
| 63 | +### 3. Ignore Specific Labels |
| 64 | + |
| 65 | +Ensure these labels are excluded from all categories and "Other" section: |
| 66 | + |
| 67 | +- `dependencies` (meta label for Renovate) |
| 68 | +- `lgtm`, `size/*`, `stale`, `duplicate`, `invalid`, `wontfix`, `question` |
| 69 | +- `good first issue`, `help wanted` |
| 70 | + |
| 71 | +## Implementation Steps |
| 72 | + |
| 73 | +1. **Update label mapping:** |
| 74 | + - Add `aarch64` to Hardware array |
| 75 | + - Add `kind/parity` to Tech Debt array |
| 76 | + |
| 77 | +2. **Create category descriptions map:** |
| 78 | + |
| 79 | + ```javascript |
| 80 | + const CATEGORY_DESCRIPTIONS = { |
| 81 | + Desktop: |
| 82 | + "GNOME desktop environment, Aurora variant (KDE), and terminal enhancements", |
| 83 | + Development: "Development tools and IDE integrations", |
| 84 | + // ... etc |
| 85 | + }; |
| 86 | + ``` |
| 87 | + |
| 88 | +3. **Modify markdown generator:** |
| 89 | + - Update `generateCategorySection()` to inject descriptions |
| 90 | + - Format: `## Category Name\n\n*Description text*\n\n### Planned Work` |
| 91 | + |
| 92 | +4. **Test changes:** |
| 93 | + |
| 94 | + ```bash |
| 95 | + npm run generate-report -- --month=2026-01 |
| 96 | + npm run generate-report -- --month=2025-12 |
| 97 | + ``` |
| 98 | + |
| 99 | +5. **Verify results:** |
| 100 | + - Check that `aarch64` PRs appear in Hardware section |
| 101 | + - Check that `kind/parity` PRs appear in Tech Debt section |
| 102 | + - Check that "Other" section is further reduced |
| 103 | + - Check that category descriptions render correctly |
| 104 | + |
| 105 | +6. **Preview in browser:** |
| 106 | + ```bash |
| 107 | + npm run start |
| 108 | + # Navigate to /reports and verify formatting |
| 109 | + ``` |
| 110 | + |
| 111 | +## Success Criteria |
| 112 | + |
| 113 | +- [ ] `aarch64` label mapped to Hardware category |
| 114 | +- [ ] `kind/parity` label mapped to Tech Debt category |
| 115 | +- [ ] All category sections have italic descriptions |
| 116 | +- [ ] "Other" section reduced by items now in Hardware/Tech Debt |
| 117 | +- [ ] Reports regenerate without errors |
| 118 | +- [ ] Descriptions render correctly in browser |
| 119 | +- [ ] Git commit follows conventional commit format |
| 120 | + |
| 121 | +## Expected Impact |
| 122 | + |
| 123 | +- **"Other" section reduction:** Additional ~2-5% reduction (depends on aarch64/parity PR count) |
| 124 | +- **Improved clarity:** Category descriptions help readers understand what types of work fall under each area |
| 125 | +- **Better organization:** All relevant `area/*` labels now properly categorized |
| 126 | + |
| 127 | +## Notes |
| 128 | + |
| 129 | +- This follows the pattern established in commit `e568ef8` (translation label implementation) |
| 130 | +- Maintains the "no emojis in headers" rule from commit `e417e45` |
| 131 | +- Category descriptions should use **italic** format (`*text*`) not bold |
| 132 | +- Keep "New Lights" section name unchanged (Guardian theme) |
| 133 | + |
| 134 | +## References |
| 135 | + |
| 136 | +- Label mapping: `scripts/lib/label-mapping.mjs` |
| 137 | +- Markdown generator: `scripts/lib/markdown-generator.mjs` |
| 138 | +- GitHub labels: https://github.com/projectbluefin/common/labels |
| 139 | +- Previous work: `.planning/translation-label-proposal.md` |
0 commit comments