FN-8821: retire ephemeral-agent routing branches
Keep the legacy ephemeral-agent setting compatible while making all workflow routing durable-principal-only. - Preserve and expose the legacy setting as a routing-inert compatibility field. - Remove scheduler, executor, and mission-start branches that honored the deprecated toggle. - Add coverage for settings persistence and durable routing invariants. Files changed: .changeset/fn-8821-retire-ephemeral-routing.md | 7 + docs/settings-reference.md | 4 +- .../core/src/__tests__/settings-parity.test.ts | 8 +- packages/core/src/config/settings-schema.ts | 11 +- packages/core/src/task-store/settings-helpers.ts | 15 +- packages/core/src/task-store/settings-ops.ts | 12 +- packages/core/src/types/settings/settings-scope.ts | 5 +- .../__tests__/SettingsModal.general.test.tsx | 23 ++ .../settings/sections/GeneralSection.tsx | 13 ++ .../src/__tests__/mission-start-routing.test.ts | 104 +++++++++ ...ecutor-ephemeral-disabled-dispatch-gate.test.ts | 243 +++++++++++++++++++++ .../__tests__/scheduler-ephemeral-toggle.test.ts | 125 +++++++++++ 12 files changed, 542 insertions(+), 28 deletions(-) Fusion-Task-Id: FN-8821 Fusion-Task-Lineage: e81ec9c0-f2b0-48f9-ae2b-9bbde4491447 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
This commit is contained in:
@@ -622,7 +622,7 @@ Default notes:
|
||||
| `buildTimeoutMs` | `number` | `300000` | Build timeout in milliseconds (5 minutes). |
|
||||
| `verificationCommandTimeoutMs` | `number` | `undefined` | Optional project-scoped default timeout in milliseconds for executor `fn_run_verification` and configured deterministic test/build verification commands. When unset, `fn_run_verification` keeps its scope defaults (300s package, 900s workspace); when set to a positive value, it overrides both scope defaults while all verification still respects the 1800s hard cap. Set `0` or leave unset to use the legacy scope defaults. Marathon command shapes (`pnpm test`, `pnpm test:full`, `pnpm verify:workspace`, whole-package tests without file filters, and repeat loops) are soft-capped unless the agent explicitly passes `allowFullSuite: true`; opt-in full-suite runs still emit progress heartbeats and obey the hard cap. Project settings override global/default settings via the normal project settings precedence. |
|
||||
| `requirePlanApproval` | `boolean` | `false` | Require manual approval before planning → todo. |
|
||||
| `ephemeralAgentsEnabled` | `boolean` | legacy compatibility | Legacy input is accepted for existing settings records but no longer appears in Settings or controls workflow-stage routing. Classified workflow sessions always route through durable multi-role principals; operators configure workflow-session capacity on agents instead. |
|
||||
| `ephemeralAgentsEnabled` | `boolean` | `true` | Persisted project compatibility input retained for existing configurations and clients. It cannot control scheduler admission or assignment, executor dispatch/re-entry, mission start, or workflow-stage principal routing. Classified workflow sessions always route through durable multi-role principals; operators configure workflow-session capacity on agents instead. |
|
||||
| `agentProvisioning` | `{ approvalMode?: "always" \| "trusted-only" \| "never"; trustedRoles?: string[]; trustedAgentIds?: string[]; alwaysApproveDelete?: boolean }` | `{}` | Approval policy for `fn_agent_create`/`fn_agent_delete` (`approvalMode` default `trusted-only`, delete approvals default on via `alwaysApproveDelete: true`). |
|
||||
| `sandboxProvisioning` | `{ approvalMode?: "always" \| "trusted-only" \| "never"; trustedRoles?: string[]; trustedAgentIds?: string[]; autoApproveBackendIds?: string[] }` | `{}` | Approval policy for sandbox host-bootstrap operations (backend install/pull/probe during `SandboxBackend.prepare()`). Default posture is strict: `approvalMode` resolves to `always`; `autoApproveBackendIds` defaults to `["native"]`. |
|
||||
| `completionDocumentationMode` | `"off" \| "changeset" \| "changelog"` | `"off"` | Controls triage prompt injection for release-note artifacts in future task specs. `"changeset"` requires `.changeset/*.md` workflow guidance; `"changelog"` requires updating an existing changelog file (without inventing a new one); `"off"` disables this automation. |
|
||||
@@ -1902,4 +1902,4 @@ Settings → Authentication can hold multiple named credential accounts for each
|
||||
|
||||
### Workflow principal limits
|
||||
|
||||
`runtimeConfig.maxWorkflowSessions` is an optional per-agent cap for durable workflow sessions. It is independent of heartbeat `maxConcurrentRuns`: enabling a built-in agent heartbeat neither consumes nor changes workflow-session capacity. The former `ephemeralAgentsEnabled` value is accepted only as legacy configuration compatibility and no longer controls workflow-stage routing.
|
||||
`runtimeConfig.maxWorkflowSessions` is an optional per-agent cap for durable workflow sessions. It is independent of heartbeat `maxConcurrentRuns`: enabling a built-in agent heartbeat neither consumes nor changes workflow-session capacity. The persisted `ephemeralAgentsEnabled` compatibility input defaults to `true`; it cannot control scheduler admission or assignment, executor dispatch/re-entry, mission start, or workflow-stage principal routing.
|
||||
|
||||
Reference in New Issue
Block a user