Skip to content

Local development

Core owns scientific representations and deterministic processing: sequence intake, digestion, identification, quantification, PTM handling, study design, statistics, reporting, and the CLI that exposes those capabilities. Local work must preserve the distinction between a scientific contract, an algorithm, and the reviewer-facing evidence produced by that algorithm.

Run focused gates

Use root package dispatch so Core is installed with Foundation and the packages that its integration tests exercise.

make lint PACKAGE=bijux-proteomics-core
make test PACKAGE=bijux-proteomics-core
make quality PACKAGE=bijux-proteomics-core
make api PACKAGE=bijux-proteomics-core

Run make build PACKAGE=bijux-proteomics-core for public imports, CLI packaging, metadata, or bundled reference data. Run the narrow test module during development, then the package gate before committing.

Trace a scientific change

flowchart LR
    input["declared input contract"]
    method["owned scientific method"]
    ledger["assumptions and exclusions"]
    result["typed result"]
    view["CLI or report view"]
    input --> method --> ledger --> result --> view

Begin at the owning module rather than the CLI command. For example, a FASTA change starts in sequences/, a study-design change in study/design/, and a quantification change in quantification/. The interface layer parses and renders; it must not become a second home for scientific rules.

Prove the right property

Change Required evidence
parser or normalizer accepted, rejected, ambiguous, and round-trip cases
scientific calculation curated reference values, units, tolerances, and edge cases
review policy explicit assumptions, exclusions, thresholds, and refusal behavior
CLI command domain result plus exit, JSON, and tabular rendering contracts
root export import stability and compatibility-alias forwarding
artifact schema deterministic serialization and downstream load proof

Do not judge a scientific edit only by higher coverage or a newly passing fixture. State which invariant the case establishes and why the expected value is authoritative. Approximate numerical results need declared tolerances; categorical results need the boundary cases that separate adjacent outcomes.

Protect package ownership

Execution retries, run ledgers, and provider orchestration belong to Runtime. Evidence memory belongs to Knowledge, recommendations to Intelligence, and physical execution authority to Lab. Core may create scientific evidence for those packages, but it must not import their policy back into the calculation.

The change is ready when the scientific owner is unambiguous, inputs and units are validated, assumptions and failures remain inspectable, interfaces are thin, and representative consumers can use the result without reinterpreting its meaning.