moult 0.1.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +37 -2
- data/README.md +40 -10
- data/lib/moult/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5da8cf8ae9bf6dae1b9a05494fdf1280d1b3c62742cd8700e24a60ca9fc66eeb
|
|
4
|
+
data.tar.gz: f487eadae0717dc3f221612234699ea175c005a0b3c1801af57f71b34aa9cfc1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 136f27d5540be7e6fb4d2174b198703ec44dbab7c3bff8735f8f6cfb40217af2df230fd48e70965a4680740c3fdf8f2325c9c3c31b589b88a56939d2bfcf5b06
|
|
7
|
+
data.tar.gz: 677b2b5fdbb133f49046baa84e4a4a286e587c9da8904e44397a01d6ef116f5d7e4480bba88b73cfbaae45a37318e36b02d1981dc8ec6d6c44be912bcea20329
|
data/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,11 @@ follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [0.3.0] - 2026-07-02
|
|
15
|
+
|
|
16
|
+
(v0.2.0 was tagged in git but never published as a gem — its changes are
|
|
17
|
+
included here.)
|
|
18
|
+
|
|
14
19
|
### Added
|
|
15
20
|
- `Moult::CloudUpload.projection` — the sanitised payload builder for the
|
|
16
21
|
`moult-action` → Moult Cloud upload (allow-lists top-level keys; normalises
|
|
@@ -19,12 +24,41 @@ follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
19
24
|
CI and uploads the projected result with keyless GitHub OIDC auth.
|
|
20
25
|
- Open-source release setup: Apache-2.0 license, Trusted Publishing release
|
|
21
26
|
workflow, `SECURITY.md`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`.
|
|
27
|
+
- `.ruby-version` (3.3), read by `ruby/setup-ruby` in CI and in the action.
|
|
22
28
|
|
|
23
29
|
### Changed
|
|
24
30
|
- License changed from MIT to **Apache-2.0** (adds an explicit patent grant;
|
|
25
31
|
the chosen open-core core license).
|
|
32
|
+
- `moult-action` installs moult from the action checkout instead of running
|
|
33
|
+
`bundle exec` against the caller's bundle — consuming repos no longer need
|
|
34
|
+
moult in their Gemfile (or a Gemfile at all).
|
|
35
|
+
- `moult-action`'s `moult-cloud-url` input now defaults to
|
|
36
|
+
`https://moultrb.com`, so a bare `- uses: moult-rb/moult-rb@v1` step works
|
|
37
|
+
with no `with:` block; the input remains overridable for self-hosted
|
|
38
|
+
instances.
|
|
39
|
+
- Release workflow only triggers on full-semver tags (`vX.Y.Z`), so the
|
|
40
|
+
floating `v1` major tag can be re-pointed without triggering a gem publish.
|
|
41
|
+
- The gem publishes as `moult` again (reverting the brief `moult-rb` rename):
|
|
42
|
+
`moult` 0.1.0 is already the published package, and `gem install moult`
|
|
43
|
+
should keep resolving to current releases. The repository and action stay
|
|
44
|
+
`moult-rb/moult-rb`.
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
- `moult-action` fails with an actionable message — instead of a raw Ruby
|
|
48
|
+
`KeyError` backtrace — when the workflow is missing
|
|
49
|
+
`permissions: id-token: write`, and cleanly skips the upload (verdict still
|
|
50
|
+
enforced) on pull requests from forks, which GitHub never grants an OIDC
|
|
51
|
+
identity. Non-2xx responses from GitHub's token endpoint are now reported
|
|
52
|
+
with their status and body.
|
|
53
|
+
- `moult-action`'s `base-sha` now defaults to the pull request's base branch
|
|
54
|
+
(or the merge queue's base SHA), falling back to the repository's default
|
|
55
|
+
branch — previously a hardcoded `origin/main` broke PR scans in any
|
|
56
|
+
repository whose base branch isn't `main`.
|
|
57
|
+
- `moult-action` auto mode maps `merge_group` events to `pr` scans (diffed
|
|
58
|
+
against the queue's base SHA) and rejects `pull_request_target`, which
|
|
59
|
+
checks out the base branch and would silently gate an empty diff as a pass.
|
|
26
60
|
|
|
27
|
-
## [0.1.0] -
|
|
61
|
+
## [0.1.0] - 2026-06-30
|
|
28
62
|
|
|
29
63
|
Initial development version. The static + runtime analysis suite:
|
|
30
64
|
|
|
@@ -40,5 +74,6 @@ Initial development version. The static + runtime analysis suite:
|
|
|
40
74
|
- `moult health` — composite, confidence-graded health score.
|
|
41
75
|
- `moult gate` — diff-aware PR risk gate (the only verdict layer).
|
|
42
76
|
|
|
43
|
-
[Unreleased]: https://github.com/moult-rb/moult-rb/compare/v0.
|
|
77
|
+
[Unreleased]: https://github.com/moult-rb/moult-rb/compare/v0.3.0...HEAD
|
|
78
|
+
[0.3.0]: https://github.com/moult-rb/moult-rb/compare/v0.1.0...v0.3.0
|
|
44
79
|
[0.1.0]: https://github.com/moult-rb/moult-rb/releases/tag/v0.1.0
|
data/README.md
CHANGED
|
@@ -4,16 +4,43 @@ Codebase intelligence for Ruby and Rails. Moult sheds dead code.
|
|
|
4
4
|
|
|
5
5
|
## moult-action (GitHub Action)
|
|
6
6
|
|
|
7
|
-
Add the gate to your CI and upload results to Moult Cloud
|
|
7
|
+
Add the gate to your CI and upload results to Moult Cloud. Create
|
|
8
|
+
`.github/workflows/moult.yml` with:
|
|
8
9
|
|
|
9
10
|
```yaml
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
name: Moult
|
|
12
|
+
on:
|
|
13
|
+
push:
|
|
14
|
+
branches: [main] # seeds/advances the baseline on merge
|
|
15
|
+
pull_request:
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
id-token: write # keyless OIDC auth to Moult Cloud
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
moult:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: moult-rb/moult-rb@v1
|
|
14
26
|
```
|
|
15
27
|
|
|
16
|
-
|
|
28
|
+
That's the whole file. The action checks out your code (full history),
|
|
29
|
+
installs moult itself, runs the gate, and uploads the result — your repo does
|
|
30
|
+
not need moult in its Gemfile. Three prerequisites:
|
|
31
|
+
|
|
32
|
+
1. Install the [Moult Cloud GitHub App](https://github.com/apps/moult-cloud)
|
|
33
|
+
on the repository.
|
|
34
|
+
2. `permissions: id-token: write` on the workflow or job (shown above) — it
|
|
35
|
+
lets the action mint the GitHub OIDC token that authenticates the upload.
|
|
36
|
+
Pull requests from forks never receive an OIDC identity, so they are
|
|
37
|
+
gated in CI but their results are not uploaded.
|
|
38
|
+
3. A `.ruby-version` or `.tool-versions` file in the repository (read by
|
|
39
|
+
`ruby/setup-ruby`; Ruby 3.3+).
|
|
40
|
+
|
|
41
|
+
Results appear on your dashboard at [moultrb.com](https://moultrb.com). The
|
|
42
|
+
`moult-cloud-url` input only needs setting for self-hosted Moult Cloud
|
|
43
|
+
instances.
|
|
17
44
|
|
|
18
45
|
Three commands today:
|
|
19
46
|
|
|
@@ -52,7 +79,9 @@ Or install directly:
|
|
|
52
79
|
gem install moult
|
|
53
80
|
```
|
|
54
81
|
|
|
55
|
-
|
|
82
|
+
|
|
83
|
+
The gem is published as `moult`; the command and library are still `moult`
|
|
84
|
+
(`require "moult"`, `moult hotspots`, …). Requires Ruby 3.3+.
|
|
56
85
|
|
|
57
86
|
## Usage
|
|
58
87
|
|
|
@@ -316,9 +345,10 @@ Outside a git repository churn is `0`, so files rank by complexity alone.
|
|
|
316
345
|
|
|
317
346
|
The `moult` gem — the CLI and every analysis in it — is free and open source
|
|
318
347
|
under [Apache-2.0](LICENSE.txt). **Moult Cloud** is a separate commercial
|
|
319
|
-
product: a hosted GitHub App that turns
|
|
320
|
-
team-visible PR check with history, trends, and
|
|
321
|
-
|
|
348
|
+
product: a hosted [GitHub App](https://github.com/apps/moult-cloud) that turns
|
|
349
|
+
`moult gate` into an enforced, team-visible PR check with history, trends, and
|
|
350
|
+
dashboards at [moultrb.com](https://moultrb.com). The gem stands on its own;
|
|
351
|
+
the cloud is optional.
|
|
322
352
|
|
|
323
353
|
## Contributing
|
|
324
354
|
|
data/lib/moult/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: moult
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- The Moult authors
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-07-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: prism
|