Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
a4555bc
bench: add ScoringBench integration
jxucoder Aug 16, 2026
cf6ae2e
docs: add agent guide and learning log
jxucoder Aug 16, 2026
aecf33f
fix: preserve categorical tree state on save
jxucoder Aug 16, 2026
e199e93
docs: record categorical persistence fix
jxucoder Aug 16, 2026
356103b
fix: reject unrepresentable categorical tree splits
jxucoder Aug 16, 2026
52385f2
docs: record categorical cardinality limit
jxucoder Aug 16, 2026
ee555cb
fix: fail fast for unsupported model batching
jxucoder Aug 16, 2026
6440e31
docs: mark experimental scaling boundaries
jxucoder Aug 16, 2026
0772110
docs: record scaling capability boundaries
jxucoder Aug 16, 2026
30b9ab5
ci: compare performance across pushed revisions
jxucoder Aug 16, 2026
05cd8bc
docs: record performance gate design
jxucoder Aug 16, 2026
82cf1e2
docs: research OpenBoost impact and adoption strategy
jxucoder Sep 5, 2026
67ee05b
docs: design GPU Python boosting foundation and execution plan
jxucoder Sep 5, 2026
f7eaf25
merge: integrate unified trainer and local correctness fixes
jxucoder Sep 5, 2026
3101a44
test: add isolated Modal foundation smoke and evidence gate
jxucoder Sep 5, 2026
1669974
test: record passing T4 foundation smoke evidence
jxucoder Sep 5, 2026
502f37f
test: add wheel-installed weighted CUDA correctness regressions
jxucoder Sep 5, 2026
8609f70
fix: make unified trainer execution and sampling explicit
jxucoder Sep 5, 2026
576702d
test: record T4 weighted Hessian regression and passing fix
jxucoder Sep 5, 2026
4423117
test: add real CUDA trainer boundary suite
jxucoder Sep 5, 2026
99621ae
test: freeze real-data P2 baseline protocol and harness
jxucoder Sep 5, 2026
4c16204
test: freeze passing T4 P2 execution and housing baseline
jxucoder Sep 5, 2026
50b3631
feat: add validated experimental CPU objective facade
jxucoder Sep 5, 2026
b2b3a7a
feat: dispatch experimental builders and per-tree schedules
jxucoder Sep 5, 2026
f414b8c
feat: persist experimental inference state and restore coefficients
jxucoder Sep 5, 2026
cfd7dc5
docs: record P3 CPU contract and isolated wheel validation
jxucoder Sep 5, 2026
cf61611
feat: add fixed-slot CPU and CUDA histogram primitive
jxucoder Sep 5, 2026
d3cebe6
docs: freeze real T4 histogram parity evidence for P4.1
jxucoder Sep 5, 2026
b75b95a
feat: add numeric batch split and routed partition primitives
jxucoder Sep 5, 2026
383f5cd
docs: freeze P4.2 T4 evidence and prioritize extension usability
jxucoder Sep 5, 2026
4da7f4b
feat: add device leaf reduction and explicit Newton leaf rules
jxucoder Sep 5, 2026
7dfeba4
docs: freeze P4.3 T4 leaf rule evidence
jxucoder Sep 5, 2026
e02403b
feat: assemble opt-in level-wise CPU and CUDA tree builder
jxucoder Sep 5, 2026
00ca3b2
docs: freeze P4.4 T4 builder parity evidence
jxucoder Sep 5, 2026
3f8addd
feat: add independently installable CPU extension examples
jxucoder Sep 5, 2026
a9d34f5
docs: freeze independent CPU wheel conformance evidence
jxucoder Sep 5, 2026
8c34b26
feat: integrate strict CUDA extensions in unified trainer
jxucoder Sep 5, 2026
4299858
test: extend strict GPU adapter and external builder coverage
jxucoder Sep 5, 2026
baf029d
docs: freeze strict GPU trainer verification and remaining gates
jxucoder Sep 5, 2026
5d10b77
feat: add independent CUDA extension wheel conformance
jxucoder Sep 5, 2026
43fcda3
fix: guard GPU extension demo against spawned worker reentry
jxucoder Sep 5, 2026
15b3b4f
docs: freeze independent GPU wheel conformance evidence
jxucoder Sep 5, 2026
eb61218
bench: preregister resident foundation value matrix
jxucoder Sep 5, 2026
7d4270d
docs: add extension author guide and independent trial task
jxucoder Sep 5, 2026
e3f393d
bench: retain P7 quality pass and 13.9x GPU regression
jxucoder Sep 5, 2026
9bb1ff3
bench: isolate host profiling from GPU memory sampling
jxucoder Sep 5, 2026
df835e3
docs: freeze P7 profiling and negative value conclusion
jxucoder Sep 5, 2026
81acf0b
perf: keep level-wise split updates in fixed slots
jxucoder Sep 5, 2026
a5bf26d
test: freeze fixed-slot CUDA trainer conformance
jxucoder Sep 5, 2026
d816954
bench: verify fixed-slot wheels and clarify profile metadata
jxucoder Sep 5, 2026
00dd67a
bench: record fixed-slot improvement and remaining GPU gap
jxucoder Sep 5, 2026
3ac1552
fix: align ScoringBench model seeds and depth with declared runs
jxucoder Sep 5, 2026
f30c2ed
docs: redesign the agent boosting foundation plan
jxucoder Sep 5, 2026
a9fde60
docs: define OpenBoost v1 scope and evaluation gates
jxucoder Sep 5, 2026
7b57436
docs: require every v1 use case individually
jxucoder Sep 5, 2026
be373e6
docs: specify all v1 foundation tasks and baselines
jxucoder Sep 5, 2026
9700845
docs: specify how to construct the v1 foundation
jxucoder Sep 5, 2026
e76a2cd
docs: start v1 sprint execution and reflection log
jxucoder Sep 6, 2026
50acfc6
test: add independent scalar and tree references for v1
jxucoder Sep 6, 2026
cdce7d8
refactor: retire legacy production code for the v1 rebuild
jxucoder Sep 6, 2026
e3d99ad
test: add independent data and classification references for v1
jxucoder Sep 6, 2026
ddf1143
test: add ranking quantile and vector leaf references for v1
jxucoder Sep 6, 2026
c5e9899
test: add positive target and AFT references for v1
jxucoder Sep 6, 2026
c0e0b2c
test: add Normal and Formula directional update references for v1
jxucoder Sep 6, 2026
6ae1960
test: add identity and isolated run references for v1
jxucoder Sep 6, 2026
a6b3eeb
test: add exact author mutation references for v1
jxucoder Sep 6, 2026
972f80a
test: add mixed feature and full vector growth references for v1
jxucoder Sep 6, 2026
bc68ab9
test: integrate reference models and close v1 F0.2
jxucoder Sep 6, 2026
e2f2c6b
test: add v1 artifact integrity judge
jxucoder Sep 6, 2026
dd2e9ad
data: freeze A5 bike sharing inputs and rolling splits
jxucoder Sep 6, 2026
f74df58
data: freeze A1 A11 housing with five splits
jxucoder Sep 6, 2026
594519f
data: freeze Adult official test and stratified splits
jxucoder Sep 6, 2026
dc74401
docs: use English throughout repository prose
jxucoder Sep 6, 2026
861d31d
data: freeze remaining grouped and stratified evaluation inputs
jxucoder Sep 6, 2026
6f144d2
eval: add independent scoring preprocessing and bounded workers
jxucoder Sep 6, 2026
91a5619
eval: verify isolated CPU and CUDA comparator capabilities
jxucoder Sep 6, 2026
5730110
eval: add validation-only baseline workers with offset replay
jxucoder Sep 6, 2026
f9dee9c
eval: seal independent validation selection before test release
jxucoder Sep 6, 2026
1f29c1c
eval: support native baseline early stopping and replay
jxucoder Sep 6, 2026
e981d0c
eval: add query-aware ranking comparator workers
jxucoder Sep 6, 2026
b903f3a
eval: add parametric and paid-loss comparison workers
jxucoder Sep 6, 2026
f43ae75
eval: report auxiliary quality and supported survival scores
jxucoder Sep 6, 2026
4e3e176
eval: preserve train-only multi-output target scaling
jxucoder Sep 6, 2026
348e503
docs: record matching Housing host license evidence
jxucoder Sep 6, 2026
2952c13
eval: seal independently authored held-out package metadata
jxucoder Sep 6, 2026
8427941
eval: bind frozen real folds to comparator worker packets
jxucoder Sep 6, 2026
7e64176
eval: bind classification and rolling quantile datasets
jxucoder Sep 6, 2026
8565f77
eval: bind counts paid amounts and survival worker inputs
jxucoder Sep 6, 2026
de3015d
docs: audit F0 prerequisites and proposed foundation sequencing
jxucoder Sep 6, 2026
f419b32
feat: add initial public CPU problem state and artifacts
jxucoder Sep 6, 2026
b77dbc5
feat: add composable CPU numeric split operations
jxucoder Sep 6, 2026
85e9333
feat: assemble composable depthwise numeric trees
jxucoder Sep 6, 2026
6491948
feat: compose squared boosting with mapped tree transactions
jxucoder Sep 6, 2026
fd3dbd9
feat: add Normal boosting with independent raw parameter width
jxucoder Sep 6, 2026
f6ad95f
feat: add Formula geometry and sequential heterogeneous runs
jxucoder Sep 6, 2026
ea13cce
feat: add best-first and symmetric numeric growth policies
jxucoder Sep 6, 2026
082b614
feat: add categorical equality splits and mixed-feature artifacts
jxucoder Sep 6, 2026
6e5d6b0
feat: add class schemas and binary logistic boosting
jxucoder Sep 6, 2026
08e323a
Add joint multiclass boosting and composable vector leaves
jxucoder Sep 6, 2026
55f3b91
Add query-local pairwise and lambda ranking recipes
jxucoder Sep 6, 2026
dd42967
Add routed quantile and anchored penalized leaf solvers
jxucoder Sep 6, 2026
dc03382
Add Poisson count boosting with explicit exposure
jxucoder Sep 6, 2026
373e16d
Add weighted Gamma positive-target mean boosting
jxucoder Sep 6, 2026
bf7ef2c
Add fixed-power Tweedie nonnegative mean boosting
jxucoder Sep 6, 2026
b9d5ace
Add persisted paid-frequency and severity composition
jxucoder Sep 6, 2026
b456bf3
Add censored log-normal AFT and scale-aware inference
jxucoder Sep 6, 2026
83f6a9a
Audit CPU v1 coverage and order remaining foundation work
jxucoder Sep 6, 2026
752a2ab
Add multi-output squared recipes and persisted target scaling
jxucoder Sep 6, 2026
654a3f2
Reuse explicit prepared training data across independent runs
jxucoder Sep 6, 2026
8afce35
Clean preparation test trailing whitespace
jxucoder Sep 6, 2026
7a61744
Review foundation goals and plan remaining v1 acceptance work
jxucoder Sep 6, 2026
2f6c77a
Add independent validation stopping across CPU recipes
jxucoder Sep 6, 2026
6b2385f
Verify installed public cohort and penalized-leaf extensions
jxucoder Sep 6, 2026
b99376d
Verify public ordered Normal and Formula updates
jxucoder Sep 6, 2026
b7fdb60
Accept external recipe results through a shared structural contract
jxucoder Sep 6, 2026
03ff34e
Verify an installed external expectile objective
jxucoder Sep 6, 2026
374ab87
Connect current regression and Normal evaluation workers
jxucoder Sep 6, 2026
e83e7b5
Bind multi-output evaluation to frozen training scales
jxucoder Sep 6, 2026
8d8272e
Bind A6 selection to verified training scales
jxucoder Sep 6, 2026
b430df0
Report A6 standardized quality with verified training scales
jxucoder Sep 6, 2026
0def101
Connect classification workers and preserve external row identities
jxucoder Sep 6, 2026
114bf80
Record full Covertype timeouts and prioritize CPU profiling
jxucoder Sep 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 10 additions & 27 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,21 @@
name: Deploy Documentation
name: Build v1 Documentation

on:
push:
branches:
- main
paths:
- 'docs/**'
- 'src/**'
- 'mkdocs.yml'
branches: [main]
paths: ['docs/v1/**', 'mkdocs.yml']
pull_request:
paths: ['docs/v1/**', 'mkdocs.yml']
workflow_dispatch:

permissions:
contents: write
contents: read

jobs:
deploy:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install uv
uses: astral-sh/setup-uv@v4

- name: Install dependencies
run: |
uv sync
uv pip install mkdocs-material "mkdocstrings[python]" mkdocs-gen-files mkdocs-literate-nav mkdocs-section-index

- name: Build and deploy
run: uv run mkdocs gh-deploy --force
- uses: astral-sh/setup-uv@v4
- run: uv sync --locked
- run: uv run --no-sync mkdocs build --strict
56 changes: 5 additions & 51 deletions .github/workflows/gpu-tests.yml
Original file line number Diff line number Diff line change
@@ -1,62 +1,16 @@
name: GPU Verification
name: v1 GPU Verification Pending

on:
workflow_dispatch:
schedule:
# Nightly at 09:17 UTC — CUDA paths have no other CI coverage
- cron: "17 9 * * *"

permissions:
contents: read

concurrency:
group: openboost-modal-gpu-verification
cancel-in-progress: false

jobs:
modal-credentials:
name: Check Modal credentials
unavailable:
runs-on: ubuntu-latest
outputs:
available: ${{ steps.check.outputs.available }}

steps:
- name: Check whether Modal is configured
id: check
env:
MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }}
MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }}
shell: bash
- name: Explain current v1 boundary
run: |
if [[ -n "$MODAL_TOKEN_ID" && -n "$MODAL_TOKEN_SECRET" ]]; then
echo "available=true" >> "$GITHUB_OUTPUT"
else
echo "available=false" >> "$GITHUB_OUTPUT"
echo "::notice::Skipping Modal GPU verification because repository secrets are not configured."
fi

modal-gpu-tests:
needs: modal-credentials
if: needs.modal-credentials.outputs.available == 'true'
runs-on: ubuntu-latest
timeout-minutes: 45

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Set up uv
uses: astral-sh/setup-uv@v4

- name: Install locked dependencies
run: uv sync --locked --extra bench

- name: Run CUDA verification on Modal
env:
MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }}
MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }}
run: uv run modal run tests/modal_gpu_tests.py::ci
echo "No v1 CUDA implementation exists. Restore real-device verification at F3; reference tests are not GPU validation."
exit 1
50 changes: 10 additions & 40 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,46 +1,16 @@
name: Publish to PyPI
name: v1 Publishing Unavailable

on:
release:
types: [published]
workflow_dispatch:

jobs:
test:
runs-on: ubuntu-latest
env:
OPENBOOST_BACKEND: cpu
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
- run: uv sync --extra test --extra sklearn
- run: uv run pytest tests/ --tb=short
permissions:
contents: read

# Bare-install smoke test: no sklearn/test extras, so transitively-pulled
# dependencies (e.g. scipy via scikit-learn) cannot mask a missing runtime dep.
bare-install:
runs-on: ubuntu-latest
env:
OPENBOOST_BACKEND: cpu
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
- run: uv venv && uv pip install .
- run: |
uv run --no-project python -c "
import numpy as np
import openboost as ob
X = np.random.rand(200, 5); y = X[:, 0] + np.random.rand(200)
m = ob.NaturalBoostNormal(n_trees=5); m.fit(X, y); m.predict_interval(X)
print('bare install OK')
"

publish:
needs: [test, bare-install]
jobs:
unavailable:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
- run: uv build
- uses: pypa/gh-action-pypi-publish@release/v1
- name: Explain current v1 boundary
run: |
echo "The rebuilt package is not release-ready. Implement and verify v1 gates before restoring release publication."
exit 1
95 changes: 9 additions & 86 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Tests
name: v1 Reference Checks

on:
push:
Expand All @@ -7,97 +7,20 @@ on:
branches: [main]

jobs:
# Fast tests: <3 min, runs on every PR
fast-tests:
references:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ["3.10", "3.12"]

steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install OpenMP runtime (macOS)
if: runner.os == 'macOS'
run: |
brew install libomp

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[test,sklearn]"
pip install "xgboost>=2.0"

- name: Lint with ruff
run: |
pip install "ruff>=0.4"
ruff check src/openboost/

- name: Run fast tests (CPU backend)
env:
OPENBOOST_BACKEND: "cpu"
run: |
pytest tests/ -v --tb=short -m "not slow and not benchmark"

# Full tests: includes slow tests, runs after fast tests pass
full-tests:
runs-on: ubuntu-latest
needs: fast-tests

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[test,sklearn]"
pip install "xgboost>=2.0"

- name: Run all tests (CPU backend)
env:
OPENBOOST_BACKEND: "cpu"
run: |
pytest tests/ -v --tb=short

- name: Run documentation examples (CPU backend)
env:
OPENBOOST_BACKEND: "cpu"
run: |
python scripts/run_doc_examples.py

# Performance regression check: main branch only
performance-check:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
needs: full-tests

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[test,sklearn]"
pip install "xgboost>=2.0"

- name: Performance regression check
env:
OPENBOOST_BACKEND: "cpu"
run: |
python benchmarks/check_performance.py
- uses: astral-sh/setup-uv@v4
- run: uv sync --locked --extra test
- run: uv run --no-sync ruff check src/openboost tests/v1 tests/conftest.py
- name: Run current v1 references, not retired production tests
run: uv run --no-sync pytest tests/ -n 0 -q
- run: uv build
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -221,4 +221,5 @@ logs/

# Benchmark results (generated)
benchmarks/results/*.json
benchmarks/results/scoringbench*/
tasks/
Loading
Loading