Last updated: 2026-04-16
A lightweight Node.js command-line interface reads the declarative stage graph, executes the pipeline end-to-end, and provides structured feedback to contributors. This document now serves as the reference for the shipped implementation.
node --run pipeline -- run full-refresh-parallel) that replaces the existing ad-hoc shell scripts.pipeline/stage-graph.json at runtime to determine stage ordering, inputs/outputs, and side-effects..pipeline-runs/ so partial runs stay auditable.--only, --skip, future --from/--to) that unlock partial runs without duplicating scripts.parallel-processing handling clone/enrich/analyze work and aggregate-catalogue handling publication outputs.pipeline/stage-graph.json.dist/schemas/*.schema.json and are enforced after each stage.scripts/orchestrator/ (primary entrypoint index.ts, helper modules cli-helpers.ts and cli-commands.ts) with shared utilities documented in docs/architecture.md.commander, exposing the pipeline root command and subcommands:
pipeline list — enumerate available pipelines/stages from the graph.pipeline describe <stage|pipeline> — print detailed metadata for inspection.pipeline run <pipelineId> — execute stages sequentially (default: full-refresh-parallel).pipeline logs [runId|--latest] — inspect structured run metadata saved to .pipeline-runs/.pipeline doctor — check external prerequisites (Node.js version, Git availability, required env vars).pipeline benchmark — summarize persisted run durations for performance baselining.pipeline progress — summarize run outcomes, stage reliability trends, baseline median deltas, and telemetry coverage consistency.pipeline dashboard — render a compact release-check dashboard combining duration, reliability, and resource trends.loadStageGraph and resolves an execution plan with buildExecutionPlan.--only/--skip and validates referenced stage IDs.node <script>. The current stage graph executes collect-metadata, parallel-processing, and aggregate-catalogue, with publication output generation separated from worker analysis..pipeline-runs/<timestamp>_<pipeline>.json) with start/end timestamps, per-stage status (succeeded, skipped, failed, pending), durations, filters, and failure metadata, enabling future resume functionality and local auditing even when stages are filtered out.
validateStageFile (Ajv-based).modules_temp) without additional artifact drift checks beyond schema validation.pipeline run --only <stageIds> — run only the specified stages (comma-separated) after dependency resolution.pipeline run --skip <stageIds> — omit the given stage IDs while keeping the rest of the plan.pipeline list --pipelines — limit listings to pipeline summaries.pipeline list --stages — limit listings to stage summaries.pipeline logs --latest — inspect the most recent persisted run record.pipeline benchmark --pipeline <id> --limit <n> — summarize recent matching run records.pipeline benchmark --include-filtered --include-failed --json — include non-canonical runs and print machine-readable output.pipeline progress --pipeline <id> --limit <n> — summarize recent run outcomes, stage-level success rates, and latest-vs-baseline duration/resource deltas.pipeline progress --include-filtered --json — include filtered runs and print machine-readable output.pipeline dashboard --pipeline <id> --limit <n> — show a compact dashboard for run health, duration hotspots, and resource trend signals.pipeline dashboard --include-filtered --json — include filtered runs and print machine-readable dashboard output.Commander validates the mutually exclusive options (--only/--skip) so that unknown stage IDs or conflicting filters surface errors before execution. Skipped stages are still recorded in the run ledger so you can see exactly what was omitted.
The original exploration surfaced a few ideas that remain on the backlog:
--log-level <level> — switch between verbose and quiet output.--dry-run — show the planned execution without invoking any stages.--force — ignore any future caching optimizations and run every stage.▶︎ [1/2] collect-metadata … done in 12.4s..pipeline-runs/<timestamp>_<pipeline>.json capturing stage outcomes (including explicitly skipped stages), durations, applied filters, and failure metadata.pipeline logs [runId|--latest] to inspect a stored run summary without digging into the filesystem.pipeline logs also prints captured resource usage when present in the selected run record.--only stageId).--continue-on-error flag for exploratory batches (would run remaining stages but mark the run as degraded).in-process-stage-runner.ts). The stage graph declares script paths which the runner resolves and executes within the same Node process.