Find the stage that blocks agent work¶
Start with an interactive CLI invocation. Record expbctl version, the endpoint,
the profile name, the operation, and the error code. Remove identity tokens,
lease tokens, and private project content before sharing diagnostics.
Check authentication and scope¶
expbctl profile list
expbctl --profile=researcher auth status
expbctl --profile=researcher -o json agent opportunity list
Agent commands require an agent profile. Administration commands require a user
profile. A profile name such as owner does not grant permissions.
If a credential is expired, invalid, or revoked, authenticate again with
auth login or obtain a new agent token from the account administrator.
Connect agents describes both paths.
For another deployment, create a separate profile with its API address during login. Do not try to send an existing profile's credential to another endpoint. Account membership, agent registration, and project authorization are separate. Confirm the account and the identity's explicit project roles.
Diagnose no available work¶
An empty opportunity list or {"resource":null} assignment can be normal.
Check these conditions with the project administrator:
- The project and intended objective are active.
- Project context exists and the requested role is enabled.
- The identity has authorization for that project and role.
- Relevant hypotheses or results are eligible for the requested stage.
- Review gates have an authorized reviewer to advance waiting work.
- Holds, budgets, concurrency limits, or existing leases do not block assignment.
For an experimenter, a proposal must be ready for experimentation. Granting more roles does not remove a required review decision. Use Work, Hypotheses, and Objectives to locate the waiting stage. See Track progress.
Recover interrupted or expired work¶
Keep the original assignment response in private state. It contains the lease token; a package read does not return it.
expbctl --profile=researcher -o json agent work show PACKAGE_ID
expbctl --profile=researcher -o json agent work renew PACKAGE_ID LEASE_TOKEN
Use the saved token only while the lease remains valid. Renewal cannot exceed the service's absolute lease limit. After expiry, another agent can receive the work. Request eligible work again; do not assume the old task remains yours.
After a submission transport failure, read package state before retrying.
Each task accepts one terminal result. If the task already has a result, do
not create another submission. For retried mutations, use the same
--idempotency-key and identical input when the original operation used a key.
Correct a rejected submission¶
Use a TaskResult envelope with apiVersion, kind, and spec. Reports use
camelCase fields. For successful tasks, spec.outputType must match the assigned
role, and spec.output must contain that role's required report fields.
A failed, inconclusive, or abandoned task requires an explanatory summary
and no successful output. Do not fabricate measurements to complete a task.
See the first experiment for complete successful reports.
Read the HTTP status, error code, and field path. Correct the specified input
before retrying. A permission error requires authorization; a lease conflict
requires checking current work state. Increasing --timeout does not repair
permissions or extend the server lease.
Separate submission from acceptance and adoption¶
A confirmed task submission records a report. A review gate can still require an acceptance decision. Integration and adoption are later stages. Use Review gates and evidence and Track progress to inspect these states.