Skip to content

docs: add GitHub Pages documentation site and AGENT.md - #24

Merged
legraina merged 10 commits into
mainfrom
docs
Jun 11, 2026
Merged

docs: add GitHub Pages documentation site and AGENT.md#24
legraina merged 10 commits into
mainfrom
docs

Conversation

@legraina

Copy link
Copy Markdown
Contributor
  • docs/ — full Jekyll (just-the-docs) documentation site:

    • index.md — overview, quick examples (C++ and Python)
    • installation.md — FetchContent, cmake options, pip install
    • cpp/ — concepts, quick start, full C++ API reference
    • python/ — quick start, full Python API reference
    • advanced/ — algorithms guide, column-generation patterns
  • AGENT.md — self-contained guide for AI agents: data model, all import paths, essential API patterns (Python + C++), resource function quick-reference tables, build instructions, common pitfalls

  • .github/workflows/pages.yml — auto-deploy to GitHub Pages on push

  • .markdownlint.json — relax line-length/heading rules for docs

  • .github/workflows/ci-full.yml fixes:

    • allow-prereleases: true for Python 3.14
    • -DCMAKE_CXX_CLANG_TIDY= to disable clang-tidy in test matrix
    • macOS: export CC/CXX to brew LLVM so CMake uses the right compiler

- docs/ — full Jekyll (just-the-docs) documentation site:
  * index.md — overview, quick examples (C++ and Python)
  * installation.md — FetchContent, cmake options, pip install
  * cpp/ — concepts, quick start, full C++ API reference
  * python/ — quick start, full Python API reference
  * advanced/ — algorithms guide, column-generation patterns

- AGENT.md — self-contained guide for AI agents: data model,
  all import paths, essential API patterns (Python + C++), resource
  function quick-reference tables, build instructions, common pitfalls

- .github/workflows/pages.yml — auto-deploy to GitHub Pages on push
- .markdownlint.json — relax line-length/heading rules for docs
- .github/workflows/ci-full.yml fixes:
  * allow-prereleases: true for Python 3.14
  * -DCMAKE_CXX_CLANG_TIDY= to disable clang-tidy in test matrix
  * macOS: export CC/CXX to brew LLVM so CMake uses the right compiler

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 11, 2026 14:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a Jekyll documentation site for the RCSPP C++ library and Python package, plus GitHub Actions automation to publish docs to GitHub Pages.

Changes:

  • Introduces structured docs for C++ (concepts, quickstart, API) and Python (quickstart, index, API).
  • Adds “Advanced” documentation (algorithms + column generation) and an AI-agent guide (AGENT.md).
  • Adds GitHub Pages build/deploy workflow, updates CI configuration, and introduces markdownlint settings.

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
docs/index.md New home page with quick examples and project overview
docs/_config.yml Jekyll/Just-the-Docs site configuration + nav setup
docs/Gemfile Ruby dependencies for local/docs build
docs/cpp/index.md C++ documentation section landing page
docs/cpp/concepts.md Core solver concepts and resource/function model
docs/cpp/quickstart.md C++ quickstart examples (single/multi-resource, CG, params)
docs/cpp/api.md C++ API reference for core types and algorithms
docs/python/index.md Python package layout and import guidance
docs/python/quickstart.md Python quickstart examples (resources, networkx, CG, NG-path)
docs/python/api.md Python API reference (ResourceGraph, params, functions, PricingPool)
docs/advanced/index.md Advanced section root
docs/advanced/algorithms.md Algorithm selection guidance + label buckets
docs/advanced/column-generation.md Column-generation patterns incl. PricingPool
.github/workflows/pages.yml GitHub Pages build/deploy workflow
.github/workflows/ci-full.yml CI tweaks for macOS LLVM and CMake configuration
.markdownlint.json Markdown lint configuration
AGENT.md AI agent guide to repo architecture + key APIs

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/pages.yml Outdated
Comment on lines +34 to +35
- name: Build with Jekyll
run: bundle exec jekyll build --source docs --destination _site
Comment thread docs/cpp/quickstart.md
graph.add_arc({15.0}, 1, 3, /*cost=*/15.0);
graph.add_arc({20.0}, 0, 2, /*cost=*/20.0);
graph.add_arc({10.0}, 2, 3, /*cost=*/10.0);
// path 0→2→3 has lower cost (30) but identical resource usage to 0→1→3 (25)
Comment on lines 60 to +63
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
Comment on lines +59 to +63
## `Diversification`

Wraps another algorithm (default: `Greedy`) and repeatedly solves the
subproblem after removing solution arcs, collecting a pool of diverse
solutions.
Comment thread docs/python/quickstart.md
---

## Multiple solutions (diversification)

Comment thread docs/python/quickstart.md

---

## Column generation loop
Comment thread docs/python/api.md Outdated
| `TrivialFeasibilityFunction()` | Always feasible |
| `MinMaxFeasibilityFunction(min, max)` | `min ≤ value ≤ max` |
| `TimeWindowFeasibilityFunction(tw)` | `value ≤ due_time[node]` |
| `SizeFeasibilityFunction(min_size, max_size)` | `min ≤ len(container) ≤ max` |
Comment thread docs/python/api.md Outdated
Comment on lines +220 to +227
| Class | Applies to | Effect |
|---|---|---|
| `AdditionExtensionFunction()` | Numerical | `result = current + arc_value` |
| `SubtractExtensionFunction()` | Numerical | `result = current - arc_value` |
| `TimeWindowExtensionFunction(tw, default_max=None)` | Numerical | `result = max(current + travel, ready[node])` |
| `UnionExtensionFunction()` | Container | `result = current ∪ arc_value` |
| `IntersectionExtensionFunction()` | Container | `result = current ∩ arc_value` |
| `SubtractExtensionFunction()` | Container | `result = current − arc_value` |
legraina and others added 9 commits June 11, 2026 17:18
On Windows, mip can import but crash with TypeError when Gurobi DLL
lookup returns None. Broaden the exception guard to catch all import
errors, and wrap vrp.solve() in a try/except so any solver-init failure
also results in a proper pytest.skip rather than an ERROR.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
mip's Gurobi auto-detection creates internal state (Model.__del__) that
calls LoadLibrary(None) during teardown when no Gurobi license is present.
Catching the exception in the test body does not prevent the teardown
crash. Skip the entire test on sys.platform == 'win32' so mip is never
imported and no Gurobi state is created.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… filter

mip's Gurobi DLL probe runs at import time on Windows and crashes
__del__ with TypeError (LoadLibrary/NoneType) even when the test is
skipped. Two-pronged fix:
1. requirements.txt: add sys_platform != 'win32' so mip is never
   installed on Windows runners — nothing to clean up at teardown.
2. conftest.py: widen the PytestUnraisableExceptionWarning filter to
   cover all mip/Gurobi-related patterns (SolverGurobi, LoadLibrary,
   NoneType-iterable, gurobipy) as a belt-and-suspenders guard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ctypes.CDLL(None) is valid on Linux/macOS (loads libc) but raises
TypeError: LoadLibrary() argument 1 must be str, not None on Windows.
The _flush_gcov_on_exit fixture only caught AttributeError, so the
TypeError propagated as an ERROR at teardown of the last test.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…gger

- gtest_discover_tests: bump DISCOVERY_TIMEOUT from 5s to 30s so
  Debug binaries on Windows (slow DLL load) don't time out during
  test list discovery at build time.
- ci-full.yml: add issue_comment trigger so posting '/run-ci' in any
  PR comment launches the full matrix. Jobs guard on workflow_dispatch
  OR (PR comment AND '/run-ci' body). Checkout uses refs/pull/N/head
  when triggered by a comment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jekyll-seo-tag and jekyll-include-cache are required by just-the-docs
but were absent from the Gemfile, causing local jekyll build to fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace Jekyll/just-the-docs with Sphinx + Furo theme
- Add Doxygen XML pipeline (Doxyfile → Breathe/Exhale) for C++ API
- Add sphinx.ext.autodoc + napoleon for Python API
- Split C++ API into Beginner (instantiate) and Advanced (subclass) pages
- Add Doxygen /// comments to all 57 previously undocumented C++ headers
- Add Google-style docstrings to all Python modules
- Update pages.yml to build Sphinx instead of Jekyll
- Add .gitignore entries for _doxygen/, _site/, cpp/api/ (generated)
- Remove obsolete Jekyll files (Gemfile, _config.yml, hand-written api.md files)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@legraina

Copy link
Copy Markdown
Contributor Author

/run-ci

@legraina
legraina merged commit aa9d40a into main Jun 11, 2026
2 checks passed
@legraina
legraina deleted the docs branch June 11, 2026 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants