Require the submission confirmations - #2
Merged
Conversation
A new extension submission records two agreements from its author: permission to publish under the EULA, and acceptance of the BApp Store submission requirements. The issue form makes both mandatory, but a submission raised through the API bypasses the form and could omit them entirely, so nothing enforced them. The confirmations are checkboxes in the issue body, which this action never sees, so the caller extracts them and passes the keys it found. Which keys exist, what each one records, and which types must have them are declared here alongside the other required fields. Only extension-submission has any. A malformed value is reported once rather than also being counted as absent, as with url and version_number. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Why
A new extension submission records two agreements from its author: permission to publish under the EULA, and acceptance of the BApp Store submission requirements.
01-submit-extension.ymlinextension-portalmarks bothrequired: true, so the web form enforces them.A submission raised through the API bypasses the form entirely — increasingly common now that authors are using AI agents to submit — and could omit both boxes. Nothing enforced them, so such a submission reached the review queue with no agreement on record.
Shape
The confirmations are checkboxes in the issue body, which this action never sees — it takes extracted values, not the body. So the caller extracts them and passes the keys it found, exactly as it already does for
product_compatibility, which is also body checkboxes:What exists, what each one records, and which types require them are declared here alongside the other required fields:
Only
extension-submissiondeclares any.extension-update,bcheckandbambdadon't haveconfirmationsinapplicableFields, so the whole block is skipped for them and a value passed by mistake is ignored — same asversion_numberforbambdatoday.The absent-confirmations message names what is missing in words rather than by key, since it reaches the submitter:
It carries no markdown — the portal's comment poster escapes
*,_,`,[,]in this value, so emphasis would arrive as literal backslashes.A malformed value (bad JSON, not an array, unknown key) is reported once and skips the absent check, following the
urlValidationFailed/versionValidationFailedpattern.No output
confirmationsis input-only. Nothing downstream consumes the sanitized value, and adding an unused output invites someone to wire it up. Say the word if you'd rather it mirrorproduct_compatibilityexactly.Tests
Five new jobs (21 → 26):
extension-update: confirmations are not requiredTwo existing tests needed updating.
extension-submission: valid inputsandURL with trailing slash acceptedboth asserterror_message = ""and did not supply confirmations, so they would have failed. I also added confirmations toinvalid url is not also reported as missingto keep it single-purpose — without them it emitted a second unrelated error alongside the one it is asserting about.I extracted the action's script and ran all 26 jobs' inputs and assertions locally: 26 passed, 0 failed.
Caller
extension-portalcurrently does this check itself inextract_issue_fields.py. Once this is tagged, it swaps to passingconfirmationsand drops its own error handling in the same commit as the pin bump — so there is no window where the check is unenforced. Its own parsing of the checkbox labels stays put, next to the issue form template it mirrors.🤖 Generated with Claude Code