chore: drop sub-crate submodules and publish hk to crates.io#830
Conversation
Removes the xx, clx, and ensembler git submodules and consumes them as regular crates.io dependencies (xx 2.5, clx 1.3, ensembler 1.1). The sub-crates are now maintained entirely in their own repositories. Restores crates.io publishing for hk (stuck at 1.10.1 since the subtree → submodule migration in 186480d removed the publish step). Publishing now runs as a dedicated job in release.yml after the GitHub Release is created, using CARGO_REGISTRY_TOKEN. release-plz.yml no longer needs that secret since mise-tasks/release-plz no longer publishes. Also removes .cargo/config.toml which patched clx to a local path and is no longer needed. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Greptile SummaryThis PR migrates the The changes are coherent and well-scoped — workspace entry removed from Confidence Score: 5/5Safe to merge — clean mechanical migration with no logic changes to the build or hook system. All changed files are infrastructure/CI: sub-crate path deps are replaced with pinned registry versions, the new publish-crate job is correctly gated (repo check + secret), and the release-plz simplification removes only dead submodule code. No P0 or P1 findings. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Push tag v*\nor workflow_dispatch] --> B[build-binaries\nmatrix: 7 targets]
A --> C[build-pkl]
B --> D[create-release\ngh release create]
C --> D
D --> E[publish-crate\ncargo publish]
D --> F[enhance-release\ncommunique generate]
G[Push to main] --> H[release-plz workflow\nmise run release-plz]
H --> I{version already tagged?}
I -- No --> J[git tag + git push --tags\ntriggers release workflow]
I -- Yes --> K{unreleased changes?}
K -- Yes --> L[bump Cargo.toml\ncreate release PR]
K -- No --> M[skip]
style E fill:#90EE90
style J fill:#ADD8E6
Reviews (3): Last reviewed commit: "fix(hook): emit info event inside hook.r..." | Re-trigger Greptile |
Co-Authored-By: Claude Opus 4.6 <[email protected]>
There was a problem hiding this comment.
Code Review
This pull request transitions the project from a workspace-based structure with local submodules to using external registry dependencies. Specifically, the clx, ensembler, and xx crates are no longer managed as submodules or local path dependencies in Cargo.toml and have been replaced with versioned registry entries. Correspondingly, the .gitmodules file and submodule update logic in the release-plz script have been removed, and Cargo.lock has been updated to reflect these changes. I have no feedback to provide as there were no review comments.
…ty trace The ensembler 1.x / clx 1.x upgrade removed the log::info! calls that previously fired inside the hook.run span and got picked up by LogTracer, making the span visible in pretty trace output. tracing's fmt layer only renders a span's path when an event fires within it, so the span was still "active" but invisible — failing the test/trace.bats assertions that look for "hook.run" in stderr output. Emit an explicit info event at the top of Hook::run so visibility no longer depends on whatever downstream deps happen to log. Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 23b7cfb. Configure here.
|
|
||
| #[tracing::instrument(level = "info", name = "hook.run", skip(self, opts), fields(hook = %self.name))] | ||
| pub async fn run(&self, opts: HookOptions) -> Result<()> { | ||
| tracing::info!("running hook"); |
There was a problem hiding this comment.
Unrelated tracing line added in dependency management PR
Low Severity
A tracing::info!("running hook") event was added inside hook.run, but this PR is solely about dropping submodule dependencies and restoring crates.io publishing — no other source code changes are present. The function already has a #[tracing::instrument(level = "info", name = "hook.run", ...)] attribute that creates an info-level span on entry, making this additional bare event largely redundant. This looks like a leftover from the Claude Code development session.
Reviewed by Cursor Bugbot for commit 23b7cfb. Configure here.
|
The The bumps in this PR (ensembler 0.3 → 1.1, clx 0.3 → 1.3) removed the Remove the line and the trace tests fail again. This comment was generated by Claude Code. |
### 🚀 Features - **(harper)** add harper-cli config to hk builtin config by [@hituzi-no-sippo](https://github.com/hituzi-no-sippo) in [#714](#714) ### 🐛 Bug Fixes - **(release)** add linux musl targets by [@jdx](https://github.com/jdx) in [#829](#829) ### 🔍 Other Changes - drop sub-crate submodules and publish hk to crates.io by [@jdx](https://github.com/jdx) in [#830](#830) ### 📦️ Dependency Updates - lock file maintenance by [@renovate[bot]](https://github.com/renovate[bot]) in [#826](#826) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Primarily a version/release bookkeeping change (docs, generated CLI metadata, and lockfiles) with no runtime logic modifications in this diff. > > **Overview** > Cuts release `v1.43.0` by bumping the crate version in `Cargo.toml`/`Cargo.lock` and updating `CHANGELOG.md` with the 1.43.0 notes. > > Regenerates versioned references across docs and CLI artifacts (e.g., `docs/*`, `docs/cli/*`, example `.pkl` files, and `hk.usage.kdl`) to point at `v1.43.0` Pkl package URLs. Updates `mise.lock` to include provenance metadata for the `communique` linux x64 artifact. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit f4e6c35. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: mise-en-dev <[email protected]>


Summary
xx,clx, andensemblergit submodules and consumes them as regular crates.io dependencies (xx2.5,clx1.3,ensembler1.1). The sub-crates are now maintained entirely in their own repositories.hk— the crate has been stuck at 1.10.1 (Aug 2025) while tagged releases continued through 1.42.0. The publish step was accidentally dropped in 186480d during the subtree → submodule migration.publish-cratejob to release.yml that runs aftercreate-releaseand invokescargo publish -p hkwithCARGO_REGISTRY_TOKEN.CARGO_REGISTRY_TOKENpassthrough from release-plz.yml.crates=(clx ensembler xx)loop,process_subcrate_upstream, and allgit submoduleinvocations for sub-crates. Roughly half the script..cargo/config.tomlwhich patchedclxto the local submodule path.Why
Each sub-crate release used to require threading changes through this repo's
mise-tasks/release-plzdance. Making them first-class external dependencies matches how they actually work today — they have their own repos, release cadence, and crates.io presence — and eliminates the broken publishing path forhkitself.Reviewer notes
ensemblerto 1.x forcedclxto 1.x as well (ensembler 1.1 depends on clx 1.x, and having two major versions of clx in the graph caused type mismatches in src/step/runner.rs).test/are unaffected — workflows can keepsubmodules: recursive.Cargo.lockchurn is large because path-source entries had to be replaced with registry sources; actual dep version changes are limited to the three sub-crates plus their transitives.hkshim is installed globally — this PR was pushed withHK=0. That's a pre-existing dev-env issue.Test plan
cargo check --all-targets— verified locally, passespublish-crateandhkshows up on crates.io at the new versionThis PR was prepared by Claude Code.
Note
Medium Risk
Release/publishing pipeline changes (including automated
cargo publish) can affect the release process and require correct secrets/permissions. Dependency source changes from local submodules to crates.io may introduce subtle behavior or transitive dependency differences at build/runtime.Overview
Stops vendoring sub-crates via git submodules/workspace and switches to crates.io. Removes the workspace and local
[patch]override, deletes theclx/xx/ensemblersubmodule entries, and updatesCargo.tomlto depend on publishedclx,ensembler, andxxversions.Reworks the release automation to publish the crate.
release.ymladds a newpublish-cratejob that runscargo publish(withCARGO_REGISTRY_TOKEN) aftercreate-release, whilerelease-plz.ymlno longer passes the cargo token and themise-tasks/release-plzscript drops all submodule update logic and just tags/pushes releases.Includes large
Cargo.lockchurn consistent with moving from path-based sub-crates to registry sources, plus a small extratracing::info!log at the start ofHook::run.Reviewed by Cursor Bugbot for commit 23b7cfb. Bugbot is set up for automated code reviews on this repo. Configure here.