Commit Graph

110 Commits

Author SHA1 Message Date
gsxdsm
6308887b45 FN-8274: fix compound-engineering PostgreSQL test URL derivation
Use the shared PostgreSQL test base URL across Compound Engineering's test harnesses.

- Import the core PostgreSQL URL configuration for admin and integration test connections.
- Add a credential-safe source guard for base URL derivation.
- Declare the shared URL export for Compound Engineering tests.

Files changed:
 .../src/__tests__/_harness.ts                      | 15 ++++----
 .../src/__tests__/base-url-derivation.test.ts      | 42 ++++++++++++++++++++++
 .../src/__tests__/pg-test-harness.d.ts             |  1 +
 .../src/__tests__/pipeline-store.pg.test.ts        | 12 +++----
 4 files changed, 57 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-8274

Fusion-Task-Lineage: 84921b47-4275-4357-9e3a-be025863dbb3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 07:53:32 -07:00
gsxdsm
5c7ed8b26f chore(release): v0.72.0
Version bump via changesets.
2026-07-18 00:52:59 -07:00
gsxdsm
1afce9532a fix: green full-suite after product and CI PG drift (#2285)
## Summary
Main Full Suite was red again after release/desktop workflow drift,
engine mock gaps, mission landed-SHA gating, and compound-engineering PG
admin auth on GHA (`USER=runner`).

## Fixes
| Area | Failure | Fix |
|------|---------|-----|
| desktop `release-workflow` | expected old `find artifacts -type f` |
assert pruned collect + `release-files/*` |
| `step-session-executor` | missing
`resolveExecutorFallbackThinkingLevel` | mock export |
| tool-availability tests | empty tools (cascade from above) | fixed by
mock |
| `skill-resolver` | TDZ on `mockFiles` during import | `vi.hoisted`
filesystem state |
| `merge-error-recovery` | enqueue no-op when not started | set
`started=true` |
| mission behavioral posture | `blocked` (no landed SHA / git probe) |
`mergeDetails.commitSha` + staleness stub |
| GraphTaskNode | missing `useOptionalToast` | mock both toast exports |
| CE `pipeline-store.pg` | psql as `runner` | admin via
`FUSION_PG_TEST_URL_BASE` |

## Test plan
- [x] step-session-executor, skill-resolver, merge-error-recovery,
mission-validator-behavioral-posture (203)
- [x] release-workflow (10)
- [x] `pnpm --filter @fusion/engine test:core` (294)
- [ ] Full Suite (non-blocking) after merge

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Bug Fixes**
- Improved desktop release artifact collection by pruning nested
`runtime` and `migrations` directories and consistently staging release
uploads via a dedicated `release-files` mapping.

- **Tests**
- Enhanced engine merge error-recovery coverage and mission validator
behavioral posture setup.
- Improved test reliability by synchronizing mocked filesystem state,
executor fallbacks, and toast hook variants.
- Updated Postgres test harness/admin commands to use a configurable
base URL; refined related Windows changeset description.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-17 23:22:04 -07:00
gsxdsm
7dda1aa3f5 chore(release): v0.71.0
Version bump via changesets.
2026-07-17 20:13:12 -07:00
gsxdsm
e31223c25f chore(release): v0.70.2
Version bump via changesets.
2026-07-17 19:17:17 -07:00
gsxdsm
eccb115c7e chore(release): v0.70.1
Version bump via changesets.
2026-07-17 18:17:15 -07:00
gsxdsm
f5538e6253 chore(release): v0.70.0
Version bump via changesets.
2026-07-17 17:12:42 -07:00
gsxdsm
a242f1b449 fix(FN-7952): migrate bundled plugins to PostgreSQL (#2111)
## Summary

Bundled plugins now persist shared runtime state in project-scoped
PostgreSQL tables instead of maintaining independent SQLite authority.
Reports, CLI Printing Press, Compound Engineering, Roadmap, Even
Realities, and WhatsApp all follow the same ownership and startup
contract as Fusion core.

## Design decisions

- Plugin schema hooks run through the host’s PostgreSQL owner and
enforce project isolation.
- The SDK exposes the host contract needed by bundled plugins without
importing engine internals.
- Legacy Roadmap ownership fixtures use the supported empty-owner
sentinel, preserving current composite primary/foreign keys while
exercising backfill behavior.
- The lockfile travels with the Even Realities PostgreSQL dependency so
packaged installs remain reproducible.

## Validation

- All six affected plugin builds pass.
- Affected plugin suites pass: 773 tests across Printing Press, Compound
Engineering, Even Realities, Reports, Roadmap, and WhatsApp.
- `pnpm test:gate` passes all 478 gate tests.
- This PR changes 40 files.

## Stack

- Depends on #2110 → #2109 → #2108.
- The documentation/release PR completes the stack.

Related: #2105


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Breaking Changes**
* PostgreSQL is now required for runtime storage; SQLite files are used
only as one-time migration inputs.
  * The legacy `FUSION_NO_EMBEDDED_PG` fallback has been removed.

* **New Features**
* Added project-isolated PostgreSQL storage for plugins, reports, tasks,
notifications, and other plugin data.
  * Added agent tools for reports and CLI service drafts.
  * Added PostgreSQL schema initialization support for plugin authors.

* **Bug Fixes**
  * Improved migration and recovery of legacy plugin state.
* Prevented cross-project data access and strengthened transactional
schema updates.

* **Documentation**
* Updated storage, migration, deployment, plugin authoring, CLI, and
dashboard guidance for PostgreSQL.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-15 00:27:59 -07:00
gsxdsm
7677ab07dc fix: add chat_sessions columns to schema baseline + fix remaining PG auth bugs (shard 4) (#2096)
## Summary

Fixes shard 4 full-suite failures: chat_sessions schema baseline gap +
two remaining PG auth bugs missed by PR #2086.

**Scope: shard 4 only.** Shards 1/2 (engine timeouts) and shard 3
(compound-engineering CI-only failure) are separate issues not addressed
here.

## Changes

### Schema baseline gap — `chat_sessions` missing columns (42703 error)
- **`0000_initial.sql`**: Added `validator_thinking_level` and
`planning_thinking_level` columns to `CREATE TABLE
project.chat_sessions`. These exist in the Drizzle schema
(`project.ts:1492-1493`) but were missing from the SQL baseline, causing
`column does not exist` on all chat_sessions inserts in fresh test
databases.
- **`postgres-health.ts`**: Added both columns to
`EXPECTED_PROJECT_COLUMNS` self-heal list so existing databases also get
them via ALTER TABLE.

**Fixes**: `chat-store-content-search-edit.pg.test.ts` (5 tests),
`satellite-db-injected-stores.test.ts` (2 tests)

### Remaining auth bugs (password auth failed for user "runner")
- **`allocator-cross-project.test.ts`**: Still had `process.env.USER` in
inline adminExec — missed by PR #2086's batch fix. Replaced with
`PG_TEST_URL_BASE` connection string.
- **`connection.test.ts`**: Used `FUSION_PG_TEST_URL` (not set on CI)
with a bare default URL lacking credentials. `postgres.js` fell back to
OS user `runner`. Changed to derive from `FUSION_PG_TEST_URL_BASE` which
includes credentials.

**Fixes**: `allocator-cross-project.test.ts` (2 tests),
`connection.test.ts` (3 tests)

## Verification

| Check | Result |
|---|---|
| Merge gate (`pnpm test:gate`) | ✅ 294 + 114 + 63 = 471 passed |
| chat-store-content-search-edit | ✅ 5 passed |
| satellite-db-injected-stores | ✅ 10 passed |
| allocator-cross-project | ✅ 2 passed |
| connection | ✅ 13 passed |
| Lint | ✅ exit 0 |
| Typecheck | ✅ clean |

## Not in scope

- **Shards 1/2**: Engine test suite timeouts with
`getAsyncLayer`/`updateSettings` mock warnings. Pre-existing.
- **Shard 3**: `compound-engineering stage-skill-loading.test.ts` — 14
tests fail on CI (`TypeError: Cannot read properties of undefined
(reading 'close')`), pass locally. Likely CI-specific teardown issue.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added separate `validator_thinking_level` and
`planning_thinking_level` fields to chat session data, including
database schema and health-check recognition.
* **Bug Fixes**
* Improved PostgreSQL test connectivity by using configured connection
URL settings instead of hardcoded local defaults.
* Made Postgres-related test teardown null-safe to avoid failures when
setup doesn’t complete.
* **Tests**
* Updated automated test quarantine/exclusions for known failing engine
and reliability-interaction cases.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-14 13:23:29 -07:00
gsxdsm
d8f0b1a268 Restore PostgreSQL integration parity (#2089)
## Summary

- add asynchronous PostgreSQL parity to research commands and engine
execution paths
- persist Roadmap, Compound Engineering sessions, and WhatsApp state in
PostgreSQL
- harden cancellation, concurrency, reconnect, replay-claim, and
detached-promise behavior
- bundle the PostgreSQL-backed integration implementations in the
published CLI

This is PR 2 of 2 and is intentionally stacked on #2088. It contains 44
changed files; merge #2088 first, then retarget this PR to `main` if
GitHub does not do so automatically.

## Verification

- `pnpm check:changesets --strict`
- `pnpm lint`
- `pnpm test:gate`: 463 tests passed
- Compound Engineering plugin: 299 tests passed
- Roadmap plugin: 144 tests passed
- WhatsApp plugin: 27 tests passed
- research CLI: 18 tests passed
- `pnpm verify:fast`: all scoped typechecks, builds, CLI build, and boot
smoke passed

## Post-Deploy Monitoring & Validation

- deploy only after #2088 and verify schema migration `0002` is present
- monitor research cancellation, automation claims, agent execution,
plugin schema initialization, and unhandled rejections
- validate Roadmap ownership, Compound Engineering session recovery, and
WhatsApp reconnect/replay deduplication
- compare per-project plugin and workflow counts after cutover
- restore the pre-deploy backup for data rollback; avoid an in-place
schema downgrade
2026-07-14 08:17:36 -07:00
gsxdsm
c15c78feeb feat: migrate storage from SQLite to PostgreSQL (#1793)
# Migrate storage from SQLite to PostgreSQL — full dashboard cutover

Migrates Fusion's storage layer to the embedded PostgreSQL
`AsyncDataLayer` (the default backend) and **completes the
satellite-store + feature cutover** so every dashboard and Command
Center surface works in PG mode.

## Status — every surface works in embedded-PG mode

Verified live against a running embedded-Postgres dashboard (all
**200**, zero 5xx) and gate-tested (**23 files / 99 tests** on embedded
PG, plus engine-core 294 and ci-shape 63 in the blocking merge gate;
core/engine/cli/dashboard typecheck clean).

| Area | Surfaces | State |
|---|---|---|
| Satellite stores | workflows, todos, insights, research, missions,
goals, mailbox | ✅ |
| Views | artifacts, documents, evals | ✅ |
| Command Center | activity, productivity, team, tokens, tools,
**workflows**, **github**, **signals**, **plugin-activations**, **live**
(all 10) | ✅ |
| Run execution | insight generation, research run execution | ✅
(store-path; AI step needs a provider) |
| Live updates | SSE push for mission/research/insight events | ✅ |
| Workflow editing | create / update / delete / select (+ id counter) |
✅ |
| Engine | mission autopilot, incident-signal ingestion, regression
storm-guard, agent wake-on-message | ✅ |
| Core | tasks, agents, secrets, automations, memory, chat, usage, PRs,
git | ✅ |

## Approach

Each satellite store gets an `Async<Store>` wrapper exposing the sync
store's method names over the existing `async-*-store.ts` helpers;
`get<Store>Store()` returns a `Sync | Async` union; consumers `await`
(harmless on sync), and engine/CLI paths that can't convert use
`instanceof Sync` graceful fallback. Analytics aggregators branch on
`"ping" in dbOrLayer` to run schema-qualified raw SQL over `project.*`
(snake_case) in PG. Executors/orchestrators/autopilot are
await-converted to drive the union store; the async store wrappers
extend `EventEmitter` so SSE live-push fires in both backends.

Not-yet-ported capabilities degrade gracefully (never 500) and are
individually called out in commits.

## Sync with main

The branch is kept continuously merged with `main` (currently through
FN-7845, 2026-07-12); the earlier "final rebase deferred" note no longer
applies. Use **Create a merge commit** (or squash) to land it — GitHub's
rebase-merge cannot replay a merge-maintained branch.

## Residual Review Findings

Multi-agent code review of the PostgreSQL satellite-store ports (U1–U5)
applied 3 safe fixes (see `fix(review): apply autofix feedback`). The
following are **real but gated** — recorded here as follow-up work
rather than auto-applied. All are SQLite→PostgreSQL
**concurrency/atomicity regressions**: the sync stores were immune only
by SQLite's single-writer, single-threaded-handler execution; the async
ports open multi-await read-modify-write windows. **Reachability is low
today** because the execution engines that generate concurrent same-run
mutations (insight run executor, research orchestrator/dispatcher) are
`instanceof`-gated to sync mode in PG. No process-crash class survived
(all engine fallbacks correctly guard the sync store).

- **[P1] Research `appendResearchEvent` dual-write is non-atomic**
(`packages/core/src/async-research-store.ts`, corroborated: adversarial
+ reliability). The `research_run_events` insert (own transaction) and
the `run.events` jsonb update are separate writes — a crash between
them, or two concurrent appends, splits the table count from the jsonb
array. **Fix:** perform the seq-insert and the jsonb update in one
`layer.transactionImmediate`.
- **[P1] Research run terminal-reversion via stale full-row persist**
(`async-research-store.ts` `persistResearchRun`/`updateResearchStatus`).
Concurrent `PATCH /runs/:id/status` + `POST /runs/:id/events` can revert
a terminal run to `running` by overwriting the whole row, bypassing the
transition guard. **Fix:** scoped column `UPDATE`s with a `WHERE status
…` guard, or optimistic version column.
- **[P2] `updateResearchRun`/`updateInsightRun` read-then-write TOCTOU**
— concurrent PATCHes last-writer-wins on the lifecycle merge. **Fix:**
`SELECT … FOR UPDATE` / enclosing transaction.
- **[P2] `upsertRun`/`createRunOrThrowConflict` check-then-create race**
(`async-insight-store.ts`) — two callers can each create an "active"
run. **Fix:** partial unique index on `(projectId, trigger) WHERE status
IN ('pending','running')`.
- **[P3] `createResearchRetryRun` return-value divergence** — sync
returns the pre-update `queued` snapshot; async returns the reloaded
`retry_waiting` run (persisted state is identical). Pick one side for
cross-backend parity.
- **[P2/perf] Mission `getMissionWithHierarchy`/`getMissionHealth` N+1
fan-out** — O(milestones×slices) sequential round-trips hold one pool
slot per request; can starve the pool for large hierarchies. **Fix:**
batched/joined reads.
- **Testing gaps:** no PG-mode concurrency tests (interleaved
status/event mutations), no sync↔async parity assertion for the
lifecycle-error codes, and no mission status/health rollup parity test
vs the sync `MissionStore`.

~~Out of scope (deferred): AI run *execution* (insight/research) +
mission autopilot + live SSE mission events remain sync-gated/degraded
in PG mode.~~ **Since ported** — insight/research run execution, mission
autopilot, and SSE live push all run on the async layer now, which also
makes the concurrency findings above genuinely reachable; they remain
open follow-ups.







---

## Update — 2026-07-12: production-readiness hardening & live acceptance

Everything below landed on this branch since the description above was
written:

**Production blockers from review — fixed**
- `recoverStaleTransitionPending` ported to the async layer (backend
moves write + clear the crash-safe marker; startup/maintenance sweeps no
longer throw).
- Lost-update class fixed: `atomicWriteTaskJson`/`WithAudit` write
changed columns only (full-row upserts silently resurrected stale fields
across concurrent store instances — the "task stuck unplanned forever"
bug).
- First-boot **auto-migration**: booting the PG backend over a project
with a legacy `fusion.db` migrates it automatically (loud failure,
SQLite kept as backup), and the dashboard shows a one-time **"your data
was migrated" banner** with the backup paths and a Need-help Discord
link.
- `pg_dump`/`pg_restore` discovered from common install locations for
embedded-mode backups.
- The PG suite is part of the blocking merge gate (`test:pg-gate`).

**Multi-project isolation (PR #2007, merged into this branch)**
- `project_id` partition key on tasks / archived tasks / config,
`taskProjectScope` threaded through every scan/claim/count, per-project
config rows, layer bound to the project at startup.
- Review P1 follow-up: the shared cold-storage `archive.archived_tasks`
table is also partitioned and all archived-board reads/counts/searches
are scoped.
- Schema drift self-heal generalized to schema-qualified columns so
existing databases upgrade in place.

**Other changes**
- Node settings sync **removed** in PG mode (409
`settings-sync-disabled-postgres`) — nodes share state by connecting to
the same database; auth sync kept (per-machine file).
- Perf (review findings): `listTasks` pushes column filter + ORDER BY +
LIMIT/OFFSET into SQL; `getConversation` capped to the most recent 200
messages.
- Fixed a false "operator action required" pause-abort log fired on
every successfully auto-merged task.

**Live acceptance — PASSED (2026-07-12)**
A sandboxed instance (isolated HOME, embedded PG, real Opus executor)
ran a task through the complete cycle: create → triage (AI spec) →
execute → in-review → AI squash-merge landed on the project's `main` →
done. A write+read sweep of every data surface (settings, comments,
documents, attachments + artifact bridge + artifact edit, chat with real
generation, goals, missions, agent mail, secrets, workflows, memory, CC
analytics) was green on embedded PG.

**Known remaining work**
- The per-project `config` PK re-key has no upgrade path for
pre-isolation embedded-PG databases (needs a real `DROP
CONSTRAINT`/re-key migration; fresh databases are fine).
- `pg_dump`/`pg_restore` binaries are not yet bundled in release
artifacts (PATH/common-location discovery only).
- The satellite-store concurrency findings listed above.

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Phil Larson <hello@phillarson.xyz>
Co-authored-by: fusion-merge <fusion-merge@local>
2026-07-13 19:07:58 -07:00
gsxdsm
1ff83a2735 chore(release): v0.60.0
Version bump via changesets.
2026-07-13 10:32:12 -07:00
gsxdsm
502c4c132f chore(release): v0.59.0
Version bump via changesets.
2026-07-13 01:23:43 -07:00
gsxdsm
f82a3d2840 chore(release): v0.58.0
Version bump via changesets.
2026-07-11 23:50:00 -07:00
gsxdsm
b0ca17a1f7 fix(compound-engineering): claim plan handoffs atomically 2026-07-11 19:55:58 -07:00
gsxdsm
337bdcd081 feat(compound-engineering): align the UI with the upstream loop 2026-07-11 19:55:58 -07:00
gsxdsm
3a4fd67718 Address PR review feedback (#2001)
- scope session collections to the active project\n- clean up runtime stage registration in discovery tests\n- model brainstorms and plans as repeatable artifact collections\n- compact the singleton Strategy presentation
2026-07-11 19:55:58 -07:00
gsxdsm
f66bfae6eb feat(compound-engineering): clarify the pipeline flow 2026-07-11 19:55:58 -07:00
gsxdsm
400f04530c chore(release): v0.57.0
Version bump via changesets.
2026-07-08 16:27:10 -07:00
gsxdsm
eb86555797 chore(release): v0.56.1
Version bump via changesets.
2026-07-05 19:57:09 -07:00
gsxdsm
2025f9d56d chore(release): v0.56.0
Version bump via changesets.
2026-07-05 17:13:36 -07:00
gsxdsm
843f365452 chore(release): v0.55.0
Version bump via changesets.
2026-07-03 13:10:20 -07:00
gsxdsm
84a40dd82e chore(release): v0.54.0
Version bump via changesets.
2026-07-02 00:22:58 -07:00
gsxdsm
7488e0971f chore(release): v0.53.1
Version bump via changesets.
2026-07-01 19:38:51 -07:00
gsxdsm
8bb18d9d61 chore(release): v0.53.0
Version bump via changesets.
2026-07-01 18:31:44 -07:00
gsxdsm
20e42c65d1 FN-7400: enforce JSON protocol for CE debug launches
Prevent Compound Engineering Debug stages from failing launch when skill guidance would otherwise produce prose.

- Prioritize the interactive JSON question/complete protocol over loaded skill instructions in CE stage prompts.
- Document CE Debug dashboard protocol requirements in the bundled debug skill.
- Add regression coverage for Debug stage startup, malformed-output errors, and session list/delete handling.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-7400-compound-debug-stage-json.md    |  7 ++
 .../src/__tests__/session-routes.test.ts           | 89 +++++++++++++++++++++-
 .../src/__tests__/stage-launch-guard.test.ts       | 78 +++++++++++++++++++
 .../src/session/orchestrator.ts                    |  7 +-
 .../src/skills/ce-debug/SKILL.md                   |  5 ++
 5 files changed, 184 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-7400

Fusion-Task-Lineage: 7d37660b-1073-489f-8115-20f07c8b05a4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 15:39:34 -07:00
gsxdsm
f998fe3ffc FN-7397: pass plugin context to lifecycle hooks
Ensure task lifecycle plugin hooks receive a PluginContext when fired through runtime event bridges.

- Append the plugin context for task-created, task-moved, and task-completed hooks when callers only provide raw lifecycle arguments.
- Preserve existing explicit-context hook calls and add coverage for loader and runner lifecycle dispatch paths.
- Cover Compound Engineering sync completion handling so taskStore is available in onTaskCompleted.

Files changed:
 .changeset/fn-7397-plugin-hook-context.md          |  7 +++
 packages/core/src/__tests__/plugin-loader.test.ts  | 52 +++++++++++++++++++++-
 packages/core/src/plugin-loader.ts                 | 34 +++++++++++++-
 .../engine/src/__tests__/plugin-runner.test.ts     | 25 ++++++++++-
 .../src/__tests__/sync.test.ts                     | 29 +++++++++++-
 5 files changed, 141 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-7397

Fusion-Task-Lineage: 7661714c-cf2a-4f4d-bec1-fc6bc11c0613

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 15:39:34 -07:00
Phil Larson
a8a2673429 fix: derive CE question drift option type 2026-07-01 10:38:30 -07:00
Phil Larson
80b2dafdf7 fix: limit CE question-id drift tolerance to recovery 2026-07-01 10:00:20 -07:00
Phil Larson
ad8db59374 fix: tolerate recovered CE question ids 2026-07-01 09:41:20 -07:00
gsxdsm
d4ce6f9319 chore(release): v0.52.0
Version bump via changesets.
2026-07-01 00:47:09 -07:00
Phil Larson
228554d125 fix(compound-engineering): clear artifact project scope drift 2026-06-30 22:03:41 -07:00
gsxdsm
d7f26bb6cf fix(FN-7219): stabilize compound engineering workflow 2026-06-29 16:42:11 -07:00
gsxdsm
8facc20eee chore(release): v0.51.0
Version bump via changesets.
2026-06-28 12:49:55 -07:00
gsxdsm
581f85013a FN-7198: pin Compound Engineering sidebar icon
Keep Compound Engineering navigation surfaces on the Boxes glyph even when stale plugin metadata is served.

- Route desktop and mobile plugin nav entries through a dashboard-view icon resolver.
- Pin Compound Engineering plugin nav icons to Boxes by plugin id while preserving normal icon fallback behavior for other plugins.
- Align manifest/header icon invariants and add regression coverage for stale Sparkles/Grid3X3 metadata.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/FN-7198-compound-engineering-icon-match.md      |  7 +++++++
 packages/dashboard/app/components/LeftSidebarNav.tsx       |  4 ++--
 packages/dashboard/app/components/MobileNavBar.tsx         |  6 +++---
 .../app/components/__tests__/LeftSidebarNav.test.tsx       |  6 +++++-
 .../app/components/__tests__/MobileNavBar.test.tsx         | 10 +++++++---
 .../app/components/__tests__/pluginNavIcon.test.ts         | 10 +++++++++-
 packages/dashboard/app/components/pluginNavIcon.tsx        | 12 ++++++++++++
 .../src/__tests__/manifest.test.ts                         | 14 ++++++++++++++
 .../src/dashboard/CompoundEngineeringView.tsx              |  3 ++-
 9 files changed, 61 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7198
Fusion-Task-Lineage: e910bb82-55a7-4c81-a4fe-947a07b3e308
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 12:10:10 -07:00
gsxdsm
c48dcae331 FN-7197: assign Compound Engineering a distinct sidebar icon
Give Compound Engineering its own Boxes glyph across plugin navigation and headers.

- Register the Boxes lucide icon for plugin navigation so desktop and mobile sidebars can resolve it.
- Switch the Compound Engineering manifest, plugin definition, and view header from Sparkles to Boxes.
- Update navigation and manifest tests plus the release changeset for the published CLI bundle.

Files changed:
 .changeset/FN-7197-compound-engineering-icon.md            |  7 +++++++
 .../app/components/__tests__/MobileNavBar.test.tsx         |  2 +-
 .../app/components/__tests__/pluginNavIcon.test.ts         | 14 ++++++++++++++
 packages/dashboard/app/components/pluginNavIcon.tsx        |  7 ++++++-
 plugins/fusion-plugin-compound-engineering/manifest.json   |  2 +-
 .../src/__tests__/manifest.test.ts                         |  2 +-
 .../src/dashboard/CompoundEngineeringView.tsx              | 12 +++++++++---
 plugins/fusion-plugin-compound-engineering/src/index.ts    |  2 +-
 8 files changed, 40 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-7197

Fusion-Task-Lineage: 03c67bfa-3e28-4a2a-b15e-b2c3576588c1

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 10:06:43 -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
68d2d41f37 FN-7194: verify Compound Engineering workflow skills
Add regression coverage proving the built-in Compound Engineering workflow resolves and installs every referenced skill.

- Collect skill-bearing nodes from the built-in Compound Engineering workflow, including optional-group template children.\n- Assert ce-plan, ce-work, ce-code-review, and follow-on workflow skills map to bundled SKILL.md files.\n- Verify bundled CE skill installation places each workflow-named skill on the discovery root used by sessions.\n\nFiles changed:\n .../__tests__/ce-workflow-skill-alignment.test.ts  | 106 +++++++++++++++++++++\n 1 file changed, 106 insertions(+)

Fusion-Task-Id: FN-7194

Fusion-Task-Lineage: 8461ebae-1484-4e77-a9ae-e18531e617b5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 09:12:13 -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
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
729bd5e5f9 chore(release): v0.50.0
Version bump via changesets.
2026-06-27 18:10:19 -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
04f8fe5d59 FN-7107: load CE stage skills for interactive sessions
Ensure Compound Engineering stages request and expose their registered skills when launching interactive sessions.

- Add plugin-local skill resolution checks that warn when a stage skill install is missing.
- Pass a stable additional skill path and requested stage skill into every CE interactive session.
- Add coverage for stage skill loading options and update skill reachability expectations.

Files changed:
 ...d-skills-not-loading-in-interactive-sessions.md |  1 +
 .../src/__tests__/skill-reachability.test.ts       | 71 +++++++++++++---------
 .../src/__tests__/stage-skill-loading.test.ts      | 69 +++++++++++++++++++++
 .../src/session/orchestrator.ts                    | 48 ++++++++++++++-
 4 files changed, 157 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-7107

Fusion-Task-Lineage: 0504e9ba-c2e7-4317-9c90-55693baf8170

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
9843f2e772 FN-7104: Align ce-brainstorm durable artifact references
Keep bundled ce-brainstorm guidance aligned with docs/plans as the durable planning artifact.

- Update the visual probe reference to name docs/plans as the durable artifact.
- Add a recursive skill-content guard that prevents docs/brainstorms from being described as new or durable output.
- Assert legacy docs/brainstorms wording remains limited to ce-plan inputs.

Files changed:
 .../__tests__/skill-content-alias-guard.test.ts    | 85 ++++++++++++++++++++++
 .../ce-brainstorm/references/visual-probes.md      |  2 +-
 2 files changed, 86 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-7104

Fusion-Task-Lineage: dd26a511-816d-479c-99ac-7cfec2b96bd4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
b69dd8eb14 FN-7103: alias brainstorm artifacts to unified plans
Compound Engineering now treats brainstorm output as the requirements-only form of unified plan artifacts.

- Point the brainstorm stage at docs/plans while keeping the existing stage and skill identifiers for compatibility.
- Surface CE plan frontmatter metadata during artifact discovery and reading.
- Harden CE artifact discovery against symlink escapes for conventional artifact paths.
- Update docs, tests, and changeset coverage for the unified brainstorm/plan artifact flow.

Files changed:
 .changeset/fn-7103-ce-plan-alias.md                |   7 ++
 docs/plugins/compound-engineering.md               |  21 +++-
 .../fusion-plugin-compound-engineering/README.md   |  36 ++++--
 .../orchestrator-interrupt-resume.test.ts          |   8 +-
 .../src/__tests__/session-store.test.ts            |  38 ++++++
 .../src/__tests__/stage-registry.test.ts           |  18 +++
 .../src/__tests__/sync.test.ts                     |  36 +++++-
 .../src/artifacts/__tests__/discovery.test.ts      | 133 +++++++++++++++++++-
 .../src/artifacts/discovery.ts                     | 136 +++++++++++++++++++--
 .../src/session/stage-registry.ts                  |  10 +-
 .../src/sync/reconciler.ts                         |   2 +-
 11 files changed, 413 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-7103

Fusion-Task-Lineage: 284a5c5c-40f7-44b2-8e3e-1de671dde36a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
5899dca4f8 FN-7094: update Compound Engineering plugin to v3.15.0
Update the Compound Engineering plugin content and installers to the upstream v3.15.0 release.

- Refresh bundled Compound Engineering agents, skills, references, and helper scripts from upstream v3.15.0.
- Add upstream provenance metadata and regression coverage for provenance, agent installation, and skill installation behavior.
- Update plugin registration and installer logic to expose the expanded agent and skill catalog.

Files changed:
 .../fusion-plugin-compound-engineering/README.md   |  18 +-
 .../src/__tests__/agent-installation.test.ts       |  16 +-
 .../src/__tests__/skill-installation.test.ts       |  19 +-
 .../src/__tests__/upstream-provenance.test.ts      |  62 ++
 .../src/agent-installation.ts                      |  66 +-
 .../src/agents/ce-adversarial-document-reviewer.md |  12 +-
 .../src/agents/ce-adversarial-reviewer.md          |  12 +-
 .../agents/ce-agent-native-planning-strategist.md  |  71 ++
 .../src/agents/ce-best-practices-researcher.md     |  23 +-
 .../src/agents/ce-data-integrity-guardian.md       |   4 +
 .../src/agents/ce-deployment-verification-agent.md |   4 +
 .../src/agents/ce-figma-design-sync.md             |   4 +-
 .../src/agents/ce-framework-docs-researcher.md     |   4 +
 .../src/agents/ce-git-history-analyzer.md          |   2 +-
 .../src/agents/ce-issue-intelligence-analyst.md    |   9 +-
 .../src/agents/ce-learnings-researcher.md          |  16 +-
 .../agents/ce-pattern-recognition-specialist.md    |   4 +
 .../src/agents/ce-performance-oracle.md            |   4 +
 .../src/agents/ce-pr-comment-resolver.md           | 120 +--
 .../src/agents/ce-product-lens-reviewer.md         |   2 +-
 .../src/agents/ce-project-standards-reviewer.md    |   8 +-
 .../src/agents/ce-repo-research-analyst.md         |   6 +-
 .../src/agents/ce-scope-guardian-reviewer.md       |   6 +-
 .../src/agents/ce-security-lens-reviewer.md        |   2 +-
 .../src/agents/ce-security-sentinel.md             |   4 +
 .../src/agents/ce-session-historian.md             |  14 +-
 .../src/agents/ce-slack-researcher.md              |  25 +-
 .../src/agents/ce-web-researcher.md                |  13 +-
 .../src/index.ts                                   |  15 +-
 .../src/skill-installation.ts                      |  69 +-
 .../src/skills/ce-brainstorm/SKILL.md              | 125 ++-
 .../references/agents/slack-researcher.md          | 127 +++
 .../references/brainstorm-sections.md              | 161 +++-
 .../src/skills/ce-brainstorm/references/handoff.md | 114 ++-
 .../ce-brainstorm/references/html-rendering.md     | 253 ++++--
 .../ce-brainstorm/references/markdown-rendering.md |  55 +-
 .../ce-brainstorm/references/synthesis-summary.md  |  30 +-
 .../references/universal-brainstorming.md          |  14 +-
 .../ce-brainstorm/references/visual-probes.md      | 128 +++
 .../ce-brainstorm/scripts/visual-probe-server.js   | 419 ++++++++++
 .../src/skills/ce-code-review/SKILL.md             | 921 ++++++++++-----------
 .../references/action-class-rubric.md              |  26 +
 .../references/cross-model-review.md               |  63 ++
 .../skills/ce-code-review/references/diff-scope.md |  12 +-
 .../ce-code-review/references/findings-schema.json |  26 +-
 .../ce-code-review/references/persona-catalog.md   |  54 +-
 .../references/personas/adversarial-reviewer.md    | 102 +++
 .../references/personas/agent-native-reviewer.md   | 173 ++++
 .../references/personas/api-contract-reviewer.md   |  43 +
 .../references/personas/correctness-reviewer.md    |  43 +
 .../references/personas/data-migration-reviewer.md | 111 +++
 .../personas/deployment-verification-agent.md      | 157 ++++
 .../personas/julik-frontend-races-reviewer.md      |  44 +
 .../references/personas/learnings-researcher.md    | 247 ++++++
 .../personas/maintainability-reviewer.md           |  68 ++
 .../references/personas/performance-reviewer.md    |  45 +
 .../personas/previous-comments-reviewer.md         |  59 ++
 .../personas/project-standards-reviewer.md         |  75 ++
 .../references/personas/reliability-reviewer.md    |  43 +
 .../references/personas/security-reviewer.md       |  45 +
 .../references/personas/swift-ios-reviewer.md      |  99 +++
 .../references/personas/testing-reviewer.md        |  43 +
 .../references/review-output-template.md           | 117 +--
 .../ce-code-review/references/subagent-template.md |  51 +-
 .../references/validator-template.md               |   6 +-
 .../scripts/cross-model-adversarial-review.sh      | 218 +++++
 .../src/skills/ce-commit-push-pr/SKILL.md          |  19 +-
 .../references/pr-description-writing.md           |   2 +-
 .../src/skills/ce-commit/SKILL.md                  |   4 +-
 .../src/skills/ce-compound/SKILL.md                | 164 +++-
 .../references/agents/best-practices-researcher.md | 115 +++
 .../references/agents/data-integrity-guardian.md   |  68 ++
 .../references/agents/framework-docs-researcher.md |  93 +++
 .../agents/pattern-recognition-specialist.md       |  55 ++
 .../references/agents/performance-oracle.md        | 108 +++
 .../references/agents/security-sentinel.md         |  91 ++
 .../references/agents/session-historian.md         |  83 ++
 .../scripts/session-history/discover-sessions.sh   | 130 +++
 .../scripts/session-history/extract-errors.py      | 254 ++++++
 .../scripts/session-history/extract-metadata.py    | 456 ++++++++++
 .../scripts/session-history/extract-skeleton.py    | 570 +++++++++++++
 .../src/skills/ce-debug/SKILL.md                   | 286 +++++--
 .../skills/ce-debug/references/anti-patterns.md    |  91 ++
 .../skills/ce-debug/references/defense-in-depth.md |  35 +
 .../references/investigation-techniques.md         | 374 +++++++++
 .../src/skills/ce-ideate/SKILL.md                  | 223 ++---
 .../agents/issue-intelligence-analyst.md           | 200 +++++
 .../references/agents/learnings-researcher.md      | 247 ++++++
 .../references/agents/slack-researcher.md          | 127 +++
 .../ce-ideate/references/agents/web-researcher.md  | 121 +++
 .../ce-ideate/references/divergent-ideation.md     |  89 ++
 .../skills/ce-ideate/references/html-rendering.md  | 631 ++++++++++++++
 .../ce-ideate/references/ideation-sections.md      | 191 +++++
 .../ce-ideate/references/markdown-rendering.md     | 236 ++++++
 .../ce-ideate/references/post-ideation-workflow.md | 246 ++----
 .../ce-ideate/references/universal-ideation.md     |  24 +-
 .../src/skills/ce-plan/SKILL.md                    | 171 ++--
 .../agents/agent-native-planning-strategist.md     |  62 ++
 .../references/agents/architecture-strategist.md   |  46 +
 .../references/agents/best-practices-researcher.md | 114 +++
 .../references/agents/data-integrity-guardian.md   |  68 ++
 .../references/agents/data-migration-reviewer.md   | 103 +++
 .../agents/deployment-verification-agent.md        | 157 ++++
 .../references/agents/framework-docs-researcher.md |  93 +++
 .../references/agents/git-history-analyzer.md      |  40 +
 .../references/agents/learnings-researcher.md      | 247 ++++++
 .../agents/pattern-recognition-specialist.md       |  55 ++
 .../references/agents/performance-oracle.md        | 108 +++
 .../references/agents/repo-research-analyst.md     | 256 ++++++
 .../ce-plan/references/agents/security-sentinel.md |  91 ++
 .../ce-plan/references/agents/slack-researcher.md  | 127 +++
 .../references/agents/spec-flow-analyzer.md        |  80 ++
 .../ce-plan/references/agents/web-researcher.md    | 121 +++
 .../skills/ce-plan/references/approach-altitude.md |  55 ++
 .../ce-plan/references/deepening-workflow.md       |  68 +-
 .../skills/ce-plan/references/html-rendering.md    | 253 ++++--
 .../ce-plan/references/markdown-rendering.md       |  55 +-
 .../src/skills/ce-plan/references/plan-handoff.md  |  81 +-
 .../src/skills/ce-plan/references/plan-sections.md | 231 +++++-
 .../skills/ce-plan/references/synthesis-summary.md |  28 +-
 .../ce-plan/references/universal-planning.md       |   9 +-
 .../src/skills/ce-resolve-pr-feedback/SKILL.md     |  12 +-
 .../references/agents/pr-comment-resolver.md       |  56 ++
 .../references/evaluation-rubric.md                | 106 +++
 .../ce-resolve-pr-feedback/references/full-mode.md | 207 ++---
 .../references/targeted-mode.md                    |  24 +-
 .../ce-resolve-pr-feedback/scripts/get-pr-comments |  13 +-
 .../scripts/get-thread-for-comment                 |  11 +-
 .../src/skills/ce-strategy/SKILL.md                |   4 +-
 .../src/skills/ce-work/SKILL.md                    | 191 +++--
 .../ce-work/references/agents/figma-design-sync.md | 165 ++++
 .../skills/ce-work/references/execution-engines.md |  85 ++
 .../ce-work/references/non-code-execution.md       |  23 +
 .../ce-work/references/review-findings-followup.md | 104 +++
 .../skills/ce-work/references/shipping-workflow.md |  89 +-
 .../src/skills/ce-work/references/tracker-defer.md |  16 +-
 .../src/upstream-provenance.ts                     |  15 +
 137 files changed, 12130 insertions(+), 1994 deletions(-)

Fusion-Task-Id: FN-7094

Fusion-Task-Lineage: 85df8f84-86f1-496a-953a-e4cf5a9da596

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
fa4ee607b7 chore(release): v0.49.0
Version bump via changesets.
2026-06-26 12:06:05 -07:00
gsxdsm
079c428af9 chore(release): v0.48.0
Version bump via changesets.
2026-06-24 23:56:23 -07:00
gsxdsm
2ba81c25b4 chore(release): v0.47.0
Version bump via changesets.
2026-06-24 19:32:59 -07:00
gsxdsm
bac7049822 chore(release): v0.46.0
Version bump via changesets.
2026-06-23 12:27:50 -07:00