crates.io publish prep for mortie-core (issue #201) - #211
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #211 +/- ##
=======================================
Coverage 96.67% 96.67%
=======================================
Files 20 20
Lines 2283 2283
=======================================
Hits 2207 2207
Misses 76 76
Flags with carried forward coverage won't be shown. Click here to find out more. Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
Merging this PR will improve performance by 15.53%
|
| Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|
| ⚡ | coverage_triangle[4] |
147.6 µs | 127.8 µs | +15.53% |
Tip
Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.
Comparing claude/201-crates-prep-v2 (88969bd) with main (b2ad13a)
Footnotes
-
1 benchmark was skipped, so the baseline result was used instead. If it was deleted from the codebase, click here and archive it to remove it from the performance reports. ↩
|
🤖 from Claude Folded espg's two in-session rulings (2026-08-24):
|
Refs #201 (crates.io publish prep). Refs #202 (due-diligence residuals folded in — espg decides when that issue closes).
Continuation of #210 — #207 (workspace split) was squash-merged to
main, so the original stacked branch's ancestry no longer matched; this PR carries the same five prep commits cherry-picked ontomain(no force-push, per policy). The actualcargo publishis a production release espg executes by hand; this PR goes exactly as far as a cleancargo publish --dry-runand stops.Phases
589adc7):mortie-core/Cargo.tomlgainsrust-version,homepage/readme,keywords,categories, and a docs.rs target pin;LICENSE(MIT) copied into the crate dir so the published archive ships the license text.5dd7ed6):mortie-core/README.mdwith the wire-format-frozen framing per the semver ruling: crate API 0.x/unstable, byte-level codec grammar frozen-for-1.x and normative in the spec page (deep-linked under thelatest/alias, since the docs site is mike-versioned and the unprefixed path 404s). The anchors are slugified from the numbered headings, so they are not stable by construction — they are unaffected by Spec: normative toc word grammar, frozen for 1.x (issue #193) #206 specifically, because that PR appends a new section and leaves §1/§2 untouched. Includes the mortie-core due diligence: license, CDS-healpix dep overlap, MSRV, wasm32 target #202 license-direction line (MIT crate ← Apache-2.0 consumer is the clean direction). Also two test-only lines:iter::repeat_n(stabilized 1.82) →repeat().take()so the whole crate, tests included, compiles on the declared MSRV.316bee8):.github/workflows/mortie-core.yml, new standalone workflow (existing workflows untouched): build,cargo test -p mortie-core(includestests/dep_contract.rs, the zero-dependency guard — the stale "no CI runs this" note inlib.rsupdated accordingly), wasm32 build (mortie-core due diligence: license, CDS-healpix dep overlap, MSRV, wasm32 target #202), publish dry-run, and an MSRV job that tests the packaged crate on 1.67 (the check must leave the workspace: the workspaceCargo.lockis v4, unreadable by pre-1.78 cargo).Name — RESOLVED
espg ruled
mortie-core(2026-08-24). The in-tree metadata already carried that default, so nothing changed on the ruling.Original framing, kept for the record: Defaulted to
mortie-core— available on crates.io, as are all alternatives (see the availability findings on #201). The name is espg's ruling and a five-minute mechanical rename, but it is not two-places-trivial — the sites are: thenamefield inmortie-core/Cargo.toml; the README title line and itsuse mortie_core::…example (the lib name derives from the package name, so the example stops compiling otherwise); the workspace-rootCargo.tomldependency keymortie-core = { path = "mortie-core" }(a build break, not a doc nit, unless the key changes or gainspackage = "…"); and.github/workflows/mortie-core.yml's four-p mortie-coreflags plus itsmortie-core-*.crateglobs. The name-deriveddocumentation = "https://docs.rs/mortie-core"field has been dropped (docs.rs is cargo's default for a published crate), removing one silent-breakage site.MSRV: 1.67 (determined empirically)
u64::ilog10(decimal_morton.rs:671), stabilized 1.67.0.int_logeven with--ignore-rust-version, so 1.67 is the true floor, not just the declared one.iter::repeat_nin two#[cfg(test)]lines (would have made the crate-as-tested need 1.82); swapped to the equivalentrepeat().take()(phase 2) rather than declaring a 15-release-newer MSRV for a test convenience.rust-version, so there is no upstream constraint to match (mortie-core due diligence: license, CDS-healpix dep overlap, MSRV, wasm32 target #202).Dry run (local, clean)
No path-dependency issues: the workspace root depends on
mortie-core, not the reverse;cargo tree -p mortie-coreis one line andtests/dep_contract.rskeeps it that way.wasm32 (#202)
cargo build --target wasm32-unknown-unknown -p mortie-core→Finishedclean, no changes needed (zero-dep arithmetic crate). Also wired into the CI leg.How it was tested
cargo test -p mortie-core— 72 tests green (66 unit + dep_contract 2 + pivot_surface 4).cargo publish --dry-run -p mortie-core— clean (tail above).mortie-core crateworkflow itself.Questions for review
Crate name rulingRESOLVED: espg ruledmortie-core(2026-08-24, recorded on #201); the metadata already defaults to it, no change needed.fmt/clippy in the CI legRESOLVED: espg ruled it rides this PR (2026-08-24) — thecratejob now runscargo fmt --check -p mortie-coreandcargo clippy -p mortie-core --all-targets -- -D warnings(88969bd; both clean locally). Covers the mortie-core half of Follow up items for the week of 2026-08-17 #208 item 1; thesrc_rust/half stays on Follow up items for the week of 2026-08-17 #208.Release cadenceRESOLVED: espg ruled own cadence, by-hand publish (2026-08-24, recorded on #201). Nothing in this PR mechanizes a release — publish stays a by-hand command.