Skip to content

Stand in front of the five gh verbs that were publishing text through nothing - #83

Merged
HackingGate merged 1 commit into
mainfrom
adopt-the-verbs-that-publish
Aug 21, 2026
Merged

Stand in front of the five gh verbs that were publishing text through nothing#83
HackingGate merged 1 commit into
mainfrom
adopt-the-verbs-that-publish

Conversation

@HackingGate

Copy link
Copy Markdown
Owner

Closes #80. The engine half shipped in #81 and 1.8.0; this is the adoption.

The five

invocation publishes needed
gh pr merge -b/--body, -F/--body-file, -t/--subject the merge commit message the verb only -- its flags were already named
gh issue close -c/--comment a closing comment the verb and [[shim.verbs]]
gh pr close -c/--comment a closing comment as above
gh issue reopen -c/--comment a reopening comment as above
gh pr reopen -c/--comment a reopening comment as above

All five reached a forge with nothing in front of them.

Why four of them needed a schema change first

-c is a boolean on gh pr review -- which this table already matches -- and takes a value on gh issue close. Naming it table-wide would have made gh pr review -c -b "body" read -c as consuming -b, so the body being published goes unread. That is a false negative traded for a false negative, which is why #79 refused the second-[[shim]] workaround and #81 added per-verb vocabularies instead.

The entry's list replaces the table's for those four verbs, which is why --title and --body are absent from it: neither is a flag those commands accept, and reading a flag a command will not take is this shim claiming to have checked a subject that was never published.

The ordering, since it is not optional

  1. pin moved to v1.8.0
  2. installed binary reinstalled -- cargo install --git ... --tag v1.8.0
  3. this

A policy naming [[shim.verbs]] that an older binary reads is a policy that will not load, and the installed binary is the shim -- so adopting first leaves every git command in the tree failing closed. That is not hypothetical: it happened here while developing #81, and it is why the release shipped the capability without its own adoption.

Verification

  • cargo test -- 564 pass, 0 fail
  • cargo clippy --all-targets, cargo fmt --check -- clean
  • every lefthook pre-commit command run directly, Python suite included
  • uphold shim gh issue close 1 --comment "<marker>" now refuses; before this it published

One note for anyone reproducing that last check: uphold_check.py prefers target/release/uphold over PATH, so a stale release build reports could not look on the new field. Rebuild before running the Python gates.

… nothing

`gh issue close`, `gh pr close`, `gh issue reopen` and `gh pr reopen` each take
`-c/--comment` and publish it. `gh pr merge` takes `-b/--body`,
`-F/--body-file` and `-t/--subject` and publishes the merge commit message.
None of them was matched by this table, so all five reached a forge with nothing
in front of them.

`pr:merge` needed only the verb -- its flags were already named and mean the
same thing there. The four close/reopen verbs needed 1.8.0's
`[[shim.verbs]]`, because `-c` is a BOOLEAN on `gh pr review` -- which this
table already matches -- and takes a VALUE on `gh issue close`. Naming it
table-wide would have made `gh pr review -c -b "body"` read `-c` as consuming
`-b`, so the body being published would go unread: a false negative traded for a
false negative.

The entry's list replaces the table's for those four verbs, which is why
`--title` and `--body` are absent from it. Neither is a flag those commands
accept, and reading a flag a command will not take is this shim claiming to have
checked a subject that was never published.

Ordering, since it is not optional: the pin moved to v1.8.0 and the installed
binary was reinstalled before this landed. A policy naming `[[shim.verbs]]` that
an older binary reads is a policy that will not load, and the installed binary is
the shim -- so adopting first would leave every git command in the tree failing
closed.
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@HackingGate, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 10 minutes

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

Wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

An organization admin can change what happens after included review limits in Billing.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ca48a544-219a-4440-bcb3-c34c2cc526ec

📥 Commits

Reviewing files that changed from the base of the PR and between 707f671 and d595aca.

📒 Files selected for processing (1)
  • policy/principles.toml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.51%. Comparing base (707f671) to head (d595aca).

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #83   +/-   ##
=======================================
  Coverage   90.51%   90.51%           
=======================================
  Files          35       35           
  Lines       11339    11339           
=======================================
  Hits        10264    10264           
  Misses       1075     1075           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@HackingGate
HackingGate merged commit 07dedf2 into main Aug 21, 2026
12 checks passed
@HackingGate
HackingGate deleted the adopt-the-verbs-that-publish branch August 21, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Five gh verbs publish text through no table, and the flag that would name them means two things

2 participants