Repository navigation
feat: add wright lint package commands - #861
Merged
Merged
Conversation
Teakowa
force-pushed
the
feat/lint-package-store
branch
from
October 20, 2026 10:53
6aa7216 to
0d4aca6
Compare
Teakowa
force-pushed
the
feat/lint-package-commands
branch
from
October 20, 2026 10:56
0f4c207 to
82a4aaf
Compare
e54-bot
force-pushed
the
feat/lint-package-commands
branch
2 times, most recently
from
October 20, 2026 14:02
22b354e to
6e4b458
Compare
Teakowa
enabled auto-merge (squash)
October 20, 2026 14:13
Teakowa
approved these changes
Oct 20, 2026
Add the six 'lint package' subcommands — search, install, list, outdated, update, remove — over the #842 GitHub package store. Rows go through the shared wright-result/v1 envelope (ADR-0030): query commands use command-name verdicts, lifecycle commands gate FAIL with per-package diagnostics, and plain/terminal/JSON render from one LintPackageResult. Store entries stay immutable and keyed by full commit SHA; installing never activates a package or touches project configuration. Remove deletes only Wright-managed rules, preserving unrelated files as 'pruned' rows. The package runner and its renderer impls live in lint-owned modules so the shared presentation files keep their shape. Closes #844
e54-bot
force-pushed
the
feat/lint-package-commands
branch
from
October 20, 2026 14:15
6e4b458 to
e033f1e
Compare
This was referenced Oct 20, 2026
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.
Summary
Implements
wright lint package <search|install|list|outdated|update|remove>(parent #616), stacked on #857 (feat/lint-package-store, the #842 store/fetch layer — this PR's diff is the second commit only; GitHub will retarget tomainonce the base merges).search [QUERY]— paged GitHub repository search ontopic:wrightkit-lint archived:false fork:false(10-page/1000-result cap);QUERYnarrows further. Explicit-URL install needs no topic.install SOURCE [--ref REF]—owner/repo, github.com URL spellings (/tree/,/releases/tag/,.git,git@), orowner/repo@<ref>; conflicting ref spellings are a usage error. Fetches into the store only — never activates.list— every store entry (intact with rule IDs, damaged with its refusal reason) in stableowner/repo/shaorder.outdated— read-only: each entry's installed SHA vs the repository's current default-branch head →unchanged/updated/unavailable/error. Since only the SHA is stored (Support GitHub-based community lint rule discovery and lifecycle management #616 decision), head is the comparison point. Damaged entries reporterrorand are never checked.update [SOURCE]— for anupdatedentry, installs the resolved head as a new immutable<sha>/entry (the previous entry — including any locally edited managed files — is never touched). OneSOURCErestricts the set; everything else is untouched.remove SOURCE— deletes the managedrules/tree, then the entry dir only when nothing else remains: user-owned files besiderules/survive (prunedstatus); empty<owner>/<repo>parents are pruned.wright-result/v1envelope (ADR-0030): row-level failures become a gated FAIL with per-packagelint-package-*diagnostics; command-level failures map to the documented exit codes (lint-package-source→2,lint-package-invalid→1, remote/store→4). The three read-only commands join the query-verdict list (PACKAGE-SEARCH/PACKAGE-LIST/PACKAGE-OUTDATEDin place of a vacuous PASS).lintkeeps its finding workflow;args_conflicts_with_subcommands+subcommand_precedence_over_argmakelint --fix package …a usage error.docs/cli/commands.md,lint.md,machine-contract.md,presentation.mdupdated.Test plan
lint_package.rs+lint_package_lifecycle.rs) spawn the realwrightbinary against a recorded-response HTTP server — env-redirected store and endpoints, no real networkentries/remove/search(enumerate intact+damaged, prune semantics, user-file preservation, paging/terms/error classes)outdatedverified not to mutate the store;update <source>touches only that repo;remove/updatepreserve user files and refuse damaged entriescargo fmt,cargo clippy --workspace --all-targets --all-features -D warnings,cargo test --workspace --all-targets --all-features— all green locallyFixes #844