Package Split¶
The repository contains three Python distributions but publishes two runtime
products. bijux-pollenomics is the canonical release, pollenomics is its
short-name compatibility release, and bijux-pollenomics-dev is a
repository-only maintainer distribution. The split separates scientific
behavior, compatibility, and repository maintenance without creating
competing products.
Distribution Contracts¶
| Distribution | Namespace or command | Responsibility | Not its responsibility |
|---|---|---|---|
bijux-pollenomics |
bijux_pollenomics, bijux-pollenomics |
canonical collection, evidence, review, analysis, and publication runtime | repository-only policy checks |
pollenomics |
pollenomics, pollenomics |
short-name compatibility facade over the canonical runtime | independent scientific or command behavior |
bijux-pollenomics-dev |
bijux_pollenomics_dev |
repository checks, documentation integrity, packaging, and release support | public release product, source semantics, evidence decisions, or publication rules |
flowchart LR
User["operator or integrator"] --> Canonical["bijux-pollenomics"]
User --> Alias["pollenomics"]
Alias -. "delegates" .-> Canonical
Maintainer["repository maintenance"] --> Toolkit["bijux-pollenomics-dev"]
Toolkit -. "checks contracts" .-> Canonical
Canonical --> State["governed evidence and products"]
One Scientific Runtime¶
All collection, sample recovery, normalization, scientific review, ranking,
and publication behavior belongs to bijux_pollenomics. The shorter package
may re-export supported Python names and delegate its console command, but it
must return the same results for the same inputs.
This equivalence matters for reproducibility: package spelling cannot change which records are admitted, how chronology is interpreted, or which warnings appear in a bundle.
Tooling Is Not Evidence Authority¶
The development distribution can verify documentation, API drift, dependency policy, packages, badges, and release conditions. These checks can detect a broken evidence contract, but the toolkit does not own the scientific rule it checks. Corrections belong in the canonical runtime or governed data surface.
Choosing A Distribution¶
- install
bijux-pollenomicsfor the canonical command and Python API; - use
pollenomicswhen the shorter compatibility identity is required; - use
bijux-pollenomics-devonly for repository maintenance workflows.
Only the first two appear in the public package release set. The maintainer distribution can have its own package metadata and version inside the workspace without becoming a supported installation target for scientific users.
Applications should not depend on the development distribution to reach runtime behavior. Integrations that use the alias should remain portable to the canonical package without a scientific or artifact change.
Record Runtime Identity¶
Compatibility is directional: pollenomics delegates to
bijux-pollenomics; the canonical runtime never delegates back. For a
reproducible operation, record both the invoked distribution and the resolved
canonical runtime version.
| Observation | Interpretation |
|---|---|
| canonical command and alias return equivalent contracts for the same installed runtime | expected compatibility behavior |
| alias package version differs from the resolved canonical version | packaging state to record, not evidence of a second scientific runtime |
| alias produces different members, warnings, schemas, or writes | compatibility defect; neither result should be explained as an intentional product fork |
| development checks report a discrepancy | verification finding against the owning runtime or repository contract |
The producer identity in an evidence packet is the canonical runtime that performed the work. The spelling used to reach it remains useful invocation metadata, but it does not establish a separate evidence revision or product lineage.
Installation And Dependency Direction¶
flowchart TB
App["consumer application"] --> Runtime["bijux-pollenomics"]
AliasConsumer["short-name consumer"] --> Alias["pollenomics"]
Alias --> Runtime
Maintainer["repository maintainer"] --> Dev["bijux-pollenomics-dev"]
Dev -. "validates repository contracts" .-> Runtime
Consumer applications depend on the canonical distribution, or on the alias when compatibility requires it. The canonical runtime never depends on the alias or the development toolkit. This direction prevents repository-only checks from becoming runtime requirements and prevents the compatibility identity from acquiring unique behavior.
Installing both runtime names does not create two data stores. Governed roots are selected by the operation and repository contract, not by distribution spelling. An integration that observes different files, warnings, or admission decisions through the alias has found a defect.
Boundary Invariants¶
- one input state has one runtime interpretation;
- aliases delegate instead of forking behavior;
- repository checks remain outside scientific execution;
- public exports are explicit at the canonical facade;
- compatibility code carries no unique evidence or publication state.
Versioning must preserve those invariants across all three workspace
distributions. Public release identity is the compatible pair
bijux-pollenomics and pollenomics; the maintainer distribution is recorded
for repository reproducibility but is not a third public runtime release. A
new canonical capability may be exposed through the alias, and a new
repository check may inspect it, but neither companion distribution can ship a
scientific capability that the canonical runtime does not own.