From 3a00a5873ddbd15a6861a1779dd74d3ef5bbb8eb Mon Sep 17 00:00:00 2001 From: Cody Kickertz Date: Sat, 18 Apr 2026 22:28:29 -0500 Subject: [PATCH 1/2] fix(toml): expand multi-line inline tables to named blocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The local-model lint fix in ea46514 rewrote three workspace.dependencies entries as multi-line inline tables (`rustls = { \n version = ...\n }`). That syntax is TOML 1.1, supported by cargo only since Rust 1.94.0. hamma's declared MSRV is 1.85, so the root manifest fails to parse under 1.85's toml crate — which broke both the MSRV CI job and cargo-deny (whose bundled parser is also pre-1.1). Standards (standards/TOML.md, lines 9-11, 87-102) already state that multi-line inline tables are off-limits when MSRV predates 1.94, and that dependencies exceeding 80 columns should use expanded `[dependencies.X]` blocks. Convert rustls, serde, serde_json, and tokio to that form. Also restore the trailing newline dropped by the earlier auto-fix. Gates: - rustup run 1.85.0 cargo check --workspace: clean - cargo deny check: advisories ok, bans ok, licenses ok, sources ok - cargo fmt --check, cargo clippy -Dwarnings, cargo nextest run: clean - kanon lint . --summary: no open violations Gate-Passed: kanon 0.1.0 --- Cargo.toml | 54 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 33f3b00..f3db848 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,31 +45,9 @@ disallowed_types = "deny" snafu = "0.8" # TLS -rustls = { - version = "0.23", - default-features = false, - features = ["logging", "ring", "tls12"], -} tokio-rustls = { version = "0.26", default-features = false } webpki-roots = "1" -# Serialization -serde = { version = "1", default-features = false, features = [ - "derive", - "std", -] } -serde_json = { version = "1", default-features = false, features = ["std"] } - -# Async runtime -tokio = { version = "1", default-features = false, features = [ - "rt-multi-thread", - "macros", - "net", - "time", - "sync", - "io-util", -] } - # Tracing tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } @@ -93,10 +71,40 @@ proptest = "1" # Local workspace crates hamma-core = { path = "crates/hamma-core", version = "0.1.0" } +# Expanded forms (inline table exceeded 80 columns; MSRV 1.85 predates TOML 1.1 +# multi-line inline tables, so use [workspace.dependencies.X] blocks instead). + +[workspace.dependencies.rustls] +version = "0.23" +default-features = false +features = ["logging", "ring", "tls12"] + +[workspace.dependencies.serde] +version = "1" +default-features = false +features = ["derive", "std"] + +[workspace.dependencies.serde_json] +version = "1" +default-features = false +features = ["std"] + +[workspace.dependencies.tokio] +version = "1" +default-features = false +features = [ + "rt-multi-thread", + "macros", + "net", + "time", + "sync", + "io-util", +] + [profile.dev.package."*"] opt-level = 2 [profile.release] lto = "thin" codegen-units = 1 -strip = true \ No newline at end of file +strip = true From 895f8fb2d6f9471c64a3f38407a56e55f1ce7029 Mon Sep 17 00:00:00 2001 From: Cody Kickertz Date: Sat, 18 Apr 2026 22:28:37 -0500 Subject: [PATCH 2/2] fix(ci): remove broken binary smoke test job The `smoke` job in rust.yml was copied from the forkwright template and still referenced placeholder values (`cargo build --release -p BINARY_CRATE` and `./target/release/BINARY_NAME`). cargo fails immediately with "package ID specification `BINARY_CRATE` did not match any packages", so the job has been failing on every PR. hamma is a library-only workspace (dictyon + hamma-core, no [[bin]] targets), so there is no binary to smoke-test. Remove the job and leave a note explaining the conditions under which it should be re-added (i.e. when a CLI or daemon crate lands), pinning real crate/binary names. Gate-Passed: kanon 0.1.0 --- .github/workflows/rust.yml | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 50e9926..04af576 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -82,19 +82,6 @@ jobs: - name: Build docs run: cargo doc --workspace --no-deps - # WHY: Binary builds and runs correctly with default features. - # Catches link errors and missing runtime deps. - smoke: - name: Binary smoke test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - with: - persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - # PROJECT: replace BINARY_CRATE and BINARY_NAME with your project's values - - name: Build binary - run: cargo build --release -p BINARY_CRATE - - name: Verify binary runs - run: ./target/release/BINARY_NAME --version || ./target/release/BINARY_NAME --help || true + # NOTE: No "Binary smoke test" job — hamma is a library-only workspace + # (dictyon + hamma-core, no [[bin]] targets). Reintroduce when a CLI/daemon + # crate is added, pinning BINARY_CRATE/BINARY_NAME to real values.