Local development¶
The repository is a Python workspace containing independently published packages. Work from the repository root when a change crosses packages or governed artifacts; work from the owning package when the behavior and checks are package-local.
Prepare the workspace¶
Python 3.11 or newer is required. From the repository root:
make ensure-venv synchronizes the shared root check environment. Generated
logs, reports, build products, and test output are written below artifacts/.
Do not place run output in package source trees.
Use make help as the command inventory. Make targets are the supported
repository interface; invoking individual tools is useful for diagnosis but
does not replace a governed target when one exists.
Find the owning surface¶
flowchart TD
change["proposed change"]
package["one package owns behavior"]
seam["cross-package contract or artifact"]
repository["docs, automation, release, governance"]
change --> package
change --> seam
change --> repository
package --> local["package tests and quality"]
seam --> contract["API, schema, boundary, integration checks"]
repository --> root["root validation targets"]
Choose ownership by meaning:
- stable identifiers, representation, and compatibility: foundation;
- scientific models, algorithms, formats, and benchmark contracts: core;
- configuration, providers, state, persistence, replay, CLI, and HTTP: runtime;
- sources, evidence, grounding, and reconciliation: knowledge;
- ranking, challenge, recommendation, and refusal: intelligence;
- assay design, readiness, handoff, observation, and feedback: lab;
- historical execution forwarding: agentic-proteins;
- repository checks and release support: bijux-proteomics-dev.
Development loop¶
- Read the owning package handbook and public API before editing.
- Add or update the smallest test that expresses the changed contract.
- Implement the behavior without bypassing validation or optional-dependency guards.
- Update public documentation and tracked API/schema artifacts when the contract changes.
- Run focused tests, then the matching package quality and API checks.
- Escalate to boundary and root checks when another package or repository surface is affected.
- Inspect generated artifacts and the complete diff before committing.
Useful root commands¶
| Command | Purpose |
|---|---|
make test |
primary package test matrix |
make lint |
repository lint checks |
make quality |
typing, quality, docs, and architecture checks |
make security |
static and dependency security gates |
make api |
package API contract checks |
make docs-check |
strict documentation build without root pollution |
make test-collection-gate |
package import and pytest collection check |
make architecture-check |
architecture documentation and design-debt guards |
make check |
complete repository verification flow |
make check also validates the lock, builds distributions, and creates SBOM
artifacts. Use it before release-sensitive changes rather than as the first
feedback loop for a local edit.
Clean state¶
make clean removes repository artifacts and root environments. Use the
narrower package or artifact cleanup target when only one generated surface
needs removal. Before handing off a change, confirm that source directories are
free of caches and generated run products and that all intentional generated
artifacts are under their governed destination.