You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Welcome to the Ruler carnival of “it works on my machine” engineering 🎪. This repo is a buffet of questionable decisions: recursive file hunts spelunking into node_modules, deletion routines with “force” like they’re breaking up with your data, and logging that argues with its own comments. Buckle up; we’re gonna scrub this thing until it squeaks… or at least stops screaming. 🤮
⛈️ Revert includes a generic config.toml in its “cleanup” list, risking deletion of legitimate project configs.
The revert engine hard-codes config.toml for deletion. Combined with agent logic that targets root config.toml, this invites data loss outside Ruler’s domain. 💣
If backups aren’t present, this unlinks real files—your app config becomes “demo collateral.” Fabulous.
Require --global flag with a confirmation prompt and echo the resolved path.
Detect CI and disable global writes unless explicitly allowed.
Log a prominent notice when writing global files and include a “how to revert” message.
If you want more dirt: I can keep digging, but the main sewer pipes are these. Fix the scanning filters, stop deleting strangers’ stuff, make logging consistent, and please… stop inviting any to your types party. Your future self will send you chocolates. Or at least stop swearing at your commit history. 💩
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
This Codebase Smells!
Welcome to the Ruler carnival of “it works on my machine” engineering 🎪. This repo is a buffet of questionable decisions: recursive file hunts spelunking into node_modules, deletion routines with “force” like they’re breaking up with your data, and logging that argues with its own comments. Buckle up; we’re gonna scrub this thing until it squeaks… or at least stops screaming. 🤮
Table of Contents
Overzealous Revert Deletes Real Files
⛈️ Revert includes a generic
config.tomlin its “cleanup” list, risking deletion of legitimate project configs.config.tomlfor deletion. Combined with agent logic that targets rootconfig.toml, this invites data loss outside Ruler’s domain. 💣Files
src/core/revert-engine.tssrc/paths/mcp.tsCode
config.toml:Suggestions
.bak, or a manifest recorded duringapply.--force-extra-cleanupand explicit warnings for non-ruler files.removeAdditionalAgentFiles, only removeconfig.tomlif it contains known OpenHands MCP sections.Recursive Scans Dive Into node_modules
🕳️ The repo-wide search walks every directory that’s not dot-prefixed, happily spelunking into
node_modules,dist, and any other time-sink.node_modules. Enjoy your O(n^everything) traversal. 🐌Files
src/core/FileSystemUtils.tsCode
Suggestions
['node_modules','dist','build','coverage','out','.next','.turbo'].Verbose Logging Misfires To stderr
🔊 The logging comment says verbose/info go to stdout, but
logVerboseusesconsole.error. The code argues with itself.logVerbosevslogVerboseInfo) cause inconsistent output behavior.Files
src/constants.tsCode
Suggestions
logVerboseor align it tologVerboseInfo.Silent Error Swallowing During Directory Walks
🤫 Catch-all with empty
catch {}suppresses filesystem errors, making diagnosis impossible.Files
src/core/FileSystemUtils.tsCode
Suggestions
logVerboseInfoincluding path and error code when verbose is enabled.“any” Types Sneak Into Configs
🧪 Liberal
anyusage around MCP/TOML serialization weakens type safety and invites runtime surprises.anymasks schema drift and makes refactors dangerous; TOML stringification of loosely-typed objects is a roulette wheel. 🎰Files
src/agents/MistralVibeAgent.tssrc/agents/CodexCliAgent.tsCode
any:Suggestions
[key: string]: anywithRecord<string, unknown>and narrow via discriminated unions.as anycasts.Forceful Recursive Deletes Without Manifests
🗑️ Aggressive
fs.rm({ recursive: true, force: true })appears throughout skills cleanup; it’s a bulldozer with no safety tape.Files
src/core/SkillsProcessor.tsCode
Suggestions
.rulerrecording created paths; only delete recorded paths.--forceor interactive confirm for directories not in manifest..ruler/.trashbefore permanent removal.Global Config Writes Are Footguns
🏠 Writing to
~/.config/rulerby default can surprise users and contaminate global state.Files
src/core/FileSystemUtils.tssrc/cli/handlers.tsCode
Suggestions
--globalflag with a confirmation prompt and echo the resolved path.If you want more dirt: I can keep digging, but the main sewer pipes are these. Fix the scanning filters, stop deleting strangers’ stuff, make logging consistent, and please… stop inviting
anyto your types party. Your future self will send you chocolates. Or at least stop swearing at your commit history. 💩All reactions