Document workload-declared UI and the upload contract

This commit is contained in:
Emil
2026-08-02 17:47:52 +03:00
parent 361eb2e344
commit 5665e7df98
4 changed files with 50 additions and 8 deletions
+7 -4
View File
@@ -96,10 +96,13 @@ paths:
description: >
multipart/form-data. The text fields (`workload`, `parameters`,
`chunk_rows`, `max_rows`) MUST precede the `file` part: the file is streamed, not
buffered, so the fields have to be parsed before it arrives. Currently
only `similarity-search` with `parameters.query_smiles` is accepted.
When every shard succeeds, the coordinator merges their candidates into
one final CSV; distributed graph planning is not implemented.
buffered, so the fields have to be parsed before it arrives. The
workload must be an enabled, upload-ready entry of the embedded SDK
workload catalog, and `parameters` must satisfy its declared JSON
schema. When every shard succeeds, the coordinator reduces the partial
results (`top-k` workloads merge exactly; `ordered-concat` workloads
concatenate in shard order) into one final CSV; distributed graph
planning is not implemented.
requestBody:
required: true
content:
+3 -1
View File
@@ -32,7 +32,9 @@ The two halves of the project:
tasks claimed from the coordinator, with digest-pinned `TaskSpec`s,
resource reservation, and allowlist-driven workload discovery.
- **An operator UI** served by the coordinator: the control room, a workload
library page, and this documentation site at `/ui/docs/`.
library page, a workload-agnostic "new computation" form whose controls come
from each workload's own `UIElement` declarations, and this documentation
site at `/ui/docs/`.
## Quick start
+33
View File
@@ -111,6 +111,39 @@ that keep the header, `shard_rows` rows each) and default `reduce_partials`
| `resources` / `execution` | CPU-1 core defaults | Per-task resource and execution profile |
| `shard_rows` | `1000` | Rows per shard for the default `partition_input` |
| `map_entry_point` / `reduce_entry_point` | derived from the module | Handler keys (can stay default) |
| `ui_elements` | `()` | `UIElement` declarations that shape the coordinator "new computation" form |
| `reduction` | `"ordered-concat"` | Coordinator reduction mode: `ordered-concat` (row tables) or `top-k` |
| `upload_ready` | `True` | Whether a single uploaded dataset can drive the workload (multi-input planners set `False`) |
## Workload-declared UI elements
The coordinator "new computation" page renders one form per workload from the
embedded catalog. Workloads that need friendlier controls than plain schema
fields declare them:
```python
from scimesh.sdk import UIElement
ui_elements = (
UIElement(
"min_molwt", "number", "Minimum molecular weight",
help="Keep molecules with MolWt at least this value. Optional.",
placeholder="e.g. 100", order=1,
),
UIElement(
"skip_invalid", "checkbox", "Skip invalid molecules",
help="Skip rows with invalid SMILES instead of failing the shard.",
default=True, order=3,
),
)
```
Each `field` must name a `parameters_schema` property. Widgets: `text`,
`textarea`, `number`, `select` (requires `options`), and `checkbox`. When a
workload declares no elements, the page falls back to schema-derived controls
(defaults and descriptions from the schema still apply). The schema remains
the authoritative contract: the coordinator re-validates submitted parameters
against it server-side.
## Scientific hooks
+7 -3
View File
@@ -62,9 +62,13 @@ register -> claim (one task) -> download input + verify sha256
The task subprocess loads workloads from `SCIMESH_WORKLOAD_ALLOWLIST` (a
JSON array of `{distribution, name, version, digest}` entries matched
against installed `scimesh.workloads` entry points) or falls back to the
built-in `similarity-search`. Discovery measures the installed package
before and after importing and fails transactionally on any mismatch.
against installed `scimesh.workloads` entry points) or falls back to every
enabled built-in SDK workload of the installed package — the same library
the coordinator embeds as its catalog. Discovery measures the installed
package before and after importing and fails transactionally on any
mismatch. The agent advertises the enabled catalog workloads as its
capabilities unless `CAPABILITIES` is set explicitly. Generate an allowlist
for a non-editable install with `scimesh workload allowlist`.
```bash
make agent