Compare commits

...

1 Commits

Author SHA1 Message Date
jyviko 43f6ee6a98 Contributing: kernel operations migrate to solidcore; features call its API
AGENTS.md, CONTRIBUTING.md and the contributing skill say how the work is
split since 0.40: SolidCraft is the application and calls the solidcore API;
geometry math (evaluators, intersections, solvers, tessellation, kernel cases)
is added to solidcore first. New features are discussed on Discord, then get
an issue and a claim, after a search of all issues and pull requests, open and
closed, for similar work. Work begun before 0.40 is ported onto today's code
before it lands. The kernel-paused section becomes "Kernel work goes to
solidcore".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 17:23:31 -05:00
4 changed files with 31 additions and 15 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# While a new geometry kernel is evaluated, new issues and discussions about kernel work, and new # While a new geometry kernel is evaluated, new issues and discussions about kernel work, and new
# pull requests that change the kernel directories, are labelled `kernel-paused` for a maintainer to # pull requests that change the kernel directories, are labelled `kernel-paused` for a maintainer to
# answer (CONTRIBUTING.md, "Kernel work is paused"). The logic is in scripts/kernel-paused/ (tested # answer (CONTRIBUTING.md, "Kernel work goes to solidcore"). The logic is in scripts/kernel-paused/ (tested
# in ci.yml). # in ci.yml).
name: Kernel paused name: Kernel paused
+3 -3
View File
@@ -3,7 +3,7 @@
SolidCraft is a clean-room, pure-Rust parametric 3D CAD app (sketch solver, feature timeline, B-rep kernel, an egui UI that agents drive). This file is a router: the hard rules, then the skill to read for your task. Humans: CONTRIBUTING.md. SolidCraft is a clean-room, pure-Rust parametric 3D CAD app (sketch solver, feature timeline, B-rep kernel, an egui UI that agents drive). This file is a router: the hard rules, then the skill to read for your task. Humans: CONTRIBUTING.md.
## Start here ## Start here
Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelled `help wanted`, `good first issue`, `needs-triage`; architecture in `docs/architecture.md`. Act when the code, docs and rules settle a question; ask only when it changes what users see. Local `plan/` notes are optional. Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelled `help wanted`, `good first issue`, `needs-triage`; architecture in `docs/architecture.md`. Act when the code, docs and rules settle a question; ask only when it changes what users see.
## Hard rules (what enforces each) ## Hard rules (what enforces each)
- Independent: never copy another product's code, icons, text or templates; never drive or take data from commercial CAD. `skills/solidcraft-ground-rules/SKILL.md`. - Independent: never copy another product's code, icons, text or templates; never drive or take data from commercial CAD. `skills/solidcraft-ground-rules/SKILL.md`.
@@ -11,7 +11,7 @@ Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelle
- Every asset is original or openly licensed with a row in ATTRIBUTION.md; read `assets/AGENTS.md` before icon work: `cargo xtask assets`, `cargo xtask icons`. - Every asset is original or openly licensed with a row in ATTRIBUTION.md; read `assets/AGENTS.md` before icon work: `cargo xtask assets`, `cargo xtask icons`.
- Never crash: no unwrap/expect/panic/unsafe in non-test code (unsafe allowlist in crash-safety), errors are `Result`, input is hostile: clippy `-D warnings`, `hostile_params_never_panic`. - Never crash: no unwrap/expect/panic/unsafe in non-test code (unsafe allowlist in crash-safety), errors are `Result`, input is hostile: clippy `-D warnings`, `hostile_params_never_panic`.
- Model decisions (what an operation does, which bodies it touches, which face or edge a point or name means, depths, nearness) use exact geometry; a mesh is for display, export, previews and mesh bodies (`xtask/mesh-decisions.txt` only shrinks): `cargo xtask mesh-decisions`. - Model decisions (what an operation does, which bodies it touches, which face or edge a point or name means, depths, nearness) use exact geometry; a mesh is for display, export, previews and mesh bodies (`xtask/mesh-decisions.txt` only shrinks): `cargo xtask mesh-decisions`.
- New kernel cases go to solidcore: `cargo xtask lists`. - Kernel ops and math go to solidcore; features call its API: `cargo xtask lists`.
- Everything is a command and programmatic calls never open dialogs: `skills/solidcraft-commands/SKILL.md`. - Everything is a command and programmatic calls never open dialogs: `skills/solidcraft-commands/SKILL.md`.
- Layering (geom, sketch/kernel/render, doc, io, engine, ui-egui, apps); only `crates/kernel` uses truck: `cargo xtask layers`. - Layering (geom, sketch/kernel/render, doc, io, engine, ui-egui, apps); only `crates/kernel` uses truck: `cargo xtask layers`.
- One outer UI container, one camera path (`navigation::handle`), colours from theme tokens: `cargo xtask ui-containers`. - One outer UI container, one camera path (`navigation::handle`), colours from theme tokens: `cargo xtask ui-containers`.
@@ -31,7 +31,7 @@ Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelle
## Working on X: read the skill first ## Working on X: read the skill first
| Working on | Read | | Working on | Read |
|---|---| |---|---|
| A PR, a claim, review, CI or evidence | `skills/solidcraft-contributing/SKILL.md` | | A feature, PR, claim, review, CI, evidence | `skills/solidcraft-contributing/SKILL.md` |
| Licences, assets, clean-room, the name | `skills/solidcraft-ground-rules/SKILL.md` | | Licences, assets, clean-room, the name | `skills/solidcraft-ground-rules/SKILL.md` |
| Non-test Rust, hostile input, a crash report | `skills/solidcraft-crash-safety/SKILL.md` | | Non-test Rust, hostile input, a crash report | `skills/solidcraft-crash-safety/SKILL.md` |
| A command, a crate boundary | `skills/solidcraft-commands/SKILL.md` | | A command, a crate boundary | `skills/solidcraft-commands/SKILL.md` |
+26 -11
View File
@@ -17,15 +17,27 @@ Before choosing a task, check the [command inventory](docs/features.md) and
Questions, ideas or want to say what you're working on? Join the [Discord](https://discord.gg/FtU4NQNVDH). Questions, ideas or want to say what you're working on? Join the [Discord](https://discord.gg/FtU4NQNVDH).
## Kernel work is paused ## Kernel work goes to solidcore
We're moving to a new geometry kernel. Until that's done, please don't open pull requests that Since 0.40, SolidCraft's geometry kernel is [solidcore](https://github.com/tangency-labs/solidcore),
change `crates/kernel/`, `crates/geom/` or `vendor/truck*`, or issues and discussions about kernel and the kernel operations still in this repository are migrating there. The split:
work: booleans, fillets, chamfers, shell, offsets, sweeps and lofts, threads and holes, STEP/IGES
import and export, or tessellation. The pinned issue on the tracker explains it. New ones get the - **SolidCraft** is the application: commands, the timeline, sketches, the UI, file handling. A new
`kernel-paused` label (`.github/workflows/kernel-paused.yml`) and a maintainer answers them. Crashes feature calls the solidcore API and builds on the operations it offers.
and data loss are still taken as issues. Pull requests outside those directories carry on as normal, - **solidcore** holds the geometry: evaluators, intersections, booleans, blends, shells, sweeps,
including the dialogs and tools for these features. tessellation and the rest of the math. If a feature needs kernel functionality solidcore does not
have yet, add it to solidcore first (its own issue and PR), then use it here.
So pull requests that add geometry math to SolidCraft (`crates/kernel/`, `crates/geom/`, or a new
evaluator or solver anywhere else) are not taken; they get the `kernel-paused` label
(`.github/workflows/kernel-paused.yml`) and a maintainer points them to solidcore. Crashes and data
loss are still taken as issues here, and the dialogs and tools for kernel features carry on as
normal.
Work started before 0.40 was written against the earlier kernel. It is still welcome: port it onto
today's code, calling solidcore for the geometry, before it can land. Expect a substantial rework
for anything that touched the kernel. Designs keep opening and rebuilding on the new kernel; where a
result changes, the PR says so and why.
## Get it running (about 10 minutes on a fast machine) ## Get it running (about 10 minutes on a fast machine)
@@ -329,8 +341,11 @@ and a fresh CI run:
1. Work is tracked in [GitHub issues](https://github.com/tangency-labs/solidcraft/issues), labelled 1. Work is tracked in [GitHub issues](https://github.com/tangency-labs/solidcraft/issues), labelled
by area (`area:kernel`, `area:sketch`, `area:doc`, `area:ui`, `area:infra`). For anything by area (`area:kernel`, `area:sketch`, `area:doc`, `area:ui`, `area:infra`). For anything
bigger than a bug fix that has no issue yet, open one first. **Claim the issue with a draft bigger than a bug fix that has no issue yet, discuss it on [Discord](https://discord.gg/FtU4NQNVDH)
PR** before you start, so two people don't build the same thing: first, then open an issue. Before you start, search **all** issues and pull requests, open and
closed, for similar work (`gh issue list -R tangency-labs/solidcraft --state all --search "<words>"`,
and the same with `gh pr list`). **Claim the issue with a draft PR** before you start, so two
people don't build the same thing:
- Check nobody has it: `gh pr list -R tangency-labs/solidcraft --state open --search "#N"`. - Check nobody has it: `gh pr list -R tangency-labs/solidcraft --state open --search "#N"`.
- Branch from the latest `main`, commit `git commit --allow-empty -m "claim: #N"`, push, and - Branch from the latest `main`, commit `git commit --allow-empty -m "claim: #N"`, push, and
open a **draft** PR titled `<summary> (#N)`, e.g. `Fillet: variable radius along a chain (#123)`. open a **draft** PR titled `<summary> (#N)`, e.g. `Fillet: variable radius along a chain (#123)`.
@@ -443,7 +458,7 @@ correct them freely and it won't put them back.
## Where help is wanted most ## Where help is wanted most
**Kernel speed (slow fillets, booleans, STEP):** please don't rewrite the current kernel code for speed; it is being replaced by [solidcore](https://github.com/bherbruck/solidcore) ([progress](https://tangency-labs.github.io/solidcore/)). Report slow cases with a file under the `kernel-perf` label, and put kernel effort into solidcore instead. See [#1597](https://github.com/tangency-labs/solidcraft/issues/1597). **Kernel speed (slow fillets, booleans, STEP):** please don't rewrite the current kernel code for speed; the kernel is [solidcore](https://github.com/tangency-labs/solidcore) ([progress](https://tangency-labs.github.io/solidcore/)). Report slow cases with a file under the `kernel-perf` label, and put kernel effort into solidcore instead. See [#1597](https://github.com/tangency-labs/solidcraft/issues/1597).
See the [`help wanted`](https://github.com/tangency-labs/solidcraft/labels/help%20wanted) and See the [`help wanted`](https://github.com/tangency-labs/solidcraft/labels/help%20wanted) and
[`good first issue`](https://github.com/tangency-labs/solidcraft/labels/good%20first%20issue) labels. [`good first issue`](https://github.com/tangency-labs/solidcraft/labels/good%20first%20issue) labels.
+1
View File
@@ -19,6 +19,7 @@ not modelling a part through MCP.
feature under another number, and PRs that change the files you will change feature under another number, and PRs that change the files you will change
(`gh pr list ... --json number,title,files`). If someone has it, comment on their PR or issue (`gh pr list ... --json number,title,files`). If someone has it, comment on their PR or issue
instead of opening a second one: two PRs for one change cannot both land. instead of opening a second one: two PRs for one change cannot both land.
- **Search before you start.** Scan ALL issues and PRs, open and closed, for similar work (`gh issue list` and `gh pr list --state all --search`). New features are discussed on Discord, then get an issue. Kernel functionality goes to solidcore, not here (CONTRIBUTING.md, "Kernel work goes to solidcore"); work begun before 0.40 is ported onto today's code first.
- **Claim with a draft PR.** `gh pr list -R tangency-labs/solidcraft --state open --search "#N"`; if none, - **Claim with a draft PR.** `gh pr list -R tangency-labs/solidcraft --state open --search "#N"`; if none,
branch from the latest `origin/main`, `git commit --allow-empty -m "claim: #N"`, push, and open a branch from the latest `origin/main`, `git commit --allow-empty -m "claim: #N"`, push, and open a
draft PR titled `<summary> (#N)`. The lowest-numbered open PR for an issue wins; close yours if it draft PR titled `<summary> (#N)`. The lowest-numbered open PR for an issue wins; close yours if it