@fraction12/deepclean 0.1.0-alpha.0 → 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.1.0-alpha.1 - 2026-05-27
6
+
7
+ - Added semantic feature mapping with `.deepclean/features/` artifacts, `deepclean map`, scan feature counts, and first-pass package script, TS/JS, Python, test-suite, route/component/module, and config feature records.
8
+ - Softened the public site, README, and package copy to frame Deepclean around clearer structure and focused improvements instead of criticizing the user's code.
9
+ - Set the GitHub Pages site as the public project homepage and documented it in the README.
10
+ - Added the complete operating loop: health/status, stable finding identity, lifecycle history, revalidation, incremental scans, CI policy mode, shared query filters, writer locks, retention pruning, source-safe exports, provider runtime controls, and guarded local fix attempts.
11
+ - Added explicit PR checkpoints and dogfood evidence for `complete-operating-loop-parity`.
5
12
  - Added repo-specific verification inference so generated candidates and plans point at real local checks such as Makefile targets, frontend package scripts, and admin package scripts instead of generic commands.
6
13
  - Added explicit `reportPath`, `markdownPath`, `jsonPath`, and `planPath` fields to JSON output for automation.
7
14
  - Improved Markdown reports with a focused `Agent Queue`, bounded themes before too-broad themes, and a capped candidate appendix while preserving full raw records in JSON.
@@ -19,4 +26,4 @@
19
26
  - Added SARIF ingestion and optional `jscpd` external duplicate evidence.
20
27
  - Removed self-dogfood state from the repo working tree and tightened ignore rules for local artifacts.
21
28
  - Added a vendored MIT-licensed Matt Pocock skills reference snapshot and distilled reviewer rubrics for deep module discipline, feedback loops, and agent-ready cleanup slices.
22
- - Hardened Clawpatch-style deslop mapping: TS/JS `.js` source specifiers now resolve to local TS source files, dynamic imports and `require(...)` are included in graph evidence, optional Semgrep orchestration is supported, report recommendations prefer strong synthesized findings over weak metric noise, and generated plans dedupe repeated file references.
29
+ - Hardened cleanup-surface mapping: TS/JS `.js` source specifiers now resolve to local TS source files, dynamic imports and `require(...)` are included in graph evidence, optional Semgrep orchestration is supported, report recommendations prefer strong synthesized findings over weak metric noise, and generated plans dedupe repeated file references.
package/README.md CHANGED
@@ -1,12 +1,16 @@
1
1
  # deepclean
2
2
 
3
- Clawpatch-style cleanup reports for working-but-sloppy codebases.
3
+ Local repo structure reports for fast-moving codebases.
4
4
 
5
- `deepclean` is intended to help after a few days of AI-assisted coding: the app works, but the codebase needs architecture tightening, duplication removal, complexity reduction, better seams, stronger tests, and clearer domain language.
5
+ `deepclean` scans a repository, gathers local evidence, and writes reports and agent-ready plans under `.deepclean/`. It is built for the point where a project is already working and the next step is clearer boundaries, less duplication, safer refactors, stronger tests, and better sequencing.
6
+
7
+ Deepclean does not edit your source code.
8
+
9
+ Website: https://fraction12.github.io/deepclean/
6
10
 
7
11
  ## Status
8
12
 
9
- Public-alpha ready local CLI. Product planning lives in `openspec/`.
13
+ Public alpha. TypeScript, JavaScript, and Python evidence are supported.
10
14
 
11
15
  ## Install
12
16
 
@@ -15,17 +19,18 @@ npm install -g @fraction12/deepclean
15
19
  deepclean --version
16
20
  ```
17
21
 
18
- From a fresh repo:
22
+ ## Quick Start
19
23
 
20
24
  ```bash
21
25
  deepclean init
26
+ deepclean map
22
27
  deepclean scan --json
23
28
  deepclean report
24
29
  deepclean next
25
30
  deepclean plan candidate-001
26
31
  ```
27
32
 
28
- With local Codex synthesis:
33
+ To include local Codex synthesis:
29
34
 
30
35
  ```bash
31
36
  deepclean scan --synthesize --json
@@ -40,10 +45,11 @@ deepclean --root ./some-repo scan --synthesize
40
45
  deepclean scan --root ./some-repo --synthesize
41
46
  ```
42
47
 
43
- ## Intended Flow
48
+ ## Workflow
44
49
 
45
50
  ```bash
46
51
  deepclean init
52
+ deepclean map
47
53
  deepclean scan
48
54
  deepclean scan --synthesize
49
55
  deepclean report
@@ -55,20 +61,29 @@ deepclean triage <candidate-id> --status ignored --note "intentional boundary"
55
61
  deepclean handoff <candidate-id> --format codex
56
62
  ```
57
63
 
58
- ## Principles
64
+ ## What It Produces
65
+
66
+ Deepclean writes durable local artifacts under `.deepclean/`:
67
+
68
+ - `runs/` - scan metadata
69
+ - `features/` - semantic feature/work-unit maps
70
+ - `evidence/` - raw local evidence records
71
+ - `candidates/` - cleanup candidates
72
+ - `clusters/` - related cleanup themes
73
+ - `reports/` - Markdown and JSON reports
74
+ - `plans/` - focused implementation plans
75
+ - `handoffs/` - agent-ready task packets
76
+ - `triage/` - local triage notes
59
77
 
60
- - Report first; no source mutation in the MVP.
61
- - Structured local evidence before model review.
62
- - Durable state under `.deepclean/`.
63
- - Local code stays local unless the user explicitly enables researched context.
64
- - Architecture review is one reviewer, not the whole product.
78
+ Add `.deepclean/` to `.gitignore` unless the repo deliberately wants to share generated reports.
65
79
 
66
- ## Agent UX
80
+ ## JSON And Agent Use
67
81
 
68
- All core commands support `--json` for machine-readable output.
82
+ Core commands support `--json` for automation:
69
83
 
70
84
  ```bash
71
85
  deepclean scan --json
86
+ deepclean map --json
72
87
  deepclean scan --synthesize --json
73
88
  deepclean report --json
74
89
  deepclean cluster --json
@@ -87,13 +102,29 @@ Useful global flags:
87
102
  - `--quiet`
88
103
  - `--debug`
89
104
 
105
+ ## Local Evidence
106
+
107
+ Deepclean runs local evidence first and optional model synthesis second. The built-in evidence layer includes:
108
+
109
+ - semantic feature mapping for package scripts, TS/JS modules/routes/components, Python modules, test suites, and config files
110
+ - file metrics
111
+ - normalized line-window duplication
112
+ - source/import graph summaries
113
+ - TypeScript and JavaScript function structure
114
+ - Python import graph support
115
+ - git churn signals
116
+ - nearby test discovery
117
+ - SARIF ingestion from Semgrep or similar tools
118
+ - optional Semgrep SARIF orchestration
119
+ - optional `jscpd` duplicate ingestion
120
+
121
+ For TS/JS projects using NodeNext-style source imports, Deepclean resolves emitted `.js` specifiers back to local `.ts`, `.tsx`, `.mts`, and `.cts` files so the graph maps source boundaries instead of emitted-path noise.
122
+
90
123
  ## Codex Synthesis
91
124
 
92
125
  `deepclean scan --synthesize` runs the local `codex` CLI in read-only mode over the collected evidence bundle. The model is asked to return strict JSON, and candidates without valid evidence IDs are rejected.
93
126
 
94
- Synthesis uses a built-in reviewer pack rather than whatever agent skills happen to be installed locally. That keeps runs reproducible. The current pack covers architecture deepening, deep module discipline, conceptual duplication, dependency graph blast radius, testability, feedback loop discipline, domain language drift, agent-ready cleanup slices, AI-slop patterns, and a critic pass that rejects weak one-metric findings.
95
-
96
- The reviewer pack is informed by a vendored MIT-licensed snapshot of Matt Pocock's engineering skills. Deepclean uses those skills as reference material and distills the useful principles into stable built-in rubrics instead of loading the full upstream skill text dynamically on every run.
127
+ Synthesis uses a built-in reviewer pack so runs do not depend on arbitrary local agent skills. The current pack looks for architecture boundaries, conceptual duplication, dependency graph risk, testability gaps, domain language drift, agent-sized cleanup slices, and weak findings that should be rejected.
97
128
 
98
129
  Reviewer packs can be configured in `.deepclean/config.json`:
99
130
 
@@ -106,37 +137,21 @@ Reviewer packs can be configured in `.deepclean/config.json`:
106
137
  }
107
138
  ```
108
139
 
109
- Before prompting Codex, Deepclean also maps evidence and existing local candidates into bounded cleanup surfaces. This is the Clawpatch-inspired part: the model reviews mapped repo areas and graph-connected themes rather than a loose pile of metrics.
110
-
111
140
  Source samples are redacted from the synthesis prompt by default. Use `--allow-source-in-model` only when the target repository and provider configuration make that acceptable.
112
141
 
113
- See [Reviewer References](docs/reviewer-references.md), [Privacy And Trust](docs/privacy-and-trust.md), and [Troubleshooting](docs/troubleshooting.md) before using synthesis on private repos.
142
+ See [Privacy And Trust](docs/privacy-and-trust.md), [Reviewer References](docs/reviewer-references.md), and [Troubleshooting](docs/troubleshooting.md) before using synthesis on private repos.
114
143
 
115
144
  ## Themes And Plans
116
145
 
117
- `deepclean cluster` groups related candidates into cleanup themes using shared files, shared evidence, module areas, title language, and the local import graph. Themes are persisted under `.deepclean/clusters/` and use stable `theme-001` style IDs for agent workflows. Individual cleanup candidates use `candidate-001` style IDs. Broad themes are split where possible and marked `too-broad` when they should not be handed to an agent as a single plan.
118
-
119
- `deepclean plan <candidate-or-theme-id>` writes a Codex-ready cleanup plan under `.deepclean/plans/`. Use theme plans when the report points at a larger cleanup area such as a tangled Next.js app area or a backend service boundary; use candidate plans for narrow local cleanup.
120
-
121
- Deepclean currently collects TypeScript, JavaScript, and Python source evidence. The local graph supports TS/JS relative imports and Python module imports, with cache/build/output directories excluded by default.
122
- For TS/JS projects using NodeNext-style source imports, Deepclean resolves emitted `.js` specifiers back to local `.ts`, `.tsx`, `.mts`, and `.cts` files so the graph maps source boundaries instead of falsely reporting an empty graph.
146
+ `deepclean cluster` groups related candidates into cleanup themes using shared files, shared evidence, module areas, title language, and the local import graph. Themes use stable `theme-001` style IDs. Individual cleanup candidates use `candidate-001` style IDs.
123
147
 
124
- ## Evidence Engines
148
+ `deepclean plan <candidate-or-theme-id>` writes a focused cleanup plan under `.deepclean/plans/`. Use theme plans for larger cleanup areas and candidate plans for narrow local work.
125
149
 
126
- Deepclean runs local evidence first and model synthesis second. The built-in layer includes:
150
+ Broad themes are marked `too-broad` when they should not be handed to an agent as one task.
127
151
 
128
- - file metrics
129
- - normalized line-window duplication
130
- - source/import graph summaries
131
- - TypeScript/JavaScript function and wrapper structure
132
- - Python import graph support
133
- - git churn signals
134
- - nearby test discovery
135
- - SARIF ingestion from Semgrep or similar tools
136
- - optional Semgrep SARIF orchestration when configured
137
- - optional `jscpd` duplicate ingestion when configured
152
+ ## External Analyzer Evidence
138
153
 
139
- To use external analyzer evidence:
154
+ Deepclean can ingest SARIF and duplicate-detection output:
140
155
 
141
156
  ```json
142
157
  {
@@ -169,3 +184,9 @@ npm run release:check
169
184
  ```
170
185
 
171
186
  The release check builds the package, runs tests, validates OpenSpec locally when available, packs the tarball, and rejects private/local artifacts such as `.deepclean/`, `.codex/`, `node_modules/`, source files, and local reports.
187
+
188
+ Publishing is handled by GitHub Actions trusted publishing. See [Release](docs/release.md).
189
+
190
+ ## Inspiration
191
+
192
+ Deepclean's local artifact workflow was inspired by ClawPatch, but Deepclean is a separate maintainability reporting CLI.
package/dist/args.js CHANGED
@@ -51,10 +51,53 @@ const valueFlags = new Set([
51
51
  "root",
52
52
  "state-dir",
53
53
  "config",
54
+ "provider",
54
55
  "model",
56
+ "effort",
57
+ "timeout",
58
+ "timeout-ms",
59
+ "retries",
60
+ "rpm",
61
+ "concurrency",
62
+ "token-budget",
63
+ "excerpt-budget",
64
+ "privacy-mode",
65
+ "patch",
66
+ "verification-command",
55
67
  "status",
68
+ "priority",
69
+ "category",
70
+ "risk",
71
+ "source",
72
+ "theme",
73
+ "path",
74
+ "lifecycle-state",
75
+ "revalidation-state",
76
+ "baseline-status",
56
77
  "note",
57
78
  "format",
79
+ "since",
80
+ "merge-base",
81
+ "paths",
82
+ "categories",
83
+ "reviewers",
84
+ "output",
85
+ "sarif",
86
+ "lock-timeout-ms",
87
+ "stale-lock-ms",
88
+ "keep-runs",
89
+ "keep-days",
90
+ "max-p0",
91
+ "max-p1",
92
+ "max-p2",
93
+ "max-p3",
94
+ "max-new-p0",
95
+ "max-new-p1",
96
+ "max-new-p2",
97
+ "max-new-p3",
98
+ "max-stale",
99
+ "min-confidence",
100
+ "fail-category",
58
101
  ]);
59
102
  export function legacyParseArgs(argv) {
60
103
  const [command, ...rest] = argv;
package/dist/args.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}