Skip to content

lc status

Manifest-driven status report for every output declared in astra.yaml, annotated with recorded asynchronous SLURM jobs.

Synopsis

lc status [OPTIONS]

Options

Option Default Effect
--universe, -u NAME every universe in universes/*.yaml Restrict to one universe.
--json off Emit machine-readable JSON instead of a styled table.

Output

Per universe, one line per declared output:

Universe baseline
  ✓ ok    accuracy
  ✸ stale precision
  ✗ miss  recall
  → alias inference
  ◷ queued simulation (job 1234567, regular)
  ▶ running fit (job 1234568, shared)

Statuses (defined in lightcone.engine.status.StatusLiteral):

Status Meaning When you see it
ok Manifest present, recomputed code_version matches what the manifest recorded. The output is up to date.
stale Manifest present, but code_version drifted. You changed the recipe, image, or a decision since the last run. lc run will re-execute.
missing No manifest at the expected output path. Never built, or the directory was deleted.
alias The output has no recipe: of its own — it's just a name pointing at a sibling output (typical for ASTRA "promoted" outputs from sub-analyses). Status is implicitly determined by the upstream.

When .lightcone/jobs/*.json records exist, lc status batch-queries squeue and sacct. Affected outputs can additionally show queued, running, failed, cancelled, or unknown, with the job id, QoS, and failure log where relevant. Completed jobs fall back to the manifest status, because manifests—not scheduler history—remain the source of truth for outputs. JSON output includes a nullable job object beside each output's materialization status.

Why it doesn't import Snakemake

lc status reads per-output manifests and small async job records. It never imports Snakemake or touches .snakemake/; scheduler polling happens only when records exist. If Slurm commands are unavailable, cached states are preserved. That makes it usable on:

  • A fresh clone before any lc run.
  • A frozen archive copied off a cluster.
  • A read-only workspace.

If a manifest is missing, the output reports missing. If a manifest is unparseable, read_manifest returns None and you also see missing — that is the agent-forged-file scenario; investigate with lc verify.

Examples

lc status                       # every output, every universe
lc status --universe baseline   # just baseline
lc status --json                # machine-readable JSON output
  • lc verify — recomputes data hashes too (slower; catches tampering and broken chains).
  • lc cancel — cancel a queued or running recorded job.
  • api/status — the Python API.
  • api/manifest — the manifest schema.