Standalone candy repo for the python-ml layer — a CUDA-ready Python 3.13 ML
environment (PyTorch, transformers, vLLM, llama.cpp). The candy lives in
charly.yml at the repo root: the require: on layer-cuda, the nested candy:
composition of llama-cpp, the env: block, the vLLM pip step, the check:
assertions, and the embedded skill: entity projected into the marketplace
corpus as /charly-languages:python-ml.
Canonical files:
charly.yml— thepython-ml:candy entity and thepython-ml-skill:skill entity.pixi.toml/pixi.lock— the core ML Python environment..github/workflows/tag-on-merge.yml— CalVer tag +CHANGELOG/on merge.README.md— user overview only; never agent guidance.
/charly-languages:python-ml— the owning skill. The Tier 2 environment-owner meta-layer, the pixi.toml it owns, thellama-cppsub-candy composition, and the vLLM wheel install. Load before editing or troubleshooting the candy./charly-image:layer— the candy authoring reference (charly.ymlschema,plan:step verbs incl.check:, the nestedcandy:composition list, service declarations). Load before editing any entity field or plan step.
- The merge gate is the org-wide
charly/pr-validator(required checkvalidate / validate, defined inopencharly/.github); this repo has no per-repo candy gate and ships only.github/workflows/tag-on-merge.yml. charly box validateat the repo root checks the manifest parses and validates.- The candy's
plan:check:steps are the functional evidence: the pixi interpreter exists and PyTorch, transformers, and vLLM each import and print a version. - Regenerate
pixi.lockwheneverpixi.tomlchanges — the build installs withpixi install --frozenand fails loudly on a stale lock.
- Edit the
python-ml:candy entity AND thepython-ml-skill:skill entity incharly.ymltogether. The skill is the projected usage source, so a version or path change not mirrored in the skill leaves the corpus stale. - Keep the build order (pixi environment → llama-cpp → vLLM wheel) intact; the vLLM wheel is pip-installed after the pixi environment exists.
- New behaviour claims belong in the
plan:as an observablecheck:step, and in the skill body.
- PR-only. Every change lands through a pull request; the org-required
charly/pr-validatorvalidates the diff and body and arms native auto-merge on PASS. Direct pushes tomainare blocked. - History lives in
CHANGELOG/(written bytag-on-mergeat merge time); the PR body IS the changelog. - The authoritative rulebook is the umbrella
AGENTS.mdinopencharly/opencharlyandcharly/AGENTS.mdin the charly repo. Do not restate its rules here.