Repository navigation
v2 grammar: an admit_callers list may end in a comma (27 of 31 measured modules stop refusing whole) - #12796
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…parse each (decl_ref elements were over the new-witness budget) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…llary values, claims read them Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
approved these changes
Sep 30, 2026
briansrls
left a comment
Contributor
There was a problem hiding this comment.
APPROVE-MERGE at exact head 9b97527.
No findings. The grammar admits exactly one optional trailing comma after the required first admit_callers element, preserving the unchanged non-trailing form and continuing to refuse an empty or comma-only list. The change is parse-only at a clause already carried as preserved metadata, and the warm-enrolled controls discriminate the main failure without widening the element grammar.
Merge queue only. The actual merge_group candidate must pass against then-current main; no direct merge and no check bypass.
gunbai-bot
Bot
deleted the
session/keen-fox-715-admit-trailing-comma
branch
September 30, 2026 19:28
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.
XL-2, per quiet-seal-543's ruling: v2 parse refusals, one class per PR. This one is class C2.
The defect
v2.extdeps.languages.dagdag_grammar_admit_callers_clause_exprreadadmit_callers: [expr (, expr)* ]with no trailing comma. Every other comma list in the grammar (dag_grammar_comma_list_expr) admits one, and v1 reads the list with one. A multi-line caller list written with a trailing comma, which is the corpus's usual style, refused its whole module asparse_g0_tokens_remainat the].The change
The list's closing becomes
seq(opt(comma), rbracket). The first element is still required, soadmit_callers: []still refuses, as v1 does, and a list that is only a comma refuses too. The clause's only v2 consumer treats it as metadata (body_lowering_foldlistsdag_surface_admit_callers_clauseamong preserved shells;gunbc.rung_dropadmit_callers_discarded_on_the_native_route), so no positional reader depends on the spine.Controls (
v2.test.claim.parse.admit_callers_trailing_comma, one parse per claim)a_trailing_comma_in_admit_callers_parses_holds. Red on main, executed: on main with only this test added it FAILS, and the two controls beside it pass.an_admit_callers_list_without_a_trailing_comma_parses_holds: the unchanged form.an_admit_callers_list_of_only_a_comma_refuses_holds: the first element is still required.Parse count before and after
Population: the 46
.dagfiles whoseadmit_callerslist ends in a comma, all of which refuse on main. That includessrc/v2/std/compilers/cli_surface.dag, a v2 source.Instrument: a v2 parse (
conservation_subject_of_text.parsed).Coverage: 31 of the 46 were measured in both arms. The other 15 were in batches the BuildBuddy runner's one-hour limit cut off, in both arms.
The 4 that still refuse are the next classes, now exposed:
usesclause,uses net: Network, ingunbc.auth.approval_ntfy_access_readback(line 299) andgunbc.auth.approval_device_routes(line 771).&&, continuing the expression on the line before, intest.claim.dispatch_preflight_witness_test(line 163) andtest.claim.approval_device_redemption_witness_test(line 493).No emitted Rust changes: the v2 grammar has no stage0 mirror.
Land only via the merge queue.
🤖 Generated with Claude Code