@@ -14,7 +14,8 @@ For expensive black-box objectives, Looptimum starts with bounded exploration
1414and then shifts to surrogate-guided suggestion ranking to reduce wasted trials.
1515Its key differentiator is operational: a file-backed, resumable workflow that
1616keeps state and decision trace local, which fits restricted and client-controlled
17- environments. The usage model stays simple (` suggest -> evaluate -> ingest ` );
17+ environments. The usage model stays simple (` suggest -> evaluate -> ingest ` ,
18+ with optional locked batches);
1819see [ ` docs/how-it-works.md ` ] ( docs/how-it-works.md ) for algorithm behavior and
1920tuning consequences.
2021For a spec-style contract summary, use
@@ -43,7 +44,7 @@ For a spec-style contract summary, use
4344Looptimum replaces ad hoc sweep loops with a small, explicit workflow:
4445
45461 . Define parameter bounds, objective schema, and optional constraints.
46- 2 . ` suggest ` one trial.
47+ 2 . ` suggest ` one trial by default, or allocate a locked batch with ` --count N ` .
47483 . Run that trial in your environment.
48494 . ` ingest ` the result and repeat.
4950
@@ -228,12 +229,23 @@ expanded stub in
228229
229230### ` suggest ` Output
230231
232+ Count ` 1 ` keeps the historical single-suggestion payload. Count ` > 1 ` emits a
233+ bundle JSON object by default:
234+
235+ - ` schema_version `
236+ - ` count `
237+ - ` suggestions ` (array of canonical suggestion payloads)
238+
239+ Use ` --jsonl ` to emit one canonical suggestion JSON object per line for worker
240+ handoff.
241+
231242Each suggestion includes:
232243
233244- ` schema_version ` (semver string, emitted by runtime)
234245- ` trial_id `
235246- ` params `
236247- ` suggested_at `
248+ - ` lease_token ` (only when ` worker_leases.enabled ` is true)
237249
238250### ` ingest ` Required Fields
239251
@@ -284,9 +296,7 @@ Best ranking rule:
284296
285297### Compatibility Notes
286298
287- - ` success ` is accepted as a deprecated alias and normalized to ` ok ` .
288- - Legacy ` failure_reason ` is accepted as a deprecated alias and normalized to
289- ` terminal_reason ` .
299+ - Canonical statuses are ` ok ` , ` failed ` , ` killed ` , and ` timeout ` .
290300- For non-` ok ` outcomes with no reason provided, ingest synthesizes
291301 ` terminal_reason ` as ` status=<status> ` .
292302- ` v0.2.x ` state without ` schema_version ` (or with ` 0.2.x ` ) upgrades in-memory
@@ -319,6 +329,13 @@ Best ranking rule:
319329- ` validate [--strict] ` : sanity-check config/state; warnings are non-fatal unless ` --strict ` .
320330- ` doctor [--json] ` : print environment/backend/state diagnostics.
321331
332+ Lease note:
333+
334+ - when ` worker_leases.enabled ` is true, ` suggest ` emits ` lease_token ` and
335+ workers must echo it on ` heartbeat ` and ` ingest `
336+ - ` max_pending_trials ` , when configured, rejects the whole requested batch
337+ before any pending state is created
338+
322339## Templates (Choose Your Starting Level)
323340
324341### Template Matrix (Feature Parity + Intended Use)
@@ -342,6 +359,8 @@ The `examples/` folder shows integration patterns, not benchmark leaderboards.
342359 objective (` suggest -> evaluate -> ingest -> status ` , typically under one minute)
343360- ` docs/examples/multi_objective/ ` : generated multi-objective report/state pack
344361 with weighted-sum and lexicographic objective-schema examples
362+ - ` docs/examples/batch_async/ ` : batch bundle, JSONL handoff, lease-token, and
363+ pending-state example pack
345364
346365Run the tiny end-to-end objective from repo root:
347366
@@ -447,3 +466,15 @@ python3 templates/bo_client_demo/run_bo.py suggest \
447466 --project-root templates/bo_client_demo \
448467 --json-only
449468```
469+
470+ For worker fan-out, use line-delimited output:
471+
472+ ``` bash
473+ python3 templates/bo_client_demo/run_bo.py suggest \
474+ --project-root templates/bo_client_demo \
475+ --count 3 \
476+ --jsonl
477+ ```
478+
479+ Bundle JSON, JSONL handoff, ` max_pending_trials ` , and lease-token examples are
480+ captured in ` docs/examples/batch_async/README.md ` .
0 commit comments