Atlas Product¶
Atlas owns the path from governed GFF3 and FASTA inputs to immutable dataset artifacts and stable query surfaces. It does not serve mutable ingest output as release truth.
flowchart LR
Inputs["GFF3 + FASTA + policy"] --> Ingest["validate + normalize"]
Ingest --> Artifacts["immutable candidate artifacts"]
Artifacts --> Verify["deep verification"]
Verify --> Store["serving-store publication"]
Store --> Catalog["catalog promotion"]
Catalog --> Query["gene, transcript, sequence, and diff queries"]
Query --> Surface["CLI + HTTP + OpenAPI + Rust"]
Product Capabilities¶
| Capability | Product promise |
|---|---|
| ingest | accepted source records are normalized into a reviewable candidate |
| verification | structure, references, manifests, and hashes are checked before publication |
| publication | a complete candidate becomes immutable serving-store state |
| promotion | the catalog makes one published dataset tuple discoverable |
| query | bounded query engines operate on verified artifacts |
| delivery | CLI, HTTP, OpenAPI, and Rust surfaces preserve identity and stable errors |
| compatibility | wire, configuration, artifact, output, plugin, and crate changes are governed |
The logical dataset identity is release/species/assembly. Artifact hashes
bind that tuple to exact bytes. Aliases such as latest are selectors and must
be resolved before a result or comparison is recorded.
Follow a Result Backward¶
flowchart RL
Result["observed result"] --> Contract["interface + output contract"]
Result --> Dataset["resolved dataset tuple"]
Dataset --> Catalog["catalog generation"]
Catalog --> Manifest["manifest + artifact hashes"]
Manifest --> Inputs["governed source identities"]
Result --> Runtime["software + effective configuration"]
A result is reviewable when both paths are known: its interface contract explains the shape, while its dataset and runtime identities explain which published bytes and behavior produced it.
Crate Ownership¶
The CLI and server are composition roots. They call the domain crates required
by their executable paths; bijux-atlas-runtime is a shared foundation, not a
central orchestrator.
flowchart TB
Core["core + model"] --> Ingest
Core --> Query
Core --> Store
Store --> Runtime["runtime foundation"]
Ingest --> CLI["CLI composition root"]
Query --> CLI
Store --> CLI
Runtime --> CLI
Query --> Server["server composition root"]
API["API contracts"] --> Server
Runtime --> Server
API --> Facade["compatibility facade"]
Ingest --> Facade
Query --> Facade
| Owner | Responsibility |
|---|---|
| core and model | stable shared contracts and genomic identities |
| ingest | validation, normalization, and artifact construction |
| store | immutable publication and catalog operations |
| query | query semantics and bounded execution |
| runtime | configuration, policy, store ports, adapters, and shared domains |
| server | HTTP lifecycle, dataset and response caching, telemetry, and routing |
| API | DTOs, envelopes, parameters, and OpenAPI |
| CLI | operator commands and workflow composition |
| compatibility facade | historical bijux_atlas Rust import surface |
Authority Transfers¶
| Transition | Completion evidence |
|---|---|
| source to candidate | accepted source identities, policy, findings, and candidate manifest |
| candidate to publishable | validation and deep-verification results for the exact bytes |
| publishable to stored | backend publication record, manifest, and checksum lock |
| stored to discoverable | catalog generation naming the exact dataset tuple |
| discoverable to resolvable | server refresh and verified local artifact open |
| resolvable to answered | interface result carrying request, dataset, and artifact provenance where supported |
No transition implies the next. Files in a build directory are not published; published files are not discoverable until promotion; a catalog entry does not prove that every server refreshed it.
Diagnose at the First Disagreement¶
| Observation | Inspect first | Do not infer |
|---|---|---|
| source record rejected | normalization finding and source location | all inputs are invalid |
| deep verification failed | manifest, references, and payload hashes | publication corrupted the artifact |
| published tuple absent | catalog generation and promotion record | payload publication never happened |
| readiness false | catalog refresh, dataset state, and configured readiness mode | process liveness failed |
| empty query | exact tuple, selector, ordering, and page boundary | dataset absence |
| CLI and HTTP disagree | shared typed result before presentation | query semantics are necessarily wrong |
Preserve the earliest disputed identity. Changing catalog, cache, runtime, and traffic simultaneously removes the stable comparison needed for diagnosis.
Choose the Next Guide¶
| Question | Guide |
|---|---|
| What identities and boundaries define Atlas? | Foundations |
| How do I install, build, publish, serve, and query? | Workflows |
| Which commands, endpoints, outputs, and settings are public? | Interfaces |
| How do requests, storage, caching, and processes fit together? | Runtime |
| Which promises are compatible and versioned? | Contracts |
For deployment, security, observability, load, recovery, and release decisions, continue to Atlas Operations. For repository automation and delivery, continue to the Maintainer Control Plane.