[quality] .github/ISSUE_TEMPLATE/ is untested; the blog-post author dropdown silently drifts from blog/authors.yml

Open Beginner friendly
#310 0 comments 0 reactions 0 assignees View on GitHub

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

agent/quality hive/hosted-available-lke648397-260827-5n31 quality testing

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-empty name, description and body
  • 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 id and a non-empty attributes.label; every markdown element has attributes.value
  • every dropdown has a non-empty list of unique attributes.options
  • blog-post.yml exists and still collects title, content and author
  • every author dropdown option resolves in blog/authors.yml
  • .github/PULL_REQUEST_TEMPLATE.md is 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from cncf/endusers

All issues in cncf/endusers

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.