Escalate reclaimable in-progress resume limbo into an explicit failure path to stop infinite self-healing loops. - add resume-limbo escalation handling in self-healing/executor flow so self-owned stuck execution is failed and surfaced - extend core task/run-audit types and retry-reset/store behavior to persist and expose the new escalation state - add reliability interaction coverage for reclaim self-owned resume limbo escalation and update related schema/store/CLI/plugin tests and docs Files changed: AGENTS.md | 1 + docs/architecture.md | 2 + packages/cli/src/commands/__tests__/task.test.ts | 2 + packages/core/src/__tests__/db-migrate.test.ts | 12 +- packages/core/src/__tests__/db.test.ts | 34 ++--- packages/core/src/__tests__/goals-schema.test.ts | 2 +- packages/core/src/__tests__/insight-store.test.ts | 10 +- packages/core/src/__tests__/mission-store.test.ts | 2 +- packages/core/src/__tests__/run-audit.test.ts | 2 +- packages/core/src/__tests__/secrets-schema.test.ts | 6 +- .../core/src/__tests__/store-merge-queue.test.ts | 2 +- packages/core/src/__tests__/task-documents.test.ts | 2 +- packages/core/src/db.ts | 13 +- packages/core/src/manual-retry-reset.ts | 1 + packages/core/src/store.ts | 37 ++++- packages/core/src/types.ts | 11 ++ ...laim-self-owned-resume-limbo-escalation.test.ts | 168 +++++++++++++++++++++ packages/engine/src/executor.ts | 5 + packages/engine/src/run-audit.ts | 1 + packages/engine/src/self-healing.ts | 72 +++++++++ .../src/store/__tests__/roadmap-store.test.ts | 4 +- 21 files changed, 345 insertions(+), 44 deletions(-) Fusion-Task-Id: FN-5704 Fusion-Task-Lineage: c8f73d16-d95b-450f-a514-e7d3c2f7aebe
fusion-plugin-roadmap
@fusion-plugin-examples/roadmap is the workspace package for the bundled fusion-plugin-roadmap plugin.
Plugin identity
- Manifest id:
fusion-plugin-roadmap - Route namespace:
/api/plugins/fusion-plugin-roadmap/* - Dashboard view id:
plugin:fusion-plugin-roadmap:roadmaps
Package layout
manifest.json— plugin metadata and dashboard view declarationsrc/index.ts— plugin definition (onSchemaInit, routes, dashboard view metadata)src/roadmap-schema.ts— canonical roadmap DDL used byhooks.onSchemaInitsrc/server/index.ts— backend server exportssrc/dashboard-view.tsx— dashboard view entry export for host registrationsrc/dashboard/RoadmapsView.tsx— plugin-owned roadmap planner pagesrc/dashboard/useRoadmaps.ts— plugin-owned roadmap CRUD/reorder/suggestions/handoff hooksrc/dashboard/RoadmapsView.css— plugin-owned roadmap stylessrc/dashboard/api.ts— plugin-local client for/api/plugins/fusion-plugin-roadmap/*src/roadmap-types.ts+src/store/*— roadmap domain types/store
Exported surfaces
- Root export: plugin default + roadmap domain helpers/types
./server: roadmap route + AI suggestion service exports./dashboard-view: Roadmaps dashboard view export for host registry wiring
Regression test ownership
Roadmap behavior regression tests live in this plugin package and should stay here (not in @fusion/core or @fusion/dashboard):
src/store/__tests__/roadmap-store.test.tssrc/store/__tests__/roadmap-ordering.test.tssrc/store/__tests__/roadmap-handoff.test.tssrc/__tests__/index.test.ts(plugin contract:hooks.onSchemaInit, dashboard view metadata registration)src/__tests__/roadmap-routes.test.tssrc/__tests__/roadmap-suggestions.test.ts(AI suggestion flow uses injectedPluginContext.createAiSession()and session lifecycle handling)src/__tests__/api-client.test.tssrc/dashboard/__tests__/useRoadmaps.test.tssrc/dashboard/__tests__/RoadmapsView.test.tsx
Prefer canonical package exports in tests:
- plugin/server surface:
@fusion-plugin-examples/roadmapor@fusion-plugin-examples/roadmap/server - dashboard view surface:
@fusion-plugin-examples/roadmap/dashboard-view
Use deep source imports only when no package export exists for the target module.
Host vs plugin capability boundaries
Plugin-owned responsibilities:
- Define roadmap schema DDL in
src/roadmap-schema.tsand register it viahooks.onSchemaInitinsrc/index.ts. - Implement roadmap AI suggestion behavior through the injected
PluginContext.createAiSession()seam. - Declare plugin dashboard view metadata (
dashboardViews) and export the real view entrypoint (./dashboard-view).
Host-owned responsibilities:
- Execute plugin schema hooks during DB startup and expose resulting tables/indexes to plugin routes.
- Inject
createAiSession()into plugin runtime/route context. - Discover plugin dashboard views via
/api/plugins/dashboard-viewsand resolve plugin view IDs (for roadmap:plugin:fusion-plugin-roadmap:roadmaps) through the host view registry.
Notes
Roadmap tables are plugin-owned and created via hooks.onSchemaInit in src/index.ts, which delegates to src/roadmap-schema.ts. Core database bootstrap no longer creates roadmap tables/indexes.
Roadmap AI suggestion generation is plugin-owned (src/roadmap-suggestions.ts / src/roadmap-routes.ts) and uses PluginContext.createAiSession() when available. The plugin must not import @fusion/engine directly for suggestion generation.
The plugin keeps a single canonical dashboard entrypoint (./dashboard-view) and accepts host-supplied dashboard context (projectId, optional addToast). Do not deep-import dashboard internals from this plugin.