Strategies
A Strategy is an operating role played by an existing Workstream. It is not a separate Erdo resource. Use a long-lived root workstream for the business outcome and attach each campaign workstream directly beneath it with the existingworkstream resource type and child
relationship.
Experiments remain hosted by the workstream doing the work. A campaign experiment therefore lives
on its campaign workstream, while the root workstream supervises the portfolio.
Attach campaign workstreams
erdo_attach_workstream_resource and
POST /v1/workstreams/:slug/resources.
Read the portfolio
erdo workstream ledger <strategy-slug>, erdo_read_workstream_ledger, and
GET /v1/workstreams/:slug/ledger return a one-level child_portfolio. Each entry contains the
child workstream, experiment counts, and open-attention count.
The read is deliberately one level deep and includes only direct children in the same organization
and project. Deeper execution detail remains on each child workstream’s own ledger.
Declare which provider campaigns a workstream governs
A workstream that manages paid media must be able to say which provider campaigns it manages. That belongs in a typed field, not in an agent’s instructions — an allowlist written in prose has to be edited by hand for every new campaign, in every record that repeats it, and nothing fails when two copies disagree.[] turns management off
without deleting the workstream. There is no merge form, because under one a stale reference could
never be removed.
Reading needs no extra call. external_refs is on every workstream response and on every entry of a
root ledger’s child_portfolio, so a portfolio loop reads the whole account’s scope from the ledger
read it already makes. It is always present — [] when nothing is declared.
The write is REST-only and has no MCP tool, so an agent can read the campaigns it may act on and
cannot widen that set. Scope is declared by the system that owns the mapping.
erdo approvals list --workstream <slug>, and --scope always_this_workstream on
that approval grants standing authority for that action within that workstream only.
A campaign no workstream declares still files its approval as normal; it simply belongs to no
workstream. So does a campaign two workstreams both declare — where the answer is ambiguous, Erdo
leaves the approval unplaced rather than guessing between them.
Scope work and authority
The shared Work feed and approval list accept an exact workstream slug:workstream_slug on erdo_list_activity_feed,
erdo_list_approvals, GET /v1/activity/feed, and GET /v1/approvals. Exact scope is applied
before pagination, so unrelated urgent or organization-level items cannot displace matching work.
always_this_workstream creates a standing approval policy for that action and its parameter
constraints on this workstream only. It does not grant authority to another workstream, and all
provider writes continue through the existing approval system.
