docs: disclose how a contribution was produced, and what to check before opening it - #399
Merged
Merged
Conversation
…pening it Contributions increasingly come with a model somewhere in the loop, and the review that a change needs depends on how it was produced. Ask for that, the way caddyserver/caddy does: a required dropdown on every issue form and a disclosure section in a pull request template, with room to say how far the tooling went. Disclosing is not held against the contribution. There was no pull request template at all, so it also carries the checks that this module has actually been broken by before: the build without the HTTP cache, the dump format version that a changed node layout has to bump, the nginx version a newly used field first appeared in, and the argument list of a format macro, which ngx_sprintf() cannot check. Blank issues are turned off so that the forms are the way in.
There was a problem hiding this comment.
🔵 Needs a closer look
The required dropdowns default to “AI used,” so untouched forms can misreport assistance.
Warning
- Copilot's review of this pull request may be incomplete because some of the changed files are excluded by your Copilot content exclusion settings. See Excluding content from Copilot for details.
Pull request overview
Adds contributor guidance and AI-assistance disclosure fields to pull requests and issue forms.
Changes:
- Adds a project-specific pull request template.
- Adds disclosure dropdowns to three issue forms.
- Updates issue intake configuration.
File summaries
| File | Description |
|---|---|
.github/pull_request_template.md |
Adds PR guidance, checklists, and disclosure prompts. |
.github/ISSUE_TEMPLATE/submit_question.yaml |
Adds an assistance disclosure field. |
.github/ISSUE_TEMPLATE/feature_request.yaml |
Adds an assistance disclosure field. |
.github/ISSUE_TEMPLATE/bug_report.yaml |
Adds an assistance disclosure field. |
Review details
Files excluded by content exclusion policy (1)
- .github/ISSUE_TEMPLATE/config.yml
Suppressed comments (3)
.github/ISSUE_TEMPLATE/bug_report.yaml:68
- With no
default, GitHub preselects the first dropdown option, sorequired: truedoes not force an explicit choice here: a submitter who leaves the form untouched is recorded asAI used. Put a neutral placeholder first and instruct users to choose, or use a required free-text mechanism if the disclosure must be an intentional selection; otherwise this field can misreport assistance. GitHub issue forms cannot enforce that a placeholder is not submitted, so the exact replacement is a design choice.
options:
- AI used
- AI not used
.github/ISSUE_TEMPLATE/feature_request.yaml:53
- With no
default, GitHub preselects the first dropdown option, sorequired: truedoes not force an explicit choice here: a submitter who leaves the form untouched is recorded asAI used. Put a neutral placeholder first and instruct users to choose, or use a required free-text mechanism if the disclosure must be an intentional selection; otherwise this field can misreport assistance. GitHub issue forms cannot enforce that a placeholder is not submitted, so the exact replacement is a design choice.
options:
- AI used
- AI not used
.github/ISSUE_TEMPLATE/submit_question.yaml:46
- With no
default, GitHub preselects the first dropdown option, sorequired: truedoes not force an explicit choice here: a submitter who leaves the form untouched is recorded asAI used. Put a neutral placeholder first and instruct users to choose, or use a required free-text mechanism if the disclosure must be an intentional selection; otherwise this field can misreport assistance. GitHub issue forms cannot enforce that a placeholder is not submitted, so the exact replacement is a design choice.
options:
- AI used
- AI not used
- Files reviewed: 5/5 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Adds a pull request template, which the repository did not have, and adds an
assistance disclosure to the three issue forms.
Contributions increasingly come with a model somewhere in the loop, and how a
change was produced affects the review it needs — a patch someone wrote by hand
and a patch a model generated want different kinds of attention, even when both
are correct. Rather than guess, ask. This follows what
caddyserver/caddy does: a required
dropdown on every issue form, and a disclosure section in the pull request
template with room to say how far the tooling went. Disclosure is explicitly
not held against a contribution; the point is to review it properly.
Since there was no pull request template at all, it also carries a checklist of
the things this module has actually been broken by, rather than generic advice:
--without-http-cache, which fix: skip subrequests in LOG_PHASE handler and avoid cache lock nesting (P0 SIGSEGV + P1 deadlock risk) #344 broke and ci: build with and without the HTTP cache #350 added a CIjob for;
NGX_HTTP_VHOST_TRAFFIC_STATUS_DUMP_FORMAT_VERSION, which a change tongx_http_vhost_traffic_status_node_thas to bump, since that layout is bothwritten to the dump file and held in the shared memory zone;
nginx_version, so the module stillbuilds against older nginx;
ngx_sprintf()when a conversion is added toa
..._FMT_...macro. fix: pass cache-zone overCounts arguments in format order #398 fixed a mismatch of exactly this kind that hadbeen in the tree since 2015, because
ngx_sprintf()is variadic and nothingchecks it.
blank_issues_enabled: falseis added so the forms are the way in.Two deliberate differences from caddy's templates:
nginx -Voutput and a reproducingnginx.conf, which are worth keeping, sothey are left as they are and only gain the disclosure.
That is omitted here: with no
default, arequireddropdown startsunselected anyway, and an empty option string is a needless risk of the form
failing to render.
How it was verified
The three issue forms and
config.ymlwere parsed and checked to confirm thedisclosure is present and required in each:
GitHub validates issue forms when they reach the default branch, so the forms
are worth a look on the preview before merging. No code changes, so the build
and the test suite are untouched.
Checklist
Nothing here touches the module source, so the build, dump format, nginx
version and format macro items do not apply.
README.mdandCHANGELOG.mdare updated if the change is visible tousers — not applicable; this changes the contribution forms, not the
module.
Assistance Disclosure
AI used. I asked Claude to look at caddyserver/caddy's templates and adapt them
for this repository; it drafted the files and checked the YAML, and I reviewed
the result and chose what to keep from caddy and what to leave alone. The
checklist items come from problems found in this repository over the last few
weeks.