Skip to content

Commit 9df7241

Browse files
committed
Document hyperreal porting branch discipline
1 parent 466dd41 commit 9df7241

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

PORTING_PLAN.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,32 @@ approximate predicate behavior, porting the same predicate surface to
1414
`hyperreal` becomes a backend upgrade instead of a simultaneous semantic and API
1515
rewrite.
1616

17+
## Branch and commit discipline during the port
18+
19+
Porting work should happen on a branch named `hyperreal` in each repository
20+
touched by the migration. This applies especially to:
21+
22+
- `csgrs`
23+
- `spade`
24+
- `boolmesh`
25+
- `curvo`
26+
- `voxelis`
27+
28+
The default branches should be treated as integration targets, not active
29+
porting branches. Before changing a repository for the port, switch that
30+
repository to its `hyperreal` branch or create it from the appropriate upstream
31+
base if it does not exist yet.
32+
33+
During the porting period, each successful change should be verified, committed,
34+
and pushed automatically to that repository's `hyperreal` branch before moving
35+
on to the next independent change. Cross-repo work should be split into
36+
repository-local commits so `csgrs`, `spade`, `boolmesh`, `curvo`, and `voxelis`
37+
each retain a reviewable history of the port.
38+
39+
After every successful commit and push, take another implementation turn against
40+
the next incomplete item in this plan. Continue that cycle until the plan is
41+
finished, tests expose a blocker, or a design decision requires human review.
42+
1743
## Target ownership model
1844

1945
The stack should have clear vertical responsibilities:
@@ -228,6 +254,12 @@ new stack:
228254
- `nalgebra::Matrix4<Real>` to the chosen `hyperlattice` transform type once
229255
that API is stable enough
230256

257+
External geometry kernels should be handled on their own `hyperreal` branches.
258+
In particular, `spade`, `boolmesh`, `curvo`, and `voxelis` should not receive
259+
long-running uncommitted local patches during the `csgrs` migration. A verified
260+
change in one of those libraries should be committed and pushed to that
261+
library's `hyperreal` branch before `csgrs` is updated to depend on it.
262+
231263
Keep these adapters private at first. The first milestone is internal
232264
correctness, not public API churn.
233265

@@ -324,6 +356,13 @@ After internals are stable:
324356

325357
## Design rules during the port
326358

359+
- Work on the `hyperreal` branch of each affected repository, especially
360+
`csgrs`, `spade`, `boolmesh`, `curvo`, and `voxelis`.
361+
- Commit and push each verified successful change to that repository's
362+
`hyperreal` branch before starting the next independent change.
363+
- After each successful commit and push, take another implementation turn on the
364+
next unfinished porting-plan item, continuing until the plan is complete or a
365+
blocker requires review.
327366
- Lower crates provide facts; `csgrs` makes modeling decisions.
328367
- Predicate uncertainty should be represented explicitly until `csgrs` decides
329368
how to handle it.

0 commit comments

Comments
 (0)