M1 — import donor: STATUS¶
Date: 2026-05-21 (continuing from M0 same day)
Branch: merge/import-donor
Anchor: branched off pls4all-final/v1.0.0-pre-merge (3b99c0b)
Merge commit SHA: 2ca4aa8f681472817e15288f8f83a8ff3ca3e968
Pushed: origin/merge/import-donor = 2ca4aa8 ✅
What was done¶
# |
Action |
Outcome |
|---|---|---|
1 |
Branch |
✅ HEAD now at clean baseline ( |
2 |
Add donor as local-path remote: |
✅ |
3 |
|
✅ 45 commits + 18 archive tags fetched |
4 |
|
✅ Merge commit |
5 |
|
✅ no collision; pls4all 0.97.3 configured cleanly |
6 |
|
✅ 24 build steps; libn4m.so.1.16.0 + n4m_cli + n4m_tests + libp4a_static.a all linked |
7 |
|
✅ 265 run, 0 failures, 0 skipped |
8 |
|
✅ “selfcheck OK”, project version |
9 |
|
✅ |
Merge commit structure¶
commit 2ca4aa8f681472817e15288f8f83a8ff3ca3e968
parents: 3b99c0b4a348c271b22deff1c4822709522f451b (pls4all baseline: "Publish partial benchmark dashboard refresh")
6195574a64b167cabdfa8d9a1d8bf3cd706a80da (donor M0 baseline: "M0 baseline: unblock donor CI ahead of merge")
Add '_donor/nirs4all-methods/' from commit '6195574a64b167cabdfa8d9a1d8bf3cd706a80da'
git-subtree-dir: _donor/nirs4all-methods
git-subtree-mainline: 3b99c0b4a348c271b22deff1c4822709522f451b
Both histories are reachable from the merge commit. git log --first-parent walks pls4all history; git log (default = follow all parents) walks both.
Tree layout after import (verified)¶
/home/delete/nirs4all/pls4all/ (pls4all root — untouched)
├── cpp/include/pls4all/p4a.h (86.8 KB, original)
├── bindings/ (14 sub-bindings)
├── parity/ (pls4all parity)
├── benchmarks/ (pls4all benchmarks)
├── docs/, roadmap/, scripts/ (pls4all)
└── _donor/nirs4all-methods/ (NEW — fully donor tree)
├── cpp/include/n4m/n4m.h (136.8 KB, donor ABI)
├── bindings/ (python, r)
├── parity/ (donor parity gate)
├── benchmarks/ (donor benchmarks)
├── docs/, roadmap/, scripts/ (donor)
├── CMakeLists.txt (donor — NOT activated by pls4all's root CMakeLists)
└── ARCHITECTURE.md, CHANGELOG.md, README.md, …
Roadmap gate satisfied¶
M1 gate per
MERGE_ROADMAP.mdrow M1: “both symbol tables co-exist; ctest can build pls4all only at this stage”
Both ABI symbol tables coexist on disk: pls4all
n4m_*+ donorn4m_*(each in its own header tree)pls4all builds and tests at 265/265 green
Donor tree is dormant — neither pls4all’s
CMakeLists.txtnor any other build glue picks it up yet. That’s correct for M1; M2.5 will start consolidating the common-core undercpp/src/core/common/.
What is NOT done (intentionally, per the roadmap)¶
Donor tree’s CMakeLists not wired into pls4all’s build (M2.5 will start that)
No source moves yet (M3 moves donor non-PLS sources out from
_donor/to final paths; M4 splits pls4all’smodel.cppetc.)No ABI rename (M5)
No catalog yet (M2 lands it)
Untracked working-tree noise¶
~596 files showing as ?? in git status. These are leftover oracle dumps + .x_target/ from the earlier codex/parity-30x30-dashboard-fixes checkout. They are NOT tracked by any branch — they are just orphan files on disk. They will be cleaned up either:
by checking out a clean state after work resumes, or
by the M2 catalog scripts when they run their own
.gitignorepropagation
No impact on the merge or build.
Next: M2 — target tree skeleton¶
Create the namespaced category dirs (per
MERGE_ROADMAP.md§2)Land
catalog/schema/method_v1.json(the expanded schema from §5.4)Auto-generate
catalog/methods.yamlfrom both source treesLand the 7 subset YAMLs (2 active:
nirs4all_methods+pls4all; 5 planned:aompls,nirs4all_preprocessing,nirs4all_augmentation,nirs4all_selection,n4m_transfer)Write
catalog/scripts/{validate_catalog,build_closure,render_subset}.pyGate:
validate_catalog.pypasses; the two active subsets close