jobcompat 0.1.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.
@@ -0,0 +1,49 @@
1
+ # jobcompat v0.1.0 release checklist
2
+
3
+ This checklist is for the future gem release. The public repository is `https://github.com/cottondesu/jobcompat`; initial publication of `main` is authorized, but tagging, publishing a gem, and creating a GitHub Release are reserved for the release phase. Gem version `0.1.0` uses tag `v0.1.0`; JSON `schema_version: 1` is a separate contract.
4
+
5
+ ## Local, machine executable checks
6
+
7
+ - [x] Recheck exact `jobcompat` availability on RubyGems and search GitHub before the initial public push. A missing registry response does not reserve the name.
8
+ - [x] Run `bundle exec rake test` on Ruby 3.4 and 4.0: 79 tests, 367 assertions, 0 failures, 0 errors on each.
9
+ - [x] Check Ruby syntax in `lib/`, `exe/`, `test/`, and the gemspec.
10
+ - [x] Build the gem with Ruby 3.4 and 4.0; no gem build warnings.
11
+ - [x] Inspect the built gem: executable, `lib/`, README, LICENSE, CHANGELOG, SECURITY, and docs present; no caches, credentials, temporary repositories, `.git`, or built gems.
12
+ - [x] Install the built gem into an isolated gem home and run `jobcompat --help`, `jobcompat --version`, and checks that exit 0 for clean, 1 for JC001, 0 for warning only, and 2 for a bad Git ref. Parse JSON output.
13
+ - [x] Repeat the secret and personal path scan; review README, CHANGELOG, LICENSE, release notes, and workflow against the built gem.
14
+ - [x] Verify every GitHub Action reference is a pinned commit SHA and inspect the diff before the initial commit.
15
+
16
+ ## Manual gates before publication
17
+
18
+ - [x] Create the public [`cottondesu/jobcompat`](https://github.com/cottondesu/jobcompat) repository with default branch `main`.
19
+ - [x] Set the real repository URL in gemspec `homepage`, `source_code_uri`, `changelog_uri`, and `bug_tracker_uri`.
20
+ - [x] Enable Issues, private vulnerability reporting, Dependabot alerts and security updates, secret scanning, and push protection on [`cottondesu/jobcompat`](https://github.com/cottondesu/jobcompat).
21
+ - [ ] Configure a `main` ruleset or branch protection that blocks force pushes and deletion and requires successful CI; avoid unnecessary review gates for a single maintainer.
22
+ - [ ] Confirm GitHub two factor authentication and RubyGems MFA.
23
+ - [ ] Protect the GitHub `release` environment with appropriate approval or deployment restrictions.
24
+ - [ ] Confirm Ruby 3.3, 3.4, and 4.0 GitHub CI jobs all pass on the exact release candidate. Ruby 3.3 CI is mandatory because the local runtime has not been tested.
25
+ - [ ] Configure a RubyGems [Pending Trusted Publisher](https://guides.rubygems.org/trusted-publishing/) for the new `jobcompat` gem using GitHub owner `cottondesu`, repository `jobcompat`, workflow file `release.yml`, and environment `release`. Confirm the details match the release workflow. Do not store a long lived RubyGems API key in GitHub Secrets.
26
+ - [ ] Recheck that `jobcompat` is still unregistered on RubyGems immediately before the actual gem publication.
27
+ - [ ] Review the tag triggered release workflow and built gem one final time before pushing `v0.1.0`.
28
+
29
+ ## Exact publication sequence (future manual actions)
30
+
31
+ 1. Recheck gem name before every public push and again immediately before gem publication.
32
+ 2. Rerun local tests, build, install, smoke checks, package review, and secret scan. Resolve every build warning.
33
+ 3. Make the initial commit and push `main` to [`cottondesu/jobcompat`](https://github.com/cottondesu/jobcompat).
34
+ 4. Confirm Ruby 3.3, 3.4, and 4.0 CI green and configure repository settings, ruleset, private reporting, and account MFA.
35
+ 5. Configure and protect GitHub environment `release` and create the RubyGems Pending Trusted Publisher with its exact owner/repository/workflow/environment identity.
36
+ 6. Review the final source, tag/version match, gem contents, and release notes. Create tag `v0.1.0` and push it only after all gates pass.
37
+ 7. Observe the release workflow tests, build, and OIDC publish job. Confirm `jobcompat` version `0.1.0` appears on RubyGems.
38
+ 8. Install from RubyGems in a clean environment. Run `jobcompat --version` and `jobcompat --help`.
39
+ 9. Create or verify the GitHub Release using the draft release notes and confirm tag and download links.
40
+
41
+ ## After publication
42
+
43
+ - [ ] Check the RubyGems name, version, metadata, homepage, source URL, and changelog URL.
44
+ - [ ] Confirm GitHub tag, Release, README installation instructions, and installed CLI behavior.
45
+ - [ ] Confirm RubyGems lists the trusted publisher and monitor initial issue/security reports.
46
+
47
+ ## Rollback
48
+
49
+ Do not overwrite a published gem or reuse version `0.1.0`. Fix a serious issue in `0.1.1` and follow the same gates. If yanking is necessary, use the official [RubyGems yanking procedure](https://guides.rubygems.org/removing-a-published-gem/) and communicate the affected version; yanking does not erase copies already installed.
@@ -0,0 +1,24 @@
1
+ # jobcompat v0.1.0 release notes
2
+
3
+ jobcompat v0.1.0 is the first public release. It detects native Sidekiq positional argument compatibility issues across Git revisions before deployment.
4
+
5
+ ## Highlights
6
+
7
+ - Reads committed Ruby source with Prism; no schema, annotation, Redis connection, or Rails boot is needed.
8
+ - Checks base producer to head consumer, head producer to base consumer, and head producer to head consumer for rolling deployments.
9
+ - Reports JC001–JC007 in text and JSON schema version 1; supports focused suppression with a reason.
10
+ - Tracks reopened worker classes and checks tracked declarations before reporting a class as removed.
11
+
12
+ For example, changing `def perform(user_id)` to `def perform(user_id, notify)` can produce `ERROR JC001` when the base revision enqueues a one argument job. That queued job may fail after the new worker deploys.
13
+
14
+ ## Supported scope
15
+
16
+ Ruby 3.3 or newer, native `Sidekiq::Job` and `Sidekiq::Worker`, direct enqueue calls, and positional arity between two Git commits.
17
+
18
+ ## Known limitations
19
+
20
+ ActiveJob, keyword compatibility, payload types and Hash schemas, live Redis queues, wrappers and aliases, feature flags, runtime metaprogramming, and general Ruby constant conflicts are outside v0.1 scope. An undiscovered producer does not prove the queue empty.
21
+
22
+ ## Installation
23
+
24
+ Run `gem install jobcompat` and then `jobcompat check --base origin/main`. Bundler users can add `gem "jobcompat", require: false` and run `bundle exec jobcompat check --base origin/main`.