CodeEraser
Health Gecti
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 15 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in .github/scripts/bootstrap_e2e.sh
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
An eraser against LLM-induced code & document entropy — clone/duplication/deadcode/structure judgment (Haskell core, Rust frontend) with Claude Code guard hooks, MCP, CI gates and a Tauri GUI
CodeEraser
English | 中文
An eraser against LLM-induced code & document entropy.
LLMs drift toward stacking and patching over long-lived work: the same
function implemented twice, the same fact written in three places,
updates that arrive as appends, files that only ever grow. CodeEraser
fights that drift at the moment of writing — a Rust CLI + Tauri GUI in
front of a Haskell judgment core, shipped as a Claude Code plugin with
PreToolUse/Stop interception, and reachable from any agent through a
read-only MCP report surface, pre-commit, and CI exit codes.
Status
🚀 v0.3.0 released — all planned milestones (M0–M8) shipped.
Installers, crates.io, the npm
pointer and codeeraser.dev are live; the
next cycle starts from real-world trial feedback.
The locked plan is the contract: docs/DEVELOPMENT_PLAN.md.
This repository gates itself with its own scanner, clone ratchet,
baseline and deadcode/docdup checks on every push to main (plus
pull requests and a weekly scheduled run).
Install
Prebuilt (v0.2.0+, recommended). Every
release ships ten
assets: ce and the ce-core judgment core for three platforms
(x86_64-windows / x86_64-linux / aarch64-macos), three GUI installers
(NSIS setup.exe / AppImage / dmg — each bundling the GUI with both
binaries as sidecars), and SHA256SUMS. For the CLI: downloadce-<ver>-<platform>, rename it ce, put it on PATH, and dropce-core-<ver>-<platform> beside it as ce-core — judgment
subcommands find it through the sibling leg of the resolver, no
flags, no env vars.
Claude Code plugin. /plugin marketplace add skymanbp/CodeEraser,
then /plugin install codeeraser — both binaries arrive SHA256-verified.
Cargo. cargo install codeeraser builds ce; drop a ce-core beside it.
From source. Prerequisites: the pinned Rust toolchain
(cli/rust-toolchain.toml) and GHC 9.14.1 + cabal for the core.
# the judgment core (ce-core)
cd core && cabal build all && export CE_CORE_BIN=$(cabal list-bin ce-core)
cargo install --path cli # the CLI
Core resolution is one chain everywhere: CE_CORE_BIN → a ce-core
sibling of the running binary → PATH; an explicit --core <path>
always wins.
Binaries — unsigned, verify checksums
Release artifacts are built by the
release workflow and pinned inSHA256SUMS. They are not code-signed or notarized (ruled out
2026-08-19 — the cost/benefit does not hold for a free tool): Windows
SmartScreen and macOS Gatekeeper will warn until you allow the app
explicitly. The permanent trust anchor is the checksum chain — after
downloading:
sha256sum -c --ignore-missing SHA256SUMS
The Claude Code plugin's starter (plugin/bin/ce.sh) enforces the
same pins automatically and refuses a mismatching download out loud.
Commands
| Command | What it reports / judges |
|---|---|
ce scan |
size / complexity / readability metrics, core-graded |
ce dedup |
T1/T2 clone blocks (winnowing index); --check gates the budget |
ce clone |
T3 near-miss clones (tree edit distance) |
ce docdup |
documentation duplication (paragraphs, comments, docstrings) |
ce graph --sites / ce deadcode |
reference sites; liveness verdicts |
ce churn / ce join |
git-window churn; the three-signal join |
ce structure |
tree-scale structure judgment (seven axes) |
ce trend |
score trajectory over mainline history (cache rebuilds from git) |
ce check / ce baseline |
ADR-006 ratchet + score floor against ce-baseline.json |
ce mcp |
read-only MCP server: every report above as a tool |
ce doctor / ce eject |
health line; full per-project uninstall (dry-run default) |
Console reports and --help speak English by default and Chinese
under --lang zh (or CE_LANG=zh; the flag wins). JSON output and
the FAIL/pass vocabulary are never translated — they are the machine
face. The GUI carries its own language toggle.
Guard (Claude Code plugin)
The plugin intercepts at PreToolUse (cheap probes) and audits at Stop.
Since the 1.0 tier switch, the two FPR-gated rule classes — exact
T1/T2 duplicate writes and hard-budget breaches (a write leaving a
file past 750 lines) — deny by default; everything else observes
until it has its own false-positive record (ledger in
CHANGELOG.md). An explicit [guard] mode in ce.toml
overrides every class. Honest boundary: PreToolUse shapes behavior,
it is not a security wall — shell writes bypass it, and the Stop
audit + CI gates are the backstop.
Documentation
- CLI reference · ce.toml reference — generated from the binary and the config schema; a CI gate reddens on drift
- DEVELOPMENT_PLAN — the locked plan; every milestone answers to it
- EVAL-SET — frozen evaluation universes, samples, audits and their gates
- PERF-BUDGET · FPR-REPLAY · T1-INTERCEPT — measured budgets and replay ledgers
- contracts/VERSIONING.md — the wire contract and its SemVer rules
- docs/RELEASE.md — the two-phase release runbook
- docs/reference/structure-axes.md — structure/1 axis semantics (S0–S6)
Architecture
| Layer | Language | Owns |
|---|---|---|
Core (core/) |
Haskell | judgment: rules, verdicts, scoring ratchet, graph liveness, TSED, structure entropy |
Frontend (cli/) |
Rust | parsing (tree-sitter), winnowing index, CLI, daemon, GUI backend, hooks, MCP |
GUI (gui/) |
Rust + vanilla JS | Tauri shell over the same report schema the CLI emits |
Plugin (plugin/) |
manifest + hooks + sh starter | pinned-binary bootstrap, interception (the marketplace manifest lives at the repo root .claude-plugin/) |
License
Apache-2.0 — see LICENSE. Third-party inventory: NOTICE
(regenerated and gated byte-exact in CI by cli/tests/notice_gate.rs).
"CodeEraser"™ is a trademark of skymanbp (registration pending). Per
Apache-2.0 §6, the license covers the code, not the name.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi