feat(admin-config-tool): task 1.3 - nix and xce-build.sh integration

Add python3 + pycapnp/pyyaml/jsonschema/click/pytest/ruff (+pip) to the
nix dev shell, wire a new `xceadmin` case into xce-build.sh (schema
sync from src/schema/ and src/configs/schema/, pip install by profile,
pytest), package-data config so bundled schemas survive a non-editable
install, xce-build SKILL.md docs, and ruff format/check hooks matching
this repo's stdin-JSON hook convention (not brief.md's env-var sketch,
which would have silently no-op'd).

Verified live end-to-end inside `nix develop ./src` for both the
default (editable) and release (pinned) profiles; found and fixed 3
real bugs along the way (missing pip, PEP 668 externally-managed-
environment, missing package-data for release-profile bundling) —
logged as bug-1458/1459/1460.

Requirements: 5.5, 8.1, 8.2, 8.6
This commit is contained in:
Rongsong Shen 2026-07-22 03:57:43 +00:00
parent 2e4ef4e209
commit 798f19b83a
7 changed files with 92 additions and 5 deletions

12
src/xceadmin/.gitignore vendored Normal file
View file

@ -0,0 +1,12 @@
# Build artifacts
build/
*.egg-info/
__pycache__/
*.pyc
.pytest_cache/
.venv/
.ruff_cache/
# Synced package data — regenerated from src/schema/ and src/configs/schema/
# by `xce-build.sh xceadmin`'s schema-sync step; never hand-edited, never committed.
src/xcecommon/schema_files/

View file

@ -27,3 +27,12 @@ include = ["xceadmin*", "xcecommon*"]
[tool.setuptools.package-dir]
"" = "src"
# Bundled copies of controller.capnp/c.capnp and the 7 JSON validation
# schemas (synced from src/schema/ and src/configs/schema/ by
# src/tools/xce-build.sh's `xceadmin)` case, see Requirement 5.5). Without
# this, a non-editable `pip install .` builds a wheel containing only *.py
# files and silently drops schema_files/ — an editable install would never
# catch this since it resolves straight into the checked-out source tree.
[tool.setuptools.package-data]
xcecommon = ["schema_files/*.capnp", "schema_files/json/*.schema.json"]