Skip to content

uphold 1.8.0: one command, more than one flag vocabulary - #82

Merged
HackingGate merged 1 commit into
mainfrom
release-1.8.0
Aug 21, 2026
Merged

uphold 1.8.0: one command, more than one flag vocabulary#82
HackingGate merged 1 commit into
mainfrom
release-1.8.0

Conversation

@HackingGate

Copy link
Copy Markdown
Owner

Cuts 1.8.0 over #76, #78, #79 and #81, all already on main.

#76 a baseline entry may be signed `path
#78 a baseline line that does not parse is refused rather than skipped
#79 two shim tables naming one command are refused instead of one being dropped
#81 [[shim.verbs]] -- a flag vocabulary for the verbs whose grammar differs

In this PR

  • Cargo.toml / Cargo.lock to 1.8.0
  • documented pins to v1.8.0 in README.md (3) and hooks/lefthook.yml (2)
  • docs/REFERENCE.md: a section on per-verb vocabularies -- the -c collision that motivates it, replace-not-union, and why target_flags is not overridable

Taking it

Nothing existing changes shape: a policy written for 1.7.0 resolves to exactly the rules it resolved to before, and no default changed.

But a policy that uses [[shim.verbs]] cannot be read by an older binary, and the installed binary is the shim. A tree whose policy adopts the field before its shims are reinstalled has every git command failing closed. I did that to this repository while developing #81, which is why the five gh verbs are not in this release's policy.

Order: bump the pin, reinstall (cargo install --git https://github.com/HackingGate/uphold --tag v1.8.0), then adopt.

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 --version reports 1.8.0

A `[[shim]]` named one `text_flags` for a whole command, and a command's flags
do not all mean one thing. On `gh`, `-c` is a boolean on `pr review` and takes a
value on `issue close`; naming it once for the table reads one of the two wrong,
and either way the mistake is a false negative in the seam that exists to prevent
one.

`[[shim.verbs]]` lets the verbs whose grammar differs say so. The entry's lists
replace the table's for those verbs rather than adding to them -- the rule
`allowed_scripts` already follows, because a union would mean a vocabulary
nobody wrote. `target_flags` stays table-wide: a per-verb answer to which
repository something is going to would be a way to publish somewhere the table
did not expect.

Also in this release, from #76 and #78: a baseline entry may be signed
`path | owner | reason` and required to be, and a baseline line that does not
parse is refused rather than skipped -- the skip removed a ratchet silently, and
the staleness check could not see it because a dropped entry was never listed.
#79 refuses two shim tables naming one command, which used to drop one of them.

TAKING IT. Nothing existing changes shape: a policy written for 1.7.0 resolves to
exactly the rules it resolved to before, and no default changed. But a policy
that USES `[[shim.verbs]]` cannot be read by an older binary, and the installed
binary is the shim -- so a tree whose policy adopts the field before its shims
are reinstalled has every git command failing closed. Bump the pin, reinstall,
then adopt.

Documented pins move to v1.8.0 in README.md and hooks/lefthook.yml.
@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: 48 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: c22efabd-6c30-4988-aa11-a9b16691ed63

📥 Commits

Reviewing files that changed from the base of the PR and between b8e3122 and 00653a4.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • Cargo.toml
  • README.md
  • docs/REFERENCE.md
  • hooks/lefthook.yml

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 (b8e3122) to head (00653a4).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #82      +/-   ##
==========================================
- Coverage   90.52%   90.51%   -0.01%     
==========================================
  Files          35       35              
  Lines       11339    11339              
==========================================
- Hits        10265    10264       -1     
- Misses       1074     1075       +1     

☔ 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 707f671 into main Aug 21, 2026
12 checks passed
@HackingGate
HackingGate deleted the release-1.8.0 branch August 21, 2026 11:57
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.

2 participants