Repository navigation
Keep the Gate-B cycle across a WIP amend --no-edit (0.13.2) #30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
cfa7b24
Keep the Gate-B cycle across a WIP amend --no-edit (0.13.2)
dsnger c9e274b
Refuse the amend exemption when a message hook can rewrite it (PR #30…
dsnger f9ca1fc
Refuse the amend exemption when the hooks directory holds any hook (P…
dsnger 48e3fda
Drop inherited command-scope git config in the hook suite (PR #30 rev…
dsnger File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:773 | The new message-setting exclusion misses valid shell-quoted options and Git long-option abbreviations: on a WIP HEAD both git commit --amend --no-edit '-m' 'real message' and git commit --amend --no-edit --mes='real message' are classified as WIP | PreToolUse skips Gate B and, when a commit-msg hook rejects the real closing attempt, PostToolUse preserves the fingerprint, pass count and fresh count instead of the required conservative reset; reproduced with actual Git attempts returning 1 | Restrict the new exemption to command forms whose message-preserving arguments are positively recognized, treating quoted or abbreviated message-setting options and other uncertain forms as non-WIP; add failed-closing regression cases | ||
| MINOR | high | plugins/dev-workflow/hooks/codex-gate.sh:773 | The exclusion scans the entire command and mistakes Git global -c and -C options for commit message-setting flags; git -c core.quotePath=false commit --amend --no-edit still resets on a WIP HEAD | Common Git invocations continue to destroy the Gate-B cycle despite preserving the WIP message, leaving the requested fix incomplete for those forms | Distinguish options before the commit subcommand from its message-setting options without redesigning commit detection, and cover global -c and -C in the regression suite | ||
| MINOR | high | plugins/dev-workflow/CHANGELOG.md:31-32; plugins/dev-workflow/hooks/codex-gate.sh:767-770 | New prose says any message-setting amend disqualifies the WIP exemption and resets, but the retained first branch accepts git commit --amend -m 'WIP: fixes' immediately and preserves the cycle | The shipped changelog and hook explanation misstate the reset boundary and contradict the intentionally retained behavior | Qualify both claims to state that the new HEAD-based exemption rejects message-setting flags while the existing explicit -m WIP exemption remains in force | ||
| END OF FINDINGS (3 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:778 | The short-option exclusion omits -e, so git commit --amend --no-edit -e is classified as WIP even though Git opens the editor and can replace the WIP subject | PreToolUse suppresses Gate-B on a real closing attempt; if the commit fails and HEAD stays WIP, PostToolUse also retains the fingerprint and both counters, violating invariant 2 | Include e in the short-option exclusion and add standalone, quoted and combined -e regressions for both hook phases under sh and dash. | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:775 | The new exemption trusts the jq-free input_field result even when an escaped double quote truncates it: git commit --amend --no-edit "-m" "real" loses the message-setting flag before this scan | Without jq, a real closing attempt receives the WIP note and a failed commit preserves gateB, passCount and freshCount; this newly unsafe fallback violates invariants 2 and 4 | Refuse the new exemption when fallback extraction is incomplete or contains undecoded escapes, or decode the command reliably; add correctly JSON-escaped double-quoted flag cases through the jq-free runner. | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:779 | HEAD is read from repo_root even when the command uses git -C to commit in another repository; with WIP HEAD in the hook cwd and non-WIP HEAD in the target, git -C <target> commit --amend --no-edit is incorrectly classified as WIP | A non-WIP closing attempt suppresses the Gate-B reminder and preserves the current cycle state instead of taking the required reset path, violating invariant 2 | Resolve the effective repository for the HEAD check or conservatively decline this exemption when repository-changing arguments or commands make the target uncertain; test a WIP cwd against a non-WIP target. | ||
| END OF FINDINGS (3 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:784 | Shell quote concatenation bypasses message-option rejection: git commit --amend --no-edit -''m real and git commit --amend --no-edit --''message=real qualify as WIP although the shell passes -m or --message to Git | PreToolUse suppresses the Gate-B reminder and a failed closing attempt leaves HEAD WIP so PostToolUse retains gateB/passCount/freshCount, violating invariant 2 and the required reset for message-setting attempts; reproduced under sh and dash | Conservatively reject unsupported quoting in the new exemption, leaving the existing -m WIP branch unchanged, or recognize only a tightly bounded safe token form; add Pre/Post regression assertions with a rejecting commit-msg hook | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:782-783 | Raw substring searches mistake comments and filenames for effective options: git commit --amend # --no-edit and git commit ./file--amend--no-edit both qualify; git commit --amend --no-edit --no-amend also qualifies after cancelling amend | Actual editor-driven closing attempts receive the WIP note and failed attempts retain the Gate-B fingerprint and counters; comment and filename cases reproduced with an editor writing a real message and a rejecting commit-msg hook under sh and dash, violating invariant 2 | Require effective standalone --amend and --no-edit options within a bounded supported command form; decline comments, option-value/pathspec decoys and overriding --no-amend; add Pre/Post regression assertions | ||
| END OF FINDINGS (2 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:781 | The unrestricted -c argument accepts Bash brace expansion: git -c {core.quotePath=false,-C,other} commit --amend --no-edit matches the exemption but executes git -c core.quotePath=false -C other commit --amend --no-edit | With the hook repository on a WIP HEAD and other on a non-WIP HEAD, PreToolUse suppresses Gate B and PostToolUse retains the fingerprint and both counters after a real closing attempt; reproduced with the hook under sh and dash, violating AGENTS.md invariant 2 | Remove global -c from this bounded exemption or constrain its tokens to literal nonexpanding syntax; add Pre/Post regression assertions for brace expansion | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:781 | Arbitrary global -c settings can change the retained message: git -c core.commentChar=W -c commit.cleanup=strip commit --amend --no-edit strips a WIP subject and promotes the next noncomment body line to the subject | The actual amend becomes non-WIP while PreToolUse reports cycle preserved and suppresses Gate B; a rejected attempt leaves the WIP HEAD and also escapes the PostToolUse reset, violating AGENTS.md invariant 2 | Exclude global -c overrides or permit only explicitly safe settings and fail conservatively for message-affecting settings; cover a WIP subject with non-WIP body and rejecting commit-msg hook | ||
| END OF FINDINGS (2 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| NO FINDINGS | ||
| END OF FINDINGS (0 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| MINOR | high | todos.md:498-501 | The fix annotation describes the allow-listed command and WIP HEAD as sufficient but omits the core.commentChar/core.commentString configuration guard | The documented plain amend still resets when either key is configured, even core.commentChar=#, so the annotation overstates which cases are fixed | Include the absence of both configuration keys as a prerequisite or reference is_wip_commit for the exact conditions | ||
| END OF FINDINGS (1 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.test.sh:621,642-657 | The new lifecycle tests resolve hooksd through rev-parse without first overriding inherited core.hooksPath; with a global hooks directory, their writes, chmods and removals target the developer's real pre-commit, prepare-commit-msg and commit-msg hooks outside the sandbox. An isolated global-config reproduction confirmed an existing hook was overwritten and deleted. | Running the test suite can destroy user hook files and permissions. | Configure a repository-local hooksPath pointing to a dedicated sandbox directory before the first test commit, and restore that isolated setting after the custom hooksPath scenario; add a regression using an isolated global config and untouched sentinel hooks. | ||
| MINOR | high | plugins/dev-workflow/hooks/codex-gate.sh:793-796 | Command substitution strips trailing newlines from the hooks directory returned by rev-parse. A valid core.hooksPath ending in a newline therefore makes the presence checks inspect a different directory. Reproduced with an executable rejecting commit-msg: PreToolUse emitted the WIP exemption, the amend failed, and PostToolUse retained passCount=2. | This uncommon but valid hooksPath bypasses the required hook-presence refusal, suppressing the reminder and missing the conservative reset. | Preserve the path bytes and command status when capturing rev-parse output, or conservatively refuse paths whose representation cannot be preserved; cover a trailing-newline hooksPath under sh and dash. | ||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
| MINOR | high | CLAUDE.md:1318-1320; plugins/dev-workflow/commands/workflow-init.md:1507-1509; docs/architecture.md:90-93 | These passages still promise that a WIP-prefixed commit message preserves the counters. The new guard resets even a plain amend --no-edit whose message hook accepts the commit without changing its WIP subject, a shape exempt at the review base. | The workflow documentation and scaffolded instructions overstate the exemption and contradict the new behavior, contrary to prompt-standards item 7 and AGENTS.md's mechanism-accuracy rule. | Qualify preservation as applying to commands recognized by the hook and document the conservative amend restrictions, keeping CLAUDE.md and the inline template synchronized. | ||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
| END OF FINDINGS (3 total) | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.test.sh:625-628,650-665 | The hooks-directory guard compares path strings without excluding symlinks. The earlier git init can inherit init.templateDir or GIT_TEMPLATE_DIR containing a hooks symlink; Git copies it into .git/hooks, so both compared strings are .git/hooks even when it resolves outside the sandbox. Reproduced with a temporary template and shared hooks directory. | The new redirections overwrite shared pre-commit, prepare-commit-msg or commit-msg hooks, and cleanup removes them, destroying developer files outside the test repository. Disabling global configuration after initialization does not remove copied symlinks. | Initialize the test repository with an explicitly controlled empty template and create its own hooks directory, or reject external/symlinked hook directories and individual hook paths before any writes; add a sandboxed regression using a template symlink. | ||
| MINOR | high | plugins/dev-workflow/CHANGELOG.md:34-35; todos.md:502-503 | Both edited exemption-condition lists require only absence of message hooks in the effective directory, but codex-gate.sh:795 refuses every configured core.hooksPath, including an empty directory or /dev/null. | The requested exhaustive annotations still promise cycle preservation in configurations where the hook resets it. | State explicitly in both descriptions that core.hooksPath must be unset, in addition to neither message hook existing in the default hooks directory. | ||
| END OF FINDINGS (2 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| MINOR | high | plugins/dev-workflow/hooks/codex-gate.test.sh:623 | Git configuration isolation begins after section 19b, whose positive WIP assertions now require core.hooksPath to be unset; a temporary global config pointing core.hooksPath at an empty directory reproduces two failures at lines 580 and 582 | The new guard correctly refuses the exemption, but the test expects preservation, so a legitimate developer configuration makes the quality suite fail | Move configuration and default-hook isolation before section 19b and preserve inherited environment values when restoring section-local configuration | ||
| END OF FINDINGS (1 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| NO FINDINGS | ||
| END OF FINDINGS (0 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| NO FINDINGS | ||
| END OF FINDINGS (0 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:773 | The new no-message guard misses valid quoted and abbreviated message flags: git commit --amend --no-edit '-m' '' and git commit --amend --no-edit --mes='' are classified as WIP on a WIP HEAD despite the requirement that message-setting closing attempts still reset | Both real Git commands abort for an empty message while retaining the WIP HEAD, and PostToolUse now preserves Gate-B state and both counters; PreToolUse also suppresses the closing-attempt reminder for these flag forms | Restrict the new exemption to unambiguous message-preserving invocations, conservatively rejecting quoted or abbreviated message-setting flags, and add failed-attempt regressions for both forms | ||
| MINOR | high | plugins/dev-workflow/hooks/codex-gate.sh:773 | The short-option guard scans the whole Bash command and mistakes Git's global -c configuration option for git commit's message-reediting -c: git -c core.hooksPath=/dev/null commit --amend --no-edit is rejected from the WIP exemption | A successful amend retaining HEAD's WIP subject still clears Gate-B state and both counters, so the requested reset fix remains broken for ordinary per-command Git configuration | Distinguish global Git options from commit message-setting options, conservatively fall back for ambiguous commands, and add a WIP amend regression with global git -c | ||
| END OF FINDINGS (2 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:778 | The new exemption rejects --edit but omits its short alias -e: git commit --amend --no-edit -e on a WIP HEAD is classified as WIP, although Git opens the editor and can replace the message. Verified with an editor writing a real closing subject and a rejecting commit-msg hook. | Under both sh and dash, PreToolUse suppresses Gate B and PostToolUse preserves gateB, passCount and freshCount when the closing attempt fails and HEAD remains WIP, contrary to the requested closing-attempt reset and invariant 2. | Include e in the rejected short-option set and add PreToolUse/PostToolUse regression assertions for -e, including a failed closing attempt. | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:775-779 | The new exemption trusts the incomplete command returned by the jq-free input_field fallback (lines 34-35): git commit --amend --no-edit "-m" "real message" is truncated at the first JSON-escaped quote, hiding the message-setting flag. The jq path correctly rejects this command; the jq-free path now accepts it as WIP. | Reproduced under sh and dash without jq: PreToolUse emits the WIP exemption and PostToolUse preserves all three Gate-B state files on a failed closing attempt with WIP HEAD. Previously this command reset; the regression violates the requested message-flag exclusion and invariants 2 and 4. | Make the new exemption decline when command extraction is incomplete, or extract the complete escaped JSON string correctly; add double-quoted message-flag regression cases using the jq-free runner. | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:779 | The new HEAD lookup always reads repo_root even when git -C selects another repository; from WIP repository A, git -C /path/to/B commit --amend --no-edit is exempted although repository B has a non-WIP HEAD | This newly suppresses the Gate-B reminder and preserves cycle state for an amend on a non-WIP HEAD, contrary to the explicit requirement that such attempts keep resetting; reproduced with two temporary repositories | Conservatively refuse this exemption for commands that redirect the repository, or resolve their effective target before checking its subject; add a regression with WIP invocation root and non-WIP target | ||
| END OF FINDINGS (3 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:784 | The message-option rejection examines raw shell spelling: git commit --amend --no-edit -'m' 'real closing message' passes the new exemption although the shell supplies -m to Git. Verified that Git accepts it and replaces the subject; with a rejecting commit-msg hook HEAD remains WIP. | PreToolUse suppresses Gate B and PostToolUse preserves the fingerprint, pass count and fresh count after this failed real closing attempt, contrary to the explicit requirement and invariant 2; the base hook correctly resets under both sh and dash. | Restrict the new exemption to an unambiguous argument grammar and fall through on unsupported quoting, or safely recognize shell quote concatenation without executing the command; add Pre/Post regression assertions for this message-setting form. | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:782 | The required --amend and --no-edit checks accept substrings anywhere in the remaining command, and the shell-syntax guard permits comments. Thus git commit --amend # --no-edit receives the WIP exemption even though Git never receives --no-edit and opens the message editor. | A real interactive closing attempt suppresses the Gate-B reminder; when its editor fails and leaves HEAD WIP, all three Gate-B state files survive. Reproduced under sh and dash, whereas the base hook resets. This violates the requirement to exempt only an amend that keeps the message and invariant 2. | Require actual standalone option tokens before any pathspec separator and reject comments or other unparsed syntax conservatively; add Pre/Post coverage for --no-edit appearing only in a comment or path argument. | ||
| END OF FINDINGS (2 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:781 | The unrestricted global -c operand admits shell brace expansion: with a WIP HEAD locally and a non-WIP HEAD in /tmp/other, git -c {core.quotePath=false,-C,/tmp/other} commit --amend --no-edit passes this allow-list, but Bash expands it into git -c core.quotePath=false -C /tmp/other commit --amend --no-edit. The hook checks the local WIP subject instead of the actual target, violating the requirement that a non-WIP amend remain a closing attempt. | Reproduced under both sh and dash: PreToolUse reports Codex cycle preserved and PostToolUse retains gateB, passCount and freshCount; the base hook resets all three. The expanded command can successfully amend the non-WIP commit, suppressing the Gate-B reminder and missing the required reset (invariant 2). | Remove optional global -c support or constrain its operands to literal shell-safe tokens, rejecting brace and pathname expansion; add PreToolUse and PostToolUse regression assertions for the expanded foreign-repository command. | ||
| END OF FINDINGS (1 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| MAJOR | high | plugins/dev-workflow/hooks/codex-gate.sh:785 | The plain-command exemption assumes --no-edit preserves the WIP subject without checking effective Git cleanup settings: with HEAD message "WIP: snapshot\n\nReal subject", core.commentChar=W and commit.cleanup=strip, the accepted git commit --amend --no-edit actually creates subject "Real subject" | PreToolUse incorrectly suppresses Gate-B on a real closing amend, violating invariant 2; the later PostToolUse reset cannot restore the missed pre-commit reminder | Decline the exemption when effective cleanup settings can remove the WIP subject, or verify the effective cleaned message remains WIP, and add a configured-repository regression for the plain command | ||
| END OF FINDINGS (1 total) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| MINOR | high | todos.md:498-501 | The new fix annotation describes the command allow-list and WIP HEAD as sufficient for preserving the cycle but omits the core.commentChar/core.commentString guard implemented at codex-gate.sh:787. | A repository with core.commentChar=W satisfies every documented condition yet the plain git commit --amend --no-edit still resets all three Gate-B state files; the requested backlog annotation therefore overstates the fixed scope. | Reference is_wip_commit as the authoritative predicate, or include the requirement that neither comment configuration key is set in any effective Git configuration scope. | ||
| END OF FINDINGS (1 total) |
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.