gsxdsm
1ea185daa5
FN-7911: add workflow validate dry-run command, tool, and API route
...
Adds a non-mutating `fn workflow validate` dry-run path across CLI, agent tools, and dashboard API so custom workflow IR can be checked before create/update.
- Add `packages/cli/src/commands/workflow.ts` implementing `fn workflow validate <id> | --file <path>` with JSON/text output, wired into `bin.ts`.
- Add `fn_workflow_validate` agent tool (`agent-tools.ts`, `index.ts`) reusing the existing parseWorkflowIr/trait/code-node/column-agent validation used by create/update, performing no persistence.
- Add `POST /api/workflows/validate` route in `register-workflow-routes.ts` plus dashboard route test coverage.
- Extend heartbeat tool-gating/exposure tests and gating classifications to include `fn_workflow_validate` alongside the other workflow tools.
- Update CLI/agent extension docs (`docs/cli-reference.md`, `docs/agents.md`, `docs/workflow-steps.md`, fusion skill references) to document the new command/tool.
- Add changeset `.changeset/fn-7911-workflow-validate.md` (minor) describing the new capability.
Files changed:
.changeset/fn-7911-workflow-validate.md | 7 ++
docs/agents.md | 5 +-
docs/cli-reference.md | 13 ++
docs/workflow-steps.md | 3 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 10 ++
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../src/__tests__/extension-workflow-tools.test.ts | 1 +
packages/cli/src/__tests__/extension.test.ts | 1 +
.../src/__tests__/workflow-docs-current.test.ts | 1 +
packages/cli/src/bin.ts | 22 ++++
packages/cli/src/commands/workflow.ts | 80 ++++++++++++
packages/cli/src/extension.ts | 10 ++
.../dashboard/src/__tests__/chat-manager.test.ts | 1 +
.../dashboard/src/__tests__/chat.rooms.test.ts | 1 +
.../planning-document-tools-exposure.test.ts | 1 +
.../__tests__/workflow-validate-route.test.ts | 101 +++++++++++++++
.../src/routes/register-workflow-routes.ts | 27 +++-
.../engine/src/__tests__/agent-action-gate.test.ts | 2 +-
.../agent-workflow-tools-exposure.test.ts | 70 ++++++++++-
.../src/__tests__/gating-classifications.test.ts | 3 +-
.../src/__tests__/heartbeat-executor.test.ts | 37 +++---
.../src/__tests__/heartbeat-session-prompt.test.ts | 5 +-
.../src/__tests__/permanent-agent-gating.test.ts | 2 +-
packages/engine/src/agent-heartbeat.ts | 5 +-
packages/engine/src/agent-tools.ts | 140 ++++++++++++++++++++-
packages/engine/src/executor.ts | 6 +
packages/engine/src/gating-classifications.ts | 2 +
packages/engine/src/index.ts | 4 +
29 files changed, 532 insertions(+), 31 deletions(-)
Fusion-Task-Id: FN-7911
Fusion-Task-Lineage: 903d15fe-a7ec-458f-aa34-8f2e895a9603
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 21:39:23 -07:00
gsxdsm
df8ad460af
FN-7772: add per-lane thinking level for workflow model lanes
...
Adds a per-workflow-lane thinking-level setting so execution, planning, and
review model lanes can each specify their own reasoning-effort/thinking
level, threaded through engine phase precedence so lane-specific settings
override the workflow default.
- Add workflow lane thinking-level settings to builtin workflow settings and
settings schema, with new types in core.
- Thread lane thinking-level precedence through model-resolution and engine
phase execution (executor, step-session-executor, triage,
agent-session-helpers).
- Surface per-lane thinking-level controls in the dashboard
WorkflowSettingsPanel and ProjectModelsSection.
- Add/adjust tests for workflow settings, agent-session-helpers, and the
dashboard settings panels.
- Update settings-reference.md and workflow-steps.md docs.
- Add changeset for the new feature (minor).
Files changed:
.changeset/fn-7772-workflow-lane-thinking.md | 7 ++++
docs/settings-reference.md | 10 ++---
docs/workflow-steps.md | 4 +-
.../core/src/__tests__/workflow-settings.test.ts | 41 ++++++++++++++++++++
packages/core/src/builtin-workflow-settings.ts | 27 ++++++++++++-
packages/core/src/index.ts | 4 +-
packages/core/src/model-resolution.ts | 45 +++++++++++++++++++++-
packages/core/src/settings-schema.ts | 3 ++
packages/core/src/types.ts | 6 +++
.../app/components/WorkflowSettingsPanel.tsx | 35 ++++++++++++++---
.../__tests__/SettingsModal.models-auth.test.tsx | 7 +++-
.../__tests__/WorkflowSettingsPanel.test.tsx | 31 +++++++++++++++
.../settings/sections/ProjectModelsSection.tsx | 39 ++++++++++++++++---
.../src/__tests__/agent-session-helpers.test.ts | 13 ++++---
.../engine/src/__tests__/executor-test-helpers.ts | 1 +
packages/engine/src/agent-session-helpers.ts | 19 +++++----
packages/engine/src/executor.ts | 4 +-
packages/engine/src/step-session-executor.ts | 2 +-
packages/engine/src/triage.ts | 8 +++-
19 files changed, 264 insertions(+), 42 deletions(-)
Fusion-Task-Id: FN-7772
Fusion-Task-Lineage: 70aba3a9-66c2-4bb0-aff9-acabc7b98818
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-10 02:21:01 -07:00
gsxdsm
235ff4c65e
FN-7771: add per-node thinking level for workflow model bindings
...
Adds a per-node thinking-level override (config.thinkingLevel) for workflow IR model bindings so individual workflow nodes can set reasoning effort independently of the global default.
- Extend workflow-ir types/schema and workflow-steps-to-ir conversion to carry config.thinkingLevel per node
- Wire thinkingLevel through executor and step-session-executor so the engine applies the per-node override during model calls
- Add a thinking-level control to WorkflowNodeEditor for authoring per-node overrides in the dashboard
- Add/extend tests covering IR round-trip, steps-to-ir conversion, executor model binding, and the WorkflowNodeEditor UI
- Document the new setting in docs/workflow-steps.md
- Add changeset for @runfusion/fusion (minor)
Files changed:
.changeset/fn-7771-workflow-node-thinking.md | 7 +++
docs/workflow-steps.md | 10 ++-
packages/core/src/__tests__/workflow-ir.test.ts | 42 +++++++++++++
.../src/__tests__/workflow-steps-to-ir.test.ts | 15 +++++
packages/core/src/store.ts | 1 +
packages/core/src/types.ts | 9 +++
packages/core/src/workflow-ir.ts | 21 +++++++
packages/core/src/workflow-steps-to-ir.ts | 5 ++
.../app/components/WorkflowNodeEditor.tsx | 42 ++++++++++++-
.../__tests__/WorkflowNodeEditor.test.tsx | 73 ++++++++++++++++++++++
.../engine/src/__tests__/executor-test-helpers.ts | 5 ++
.../__tests__/executor-workflow-step-model.test.ts | 31 +++++++++
.../src/__tests__/workflow-step-review.test.ts | 53 ++++++++++++++++
packages/engine/src/executor.ts | 61 ++++++++++++++++--
packages/engine/src/step-session-executor.ts | 12 +++-
packages/engine/src/workflow-node-handlers.ts | 29 ++++++++-
16 files changed, 404 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-7771
Fusion-Task-Lineage: 5dbe3efb-773d-47db-9412-b740eb1d7745
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-10 01:49:15 -07:00
gsxdsm
6a13ad175e
FN-7732: remove dangling release-authorization UI/i18n/docs scaffolding
...
Narrative: The triage release-authorization gate itself was already removed in b5b0458; this cleans up the leftover scaffolding it left behind — an unemitted activity type, a dead TaskCard badge/label/CSS, orphaned i18n keys across all 6 locales, and a stale solutions doc — so the codebase no longer references a gate that no longer exists.
- Drop the unused `task:release-authorization-required` ActivityEventType and its label/rendering in ActivityFeed.tsx and ActivityLogModal.tsx
- Remove the dead `isReleaseAuthorizationHold` badge logic and `.awaiting-release-authorization` CSS class from TaskCard.tsx/TaskCard.css
- Simplify TaskDetailModal.tsx comments/logic now that legacy release-authorization holds render as ordinary manual plan-approval holds
- Delete orphaned i18n keys `tasks.awaitingReleaseAuthorization` and `taskDetail.plan.releaseAuthorizationHold` across en/es/fr/ko/zh-CN/zh-TW locales and resources.d.ts
- Delete the stale docs/solutions/architecture-patterns/release-triage-requires-user-authorization.md doc
- Update docs/workflow-steps.md and docs/settings-reference.md to describe the gate as removed (superseded by FN-7732) instead of documenting still-active behavior
- Add changeset for @runfusion/fusion (patch/internal)
Files changed:
.changeset/fn-7732-remove-release-authorization-block.md | 7 +++++
docs/settings-reference.md | 2 +-
docs/solutions/architecture-patterns/release-triage-requires-user-authorization.md | 33 ----------------------
docs/workflow-steps.md | 6 ++--
packages/core/src/types.ts | 8 ++++--
packages/dashboard/app/components/ActivityFeed.tsx | 5 ----
packages/dashboard/app/components/ActivityLogModal.tsx | 6 ----
packages/dashboard/app/components/TaskCard.css | 11 --------
packages/dashboard/app/components/TaskCard.tsx | 13 +++------
packages/dashboard/app/components/TaskDetailModal.tsx | 14 +++------
packages/i18n/locales/en/app.json | 3 --
packages/i18n/locales/es/app.json | 5 +---
packages/i18n/locales/fr/app.json | 5 +---
packages/i18n/locales/ko/app.json | 5 +---
packages/i18n/locales/zh-CN/app.json | 5 +---
packages/i18n/locales/zh-TW/app.json | 5 +---
packages/i18n/src/resources.d.ts | 3 --
17 files changed, 30 insertions(+), 106 deletions(-)
Fusion-Task-Id: FN-7732
Fusion-Task-Lineage: d4137bd8-9056-4062-9f2a-c6f5d47295f4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-09 19:58:07 -07:00
gsxdsm
927741a8cf
FN-7727: persist failed workflow step history across self-healing retries
...
Preserves prior failed pre-merge review attempts instead of overwriting them when self-healing re-runs a failed workflow step.
- Add optional bounded `priorAttempts?: WorkflowStepResult[]` field to `WorkflowStepResult` (capped at `MAX_WORKFLOW_STEP_PRIOR_ATTEMPTS`)
- Add shared pure `upsertWorkflowStepResult(existing, incoming, opts?)` helper in `@fusion/core` (packages/core/src/workflow-step-results.ts)
- Route the executor graph adapter's `recordWorkflowStepResult` and triage's `recordPlanReviewWorkflowResult` through the new helper so a self-healing recovery re-run snapshots the prior failed/advisory_failure attempt into `priorAttempts` instead of dropping it
- Selection logic (self-healing, merge-blocker, progress/timing) is unchanged and still reads only the current entry
- Surface prior failed attempts in the TaskDetailModal Summary tab's Workflow results list as a collapsed "previous failed attempts" disclosure
- Add core/engine/dashboard tests covering the upsert helper, self-healing recovery snapshotting, and the UI disclosure
- Document the behavior in docs/workflow-steps.md
- Add changeset for @runfusion/fusion (patch)
Files changed:
.changeset/fn-7727-persist-failed-step-history.md | 7 ++
docs/workflow-steps.md | 15 +++
.../src/__tests__/workflow-step-results.test.ts | 138 +++++++++++++++++++++
packages/core/src/index.gate.ts | 4 +
packages/core/src/index.ts | 4 +
packages/core/src/types.ts | 19 +++
packages/core/src/workflow-step-results.ts | 99 +++++++++++++++
.../dashboard/app/components/TaskDetailModal.css | 55 ++++++++
.../dashboard/app/components/TaskSummaryTab.tsx | 42 ++++++-
.../TaskSummaryTab.prior-attempts.test.tsx | 89 +++++++++++++
.../clear-terminal-workflow-step-failures.test.ts | 27 ++++
packages/engine/src/__tests__/self-healing.test.ts | 50 ++++++++
...flow-step-results-self-healing-recovery.test.ts | 115 +++++++++++++++++
packages/engine/src/executor.ts | 29 +++--
packages/engine/src/triage.ts | 14 ++-
15 files changed, 688 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-7727
Fusion-Task-Lineage: 7316fb18-bc92-426d-91f4-b1a4ad41c9b1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-09 19:58:05 -07:00
gsxdsm
626e00288c
FN-7720: add operator review-lane bypass for stranded pre-merge review failures
...
Add a policy-gated review-lane bypass primitive so operators can unstick cards stranded by a failed pre-merge review step (e.g. the no-feedback review-engine defect), without exposing it to agent-driven lanes.
- Add `store.bypassFailedPreMergeReviewStep(id, { reason, actor })` in @fusion/core plus `getLatestFailedPreMergeReviewStep` in task-merge.ts, and new `bypassedBy`/`bypassedAt`/`bypassReason`/`bypassedFromStatus`/`bypassedFromVerdict` fields on `WorkflowStepResult`
- Add operator-only `fn_task_bypass_review` CLI/pi-extension tool; explicitly withheld from executor/reviewer/triage agent tool lists
- Add `POST /tasks/:id/bypass-review` dashboard API route and wire it through `register-task-workflow-routes.ts` and legacy API compatibility layer
- Add dashboard UI affordance (context menu action + task detail modal + right-dock controller wiring) to trigger the bypass with a reason
- Add i18n strings for the bypass action/labels across en/es/fr/ko/zh-CN/zh-TW locales
- Update `gating-classifications.ts` to recognize the bypassed state
- Add unit tests: `store-bypass-review.test.ts`, `task-merge-bypass.test.ts`, extension test coverage, and `useTasks` hook test coverage
- Update docs (`docs/workflow-steps.md`, `docs/dashboard-guide.md`, AGENTS.md, fusion skill references) to describe the new bypass tool/route
- Add changeset `.changeset/fn-7720-review-lane-bypass-primitive.md` (minor)
Files changed:
$(git diff --cached --stat)
Fusion-Task-Id: FN-7720
Fusion-Task-Lineage: 590b020a-ae02-4b51-8189-df8f54bf3044
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-09 19:58:04 -07:00
gsxdsm
bec8987ce9
FN-7648: gate hold-release on trait-based unplanned-card check, not literal todo column
...
Blocks planning/intake column cards from entering processing columns regardless of literal column id, so renamed custom intake/planning columns are covered by the same guard as the legacy todo column.
- Add isUnplannedForExecution() in hold-release.ts: true when task.status==="planning", or when the card sits in the legacy todo column or a column carrying the intake trait AND its PROMPT.md still equals the bootstrap stub.
- Route issueRelease() (used by the sweep, promoteHeldTask, and releaseHeldTaskByEvent) through this guard before releasing into any countsTowardWip processing column.
- Update scheduler.ts's reserveSlot guard to use the same trait-based predicate instead of a hardcoded "todo" column id check.
- Add regression tests in hold-release.test.ts and scheduler-workflow-cutover.test.ts covering renamed intake/planning columns.
- Document the invariant in docs/architecture.md and docs/workflow-steps.md.
- Add changeset (patch) describing the fix.
Files changed:
.changeset/fn-7648-unplanned-intake-cards-never-execute.md | 7 +
docs/architecture.md | 2 +
docs/workflow-steps.md | 2 +
packages/engine/src/__tests__/hold-release.test.ts | 238 +++++++++++++++++++++
packages/engine/src/__tests__/scheduler-workflow-cutover.test.ts | 60 +++++-
packages/engine/src/hold-release.ts | 60 ++++++
packages/engine/src/scheduler.ts | 26 +--
7 files changed, 378 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-7648
Fusion-Task-Lineage: a4b54d30-f86d-4eb9-9cf2-6ac55b6dbe58
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-07 22:06:21 -07:00
gsxdsm
09a1c9d843
FN-7596: regression-test the Coding (Ideas) manual-intake lifecycle end-to-end
...
Adds cross-layer regression coverage for the manual-intake parking lifecycle (create -> parked -> operator Start promotion -> poll-time todo-discovery), and clarifies the workflow-steps doc to describe the tested lifecycle.
- packages/core: covers store create -> moveTask promotion out of the parked intake column
- packages/engine: covers triage poll ordering/discovery of the still-unplanned bootstrap-stub card
- packages/dashboard: covers TaskCard's Start affordance for parked cards
- docs: documents the full regression-tested lifecycle for manual-intake column parking (FN-7596)
Files changed:
docs/workflow-steps.md | 2 +-
.../__tests__/store-create-intake-column.test.ts | 26 ++++
.../app/components/__tests__/TaskCard.test.tsx | 153 +++++++++++++++++++++
packages/engine/src/__tests__/triage.test.ts | 119 +++++++++++++++-
4 files changed, 298 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7596
Fusion-Task-Lineage: 267c3d9a-6181-4ca5-b871-7009c0204372
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-05 16:33:21 -07:00
gsxdsm
cf3fe8b485
FN-7591: make dashboard create surfaces resolve intake column from workflow instead of hard-coding triage
...
Fixes dashboard task creation so new cards land in the selected/default workflow's intake column instead of always forcing legacy triage, letting workflows like Coding (Ideas) park new cards in 'ideas' until an operator promotes them.
- InlineCreateCard, QuickEntryBox, and NewTaskModal no longer hard-code column:"triage"; InlineCreateCard now forwards workflowId at create time instead of applying it post-create.
- Fixed a glue-layer regression in useTaskHandlers.ts (handleBoardQuickCreate/handleModalCreate) that re-forced column:"triage" even after UI surfaces stopped sending it.
- Added/updated tests covering the store's intake-column resolution and the dashboard create surfaces/hooks.
- Documented the new manual-intake-column parking behavior in dashboard-guide.md and workflow-steps.md.
- Added a patch changeset for @runfusion/fusion.
Files changed:
.changeset/fn-7591-coding-ideas-intake.md | 7 +++
docs/dashboard-guide.md | 4 ++
docs/workflow-steps.md | 1 +
packages/core/src/__tests__/store-create-intake-column.test.ts | 20 ++++++++
packages/dashboard/app/App.tsx | 5 +-
packages/dashboard/app/components/InlineCreateCard.tsx | 28 ++++------
packages/dashboard/app/components/NewTaskModal.tsx | 5 +-
packages/dashboard/app/components/QuickEntryBox.tsx | 5 +-
packages/dashboard/app/components/TodoView.tsx | 7 ++-
packages/dashboard/app/components/__tests__/InlineCreateCard.test.tsx | 59 +++++++++++++++++++++-
packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 14 +++--
packages/dashboard/app/components/__tests__/TodoView.test.tsx | 10 ++--
packages/dashboard/app/components/__tests__/board-quickcreate-workflow-lane-visibility.test.tsx | 45 ++++++++++++++++-
packages/dashboard/app/hooks/__tests__/useTaskHandlers.test.ts | 27 ++++++++--
packages/dashboard/app/hooks/useTaskHandlers.ts | 8 ++-
15 files changed, 207 insertions(+), 38 deletions(-)
Fusion-Task-Id: FN-7591
Fusion-Task-Lineage: 510f0e6a-89e7-468f-a6df-ad6aebd5c33a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-05 13:15:56 -07:00
gsxdsm
53fe0d71b9
FN-7584: register builtin:brainstorming workflow with ask-user/exit-gate loop
...
Adds a discoverable built-in Brainstorming workflow composing the ask-user + exit-gate reach-out loop ahead of the standard coding plan/execute/review/merge spine, plus a WorkflowNodeEditor fix so clearing the ask-user question textarea deletes the config key instead of persisting an empty string.
- Add packages/core/src/builtin-brainstorming-workflow-ir.ts registering builtin:brainstorming (non-default, default-enabled): ask-user -> refine prompt -> exit-gate-on-approval ahead of the unmodified Coding plan/execute/review/merge spine
- Wire the new builtin into packages/core/src/builtin-workflows.ts and extend the builtin-workflows parity test suite
- Add builtin-brainstorming-workflow-ir.test.ts covering the new workflow's IR shape and validation
- Fix WorkflowNodeEditor.tsx ask-user question textarea onChange to delete the config.question key when cleared to empty (validateAskUserAndExitGateNodes rejects present-but-empty question; only an absent key falls back to the engine default)
- Update docs/workflow-steps.md to document builtin:brainstorming as a selectable built-in composition
- Add .changeset/fn-7584-brainstorming-builtin.md (minor, feature)
Files changed:
.changeset/fn-7584-brainstorming-builtin.md | 7 ++
docs/workflow-steps.md | 2 +-
.../builtin-brainstorming-workflow-ir.test.ts | 79 ++++++++++++++++
.../core/src/__tests__/builtin-workflows.test.ts | 66 +++++++++++++
.../core/src/builtin-brainstorming-workflow-ir.ts | 103 +++++++++++++++++++++
packages/core/src/builtin-workflows.ts | 46 +++++++++
.../app/components/WorkflowNodeEditor.tsx | 18 +++-
7 files changed, 319 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7584
Fusion-Task-Lineage: 2c0258c2-9a35-403a-8688-ee49393a7231
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-05 11:31:48 -07:00
gsxdsm
42bbe58c03
FN-7579: add ask-user and exit-gate workflow nodes
...
Add workflow nodes for mid-flow user reach-out and early exit from a workflow run.
- Add `ask-user` IR node kind that reuses the await-input park/resume mechanism and surfaces the question in the task chat for brainstorming/clarification.
- Add `exit-gate` IR node kind that terminates the workflow early, with an optional condition.
- Wire both node kinds through the engine executor and workflow-node-handlers, including a new exit-gate-runner.
- Update the WorkflowNodeEditor palette, node summaries, and node help text for the two new node types.
- Extend workflow-flow-mapping to support the new node kinds.
- Keep `prompt`+`awaitInput` as a back-compat alias.
- Add core/engine/dashboard tests covering the new node kinds.
- Document the new nodes in docs/workflow-steps.md.
- Add changeset for the new minor feature.
Files changed:
.changeset/fn-7579-ask-user-exit-gate-nodes.md | 7 +
docs/workflow-steps.md | 28 ++++
packages/core/src/__tests__/workflow-ir.test.ts | 120 ++++++++++++++
packages/core/src/workflow-ir-types.ts | 12 +-
packages/core/src/workflow-ir.ts | 47 ++++++
.../app/components/WorkflowNodeEditor.tsx | 181 ++++++++++++++++++++-
.../app/components/__tests__/node-summary.test.ts | 43 +++++
.../__tests__/workflow-flow-mapping.test.ts | 49 ++++++
.../app/components/nodes/WorkflowNodeTypes.tsx | 14 +-
.../dashboard/app/components/nodes/node-help.ts | 24 +++
.../dashboard/app/components/nodes/node-summary.ts | 28 ++++
.../app/components/workflow-flow-mapping.ts | 4 +
.../workflow-graph-executor-handlers.test.ts | 115 +++++++++++++
.../src/__tests__/workflow-node-handlers.test.ts | 66 ++++++++
packages/engine/src/executor.ts | 23 ++-
packages/engine/src/workflow-node-handlers.ts | 18 +-
.../src/workflow-node-runners/exit-gate-runner.ts | 81 +++++++++
17 files changed, 849 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7579
Fusion-Task-Lineage: 9a89ff49-200d-4a6c-b97c-15d219349ee5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-05 11:31:48 -07:00
gsxdsm
9592e3ac5c
FN-7569: skip re-asking manual plan approval for unchanged re-specified plans
...
Manual plan approval now skips re-asking for approval when a re-specification produces an identical plan to one already approved.
- Add nullable Task.approvedPlanFingerprint field with DB migration 139 to track the approved PROMPT.md fingerprint
- Skip re-parking at awaiting-approval when replan/plan-review-retry/self-healing rebound yields the same plan fingerprint as before
- Require fresh approval when the plan content changes or when a plan is rejected
- Leave Release Authorization, Workflow Plan Review, and auto-approve-all behavior unchanged
- Add/extend tests across core (db, plan-approval, store-persistence), engine (triage), and dashboard (routes-github) to cover fingerprint comparison and idempotent re-approval
- Update docs (settings-reference.md, workflow-steps.md) to describe the idempotent approval behavior
- Add changeset for @runfusion/fusion (patch)
Files changed:
.changeset/fn-7569-plan-approval-idempotent.md | 7 +
docs/settings-reference.md | 2 +-
docs/workflow-steps.md | 2 +
packages/core/src/__tests__/db.test.ts | 54 +++++++
packages/core/src/__tests__/plan-approval.test.ts | 31 +++-
.../core/src/__tests__/store-persistence.test.ts | 39 +++++
packages/core/src/db.ts | 22 ++-
packages/core/src/index.ts | 2 +-
packages/core/src/plan-approval.ts | 23 +++
packages/core/src/store.ts | 20 ++-
packages/core/src/types.ts | 13 ++
.../dashboard/src/__tests__/routes-github.test.ts | 69 +++++++-
.../src/routes/register-task-workflow-routes.ts | 37 ++++-
packages/engine/src/__tests__/triage.test.ts | 178 ++++++++++++++++++++-
packages/engine/src/triage.ts | 58 +++++--
15 files changed, 527 insertions(+), 30 deletions(-)
Fusion-Task-Id: FN-7569
Fusion-Task-Lineage: 7d3855ae-6f45-4571-90db-cf1ae3b541dd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-05 11:31:46 -07:00
gsxdsm
6e4c207a7f
FN-7559: disambiguate release-authorization holds from manual plan-approval holds
...
Disambiguate release-authorization approval holds from manual plan-approval holds so auto-approve no longer appears broken.
- Add `Task.awaitingApprovalReason` (`"release-authorization" | null`) to distinguish the release-authorization gate from the independent manual plan-approval gate, both of which set `status: "awaiting-approval"`.
- Stamp `awaitingApprovalReason: "release-authorization"` when the release gate blocks a task, and explicitly clear it (`null`) when the manual plan-approval gate parks the task, so a stale reason never survives a replan.
- Add DB migration/persistence support for the new column in `db.ts`/`store.ts`/`types.ts`.
- TaskCard/TaskDetailModal now render a distinct status for release-authorization holds and suppress the generic manual Approve/Reject affordance for them.
- Add i18n string and docs updates (`settings-reference.md`, `workflow-steps.md`) plus a changeset.
- Extend regression tests in db, triage, TaskCard, and TaskDetailModal to cover the new reason field and disambiguated UI.
Files changed:
$(git diff --cached --stat)
Fusion-Task-Id: FN-7559
Fusion-Task-Lineage: 0b37cbf0-40a4-4165-8088-482ed365ba19
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-05 11:31:44 -07:00
gsxdsm
12a6d1bc6a
FN-7511: add planner overseer stage monitoring
...
Add records-only planner overseer monitoring across in-flight task lifecycle stages.
- Add a PlannerOverseerMonitor with normalized observations and deterministic watched-stage resolution.
- Wire ProjectEngine to poll in-progress and in-review tasks, gated by effective planner oversight level.
- Document the monitoring seam and add focused coverage plus a release changeset.
Files changed:
.changeset/fn-7511-planner-overseer-monitoring.md | 7 +
docs/architecture.md | 26 ++
docs/workflow-steps.md | 2 +
.../engine/src/__tests__/planner-overseer.test.ts | 294 ++++++++++++++++++
packages/engine/src/index.ts | 12 +
packages/engine/src/planner-overseer.ts | 338 +++++++++++++++++++++
packages/engine/src/project-engine.ts | 93 +++++-
7 files changed, 771 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7511
Fusion-Task-Lineage: 81b616cf-47e9-4769-b02d-fc7ebd3fcb2f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 12:55:25 -07:00
gsxdsm
0689250097
FN-7510: default planner oversight to autonomous
...
Enable full planner steering/control by default while preserving explicit workflow and task opt-outs.
- Document that planner oversight resolves as task override, workflow setting, then autonomous default.
- Add regression coverage for built-in workflow defaults, stored workflow overrides, and per-task overrides.
- Add a minor changeset for the published Fusion package.
Files changed:
.changeset/fn-7510-oversight-default.md | 7 ++
docs/workflow-steps.md | 9 ++-
.../plannerOversightLevel-default.test.ts | 79 ++++++++++++++++++++++
3 files changed, 93 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7510
Fusion-Task-Lineage: 2dbf8273-4239-4754-9713-e089f75be930
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 12:38:14 -07:00
gsxdsm
68f5153e17
FN-7508: add planner oversight workflow setting
...
Declare a workflow-native planner oversight level with release notes and docs.
- Add the plannerOversightLevel enum setting with Off, Observe, Steer, and Autonomous recovery values.
- Export the oversight settings catalog and include it in built-in workflow defaults.
- Cover consistency, resolver defaults, and catalog membership with core tests.
- Document the workflow setting and add the published package changeset.
Files changed:
.../fn-7508-planner-oversight-level-setting.md | 7 +++++
docs/settings-reference.md | 8 ++++--
docs/workflow-steps.md | 17 +++++++-----
.../builtin-workflow-settings-triage.test.ts | 32 ++++++++++++++++++++++
.../src/__tests__/settings-consistency.test.ts | 4 ++-
.../__tests__/workflow-settings-resolver.test.ts | 1 +
packages/core/src/builtin-workflow-settings.ts | 26 ++++++++++++++++++
packages/core/src/index.ts | 1 +
8 files changed, 86 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7508
Fusion-Task-Lineage: 1adc7ce6-9e0e-475e-956a-ee36edae0cdc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 11:26:31 -07:00
gsxdsm
8668a053dc
FN-7491: add workflow toggle for proactive triage splitting
...
Add a workflow-scoped policy switch so operators can keep large triage tasks intact unless subtask splitting is explicitly requested.
- Define triageProactiveSubtaskSplittingEnabled with default-on workflow settings, display formatting, and prompt rendering.
- Preserve mandatory breakIntoSubtasks behavior while disabling automatic oversized-task decomposition when the setting is false.
- Cover the new policy in core, engine, and dashboard tests plus settings/workflow docs and a changeset.
Files changed:
.changeset/FN-7491-triage-splitting-setting.md | 7 +++
docs/settings-reference.md | 6 +++
docs/workflow-steps.md | 10 ++--
packages/core/src/__tests__/agent-prompts.test.ts | 17 ++++--
.../builtin-workflow-settings-triage.test.ts | 23 ++++++++
packages/core/src/agent-prompts.ts | 27 ++--------
packages/core/src/builtin-workflow-settings.ts | 44 ++++++++++++++++
.../__tests__/WorkflowSettingsPanel.test.tsx | 53 +++++++++++++++++++
.../app/components/workflow-setting-display.ts | 10 ++++
.../__tests__/triage-threshold-settings.test.ts | 28 ++++++++++
packages/engine/src/__tests__/triage.test.ts | 61 +++++++++++++++++++---
11 files changed, 250 insertions(+), 36 deletions(-)
Fusion-Task-Id: FN-7491
Fusion-Task-Lineage: c982455a-685c-4ce2-8e33-6d1a7bb9d154
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
0f05156cb7
FN-7482: recover retryable review remediation failures
...
Recover retryable Code Review remediation failures so review tasks do not remain stranded after graph restarts.
- Route retryable pre-merge remediation graph failures back through the existing fix-pass handoff when durable failed gate evidence remains.
- Let self-healing revive parked Code Review and browser-verification remediation failures while excluding Plan Review replan failures and exhausted numeric caps.
- Document the remediation recovery behavior and add targeted executor/self-healing regression coverage.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7482-code-review-remediation.md | 7 ++
docs/workflow-steps.md | 7 +-
.../__tests__/executor-graph-requeue-gate.test.ts | 129 ++++++++++++++++++++-
packages/engine/src/__tests__/self-healing.test.ts | 129 +++++++++++++++++++++
packages/engine/src/executor.ts | 101 ++++++++++++++++
packages/engine/src/self-healing.ts | 24 +++-
6 files changed, 387 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7482
Fusion-Task-Lineage: 0f178ab6-308e-4587-b5f3-be4e621799a0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:47:00 -07:00
gsxdsm
d94c3591d3
FN-7381: honor project auto plan approval
...
Honor project-level auto plan approval across fresh and recovered triage finalization.
- Merge effective workflow settings during approved-task recovery before resolving the manual plan approval gate.
- Keep release authorization and Workflow Plan Review independent from manual plan approval bypasses.
- Add regression coverage for stored workflow approval settings overridden by project auto approval.
- Document the planApprovalMode precedence and release the fix as a patch.
Files changed:
.changeset/fn-7381-auto-plan-approval.md | 7 ++++
docs/settings-reference.md | 2 +-
docs/workflow-steps.md | 2 ++
.../src/__tests__/effective-settings-merge.test.ts | 12 +++++++
.../triage-plan-review-unavailable-retry.test.ts | 27 +++++++++++++-
packages/engine/src/__tests__/triage.test.ts | 42 ++++++++++++++++++++++
packages/engine/src/triage.ts | 13 ++++---
7 files changed, 99 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7381
Fusion-Task-Lineage: c00fd0d9-ec0a-4dc5-8d6f-b49640157365
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:49:58 -07:00
gsxdsm
3a2f3b5ade
refactor(workflow): extract node runner boundaries
2026-07-01 00:51:01 -07:00
gsxdsm
7e74fe3a9b
FN-7293: honor workflow review revision overrides
...
Allow workflow review steps to opt into unbounded or capped revision retries while keeping recovery caps accurate.
- Add workflow settings for Plan Review and Code Review max revisions with display, docs, and changeset coverage.
- Resolve optional-step revision budgets through workflow settings, node overrides, and existing fallback limits.
- Track revision attempts per workflow step and hydrate slim self-healing rows before enforcing retry caps.
- Cover unbounded, capped, per-step, and slim-row recovery behavior with focused tests.
Files changed:
.changeset/fn-7293-unbounded-review-revisions.md | 7 +
docs/settings-reference.md | 12 +-
docs/workflow-editor.md | 4 +-
docs/workflow-steps.md | 3 +-
.../builtin-workflow-settings-triage.test.ts | 28 +++-
.../core/src/__tests__/builtin-workflows.test.ts | 29 ++++-
.../__tests__/workflow-settings-resolver.test.ts | 73 +++++++++++
packages/core/src/builtin-plan-review-group.ts | 6 +-
packages/core/src/builtin-workflow-settings.ts | 30 +++++
packages/core/src/index.ts | 5 +
packages/core/src/workflow-ir-types.ts | 15 ++-
packages/core/src/workflow-ir.ts | 5 +-
packages/core/src/workflow-settings-resolver.ts | 49 ++++++-
.../__tests__/WorkflowSettingsPanel.test.tsx | 52 ++++++++
.../app/components/workflow-setting-display.ts | 18 +++
packages/engine/src/__tests__/self-healing.test.ts | 143 ++++++++++++++++++++-
.../workflow-graph-optional-step-fix.test.ts | 130 ++++++++++++++++++-
packages/engine/src/executor.ts | 77 +++++++++--
packages/engine/src/self-healing.ts | 82 ++++++++++--
packages/engine/src/workflow-graph-executor.ts | 5 +-
20 files changed, 725 insertions(+), 48 deletions(-)
Fusion-Task-Id: FN-7293
Fusion-Task-Lineage: 19ee533f-ab8d-4e20-9a27-9cf0cf6dfec9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 13:12:27 -07:00
gsxdsm
01e04333ce
FN-7294: pass user context into workflow reviewers
...
Pass operator-authored task context into reviewer and workflow gate prompts.
- Include de-duped user comments and legacy steering in Plan Review, code review, and workflow-step prompt agents.
- Preserve reviewer comment context on reduced context-limit retry prompts and refresh comments before in-session review calls.
- Document workflow prompt-agent comment behavior, add regression coverage, and add a patch changeset.
Files changed:
.changeset/FN-7294-reviewer-comment-context.md | 7 +
docs/workflow-steps.md | 7 +
.../src/__tests__/agent-user-comments.test.ts | 81 ++++++++--
.../executor-review-step-indexing.test.ts | 165 ++++++++++++++++++++-
.../src/__tests__/reviewer-workspace.test.ts | 39 +++++
packages/engine/src/__tests__/reviewer.test.ts | 26 +++-
packages/engine/src/__tests__/triage.test.ts | 49 ++++++
packages/engine/src/agent-user-comments.ts | 42 ++++--
packages/engine/src/executor.ts | 31 +++-
packages/engine/src/reviewer.ts | 10 +-
packages/engine/src/triage.ts | 20 ++-
11 files changed, 443 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-7294
Fusion-Task-Lineage: ea5ff33e-99ba-4fdd-9257-9778849b91bb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 12:56:03 -07:00
gsxdsm
3cd5695f52
FN-7288: remove quick-add Plan buttons
...
Remove quick-add planning buttons from board create surfaces while preserving other planning entry points.
- Remove the Plan button, icon imports, handlers, test id, disabled state, tooltip, and click targets from QuickEntryBox and InlineCreateCard.
- Update quick-add and mobile board tests to assert the Plan affordance is absent while task creation and Subtask behavior remain available.
- Refresh dashboard docs and add a patch changeset describing the quick-add Plan removal.
Files changed:
.changeset/fn-7288-remove-quick-add-plan-button.md | 7 +
docs/dashboard-guide.md | 4 +-
docs/getting-started.md | 2 +-
docs/workflow-steps.md | 2 +-
.../dashboard/app/components/InlineCreateCard.tsx | 38 +---
.../dashboard/app/components/QuickEntryBox.tsx | 38 +---
.../components/__tests__/InlineCreateCard.test.tsx | 56 +++---
.../components/__tests__/QuickEntryBox.test.tsx | 196 +++++----------------
.../app/components/__tests__/board-mobile.test.tsx | 6 +-
9 files changed, 97 insertions(+), 252 deletions(-)
Fusion-Task-Id: FN-7288
Fusion-Task-Lineage: b4a5d6b6-83e7-4b0c-a38d-6ff36d8cd97e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 10:40:49 -07:00
gsxdsm
7eca99c8b1
FN-7283: clear optional workflow steps in fast mode
...
Fast mode now treats optional workflow steps as opt-out by default while preserving manual reselection.
- Clear default-on optional workflow steps when switching task creation forms into Fast mode.
- Submit explicit empty optional-step selections in Fast mode to prevent store defaults from reappearing.
- Allow explicitly enabled optional workflow groups to run under Fast mode and during recovery.
- Document the Fast-mode optional-step contract and add regression coverage for dashboard and engine flows.
Files changed:
.changeset/FN-7283-fast-mode-optional-steps.md | 7 ++
docs/workflow-steps.md | 15 ++-
packages/dashboard/app/components/NewTaskModal.tsx | 27 +++--
.../dashboard/app/components/QuickEntryBox.tsx | 29 ++++-
packages/dashboard/app/components/TaskForm.tsx | 42 +++++--
.../app/components/__tests__/NewTaskModal.test.tsx | 58 +++++++++
.../components/__tests__/QuickEntryBox.test.tsx | 84 +++++++++++++
.../app/components/__tests__/TaskForm.test.tsx | 85 ++++++++++++-
.../__tests__/executor-fast-mode-workflows.test.ts | 134 +++++++++++++++++++++
packages/engine/src/executor.ts | 107 ++++++++++------
packages/engine/src/workflow-graph-executor.ts | 14 ++-
11 files changed, 539 insertions(+), 63 deletions(-)
Fusion-Task-Id: FN-7283
Fusion-Task-Lineage: e7028af8-3d05-4db7-8db9-a16c7f7575de
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 09:46:26 -07:00
gsxdsm
f01e5c9651
FN-7247: document current workflow behavior
...
Refresh workflow documentation to match the latest runtime, dashboard, and agent tool behavior.
- Add a current workflow behavior inventory covering built-ins, fail-closed runtime semantics, optional gates, settings, tools, routing, and create forwarding.
- Clarify dashboard All workflows aggregation, workflow badges, and workflow-aware task creation behavior.
- Expand editor, agent, CLI, and settings docs for governed workflow authoring, values, trait inspection, and selection boundaries.
- Add docs drift tests requiring workflow docs index coverage and current behavior markers.
Files changed:
docs/agents.md | 5 +-
docs/cli-reference.md | 11 ++-
docs/dashboard-guide.md | 10 ++-
docs/settings-reference.md | 5 ++
docs/workflow-editor.md | 15 +++-
docs/workflow-steps.md | 48 ++++++++---
.../cli/src/__tests__/docs-readme-index.test.ts | 4 +
.../src/__tests__/workflow-docs-current.test.ts | 95 ++++++++++++++++++++++
8 files changed, 172 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-7247
Fusion-Task-Lineage: 72bf0c89-80a3-440c-b6aa-1aea315279f5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 19:46:23 -07:00
gsxdsm
90b62b7884
FN-7246: preserve explicit empty step dependencies
...
Preserve authored empty workflow step dependencies so parallel roots remain independent.
- Keep parser and TaskStep projections from dropping explicit empty dependsOn arrays.
- Treat missing dependsOn as the legacy previous-step fallback while allowing [] to mean no dependencies.
- Cover heading and JSON parsers plus parallel foreach scheduling with regression tests and docs.
Files changed:
.changeset/fn-7246-workflow-depends-on-empty.md | 7 +++++++
docs/workflow-steps.md | 4 ++--
packages/core/src/__tests__/step-parsers.test.ts | 8 ++++----
packages/core/src/step-parsers.ts | 30 +++++++++++++++++++++---------
packages/core/src/types.ts | 13 +++++++++----
packages/engine/src/__tests__/workflow-parse-steps.test.ts | 12 ++++++++++++
packages/engine/src/__tests__/workflow-step-parallel.test.ts | 30 +++++++++++++++++++++++++++++-
packages/engine/src/workflow-graph-foreach.ts | 9 +++++++--
packages/engine/src/workflow-node-handlers.ts | 6 +++++-
9 files changed, 96 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7246
Fusion-Task-Lineage: a75687fa-5711-4509-b60f-43669323a6c0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 18:05:44 -07:00
gsxdsm
6f2b8ab6e5
FN-7244: retry unavailable Plan Review without replanning
...
Preserve existing task specs when Plan Review retries after reviewer outages.
- Route plan-review-unavailable triage tasks through the Plan Review/finalization path instead of the planner.
- Validate existing PROMPT.md content and fail clearly when it is missing, empty, or invalid.
- Preserve retry status across interrupted triage work and cover retry behavior with engine tests.
- Document the retry lifecycle and add a patch changeset.
Files changed:
.../fn-7244-plan-review-unavailable-retry.md | 7 +
docs/architecture.md | 2 +
docs/workflow-steps.md | 2 +
.../triage-plan-review-unavailable-retry.test.ts | 251 +++++++++
packages/engine/src/__tests__/triage.test.ts | 604 +++++++++++++++++++++
packages/engine/src/triage.ts | 108 +++-
6 files changed, 945 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-7244
Fusion-Task-Lineage: 80e790e3-d2b9-4309-beec-3dbf6a03db39
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 17:40:00 -07:00
gsxdsm
42226edde1
FN-7245: expose workflow authoring tools to agents
...
Expose workflow authoring and selection tools through agent-visible extension surfaces.
- Register workflow list/get/create/update/delete/settings/select and trait-list tools in the published pi extension.
- Export shared workflow tool schemas/factories and include workflow settings in centralized authoring tool sets.
- Update action-gate classifications, permission examples, docs, tests, and the changeset for the new agent workflow surface.
Files changed:
.changeset/FN-7245-workflow-tools.md | 7 +
docs/agents.md | 4 +-
docs/cli-reference.md | 17 ++
docs/workflow-steps.md | 9 +-
.../src/__tests__/extension-workflow-tools.test.ts | 244 +++++++++++++++++++++
packages/cli/src/__tests__/extension.test.ts | 8 +
packages/cli/src/extension.ts | 142 ++++++++++++
packages/core/src/types.ts | 6 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 9 +-
.../planning-document-tools-exposure.test.ts | 19 +-
.../engine/src/__tests__/agent-action-gate.test.ts | 8 +
.../agent-workflow-tools-exposure.test.ts | 30 ++-
.../src/__tests__/gating-classifications.test.ts | 13 +-
.../src/__tests__/permanent-agent-gating.test.ts | 4 +-
packages/engine/src/agent-tools.ts | 13 +-
packages/engine/src/gating-classifications.ts | 6 +-
packages/engine/src/index.ts | 7 +
17 files changed, 506 insertions(+), 40 deletions(-)
Fusion-Task-Id: FN-7245
Fusion-Task-Lineage: 82501602-7177-4ee8-a67b-32de35aa73de
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 16:35:51 -07:00
gsxdsm
138d6447fb
fix(workflows): address review feedback on recovery and docs
2026-06-29 00:10:27 -07:00
gsxdsm
d1caa3bdbf
test(workflows): cover coding optional gates
2026-06-28 23:45:32 -07:00
gsxdsm
d4b8032f28
feat(workflows): add optional plan review gate
2026-06-28 23:38:33 -07:00
gsxdsm
6ce0b44058
feat(workflows): make coding stepwise with final review
2026-06-28 23:24:29 -07:00
gsxdsm
ac4c3b7a01
FN-7192: Document custom workflow capacity dispatch
...
Clarify the custom workflow migration boundary and lock dispatch behavior with tests.
- Document that pure-v1 custom workflows keep trait-less default columns for rollback compatibility.
- Show the v2 hold(capacity) and wip traits required for custom workflow capacity dispatch.
- Add core and engine regression coverage for pure-v1 stranding and authored-v2 release behavior.
Files changed:
docs/workflow-editor.md | 34 +++++
docs/workflow-steps.md | 40 ++++++
.../__tests__/custom-v1-workflow-dispatch.test.ts | 154 +++++++++++++++++++++
packages/engine/src/__tests__/hold-release.test.ts | 81 ++++++++++-
4 files changed, 306 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7192
Fusion-Task-Lineage: ff7af258-c0cb-4b81-8919-9e076c3ac1df
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 09:59:57 -07:00
gsxdsm
631e8fc675
FN-7159: add canonical CE HTML checklist repair
...
Enable CE HTML document review to safely canonicalize malformed checklists.
- Add a DOM-safe checklist-repair operation that rewrites provable markdown-marker and checkbox list shapes into canonical CE checklist HTML.
- Refuse ambiguous, nested, state-bearing, or protected checklist-like markup while preserving report-only fallback semantics.
- Expand HTML mutation and CE doc-review tests plus operator docs and rendering guidance for the canonical checklist contract.
Files changed:
.changeset/fn-7159-canonical-html-checklist.md | 7 +
docs/workflow-editor.md | 2 +-
docs/workflow-steps.md | 5 +-
.../src/__tests__/ce-doc-review-html-mode.test.ts | 6 +-
.../src/artifacts/__tests__/html-mutation.test.ts | 135 ++++++++++++++-
.../src/artifacts/html-mutation.ts | 186 ++++++++++++++++++++-
.../ce-brainstorm/references/html-rendering.md | 31 ++++
.../src/skills/ce-doc-review/SKILL.md | 13 +-
.../skills/ce-ideate/references/html-rendering.md | 31 ++++
.../skills/ce-plan/references/html-rendering.md | 31 ++++
10 files changed, 436 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7159
Fusion-Task-Lineage: bbde7003-2942-4363-98d5-53bc3a5976b8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 09:20:17 -07:00
gsxdsm
fb509b1ed3
FN-7190: fix linear built-in workflow dispatch
...
Ensure selectable linear built-in workflows carry the default queue traits needed for Todo release.
- Convert linear built-in workflow IR to v2 with cloned canonical coding workflow columns.
- Guard synthesized linear built-ins so todo retains hold-capacity dispatch traits.
- Cover quick-fix, review-heavy, design, and compound-engineering Todo release behavior with regression tests.
- Document that selectable built-ins dispatch through capacity-released queue columns.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7190-linear-builtin-todo-hold.md | 7 ++
docs/workflow-editor.md | 2 +-
docs/workflow-steps.md | 5 +
.../core/src/__tests__/builtin-workflows.test.ts | 110 +++++++++++++++++++++
packages/core/src/builtin-workflows.ts | 46 ++++++---
packages/engine/src/__tests__/hold-release.test.ts | 28 ++++++
6 files changed, 181 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-7190
Fusion-Task-Lineage: a0a40365-4bd5-49a8-8ae4-5e313cf1d4e0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 08:19:01 -07:00
gsxdsm
fecb27e768
FN-7149: add DOM-safe CE HTML mutation
...
Add a parse5-backed mutation path for CE HTML artifacts with docs and validation coverage.
- Add safe CE HTML mutation helpers for open-question append, heading repair, whitespace normalization, visible-text replacement, atomic writes, and rollback on validation failure.
- Cover DOM mutation behavior and ce-doc-review HTML-mode expectations with focused tests.
- Update CE skill/reference guidance and workflow docs to require DOM-safe artifact edits with report-only fallback.
- Add parse5 to the compound engineering plugin and record the published CLI changeset.
Files changed:
.changeset/fn-7149-dom-safe-html-mutation.md | 7 +
docs/workflow-editor.md | 2 +-
docs/workflow-steps.md | 10 +-
.../package.json | 1 +
.../src/__tests__/ce-doc-review-html-mode.test.ts | 38 +-
.../src/artifacts/__tests__/html-mutation.test.ts | 228 +++++++++
.../src/artifacts/html-mutation.ts | 519 +++++++++++++++++++++
.../src/skills/ce-brainstorm/references/handoff.md | 12 +-
.../ce-brainstorm/references/html-rendering.md | 12 +-
.../src/skills/ce-doc-review/SKILL.md | 20 +-
.../skills/ce-ideate/references/html-rendering.md | 12 +-
.../src/skills/ce-plan/SKILL.md | 18 +-
.../skills/ce-plan/references/html-rendering.md | 16 +-
.../src/skills/ce-plan/references/plan-handoff.md | 24 +-
pnpm-lock.yaml | 3 +
15 files changed, 853 insertions(+), 69 deletions(-)
Fusion-Task-Id: FN-7149
Fusion-Task-Lineage: eaf84a8b-a52b-487d-9517-22e4499e8af7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 08:03:32 -07:00
gsxdsm
987abc763b
FN-7162: reopen actionable steps after review bounces
...
Post-verdict remediation now resumes executable work before rechecking optional gates.
- Reopen the terminal verification/delivery suffix together with the nearest actionable implementation step for revision bounces.
- Cover Code Review, Browser Verification, gate-promoted revisions, and non-revision optional outcomes with regression tests.
- Document post-verdict bounce semantics and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7162-post-verdict-bounce-step-completion.md | 7 ++
docs/workflow-steps.md | 9 +-
packages/engine/src/__tests__/executor-step-session.test.ts | 117 +++++++++++++++++++--
packages/engine/src/__tests__/workflow-graph-optional-step-fix.test.ts | 60 +++++++++++
packages/engine/src/executor.ts | 51 +++++++--
5 files changed, 222 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-7162
Fusion-Task-Lineage: 8d422fc9-54e8-431d-97bb-e7a4a6763eaa
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 23:01:10 -07:00
gsxdsm
7ebf58ee3b
FN-7147: add report-only HTML CE doc review
...
Enable CE document review to inspect HTML artifacts without mutating generated plans.
- Expand ce-doc-review guidance to accept markdown and HTML plan artifacts, keeping autofix/write-back only for markdown.
- Update ce-plan and brainstorm handoffs so HTML plans route through report-only findings instead of skipped-review envelopes.
- Add regression coverage that rejects legacy HTML-skip wording across the edited CE review surfaces.
- Document the compound-engineering workflow behavior and add the release changeset.
Files changed:
.changeset/fn-7147-html-aware-ce-doc-review.md | 7 ++
docs/workflow-editor.md | 2 +-
docs/workflow-steps.md | 4 +-
.../src/__tests__/ce-doc-review-html-mode.test.ts | 81 ++++++++++++++++++++++
.../src/skills/ce-brainstorm/references/handoff.md | 26 ++++---
.../ce-brainstorm/references/html-rendering.md | 20 +++---
.../src/skills/ce-doc-review/SKILL.md | 37 ++++++----
.../skills/ce-ideate/references/html-rendering.md | 20 +++---
.../src/skills/ce-plan/SKILL.md | 25 ++++---
.../skills/ce-plan/references/html-rendering.md | 18 ++---
.../src/skills/ce-plan/references/plan-handoff.md | 37 +++++-----
11 files changed, 196 insertions(+), 81 deletions(-)
Fusion-Task-Id: FN-7147
Fusion-Task-Lineage: 1f710dd9-ced7-4026-bc74-55a4160cb1bd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 18:33:02 -07:00
gsxdsm
d4137f1abc
FN-7144: complete compound engineering workflow audit
...
Adds the missing CE document-review stage and tightens workflow docs, compilation, and tests.
- Add optional advisory ce-doc-review support to the compound engineering built-in workflow.
- Register and document the compound-engineering ce-doc-review skill for markdown CE plan review.
- Preserve optional-group workflow semantics when compiling legacy steps and cover the CE workflow seams with tests.
- Update operator docs and add a published package changeset.
Files changed:
.changeset/fn-7144-compound-engineering-audit.md | 7 +++
docs/workflow-editor.md | 2 +-
docs/workflow-steps.md | 4 +-
.../core/src/__tests__/builtin-workflows.test.ts | 29 +++++++++-
packages/core/src/builtin-workflows.ts | 62 ++++++++++++++++++++--
packages/core/src/workflow-compiler.ts | 3 +-
.../__tests__/ce-workflow-step-conventions.test.ts | 8 +++
.../src/__tests__/interpreter-merge-seam.test.ts | 3 +-
.../src/__tests__/manifest.test.ts | 1 +
.../src/skills.ts | 13 +++++
.../src/skills/ce-doc-review/SKILL.md | 54 +++++++++++++++++++
11 files changed, 175 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7144
Fusion-Task-Lineage: bedbfad4-d6e8-489e-a555-803991a1ad54
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 17:40:42 -07:00
gsxdsm
13d97b7c33
FN-7145: verify CE workflow skill loading
...
Add coverage and documentation for skill-backed workflow step loading.
- Derive compound-engineering skill-step expectations from the built-in workflow definition.
- Assert every skill-backed step requests namespaced and bare skills and uses injected CE skill paths.
- Cover missing FUSION_CE_SKILLS_DIR warnings, skill-less steps, and toolMode-independent skill loading.
- Document the skill-backed workflow execution invariant.
Files changed:
docs/workflow-steps.md | 9 ++
.../__tests__/ce-workflow-step-executor.test.ts | 112 +++++++++++++++++++--
2 files changed, 115 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7145
Fusion-Task-Lineage: 1a344fa7-fa0c-4f04-af5a-1a90d48cd34c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 17:17:28 -07:00
gsxdsm
a593cc7428
FN-7130: require agent-browser for browser verification
...
Browser Verification steps now explicitly request and log agent-browser usage.
- Mark the built-in browser verification workflow step as browser-required and document that it runs through agent-browser.
- Add executor helpers to inject the agent-browser skill, probe CLI availability, and log start/finish outcomes.
- Cover workflow metadata, browser verification execution logging, availability probing, and skill augmentation with tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.../fn-7130-browser-verification-agent-browser.md | 7 +
docs/workflow-steps.md | 4 +-
.../__tests__/builtin-coding-workflow-ir.test.ts | 23 ++
.../core/src/__tests__/builtin-workflows.test.ts | 12 +
.../core/src/builtin-browser-verification-group.ts | 4 +
packages/core/src/types.ts | 7 +
...iltin-coding-browser-verification-group.test.ts | 8 +-
.../executor-browser-verification.test.ts | 267 +++++++++++++++++++++
packages/engine/src/executor.ts | 118 +++++++++
9 files changed, 447 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7130
Fusion-Task-Lineage: 3a76522e-70e1-4445-ad18-b9e1b9b355fc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 14:27:06 -07:00
gsxdsm
39d20be05f
FN-7129: add per-step optional revision budgets
...
Add optional workflow-step revision budgets that can cap or unbound remediation loops.
- Add optional-group maxRevisions parsing, validation, exports, and docs.
- Expose numeric and unbounded revision budget controls in the workflow node editor.
- Apply per-step budgets in executor and self-healing fix loops with regression coverage.
Files changed:
.changeset/fn-7129-per-step-revision-budget.md | 7 ++
docs/dashboard-guide.md | 1 +
docs/settings-reference.md | 2 +-
docs/workflow-steps.md | 10 ++-
.../__tests__/workflow-ir-optional-group.test.ts | 29 ++++++-
packages/core/src/index.ts | 2 +
packages/core/src/workflow-ir-types.ts | 37 +++++++++
packages/core/src/workflow-ir.ts | 15 ++++
.../app/components/WorkflowNodeEditor.tsx | 87 ++++++++++++++++----
.../__tests__/WorkflowNodeEditor.test.tsx | 95 ++++++++++++++++++++++
packages/engine/src/__tests__/self-healing.test.ts | 63 ++++++++++++++
.../workflow-graph-optional-group.test.ts | 30 ++++++-
.../workflow-graph-optional-step-fix.test.ts | 53 ++++++++++++
packages/engine/src/executor.ts | 15 ++--
packages/engine/src/self-healing.ts | 64 +++++++++++----
packages/engine/src/workflow-graph-executor.ts | 6 +-
16 files changed, 469 insertions(+), 47 deletions(-)
Fusion-Task-Id: FN-7129
Fusion-Task-Lineage: dbde94e5-3c99-4f67-aed9-458563e845ae
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 13:05:50 -07:00
gsxdsm
68282769e6
FN-7128: raise optional-step fix cycle budget
...
Code Review and Browser Verification now rerun through bounded fix passes until they pass.
- Raise the shared maxPostReviewFixes default and fallbacks from 1 to 3.
- Document the built-in optional-step fix cycle and release-note the operator-facing behavior.
- Update workflow graph, settings, and fallback tests for repeated optional-step remediation.
Files changed:
.changeset/fn-7128-optional-step-cycle-default.md | 7 ++
docs/settings-reference.md | 2 +-
docs/workflow-steps.md | 2 +-
.../src/__tests__/workflow-ir-settings.test.ts | 2 +-
packages/core/src/builtin-workflow-settings.ts | 8 +-
packages/core/src/types.ts | 8 +-
.../workflow-graph-optional-group.test.ts | 112 +++++++++++++++++----
.../workflow-graph-optional-step-fix.test.ts | 35 +++++++
.../workflow-settings-fallback-alignment.test.ts | 2 +-
packages/engine/src/executor.ts | 2 +-
packages/engine/src/self-healing.ts | 4 +-
11 files changed, 152 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-7128
Fusion-Task-Lineage: 8165f746-3828-453a-8ca4-8134c8d33c8f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 11:42:01 -07:00
gsxdsm
e1dba3fcc9
FN-7113: validate workflow graph integrity before execution
...
Reject malformed workflow graphs at save and run boundaries.
- Add central IR validation for duplicate top-level node ids, unregistered extension keys, and unreachable required nodes.
- Re-validate resolved workflow IR in the graph runner before side effects and fail closed on invalid graphs.
- Expand graph integrity tests and document save/run validation behavior with a release changeset.
Files changed:
.changeset/FN-7113-workflow-graph-integrity.md | 7 +
docs/custom-workflow-reliability-acceptance-map.md | 7 +-
docs/workflow-steps.md | 20 +++
.../workflow-ir-extension-metadata.test.ts | 49 ++++++-
packages/core/src/__tests__/workflow-ir.test.ts | 106 +++++++++++++++-
packages/core/src/workflow-ir.ts | 51 +++++++-
.../__tests__/workflow-graph-task-runner.test.ts | 141 +++++++++++++++++----
packages/engine/src/workflow-graph-task-runner.ts | 46 +++++--
8 files changed, 386 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-7113
Fusion-Task-Lineage: f41e0d81-7cdf-497a-96ab-fe42504d0be4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 09:28:31 -07:00
gsxdsm
e89a58f276
FN-7066: schedule fixes for failed optional steps
...
Route failed pre-merge optional workflow steps back through executor remediation before review/merge.
- Add a graph-executor seam that schedules bounded executor fixes for pre-merge optional REVISE results.
- Track optional-step fix attempts with the existing post-review fix budget before falling back to advisory/gate behavior.
- Cover optional Code Review / Browser Verification fix scheduling and exhausted-budget behavior with engine tests.
- Document the pre-merge remediation semantics and add a release changeset.
Files changed:
.changeset/fn-7066-optional-step-fix.md | 7 +
docs/workflow-steps.md | 11 +-
packages/engine/src/__tests__/self-healing.test.ts | 43 +++++
.../workflow-graph-optional-group.test.ts | 206 +++++++++++++++++++++
.../workflow-graph-optional-step-fix.test.ts | 89 +++++++++
packages/engine/src/executor.ts | 50 ++++-
packages/engine/src/workflow-graph-executor.ts | 29 +++
packages/engine/src/workflow-graph-task-runner.ts | 5 +-
8 files changed, 436 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-7066
Fusion-Task-Lineage: 6b584293-4f2a-4851-a0d7-3ec9e68fe31a
2026-06-26 14:17:07 -07:00
gsxdsm
c0f9f2b4a9
docs(FN-7039): rewrite workflow-steps docs to the graph-native model
...
Reflect the completed cutover: quality gates are optional-group IR nodes (pre- and
post-merge), results live on task.workflowStepResults (graph-written), custom gates are
authored in the Workflow Editor, plugin templates are the palette. Removed docs for the
deleted runWorkflowSteps path, WORKFLOW_STEP_TEMPLATES catalog, /api/workflow-steps CRUD,
Settings → Workflow Steps manager, and the workflow_steps table. Documented
experimentalFeatures.graphNativePostMerge (default-ON) and the FN-4343 per-step scope-gate
follow-up. settings-reference: add graphNativePostMerge, annotate workflowStepScopeEnforcement.
Plan U8.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 02:38:31 -07:00
gsxdsm
541f1f6533
FN-7017: expose optional workflow steps in task creation
...
Surface active workflow optional steps on task creation surfaces so users can opt into workflow-specific steps before creating tasks.
- Add optional-step dropdown state and creation payload handling to quick entry.
- Move New Task optional-step controls into the inline quick-button row.
- Cover default-on, workflow selection, duplicate-confirmed create, empty-step rendering, and mobile touch-target behavior with tests.
- Document create-time optional-step controls and add the published package changeset.
Files changed:
.../fn-7017-optional-steps-quick-dropdown.md | 7 +
docs/dashboard-guide.md | 4 +-
docs/workflow-steps.md | 2 +
.../dashboard/app/components/QuickEntryBox.css | 6 +-
.../dashboard/app/components/QuickEntryBox.tsx | 65 ++++++++-
packages/dashboard/app/components/TaskForm.tsx | 34 ++---
.../app/components/__tests__/NewTaskModal.test.tsx | 21 ++-
.../components/__tests__/QuickEntryBox.test.tsx | 145 ++++++++++++++++++++-
.../app/components/__tests__/TaskForm.test.tsx | 1 +
9 files changed, 258 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-7017
Fusion-Task-Lineage: 1b7d21e6-ff7f-4d27-b285-4fd865eafce6
2026-06-25 19:35:05 -07:00
gsxdsm
eb3833a542
FN-6971: retire dual-observe cutover gating
...
Remove stale dual-observe prerequisites from workflow-authoritative readiness while preserving parity-summary safeguards.
- Require the authoritative flag plus clean populated parity summaries for interpreter cutover readiness.
- Keep persisted workflowInterpreterDualObserve values inert in runtime tests and documentation.
- Update cutover, parity, and graph-executor tests to reflect retired shadow observation behavior.
- Add a formatted patch changeset for the operator-facing cutover readiness fix.
Files changed:
.changeset/fn-6971-workflow-cutover-readiness.md | 7 ++
docs/architecture.md | 2 +-
docs/settings-reference.md | 4 +-
docs/workflow-steps.md | 19 +++--
.../core/src/__tests__/workflow-cutover.test.ts | 19 +++--
packages/core/src/workflow-cutover.ts | 9 +--
.../workflow-interpreter-cutover.test.ts | 87 +++++++++++++++++++---
.../workflow-interpreter-dual-observe.test.ts | 76 ++++++-------------
.../src/__tests__/stepwise-workflow-parity.test.ts | 25 ++++---
.../engine/src/workflow-authoritative-driver.ts | 10 +--
10 files changed, 152 insertions(+), 106 deletions(-)
Fusion-Task-Id: FN-6971
Fusion-Task-Lineage: 363a441d-62e5-403c-9389-75fcf788352a
2026-06-24 23:32:52 -07:00
gsxdsm
c229a15e20
FN-6934: restrict agent workflow reassignment
...
Clarify agent workflow-routing prompts so agents do not reassign tasks they did not create unless directed.
- Add executor guardrails against changing the current task workflow without explicit user instruction.
- Update triage workflow-routing guidance to distinguish existing tasks from agent-created tasks.
- Cover workflow ownership policy in prompt and engine tests, docs, and a patch changeset.
Files changed:
.changeset/fn-6934-workflow-movement-policy.md | 5 +++++
docs/agents.md | 6 ++++++
docs/custom-workflow-reliability-acceptance-map.md | 7 +++++--
docs/settings-reference.md | 9 +++++++--
docs/workflow-steps.md | 9 +++++++--
packages/core/src/__tests__/agent-prompts.test.ts | 15 ++++++++++++++
packages/core/src/agent-prompts.ts | 23 ++++++++++++++++------
.../src/__tests__/executor-review-verdicts.test.ts | 3 +++
.../__tests__/triage-threshold-settings.test.ts | 3 +++
packages/engine/src/__tests__/triage.test.ts | 2 +-
packages/engine/src/executor.ts | 5 +++++
11 files changed, 74 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-6934
Fusion-Task-Lineage: cc583806-b160-4a08-b1a7-e798a575dbd5
2026-06-22 17:58:27 -07:00
gsxdsm
bb663a4705
FN-6906: improve non-coding workflow artifact prompts
...
Non-coding built-in workflows now guide agents toward structured, reviewable artifacts.
- Expand marketing and lead-generation prompts with explicit inputs, output structure, quality bars, and persisted task-document deliverables.
- Require design execution to persist a reviewable preview document and update design review guidance to inspect it.
- Document the new artifact-oriented behavior and cover prompt routing with regression tests while preserving coding workflow defaults.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-6906-non-coding-workflow-prompts.md | 5 +++++
docs/workflow-steps.md | 11 +++++++----
.../builtin-lead-generation-workflow-ir.test.ts | 2 ++
.../core/src/__tests__/builtin-workflows.test.ts | 22 ++++++++++++++++++++++
.../src/builtin-lead-generation-workflow-ir.ts | 13 ++++++++-----
packages/core/src/builtin-marketing-workflow-ir.ts | 9 ++++++---
packages/core/src/builtin-workflows.ts | 16 ++++++++++++++--
7 files changed, 64 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-6906
Fusion-Task-Lineage: 76f39350-e441-4dde-8571-35a6fbf6fcda
2026-06-21 23:15:46 -07:00