Commit Graph

9 Commits

Author SHA1 Message Date
bherbruck a42407ac5c CI: clippy with the C++ feature; fix the lints it finds
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
2026-10-13 22:38:35 -04:00
bherbruck a308b4c9a4 release: --locked, token-free dry-run publish, tag-on-main check; CI publish dry-run
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
2026-10-13 15:08:22 -04:00
bherbruck bca8e81f1b Harden release and progress workflows
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>
2026-10-13 07:41:07 -04:00
bherbruck 2c29766a21 Merge remote-tracking branch 'origin/main' into crate-publish 2026-10-13 07:25:28 -04:00
bherbruck f26d9dea4c CI: keep the C++ reference build out of bin/ so its cache is not emptied
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>
2026-10-13 07:12:54 -04:00
bherbruck 4e19b24a0f Make solidcore publishable to crates.io (0.0.1) with a tag-driven release workflow
- 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>
2026-10-13 07:08:40 -04:00
bherbruck 43f5a4b55a CI: optimised difftest profile and a C++ cache key that hits
- [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
2026-10-13 06:03:10 -04:00
bherbruck e19821ec65 Hand off to a PR workflow; fix CI; progress checklist
- 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
2026-10-13 04:35:01 -04:00
bherbruck b817634040 Repo scaffolding: licence, docs, lints, CI, solidcore skeleton
- LICENSE (verbatim upstream Apache-2.0), NOTICE, ATTRIBUTION.md
- README.md, AGENTS.md (rules, style, swarm workflow, machine budget)
- rust-toolchain.toml, rustfmt.toml, clippy.toml, deny.toml
- [workspace.lints]: unsafe deny, pedantic warn, unwrap/expect/panic/indexing deny
- CI: fmt, clippy, test, wasm check, cargo-deny, difftest of green units
- crates/solidcore: math (Vec3/Transform in upstream op order), error
  (SolidError), kernel (Tolerances, SplitMix64 Rng, Caches), topology
  (typed ids, arena Brep), module stubs with intent docs

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 14:35:15 -04:00