Add a decision-ready MVP spec for user-authored non-coding workflows. - Add docs/custom-workflows-mvp-spec.md covering user needs, minimal YAML contract, lifecycle mapping, mission relationship, one-week MVP slice, success metrics, and launch risks/open questions. - Link the new spec from docs/README.md under Task & Project Management. Files changed: docs/README.md | 1 + docs/custom-workflows-mvp-spec.md | 171 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) Fusion-Task-Id: FN-5729 Fusion-Task-Lineage: 1d4e210a-b672-4846-8b39-220a399cb4fa
9.9 KiB
9.9 KiB
Custom Non-Coding Workflows MVP Spec (FN-5729)
Purpose
Define a one-week MVP that lets non-coding users declare and run custom workflows in Fusion, while reusing current workflow-step and lifecycle primitives where possible.
1) User-Needs Validation (v1 target users)
User story 1 — Research ops lead
- Who: Product/research lead running weekly competitive scans.
- What they do: Trigger a multi-step flow (collect sources → summarize findings → produce decision memo).
- Current pain: Handoff between docs/spreadsheets/manual prompts is brittle and not repeatable.
- Why Fusion helps: Existing agents, task docs, and workflow gates can turn this into a reusable declared flow with observable state.
User story 2 — Content operations manager
- Who: Content lead publishing launch briefs.
- What they do: Intake brief → draft copy → style/brand check → publish checklist.
- Current pain: Steps are tracked in chat threads; no durable execution record.
- Why Fusion helps: Task lifecycle + workflow-step verdict contracts already provide checkpointing and auditable outcomes.
User story 3 — Support triage coordinator
- Who: Support manager routing high-priority tickets.
- What they do: Classify ticket → enrichment research → assign owner → produce response draft.
- Current pain: Routing quality varies by operator; escalation logic is implicit.
- Why Fusion helps: Declared states/transitions make routing policy explicit and measurable.
User story 4 — Internal ops runbook owner
- Who: Ops generalist managing recurring incident-prep checks.
- What they do: Run a fixed checklist and collect artifacts for leadership review.
- Current pain: Runbooks live in docs but execution evidence is scattered.
- Why Fusion helps: Workflow-run artifacts can be persisted as task documents and reviewed through one lifecycle.
Not solving in v1 (explicit cut list)
- Drag-and-drop visual workflow builder.
- Arbitrary external system actions (e.g., direct Jira/CRM writes) beyond existing Fusion tools.
- Multi-workflow orchestration/dependencies between workflows.
- Custom per-step RBAC model beyond existing toolMode/sandbox controls.
- Template marketplace/versioning.
2) Workflow-Definition Contract (minimum declarative schema)
Proposed minimal contract
id: "research-brief-v1"
name: "Research Brief Workflow"
entry:
taskTemplate: "Research brief: {{topic}}"
states:
- id: intake
- id: research
- id: synthesis
- id: review
- id: done
transitions:
- from: intake
to: research
- from: research
to: synthesis
- from: synthesis
to: review
- from: review
to: done
steps:
- state: research
mode: prompt
role: researcher
toolMode: readonly
gateMode: advisory
successVerdict: APPROVE|APPROVE_WITH_NOTES
- state: review
mode: prompt
role: reviewer
toolMode: readonly
gateMode: gate
successVerdict: APPROVE
artifacts:
required:
- key: findings
type: task_document
- key: summary
type: task_document
successCriteria:
- "All gate steps APPROVE"
- "Required artifacts exist"
Mapping to existing primitives
| Contract element | v1 handling | Source alignment |
|---|---|---|
steps[].mode prompt/script |
Extend existing | docs/workflow-steps.md execution modes |
steps[].toolMode readonly/coding |
Extend existing | docs/workflow-steps.md tool-mode allowlist |
steps[].gateMode gate/advisory |
Extend existing | docs/workflow-steps.md gate semantics |
successVerdict envelope |
Extend existing | Structured verdict contract in docs/workflow-steps.md |
| States/transitions graph | New (changed) | Current system is lifecycle-fixed (planning→...→done) per docs/architecture.md |
Role assignment (role) |
New (changed) | Reuses agent role concepts but not currently workflow-declared |
| Artifact requirements | New (changed) | Leverages task documents but adds declarative requirements |
successCriteria list |
New (changed) | Complements existing completion semantics |
Relationship to missions
- Missions (
docs/missions.md) remain decomposition/planning (what to deliver: mission→milestone→slice→feature→task). - Custom workflows define execution behavior (how a task runs through declared states/steps).
- v1 keeps them distinct: mission features may reference a workflow definition ID, but missions do not become workflow engines.
v1 authoring surface decision
- Chosen for v1: file-based YAML in repo (
.fusion/workflows/). - Rationale: fastest shippable path, reviewable in git, no immediate dashboard form complexity, aligns with one-week MVP.
- Deferred to v2: dashboard authoring/edit UI with validation and templates.
- Explicitly not in v1: dual-surface authoring (file + dashboard) to avoid sync/conflict complexity in the one-week slice.
Persistence location (no implementation)
- v1 definition registry can be referenced from project settings (analogous to
settings.scriptsindocs/settings-reference.md), e.g., project setting storing file paths/active workflow IDs. - Full dedicated workflow store is deferred to v2.
3) MVP Slice + Success Metrics
Smallest end-to-end vertical (one week)
A non-coding operator can:
- Add one YAML workflow definition.
- Attach that definition to a new task.
- Run the task through declared prompt/script steps using existing workflow-step engine behavior.
- Observe run state + produced artifacts in task documents and workflow results.
Constraint: this vertical must ship without introducing a new workflow runtime separate from existing workflow-step execution.
DONE criteria (Given/When/Then)
- Given a valid workflow YAML with 3+ states and at least one gate step, when a task is started with that workflow ID, then Fusion executes declared steps in order and records per-step verdict output.
- Given a step marked
toolMode: readonly, when the assigned agent runs, then tool access is restricted to the existing readonly allowlist and violations fail closed. - Given required artifacts in the workflow definition, when run reaches terminal success, then all required task-document keys exist or the run is marked incomplete.
- Given a gate step returns
REVISE, when evaluation completes, then task follows existing revision-loop behavior rather than silently marking success.
Out-of-scope guardrails (v2 deferrals)
- Workflow graph editor in dashboard.
- Cross-workflow triggers/event bus.
- External action connectors (Slack/Jira/Zendesk write-back).
- Advanced policy engine (per-step secret scopes, org-level approvals).
- Runtime migration/versioning of workflow definitions.
Success metrics and instrumentation
- Time-to-first-run (median time from workflow definition commit/registration to first completed run).
- Telemetry status: partially available via task/run timestamps; add explicit
workflow_definition_registeredandworkflow_run_startedevents.
- Telemetry status: partially available via task/run timestamps; add explicit
- Workflow completion rate (% runs reaching success criteria without manual intervention).
- Telemetry status: needs new run-level status keyed by workflow definition ID.
- 30-day adoption (# distinct projects with ≥1 custom workflow run).
- Telemetry status: needs definition-ID tagging on task/workflow-step events.
4) Risks, Constraints, and Open Questions
Conflicts with coding-tuned lifecycle invariants
- Fixed lifecycle vs declared states:
docs/architecture.mdassumes canonical task columns; v1 should map custom states onto internal step progression without altering board columns. - File-scope guards /
FileScopeViolationError: many non-coding workflows may be read-only and doc-artifact heavy; v1 should default to readonly/tool-limited steps and avoid introducing write steps that trigger code-oriented scope friction. - Squash-merge contract: non-coding workflows may not produce code commits; success path should allow completion with zero code diffs when workflow is explicitly non-coding.
- Self-healing expectations: retry/recovery assumes coding task execution loops; v1 should constrain auto-retry semantics to step-level reruns without forcing branch mutation.
autoMerge:falsesemantics (AGENTS.md): for projects with manual merge policy,in-reviewis terminal-until-human-merge, so custom non-coding runs must not be moved backward by self-healing routines after entering review/terminal states.
Permissions and sandboxing
- Non-coding workflows should default to
toolMode: readonly(docs/workflow-steps.md) with explicit opt-in to coding mode. - For research-style flows, allow readonly file/docs inspection plus
fn_web_fetchand insight/task-list tools; deny mutation tools by default. - Sandbox posture should align with
docs/sandbox.md: maintain port-4040 guard, deny unnecessary writes, and keep worktree/document boundaries explicit.
CEO/CTO decision checklist (open questions)
- Should v1 permit any
toolMode: codingsteps, or enforce readonly-only for launch safety? - Should custom workflow state names be user-visible only, while internal lifecycle columns remain unchanged?
- Is file-based authoring acceptable for first launch, or is minimal dashboard create/select required for market validation?
- What is the minimum telemetry event set required before launch (must-have vs nice-to-have)?
- Should mission features be allowed to require a workflow ID at triage time in v1, or deferred?
5) Summary Recommendation
Ship a constrained v1 that reuses workflow-step primitives (prompt/script, gateMode, toolMode, verdict contract), adds a minimal declarative workflow definition contract, and limits launch to one file-authored workflow path with clear telemetry and safety guardrails. This delivers the CEO/CTO inversion-of-control goal in a week without destabilizing core coding lifecycle contracts.