Version: 6.1.3 Status: active Class: published Owner: BioETL Team Reviewers:
- BioETL Team Last verified: '2026-05-08'
BioETL command-line interface (CLI) - основной способ взаимодействия с системой. Построен на фреймворке Click для стабильности и расширяемости.
Версия: 6.1.2 Дата обновления: 2026-05-08 Статус покрытия: published command and operator surface
# Рекомендуемый способ (после установки)
bioetl <command> [options]
# Во время разработки с uv
uv run python -m bioetl <command> [options]
# Или через активированное virtualenv
python -m bioetl <command> [options]Для справки по любой команде добавьте --help:
bioetl --help
bioetl run --helpBounded Phase1 surface для workflow YAML из configs/workflows/.
Синтаксис:
bioetl workflow run <NAME> [OPTIONS]
bioetl workflow status <NAME> [OPTIONS]Подкоманды:
| Подкоманда | Назначение |
|---|---|
run |
Последовательно выполняет declarative workflow через workflow manifest / ledger / execution-state control plane |
status |
Показывает durable workflow status when persisted state exists, otherwise falls back to bounded topology |
workflow run опции:
| Опция | Описание |
|---|---|
--dry-run |
Включить dry-run для pipeline steps |
--only-steps a,b |
Выполнить только указанные шаги и их обязательные зависимости |
--run-type |
Override для incremental, backfill, rebuild |
--start-offset |
Override для start_offset у pipeline steps |
--limit |
Override для limit у pipeline steps |
--input-csv |
Override для CSV filter input у pipeline steps |
--filter-column |
Override для CSV filter column у pipeline steps |
--filter-field |
Override для source filter field у pipeline steps |
--vacuum-after-run |
Override VACUUM execution for pipeline steps |
--vacuum-retention-days |
Override VACUUM retention for pipeline steps |
--log-level |
Override log level for pipeline steps |
--ignore-yaml-filter |
Игнорировать YAML filter defaults у pipeline steps |
--skip-gold |
Пропустить Gold writes у pipeline steps |
--execution-context |
Override execution context у pipeline steps |
--use-cached-bronze/--no-cached-bronze |
Override Bronze cache usage у pipeline steps |
--cached-bronze-path |
Явный Bronze cache path у pipeline steps |
--cached-bronze-date |
Bronze cache date filter у pipeline steps |
--exact-replay/--no-exact-replay |
Override strict exact replay request у pipeline steps |
--required-persistence-profile <profile> |
Per-run override for the control-plane persistence profile (degraded_observable, replay_ready, forensic_grade) |
--replay-of-run-id |
Explicit parent run_id for exact replay pipeline steps |
--replay-of-manifest-id |
Explicit parent manifest_id for exact replay pipeline steps |
--tracing/--no-tracing |
Override distributed tracing for pipeline steps |
--resume-last |
Возобновить последний failed или incomplete workflow run с тем же execution fingerprint |
--force-steps a,b |
Явно форсировать указанные шаги при resume вместо обычного skip поведения |
--repair-steps a,b |
Явно пометить шаги как repair path для destructive ambiguity recovery |
workflow status опции:
| Опция | Описание |
|---|---|
--only-steps a,b |
Показать только указанные шаги и их обязательные зависимости |
| `--format text | json |
--run-id |
Показать persisted status для конкретного workflow_run_id |
Published поведение:
workflow runсоздаёт immutable workflow manifest до начала исполнения.workflow runпишет append-only workflow ledger events and mutable workflow execution state.workflow statusиспользует persisted workflow state, если он существует; если нет, команда честно возвращает bounded topology-only surface.workflow run --tracingнужен, если оператор ожидает непустой handoff вExplore Traces; без него runtime может использоватьNoOpTracing.Explore Logsдля workflow runs опирается на CLI structured logs вreports/logs/bioetl.log, которые должен ingest-ить optionaltracingprofile черезpromtail.workflow runstarts the local metrics HTTP server on demand and performs a best-effort metrics publication flush on command completion so shipped Prometheus/Grafana workflow surfaces can observe completed workflow runs.- workflow telemetry is published with per-run grouping identity so selected-range workflow dashboard panels can retain completed short-lived workflow evidence after the CLI process exits.
workflow runnow accepts the same non-conflicting pipeline runtime overrides asbioetl run, such as--limit, CSV/filter options, cache/replay options, vacuum overrides, tracing overrides, and--required-persistence-profile.--required-persistence-profile degraded_observableis still available as an explicit local diagnostic opt-down for non---exact-replay, non-critical launches that should remain observable without claiming thereplay_readyevidence floor.--exact-replay, production/debug critical runtimes, and strict workflow steps still promote the effective profile back to the published family default or fail closed, so this flag cannot bypass exact-replay guardrails.- pipeline-level
--resumeis intentionally not exposed onworkflow run; workflow control-plane resume stays on--resume-last. --resume-lastиспользует semanticexecution_fingerprint, а не только имя workflow.- destructive ambiguity recovery не делает silent replay: при
repair_requiredоператор должен использовать--repair-stepsили--force-steps.
Примеры:
bioetl workflow run chembl_activity --dry-run
bioetl workflow run chembl_activity --limit 1000
bioetl workflow run chembl_activity --input-csv data/filter-ids.csv --filter-column molecule_id --filter-field molecule_chembl_id
bioetl workflow run chembl_activity --use-cached-bronze --exact-replay --replay-of-run-id parent-run-1 --replay-of-manifest-id manifest-parent-1
bioetl workflow status chembl_activity
bioetl workflow run publication_provider_pack --dry-run
bioetl workflow run chembl_baseline --dry-run
bioetl workflow run chembl_core --dry-run
bioetl workflow run chembl_core --only-steps summarize_core_extracts
bioetl workflow run chembl_core --resume-last
bioetl workflow run chembl_core --resume-last --repair-steps reconcile_assay_target_orphans
bioetl workflow status chembl_core
bioetl workflow status chembl_core --run-id 00000000-0000-0000-0000-000000000111
bioetl workflow status chembl_core --format jsonworkflow run, run, run-all и run-composite по умолчанию также
используют --ensure-observability-backend, то есть пытаются автоматически
запустить detached bioetl quarantine serve --host 0.0.0.0 --port 8081 для
Grafana ID/detail panels. Для отключения используйте
--no-ensure-observability-backend.
Выполняет ETL-пайплайн для указанной сущности.
Синтаксис:
bioetl run --pipeline <NAME> [OPTIONS]Обязательные параметры:
| Параметр | Описание |
|---|---|
--pipeline <NAME> |
Имя пайплайна (соответствует YAML в configs/entities/) |
Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--run-type |
choice | incremental |
Тип запуска: incremental, backfill, rebuild |
--limit |
int | None | Максимальное количество записей |
--resume |
flag | False | Продолжить с последнего checkpoint |
--resume-run-id |
str | None | Возобновить ordinary pipeline из checkpoint конкретного run_id вместо mutable latest pointer |
--resume-manifest-id |
str | None | Возобновить ordinary pipeline из checkpoint конкретного manifest_id вместо mutable latest pointer |
--start-offset |
int | None | Начать incremental run с указанного offset |
--dry-run |
flag | False | Предпросмотр без записи данных |
--yes, -y |
flag | False | Пропустить подтверждение для rebuild/backfill |
--input-csv |
path | None | Путь к CSV с ID для фильтрации |
--filter-column |
str | None | Имя колонки в CSV; runtime fallback обычно id |
--filter-field |
str | None | Поле API; effective default зависит от pipeline |
--vacuum-after-run |
flag | None | Запустить VACUUM после успешного выполнения |
--vacuum-retention-days |
int | None | Retention для VACUUM (дней, override YAML config) |
--debug |
flag | False | Включить DEBUG логирование |
--checkpoint-compatibility |
choice | None | Политика совместимости checkpoint (observe, soft_fail, hard_fail) |
--health-server/--no-health-server |
flag | True | Включить HTTP health server |
--health-port |
int | 8081 | Порт для health server |
--use-cached-bronze/--no-cached-bronze |
flag | False | Читать Bronze cache вместо API |
--cached-bronze-date |
str | None | Фильтровать Bronze cache по дате YYYY-MM-DD |
--cached-bronze-path |
path | None | Явный путь к каталогу Bronze cache |
--exact-replay/--no-exact-replay |
flag | False | Включить strict exact replay внутри опубликованной support boundary с fail-closed policy |
--required-persistence-profile |
choice | None | Per-run override для control-plane persistence profile (degraded_observable, replay_ready, forensic_grade) |
--replay-of-run-id |
str | None | Явный parent run_id для exact replay |
--replay-of-manifest-id |
str | None | Явный parent manifest_id для exact replay |
Примеры:
# Инкрементальный запуск (по умолчанию)
bioetl run --pipeline chembl_activity
# Запуск с политикой совместимости checkpoint
bioetl run --pipeline chembl_activity --checkpoint-compatibility observe
# С ограничением записей (для тестирования)
bioetl run --pipeline chembl_activity --limit 100
# Полная перезагрузка данных
bioetl run --pipeline chembl_activity --run-type rebuild --yes
# Предпросмотр очистки без выполнения
bioetl run --pipeline chembl_activity --run-type rebuild --dry-run
# Продолжить прерванный запуск
bioetl run --pipeline chembl_activity --resume
# Продолжить конкретный historical occurrence по run identity
bioetl run --pipeline chembl_activity --resume-run-id 7f26d7b2-2c25-4aef-bf4c-030e4f8a4f87
# Продолжить конкретный historical occurrence по manifest identity
bioetl run --pipeline chembl_activity --resume-manifest-id manifest-parent-001
# Начать incremental run с известного offset
bioetl run --pipeline chembl_activity --start-offset 5000
# С фильтрацией по CSV
bioetl run --pipeline chembl_activity \
--input-csv data/filter-ids.csv \
--filter-column molecule_id \
--filter-field molecule_chembl_id
# С DEBUG логированием
bioetl run --pipeline chembl_activity --debug
# Запуск из локального Bronze cache
bioetl run --pipeline chembl_activity --use-cached-bronze
# Локальный diagnostic live/backfill запуск без replay_ready evidence claim
bioetl run --pipeline chembl_publication --limit 1000 --required-persistence-profile degraded_observable
# Strict exact replay с явным ancestry
bioetl run --pipeline chembl_activity \
--use-cached-bronze \
--exact-replay \
--replay-of-run-id 7f26d7b2-2c25-4aef-bf4c-030e4f8a4f87 \
--replay-of-manifest-id manifest-parent-001Operator distinction:
| Surface | What operators should read it as | What operators must not read it as |
|---|---|---|
--resume |
Checkpoint continuation of the current pipeline execution | Strict exact replay of a prior run |
--resume-run-id / --resume-manifest-id |
Occurrence-pinned checkpoint continuation for one explicit historical ordinary-pipeline run | A request to ignore compatibility anchors |
--run-type rebuild |
Fresh recomputation of downstream data from available sources/Bronze | Checkpoint continuation or replay proof |
--exact-replay |
Fail-closed request for strict exact replay on snapshot-backed inputs внутри опубликованной support boundary | Ordinary rerun, rebuild, or degraded resume |
replay_mode=same_data_state_recovery in inspection |
A manifested run that can recover the same data state from immutable inputs | A separate CLI mode |
replay_mode=rebuild in inspection |
Ordinary rebuild/rerun path outside strict exact replay | Snapshot-backed same-data-state recovery |
Checkpoint resume policy (runtime setting):
settings.pipeline.control_plane.checkpoint_compatibility_policy=observeDegraded operator mode: продолжить можно только при несовместимостях вне canonical execution identity; identity mismatch всё равно блокирует resume.settings.pipeline.control_plane.checkpoint_compatibility_policy=soft_fail(по умолчанию) Заблокировать resume при несовместимости.settings.pipeline.control_plane.checkpoint_compatibility_policy=hard_failПрервать запуск ошибкой при несовместимости.required_persistence_profile=replay_readyиforensic_gradeне используют effectiveobserve; runtime повышает policy доhard_fail.- если текущий запуск выполняется как
exact_replay, runtime принудительно применяетhard_fail, даже если в settings запрошен более мягкий policy; для published contract это режим strictexact replay, а не degraded resume. --replay-of-run-idи--replay-of-manifest-idдопустимы только вместе с--exact-replay; они публикуют explicit replay ancestry в manifest/inspection surface и не должны использоваться для обычного rerun/rebuild.
Supported resume modes:
- ordinary
bioetl run --resumeuses the latest checkpoint pointer plus compatibility checks without ledger suffix replay; - ordinary
bioetl run --resume-run-id/--resume-manifest-idpins resume to one explicit historical checkpoint occurrence and still applies the same compatibility gates; - composite resume uses checkpoint snapshot state as the base and then replays
the ledger suffix strictly after
last_event_id. execution_fingerprintостаётся canonical semantic identity, аcomposite_run_identityиспользуется как occurrence-scoped resume anchor для composite path.run_idостаётся canonical occurrence anchor, аmanifest_id— immutable persisted manifest record key для этого occurrence.
Checkpoint load telemetry uses bounded statuses. In particular:
observe_blocked_identitymeansobservemode still rejected resume because canonical execution identity mismatched.observe_loaded_degradedmeansobservemode allowed resume only after a non-identity compatibility warning.
Типы запуска:
| Тип | Описание | Очистка данных |
|---|---|---|
incremental |
Обработка новых записей с последнего checkpoint | Нет |
backfill |
Обработка определённого диапазона | Silver/Gold |
rebuild |
Полная перезагрузка производных данных | Silver/Gold |
Exit Codes:
| Код | Значение |
|---|---|
| 0 | Успешное выполнение |
| 82 | Ошибка выполнения пайплайна |
| 83 | Превышен порог Data Quality |
| 84 | Ошибка захвата блокировки |
| 86 | Сетевая ошибка |
| 130 | Прервано (Ctrl+C) |
Последовательно выполняет все пайплайны для указанного провайдера.
Синтаксис:
bioetl run-all --source <PROVIDER> [OPTIONS]Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--source |
str | Required | Имя провайдера (chembl, pubchem, uniprot и др.) |
--run-type |
choice | incremental |
Тип запуска |
--limit |
int | None | Лимит записей для каждого пайплайна |
--dry-run |
flag | False | Показать пайплайны без выполнения |
--yes, -y |
flag | False | Пропустить подтверждение |
--list-only |
flag | False | Только показать список пайплайнов |
--debug |
flag | False | DEBUG логирование |
--health-server/--no-health-server |
flag | True | Включить HTTP health server |
--health-port |
int | 8081 | Порт для health server |
Примеры:
# Запуск всех ChEMBL пайплайнов
bioetl run-all --source chembl
# Только просмотр списка
bioetl run-all --source chembl --list-only
# Предпросмотр
bioetl run-all --source pubchem --dry-run
# Rebuild всех пайплайнов провайдера
bioetl run-all --source chembl --run-type rebuild --yesВыполняет композитный пайплайн (seed + enrichers) согласно ADR-026.
Синтаксис:
bioetl run-composite --composite <NAME> [OPTIONS]Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--composite |
str | Required | Имя композитного пайплайна |
--resume |
flag | False | Продолжить с checkpoint snapshot + ledger replay |
--dry-run |
flag | False | Предпросмотр без записи |
--seed-limit |
int | None | Лимит записей для seed пайплайна |
--enrich-only |
str | None | Запустить только указанные enrichers (через запятую) |
--required-only |
flag | False | Пропустить опциональные enrichers |
--force-enricher |
str | None | Принудительный перезапуск enricher |
--use-cached-bronze/--no-cached-bronze |
flag | False | Читать Bronze cache вместо API |
--cached-bronze-date |
str | None | Фильтровать Bronze cache по дате YYYY-MM-DD |
--cached-bronze-path |
path | None | Явный путь к каталогу Bronze cache |
--cached-bronze-enrichers/--no-cached-bronze-enrichers |
flag | None | Override cached Bronze только для enrichers |
--cached-bronze-dependencies/--no-cached-bronze-dependencies |
flag | False | Override cached Bronze для dependency pipelines |
--debug |
flag | False | DEBUG логирование |
--health-server/--no-health-server |
flag | True | Включить HTTP health server |
--health-port |
int | 8081 | Порт для health server |
Примеры:
# Запуск композитного пайплайна публикаций
bioetl run-composite --composite publication
# С ограничением seed
bioetl run-composite --composite publication --seed-limit 100
# Только определённые enrichers
bioetl run-composite --composite publication --enrich-only crossref,openalex
# Только обязательные enrichers
bioetl run-composite --composite publication --required-only
# Composite run из Bronze cache
bioetl run-composite --composite publication --use-cached-bronzeComposite resume semantics:
- composite resume сначала загружает checkpoint snapshot;
- затем runtime валидирует compatibility anchors;
- среди них
composite_run_identity, который отделён от semanticexecution_fingerprintи блокирует drift между разными occurrence одного и того же semantic запуска; - когда ledger attached, composite path воспроизводит suffix событий строго
после
last_event_id, чтобы восстановить coarse-grained lifecycle milestones без фабрикации rich checkpoint payloads.
Просмотр immutable run manifest и append-only ledger history для уже запущенных пайплайнов.
Это published inspection surface и CLI-leg traceability documentation pack, зафиксированного в D-01.
Поведение inspection surface зависит от rollout flags на runtime object path
settings.pipeline.control_plane (source-of-truth model:
src/bioetl/infrastructure/config/_base.py):
settings.pipeline.control_plane.run_manifest_enabledsettings.pipeline.control_plane.run_ledger_enabledsettings.pipeline.control_plane.required_persistence_profilesettings.pipeline.control_plane.checkpoint_compatibility_policy
Operational semantics:
- executable standard/composite runs требуют
run_manifest_enabled=true; если новый run появился без manifest, это уже нарушение текущего runtime контракта, а не штатный режим; - если
run_manifest_enabled=trueиrun_ledger_enabled=false,showвернёт manifest payload, но без ledger history там, где такой degraded mode ещё допускается; run_ledger_enabled=trueдопустим только приrun_manifest_enabled=true;required_persistence_profile=replay_readyтребуетrun_manifest_enabled=trueи execution context внутри опубликованной strict exact-replay support boundary;required_persistence_profile=forensic_gradeтребует иrun_manifest_enabled=true, иrun_ledger_enabled=true, плюс replay-ready / lineage-closure surfaces внутри той же опубликованной boundary;checkpoint_compatibility_policyпринимает значенияobserve,soft_fail,hard_failи управляет resume-поведением при checkpoint identity mismatch.observeне является strict reproducibility mode: canonical execution-identity mismatch всё равно блокирует resume, даже если другие degraded signals могут быть только зафиксированы warning-ом.- strict persistence profiles (
replay_ready,forensic_grade) поднимают effective resume policy доhard_fail. - historical universe claim surfaces не должны читаться из одного
show/scoreрезультата как global promise; literal wording про любой historical run требует отдельного authoritativeuniverse-reportartifact.
Resume contract:
- ordinary resume uses checkpoint snapshot state and compatibility checks without ledger suffix replay;
- composite resume uses checkpoint snapshot state as the base and then replays
the ledger suffix strictly after
last_event_id. resume_contract.resume_guaranteepublishes the operator guarantee: ordinarycheckpoint_snapshot_only_resumeiscompatibility_checked_checkpoint_snapshot_resume, compositecheckpoint_snapshot_plus_ledger_suffix_resumeisbounded_composite_reconstructive_resume, and exact replay remainsstrict_evidence_boundary_exact_replay.
Canonical storage layout:
data/output/control/run_manifest/{manifest_id}.jsondata/output/control/run_manifest/_by_run_id/{run_id}.txtdata/output/control/run_ledger/{manifest_id}.jsonldata/output/control/run_ledger/_by_run_id/{run_id}.txt
Current event baseline for ledger-backed runs:
manifest_createdrun_startedstage_startedstage_completedartifact_publishedrun_finishedrun_failedrun_shutdowndq_policy_appliedcomposite_dependency_completedcomposite_enricher_completedcomposite_merge_completedinput_snapshot_published
bioetl run-manifest show <run-id|manifest-id> [--format text|json|yaml]Команда:
- сначала пытается разрешить
manifest_idнапрямую; - затем при UUID-like identifier выполняет
run_id -> manifest_idlookup; - выводит
manifest,ledger_entries,diagnostics; - добавляет ledger history для этого же manifest, если ledger включён.
- в inspection payload сохраняет replay ancestry через
replay_of_run_id,replay_of_manifest_id,replay_parentage; - публикует semantic lineage anchors как
lineage_fragment_id, а occurrence-scoped persisted lineage records какstored_fragment_id, когда historical fragment lookup должен различать несколько occurrence одного semantic fragment.
Когда diagnostics отражает rejected/degraded resume path, inspection payload
дополнительно показывает компактные forensic blocks:
current_identitycheckpoint_identity
Они содержат resume-critical anchors: execution_fingerprint, manifest_id,
effective_config_hash, contract_ref, contract_version, exact_replay,
input_snapshot_ids, input_snapshot_content_hashes. Для composite-specific
resume diagnostics дополнительно показывается composite_run_identity как
occurrence-scoped drift guard, а не как generic semantic replay identity.
Output metadata sidecars remain the operator-facing occurrence surface. Their
runtime block publishes exact_replay, replay_of_run_id,
replay_of_manifest_id, and input_snapshot_fingerprint; corresponding
artifact_published ledger details repeat these anchors together with
execution_fingerprint, effective_config_artifact_id, contract_ref, and
contract_version so replay ancestry can be checked without reconstructing the
whole manifest by hand.
В text/json/yaml diff output отдельное поле replay_relationship
показывает, является ли один manifest exact replay другого, вместо того чтобы
смешивать replay ancestry с occurrence_only или semantic_drift.
По умолчанию команда использует человекочитаемый text-формат. Для
machine-readable вывода укажи --format json или --format yaml.
text-рендерер группирует ответ по секциям Manifest, Code Provenance,
Execution Inputs, Ledger, Diagnostics, чтобы оператору не приходилось
читать сырой JSON при triage.
Примеры:
bioetl run-manifest show 7f26d7b2-2c25-4aef-bf4c-030e4f8a4f87
bioetl run-manifest show 8d166b4d-c4a8-4755-896e-cf9158c5b5ec --format yaml
bioetl run-manifest show 7f26d7b2-2c25-4aef-bf4c-030e4f8a4f87 --format jsonbioetl run-manifest score <run-id|manifest-id> [--format json|yaml|text]Команда выводит только machine-readable reproducibility_audit_score block
из manifest diagnostics. JSON/YAML payload содержит schema_version,
contract_version, overall_score, category_scores, blockers,
evidence_refs, scored_at и source.
bioetl run-manifest diff <left> <right> [--format text|json|yaml]Команда сравнивает все top-level поля двух manifest по каноническому JSON сравнению значений. На практике чаще всего различаются:
pipeline_name,run_typeruntime_config,resolved_configcode_provenancesource_refs,planned_artifactsrun_id,manifest_id
По умолчанию diff печатается в компактном text-виде. Для автоматической
обработки используй --format json или --format yaml.
Forensic/cross-surface payloads также показывают artifact_byte_equivalence.
Это отдельный verdict от semantic_execution_equivalence: semantic replay
может быть true, даже если sidecars или occurrence-scoped artifacts
побайтно различаются.
Примеры:
bioetl run-manifest diff 7f26d7b2-2c25-4aef-bf4c-030e4f8a4f87 17f6799e-6c1a-4dd6-a7a1-b1fe2ea3e9ae
bioetl run-manifest diff 8d166b4d-c4a8-4755-896e-cf9158c5b5ec d775f516-ff3e-4d66-a369-1417c3ff093f --format yamlbioetl run-manifest universe-report [--external-pack path/to/archive-pack.json ...] [--write] [--require-universal-claim] [--require-durable-evidence-coverage] [--format text|json|yaml]Команда собирает authoritative full-universe historical replay artifact из локального retained corpus и одного или более archived/offline packs. Ключевые режимы:
--writeсохраняет artifact вdata/output/control/historical_replay_universe/{report_id}.json;--require-universal-claimзавершает команду с non-zero exit, еслиuniversal_claim.claimed != true;--require-durable-evidence-coverageзавершает команду с non-zero exit, еслиdurable_evidence_coverage_claim.claimed != true.
Artifact также публикует governed_full_corpus_gate. Это machine-readable
gate для wording уровня all_known_historical_runs: universal historical
exact-replay claim допустим только когда этот gate имеет
satisfied=true.
Используй оба --require-* флага для fail-closed release/operator gates,
когда нужна строгая проверка wording уровня "любой historical run".
See also:
- Run Manifest and Run Ledger Contract
- Run Manifest Inspection Runbook
- ADR-044
- ADR-045
- D-01 Documentation Governance
- Project Navigator
Утилиты для просмотра и валидации архитектурных решений (Architecture Decision Records).
bioetl adr list [--json]bioetl adr show <NUMBER> [--raw]bioetl adr validate [--json]Экспортирует Delta-таблицы Silver/Gold в CSV, XLSX или TSV.
Синтаксис:
bioetl export [TABLE] [OPTIONS]Аргументы:
| Аргумент | Описание |
|---|---|
TABLE |
Имя таблицы в формате provider.entity (опционально при --list) |
Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--list |
flag | False | Показать все доступные таблицы |
--preview |
flag | False | Показать схему и sample данных |
--format, -f |
choice | csv |
Формат: csv, xlsx, tsv |
--layer, -l |
choice | silver |
Слой: silver, gold |
--output, -o |
path | data/exports |
Директория для экспорта |
--limit |
int | None | Максимальное количество строк |
--columns, -c |
str | None | Колонки для экспорта (через запятую) |
Успешный export создает не только data-файл, но и sidecar manifests:
| Файл | Назначение |
|---|---|
*.provenance-manifest.json |
Dataset bundle ID, BioETL version, source providers, schema fields, row count и data-file checksum |
*.licensing-manifest.json |
Provider attribution/licensing notes и отдельная запись MIT-лицензии кода |
*.checksums-manifest.json |
sha256/size для data-файла и sidecar manifests |
Licensing manifest не является юридическим заключением; он фиксирует known provider obligations и не трактует merged outputs как MIT-licensed data.
Примеры:
# Список всех таблиц
bioetl export --list
# Предпросмотр таблицы
bioetl export chembl.activity --preview
# Экспорт в CSV (по умолчанию)
bioetl export chembl.activity
# Экспорт в Excel
bioetl export chembl.activity --format xlsx
# С ограничением строк и колонок
bioetl export chembl.activity --limit 10000 --columns id,name,value
# Экспорт Gold-слоя
bioetl export chembl.activity --layer gold
# В указанную директорию
bioetl export chembl.activity -o ./my-exportsЗапускает пайплайн с точками останова для отладки. Полезно для пошагового выполнения и инспекции промежуточных состояний.
Синтаксис:
bioetl debug --pipeline <NAME> [OPTIONS]Обязательные параметры:
| Параметр | Описание |
|---|---|
--pipeline <NAME> |
Имя пайплайна (соответствует YAML в configs/entities/) |
Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--breakpoint <STEP> |
choice | None | Точка останова: preflight, bronze, silver, gold, postrun |
--step-into |
flag | False | Пошаговое выполнение внутри этапа |
--inspect-state |
flag | False | Показать полное состояние перед каждым шагом |
--debugger-port |
int | 5678 | Порт для удалённого отладчика |
--limit |
int | 100 | Максимальное количество записей для отладки |
--dry-run |
flag | True | Не записывать данные (только чтение) |
Примеры:
# Отладка с точкой останова на этапе Silver
bioetl debug --pipeline chembl_activity --breakpoint silver
# Пошаговое выполнение с инспекцией состояния
bioetl debug --pipeline chembl_activity --step-into --inspect-state
# Отладка с удалённым отладчиком
bioetl debug --pipeline chembl_activity --debugger-port 5678См. также:
bioetl run— для обычного выполнения- Debugging Guide
Унифицированные диагностические инструменты для операторов. Объединяет метрики, health checks, checkpoints, manifests и quarantine в единый отчёт.
Синтаксис:
bioetl diagnostics [OPTIONS]Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--metrics |
flag | True | Включить метрики производительности |
--health |
flag | True | Включить health checks провайдеров |
--checkpoints |
flag | True | Включить информацию о checkpoints |
--manifests |
flag | True | Включить данные о manifests и ledgers |
--quarantine |
flag | True | Включить статистику quarantine |
--json |
flag | False | Вывод в формате JSON |
--output, -o |
path | None | Сохранить отчёт в файл |
--since |
str | 1h |
Период для метрик (например, 1h, 24h, 7d) |
--pipeline |
str | None | Фильтр по конкретному пайплайну |
Примеры:
# Быстрая диагностика (все включено)
bioetl diagnostics
# Только метрики и health checks
bioetl diagnostics --checkpoints=false --manifests=false --quarantine=false
# Сохранить отчёт в JSON
bioetl diagnostics --json --output system-diagnostics.json
# Диагностика за последние 24 часа
bioetl diagnostics --since 24hПодкоманда bioetl diagnostics dossier собирает one-run dossier. Она принимает
ровно один идентификатор: --run-id <RUN_ID> или --manifest-id <MANIFEST_ID>.
Manifest-rooted lookup сначала разрешает canonical run_id из manifest store,
затем собирает audit, checkpoint и run-manifest diagnostics. В replay/forensic
решениях учитывайте artifact_publication_closure: только closed является
полным produced-artifact evidence gate.
См. также:
bioetl health— для health checksbioetl run-manifest— для inspection manifests
Управление конфигурацией Data Quality: валидация, просмотр и тестирование DQ правил.
Синтаксис:
bioetl dq [COMMAND] [OPTIONS]Команды:
bioetl dq validate --entity <PROVIDER.ENTITY> [OPTIONS]Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--entity <PROVIDER.ENTITY> |
str | None | Сущность в формате provider.entity |
--strict |
flag | False | Strict validation (fail на warnings) |
--show-rules |
flag | False | Показать все DQ правила |
--test-data |
path | None | Тестировать с пользовательскими данными |
Примеры:
# Валидация DQ конфигурации для сущности
bioetl dq validate --entity chembl.activity
# Показать все DQ правила
bioetl dq validate --entity chembl.activity --show-rules
# Strict validation
bioetl dq validate --entity chembl.activity --strictСм. также:
- DQ Contracts
bioetl config validate— для общей валидации конфигурации
Инструменты для анализа и визуализации lineage (происхождения данных) в пайплайнах.
Синтаксис:
bioetl lineage [COMMAND] [OPTIONS]Команды:
bioetl lineage show --entity <PROVIDER.ENTITY> --record-id <ID> [OPTIONS]Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--entity <PROVIDER.ENTITY> |
str | None | Сущность в формате provider.entity |
--record-id <ID> |
str | None | Идентификатор записи |
--format, -f |
choice | text |
Формат вывода: text, json, dot |
--depth, -d |
int | 3 | Глубина lineage графа |
--include-fields |
flag | False | Включить field-level lineage |
--output, -o |
path | None | Сохранить в файл |
Примеры:
# Показать lineage для записи
bioetl lineage show --entity chembl.activity --record-id ACT12345
# Вывод в формате JSON
bioetl lineage show --entity chembl.activity --record-id ACT12345 --format json
# Визуализация в формате DOT (для Graphviz)
bioetl lineage show --entity chembl.activity --record-id ACT12345 --format dot --output lineage.dot
# Полный lineage с field-level деталями
bioetl lineage show --entity chembl.activity --record-id ACT12345 --depth 5 --include-fieldsСм. также:
- Lineage Architecture
bioetl run --tracing— для включения tracing
Просмотр и валидация конфигурации пайплайнов.
bioetl config show <PIPELINE> [--format yaml|json]Примеры:
bioetl config show chembl_activity
bioetl config show chembl_activity --format jsonbioetl config validate <PIPELINE>Выводит: Provider, Entity type, Silver table, Gold table (если есть).
bioetl config show-settings [--format yaml|json]Показывает все BIOETL-* переменные окружения (API-ключи маскируются).
bioetl config list-pipelinesCLI surface для работы с проблемными записями.
bioetl quarantine inspect --pipeline <NAME> [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--pipeline |
str | Required | Имя пайплайна |
--limit |
int | 100 | Максимум записей |
--error-code |
str | None | Фильтр по коду ошибки |
--run-id |
str | None | Ограничить просмотр одним run |
--silver-filter-only |
flag | False | Shortcut для --error-code FILTERED_OUT_SILVER |
Примеры:
bioetl quarantine inspect --pipeline chembl_activity
bioetl quarantine inspect --pipeline chembl_activity --error-code DQ-MISSING-FIELDbioetl quarantine stats --pipeline <NAME> [--json]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--pipeline |
str | Required | Имя пайплайна |
--json |
flag | False | Вывод в JSON |
--error-code |
str | None | Ограничить статистику одним кодом ошибки |
--run-id |
str | None | Ограничить статистику одним run |
--silver-filter-only |
flag | False | Shortcut для --error-code FILTERED_OUT_SILVER |
--group-by |
str | None | Фокусная Silver-группировка (reason-code, field, rule-type, operator, reason-code-field, reason-signature) |
--top |
int | 10 | Лимит элементов в группировках |
Показывает: общее количество, распределение по кодам ошибок, статусы (NEW, IGNORED, REPROCESSED).
bioetl quarantine replay --pipeline <NAME> [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--pipeline |
str | Required | Имя пайплайна |
--error-code |
str | None | Фильтр по коду ошибки |
--max-age-days |
int | 7 | Максимальный возраст записей |
--dry-run |
flag | False | Предпросмотр |
quarantine replay подготавливает записи к повторной обработке:
в non-dry-run режиме подходящие записи помечаются как REPROCESSED.
Команда не запускает полный rerun пайплайна сама по себе.
bioetl quarantine purge --pipeline <NAME> [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--older-than-days |
int | 30 | Удалить записи старше N дней |
--dry-run |
flag | False | Предпросмотр |
--force |
flag | False | Без подтверждения |
bioetl quarantine resolve --pipeline <NAME> --payload-hash <HASH> [--status IGNORED|REPROCESSED]Допустимые значения --status: IGNORED, REPROCESSED.
Checkpoint inspection surfaces also expose correlated run-manifest diagnostics.
For bioetl checkpoint audit-run --run-id <UUID>, the text renderer now
includes:
persistence_profile;composite_resume_reconstructabilityfor the bounded composite replay contract;alert_signals;next_steps.
CLI reference owns the command and option inventory for this inspection surface. The control-plane contract owns persistence-profile semantics, event taxonomy, and rollout flags.
bioetl checkpoint list --pipeline <NAME>| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--pipeline |
str | Required | Имя пайплайна |
bioetl checkpoint audit-run --run-id <UUID> [--limit 100] [--format text|json|yaml]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--run-id |
str | Required | RUN_ID запуска |
--limit |
int | 100 |
Максимум audit entries |
--format |
choice | text |
text, json, yaml |
Показывает correlated inspection payload для одного run_id:
- audit entries;
- linked run-manifest diagnostics;
persistence_profile;composite_resume_reconstructability;alert_signals;next_steps.
bioetl checkpoint inspect --pipeline <NAME> [--run-id <UUID>] [--audit-limit 100] [--format text|json|yaml]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--pipeline |
str | Required | Имя пайплайна |
--run-id |
str | None | Опциональный RUN_ID |
--audit-limit |
int | 100 |
Максимум correlated audit entries |
--format |
choice | text |
text, json, yaml |
Показывает:
- checkpoint metadata and identity anchors;
- correlated run-manifest context;
- compatibility taxonomy;
- bounded audit history for triage.
bioetl health server [--host 127.0.0.1] [--port 8081]Для Grafana 5. Silver Reject Explorer используйте:
bioetl health server --host 0.0.0.0 --port 8081Endpoints:
GET /health— общий статусGET /health/live— Kubernetes liveness probeGET /health/ready— Kubernetes readiness probeGET /health/providers— детальный статус провайдеров
bioetl health check [--provider chembl] [--json]Проверяет connectivity и health всех или указанных провайдеров.
Примеры:
bioetl health check
bioetl health check --provider chembl --provider pubchem
bioetl health check --jsonInspection and manual release surface for the Local-Only runtime lock files. This CLI group does not represent an inter-process lock manager or external coordinator.
bioetl lock release --pipeline <NAME> --run-id <UUID> [--exclusive]Внимание: Используйте только если уверены, что пайплайн не выполняется.
bioetl lock check --pipeline <NAME> --run-id <UUID>bioetl maintenance vacuum <TABLE> [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--retention-days, -r |
int | 7 | Минимальный возраст файлов |
--dry-run |
flag | False | Предпросмотр |
Примеры:
bioetl maintenance vacuum chembl.activity
bioetl maintenance vacuum chembl.activity --dry-run
bioetl maintenance vacuum chembl.activity -r 30bioetl maintenance vacuum-all [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--retention-days, -r |
int | 7 | Минимальный возраст файлов |
--dry-run |
flag | False | Предпросмотр |
--layer |
choice | all |
Слой: all, silver, gold |
bioetl maintenance archive <TABLE> <TARGET-PATH> [--remove-source]bioetl maintenance bronze-cleanup [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--retention-days, -r |
int | 90 | Удалить файлы старше N дней |
--dry-run |
flag | False | Предпросмотр |
bioetl maintenance cleanup-preview --pipeline <NAME>Показывает dry-run scope для Silver/Gold cleanup по конкретному pipeline без фактического удаления данных.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--pipeline |
str | Required | Имя pipeline (например, chembl_activity) |
Пример:
bioetl maintenance cleanup-preview --pipeline chembl_activitybioetl maintenance control-plane-lifecycle [OPTIONS]Планирует или применяет cleanup для data/output/control,
data/output/checkpoints и data/output/bronze. По умолчанию команда работает
в dry-run режиме.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--retention-days, -r |
int | 90 | Удалить unprotected artifacts старше N дней |
--apply |
flag | False | Применить план удаления |
--format |
choice | text |
Формат вывода: text, json |
--protected-manifest-id |
repeat | None | Manifest ID, который нельзя удалять |
--protected-run-id |
repeat | None | Run ID, который нельзя удалять |
--protected-effective-config-artifact-id |
repeat | None | Effective-config artifact ID для защиты |
--protected-lineage-fragment-id |
repeat | None | Lineage fragment ID для защиты |
--protected-snapshot-id |
repeat | None | Content-addressed snapshot ID для защиты |
Примеры:
bioetl maintenance control-plane-lifecycle --retention-days 90
bioetl maintenance control-plane-lifecycle --retention-days 90 --apply
bioetl maintenance control-plane-lifecycle --format jsonbioetl maintenance plan <PIPELINE> [--format text|json|yaml]Planner-only inspection command для versioned contract rollout. Команда не выполняет orchestration и не запускает backfill автоматически; она печатает transition summary, required actions и operator notes для выбранного pipeline.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--format |
choice | text |
Формат вывода: text, json, yaml |
Примеры:
bioetl maintenance plan chembl_activity
bioetl maintenance plan chembl_activity --format json
bioetl maintenance plan chembl_activity --format yamlТипичный planner output включает:
- active contract version и rollout mode;
- read/write/shadow versions;
- migration transitions и migration guides, если они объявлены;
- required actions. Для
affects_hash=trueplanner возвращает как минимум:silver_backfill_rebuild,gold_backfill_rebuild,verification_before_cutover.
| Переменная | Описание | По умолчанию |
|---|---|---|
BIOETL_ENV |
Окружение (dev, prod) |
dev |
BIOETL_DATA_DIR |
Директория данных | ./data |
BIOETL_LOG_LEVEL |
Уровень логирования | INFO |
BIOETL_METRICS_ENABLED |
Включить Prometheus метрики | true |
BIOETL_METRICS_PORT |
Порт для Prometheus | 8000 |
BIOETL_TRACING_ENABLED |
Включить OpenTelemetry tracing | false |
API-ключи провайдеров:
BIOETL_UNIPROT_API_KEY— optional higher-throughput UniProt profileBIOETL_OPENALEX_API_KEY— required for production-like OpenAlex runsBIOETL_OPENALEX_EMAIL— optional OpenAlex contact attributionBIOETL_SEMANTICSCHOLAR_API_KEY
Коды возврата следуют стандартам Unix (sysexits.h):
| Код | Константа | Описание |
|---|---|---|
| 0 | OK | Успешное выполнение |
| 1 | FAIL | Неспецифицированная ошибка |
| 64 | EX_USAGE | Ошибка использования командной строки |
| 65 | EX_DATAERR | Ошибка формата данных |
| 66 | EX_NOINPUT | Не удалось открыть входные данные |
| 67 | EX_NOUSER | Адресат неизвестен |
| 68 | EX_NOHOST | Имя хоста неизвестно |
| 69 | EX_UNAVAILABLE | Сервис недоступен |
| 70 | EX_SOFTWARE | Внутренняя ошибка ПО |
| 71 | EX_OSERR | Ошибка ОС |
| 72 | EX_OSFILE | Отсутствует критический файл ОС |
| 73 | EX_CANTCREAT | Не удалось создать выходной файл |
| 74 | EX_IOERR | Ошибка ввода-вывода |
| 75 | EX_TEMPFAIL | Временная ошибка |
| 76 | EX_PROTOCOL | Ошибка протокола |
| 77 | EX_NOPERM | Отказано в доступе |
| 78 | EX_CONFIG | Ошибка конфигурации |
| 80 | CONFIG_ERROR | Ошибка конфигурации пайплайна |
| 81 | INIT_ERROR | Ошибка инициализации |
| 82 | PIPELINE_ERROR | Ошибка выполнения пайплайна |
| 83 | DATA_QUALITY_ERROR | Превышен DQ порог |
| 84 | LOCK_ERROR | Ошибка блокировки |
| 85 | STORAGE_ERROR | Ошибка хранилища |
| 86 | NETWORK_ERROR | Сетевая ошибка |
| 87 | CHECKPOINT_ERROR | Ошибка checkpoint |
| 130 | SIGINT | Прервано Ctrl+C |
| 143 | SIGTERM | Завершено SIGTERM |
- Running Pipelines — руководство по запуску
- Pipeline Configuration — настройка конфигураций
- Metrics & Monitoring — метрики и мониторинг
- Troubleshooting — решение проблем