gsxdsm
2b99b365de
FN-9141: rescue plugin-runner tests and enforce quarantine lockstep
...
Rescue the plugin-runner suite before deletion while making quarantine records mechanically consistent.
- preserve logger assertions across worker-reused mock cleanup with a stable hoisted logger
- remove the rescued suite from the quarantine ledger and Vitest exclusion
- enforce ledger-to-exclude lockstep and cover missing or dangling quarantine entries
- document the reproduction evidence, rescue disposition, and strict checker behavior
Files changed:
.../suite-only-flakes-observed-register.md | 14 +-
docs/testing.md | 17 +-
.../engine/src/__tests__/plugin-runner.test.ts | 37 ++--
packages/engine/vitest.config.ts | 14 +-
scripts/__tests__/check-quarantine-ledger.test.mjs | 217 +++++++++---------
scripts/__tests__/ci-test-shard-timings.test.mjs | 5 +-
scripts/check-quarantine-ledger.mjs | 245 +++++++++++++--------
scripts/lib/test-quarantine.json | 10 +-
8 files changed, 314 insertions(+), 245 deletions(-)
Fusion-Task-Id: FN-9141
Fusion-Task-Lineage: 5b0549bf-3cc6-495e-bf99-a30a2dffb029
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-17 05:25:17 -07:00
gsxdsm
6d7b4a3ac3
FN-9140: make Vitest timeout ownership surveys deterministic
...
Replace ambiguous setup-boundary observations with calibrated, repeatable timeout ownership evidence.
- record fixture lifecycle events in an append-only JSONL ledger with process-safe ordering
- classify four timeout-budget arms across repeated isolate-mode cells and fail closed on incomplete evidence
- expand connectionless unit coverage and document the terminal insufficient-data survey result
Files changed:
.../test-failures/postgres-ddl-admission-bound.md | 2 +
.../vitest-setup-boundary-timeout-ownership.md | 37 +++
docs/testing.md | 2 +-
scripts/__tests__/pg-setup-boundary-probe.test.mjs | 195 ++++++++----
scripts/pg-setup-boundary-probe.mjs | 341 ++++++++++++---------
5 files changed, 371 insertions(+), 206 deletions(-)
Fusion-Task-Id: FN-9140
Fusion-Task-Lineage: 9c6970b8-af80-400a-b2b2-49718d4fe87f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 22:47:53 -07:00
gsxdsm
2c3a47368f
FN-9136: Characterize PostgreSQL fork database reuse
...
Characterize safe per-fork PostgreSQL database reuse while documenting why the production experiment remains reverted.
- add a bounded pool primitive with reset, verification, discard, and ownership fencing
- cover recycling, poison handling, capacity, and reclaim namespace behavior
- align PostgreSQL campaign documentation with the dead-fork leak rejection
Files changed:
.../test-failures/postgres-ddl-admission-bound.md | 4 +-
.../suite-only-flakes-observed-register.md | 4 +-
docs/testing.md | 4 +-
.../core/src/__test-utils__/pg-fork-db-pool.ts | 184 +++++++++++++++++++++
.../__tests__/pg-fork-db-pool-ownership.test.ts | 36 ++++
.../core/src/__tests__/pg-fork-db-pool.test.ts | 60 +++++++
6 files changed, 287 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-9136
Fusion-Task-Lineage: 9e14e0eb-d957-4207-977e-2d913e78750f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 22:06:38 -07:00
gsxdsm
1a3e68de5d
FN-9139: add bounded PostgreSQL pre-admission measurement
...
Establish an inert PostgreSQL setup signal and repeatable evidence tooling without changing harness behavior.
- add explicit setup participation semantics and inertness coverage
- survey Vitest setup boundaries with isolated report-only fixtures
- bound interleaved campaigns by process group and campaign deadline
- reject missing backend samples and enable candidate diagnostics
- document the rejected boundary result and successor protocol
Files changed:
.../test-failures/postgres-ddl-admission-bound.md | 15 ++
docs/testing.md | 10 ++
packages/core/package.json | 2 +-
.../src/__test-utils__/pg-setup-participation.ts | 22 +++
.../src/__tests__/pg-setup-participation.test.ts | 21 +++
.../__tests__/vitest-setup-pg-inertness.test.ts | 10 ++
packages/core/vitest.pg.config.ts | 10 ++
.../__tests__/pg-preadmission-campaign.test.mjs | 63 +++++++
scripts/__tests__/pg-setup-boundary-probe.test.mjs | 92 ++++++++++
scripts/pg-preadmission-campaign.mjs | 194 +++++++++++++++++++++
scripts/pg-setup-boundary-probe.mjs | 182 +++++++++++++++++++
11 files changed, 620 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-9139
Fusion-Task-Lineage: 2cf8ccbf-37f9-4fdc-8e8f-326df823e1cd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 21:09:58 -07:00
gsxdsm
8bb56a2185
FN-9134: add drift-resistant PostgreSQL DDL lane metric
...
Add a report-only acceptance metric and terminal evidence for PostgreSQL DDL structural experiments.
- require seven ordered control/candidate pairs with green Vitest summaries and zero leaked databases
- reject missing tests, failed summaries, nonzero exits, and unhandled runner errors
- document the no-improvement campaign result and retain the next candidate direction
- cover timing statistics, ordering, leak rejection, and runner-log validation
Files changed:
.../test-failures/postgres-ddl-admission-bound.md | 8 ++
.../suite-only-flakes-observed-register.md | 2 +-
docs/testing.md | 24 ++++
scripts/__tests__/pg-ddl-lane-metric.test.mjs | 62 +++++++++
scripts/pg-ddl-lane-metric.mjs | 139 +++++++++++++++++++++
5 files changed, 234 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-9134
Fusion-Task-Lineage: 3466ebf8-7125-475b-9574-6c4c92198bb3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 20:17:12 -07:00
gsxdsm
ae507afc37
FN-9131: Add PostgreSQL harness budget characterization
...
Characterize cluster-shared PostgreSQL connection admission while keeping regressive harness wiring disabled.
- add advisory-lock slot budgeting, bootstrap gating, and local allocation accounting
- cover budget arithmetic, queueing, degradation, and PostgreSQL lock behavior
- document loaded-lane failures and the terminal-negative lifecycle boundary
- clarify that the active harness neither admits nor clamps against the experimental budget
Files changed:
.../test-failures/pg-harness-connection-budget.md | 21 +
.../suite-only-flakes-observed-register.md | 2 +
docs/testing.md | 6 +
.../__tests__/pg-connection-budget.test.ts | 146 ++++++
.../src/__test-utils__/pg-connection-budget.ts | 492 +++++++++++++++++++++
.../core/src/__test-utils__/pg-test-harness.ts | 8 +
.../postgres/pg-connection-budget.pg.test.ts | 36 ++
7 files changed, 711 insertions(+)
Fusion-Task-Id: FN-9131
Fusion-Task-Lineage: c83611ad-95f9-44ef-a0fd-1f182a26725d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 19:29:05 -07:00
Phil Larson
0159ef8784
fix: preserve gridlock notification cooldown ( #3469 )
...
## Summary
- preserve the gridlock notification wall-clock cooldown across
transient detector clears
- add a regression test for clear-then-rediscover behavior during the
cooldown
- document the cooldown contract and add a patch changeset
## Test plan
- `corepack pnpm --filter @fusion/engine exec vitest run
src/__tests__/notifier.test.ts --project=engine-default
--reporter=verbose -t 'suppresses the same gridlock after a transient
resolution during cooldown'`
- `corepack pnpm --filter @fusion/engine typecheck`
- `corepack pnpm build`
- `corepack pnpm changeset status --output
/tmp/fusion-gridlock-changeset-status.json`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Gridlock notifications now remain suppressed during the 15-minute
cooldown, even if the condition temporarily clears and reappears.
- Prevents repeated notifications caused by transient detector-state
changes.
- **Documentation**
- Updated gridlock notification behavior documentation to reflect the
persistent cooldown.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-16 17:46:23 -07:00
gsxdsm
c709ed06d9
FN-9135: retain plugin runner quarantine through deadline
...
Preserve the quarantined plugin-runner coverage while recording the inconclusive reproduction campaign.
- Record two loaded-suite runs at each of 2, 6, and 8 workers.
- Keep all 82 plugin-runner tests, the ledger entry, and the default-lane exclusion through 2026-08-30.
- Clarify that opt-in strict checks do not block normal PR lanes.
Files changed:
.../test-failures/suite-only-flakes-observed-register.md | 13 ++++++++++++-
docs/testing.md | 3 +++
2 files changed, 15 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-9135
Fusion-Task-Lineage: 239425e5-7393-4b8a-a114-0a14f0065847
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 17:38:53 -07:00
gsxdsm
f2d68939be
FN-9138: guard same-millisecond approval audit ID collisions
...
Validate that lifecycle guards prevent duplicate deterministic approval audit IDs during concurrent writes.
- Add database-free coverage for losing and successful guarded approval transitions.
- Add PostgreSQL overlap probes for decisions, completions, and physical ID uniqueness.
- Document the deterministic audit identity and lifecycle ordering guarantees.
Files changed:
docs/storage.md | 2 +-
.../approval-request-audit-id-race.test.ts | 115 ++++++++++++++++++
.../postgres/approval-request-lifecycle.pg.test.ts | 132 ++++++++++++++++++++-
.../async-stores/async-approval-request-store.ts | 10 ++
4 files changed, 253 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-9138
Fusion-Task-Lineage: ccfc084f-2cd8-4549-8a42-242167139b8d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 17:07:40 -07:00
gsxdsm
1d7dd3e7b8
FN-9133: Use bounded PostgreSQL DDL for reliability fixtures
...
Reliability fixtures now manage PostgreSQL databases through owned, deadline-bounded maintenance connections.
- Replace psql child-process DDL with postgres.js maintenance clients and forced cleanup.
- Remove redundant pre-create drops and preserve idempotent teardown behavior.
- Add a live-connection cleanup contract test and document audit measurements and policy.
Files changed:
.../postgres-reliability-helper-ddl-audit.md | 48 +++++++++++
docs/testing.md | 2 +-
packages/engine/package.json | 5 +-
.../_helpers-pg-ddl-contract.pg.test.ts | 66 +++++++++++++++
.../__tests__/reliability-interactions/_helpers.ts | 93 +++++++++++++---------
pnpm-lock.yaml | 3 +
6 files changed, 176 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-9133
Fusion-Task-Lineage: 5a7f511d-abb4-4468-a97a-04331f60d245
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 16:11:21 -07:00
gsxdsm
2160f7500c
FN-9132: order approval audits by lifecycle on timestamp ties
...
Ensure approval audit histories preserve lifecycle chronology when events share a timestamp.
- rank tied audit events by the declared approval lifecycle before audit ID
- cover tied and distinct timestamps through module and public store surfaces
- document the diagnosed satellite assertion and add a patch changeset
Files changed:
.changeset/fn-9132-approval-audit-order.md | 7 +++
.../suite-only-flakes-observed-register.md | 27 +++++++++++
...oval-request-audit-project-isolation.pg.test.ts | 2 +-
.../postgres/approval-request-lifecycle.pg.test.ts | 53 +++++++++++++++++++++-
.../async-stores/async-approval-request-store.ts | 17 +++++--
5 files changed, 100 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-9132
Fusion-Task-Lineage: 2f49e896-69bf-48c8-b813-4b1b2b72fc65
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 16:04:18 -07:00
gsxdsm
a453245715
FN-9130: Add guarded PostgreSQL DDL admission infrastructure
...
Document and test PostgreSQL DDL admission experiments while preserving the direct harness after measured regressions.
- add advisory-slot admission with local slot accounting, degradation telemetry, and fail-closed reentrancy
- cover cross-fork bounds, session loss, timeouts, spawned nested work, and cleanup invariants
- make concurrent lifecycle coverage settle all creates and clean up every successful database in finally
- record loaded-core measurements and retain the existing PostgreSQL worker cap
Files changed:
.../test-failures/postgres-ddl-admission-bound.md | 34 ++
.../suite-only-flakes-observed-register.md | 2 +-
docs/testing.md | 8 +
.../core/src/__test-utils__/pg-ddl-admission.ts | 351 +++++++++++++++++++++
.../core/src/__test-utils__/pg-test-harness.ts | 44 ++-
.../core/src/__tests__/pg-ddl-admission.test.ts | 294 +++++++++++++++++
.../postgres/pg-harness-ddl-concurrency.pg.test.ts | 56 ++++
packages/core/vitest.pg.config.ts | 5 +
8 files changed, 778 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-9130
Fusion-Task-Lineage: e28777cd-cd7c-4598-9db6-c4622cb9fa33
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 15:57:36 -07:00
gsxdsm
b31be1ba7c
FN-9126: Record project-identity flake reproduction
...
Document the second sighting of the project-identity PostgreSQL timeout and hand off structural diagnosis.
- Record the sterile 27-worker reproduction against the integration SHA
- Preserve pass, failure, and skip counters for both PostgreSQL-directory runs
- Mark quarantine as policy-forbidden and assign root-cause follow-up to FN-9131
Files changed:
.../solutions/test-failures/suite-only-flakes-observed-register.md | 7 +++++++
1 file changed, 7 insertions(+)
Fusion-Task-Id: FN-9126
Fusion-Task-Lineage: 9e31b00f-268b-46fa-af7a-58973c93d8fc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 14:07:57 -07:00
gsxdsm
3c235ce275
FN-9129: fence revision attribution assertions by identity
...
Make settings revision attribution tests select only immutable revisions owned by each test.
- Resolve reset-ordering failures by querying revision IDs from unique targets and payloads.
- Prove late background system writes cannot contaminate actor assertions.
- Document the loaded-lane diagnosis, evidence, and remediation.
Files changed:
.../suite-only-flakes-observed-register.md | 26 ++++++
.../settings-revision-attribution.test.ts | 104 ++++++++++++++++-----
2 files changed, 107 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-9129
Fusion-Task-Lineage: ae336ed2-0870-400c-9599-37adb588e283
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 13:47:12 -07:00
gsxdsm
1c9e4dfccd
FN-9127: instrument PostgreSQL teardown diagnostics
...
Add opt-in evidence capture for loaded PostgreSQL teardown stalls without changing teardown behavior.
- Add bounded phase and hook watchdogs with capped pg_stat_activity snapshots.
- Instrument the shared PostgreSQL test harness and cover diagnostic behavior with focused tests.
- Document the diagnostic workflow, measured flake campaign, and corrected mission-store gate scope.
Files changed:
.../suite-only-flakes-observed-register.md | 12 ++
docs/testing.md | 19 ++
.../src/__test-utils__/pg-teardown-diagnostics.ts | 237 +++++++++++++++++++++
.../core/src/__test-utils__/pg-test-harness.ts | 120 ++++++++---
.../src/__tests__/pg-teardown-diagnostics.test.ts | 162 ++++++++++++++
.../__tests__/postgres/mission-store.pg.test.ts | 8 +-
6 files changed, 526 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-9127
Fusion-Task-Lineage: 2488b7c0-f12f-4560-9a99-41aaca9d1526
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 12:59:23 -07:00
gsxdsm
5e5422de6e
FN-9128: isolate schema-applier PostgreSQL fixtures
...
Use shared PostgreSQL harness fixtures to reduce repeated schema DDL while preserving migration coverage.
- replace private database lifecycle helpers with shared empty and baselined fixtures
- add regression coverage for fixture-state selection and idempotent schema application
- document PostgreSQL bootstrap guidance and the resolved flake investigation
Files changed:
.../suite-only-flakes-observed-register.md | 13 +-
docs/testing.md | 3 +
.../postgres/schema-applier-isolation.test.ts | 54 +++++++
.../src/__tests__/postgres/schema-applier.test.ts | 160 +++++++--------------
4 files changed, 119 insertions(+), 111 deletions(-)
Fusion-Task-Id: FN-9128
Fusion-Task-Lineage: 036c9011-8973-4211-a77a-42bf0eb9fa5e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 12:27:35 -07:00
gsxdsm
beb8ae67db
FN-9125: document flake findings and quarantine plugin runner
...
Classify the suite-only failures by actual PostgreSQL dependency and preserve unresolved evidence for follow-up.
- Record non-reproduction results and assign PostgreSQL investigations to focused follow-up tasks.
- Quarantine the independent in-memory plugin runner test under the deletion ratchet.
- Document evidence requirements for future PostgreSQL flake diagnosis.
Files changed:
.../suite-only-flakes-observed-register.md | 32 ++++++++++++++++++++--
docs/testing.md | 4 +++
packages/engine/vitest.config.ts | 10 +++++++
scripts/lib/test-quarantine.json | 8 +++++-
4 files changed, 51 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-9125
Fusion-Task-Lineage: 1dc80163-a0dc-4241-bab1-75a2cafb9abe
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 11:46:39 -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
53acaf96c3
FN-9123: Repair script test contract drift
...
Repair script-test contracts to match the current repository policies and live workflow coverage.
- Align static-gate and pretest mirrors with authoritative validator chains.
- Update the merger-rule floor and parameterized flake registration.
- Repoint workflow reliability evidence to the surviving dispatch test.
Files changed:
.../test-failures/suite-only-flakes-observed-register.md | 4 +++-
scripts/__tests__/agents-md-invariants.test.mjs | 10 ++++++++--
scripts/__tests__/engine-vitest-gate-policy.test.mjs | 6 ++++++
scripts/__tests__/run-static-gate-checks.test.mjs | 7 +++++++
scripts/__tests__/verify-fast.test.mjs | 6 ++++++
scripts/lib/workflow-reliability-release-check.json | 4 ++--
6 files changed, 32 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-9123
Fusion-Task-Lineage: 1a3dad24-69e3-423e-a159-56fd3f1085a3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 04:05:45 -07:00
gsxdsm
fe910fcce7
FN-9122: align merge gate timing and policy baselines
...
Re-establish a trustworthy W33 merge-gate timing baseline without weakening blocking coverage.
- Document the controlled W33 re-measurement and future regression protocol.
- Align static-validator test ledgers with all 15 canonical gate checks.
- Correct gate composition, engine-core inventory, and bundle metrics in testing guidance.
Files changed:
.../merge-gate-w33-walltime-regression.md | 82 ++++++++++++++++++++++
docs/testing.md | 12 ++--
.../__tests__/engine-vitest-gate-policy.test.mjs | 12 ++++
scripts/__tests__/run-static-gate-checks.test.mjs | 2 +
scripts/__tests__/verify-fast.test.mjs | 8 +++
5 files changed, 111 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-9122
Fusion-Task-Lineage: 47ace0d7-902d-4ea5-848d-3d2386867c42
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 03:49:28 -07:00
gsxdsm
111c6c96cc
FN-9117: Preserve Planning Mode answers across session hydration
...
Keep visible Planning Mode controls bound to the current turn during asynchronous refreshes.
- preserve active question and plan-review workspaces during same-session hydration
- submit from live session state and retain dirty answers across response identity changes
- add desktop and mobile regression coverage for deferred hydration and stale Stop polling
- document the ownership race and add a patch changeset
Files changed:
.changeset/fn-9117-planning-turn-ownership.md | 7 +
.../suite-only-flakes-observed-register.md | 24 ++++
.../dashboard/app/components/PlanningModeModal.tsx | 141 ++++++++++++---------
.../PlanningModeModal.planning-flow.test.tsx | 132 +++++++++++++++++++
.../PlanningModeModal.ui-interactions.test.tsx | 20 +++
5 files changed, 265 insertions(+), 59 deletions(-)
Fusion-Task-Id: FN-9117
Fusion-Task-Lineage: 18d63f63-b532-49eb-a6d1-241e31c5b2c7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 02:26:42 -07:00
gsxdsm
3272affbb3
FN-9120: Fence Create Room agent roster loads
...
Keep Create Room picker state accurate across overlapping agent roster requests.
- Track explicit idle, loading, loaded, and failed picker phases.
- Ignore stale close, reopen, project-change, and unmount request completions.
- Reconcile selected members and cover ordering, failure, empty, duplicate, desktop, and mobile states.
- Document the loaded-lane flake investigation and add a patch changeset.
Files changed:
.changeset/fn-9120-create-room-picker.md | 7 ++
.../suite-only-flakes-observed-register.md | 17 +++
.../dashboard/app/components/CreateRoomModal.tsx | 50 ++++++--
.../components/__tests__/CreateRoomModal.test.tsx | 126 ++++++++++++++++-----
4 files changed, 165 insertions(+), 35 deletions(-)
Fusion-Task-Id: FN-9120
Fusion-Task-Lineage: 5c9ff011-7653-40ab-a7c1-e3464ca3eaf5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 01:50:38 -07:00
gsxdsm
7527d2651f
FN-9116: fence planning reconciliation by turn ownership
...
Prevent stale Planning Mode snapshots and recovery callbacks from replacing a newer interview turn.
- track session-load and turn epochs across response reconciliation, polling, streaming, and automatic retry
- fence loading-poll fetches at launch so accepted SSE questions and newer responses retain ownership
- add desktop and mobile race-ordering coverage and document the resolved suite-only flake
- publish a patch changeset for the operator-visible recovery fix
Files changed:
.changeset/fn-9116-planning-reconciliation.md | 7 +
.../suite-only-flakes-observed-register.md | 19 +
.../dashboard/app/components/PlanningModeModal.tsx | 109 ++++-
.../PlanningModeModal.planning-flow.test.tsx | 502 ++++++++++++++++++++-
4 files changed, 614 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-9116
Fusion-Task-Lineage: b861176e-9104-4caf-8b6c-e645972aa5f6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 00:59:48 -07:00
gsxdsm
9a9e591b72
FN-9115: clarify and expand agent skill selection
...
Clarify automatic skill availability while making forced-reading selections easier to manage.
- Replace the skill picker with a searchable multi-select checkbox list and explicit loading, error, empty, and unavailable states.
- Label forced, disabled, and undiscovered skills consistently across agent detail and list views, including a clear None state.
- Update localized guidance, documentation, regression coverage, and the published package changeset.
Files changed:
.changeset/fn-9115-skills-ui.md | 7 +
docs/dashboard-guide.md | 4 +
.../agent-detail-settings-theme-styling.test.ts | 3 +-
.../dashboard/app/components/AgentDetailView.css | 7 +-
.../dashboard/app/components/AgentDetailView.tsx | 35 ++-
packages/dashboard/app/components/AgentsView.css | 4 +
packages/dashboard/app/components/AgentsView.tsx | 13 +-
.../dashboard/app/components/NewAgentDialog.tsx | 5 +-
.../dashboard/app/components/SkillMultiselect.css | 258 +++------------------
.../dashboard/app/components/SkillMultiselect.tsx | 178 +++++---------
.../AgentDetailView.mobile-scroll.test.tsx | 4 +-
.../AgentDetailView.skills-procedure.test.tsx | 59 +++--
.../app/components/__tests__/AgentsView.test.tsx | 19 +-
.../components/__tests__/SkillMultiselect.test.tsx | 81 ++++---
.../__tests__/useDiscoveredSkillsCache.test.ts | 16 ++
.../app/hooks/useDiscoveredSkillsCache.ts | 13 +-
.../app/utils/__tests__/agentSkills.test.ts | 28 +++
packages/dashboard/app/utils/agentSkills.ts | 69 +++++-
packages/i18n/locales/en/app.json | 21 +-
packages/i18n/locales/es/app.json | 21 +-
packages/i18n/locales/fr/app.json | 21 +-
packages/i18n/locales/ko/app.json | 21 +-
packages/i18n/locales/pt-BR/app.json | 21 +-
packages/i18n/locales/zh-CN/app.json | 21 +-
packages/i18n/locales/zh-TW/app.json | 21 +-
25 files changed, 493 insertions(+), 457 deletions(-)
Fusion-Task-Id: FN-9115
Fusion-Task-Lineage: 18229b87-d0dc-41e7-9333-2d12df852486
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 23:14:24 -07:00
gsxdsm
6c2c880699
chore: refresh test velocity baseline and shard-timing snapshot post-trim
...
Measured wall times: gate 14.0s, boot smoke 20.4s (-6.3s), changed-only
pnpm test 17.5s; quarantine ledger 0. Shard-timing snapshot rebuilt
from today's CI shard artifacts (run 31929730933) plus a locally
measured full dashboard suite so dashboard lane weighting keeps its
per-file data. The trim shows: the former top-6 core PG offenders are
gone from the slowest-20 (sqlite-migrator 2m29s serial -> 20.4s;
SettingsModal.general off the table entirely). Caveat: the dashboard
rows come from the pre-trim analysis measurement, so entries like
SettingsModal.scheduling-merge (30.2s, now ~13s) are pessimistic until
the next dashboard re-measure.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-15 23:05:20 -07:00
gsxdsm
c59afeb15f
docs: record PlanningModeModal duplicate-response flake sighting (register entry 8)
...
One clean solo-lane sighting of the parametrized duplicate-response
reconciliation test (mobile row; the desktop row failed once earlier
under a contaminated concurrent run, recorded as context). Third
distinct flaky test in this suite plus one prior FN-8936 stabilization
— the AGENTS.md repeated-quarantine rule calls that a subsystem
product-race smell, so the product-path audit is filed as FN-9116
rather than stabilizing a fourth time.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-15 22:52:18 -07:00
gsxdsm
87e673baf7
feat(merge): remove the pre-commit diff-volume gate
...
The gate blocked approved clean-room squashes on per-file shrinkage with no
override path ("AI merge diff-volume gate blocked the approved squash").
Removed by operator decision: delete checkDiffVolume/DiffVolumeRegressionError,
the merge:diff-volume-blocked audit event, the runDiffVolumeGate call sites in
every legacy squash finalizer, the AI-merge pre-land check, and the
mergeDiffVolume* settings. File scope remains the pre-land guard; the
post-squash audit policy remains the shrinkage backstop.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-15 22:42:39 -07:00
gsxdsm
9f5f981e33
FN-9114: expose enabled skills and enforce agent skill reads
...
Make project-enabled skills available across agent sessions while preserving explicit per-agent skills as observable read-first requirements.
- resolve all enabled discovered skills without using agent metadata as an availability filter
- carry forced skill intent through PI, plugin, chat, workflow, merger, and heartbeat session paths
- report resolved and unavailable forced skills in session summaries and diagnostics
- document the updated skill model and add release notes and regression coverage
Files changed:
.changeset/fn-9114-forced-skills.md | 7 +
docs/PLUGIN_AUTHORING.md | 2 +-
docs/agents.md | 10 +-
docs/diagnostics.md | 2 +-
docs/settings-reference.md | 2 +-
packages/core/src/__tests__/skill-settings.test.ts | 9 +
.../dashboard/src/__tests__/chat-manager.test.ts | 26 ++-
packages/dashboard/src/chat.ts | 10 +
.../engine/src/__tests__/agent-skills-flow.test.ts | 14 +-
.../compound-engineering-skill-resolution.test.ts | 2 +-
.../engine/src/__tests__/heartbeat-skills.test.ts | 41 ++++
.../__tests__/hermes-runtime-integration.test.ts | 63 +++++-
.../engine/src/__tests__/merger-skills.test.ts | 33 ++-
packages/engine/src/__tests__/pi.test.ts | 35 ++-
.../__tests__/plugin-skill-body-delivery.test.ts | 8 +-
.../src/__tests__/plugin-skill-integration.test.ts | 3 +-
.../src/__tests__/session-skill-context.test.ts | 40 ++--
.../engine/src/__tests__/skill-resolver.test.ts | 38 +++-
.../__tests__/step-execute-skill-loading.test.ts | 6 +
packages/engine/src/agents/agent-runtime.ts | 2 +
.../engine/src/agents/agent-session-helpers.ts | 88 ++++++-
.../src/cli-runtime/session-skill-context.ts | 117 ++++------
packages/engine/src/cli-runtime/skill-resolver.ts | 252 +++++++++------------
.../engine/src/executor/execute-workflow-step.ts | 14 ++
packages/engine/src/executor/run-implementation.ts | 5 +
packages/engine/src/pi.ts | 28 ++-
26 files changed, 576 insertions(+), 281 deletions(-)
Fusion-Task-Id: FN-9114
Fusion-Task-Lineage: fe63ebd1-f947-40d7-be7b-c13d7f1c35c9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 21:57:22 -07:00
gsxdsm
d4d13e2fa5
FN-9111: Add global Quick Add Enter-save preference
...
Add an operator-level setting that controls whether plain Enter saves a Quick Add task while preserving Cmd/Ctrl+Enter submission.
- add the global quickAddSubmitOnEnter setting, defaults, settings UI, and app context
- update Quick Add keyboard handling with multiline and duplicate/in-flight safeguards
- add focused settings and keyboard regression coverage, localization, documentation, and a release changeset
Files changed:
.changeset/fn-9111-quick-add-enter.md | 7 ++
docs/dashboard-guide.md | 2 +
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-defaults.test.ts | 10 ++
packages/core/src/config/settings-schema.ts | 5 +
packages/core/src/types/settings/settings-scope.ts | 5 +
packages/dashboard/app/App.tsx | 4 +
.../dashboard/app/components/QuickEntryBox.tsx | 24 ++++-
.../QuickEntryBox.submit-on-enter.test.tsx | 118 +++++++++++++++++++++
.../__tests__/SettingsModal.general.test.tsx | 18 ++++
.../app/components/settings/save-split.ts | 1 +
.../sections/GlobalGeneralSection.search.ts | 9 ++
.../settings/sections/GlobalGeneralSection.tsx | 10 ++
.../settings-default-descriptions.test.tsx | 1 +
.../__tests__/useQuickAddSubmitOnEnter.test.tsx | 24 +++++
packages/dashboard/app/hooks/useAppSettings.ts | 4 +
.../app/hooks/useQuickAddSubmitOnEnter.ts | 21 ++++
packages/i18n/locales/en/app.json | 2 +
packages/i18n/locales/es/app.json | 4 +-
packages/i18n/locales/fr/app.json | 4 +-
packages/i18n/locales/ko/app.json | 4 +-
packages/i18n/locales/pt-BR/app.json | 4 +-
packages/i18n/locales/zh-CN/app.json | 4 +-
packages/i18n/locales/zh-TW/app.json | 4 +-
packages/i18n/src/resources.d.ts | 4 +-
25 files changed, 284 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-9111
Fusion-Task-Lineage: 246153a8-5127-48df-838c-d9b60920cd91
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 21:24:25 -07:00
gsxdsm
d9fcabfaef
FN-9112: default Memory Keeper heartbeats to disabled
...
Default built-in Memory Keeper agents to opt-in heartbeat scheduling while retaining operator choices.
- Provision new Memory Keeper agents with heartbeat disabled and hourly scheduling preconfigured.
- Preserve explicit heartbeat settings during startup convergence and avoid no-op rewrites.
- Add provisioning coverage, operator documentation, and a release changeset.
Files changed:
.../fn-9112-memory-keeper-heartbeat-default-off.md | 7 +++
docs/agents.md | 2 +-
.../__tests__/memory-agent-provisioning.test.ts | 59 +++++++++++++++++++---
packages/core/src/agents/agent-store.ts | 34 ++++++++++---
4 files changed, 86 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-9112
Fusion-Task-Lineage: 49edc6d9-3d9b-412f-91a5-c26f4a26a662
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 20:17:07 -07:00
gsxdsm
2a9ae0aca3
FN-9109: add resilient cross-runtime Cursor fallback
...
Route eligible CLI fallback failures into one bounded, auditable Cursor runtime handoff.
- defer cursor-cli fallback selection until a retryable primary prompt failure
- serialize concurrent swaps, retry the primary after failed handoffs, and dispose replacements safely
- transfer text-only conversation context within strict turn and total character limits
- document routing behavior and cover provider, runtime, concurrency, and failure cases
Files changed:
.../fn-9109-cross-runtime-cursor-fallback.md | 7 +
AGENTS.md | 2 +
docs/cursor-cli-contract.md | 8 +
.../src/__tests__/cli-provider-routing.test.ts | 18 +-
.../cli-runtime-routing-conformance.test.ts | 64 ++++-
.../src/__tests__/cross-runtime-fallback.test.ts | 146 +++++++++++
.../engine/src/agents/agent-session-helpers.ts | 211 ++++++----------
packages/engine/src/agents/cli-provider-routing.ts | 4 +-
.../engine/src/agents/cross-runtime-fallback.ts | 277 +++++++++++++++++++++
packages/engine/src/util/run-audit.ts | 8 +
10 files changed, 602 insertions(+), 143 deletions(-)
Fusion-Task-Id: FN-9109
Fusion-Task-Lineage: 30664371-8410-4d6f-a263-cc86c8e0dc72
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 19:10:55 -07:00
gsxdsm
872d260ab8
FN-9104: Add mailbox recommendation task actions
...
Add guarded task creation directly to completed-task recommendation notices.
- Render live recommendation details and task actions in mailbox detail and conversation surfaces.
- Prevent duplicate creates, expose existing task links, and support unavailable and retry states.
- Cover desktop and mobile surfaces, update notice copy and documentation, and add a release changeset.
Files changed:
.../fn-9104-mailbox-recommendation-create.md | 7 ++
docs/dashboard-guide.md | 2 +-
.../__tests__/task-recommendation-notice.test.ts | 7 ++
packages/core/src/task-recommendation-notice.ts | 9 +-
packages/dashboard/app/components/MailboxModal.tsx | 3 +
.../app/components/MailboxTaskRecommendations.css | 9 ++
.../app/components/MailboxTaskRecommendations.tsx | 127 +++++++++++++++++++++
packages/dashboard/app/components/MailboxView.tsx | 3 +
.../MailboxTaskRecommendations.surfaces.test.tsx | 77 +++++++++++++
.../__tests__/MailboxTaskRecommendations.test.tsx | 72 ++++++++++++
10 files changed, 311 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-9104
Fusion-Task-Lineage: 94f53bfe-f57f-42ee-970e-56658129c1e0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 17:36:32 -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
84bbdadab4
Merge branch 'mission/M-MSU1HV06-000V-4HPI'
2026-08-15 17:01:23 -07:00
gsxdsm
920bf8b022
FN-9105: document boot-smoke anomaly remeasurement
...
Confirm the W33 spike as cold-start variance and preserve a repeatable diagnosis protocol.
- Record five sequential phase-timed samples and the 20.5-second median threshold.
- Link the controlled remeasurement protocol from the testing guide.
- Explain the timing snapshot handoff and why incomplete CI artifacts were not published.
- Preserve the no-appeasement requirement beside boot-smoke phase timing.
Files changed:
.../boot-smoke-w33-walltime-anomaly.md | 100 +++++++++++++++++++++
docs/testing.md | 2 +-
scripts/boot-smoke.mjs | 7 ++
3 files changed, 108 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-9105
Fusion-Task-Lineage: 6956b037-db0f-4560-bb04-136080a975b5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 16:59:37 -07:00
gsxdsm
5e5b0dbb8f
FN-9098: bridge scoped Fusion tools into Cursor
...
Publish engine-owned Fusion tools to Cursor through a crash-safe, worktree-scoped MCP bridge.
- preserve operator MCP configuration with locking, journaling, quarantine, and lease reconciliation
- enforce identity-scoped fn_* provenance so injected custom and MCP tools are never exposed
- secure loopback dispatch with per-session tokens, heartbeats, cleanup, and normalized tool events
- document the Cursor contract and cover bridge lifecycle, config hygiene, and failure handling
Files changed:
.changeset/fn-9098-cursor-mcp-bridge.md | 7 +
docs/cursor-cli-contract.md | 140 ++-------------
docs/mcp.md | 4 +
.../src/__tests__/agent-session-helpers.test.ts | 24 +++
.../src/__tests__/step-session-executor.test.ts | 16 ++
.../src/__tests__/web-fetch-universal.test.ts | 4 +-
packages/engine/src/agent-heartbeat.ts | 3 +-
packages/engine/src/agents/agent-runtime.ts | 9 +
.../engine/src/agents/agent-session-helpers.ts | 26 +--
packages/engine/src/execution/reviewer.ts | 1 +
.../engine/src/execution/step-session-executor.ts | 31 ++--
.../engine/src/executor/execute-workflow-step.ts | 4 +-
packages/engine/src/merger.ts | 4 +-
plugins/fusion-plugin-cursor-runtime/README.md | 18 +-
plugins/fusion-plugin-cursor-runtime/package.json | 2 +-
.../src/__tests__/cursor-mcp-config.test.ts | 100 +++++++++++
.../cursor-mcp-server-failure.stream.jsonl | 3 +
.../fixtures/cursor-mcp-tool-call.stream.jsonl | 4 +
.../src/__tests__/runtime-adapter.test.ts | 57 +++++-
.../src/__tests__/worktree-hygiene.test.ts | 52 ++++++
.../src/cursor-mcp-config.ts | 196 +++++++++++++++++++++
.../src/mcp-schema-server.cjs | 155 ++++++++++++++++
.../src/prompt-transport.ts | 4 +-
.../src/runtime-adapter.ts | 67 +++++--
.../src/tool-bridge.ts | 48 +++++
.../src/tool-mapping.ts | 11 ++
plugins/fusion-plugin-cursor-runtime/src/types.ts | 6 +-
.../src/worktree-hygiene.ts | 117 ++++++++++++
28 files changed, 934 insertions(+), 179 deletions(-)
Fusion-Task-Id: FN-9098
Fusion-Task-Lineage: 11b6cb10-ce0e-4f33-9007-c83f2bbf82ea
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 16:51:54 -07:00
gsxdsm
6a2de64381
fix: normalize Anthropic storage ids at the ModelRuntime.login choke point
...
Third incident of the same class (#1857/FN-7391, FN-9101, GitHub #3462 ):
Fusion's Anthropic auth-card/storage ids (anthropic-subscription,
anthropic-api-key) leaking into pi, which only registers the execution
provider 'anthropic'. FusionAuthStorage.login is the single seam that hands
a provider id to ModelRuntime.login; it now normalizes via
toExecutionModelProviderId so a future caller bug degrades to a correct
upstream anthropic login instead of a hard 'Unknown provider' failure, with
a regression test pinning the seam. The invariant, incident history, and
guard inventory are captured in
docs/solutions/integration-issues/anthropic-storage-ids-are-never-pi-provider-ids.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-15 14:52:38 -07:00
gsxdsm
c0e568bf78
FN-9100: fix staged Cursor core imports in CLI builds
...
Ensure staged plugin core runtime imports resolve reliably in packaged CLI builds.
- Export Cursor runtime core helpers from the CLI runtime shim.
- Guard staged plugin imports against undeclared or unavailable core exports.
- Add Cursor bundle coverage and document the focused packaging test.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-9100-staged-plugin-core-shim.md | 7 +
docs/testing.md | 1 +
.../__tests__/plugin-sdk-core-runtime-shim.test.ts | 40 +++-
.../__tests__/staged-plugin-core-imports.test.ts | 221 +++++++++++++++++++++
packages/cli/src/plugin-sdk-core-runtime-shim.mjs | 10 +-
5 files changed, 272 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-9100
Fusion-Task-Lineage: 4c25ef74-065d-4e5a-86f2-e6f9a22500b3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 12:04:30 -07:00
gsxdsm
b6efd89ae5
FN-9097: add Cursor CLI execution runtime
...
Add a supervised Cursor CLI runtime for routed Cursor model sessions.
- Stream Cursor prompt output into Fusion session callbacks with resume support.
- Support Windows Cursor shims, inactivity-based supervision, and cursor-agent to cursor fallback execution.
- Route Cursor CLI models through the bundled plugin and document the runtime contract.
Files changed:
.changeset/fn-9097-cursor-cli-runtime.md | 7 ++
docs/cursor-cli-contract.md | 21 ++++
docs/settings-reference.md | 4 +-
.../cli-runtime-routing-conformance.test.ts | 11 +-
.../engine/src/agents/agent-session-helpers.ts | 6 +-
packages/engine/src/agents/cli-provider-routing.ts | 27 ++---
plugins/fusion-plugin-cursor-runtime/README.md | 21 ++++
plugins/fusion-plugin-cursor-runtime/package.json | 1 +
.../src/__tests__/cli-spawn.test.ts | 25 ++++-
.../src/__tests__/prompt-transport.test.ts | 58 ++++++++++
.../src/__tests__/runtime-adapter.test.ts | 44 +++++---
.../src/__tests__/stream-parser.test.ts | 12 +++
.../fusion-plugin-cursor-runtime/src/cli-spawn.ts | 57 +++++++++-
plugins/fusion-plugin-cursor-runtime/src/index.ts | 4 +-
.../src/prompt-transport.ts | 120 +++++++++++++++++++++
.../src/runtime-adapter.ts | 59 ++++++----
.../src/stream-parser.ts | 43 ++++++++
plugins/fusion-plugin-cursor-runtime/src/types.ts | 18 ++--
pnpm-lock.yaml | 3 +
19 files changed, 458 insertions(+), 83 deletions(-)
Fusion-Task-Id: FN-9097
Fusion-Task-Lineage: a4eed861-6059-4528-9f80-3426f5ccad58
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 08:51:35 -07:00
gsxdsm
1d3f6c198c
FN-9096: route CLI models through installed runtimes
...
Route every CLI-provider selection through an explicit installed-runtime policy.
- Centralize CLI provider classifications, runtime hints, fallback behavior, and actionable missing-runtime errors.
- Validate routing coverage statically and add conformance and integration tests for CLI runtime paths.
- Document runtime routing behavior and add a published CLI changeset.
Files changed: .changeset/fn-9096-cli-runtime-routing.md | 7 +
docs/settings-reference.md | 29 +++
docs/testing.md | 6 +-
package.json | 6 +-
.../src/__tests__/cli-provider-routing.test.ts | 74 ++++++++
.../__tests__/cli-runtime-routing-check.test.ts | 25 +++
.../cli-runtime-routing-conformance.test.ts | 210 +++++++++++++++++++++
.../__tests__/hermes-runtime-integration.test.ts | 28 +++
.../engine/src/agents/agent-session-helpers.ts | 166 ++++------------
packages/engine/src/agents/cli-provider-routing.ts | 174 +++++++++++++++++
scripts/check-cli-runtime-routing.mjs | 26 +++
scripts/lib/cli-runtime-routing-check.mjs | 84 +++++++++
12 files changed, 701 insertions(+), 134 deletions(-)
Fusion-Task-Id: FN-9096
Fusion-Task-Lineage: f9f6a434-b28d-4ebb-816a-53ca75efc2c4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 07:19:29 -07:00
gsxdsm
284feeaf11
FN-9092: prevent model menus from dismissing host dialogs
...
Keep portaled model-menu interaction from propagating to host dialog dismissal.
- Mark model-menu portal surfaces and stop their pointer events from reaching dialog backdrops.
- Apply the dismissal guard across agent, chat, floating-window, and model-selection dialogs.
- Close enabled overlays on valid touch taps while suppressing duplicate compatibility mouse closes.
- Add desktop and mobile regression coverage for portal-host dismissal behavior.
Files changed:
.../fn-9092-model-filter-dialog-dismissal.md | 7 +
.../ui-bugs/portaled-model-menu-host-dismissal.md | 19 +++
packages/dashboard/app/components/AgentsView.tsx | 6 +
.../app/components/ChatThinkingLevelControl.tsx | 17 ++-
packages/dashboard/app/components/ChatView.tsx | 38 +++--
.../app/components/CustomModelDropdown.tsx | 13 +-
.../dashboard/app/components/FloatingWindow.tsx | 17 +--
.../app/components/ModelSelectionModal.tsx | 17 +--
.../dashboard/app/components/NewAgentDialog.tsx | 12 +-
.../dashboard/app/components/QuickEntryBox.tsx | 5 +-
.../ChatThinkingLevelControl.portal.test.tsx | 9 ++
.../__tests__/CustomModelDropdown.test.tsx | 24 ++-
.../__tests__/ModelSelectionModal.test.tsx | 3 +-
.../NewAgentDialog.portal-dismissal.test.tsx | 77 ++++++++++
.../components/__tests__/NewAgentDialog.test.tsx | 11 ++
.../model-menu-filter-host-dismissal.test.tsx | 163 +++++++++++++++++++++
.../app/hooks/__tests__/useOverlayDismiss.test.tsx | 7 +-
packages/dashboard/app/hooks/useOverlayDismiss.ts | 26 +++-
.../app/utils/__tests__/portalSurfaces.test.ts | 31 ++++
packages/dashboard/app/utils/portalSurfaces.ts | 31 ++++
20 files changed, 469 insertions(+), 64 deletions(-)
Fusion-Task-Id: FN-9092
Fusion-Task-Lineage: a0d0b84d-2efe-4a67-9485-77c08f7cc57e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 06:42:39 -07:00
gsxdsm
b26894e0dd
FN-9095: move spec alignment details to Definition tab bottom
...
Place low-frequency spec alignment provenance after plan and relationship content.\n\n- Move the Definition-tab spec-lock report to the final section.\n- Cover populated, unavailable, and absent spec-lock report states.\n- Document the placement and add a patch changeset.\n\nFiles changed:\n .changeset/fn-9095-spec-alignment-position.md | 7 ++\n docs/dashboard-guide.md | 2 +-\n .../dashboard/app/components/TaskDetailModal.tsx | 87 +++++++++++-----------\n .../__tests__/TaskDetailModal.spec-lock.test.tsx | 63 ++++++++++++++++\n 4 files changed, 115 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-9095
Fusion-Task-Lineage: c017325c-b7c1-4f0e-abab-49462903a778
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 06:09:09 -07:00
gsxdsm
8d8ea26cb2
FN-9094: omit unsupported Grok auto-update flag
...
Align Grok ACP expectations with the released CLI contract.
- Update runtime routing and adapter assertions to omit --no-auto-update by default.
- Cover explicit false and default argument behavior in ACP settings tests.
- Document the released CLI incompatibility and opt-in escape hatch.
Files changed:
docs/grok-cli-contract.md | 7 ++++---
packages/engine/src/__tests__/grok-runtime-routing.test.ts | 14 +++++++++-----
.../src/__tests__/acp-settings.test.ts | 2 ++
.../src/__tests__/runtime-adapter.test.ts | 14 ++++++++++----
4 files changed, 25 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-9094
Fusion-Task-Lineage: f776e401-8473-45b2-a8b2-8d8251b4713e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 05:58:36 -07:00
gsxdsm
9fa8b386ee
FN-9059: add durable workspace coordination leases
...
Prevent overlapping multi-node workspace operations and duplicate repository landings.
- Add durable coordination leases, fence tokens, and land-intent persistence.
- Fence workspace merge dispatches and repository publication across engine nodes.
- Reconcile expired coordination state safely and cover lease lifecycle behavior.
Files changed:
.../fn-9059-workspace-durable-coordination.md | 7 +
AGENTS.md | 1 +
docs/architecture.md | 2 +
docs/multi-project.md | 48 ++++
.../workspace-coordination-leases.pg.test.ts | 56 ++++
.../__tests__/postgres/workspace-leases.pg.test.ts | 112 ++++++++
packages/core/src/engine-node-identity.ts | 22 ++
packages/core/src/index.ts | 3 +
.../0060_fn_9059_workspace_coordination_leases.sql | 10 +
packages/core/src/postgres/schema-applier.ts | 13 +-
packages/core/src/postgres/schema/project.ts | 31 ++
packages/core/src/store.ts | 18 ++
packages/core/src/task-store/workspace-leases.ts | 261 +++++++++++++++++
packages/core/src/tasks/workspace-lease-types.ts | 24 ++
.../engine/src/__tests__/project-engine.test.ts | 69 ++++-
.../src/__tests__/self-healing-workspace.test.ts | 63 ++++-
.../workspace-durable-coordination.test.ts | 49 ++++
.../src/__tests__/workspace-merger-lease.test.ts | 312 ++++++++++++++++++++-
packages/engine/src/merge/merger-ai.ts | 277 ++++++++++++++++--
packages/engine/src/merge/workspace-fence-ref.ts | 171 +++++++++++
packages/engine/src/project-engine.ts | 175 ++++++++++--
packages/engine/src/runtimes/in-process-runtime.ts | 4 +-
packages/engine/src/self-healing.ts | 191 ++++++++++++-
packages/engine/src/util/run-audit.ts | 2 +
.../engine/src/worktree/worktree-acquisition.ts | 43 ++-
25 files changed, 1901 insertions(+), 63 deletions(-)
Fusion-Task-Id: FN-9059
Fusion-Task-Lineage: e51e3f54-69ee-4337-a218-4895d87474aa
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 03:22:13 -07:00
gsxdsm
2f99a8fb59
FN-9052: add atomic workspace worktree entry merges
...
Serialize per-repository workspace worktree state updates across concurrent Fusion processes.
- Add advisory-locked store-level per-entry workspace worktree merges.
- Route acquisition, landing, failure, and recovery updates through atomic merges.
- Cover concurrent sibling repository writes and document the invariant.
Files changed:
.../fn-9052-workspace-worktree-atomic-merge.md | 7 ++
docs/architecture.md | 1 +
...workspace-worktrees-concurrent-merge.pg.test.ts | 90 ++++++++++++++++++++++
packages/core/src/store.ts | 10 ++-
packages/core/src/task-store/task-mutation-ops.ts | 52 ++++++++++++-
packages/core/src/types.ts | 2 +
packages/core/src/types/task/task-core.ts | 17 +++-
.../merge-orphan-body-durable-writes.test.ts | 8 ++
.../src/__tests__/self-healing-workspace.test.ts | 49 +++++++++---
.../src/__tests__/workspace-merger-lease.test.ts | 12 +++
.../engine/src/__tests__/workspace-merger.test.ts | 12 +--
.../worktree-acquisition-workspace.test.ts | 82 +++++++++++++++++++-
packages/engine/src/merge/merger-ai.ts | 21 ++---
.../engine/src/merge/workspace-land-failure.ts | 19 +++--
packages/engine/src/self-healing.ts | 15 +++-
.../engine/src/worktree/worktree-acquisition.ts | 25 +++---
16 files changed, 370 insertions(+), 52 deletions(-)
Fusion-Task-Id: FN-9052
Fusion-Task-Lineage: 2168085a-74a7-4a0f-954e-50db99eb98b7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 01:14:43 -07:00
gsxdsm
7bb7d450e6
FN-9062: surface workspace repository land status
...
Expose per-repository workspace landing progress and failures in Task Detail.
- Persist display-only repository land failure breadcrumbs during merge and recovery
- Render landed, pending, and failed repository statuses with partial-land detail
- Document the workspace status behavior and add coverage for UI and recovery paths
Files changed:
.changeset/fn-9062-workspace-land-status.md | 7 ++
docs/dashboard-guide.md | 4 +
packages/core/src/types/task/task-core.ts | 11 ++-
.../dashboard/app/components/TaskDetailModal.css | 33 +++++++
.../app/components/WorkspaceWorktreesSummary.tsx | 106 ++++++++-------------
.../__tests__/WorkspaceWorktreesSummary.test.tsx | 46 ++++++++-
.../src/__tests__/self-healing-workspace.test.ts | 19 ++++
.../engine/src/__tests__/workspace-merger.test.ts | 6 ++
packages/engine/src/merge/merger-ai.ts | 7 +-
.../engine/src/merge/workspace-land-failure.ts | 21 ++++
packages/engine/src/self-healing.ts | 16 ++++
11 files changed, 208 insertions(+), 68 deletions(-)
Fusion-Task-Id: FN-9062
Fusion-Task-Lineage: 8c12b9f9-f6ed-4766-a6f1-49cdf9ea8926
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 00:48:23 -07:00
gsxdsm
43889bc684
FN-9058: block workspace main-checkout edits
...
Prevent workspace tasks from completing after task-era edits in configured sub-repository main checkouts.
- Detect dirty and recent commit evidence across every workspace main checkout before invariant checks.
- Block attributable edits with bounded retries while warning safely for inconclusive evidence.
- Add audit telemetry, documentation, changeset, and real-git regression coverage.
Files changed:
.../fn-9058-workspace-main-checkout-guard.md | 7 +
AGENTS.md | 1 +
docs/architecture.md | 1 +
.../engine/src/__tests__/_workspace-fixture.ts | 3 +-
.../executor-workspace-main-checkout-guard.test.ts | 164 +++++++++++++++++++++
packages/engine/src/executor/execution-prompt.ts | 3 +-
.../src/executor/workspace-main-checkout-guard.ts | 128 ++++++++++++++++
.../src/executor/worktree-verify-invariants.ts | 45 +++++-
packages/engine/src/util/run-audit.ts | 2 +
9 files changed, 351 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-9058
Fusion-Task-Lineage: b5dd58bd-4bd9-41fd-b3d5-e07270f3abca
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 00:41:44 -07:00
gsxdsm
c7779e44ac
FN-9055: guard archive disposal of live workspace worktrees
...
Prevent archive cleanup from removing worktrees that still belong to live tasks.
- Add shared archive liveness evaluation and transactional refusal guards.
- Require CLI and extension archive operations to refuse live tasks unless a human uses --force.
- Protect baseline archive worktree disposal and cover CLI, core, and engine paths with tests.
Files changed:
.changeset/fn-9055-archive-live-worktree-guard.md | 7 ++
docs/cli-reference.md | 4 +-
docs/task-management.md | 4 +-
.../extension-task-archive-live-guard.test.ts | 82 +++++++++++++++++++
packages/cli/src/bin.ts | 6 +-
packages/cli/src/commands/__tests__/task.test.ts | 66 ++++++++++++++-
packages/cli/src/commands/task.ts | 49 +++++++++---
packages/cli/src/extension.ts | 25 ++++--
.../src/__tests__/archive-live-task-guard.test.ts | 70 ++++++++++++++++
.../postgres/archive-live-task-fence.pg.test.ts | 69 ++++++++++++++++
.../src/__tests__/task-archive-liveness.test.ts | 19 +++++
packages/core/src/index.ts | 10 +++
packages/core/src/store.ts | 4 +-
.../core/src/task-store/archive-lifecycle-2.ts | 27 +++++--
packages/core/src/task-store/archive-lifecycle.ts | 20 ++---
.../src/task-store/async/async-archive-lineage.ts | 17 +++-
packages/core/src/tasks/task-archive-liveness.ts | 56 +++++++++++++
...chive-baseline-disposer-live-task-guard.test.ts | 93 ++++++++++++++++++++++
.../healing/archive-worktree-disposer-install.ts | 15 +++-
19 files changed, 592 insertions(+), 51 deletions(-)
Fusion-Task-Id: FN-9055
Fusion-Task-Lineage: 08644626-cc61-4854-abb9-5b415ddc9491
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 00:35:12 -07:00
gsxdsm
1372218b1f
FN-9047: invalidate stale workspace landing proof after revert
...
Preserve workspace landing attribution while allowing cleanly reverted work to land again.
- Record a per-repository revert boundary after clean git-mode workspace reverts.
- Reject recorded and trailer landing proof at or behind that boundary, then clear it on a fresh landing.
- Persist boundaries through the revert route and cover re-land behavior with git tests.
Files changed:
.changeset/fn-9047-workspace-revert-landed-sha.md | 7 +++
docs/architecture.md | 2 +
packages/core/src/types/task/task-core.ts | 7 ++-
.../src/routes/register-session-diff-routes.ts | 2 +-
.../src/routes/register-task-workflow-routes.ts | 11 ++++
.../task-revert.workspace.real-git.test.ts | 27 ++++++++++
...orkspace-land-predicate.revert-boundary.test.ts | 60 ++++++++++++++++++++++
packages/engine/src/execution/task-revert.ts | 42 +++++++++++++--
packages/engine/src/index.ts | 1 +
packages/engine/src/merge/merger-ai.ts | 5 +-
.../engine/src/merge/workspace-land-predicate.ts | 25 +++++++--
packages/engine/src/self-healing.ts | 9 +++-
12 files changed, 185 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-9047
Fusion-Task-Lineage: 8ac41347-3c76-4f54-8d69-f16f82084305
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-15 00:02:52 -07:00
gsxdsm
4bc0a32d60
FN-9050: enforce AI squash scope and diff-volume gates
...
Validate approved AI squashes before any integration ref advances.
- Enforce task file scope and diff-volume checks for single-repo and workspace lands.
- Reset rejected clean rooms to the integration tip so invalid approved squashes cannot be recovered on retry.
- Add audit events, documentation, a changeset, and regression coverage for land gates.
Files changed:
.changeset/fn-9050-ai-merge-scope-gates.md | 7 +
docs/architecture.md | 2 +
docs/workflow-steps.md | 4 +-
.../src/__tests__/merger-ai-squash-gates.test.ts | 188 +++++++++++++++++++++
.../__tests__/merger-file-scope-invariant.test.ts | 29 ++++
.../__tests__/workspace-merger-scope-gates.test.ts | 118 +++++++++++++
.../engine/src/merge/merger-ai-squash-gates.ts | 66 ++++++++
packages/engine/src/merge/merger-ai.ts | 21 ++-
.../engine/src/merge/merger-diff-volume-gate.ts | 14 +-
packages/engine/src/merge/merger-file-scope.ts | 33 +++-
packages/engine/src/util/run-audit.ts | 1 +
11 files changed, 474 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-9050
Fusion-Task-Lineage: 9ecd8b8c-5c00-45ea-98e9-2aa8a8040c53
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-14 23:42:52 -07:00