project clock · live
The file proposes. The machine disposes.
Declare each armed workflow, cadence, execution locus, per-tick ceiling and missed-run policy in the project file.
An arm entry is a proposal with explicit money and failure semantics. Reading it schedules nothing. nika arm fire, emitted OS units and nika serve all end at the same firer.
Every beat names what, when, cost and silence.
workflow and cadence choose the target and clock. plafond and manqué are also required. A default ceiling could spend what nobody approved, and a default miss policy could either duplicate work or lose it silently.
- workflow: a repo-relative *.nika.yaml path.
- cadence: readable time, five-field cron with TZ, or on-webhook.
- plafond: positive per-tick USD ceiling.
- manqué: rattraper, rattraper-une-fois or sauter.
Say overlap, suspension and locus when they matter.
The same entry can govern overlap, post-skip behavior, local or cloud locus, suspension, tolerance, jitter and declared operator. Unsupported reserved behavior refuses instead of approximating.
- où: local today, cloud as an explicit non-local locus.
- chevauchement: sauter or file in the live firer.
- actif: false travels with raison and jusqu_au.
- par declares a human; the machine key is still what authorizes.
Separate declared from proved.
Bare nika arm shows armed and suspended beats, their next slots and whether a ledger proves a prior fire. A registry row declares intent. Only the sidecar proves that the machine fired.
nika arm
nika arm fire daily-briefKeep every deployment door on one law.
A manual fire, a launchd unit, a systemd timer and the resident loop all apply the same due window, missed-run policy, overlap lock, per-tick ceiling and ledger append.
nika.yaml arm[]
│
├── nika arm fire ───────┐
├── launchd / systemd ───┼── ONE FIRER ── run + ledger
└── nika serve ──────────┘