Propose durations from recorded runs
calibrate_programPropose new durations for one of the user's saved programs from its recorded runs, with the evidence. For every non-fixed step with enough runs a person ended by hand: the median becomes the proposed default, the 10th/90th percentiles the proposed min/max, widened so the author's own range is never narrowed. A fixed step that consistently overruns gets a "consider variable" note and no number, because only the author can decide that. The result is a per-step table (n, median, IQR, current, proposed, delta) plus what accepting the lot would do to the makespan and the critical path. It never saves anything: pass accept to get the calibrated program back — each changed duration carrying calibratedFrom — and then save_program if the user wants it kept. Requires a login token; the runs are private to whoever ran them.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Measurements a step needs before it gets a proposal (default 5). A step under it is reported as skipped with its statistics, not silently dropped. | |
| since | No | Only runs started on or after this date (YYYY-MM-DD or ISO), e.g. to calibrate on the last month's cooks only. | |
| token | No | Your Rhylthyme access token from the login tool | |
| accept | No | Step ids to accept, or "all". The result then also carries the calibrated program with `calibratedFrom` beside each written duration. NOTHING IS SAVED either way — pass that program to save_program if the user wants it kept. | |
| history | No | Run records to use instead of the ones stored against `program_id` (`runs` schema 0.1.0-alpha). | |
| program | No | The program JSON to calibrate. Omit it and `program_id`'s saved JSON is used, so the usual call is just an id. | |
| program_id | No | Library program UUID (from list_my_programs). Names the program whose recorded runs are the evidence, and — with no `program` — the JSON to calibrate. |