mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-18 12:39:28 +00:00
fix(plane): fetch task-produced inputs from the receiver after the start
A producer's artifact rendered as spec.files of a generated <task>-inputs Workspace ends up in ax's AX_WORKSPACES_YAML env value; Agent Substrate rejects values over 32768 characters, so a 182 KB facts.json broke ax apply on the live cluster. The reconciler now passes OUSAST_INPUTS instead, the receiver serves a running task its declared inputs over GET /inputs/..., and the runner fetches them after the start (failed fetch -> failed summary). Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
554f00e2f7
commit
89d000c704
@@ -56,7 +56,12 @@ container the same module is PID 1 (`ax-task-runner`), built as a target of the
|
||||
for tasks that must not overlap; engine-bearing tasks carry `engine`). The reconciler passes budgets and
|
||||
artifact paths to a task as `env` entries (`OUSAST_BUDGET_USD`, `OUSAST_BUDGET_CALLS`, `OUSAST_INPUT_<NAME>`,
|
||||
`OUSAST_OUTPUT_DIR`), which is ax's own mechanism for task configuration, so a Run never adds a field to a
|
||||
Task.
|
||||
Task. Inputs another task produced are never rendered into a Workspace (ax puts every bound Workspace into one
|
||||
env value, `AX_WORKSPACES_YAML`, and Agent Substrate rejects values over 32768 characters): the Task carries
|
||||
`OUSAST_INPUTS` = `{"<NAME>": "<producer>/<artifact>"}`, and after the start request the runner fetches each
|
||||
from the receiver's `GET /inputs/<producer>/<artifact>` (same headers, dial and retries as delivery; only a
|
||||
running task's declared inputs are served) to its `OUSAST_INPUT_<NAME>` path; a failed fetch delivers a
|
||||
failed summary naming the input and the command never runs.
|
||||
|
||||
### Runner (`runner.py`)
|
||||
|
||||
|
||||
@@ -76,6 +76,9 @@ mypy are clean, and the commit is gated on pytest's own exit code. Script-level
|
||||
`ate-target-actor: <atespace>/<task>`; 502/503/504 and connection errors retried up to
|
||||
`OUSAST_START_TIMEOUT`, a 409 final), carrying the bound Model's `secretKey.key` variable from the
|
||||
reconciler's environment; a Model-bound task whose variable is unset fails before `ax apply`.
|
||||
Task-produced inputs travel as `OUSAST_INPUTS`, not as a rendered Workspace: the runner fetches them after
|
||||
the start from the receiver's authorised `GET /inputs/<producer>/<artifact>` (a 182 KB `facts.json` in
|
||||
`AX_WORKSPACES_YAML` exceeded Substrate's 32768-character env limit on the live cluster, 2026-09-29).
|
||||
- `ousast plane run <Run.yaml>`, `ousast plane status <run>` (token attribution table per task and Model
|
||||
from the tasks' `summary.json` usage; `--units` from `units.jsonl`; also written to `attribution.json`),
|
||||
`ousast plane workspaces <population.toml>` (generates Workspace manifests per case pin).
|
||||
|
||||
Reference in New Issue
Block a user