@@ -7,9 +7,9 @@ Optimum trial targeting for expensive black-box evaluations improves sample effi
77
88Looptimum is a file-backed loop for optimum parameter targeting when each
99trial is costly (time, compute, money, or operational risk).
10- You provide a parameter space and a scalar objective; Looptimum suggests the
10+ You provide a parameter space and objective schema ; Looptimum suggests the
1111next trial, records decisions, and resumes cleanly after interruptions.
12- Current stable release: ` v0.3.3 ` .
12+ Current stable release: ` v0.3.5 ` .
1313For 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
@@ -25,8 +25,9 @@ For a spec-style contract summary, use
2525- Private contact: [ contact@looptimum.com ] ( mailto:contact@looptimum.com )
2626- Start here: [ ` PILOT.md ` ] ( PILOT.md ) , [ ` intake.md ` ] ( intake.md ) ,
2727 [ ` docs/pilot-checklist.md ` ] ( docs/pilot-checklist.md )
28- - Best initial fit: bounded numeric parameters, one scalar objective, and
29- expensive evaluations in client-controlled environments
28+ - Best initial fit: bounded parameter spaces, one scalar objective or explicit
29+ scalarization rule, and expensive evaluations in client-controlled
30+ environments
3031- Scope and delivery are tailored to the project; contact for scope
3132
3233## Common Triggers
@@ -41,7 +42,7 @@ For a spec-style contract summary, use
4142
4243Looptimum replaces ad hoc sweep loops with a small, explicit workflow:
4344
44- 1 . Define parameter bounds and objective direction .
45+ 1 . Define parameter bounds, objective schema, and optional constraints .
45462 . ` suggest ` one trial.
46473 . Run that trial in your environment.
47484 . ` ingest ` the result and repeat.
@@ -200,7 +201,8 @@ expanded stub in
200201- Each evaluation is expensive enough that sample efficiency matters.
201202- Your evaluator runs as external jobs and you want a thin outer loop above
202203 training/evaluation infrastructure.
203- - You can define one scalar objective (` minimize ` or ` maximize ` ).
204+ - You can define one scalar objective or an explicit scalarization /
205+ lexicographic rule for multiple objectives.
204206- You have a bounded parameter set (commonly small-to-moderate dimensional).
205207- You want resumable, file-backed operation in local/offline/restricted
206208 environments.
@@ -217,9 +219,11 @@ expanded stub in
217219
218220### Inputs
219221
220- - Parameter space definition (` float ` and ` int ` currently supported in public
221- templates).
222- - Objective schema (name + direction).
222+ - Parameter space definition (` float ` , ` int ` , ` bool ` , and ` categorical ` in
223+ public templates; numeric params can also declare ` scale ` , and params may use
224+ ` when ` for conditional activation).
225+ - Objective schema (required ` primary_objective ` , optional
226+ ` secondary_objectives ` , optional ` scalarization ` policy).
223227- Trial budget and seed/config settings.
224228
225229### ` suggest ` Output
@@ -236,8 +240,8 @@ Each suggestion includes:
236240- ` trial_id ` (must match a pending trial)
237241- ` params ` (must match suggested params exactly)
238242- ` objectives ` :
239- - ` status: ok ` -> primary objective must be numeric and finite
240- - non-` ok ` status -> primary objective must be ` null `
243+ - ` status: ok ` -> all configured objective values must be numeric and finite
244+ - non-` ok ` status -> all configured objective values must be ` null `
241245- ` status ` : ` ok ` , ` failed ` , ` killed ` , ` timeout `
242246
243247### ` ingest ` Optional Fields
@@ -259,8 +263,11 @@ Each suggestion includes:
259263
260264Best ranking rule:
261265
262- - ` best ` is computed only from ` status: "ok" ` observations and their primary
263- objective values.
266+ - ` best ` is computed only from ` status: "ok" ` observations.
267+ - Single-objective campaigns rank by the primary objective value.
268+ - Multi-objective campaigns rank by the configured scalarization or
269+ lexicographic policy while preserving raw objective vectors in status,
270+ manifests, and reports.
264271- ` penalty_objective ` is never used to rank ` best ` .
265272
266273### Local State Files
@@ -271,7 +278,9 @@ Best ranking rule:
271278- ` state/acquisition_log.jsonl ` : append-only decision trace.
272279- ` state/event_log.jsonl ` : append-only lifecycle/operations trace.
273280- ` state/trials/trial_<id>/manifest.json ` : per-trial audit manifest.
274- - ` state/report.json ` and ` state/report.md ` : explicit report outputs from ` report ` .
281+ - ` state/report.json ` and ` state/report.md ` : explicit report outputs from
282+ ` report ` , including objective-config and Pareto summaries for multi-objective
283+ campaigns.
275284
276285### Compatibility Notes
277286
@@ -280,10 +289,6 @@ Best ranking rule:
280289 ` terminal_reason ` .
281290- For non-` ok ` outcomes with no reason provided, ingest synthesizes
282291 ` terminal_reason ` as ` status=<status> ` .
283- - Legacy ` v0.2.x ` non-` ok ` payloads with numeric primary objective are
284- accepted in ` v0.3.x ` , normalized to
285- ` objective: null ` + ` penalty_objective ` , and emit a deprecation warning.
286- - Sentinel primary-objective compatibility is planned for removal in ` v0.4.0 ` .
287292- ` v0.2.x ` state without ` schema_version ` (or with ` 0.2.x ` ) upgrades in-memory
288293 to ` 0.3.0 ` and persists on next mutating command.
289294- Earlier ` v0.3.x ` state versions load transparently in ` v0.3.x ` .
@@ -295,7 +300,7 @@ Best ranking rule:
295300 compatibility.
296301- Breaking changes are allowed only on ` 0.x ` major-line increments (for
297302 example ` 0.3 -> 0.4 ` ) and require explicit compatibility notes.
298- - Current patch tag in this line: ` v0.3.3 ` (see ` CHANGELOG.md ` ).
303+ - Current patch tag in this line: ` v0.3.5 ` (see ` CHANGELOG.md ` ).
299304- Full policy: [ ` docs/stability-guarantees.md ` ] ( docs/stability-guarantees.md ) .
300305
301306### Duplicate Ingest Behavior
@@ -335,6 +340,8 @@ The `examples/` folder shows integration patterns, not benchmark leaderboards.
335340- ` examples/toy-objectives/02_subprocess_cli/ ` : subprocess/CLI wrapper pattern
336341- ` examples/toy_objectives/03_tiny_quadratic_loop/ ` : dedicated tiny end-to-end
337342 objective (` suggest -> evaluate -> ingest -> status ` , typically under one minute)
343+ - ` docs/examples/multi_objective/ ` : generated multi-objective report/state pack
344+ with weighted-sum and lexicographic objective-schema examples
338345
339346Run the tiny end-to-end objective from repo root:
340347
0 commit comments