Problem
Running factory without pinned stateIds fails during startup while resolving Linear workflow-state names:
Cannot resolve Linear state names: /linear/states/_index.json is unavailable (missing required scope: fs:read). Deploy the workflow-states resource or pin stateIds (UUIDs) in config.
This blocks the normal config path where factory maps default state names like Ready for Agent, Agent Implementing, In Planning, and Done to Linear state UUIDs dynamically.
What I observed
In RelayfileCloudMountClient, FACTORY_RELAYFILE_SCOPES currently includes Linear issues, GitHub, and Slack, but does not include /linear/states/**:
relayfile:fs:read:/linear/issues/**
relayfile:fs:write:/linear/issues/**
relayfile:fs:read:/github/repos/**
...
When I did a one-off join with relayfile:fs:read:/linear/states/** added, reading /linear/states/_index.json changed from a scope failure to:
RelayFileApiError: not found
status: 404
code: not_found
So there appear to be two layers:
- Factory should request read scope for
/linear/states/** when it relies on dynamic state-name resolution.
- The
workflow-states relayfile resource may not be deployed/materialized in relayfile cloud or relayfile-adapters for this workspace.
Temporary workaround
I pinned stateIds in the local factory.config.json using UUIDs observed from synced issue records:
"stateIds": {
"readyForAgent": "b9bec744-b60c-4745-8022-d90d6ab59ae3",
"agentImplementing": "39b9881d-1196-4c95-8b80-a20f0c7263f7",
"inPlanning": "3de351f2-90e6-4731-aa6b-4a55b77f481e",
"done": "83ea5383-bfe9-425a-86ef-517b8190f09a"
}
After pinning those IDs, factory factory run-once --config ./factory.config.json --dry-run gets past startup and completes.
Expected behavior
A factory config that omits stateIds should be able to resolve state names through relayfile cloud automatically, or fail with a clear ownership/action message if the workspace lacks the required provider resource.
Likely ownership
Factory probably needs the missing /linear/states/** read scope. The remaining 404 not_found likely belongs in relayfile-adapters and/or relayfile-cloud, since the state catalog resource itself is absent even when requested with the correct scope.
Acceptance criteria
- Factory requests
relayfile:fs:read:/linear/states/** when joining a relayfile workspace.
/linear/states/_index.json is available for Linear-connected workspaces, or the factory docs/config path clearly describes when stateIds must be pinned.
- A config without
stateIds can start successfully in a workspace with Linear states synced.
Problem
Running factory without pinned
stateIdsfails during startup while resolving Linear workflow-state names:This blocks the normal config path where factory maps default state names like
Ready for Agent,Agent Implementing,In Planning, andDoneto Linear state UUIDs dynamically.What I observed
In
RelayfileCloudMountClient,FACTORY_RELAYFILE_SCOPEScurrently includes Linear issues, GitHub, and Slack, but does not include/linear/states/**:When I did a one-off join with
relayfile:fs:read:/linear/states/**added, reading/linear/states/_index.jsonchanged from a scope failure to:So there appear to be two layers:
/linear/states/**when it relies on dynamic state-name resolution.workflow-statesrelayfile resource may not be deployed/materialized in relayfile cloud or relayfile-adapters for this workspace.Temporary workaround
I pinned
stateIdsin the localfactory.config.jsonusing UUIDs observed from synced issue records:After pinning those IDs,
factory factory run-once --config ./factory.config.json --dry-rungets past startup and completes.Expected behavior
A factory config that omits
stateIdsshould be able to resolve state names through relayfile cloud automatically, or fail with a clear ownership/action message if the workspace lacks the required provider resource.Likely ownership
Factory probably needs the missing
/linear/states/**read scope. The remaining404 not_foundlikely belongs inrelayfile-adaptersand/orrelayfile-cloud, since the state catalog resource itself is absent even when requested with the correct scope.Acceptance criteria
relayfile:fs:read:/linear/states/**when joining a relayfile workspace./linear/states/_index.jsonis available for Linear-connected workspaces, or the factory docs/config path clearly describes whenstateIdsmust be pinned.stateIdscan start successfully in a workspace with Linear states synced.