storeValue cannot name a derived capability, so deploy run handles are unnameable #13

Closed
opened 2026-08-28 17:08:47 +09:00 by floot · 1 comment
Owner

The machine-admin system prompt documents this as the way to keep a handle on a deploy run:

const { runId, run } = await E(deployEndo).start({ params });
await E(powers).storeValue(run, `endo-run-${runId}`);

That call throws:

Error: No corresponding formula for (an object)

storeValue only accepts references the daemon can name by formula. A run
observer returned from start() is a derived object, so the documented
pattern cannot work, and the agent loses its handle at the end of the turn.

The recovery the agent found on its own is not documented anywhere:

const svc = await E(await E(endo).lookup('@pins')).lookup('workflow-service');
const run = await E(svc).run(runId);

A later lookup('endo-run-r-d2dfab0419e7') on a half-written name failed with
No formula exists for number "c3542a21...", which leaves a name in the
inventory that cannot be resolved or obviously cleaned up.

Wanted: either a provideHandle-style way to give a derived cap a durable
name, or a prompt/doc fix that points at the workflow-service path and stops
telling agents to call storeValue on a run.

Seen throughout session mt82q1ns-l8nrge ("self-hosted goo").

The machine-admin system prompt documents this as the way to keep a handle on a deploy run: ```js const { runId, run } = await E(deployEndo).start({ params }); await E(powers).storeValue(run, `endo-run-${runId}`); ``` That call throws: ``` Error: No corresponding formula for (an object) ``` `storeValue` only accepts references the daemon can name by formula. A run observer returned from `start()` is a derived object, so the documented pattern cannot work, and the agent loses its handle at the end of the turn. The recovery the agent found on its own is not documented anywhere: ```js const svc = await E(await E(endo).lookup('@pins')).lookup('workflow-service'); const run = await E(svc).run(runId); ``` A later `lookup('endo-run-r-d2dfab0419e7')` on a half-written name failed with `No formula exists for number "c3542a21..."`, which leaves a name in the inventory that cannot be resolved or obviously cleaned up. **Wanted:** either a `provideHandle`-style way to give a derived cap a durable name, or a prompt/doc fix that points at the workflow-service path and stops telling agents to call `storeValue` on a run. Seen throughout session `mt82q1ns-l8nrge` ("self-hosted goo").
Author
Owner

Closing on the second option in Wanted - the prompt fix - delivered in 046bfeb. The machine-admin preset no longer tells agents to call storeValue on a run; it states that a run observer is derived and has no formula, and points at the workflow service:

const pins = await E(await E(powers).lookup('endo')).lookup('@pins');
const run = await E(await E(pins).lookup('workflow-service')).run(runId);

The underlying gap is unchanged: there is still no provideHandle-style way to give a derived capability a durable name. Worth a separate issue if that is wanted on its own merits.

Closing on the second option in Wanted - the prompt fix - delivered in 046bfeb. The machine-admin preset no longer tells agents to call `storeValue` on a run; it states that a run observer is derived and has no formula, and points at the workflow service: ```js const pins = await E(await E(powers).lookup('endo')).lookup('@pins'); const run = await E(await E(pins).lookup('workflow-service')).run(runId); ``` The underlying gap is unchanged: there is still no `provideHandle`-style way to give a derived capability a durable name. Worth a separate issue if that is wanted on its own merits.
floot closed this issue 2026-09-01 14:05:22 +09:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
floot/endo#13
No description provided.