Weekly pipeline¶
uv run python -m kairos.commands.run weekly --cpu-only --report build/weekly-report.json
| Stage | Does | Entry points tried |
|---|---|---|
refresh |
Pulls C(t), H(t), events; writes the data manifest |
kairos.weekly:refresh |
fit |
Prophet null models on C/H series with 24+ positive months (NeuralProphet runs inside κ) |
kairos.weekly:fit |
dials |
δ/t_c, κ, h*, dG/dt |
kairos.weekly:dials |
governor |
Jonas, Rawls, Collingridge; tripwire level | kairos.weekly:governor |
ledger |
Hash, append, timestamp | kairos.weekly:ledger |
export |
Static dashboard snapshot | kairos.weekly:export |
Each entry point takes a RunContext and may return a mapping, which later
stages read from ctx.artifacts. A stage whose module is not installed is
reported as unavailable and the run continues. Use --strict to make that an
error (exit code 2). A stage that raises stops the run (exit code 1) unless
--keep-going is given.
The GitHub Actions job weekly.yml runs this every Friday at 06:00 UTC on a
hosted runner with --cpu-only and commits any new files under ledger/.
Behaviour¶
refreshdownloads live data, uses the committed snapshots whenKAIROS_OFFLINE=1, and falls back to them if a live download fails.dialsreads each dial independently. A dial short of data (aValueErrorfrom its package) is reported as"<dial> skipped: <reason>"in the stage detail and shown as unavailable in the snapshot; the run continues. With--cpu-only,κuses a reduced ensemble (3 seeds, 3 null refits, 30 epochs). The Vinge backtest replays the current vintage pseudo-real-time.governoruses the normal-CI fallback for dials without draws.ledgerappends theidx.CProphet forecast toledger/forecasts.jsonl(skipped if the same series/as-of/manifest is already registered) and tries to timestamp it unlessKAIROS_OFFLINE=1.exportwritesbuild/snapshot.json(schema v1) andbuild/site/.- The stage detail column of the run report summarises what each stage did.