The clippy job builds without the cpp feature, so the difftest unit runners
(registered only under difftest/cpp) were never linted. Add a clippy step to
the difftest job after the C++ reference build, using --features difftest/cpp
(which also enables solidcore-ffi/cpp; solidcore-ffi/cpp alone does not
compile the runners).
Fix the 9 lints it reports, with no allows and no change to generated inputs
or comparisons (reports byte-identical before and after):
- intersect_surface_tracer: assign_op_pattern, range_plus_one
- surface_surface_cache_p2: indexing_slicing, range_plus_one
- topology_brep_data: items_after_statements, let_and_return, doc_markdown,
neg_cmp_op_on_partial_ord, indexing_slicing
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNGVDsEXPdxtFSUKma3wKs
release.yml: cargo test/check/publish run with --locked; a dry-run publish
without CARGO_REGISTRY_TOKEN runs before the real publish; full-history
checkout and a check that the tagged commit is an ancestor of origin/main.
ci.yml: new publish-dry-run job (no secrets).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V8ohWGLCzFPoZriCeSSero
release.yml holds CARGO_REGISTRY_TOKEN: drop Swatinem/rust-cache (a
compromised tag or poisoned cache could tamper with the build before
publish), pin actions/checkout to the v4.2.2 commit SHA, and do not
persist git credentials. progress.yml (contents: write) also pins
checkout. Flagged by an automated security review.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
rust-cache's post-step cleans the cargo target dir (bin/) before the C++
cache saves, so the cache stored an empty bin/cpp and every later run got
a "hit" with no libraries (solidcore-ffi build script: missing bin/cpp/lib).
Build into .cpp/ via SOLIDCORE_CPP_DIR (build.sh now honours it, as
solidcore-ffi already did), new cache key prefix cpp-v2, and build whenever
the libs are missing rather than trusting cache-hit.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- crates/solidcore: drop publish = false; version 0.0.1 (0.0.x until usable end
to end); repository, readme, keywords, categories; crate README stating it is
early work in progress; LICENSE, NOTICE, ATTRIBUTION.md symlinked in so the
package carries them (verified in the packaged .crate).
- .github/workflows/release.yml: on tag solidcore-v<version>, check the tag
matches the crate version, test, wasm check, cargo publish with the
CARGO_REGISTRY_TOKEN secret (environment crates-io).
- README: Releasing section. solidcore-ffi and difftest stay unpublished.
cargo publish --dry-run: 154 files, 5.4 MiB (1.2 MiB compressed).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- [profile.difftest]: release with opt-level 1, overflow checks and debug
assertions. Same results (all 110 reports byte-identical), full run about
2 min instead of ~35 min in CI.
- C++ reference cache key no longer hashes harness/cpp/shim/ (shims are
compiled by solidcore-ffi), so port PRs stop rebuilding the C++ (~4 min).
- AGENTS.md and the difftest README use the profile.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V8ohWGLCzFPoZriCeSSero
- AGENTS.md section 4: claim a unit by opening a draft PR "port: <unit id>"
(lowest number wins); finish by setting status in the PR; maintainers merge
on green CI. README Contributing points there.
- plan/PROGRESS.md: generated checklist (harness/plan/progress.py), kept current
on main by .github/workflows/progress.yml from modules.toml and open PRs.
- Release the 5 claims of the stopped local swarm; surface.trim_srf_cache WIP
is on origin branch unit/surface.trim_srf_cache.
- CI fixes: pin the toolchain to 1.98.0 (GitHub's newer clippy failed 18 new
lints); topology.database_io FFI wrapper starts with small buffers and
retries at the exact size (worst-case reservation was ~37 GB, refused on
GitHub runners). Full difftest under a 12 GB ulimit: 110 units, 83 pass,
27 partial, 0 failed.
- Refresh stale difftest reports (cases unblocked by curve.curve_p5).
- plan/STATUS.md: handoff section.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V8ohWGLCzFPoZriCeSSero