Simplify for release: stand on published crates alone - #9
Merged
Conversation
exact-clone, near-clone, lib-op, effect barrier, effect capability, unknown barrier, error discard and analysis incomplete all sit behind Infact or Entl packs that are not published. Cutting them is what lets straitjacket build on its own. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GbyMWgEUSRGynJwACBvwFu
The eight fact-backed rules were the only RepositoryRule implementations, so removing them made the whole fact subsystem unreachable: facts.rs, the AnalysisSelection and FactBatch plumbing, and the facts sync/status subcommands. All of it goes. That leaves entl-codebase as the last path dependency, used for language detection and a file walk. src/language.rs owns the language table now and src/walk.rs walks with the ignore crate. No path dependencies remain, and straitjacket builds in a checkout with no siblings. An old configuration naming a removed rule or section fails saying the rule was withdrawn, rather than saying the key is unknown. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GbyMWgEUSRGynJwACBvwFu
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.
Straitjacket could not build anywhere except inside a full
powderworks/checkout, because nine of its dependencies were Cargo
pathdependencies onsibling
entlandinfacttrees. That is the one thing standing between it andbeing usable. This removes it.
This is subtraction. No surviving rule was changed.
Headline
src/+tests/)Cargo.lockpath = "../..."dependenciesDirect dependencies are now
anyhow,clap,ignore,inventory,regex,serde,serde_json,toml, andunic-emoji-char. All from crates.io.What was removed
Eight rules that read facts from packages that were never published, so none of
them could run outside the repository that built them:
exact-clone,near-clone,library-opportunity,effect-capability,effect-barrier,unknown-barrier,error-discard,analysis-incomplete.Those eight were the only
RepositoryRuleimplementations. That made the entirefact subsystem unreachable, so it goes with them:
src/facts.rs, theAnalysisSelectionandFactBatchplumbing, thefacts syncandfacts statussubcommands, and the[facts],[effects], and[errors]configuration sections.
Rules self-register through
inventory, so no core file names a rule. Deletingall eight compiled clean on the first attempt — the coupling that mattered was
never in the rules, it was that
main.rsstill reached the fact machinerythrough CLI subcommands with no rule left to serve.
What replaced
entl-codebaseIt was doing language-detection-by-extension and a file walk.
src/language.rs— the language table: 29 languages with their extensions,filenames, shebangs, comment syntax, roles, and the three facets rules gate
on. A test asserts no two languages claim the same extension.
src/walk.rs— the file walk, over theignorecrate, which brings.gitignore,.ignore,.git/info/exclude, and hidden-file handling. A walkerror is returned rather than skipped, because a scan over less than the
requested tree must not be able to report clean.
observe_rust_compilerdid not survive the cut. Its only uses were feeding acorefact-pack request and the test asserting that.Old configurations
Someone will have one. A configuration naming a removed rule or section now
fails saying the rule was withdrawn, rather than saying the key is unknown,
which reads like a typo:
Verification
Built in a scratch directory with no sibling checkouts present, which is the
thing that could not be done before:
grep -rn 'path = "\.\.\|entl\|infact' Cargo.toml Cargo.lockreturns nothing.Text, JSON, and SARIF output all exercised. The SARIF validates against the
OASIS
sarif-schema-2.1.0.json, andruleIndexvalues still line up after therule removals.
Straitjacket runs its full ruleset on itself and is clean.
Also
gatejob, noweekly schedule — that schedule existed to catch unpinned sibling drift.
README.mdrewritten. It opened with "not ready for use by anyone outsidethis repository" and "Several rules depend on Infact packs that do not exist
yet". Both are now false.
notes/todo.txtdeleted; it tracked only removed machinery. The durable partsmoved into
notes/field_guide.md, which is rewritten.Not done here
The repository stays private and nothing is published. The crate is already
named
straitjacket, which is the intended crates.io name. Publishing wouldadditionally want a
repositoryfield inCargo.tomland a version off0.1.0.🤖 Generated with Claude Code
https://claude.ai/code/session_01GbyMWgEUSRGynJwACBvwFu