ischindl
3d355465c7
feat(missions): done-credit via reverse lineage, feature re-point/unlink tools, and live unlink SSE ( #3491 )
...
## What this PR does
Closes three lifecycle gaps in the Mission → Milestone → Slice →
**Feature** model, where a feature links to exactly one delivery task
(single-valued `feature.taskId`, one-feature-one-task):
1. **Reverse-lineage done-credit** — a terminal, non-failed task
carrying a feature's reverse `missionLineage`
(featureId/sliceId/missionId) now credits the feature as satisfying its
acceptance criteria, independent of where the forward `feature.taskId`
points (e.g. a newer follow-up task). Credit is only applied when
**none** of the feature's lineage candidates is live, so a live
follow-up keeps the feature active. Fixes features that otherwise sit
"in-progress" forever after their delivering task completes.
2. **Re-point / unlink surface** — new `fn_feature_repoint_task` /
`fn_feature_unlink_task` agent tools (engine + CLI) backed by an atomic
`repointFeatureToTask` store primitive, so a mis-linked feature can be
re-attached to the correct delivery task or unlinked — without a manual
DB edit. Single-valued `feature.taskId` and one-feature-one-task
invariants are preserved; unlinking an already-unlinked feature errors
clearly. Classified as mutation tools, same class as the existing
`fn_feature_link_task`.
3. **Live SSE update** — the `feature:unlinked` store event is now
emitted over SSE (`event: feature:unlinked`) so the dashboard refreshes
immediately after a re-point/unlink instead of waiting for the next
poll.
## Why
The forward-only `feature.taskId` link made three real failure modes
unrecoverable from the product surface: stale done-features after task
replacement, permanently mis-linked features, and a stale dashboard
after a repair. This closes the feature lifecycle end-to-end.
## Invariants
- `feature.taskId` stays single-valued; one feature is linked to at most
one task at any time (atomic store primitive).
- Done-credit requires: terminal column, non-failed, and no live lineage
candidate.
- No new run-audit prose; store events carry ids/counts/outcomes only.
## Tests
- `mission-state-reconcile.test.ts` — reverse-lineage credit matrix
(live vs. terminal vs. failed candidates)
- `mission-store.pg.test.ts` — `repointFeatureToTask` atomicity +
invariants (PG; gate-safe auto-skip without Postgres)
- `agent-mission-tools.test.ts` — tool delegation (unlink / re-point
exactly once)
- `heartbeat-executor.test.ts`, `extension.test.ts` — tool exposure and
heartbeat interaction
- Changeset: `@runfusion/fusion: minor`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Added tools to reassign a feature to another live task or remove its
task link.
- Unlinking resets the feature to a defined state and provides clear
errors when applicable.
- Added live updates for feature unlink events.
- Improved reconciliation to recognize completed reverse-lineage work
while respecting active follow-up tasks and failures.
- Improved relationship consistency when concurrent task-link operations
occur.
- **Documentation**
- Documented feature linking, unlinking, reassignment, lifecycle events,
and reconciliation behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-19 21:01:56 -07:00
gsxdsm
385059f5ca
FN-9124: Move mission planning CTA to top of list
...
Place the primary mission-planning action consistently above mission content across desktop and mobile layouts.
- move the Plan New Mission and Create actions above the mission list
- increase the mission CTA height with shared design tokens and remove duplicate empty-state controls
- document and test placement, sizing, create-mode, empty-state, and responsive behavior
Files changed:
.changeset/fn-9124-mission-cta-top.md | 7 ++
docs/missions.md | 2 +-
.../dashboard/app/components/MissionManager.css | 42 +++----
.../dashboard/app/components/MissionManager.tsx | 89 +++++++-------
.../dashboard/app/components/PlanningModeModal.css | 14 +--
.../dashboard/app/components/PlanningModeModal.tsx | 12 +-
.../__tests__/MissionManager.mobile-css.test.ts | 33 +++--
.../MissionManager.plan-cta-placement.test.tsx | 134 +++++++++++++++++++++
8 files changed, 238 insertions(+), 95 deletions(-)
Fusion-Task-Id: FN-9124
Fusion-Task-Lineage: 09ad7695-80ed-46af-a1c1-f334952c37ec
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 08:05:11 -07:00
gsxdsm
43a42d8b7b
FN-9107: preserve mission completion triggers after reconciliation failures
...
Keep scheduler mission completion handling active when best-effort reconciliation fails.
- isolate pre- and post-resolution reconciliation failures without suppressing mission execution
- cover custom completion columns, failed in-place updates, fallback behavior, and slice guards
- document the resilience contract and add a patch changeset
Files changed:
.changeset/fn-9107-mission-trigger.md | 7 +
docs/missions.md | 2 +-
.../mission-validation-trigger-gap.test.ts | 40 ++++--
.../scheduler-mission-move-trigger.test.ts | 153 +++++++++++++++++++++
packages/engine/src/scheduler.ts | 20 ++-
5 files changed, 203 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-9107
Fusion-Task-Lineage: a492d0c0-79ca-4dba-a7bc-c8fa54415f28
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 17:06:39 -07:00
gsxdsm
cb4ab3b6da
FN-9028: guard automatic mission rollup status writers
...
Protect automatic mission and milestone status rollups with a durable writer-coverage ratchet.
- Add source-level coverage for every computed mission and milestone status writer.
- Verify core persistence and engine reconciliation preserve blocked and archived intent.
- Document shared rollup-ownership guard requirements.
Files changed:
docs/missions.md | 2 +-
.../mission-rollup-status-writer-ratchet.test.ts | 170 +++++++++++++++++++++
.../mission-status-recompute-guard.test.ts | 11 ++
.../__tests__/postgres/mission-store.pg.test.ts | 43 ++++--
packages/core/src/missions/mission-types.ts | 4 +-
.../mission-autopilot-rollup-guard.test.ts | 115 ++++++++++++++
6 files changed, 331 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-9028
Fusion-Task-Lineage: 89b72b57-fc73-4268-a639-5edac05ff8f8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-13 16:01:57 -07:00
gsxdsm
8f6190910d
FN-8971: add mission blocked-status clearing tool
...
Add an operator-only CLI tool for repairing stale mission blocked badges.
- Register and document fn_mission_clear_blocked with PostgreSQL and status-error handling.
- Withhold the repair action from agent principals and deny it in readonly workflow steps.
- Classify the tool consistently across engine permission gates and add coverage.
- Add a minor CLI changeset for the new operator capability.
Files changed:
.changeset/fn-8971-mission-clear-blocked-tool.md | 7 +++
docs/missions.md | 7 ++-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 9 ++++
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../__tests__/extension-permission-gates.test.ts | 26 ++++++++++
packages/cli/src/__tests__/extension.test.ts | 56 +++++++++++++++++++++-
packages/cli/src/extension.ts | 54 +++++++++++++++++++++
.../src/__tests__/agent-mission-tools.test.ts | 5 +-
.../src/__tests__/gating-classifications.test.ts | 8 ++++
.../workflow-step-readonly-allowlist.test.ts | 5 +-
.../engine/src/execution/gating-classifications.ts | 7 +++
12 files changed, 182 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8971
Fusion-Task-Lineage: 650c13b3-c6c4-4dc5-a0b5-9c71d3b94fc5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 01:45:08 -07:00
gsxdsm
7ddcf7e2a6
FN-8979: remove legacy mission resume blockers
...
Retire the deprecated v0 mission-resume blocker payload in favor of canonical descriptors.
- Remove legacy blocker types, conversions, exports, and HTTP payload mirrors.
- Deduplicate canonical blocker descriptors and update clients, tests, and documentation.
- Add a major changeset for the breaking API removal.
Files changed:
.changeset/fn-8979-removal.md | 7 +++++
docs/missions.md | 4 +--
.../suite-only-flakes-observed-register.md | 14 +++++++++
.../src/__tests__/mission-blocked-clear.test.ts | 23 ++++++++++++++-
.../core/src/__tests__/mission-blockers.test.ts | 26 +++++++++++------
.../__tests__/postgres/mission-store.pg.test.ts | 5 +---
.../core/src/async-stores/async-mission-store.ts | 7 +----
packages/core/src/index.gate.ts | 3 +-
packages/core/src/index.ts | 3 +-
packages/core/src/missions/mission-blockers.ts | 34 +++++++++++++---------
packages/core/src/missions/mission-types.ts | 9 ++----
packages/core/src/types.ts | 2 +-
packages/dashboard/app/api/missions/missions.ts | 25 +++++-----------
.../MissionManager.blocked-repair.test.tsx | 17 +++++++----
.../MissionManager.resume-conflict.test.tsx | 9 ++++--
.../src/__tests__/mission-resume-conflict.test.ts | 11 ++++---
packages/dashboard/src/mission-routes.ts | 10 +++----
17 files changed, 127 insertions(+), 82 deletions(-)
Fusion-Task-Id: FN-8979
Fusion-Task-Lineage: 2a0dd0b6-43ca-44ad-b992-79f4ef8eda67
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 01:30:04 -07:00
gsxdsm
3eec1338c5
FN-8970: add mission reconcile controls
...
Add a dry-run mission reconciliation control with explicit apply feedback.
- Add the dashboard reconcile API client and exported result type.
- Present preview, apply, empty, and archived reconciliation states in Mission Manager.
- Guard reconcile requests across direct selection and target-mission deep-link changes.
- Cover reconcile interactions, stale requests, and deep-link intent updates.
Files changed:
.changeset/fn-8970-mission-reconcile-control.md | 7 +
docs/missions.md | 6 +
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/api/missions/missions.ts | 31 +++
packages/dashboard/app/components/MissionManager.css | 48 +++++
packages/dashboard/app/components/MissionManager.tsx | 184 +++++++++++++-
packages/dashboard/app/components/__tests__/MissionManager.mobile-css.test.ts | 8 +
packages/dashboard/app/components/__tests__/MissionManager.reconcile.test.tsx | 277 +++++++++++++++++++++
8 files changed, 557 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8970
Fusion-Task-Lineage: 62802129-a7ea-43cb-8068-5ce2c2c21b77
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 00:23:10 -07:00
gsxdsm
844512ed3e
FN-8976: prevent concurrent automatic validator runs
...
Prevent automatic validation from running alongside a fresh manual or non-memoized validator.
- Serialize validator admission around a feature-scoped fresh-running check.
- Report feature-versus-fingerprint blocking scope and preserve memoization semantics.
- Add regression coverage, documentation, and a patch changeset.
Files changed:
.changeset/fn-8976-validator-admission.md | 7 ++
docs/missions.md | 4 +-
.../__tests__/postgres/mission-store.pg.test.ts | 110 +++++++++++++++++++--
.../core/src/async-stores/async-mission-store.ts | 61 ++++++++++--
packages/core/src/missions/mission-types.ts | 2 +
.../src/__tests__/mission-execution-loop.test.ts | 10 +-
6 files changed, 171 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-8976
Fusion-Task-Lineage: 61b487e8-5542-4cce-94f7-58d5295fe177
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 22:57:21 -07:00
gsxdsm
918a4c4bfa
FN-8973: add versioned mission resume blockers
...
Expose versioned mission resume blockers across API and UI.
- Add versioned blocker descriptors with fail-closed legacy normalization and v0 compatibility projections.
- Return typed resume-conflict envelopes and render root stop details in Mission Manager.
- Cover descriptor behavior, route conflicts, UI handling, and PostgreSQL persistence.
Files changed:
.changeset/fn-8973-mission-blocker-descriptor.md | 7 ++
docs/missions.md | 2 +-
.../src/__tests__/mission-blocked-clear.test.ts | 18 ++---
.../core/src/__tests__/mission-blockers.test.ts | 43 ++++++++++++
.../__tests__/postgres/mission-store.pg.test.ts | 22 ++++--
.../core/src/async-stores/async-mission-store.ts | 23 +++---
packages/core/src/index.gate.ts | 4 ++
packages/core/src/index.ts | 4 ++
packages/core/src/missions/mission-blockers.ts | 43 ++++++++++++
packages/core/src/missions/mission-types.ts | 81 ++++++++++------------
packages/core/src/types.ts | 4 +-
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/api/missions/missions.ts | 46 +++++++-----
.../dashboard/app/components/MissionManager.tsx | 11 +--
.../MissionManager.blocked-repair.test.tsx | 10 +--
.../MissionManager.resume-conflict.test.tsx | 24 +++++++
.../__tests__/mission-blocked-clear-routes.test.ts | 2 +-
.../src/__tests__/mission-resume-conflict.test.ts | 42 +++++++++++
packages/dashboard/src/mission-routes.ts | 12 +++-
19 files changed, 297 insertions(+), 102 deletions(-)
Fusion-Task-Id: FN-8973
Fusion-Task-Lineage: 5d36c9c9-dc0f-4cb0-bd0c-ad41c8dde5c0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 22:36:01 -07:00
gsxdsm
9571f73666
FN-8972: preserve blocked mission status during rollups
...
Protect explicitly blocked or archived hierarchy statuses from automatic recomputation.
- Restrict mission and milestone rollups to statuses they own.
- Make asynchronous recomputations transactional and preserve status events.
- Cover guarded rollups in SQLite and PostgreSQL tests.
Files changed:
.../fn-8972-mission-recompute-blocked-guard.md | 7 ++
docs/missions.md | 2 +
.../mission-status-recompute-guard.test.ts | 85 +++++++++++++++++
.../__tests__/postgres/mission-store.pg.test.ts | 105 +++++++++++++++++++++
.../core/src/async-stores/async-mission-store.ts | 67 +++++++++++--
packages/core/src/missions/mission-store.ts | 12 ++-
packages/core/src/missions/mission-types.ts | 21 +++++
7 files changed, 286 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-8972
Fusion-Task-Lineage: 07ede656-dec0-4d3e-b35c-06e0f6304b74
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 22:03:57 -07:00
gsxdsm
90573e31b0
FN-8963: prevent concurrent mission validation runs
...
Prevent duplicate manual validation runs while preserving recovery from stale validator state.
- Add atomic mission-store claims and release handling for manual validator runs.
- Return a conflict response and disable the validation action while a run is active.
- Cover concurrent claims, API behavior, UI state, and stale-window parity.
Files changed:
.changeset/fn-8963-validate-inflight-guard.md | 7 ++
docs/missions.md | 2 +
.../__tests__/postgres/mission-store.pg.test.ts | 129 +++++++++++++++++++++
.../core/src/async-stores/async-mission-store.ts | 87 ++++++++++++--
packages/core/src/index.ts | 2 +
packages/core/src/missions/mission-store.ts | 69 ++++++++++-
packages/core/src/missions/mission-types.ts | 13 +++
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/api/missions/missions.ts | 11 +-
.../dashboard/app/components/MissionManager.tsx | 15 ++-
.../MissionManager.validate-inflight.test.tsx | 77 ++++++++++++
.../mission-validate-inflight-guard.test.ts | 55 +++++++++
packages/dashboard/src/mission-routes.ts | 32 +---
.../src/__tests__/mission-execution-loop.test.ts | 61 +++++++++-
.../validator-run-stale-window-parity.test.ts | 9 ++
15 files changed, 549 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-8963
Fusion-Task-Lineage: 7e5d0ae4-98ac-4f79-99ca-45fd1450362d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 21:41:47 -07:00
gsxdsm
5dd3031e34
FN-8962: add mission blocked status repair controls
...
Add explicit diagnostics and repair paths for stale mission blocked badges.
- Expose audited core and REST APIs that recompute and clear stale mission blocked status without resuming automation.
- Add mission-manager controls, blocker diagnostics, responsive styling, and operator documentation.
- Cover clear conflicts, persistence, routes, and desktop/mobile UI behavior.
Files changed: .changeset/fn-8962-mission-blocked-clear.md | 7 ++
docs/missions.md | 12 ++-
.../src/__tests__/mission-blocked-clear.test.ts | 40 ++++++++
.../__tests__/postgres/mission-store.pg.test.ts | 71 ++++++++++++++
.../core/src/async-stores/async-mission-store.ts | 90 +++++++++++++++--
packages/core/src/index.gate.ts | 4 +
packages/core/src/index.ts | 5 +-
packages/core/src/missions/mission-types.ts | 62 ++++++++++++
packages/dashboard/app/api/legacy.ts | 3 +
packages/dashboard/app/api/missions/missions.ts | 29 ++++++
.../dashboard/app/components/MissionManager.css | 6 ++
.../dashboard/app/components/MissionManager.tsx | 90 ++++++++++++++++-
.../MissionManager.blocked-repair.test.tsx | 106 +++++++++++++++++++++
.../__tests__/MissionManager.mobile-css.test.ts | 8 ++
.../__tests__/mission-blocked-clear-routes.test.ts | 71 ++++++++++++++
packages/dashboard/src/mission-routes.ts | 49 ++++++++++
16 files changed, 638 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-8962
Fusion-Task-Lineage: 38cab277-a0c3-4c60-af3e-dd25d2f88dea
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 20:41:11 -07:00
gsxdsm
cef07527f6
FN-8948: reconcile mission state from task ground truth
...
Centralize mission and feature state repair around deterministic task lifecycle evidence.
- Add a reusable mission reconciliation authority with task-move, API, tool, and maintenance callers.
- Repair unambiguous title links while preserving terminal, validation, and audit safeguards.
- Route scheduler moves through the authority and reject duplicate feature-title ownership.
- Expose reconcile controls and document the operator workflow.
Files changed:
.changeset/fn-8948-mission-auto-reconcile.md | 7 +
AGENTS.md | 1 +
docs/missions.md | 8 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 9 +
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../extension-experiment-finalize.test.ts | 2 +
.../__tests__/extension-gitlab-tracking.test.ts | 2 +
.../cli/src/__tests__/extension-web-fetch.test.ts | 2 +
packages/cli/src/extension.ts | 14 +
packages/dashboard/src/mission-routes.ts | 24 +-
.../src/__tests__/agent-mission-tools.test.ts | 2 +-
.../engine/src/__tests__/mission-autopilot.test.ts | 8 +-
.../src/__tests__/mission-state-reconcile.test.ts | 67 +++++
packages/engine/src/agent-tools.ts | 6 +
.../engine/src/execution/gating-classifications.ts | 1 +
packages/engine/src/index.ts | 6 +
packages/engine/src/missions/index.ts | 8 +-
packages/engine/src/missions/mission-autopilot.ts | 106 +------
.../engine/src/missions/mission-feature-sync.ts | 1 +
.../engine/src/missions/mission-state-reconcile.ts | 169 +++++++++++
packages/engine/src/runtimes/in-process-runtime.ts | 4 +-
packages/engine/src/scheduler.ts | 331 +++++----------------
packages/engine/src/util/run-audit.ts | 2 +
24 files changed, 426 insertions(+), 357 deletions(-)
Fusion-Task-Id: FN-8948
Fusion-Task-Lineage: 0fbccef3-eeac-46d2-b3d8-aca679b3657e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 20:32:26 -07:00
gsxdsm
b82f1a41f3
FN-8947: add repairable mission validation controls
...
Add repairable mission-validation badges with clear and re-run flows.
- Persist repair metadata and audit events for mission validation state changes.
- Expose validation repair through dashboard routes, UI controls, engine tools, and CLI capabilities.
- Add database, API, UI, engine, and extension coverage plus operator documentation.
Files changed: .changeset/fn-8947-mission-validation-repair.md | 7 +
docs/missions.md | 15 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 10 +
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../extension-experiment-finalize.test.ts | 2 +
.../__tests__/extension-gitlab-tracking.test.ts | 2 +
.../cli/src/__tests__/extension-web-fetch.test.ts | 2 +
packages/cli/src/__tests__/extension.test.ts | 24 +++
packages/cli/src/extension.ts | 40 ++++
.../mission-status-event-metadata.test.ts | 23 +++
.../postgres/mission-validation-repair.pg.test.ts | 187 ++++++++++++++++++
.../core/src/async-stores/async-mission-store.ts | 216 ++++++++++++++++++---
packages/core/src/index.gate.ts | 5 +
packages/core/src/index.ts | 5 +-
packages/core/src/missions/mission-types.ts | 49 +++++
packages/core/src/types.ts | 7 +
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/api/missions/missions.ts | 13 ++
.../dashboard/app/components/MissionManager.css | 26 ++-
.../dashboard/app/components/MissionManager.tsx | 207 +++++++++++++++++---
.../__tests__/MissionManager.mobile-css.test.ts | 8 +
.../MissionManager.validation-repair.test.tsx | 83 ++++++++
.../__tests__/mission-task-prefix-routes.test.ts | 162 +++++++++++++++-
packages/dashboard/src/mission-routes.ts | 104 +++++++++-
.../src/__tests__/agent-mission-tools.test.ts | 119 +++++++++++-
.../__tests__/mission-feature-sync-lanes.test.ts | 59 +++++-
.../workflow-step-readonly-allowlist.test.ts | 1 +
packages/engine/src/agent-tools.ts | 36 ++++
.../engine/src/execution/gating-classifications.ts | 1 +
packages/engine/src/index.ts | 1 +
.../engine/src/missions/mission-feature-sync.ts | 79 ++++++++
32 files changed, 1430 insertions(+), 67 deletions(-)
Fusion-Task-Id: FN-8947
Fusion-Task-Lineage: b93e5ab6-021c-4d32-bffb-f89f4c3894bc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 19:36:31 -07:00
gsxdsm
00ddafd5fe
FN-8845: persist deterministic spec alignment
...
Persist approved-plan drift alignment on linked mission features.
- Store spec alignment across PostgreSQL and SQLite mission feature projections
- Reconcile and render durable alignment instead of browser-side task joins
- Preserve migration identities and cover drift persistence regressions
Files changed:
docs/architecture.md | 2 +
docs/missions.md | 2 +-
.../core/src/__tests__/planner/spec-lock.test.ts | 1 +
.../src/__tests__/postgres/schema-applier.test.ts | 9 ++++-
.../async-stores/async-mission-store-queries.ts | 5 +++
packages/core/src/missions/mission-store.ts | 9 ++++-
packages/core/src/missions/mission-types.ts | 10 +++++
packages/core/src/planner/spec-lock.ts | 7 +++-
.../0053_mission_feature_spec_alignment.sql | 3 ++
packages/core/src/postgres/schema-applier.ts | 13 +++++-
packages/core/src/postgres/schema/project.ts | 2 +
packages/dashboard/app/api/missions/missions.ts | 2 +
.../dashboard/app/components/MissionManager.tsx | 40 ++++++------------
packages/dashboard/app/components/mission-types.ts | 2 +
.../src/__tests__/plan-approval-status.pg.test.ts | 4 +-
.../src/__tests__/mission-feature-sync.test.ts | 37 ++++++++++++++++-
.../src/__tests__/spec-drift-reconciler.test.ts | 14 +++++++
packages/engine/src/missions/mission-autopilot.ts | 17 +++++---
.../engine/src/missions/mission-feature-sync.ts | 47 +++++++++++++++++++++-
packages/engine/src/project-engine.ts | 3 +-
packages/engine/src/scheduler.ts | 40 +++++++++++-------
packages/engine/src/spec-drift-reconciler.ts | 5 +++
22 files changed, 215 insertions(+), 59 deletions(-)
Fusion-Task-Id: FN-8845
Fusion-Task-Lineage: d4a30472-f1c3-41ba-a61b-3f2be1ad32ab
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 11:50:56 -07:00
gsxdsm
0fc6f3d849
FN-8946: enable attributed agent mission status updates
...
Enable authorized agents to update feature and mission statuses with transactional, attributed audit events.
- Add mission and feature status tools to the Fusion extension and engine allowlists.
- Record bounded actor, reason, and hierarchy metadata for status transitions across every writer.
- Guard linked feature transitions and document the agent-facing workflow.
Files changed:
.changeset/fn-8946-mission-status-writes.md | 7 +
docs/missions.md | 7 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 20 +++
.../skill/fusion/references/fusion-capabilities.md | 2 +
packages/cli/src/__tests__/extension.test.ts | 46 ++++++
packages/cli/src/extension.ts | 27 +++
.../mission-status-event-metadata.test.ts | 50 ++++++
.../__tests__/postgres/mission-store.pg.test.ts | 160 +++++++++++++++++-
.../core/src/async-stores/async-mission-store.ts | 182 +++++++++++++++------
packages/core/src/index.ts | 5 +
packages/core/src/missions/mission-store.ts | 7 +-
packages/core/src/missions/mission-types.ts | 99 +++++++++--
.../src/__tests__/chat-toolset-permissions.test.ts | 24 +++
packages/dashboard/src/mission-routes.ts | 3 +-
.../src/__tests__/agent-mission-tools.test.ts | 42 ++++-
.../src/__tests__/heartbeat-executor.test.ts | 4 +-
.../workflow-step-readonly-allowlist.test.ts | 2 +
packages/engine/src/agent-tools.ts | 18 ++
.../engine/src/execution/gating-classifications.ts | 2 +
20 files changed, 635 insertions(+), 74 deletions(-)
Fusion-Task-Id: FN-8946
Fusion-Task-Lineage: 473cc0e0-e632-48b3-ac84-adaaeb81db4b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 07:30:42 -07:00
gsxdsm
e610c72034
FN-8943: reconcile spec-lock divergence history
...
Preserve prior divergence when a task is re-locked after plan changes.
- Persist immutable spec locks, current-plan evidence, and drift reports.
- Reconcile retained divergence into re-approved alignment state across engine, API, and dashboard views.
- Fence Plan Review acceptance and schema upgrades while retaining migration identity parity.
Files changed:
.changeset/fn-8845-spec-lock-drift-report.md | 7 +
.changeset/fn-8943-spec-lock-divergence.md | 7 +
docs/architecture.md | 17 +-
docs/dashboard-guide.md | 3 +
docs/missions.md | 4 +
.../core/src/__tests__/planner/spec-lock.test.ts | 158 ++++++++++++++
.../src/__tests__/postgres/schema-applier.test.ts | 30 ++-
.../postgres/task-dependency-mutation.pg.test.ts | 74 +++++++
packages/core/src/index.gate.ts | 4 +
packages/core/src/index.ts | 4 +
packages/core/src/planner/drift-report.ts | 152 +++++++++++++
packages/core/src/planner/spec-lock.ts | 182 ++++++++++++++++
.../migrations/0050_spec_lock_drift_report.sql | 29 +++
.../0051_spec_lock_source_revision_bigint.sql | 3 +
packages/core/src/postgres/schema-applier.ts | 25 ++-
packages/core/src/postgres/schema/project.ts | 13 ++
packages/core/src/store.ts | 242 ++++++++++++++++++++-
.../core/src/task-store/branch-and-pr-entities.ts | 32 ++-
packages/core/src/task-store/project-store-ops.ts | 34 ++-
packages/core/src/task-store/task-update.ts | 66 +++++-
packages/core/src/task-store/update-task-deps.ts | 31 ++-
packages/dashboard/app/api.ts | 3 +
packages/dashboard/app/api/tasks/tasks.ts | 22 ++
.../dashboard/app/components/MissionManager.css | 21 ++
.../dashboard/app/components/MissionManager.tsx | 41 +++-
.../dashboard/app/components/TaskDetailModal.css | 26 +++
.../dashboard/app/components/TaskDetailModal.tsx | 62 +++++-
.../__tests__/TaskDetailModal.spec-lock.test.tsx | 80 +++++++
.../__tests__/TaskDetailModal.test-helpers.ts | 2 +
.../src/__tests__/plan-approval-status.pg.test.ts | 81 ++++++-
.../src/routes/register-task-workflow-routes.ts | 59 ++++-
.../src/__tests__/mission-feature-sync.test.ts | 15 +-
.../src/__tests__/spec-drift-reconciler.test.ts | 108 +++++++++
.../engine/src/executor/execute-workflow-graph.ts | 49 ++++-
.../engine/src/missions/mission-feature-sync.ts | 55 ++++-
packages/engine/src/project-engine.ts | 33 +++
packages/engine/src/spec-drift-reconciler.ts | 105 +++++++++
packages/engine/src/triage.ts | 29 +++
38 files changed, 1842 insertions(+), 66 deletions(-)
Fusion-Task-Id: FN-8943
Fusion-Task-Lineage: 2a7f8a38-99aa-4c4b-8c36-41d14c466d21
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 02:56:58 -07:00
gsxdsm
168f7fb9cc
FN-8834: clarify mission merge behavior and branch details
...
Clarify mission merge options and safely surface shared-branch status in Mission Manager.
- Reuse merge behavior guidance across mission create and edit forms.
- Add a manual mission-create link while preserving AI planning as the primary CTA.
- Guard branch-group details against stale or foreign mission data and cover the behavior with tests.
- Update localized copy, mission documentation, and the published-package changeset.
Files changed:
.changeset/fn-8834-mission-merge-guidance.md | 7 +
docs/missions.md | 2 +-
packages/dashboard/app/components/MissionManager.css | 26 ++
packages/dashboard/app/components/MissionManager.tsx | 169 +++++++++----
packages/dashboard/app/components/__tests__/MissionManager.auto-merge.test.tsx | 271 +++++++++++++++++++--
packages/i18n/locales/en/app.json | 1 +
packages/i18n/locales/es/app.json | 1 +
packages/i18n/locales/fr/app.json | 1 +
packages/i18n/locales/ko/app.json | 1 +
packages/i18n/locales/zh-CN/app.json | 1 +
packages/i18n/locales/zh-TW/app.json | 1 +
packages/i18n/src/resources.d.ts | 1 +
12 files changed, 411 insertions(+), 71 deletions(-)
Fusion-Task-Id: FN-8834
Fusion-Task-Lineage: 43b28c43-83d5-41cf-a9ec-0e91117ec091
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-08 10:36:36 -07:00
gsxdsm
7b010ec95f
FN-8824: enforce serial mission slice advancement
...
Keep mission autopilot progression limited to one active, milestone-ordered slice.
- Add atomic store-level admission for the next serially eligible slice.
- Reconcile completed active slices before advancing and route scheduler activation through the shared guard.
- Cover duplicate completion signals, recovery, PostgreSQL, and API behavior; document and release the fix.
Files changed:
.changeset/fn-8824-mission-slice-advancement.md | 7 +
docs/missions.md | 10 +-
.../mission-store.sync-loop-transition.test.ts | 43 ++++++
.../postgres/mission-autopilot.pg.test.ts | 25 ++++
.../core/src/async-stores/async-mission-store.ts | 48 ++++++-
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/missions/mission-store.ts | 37 ++++-
packages/core/src/missions/mission-types.ts | 35 +++++
packages/dashboard/src/mission-routes.ts | 9 +-
.../__tests__/mission-autopilot-end-to-end.test.ts | 95 ++++++++++--
.../engine/src/__tests__/mission-autopilot.test.ts | 22 +++
.../engine/src/__tests__/mission-scheduler.test.ts | 159 +++++++++++----------
packages/engine/src/missions/mission-autopilot.ts | 50 +++----
packages/engine/src/scheduler.ts | 42 +-----
15 files changed, 432 insertions(+), 152 deletions(-)
Fusion-Task-Id: FN-8824
Fusion-Task-Lineage: 22638d56-a51b-424c-aa07-871f544fb7cc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-07 20:56:52 -07:00
gsxdsm
7824150715
FN-8769: protect default-branch mission merges
...
Keep mission group members behind manual release controls when their target is the default branch.
- Create deterministic intermediate branches for project-default mission groups.
- Gate default-branch group routing and auto-merge exemptions behind the normal manual-release flow.
- Cover intermediate and default-branch group behavior with core and engine tests.
Files changed:
...fn-8769-default-branch-group-auto-merge-gate.md | 7 ++
docs/architecture.md | 2 +-
docs/missions.md | 2 +-
.../mission-store.sync-auto-merge.test.ts | 4 +-
packages/core/src/__tests__/task-merge.test.ts | 16 ++-
.../core/src/async-stores/async-mission-store.ts | 12 ++-
packages/core/src/merge/task-merge.ts | 23 +++-
packages/core/src/missions/mission-store.ts | 11 +-
...cutor-live-branch-group-auto-merge-hold.test.ts | 16 ++-
.../src/__tests__/group-merge-coordinator.test.ts | 118 ++++++++++++++++++++-
.../engine/src/__tests__/project-engine.test.ts | 16 ++-
packages/engine/src/executor.ts | 4 +-
.../engine/src/merge/group-merge-coordinator.ts | 13 +++
packages/engine/src/project-engine.ts | 15 ++-
14 files changed, 235 insertions(+), 24 deletions(-)
Fusion-Task-Id: FN-8769
Fusion-Task-Lineage: dff96c8e-ca96-437c-94bf-9691bdf572e9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-03 16:48:25 -07:00
gsxdsm
54c2c1e666
FN-8719: fix stale milestone validation badges
...
Keep persisted milestone validation rollups and dashboard badges synchronized after assertion changes.
- Reconcile assertion mutations and validation rollups atomically within each project.
- Prevent stale rollup and telemetry responses from overwriting newer milestone state.
- Cover repaired and removed failure states with PostgreSQL and dashboard tests.
Files changed:
.changeset/fn-8719-milestone-validation-rollup.md | 7 +
docs/missions.md | 4 +
.../__tests__/postgres/mission-store.pg.test.ts | 61 +++++++
packages/core/src/async-mission-store.ts | 142 ++++++++++------
.../dashboard/app/components/MissionManager.tsx | 108 ++++++++----
.../MissionManager.validation-rollup.test.tsx | 181 +++++++++++++++++++++
6 files changed, 416 insertions(+), 87 deletions(-)
Fusion-Task-Id: FN-8719
Fusion-Task-Lineage: c505211c-935a-4ad3-b35d-81c486e56121
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 14:38:45 -07:00
gsxdsm
3b633512d8
FN-8707: recover noisy mission validator JSON
...
Recover bounded, valid mission validator payloads amid ordinary response formatting noise.
- Extract bounded, string-aware fenced and balanced JSON candidates and prefer the final valid payload.
- Conservatively repair trailing commas and missing closing delimiters while retaining fail-closed assertion validation.
- Cover recovery and irreparable-response behavior, document the safety bounds, and add a patch changeset.
Files changed:
.../fn-8707-mission-validator-json-recovery.md | 7 +
docs/missions.md | 2 +
.../src/__tests__/mission-execution-loop.test.ts | 74 ++++++++-
packages/engine/src/mission-execution-loop.ts | 183 +++++++++++++++------
4 files changed, 204 insertions(+), 62 deletions(-)
Fusion-Task-Id: FN-8707
Fusion-Task-Lineage: 0eb5e5c0-a520-4485-9f54-0376a47a5b5e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 13:37:23 -07:00
gsxdsm
529ab26ba4
FN-8695: fix dashboard assertion CRUD validation
...
Restore dashboard assertion status edits and deletes for store-generated IDs.
- Validate assertion route IDs against the MissionStore-generated format while preserving legacy IDs.
- Dispatch assertion deletes through the shared confirmation handler and surface request failures.
- Cover current ID CRUD routes and desktop/mobile deletion behavior.
Files changed:
.changeset/fn-8695-assertion-id-validation.md | 7 ++
docs/missions.md | 2 +-
.../dashboard/app/components/MissionManager.tsx | 51 ++++++++---
.../MissionManager.delete-confirm.test.tsx | 99 ++++++++++++++++++++
.../mission-assertion-id-validation.test.ts | 100 +++++++++++++++++++++
packages/dashboard/src/mission-routes.ts | 8 +-
6 files changed, 249 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-8695
Fusion-Task-Lineage: b7e2d70f-d3c7-4fdd-92f6-989cf414570b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 13:10:26 -07:00
gsxdsm
39368f4bb8
FN-8694: add content-addressed validation memoization
...
Memoizes mission validation inputs and bounds repeat failures.
- Persist validator input fingerprints and atomically admit validation runs.
- Reuse unchanged static passes while enforcing per-fingerprint failure budgets.
- Add migration coverage, execution-loop tests, and operator documentation.
Files changed:
.changeset/fn-8694-validation-memoization.md | 7 +
docs/missions.md | 6 +
docs/storage.md | 6 +
.../__tests__/postgres/mission-store.pg.test.ts | 40 +++-
packages/core/src/async-mission-store-queries.ts | 24 ++-
packages/core/src/async-mission-store.ts | 65 +++++-
packages/core/src/mission-store.ts | 10 +-
packages/core/src/mission-types.ts | 19 ++
.../0042_fn_8694_validator_input_fingerprint.sql | 9 +
packages/core/src/postgres/schema-applier.ts | 13 +-
packages/core/src/postgres/schema/project.ts | 5 +
.../src/__tests__/mission-execution-loop.test.ts | 72 ++++++-
packages/engine/src/mission-execution-loop.ts | 217 +++++++++++++++++----
13 files changed, 443 insertions(+), 50 deletions(-)
Fusion-Task-Id: FN-8694
Fusion-Task-Lineage: 92a790d5-f2fc-4e71-b9ee-8334ff38b20d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 12:40:24 -07:00
gsxdsm
1aa1516023
FN-8692: harden mission validator assertion matching
...
Make validator assertion identity handling explicit and fail closed for ambiguous legacy responses.
- Include authoritative assertion IDs in validator prompts
- Recover only unique exact-count legacy results positionally
- Reject duplicate unknown and empty assertion IDs with regression coverage
- Document the assertion identity contract and add a patch changeset
Files changed:
.changeset/fn-8692-validator-assertion-ids.md | 7 +
docs/missions.md | 2 +-
.../src/__tests__/mission-execution-loop.test.ts | 142 ++++++++++++++++++++-
packages/engine/src/mission-execution-loop.ts | 70 ++++++++--
4 files changed, 204 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-8692
Fusion-Task-Lineage: 973c65e9-962f-472b-8d42-aef1de830d70
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 09:18:49 -07:00
gsxdsm
fd795883c5
feat(missions): per-mission taskPrefix override for triaged task ids ( #2347 )
...
## Summary
Maintainer re-land of
[#2334 ](https://github.com/Runfusion/Fusion/pull/2334 ) (fork
`flexi767:feat/per-mission-task-prefix`) after resolving merge conflicts
with current `main`.
Fork push was unavailable despite `maintainerCanModify`, so this branch
carries the conflict resolution.
### Feature
- Optional per-mission `taskPrefix` for triaged task ids (inherits
project prefix when unset)
- Dashboard MissionManager + routes + store/triage plumbing
- Postgres migration for `project.missions.task_prefix`
### Conflict resolution
- Main claimed migration **0026** (bigint counters) and **0027**
(workflow IR pin)
- Mission task-prefix migration renumbered **0026 → 0028**
- Baseline `0000_initial.sql` includes `task_prefix` on missions
- `legacy.ts` keeps code-org re-exports; `missions.ts` carries
`taskPrefix` on create/update types
## Test plan
- [ ] CI green (lint/typecheck/build/gate)
- [ ] Create mission with custom prefix; triage feature → task ids use
that prefix
- [ ] Clear mission prefix via PATCH null; new tasks inherit project
prefix
Closes / supersedes #2334 once this lands (or re-point the fork PR).
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Missions can now set an optional per-mission task ID prefix
(overriding the project default).
* Added task prefix support to mission create/edit UI and dashboard
APIs, including normalized uppercase values and validation.
* **Bug Fixes**
* Improved commit hook generation for custom prefixes and special
characters, with safer shell handling to prevent unsafe interpretation.
* **Chores**
* Added PostgreSQL migration and schema-applier support to persist and
propagate mission task prefixes, including upgrade/backfill coverage.
* **Tests**
* Added backend and UI/API test coverage for task-prefix creation,
clearing, and ID minting behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-30 21:35:23 -07:00
gsxdsm
dfb9ca6630
FN-8543: enforce bounded generated-fix remediation
...
Keep generated fix chains within their root retry budget and preserve intervention stops.
- Track retry counts and stop reasons on the canonical root feature.
- Persist project-isolated lineage stops across generated-fix removal and archive paths.
- Serialize stop recording with generated-fix admission and expose conflict-safe mission resume behavior.
Files changed:
.changeset/fn-8543-bounded-fix-lineage.md | 7 +
docs/missions.md | 6 +-
.../__tests__/postgres/mission-store.pg.test.ts | 72 +++++++
packages/core/src/async-mission-store-queries.ts | 91 ++++++++-
packages/core/src/async-mission-store.ts | 206 ++++++++++++++++++---
packages/core/src/index.ts | 2 +-
packages/core/src/mission-store.ts | 10 +
packages/core/src/mission-types.ts | 7 +
.../0035_fn_8543_mission_lineage_stop.sql | 31 ++++
packages/core/src/postgres/schema-applier.ts | 18 +-
packages/core/src/postgres/schema/project.ts | 21 +++
.../core/src/task-store/archive-lifecycle-2.ts | 15 +-
.../core/src/task-store/async-archive-lineage.ts | 10 +-
packages/dashboard/src/mission-routes.ts | 14 +-
packages/engine/src/mission-execution-loop.ts | 30 ++-
15 files changed, 495 insertions(+), 45 deletions(-)
Fusion-Task-Id: FN-8543
Fusion-Task-Lineage: 24c03d63-5914-4072-aa17-16862432fc78
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-23 16:12:44 -07:00
gsxdsm
e5caea542a
FN-8544: gate mission remediation behind autopilot
...
Keep mission validation report-only until an operator explicitly enables autopilot.
- Gate validator-created remediation features and task dispatch behind mission autopilot.
- Audit attributed status and autopilot transitions atomically across mission stores.
- Expose mission autonomy controls and document the opt-in lifecycle.
Files changed:
.changeset/fn-8544-mission-autonomy-audit.md | 7 ++
docs/missions.md | 10 +-
packages/cli/src/extension.ts | 26 ++++-
.../__tests__/postgres/mission-store.pg.test.ts | 27 +++++
packages/core/src/async-mission-store.ts | 70 +++++++++++--
packages/core/src/index.gate.ts | 3 +
packages/core/src/index.ts | 3 +
packages/core/src/mission-store.ts | 113 +++++++++++++--------
packages/core/src/mission-types.ts | 22 ++++
.../dashboard/app/components/MissionManager.tsx | 1 +
packages/dashboard/src/mission-routes.ts | 25 +++--
.../src/__tests__/agent-mission-tools.test.ts | 17 +++-
.../src/__tests__/mission-execution-loop.test.ts | 21 ++++
packages/engine/src/agent-heartbeat.ts | 4 +-
packages/engine/src/agent-tools.ts | 30 +++++-
packages/engine/src/executor.ts | 5 +-
packages/engine/src/mission-autopilot.ts | 51 +++++-----
packages/engine/src/mission-execution-loop.ts | 49 ++++++---
packages/engine/src/triage.ts | 5 +-
19 files changed, 377 insertions(+), 112 deletions(-)
Fusion-Task-Id: FN-8544
Fusion-Task-Lineage: 23a69923-5a19-407e-9fe2-8973c166ee9a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-23 15:25:09 -07:00
gsxdsm
e7c9b2ac80
FN-8542: separate milestone acceptance from feature validation
...
Keep feature validation scoped to linked feature assertions while evaluating milestone acceptance at rollup.
- Add assertion scope and origin provenance with database migration support
- Synchronize milestone acceptance prose to a canonical milestone assertion
- Prevent milestone assertions from affecting feature verdicts and document the completion contract
- Cover scoped validation and milestone rollup behavior with core and engine tests
Files changed:
.changeset/fn-8542-feature-validation-scope.md | 7 +
docs/missions-completion-contract.md | 25 +-
docs/missions.md | 6 +-
.../mission-store.sync-loop-transition.test.ts | 53 +++++
packages/core/src/async-mission-store-queries.ts | 17 +-
packages/core/src/async-mission-store.ts | 58 ++++-
packages/core/src/mission-store.ts | 118 +++++++++-
packages/core/src/mission-types.ts | 25 ++
.../core/src/postgres/migrations/0000_initial.sql | 2 +
.../0034_milestone_assertion_provenance.sql | 30 +++
packages/core/src/postgres/schema-applier.ts | 24 +-
packages/core/src/postgres/schema/project.ts | 1 +
.../src/__tests__/mission-execution-loop.test.ts | 161 ++++++++++++-
packages/engine/src/mission-execution-loop.ts | 262 ++++++++++++++++-----
14 files changed, 700 insertions(+), 89 deletions(-)
Fusion-Task-Id: FN-8542
Fusion-Task-Lineage: cf112d31-376a-456e-be08-225eab5de393
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-23 14:39:44 -07:00
gsxdsm
3d0ce2ed3a
FN-8545: enforce mission lineage task admission
...
Protect feature bootstrap task creation with mission-lineage admission rules.
- Restrict supervised agents to linked autonomous mission features
- Atomically claim defined feature tasks and preserve duplicate ownership
- Lock defined feature claims to prevent concurrent bootstrap inserts
- Document admission behavior and add PostgreSQL and delegation coverage
Files changed:
.changeset/fn-8545-mission-admission.md | 7 +
docs/agents.md | 6 +
docs/missions.md | 12 +-
.../__tests__/postgres/mission-store.pg.test.ts | 119 ++++++++++++
packages/core/src/async-mission-store.ts | 203 +++++++++++++++++++--
packages/core/src/duplicate-guard.ts | 14 +-
packages/core/src/mission-store.ts | 15 ++
packages/core/src/task-store/task-creation.ts | 152 ++++++++++-----
.../src/__tests__/agent-tools-delegation.test.ts | 152 ++++++++++++++-
packages/engine/src/agent-tools.ts | 151 ++++++++++++++-
10 files changed, 753 insertions(+), 78 deletions(-)
Fusion-Task-Id: FN-8545
Fusion-Task-Lineage: c6e1b46d-f434-4b07-93bc-27e1f6b491b1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-23 14:21:29 -07:00
gsxdsm
e734ed8a48
FN-8541: expose actionable validator diagnostics
...
Surface normalized, secret-safe validator evidence and assertion verdicts across mission events and remediation work.
- Normalize, redact, bound, and render per-assertion validation diagnostics in shared core APIs.
- Attach verdict-driven diagnostics to failure events and generated fixes while suppressing duplicate triage noise.
- Display validator evidence in Mission activity and document the operator workflow.
- Add core and engine coverage for evidence, mixed blocked verdicts, and triage behavior.
Files changed:
.changeset/fn-8541-validator-diagnostics.md | 7 ++
docs/missions.md | 17 +++
.../mission-store.validation-diagnostics.test.ts | 65 ++++++++++
packages/core/src/async-mission-store.ts | 8 +-
packages/core/src/index.gate.ts | 10 ++
packages/core/src/index.ts | 10 ++
packages/core/src/mission-store.ts | 10 +-
packages/core/src/mission-types.ts | 136 +++++++++++++++++++++
.../dashboard/app/components/MissionManager.css | 21 ++++
.../dashboard/app/components/MissionManager.tsx | 56 +++++++++
packages/dashboard/app/components/mission-types.ts | 3 +
.../src/__tests__/mission-execution-loop.test.ts | 44 +++++++
.../mission-validator-behavioral-posture.test.ts | 37 +++++-
packages/engine/src/mission-execution-loop.ts | 117 +++++++++++++-----
14 files changed, 501 insertions(+), 40 deletions(-)
Fusion-Task-Id: FN-8541
Fusion-Task-Lineage: b226fc34-f35c-4ce5-bcb5-e418529caaa7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-23 13:21:10 -07:00
flexi767
8e6985aed3
feat(core): reconcile archived mission evidence atomically ( #2379 )
...
## Summary
- add an atomic PostgreSQL operation that reconciles a mission feature
with a terminal delivery task
- support retained archived-task evidence without unarchiving or waking
mission automation
- reject missing, active, deleted-without-archive, and duplicate-linked
task evidence without partial mutation
- route the reconciliation endpoint through the transactional store
operation
## Root cause
Mission reconciliation previously relied on ordinary task-link and
lifecycle paths that cannot safely use retained archived task evidence.
That made historical delivery repair either impossible or vulnerable to
partial linkage and unintended mission-loop side effects.
## Scope
This PR contains the reusable product capability recovered from FX-001.
It intentionally does not perform the project-specific 69-row live data
mutation; that operational reconciliation was blocked by ambiguous
evidence and belongs outside the source change.
## Validation
- PostgreSQL mission-store tests: 23 passed
- dashboard reconciliation route tests: 3 passed
- `@fusion/core` typecheck
- `@fusion/dashboard` typecheck
- targeted ESLint
- strict changeset validation
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added safer reconciliation for completed mission features using
validated terminal task evidence.
* Supports eligible archived tasks without restoring or relinking them.
* Reconciliation is idempotent and updates related mission progress
consistently.
* **Bug Fixes**
* Prevented conflicting or invalid task evidence from changing mission
state.
* Added atomic rollback when reconciliation encounters an error.
* Improved API responses for missing resources and reconciliation
conflicts.
* **Documentation**
* Expanded reconciliation safety, error, idempotency, and
duplicate-cleanup guidance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: fusion-merge-train <merge-train@topkoli.local >
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-07-22 13:46:08 -07:00
gsxdsm
1f77935358
FN-8307: guard heartbeat task creation with mission lineage
...
Require autonomous heartbeat work to prove and retain approved mission lineage.
- Validate and persist mission lineage for created and delegated tasks
- Block off-mission heartbeat actions and reconcile roadmap failures without completion
- Renew and release mission symbol locks across workflow lifecycle transitions
Files changed:
.changeset/fn-8307-heartbeat-mission-guard.md | 7 ++
docs/missions.md | 4 +
packages/core/src/__tests__/symbol-locks.test.ts | 12 +++
packages/core/src/task-store/task-update.ts | 17 +++-
.../engine/src/__tests__/agent-action-gate.test.ts | 9 +-
.../src/__tests__/agent-tools-delegation.test.ts | 41 +++++++-
.../src/__tests__/gating-classifications.test.ts | 7 +-
.../src/__tests__/mission-feature-sync.test.ts | 10 +-
.../src/__tests__/mission-symbol-admission.test.ts | 25 +++++
.../src/__tests__/permanent-agent-gating.test.ts | 3 +-
packages/engine/src/agent-action-gate.ts | 28 +++++-
packages/engine/src/agent-heartbeat-prompts.ts | 14 +--
packages/engine/src/agent-heartbeat.ts | 34 +++++--
packages/engine/src/agent-tools.ts | 103 +++++++++++++++++++--
packages/engine/src/executor.ts | 2 +-
packages/engine/src/gating-classifications.ts | 11 ++-
packages/engine/src/mission-feature-sync.ts | 39 +++-----
packages/engine/src/mission-symbol-admission.ts | 35 ++++++-
packages/engine/src/permanent-agent-gating.ts | 22 +++++
packages/engine/src/scheduler.ts | 21 +++--
packages/engine/src/step-session-executor.ts | 2 +-
packages/engine/src/triage.ts | 2 +-
22 files changed, 369 insertions(+), 79 deletions(-)
Fusion-Task-Id: FN-8307
Fusion-Task-Lineage: 4ca2ccac-db6e-4e5c-9cc6-d62a40d4f30a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-19 22:43:13 -07:00
gsxdsm
2c72ac0c0c
FN-8387: add canonical lineage approval predicate
...
Centralize symbol-lock admission rules for resolved mission lineage.
- Add a pure core predicate with stable approval and rejection reasons.
- Export the lineage contract and cover status and plan-fingerprint cases.
- Document scheduler ownership and the admission requirements.
Files changed:
docs/missions.md | 15 +++
.../__tests__/symbol-lock-lineage-approval.test.ts | 123 +++++++++++++++++++++
packages/core/src/index.ts | 10 ++
packages/core/src/symbol-lock-lineage-approval.ts | 87 +++++++++++++++
4 files changed, 235 insertions(+)
Fusion-Task-Id: FN-8387
Fusion-Task-Lineage: dc2d8518-ffff-4062-b11f-a162dd1b10da
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-19 15:20:39 -07:00
gsxdsm
c95e08ea21
FN-8297: add research finding promotion to mission features
...
Bridge completed research findings into durable mission roadmap features.
- Persist stable finding and citation provenance on mission features
- Add idempotent promotion APIs, dashboard controls, and agent tooling
- Document the promotion flow and cover finding identity and feature synchronization
Files changed:
.changeset/fn-8297-research-mission-bridge.md | 7 ++++
docs/missions.md | 4 +++
docs/research.md | 4 +++
.../__tests__/research-finding-identity.test.ts | 15 +++++++++
packages/core/src/async-mission-store-queries.ts | 26 +++++++++++++++
packages/core/src/async-mission-store.ts | 16 +++++++++
packages/core/src/index.gate.ts | 3 ++
packages/core/src/index.ts | 3 ++
packages/core/src/mission-types.ts | 13 ++++++++
.../core/src/postgres/migrations/0000_initial.sql | 4 +++
.../0023_research_feature_provenance.sql | 8 +++++
packages/core/src/postgres/schema-applier.ts | 13 +++++++-
packages/core/src/postgres/schema/project.ts | 5 +++
packages/core/src/research-feature-promotion.ts | 38 ++++++++++++++++++++++
packages/core/src/research-types.ts | 21 ++++++++++++
packages/core/src/types.ts | 1 +
packages/dashboard/app/api/legacy.ts | 21 ++++++++++++
packages/dashboard/app/components/ResearchView.tsx | 19 ++++++-----
packages/dashboard/app/hooks/useResearch.ts | 3 ++
packages/dashboard/src/chat.ts | 4 +--
packages/dashboard/src/research-routes.ts | 37 +++++++++++++++++----
.../src/__tests__/agent-mission-tools.test.ts | 14 +++++++-
.../src/__tests__/mission-feature-sync.test.ts | 20 ++++++++++++
packages/engine/src/agent-tools.ts | 26 +++++++++++++++
packages/engine/src/mission-feature-sync.ts | 1 +
25 files changed, 308 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-8297
Fusion-Task-Lineage: ffef4d26-1372-466a-8d3d-2b9b5cc9a53b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-18 16:18:15 -07:00
gsxdsm
d51ce46db5
FN-8295: add persisted ideation mission handoffs
...
Persist bounded ideation sessions through agent tools, the Command Center, and atomic Mission convergence.
- Store ideation sessions and divergent candidates in PostgreSQL with async APIs and migration support.
- Expose gated ideation tools, chat routes, and agent lifecycle integration.
- Add the Ideation panel, documentation, release metadata, and regression coverage.
Files changed:
.changeset/fn-8295-ideation-diverge-converge.md | 7 ++
docs/ideation/persisted-diverge-converge.md | 22 ++++
docs/missions.md | 4 +
.../__tests__/postgres/ideation-store.pg.test.ts | 57 +++++++++
packages/core/src/async-ideation-store-queries.ts | 117 +++++++++++++++++
packages/core/src/async-ideation-store.ts | 138 +++++++++++++++++++++
packages/core/src/async-mission-store.ts | 27 ++--
packages/core/src/ideation-types.ts | 69 +++++++++++
packages/core/src/index.ts | 3 +
.../core/src/postgres/migrations/0022_ideation.sql | 67 ++++++++++
packages/core/src/postgres/schema-applier.ts | 18 ++-
packages/core/src/postgres/schema/project.ts | 49 +++++++-
packages/core/src/store.ts | 8 +-
packages/core/src/task-store/remaining-ops-8.ts | 14 +++
.../components/command-center/CommandCenter.tsx | 7 +-
.../components/command-center/IdeationPanel.css | 18 +++
.../components/command-center/IdeationPanel.tsx | 58 +++++++++
.../__tests__/CommandCenter.test.tsx | 6 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 1 +
packages/dashboard/src/__tests__/chat.test.ts | 1 +
.../__tests__/ideation-tool-route-parity.test.ts | 29 +++++
packages/dashboard/src/chat.ts | 4 +
packages/dashboard/src/ideation-routes.ts | 50 ++++++++
.../src/routes/register-integrated-routers.ts | 2 +
.../src/__tests__/agent-ideation-tools.test.ts | 40 ++++++
.../src/__tests__/gating-classifications.test.ts | 16 +++
.../src/__tests__/permanent-agent-gating.test.ts | 2 +
packages/engine/src/agent-heartbeat.ts | 4 +-
packages/engine/src/agent-tools.ts | 67 ++++++++++
packages/engine/src/executor.ts | 2 +
packages/engine/src/gating-classifications.ts | 8 ++
packages/engine/src/index.ts | 1 +
packages/engine/src/triage.ts | 2 +
33 files changed, 897 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-8295
Fusion-Task-Lineage: 1b8b0752-22bd-4b2f-aebd-4305c63abcf9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-18 13:18:08 -07:00
gsxdsm
8d1620ea23
FN-8294: expose action-gated Mission hierarchy tools
...
Expose project-scoped Mission hierarchy operations to engine agents and eligible dashboard chat sessions.
- Add Mission, milestone, slice, and feature tool definitions backed by MissionStore
- Classify hierarchy mutations for action and permanent-agent approval gates
- Wire gated tool access through triage, executor, heartbeat, CLI, and chat lanes
- Cover tool availability, mutation gating, and chat integration with tests and documentation
Files changed:
.changeset/fn-8294-mission-engine-tools.md | 7 ++
docs/missions.md | 8 ++
packages/cli/src/extension.ts | 2 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 48 +++++++++
packages/dashboard/src/__tests__/chat.test.ts | 1 +
packages/dashboard/src/chat.ts | 113 ++++++++++++++++++++-
.../src/__tests__/agent-mission-tools.test.ts | 43 ++++++++
packages/engine/src/__tests__/triage.test.ts | 34 ++++++-
packages/engine/src/agent-heartbeat.ts | 4 +-
packages/engine/src/agent-tools.ts | 64 ++++++++++++
packages/engine/src/executor.ts | 2 +
packages/engine/src/gating-classifications.ts | 11 ++
packages/engine/src/index.ts | 17 ++++
packages/engine/src/triage.ts | 111 ++++++++++++++++++++
14 files changed, 457 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-8294
Fusion-Task-Lineage: ab0f248b-8a38-40e3-b297-79f9dbe18075
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-18 10:31:59 -07:00
gsxdsm
2b455672c6
FN-8275: clarify mission merge behavior
...
Clarify mission merge choices and surface shared branch status in mission detail.
- Explain auto-merge and single-pull-request behavior in mission forms
- Show mission-owned shared branch member and PR status
- Cover UI behavior and PostgreSQL triage auto-merge cascading
Files changed:
.changeset/fn-8275-mission-merge-summary.md | 7 ++
docs/missions.md | 2 +-
.../dashboard/app/components/MissionManager.tsx | 75 ++++++++++++++++++++++
.../__tests__/MissionManager.auto-merge.test.tsx | 64 ++++++++++++++++++
.../mission-auto-merge-cascade.pg.test.ts | 58 +++++++++++++++++
5 files changed, 205 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8275
Fusion-Task-Lineage: cd259293-b68e-4bc5-803e-40d2287d8438
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-18 09:41:25 -07:00
gsxdsm
69e7a34077
FN-8273: add mission auto-merge overrides
...
Allow operators to override project auto-merge behavior for each mission.
- Add create and update API support for mission auto-merge overrides, including clearing inherited behavior.
- Expose inherited, auto-merge, and single-pull-request choices in all mission forms.
- Apply disabled mission auto-merge to newly triaged tasks and cover storage, API, and UI behavior.
- Document the override and add a CLI changeset.
Files changed:
.changeset/fn-8273-mission-auto-merge.md | 7 ++
docs/missions.md | 4 +
.../mission-store.sync-auto-merge.test.ts | 22 ++++
.../__tests__/postgres/mission-store.pg.test.ts | 35 ++++++
packages/core/src/async-mission-store.ts | 5 +
packages/core/src/mission-store.ts | 5 +
packages/dashboard/app/api/legacy.ts | 4 +-
.../dashboard/app/components/MissionManager.tsx | 55 +++++++++
.../__tests__/MissionManager.auto-merge.test.tsx | 132 +++++++++++++++++++++
packages/dashboard/app/components/mission-types.ts | 2 +
packages/dashboard/src/mission-routes.ts | 18 ++-
.../routes/__tests__/mission-autoMerge-e2e.test.ts | 66 +++++++++++
12 files changed, 351 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8273
Fusion-Task-Lineage: d24d7c22-5a14-4446-b3e1-c35b2f0480c3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-18 08:01:44 -07:00
gsxdsm
28878d8125
FN-8206: validate landed merge checkout
...
Validate mission assertions against the delivered merge revision rather than an ambient working branch.
- Materialize and dispose a detached checkout at mergeDetails.commitSha for validator sessions.
- Defer failed validation when landed-code ancestry cannot be proven, preventing spurious fix features.
- Link validator runs to their board tasks and document the inspection behavior.
Files changed:
.changeset/fn-8206-mission-validator-inspection-root.md | 7 +
docs/missions.md | 2 +
packages/engine/src/__tests__/mission-execution-loop.test.ts | 278 +++++++++++++--------
packages/engine/src/mission-execution-loop.ts | 160 ++++++++----
4 files changed, 298 insertions(+), 149 deletions(-)
Fusion-Task-Id: FN-8206
Fusion-Task-Lineage: dfd1eb21-fcdf-4722-acb8-416750f4f40b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 10:00:18 -07:00
gsxdsm
3d26d4e74b
FN-7127: standardize task show tool naming
...
Unify task-show references so planning, triage, docs, and telemetry use fn_task_show consistently.
- Replace legacy fn_task_get guidance and examples with fn_task_show across agent prompts, mission planning, triage, and docs.
- Keep fn_task_get as a deprecated read-only recognition alias for historical or in-flight calls.
- Update tests and changesets to cover the unified tool name and usage telemetry.
Files changed:
.changeset/FN-7118-shared-task-read-tools.md | 2 +-
.changeset/FN-7127-unify-task-show-tool-name.md | 7 ++++++
docs/cli-reference.md | 2 +-
docs/missions.md | 2 +-
.../cli/skill/fusion/references/engine-tools.md | 2 +-
packages/core/src/__tests__/usage-events.test.ts | 1 +
packages/core/src/agent-prompts.ts | 12 +++++-----
.../__tests__/milestone-slice-interview.test.ts | 2 +-
.../src/__tests__/mission-interview.test.ts | 2 +-
.../src/__tests__/planning-board-tools.test.ts | 6 ++---
.../dashboard/src/milestone-slice-interview.ts | 4 ++--
packages/dashboard/src/mission-interview.ts | 2 +-
packages/dashboard/src/planning-board-tools.ts | 10 +++++---
packages/dashboard/src/planning.ts | 2 +-
.../src/__tests__/agent-task-read-tools.test.ts | 28 +++++++++++++++-------
packages/engine/src/__tests__/triage.test.ts | 6 ++---
packages/engine/src/agent-tools.ts | 5 +++-
packages/engine/src/gating-classifications.ts | 8 +++++--
packages/engine/src/triage.ts | 12 ++++++----
19 files changed, 74 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-7127
Fusion-Task-Lineage: adf5a127-2741-4c88-97b3-aab239ab3960
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 12:25:53 -07:00
copilot-swe-agent[bot]
78bd016743
fix(merge): resolve merge conflicts with origin/main
...
- Renumber behavioral verification schema migration from 118→124
(main added migrations 118-123 for usage_events, knowledge_pages,
deployments/incidents, token usage, source-issue closure, LOC stats)
- Combine backend + timeoutMsOverride params in verification-utils.ts
- Accept main's quarantine rescue for AI-merge suites (FN-6433)
- Update schema version assertions to 124 across test files
2026-06-19 23:47:20 +00:00
gsxdsm
963362cd43
FN-6490: add mission-goal linking controls
...
Add bidirectional mission-goal linking in the dashboard with route support and tests.
- Add Goals view controls to list, link, unlink, and navigate linked missions.
- Add Mission detail controls to link active goals and unlink existing goal chips while refreshing summaries.
- Expose goal-to-mission lookup through the goals API and cover route and UI behavior.
- Update mission and dashboard docs for cross-linking flows.
Files changed:
docs/dashboard-guide.md | 4 +-
docs/missions.md | 8 +-
packages/dashboard/app/App.tsx | 2 +-
packages/dashboard/app/components/GoalsView.css | 90 +++++++++-
packages/dashboard/app/components/GoalsView.tsx | 191 ++++++++++++++++++++-
.../dashboard/app/components/MissionManager.css | 38 +++-
.../dashboard/app/components/MissionManager.tsx | 125 +++++++++++++-
.../app/components/__tests__/GoalsView.test.tsx | 149 ++++++++++++++--
.../__tests__/MissionManager.goal-links.test.tsx | 140 +++++++++++++++
.../dashboard/src/__tests__/goals-routes.test.ts | 70 +++++++-
packages/dashboard/src/goals-routes.ts | 37 +++-
11 files changed, 821 insertions(+), 33 deletions(-)
Fusion-Task-Id: FN-6490
Fusion-Task-Lineage: aa51e053-04c5-4124-90a0-bc421c8f979f
2026-06-16 15:08:24 -07:00
gsxdsm
91180fb15b
feat(engine): recovery/reaper safety audit + close reaper slice-deadlock (U7)
...
Widens the stranded-done recovery branch so a reaped task-less validating/done
feature is re-driven to a terminal verdict instead of stalling its slice forever
(closes the reaper->slice-deadlock P0). Adds a Surface Enumeration + adversarial
re-drive reliability suite (git-clean, no duplicate Fix Features, terminal
verdict, no deadlock) gating release. Updates missions docs + CONCEPTS for the
default-to-fail posture, non-mutating verification, and inconclusive verdict.
Adds changeset.
2026-06-12 01:57:04 -07:00
gsxdsm
2d81a95ad9
FN-5985: align mission goal link errors
...
Align mission goal link write paths on the documented GOAL_NOT_FOUND contract.
- return 400 GOAL_NOT_FOUND from linkable goal validation instead of 404 when a goal is missing
- update mission goal route tests to assert the new error payload across create, patch, set, and add flows
- document the link-vs-unlink missing-goal behavior and add a patch changeset for the published CLI package
Files changed:
.../FN-5985-mission-goal-not-found-contract.md | 5 ++++
docs/missions.md | 2 +-
.../__tests__/mission-goal-links-routes.test.ts | 32 +++++++++++++++++-----
packages/dashboard/src/mission-routes.ts | 9 +++++-
4 files changed, 39 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-5985
Fusion-Task-Lineage: 5649266e-5813-41b4-8a54-c7c46df61a35
2026-06-07 20:23:07 -07:00
gsxdsm
fb6b441fbe
FN-5960: add unlinked mission advisory reporting
...
Add explicit visibility for active missions that remain intentionally unlinked to goals.
- document the no-backfill decision with an engine-emitted unlinked mission advisory
- add a scheduler reporter that emits one deduped workflow insight for active missions without goal links and falls back to task logs when insight storage is unavailable
- cover the advisory reporter and scheduler integration with focused tests
- clear PR remediation errors when changing the Create Pull Request base branch
Files changed:
docs/missions.md | 2 +
.../dashboard/app/components/PrCreateModal.tsx | 2 +
packages/engine/src/__tests__/scheduler.test.ts | 8 +
.../unlinked-missions-advisory-reporter.test.ts | 170 +++++++++++++++++++++
packages/engine/src/scheduler.ts | 18 +++
.../src/unlinked-missions-advisory-reporter.ts | 117 ++++++++++++++
6 files changed, 317 insertions(+)
Fusion-Task-Id: FN-5960
Fusion-Task-Lineage: efdbb4f5-fbd5-4ed7-9b9e-58706041d993
2026-06-07 18:51:46 -07:00
gsxdsm
26bc80a0ad
FN-5958: add mission goal linking to create and update flows
...
Expand mission goal-link management across the REST API, CLI, and pi extension.
- accept optional goalIds during mission create and patch requests, and enforce archived-goal rejection while keeping unlink permissive
- add repeatable --goal support to fn mission create and reuse goal validation for CLI linking
- expose archived-goal errors in pi-extension mission goal tools and document the new behavior
Files changed:
.changeset/FN-5958-mission-goal-links.md | 10 +
docs/cli-reference.md | 8 +-
docs/missions.md | 15 +-
packages/cli/src/__tests__/bin.test.ts | 34 ++++
packages/cli/src/__tests__/extension-mission-goal-tools.test.ts | 36 ++++
packages/cli/src/bin.ts | 24 ++-
packages/cli/src/commands/mission.ts | 29 ++-
packages/cli/src/extension.ts | 7 +
packages/dashboard/src/__tests__/mission-goal-links-routes.test.ts | 201 ++++++++++++++++++++-
packages/dashboard/src/mission-routes.ts | 66 +++++--
10 files changed, 390 insertions(+), 40 deletions(-)
Fusion-Task-Id: FN-5958
Fusion-Task-Lineage: cf9d6013-5484-439d-b66d-44cac843c6ef
2026-06-03 22:31:23 -07:00
gsxdsm
866d01f532
FN-5959: bridge task goal provenance from mission links
...
Bridge mission-linked task provenance into goal diagnostics.
- derive task goal ids and goal records from the linked mission hierarchy with a task mission fallback
- record provenanceGoalIds in goal-injection diagnostics, run-audit metadata, and executor task logs
- add regression coverage and mission/diagnostics docs for derived task-to-goal provenance
Files changed:
docs/diagnostics.md | 5 +-
docs/missions.md | 19 ++++
packages/core/src/__tests__/mission-store.test.ts | 123 +++++++++++++++++++++
packages/core/src/mission-store.ts | 55 ++++++++-
packages/engine/src/__tests__/goal-injection-diagnostics-wiring.test.ts | 35 +++++-
packages/engine/src/goal-injection-diagnostics.ts | 21 +++-
6 files changed, 247 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-5959
Fusion-Task-Lineage: 7c76ae98-37b1-421c-b477-a0147d034a4c
2026-06-03 15:32:29 -07:00
gsxdsm
0971eced30
FN-5920: prefer mission detail event count for activity tab
...
Use mission detail event counts as the authoritative pre-load source for mission activity.
- add mission hierarchy eventCount support in core and dashboard mission types
- return mission eventCount from mission detail APIs and document the field
- prefer the detail eventCount over stale list summaries before activity events load
- add coverage for store, API, and MissionManager pre-load count behavior
Files changed:
docs/missions.md | 2 +-
packages/core/src/__tests__/mission-store.test.ts | 18 +++++++++
packages/core/src/mission-store.ts | 6 +++
packages/core/src/mission-types.ts | 2 +
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/components/MissionManager.tsx | 12 +++++-
packages/dashboard/app/components/__tests__/MissionManager.test.tsx | 46 +++++++++++++++++++++-
packages/dashboard/app/components/mission-types.ts | 1 +
packages/dashboard/src/__tests__/mission-e2e.test.ts | 2 +
9 files changed, 86 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-5920
Fusion-Task-Lineage: a0269499-d34a-495d-89fc-0534bb62a94e
2026-06-02 23:47:32 -07:00
gsxdsm
577ce12a18
FN-5898: add unlinked mission goal indicator
...
Document the manual no-backfill mission-goal policy and flag active missions that still need explicit goal links.
- document the mission→goal linkage model, explicit no-backfill decision, and manual linkage workflow in missions docs
- include linkedGoalCount in mission summaries and cover single-summary/batched-summary behavior in MissionStore tests
- show an Unlinked badge for active non-interview missions with zero linked goals and add MissionManager coverage
Files changed:
.changeset/fn-5898-mission-goal-unlinked-indicator.md | 5 ++
docs/missions.md | 18 ++++--
packages/core/src/__tests__/mission-store.test.ts | 32 +++++++++-
packages/core/src/mission-store.ts | 25 +++++++-
packages/dashboard/app/components/MissionManager.css | 6 ++
packages/dashboard/app/components/MissionManager.tsx | 14 ++++
packages/dashboard/app/components/__tests__/MissionManager.test.tsx | 74 ++++++++++++++++++++++
packages/dashboard/app/components/mission-types.ts | 1 +
8 files changed, 166 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-5898
Fusion-Task-Lineage: e31e9544-4e03-4b52-afbb-e372314b997e
2026-06-02 18:15:14 -07:00