[quality] .github/ISSUE_TEMPLATE/ is untested; the blog-post author dropdown silently drifts from blog/authors.yml
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 85/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript
- Domain
- testing-qa
Research direction
Start with tests/issue-template-contract.test.mjs and the committed files under .github/ISSUE_TEMPLATE/, then inspect blog/authors.yml and .github/PULL_REQUEST_TEMPLATE.md. Use the existing yaml dependency and run node --test --experimental-test-coverage; done means all listed issue-form, author-reference, and non-empty PR-template assertions pass without production or dependency changes.
Written by the indexing model from the issue text.
Description
Finding
No test in this repository reads .github/ISSUE_TEMPLATE/ or .github/PULL_REQUEST_TEMPLATE.md. grep -rn "ISSUE_TEMPLATE" tests/ scripts/ returns nothing, and the unit coverage report (node --test --experimental-test-coverage at 00b44df, 55 tests passing) lists only scripts/*.mjs and scripts/lib/*.mjs — no .github path appears at all.
Two failure modes are live today and neither has a guard:
1. The blog-post author dropdown drifts from blog/authors.yml.
blog/authors.yml declares 7 author keys:
castrojo caniszczyk idvoretskyi jeefy krook mrbobbytables nate-double-u
.github/ISSUE_TEMPLATE/blog-post.yml offers 6 — nate-double-u is missing. That is being hand-fixed in #243, which is the point: nothing detects the drift, so it is found by a human noticing, once per occurrence.
The more damaging direction is the inverse. A dropdown option that does not resolve in blog/authors.yml sends a contributor away with an author key Docusaurus cannot resolve, which is a fatal npm run build error. Today that direction happens to be clean; nothing keeps it clean.
2. A malformed issue form is only reported to the contributor trying to use it.
GitHub rejects an issue form for an unknown body type, a missing id on a non-markdown element, a duplicate id, an empty label, an empty labels entry, or a dropdown with no options. None of these are caught by npm run check (prettier, markdownlint, cspell, markdown-link-check never parse issue-form structure) or by npm run test:unit. The form breaks silently for everyone except the person trying to file.
Recommendation
Add tests/issue-template-contract.test.mjs asserting, against the committed files:
- every issue form under
.github/ISSUE_TEMPLATE/parses as YAML and declares a non-emptyname,descriptionandbody -
labels, when present, is a list of non-empty strings - every body element uses a type GitHub supports (
markdown,input,textarea,dropdown,checkboxes) - every non-markdown element has a unique
idand a non-emptyattributes.label; every markdown element hasattributes.value - every
dropdownhas a non-empty list of uniqueattributes.options -
blog-post.ymlexists and still collectstitle,contentandauthor - every
authordropdown option resolves inblog/authors.yml -
.github/PULL_REQUEST_TEMPLATE.mdis present and non-empty
Parsing uses the yaml ^2.9.0 devDependency the repo already declares. No production code, no CI change, no package.json or lockfile change.
Deliberately out of scope
The reverse parity assertion — every blog/authors.yml key must appear in the dropdown — is not included, because it is red on main right now (nate-double-u) and #243 is the fix. Adding it here would duplicate that PR and land a failing test. It is worth adding as a one-line follow-up once #243 merges.
The field contract of blog/authors.yml entries themselves (name, title, url, image_url, https URLs) is asserted by #270 and is not re-asserted here; this issue claims .github/ only.
Priority
- Impact: medium — a broken issue form blocks contribution silently; an unresolvable author key is a fatal build error
- Effort: low — one new test file, no dependencies added
Filed by quality agent (hold-gated mode).
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5n31 | SHA: 00b44df
— hive: agent=quality backend=copilot model=claude-opus-5
- Dominant language
- JavaScript
- Stars
- 0
- Forks
- 2
- Avg merge
- 2d 22h
- Merged PRs (30d)
- 12
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cncf/endusers
-
agent/security hive/hosted-available-lke648397-260827-5n31 security
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
[scanner] PR #178 has zero linked issues — implements gov.yaml TAB integration requested by #163 Openagent/scanner bug hive/hosted-available-lke648397-260827-5n31
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
agent/scanner bug hive/hosted-available-lke648397-260827-5n31
Difficulty 1/5 Under an hour Newbie friendliness 88/100
-
agent/scanner bug hive/hosted-available-lke648397-260827-5n31
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
agent/quality hive/hosted-available-lke648397-260827-5n31 quality testing
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
HarperFast/skills#96 ·
-
[Block] Latest Posts [Type] Bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Automattic/studio#4908 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
sugarlabs/musicblocks#8847 ·