@@ -6,27 +6,42 @@ deliberately left alone. It is written for whoever merges the branch into
66session_01GBrvY1uPRbonUrDncT7rc7, 2026-09-29) could not reach openpocl's
77canonical copy.
88
9- These are branch notes, not part of a release. When merging, move them to
10- openpocl's docs (beside ` docs/outline/40-traps.md ` ) or delete them, so
11- ` crmvec-publish.sh ` doesn't publish them. Each later commit on this branch
12- adds its entry here.
9+ These are branch notes, not part of a release. ` crmvec-publish.sh `
10+ publishes only the files on its list, so this one stays out unless someone
11+ adds it; its content belongs in openpocl's docs (see "Where this belongs in
12+ openpocl" at the end). It is not called ` DECISIONS.md ` because openpocl's
13+ ` docs/DECISIONS.md ` is a generated file that sessions are told never to
14+ edit. Each later commit on this branch adds its entry here.
1315
1416## Before merging
1517
16- 1 . ** The branch was made on the public repo, not in ` openpocl/harness/crmvec ` .**
17- Copy its tree into ` harness/crmvec ` before the next
18- ` crmvec-publish.sh ` , or the next publish reverts it. Six files are new:
19- ` crmvec-fpenv.c ` , ` crmvec-fpenv.h ` , ` crtest-ftz.h ` , ` crtest-own.h ` ,
20- ` port/crmvec-port-e.c ` , ` port/pow-parity.h ` . Then
21- ` crmvec-publish.sh --check ` should report a match.
22- 2 . ** It contains ` main ` as of ` 5bf6f82 ` ** (merged in ` 357fa92 ` , no
23- conflicts) and was 0 commits behind it on 2026-09-29, so ` main ` can
24- fast-forward to it. `git log --oneline
25- main..origin/claude/beautiful-ramanujan-4gvzzd` lists what it adds.
26- 3 . ** The user asked that this branch not be merged by the cloud session**
18+ 1 . ** Bring it in through the harness, not by merging the branch.** The
19+ branch was made on the public repo, not in ` openpocl/harness/crmvec ` ,
20+ and public crmvec is written only by ` crmvec-publish.sh ` :
21+ - copy the branch's files into ` harness/crmvec ` (or the next publish
22+ reverts them);
23+ - add the six new files to ` crmvec-publish.sh ` 's file list:
24+ ` crmvec-fpenv.c ` , ` crmvec-fpenv.h ` , ` crtest-ftz.h ` , ` crtest-own.h ` ,
25+ ` port/crmvec-port-e.c ` , ` port/pow-parity.h ` . The Makefile needs all
26+ six, so a publish without them builds nothing. This log is not on the
27+ list, and needn't be;
28+ - run the fresh-copy gate and the privacy scan as for any publish, then
29+ publish; ` crmvec-publish.sh --check ` should then report a match.
30+ 2 . ** Don't fast-forward ` main ` to this branch.** Its 11 commits are authored
31+ ` Claude <noreply@anthropic.com> ` and carry a ` Claude-Session ` trailer.
32+ Every commit on ` main ` is authored ` anun333 <anun333@posteo.net> ` , with
33+ only the ` Co-Authored-By ` trailer, which is openpocl's rule for anything
34+ public. The cloud session was set up with that identity and didn't know
35+ the rule until it saw openpocl's CLAUDE.md. Publishing through the
36+ harness gives ` main ` the usual author; the branch can be deleted after.
37+ 3 . ** It contains ` main ` as of ` 5bf6f82 ` ** (merged in ` 357fa92 ` , no
38+ conflicts) and was 0 commits behind it on 2026-09-29. `git log
39+ --oneline main..origin/claude/beautiful-ramanujan-4gvzzd` lists what it
40+ adds.
41+ 4 . ** The user asked that this branch not be merged by the cloud session**
2742 ("let the other maintainer version of you do that"). Nothing here was
2843 pushed to ` main ` .
29- 4 . ** CI** is green on every pushed head: ` 6bc7ff0 ` , ` 447d3c0 ` , ` bed74e9 ` ,
44+ 5 . ** CI** is green on every pushed head: ` 6bc7ff0 ` , ` 447d3c0 ` , ` bed74e9 ` ,
3045 ` 41e9443 ` and ` 5fe2314 ` (run 36593612771).
3146 - GitHub's x86-64 runners vary: the ` 447d3c0 ` run had AVX-512, the later
3247 three didn't (their AVX-512 steps took 0 s).
@@ -302,6 +317,48 @@ exit non-zero.
302317 ` ec1904b ` on, a build of this branch links with conda's ` LDFLAGS ` . That
303318 was checked here with simulated flags, not by conda-build.
304319
320+ ## Where this belongs in openpocl
321+
322+ Mapped from openpocl's CLAUDE.md and ` docs/HANDOFF.md ` as of 2026-09-28,
323+ the latest the cloud session saw. Run ` harness/prior-work.sh ` on each
324+ subject first (ftz, avx512, port_isint, variant_cc, multi-arch), in case
325+ the laptop has something newer.
326+
327+ - ** The crmvec record** (each commit above): ` docs/own-math-library.md ` .
328+ The Cascade Lake timing goes in ` docs/port-speed.md ` . It bears on two
329+ open lines there: making the x86 portable build the default (the owner's
330+ call), and x86's 1.11-1.14x stragglers. On Cascade Lake the gcc build's
331+ worst are ` erff ` 1.17x and ` atan ` 1.15x; the clang build's ` sinhf ` 1.13x
332+ and ` cbrtf ` 1.11x.
333+ - ** The CORE-MATH flush-to-zero findings:** ` docs/pr-fix-intents.md ` , the
334+ CORE-MATH report entry, as a follow-up in the thread where CORE-MATH
335+ answered the undefined-behaviour report on 2026-09-28. It is
336+ outward-facing, so it needs the owner's yes. The draft and its ` repro.c `
337+ were written in the cloud session's scratchpad, which doesn't outlive the
338+ container; both were sent to the owner through the app on 2026-09-29, to
339+ go in ` docs/drafts/ ` .
340+ - ** Traps** , for ` docs/outline/40-traps.md ` , numbered after 82 (the
341+ highest in the 2026-09-28 handoff):
342+ - A check that finds its library through a RUNPATH of ` $ORIGIN ` tests
343+ whatever ` LD_LIBRARY_PATH ` puts first, and prints that library's
344+ verdict (` mpfrcheck ` , ` f16check ` ).
345+ - ` (a + 1.5*2^52) - 1.5*2^52 ` rounds exactly only for |a| < 2^51, so an
346+ integer test built on it misjudges [ 2^51, 2^53).
347+ - gcc's ` -ffast-math ` startup code leaves FTZ/DAZ (x86) or FZ (aarch64)
348+ on for the whole program, and CORE-MATH is not correct under it.
349+ - clang calls ` _ZGVd* ` for ` -mavx ` code. glibc's are IFUNCs, so a libmvec
350+ replacement must check the CPU there.
351+ - A check that ends in ` | tail -1 ` or greps for a verdict passes when it
352+ tested nothing (` crtest ` and ` mpfrcheck ` typos, ` hypotf-midpoints `
353+ finding nothing). Say VOID and exit non-zero instead.
354+ - The compiler marks functions that take vectors with the variant
355+ calling-convention flag (` VARIANT_PCS ` , ` VARIANT_CC ` ), but not aliases
356+ of them (riscv64 ` fmin ` ).
357+ - A ` Multi-Arch: same ` package can't carry a script that names the
358+ host's library directory.
359+ - ** Open items:** the "Deliberately not done" list above goes to
360+ ` pr-fix-intents.md ` 's Backlog.
361+
305362## Appendix: Cascade Lake, the AVX2 entry points per function
306363
307364` crtest time ` , L1 column, fastest of 3 interleaved runs per build
0 commit comments