Skip to content

fix: resolve full-suite CI failures across engine + dashboard (shards 1-4)#1947

Open
gsxdsm wants to merge 20 commits into
mainfrom
fix/full-suite-main
Open

fix: resolve full-suite CI failures across engine + dashboard (shards 1-4)#1947
gsxdsm wants to merge 20 commits into
mainfrom
fix/full-suite-main

Conversation

@gsxdsm

@gsxdsm gsxdsm commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fixes the failing full-suite CI run on main (run 28874651861) — all 4 test shards were red. ~32 test files failing across engine + dashboard (src + app), rooted in ~13 distinct causes from recent main commits. All resolved; the merge gate and full engine/dashboard suites are green locally.

Root causes & fixes

Engine (shards 1 & 2)

  • appendAgentLog 6th timing arg (FN-7503, 2797803c0)agent-logger.ts now passes an optional {durationMs,timeToFirstTokenMs} 6th arg; many executor/heartbeat/merger tests asserted the old 5-arg form. Added a shared timing-tolerant helper agent-log-assertions.ts (asserts taskId/text/type, tolerant of the timing object) and applied it across affected files — so future timing fields won't re-break every executor test.
  • reconcileSupersededGeneratedFixFeatures (mission)mission-execution-loop.ts calls a method the test's missionStore mock lacked; added a no-op stub (the real MissionStore already implements it).
  • ModelFallbackExhaustedError / proseSignalsClearApproval / extractJsonObjectCandidates missing from vi.mock — converted stale hand-written mocks (../pi.js, ../reviewer.js in executor-test-helpers.ts) to importOriginal-spread so real exports carry through.
  • Workspace product fixes (2):
    • merger-ai.tslandWorkspaceTask now recovers the integration-tip sha as landedSha when the A1 trailer-fallback proved a sub-repo landed but its sha was never persisted, so finalizeWorkspaceTask can build merge proof (was stranding partial-land retries in-review).
    • worktree-acquisition.tsacquireWorkspaceRepoWorktree strips the shared project integrationBranch/baseBranch overrides before forwarding to acquireTaskWorktree (FN-7360's freshStartPoint was resolving an absent shared branch).
  • FN-7360 extra git symbolic-ref exec — updated worktree exec-count assertions for the new resolveIntegrationBranch call.
  • Planner-overseer / stepwise-workflow / workflow-graph / workflow-prompt / executor-step-session / liveness-gate / checkout / ce-workflow / triage-split — test-alignments for intentional behavior changes (FN-7229 retry-cap, FN-7265 review-node removal, FN-7335 pause-abort logging, FN-7577 recovery-budget, FN-7577 overseer denial loop, specifyTask single promptWithFallback call, FN-4944 already-on-main noop log, FN-7486 ownership short-circuit).

Dashboard API (shard 3)

  • store.on('task:moved') (FN-7337)createServer now registers the listener; backed the 4 affected MockStores with EventEmitter (shared root cause across chat-routes.rooms, register-git-github, routes-run-cited-goals, routes-sandbox-audit).
  • routes-agent-import — core mock converted to importOriginal-spread (was missing FN-7444 planning-deepening constants).
  • session-resume-history — engine mock missing resolveMcpServersForStore.
  • task-create-workflow-routebuiltin:legacy-coding defaultSteps now include plan-review (FN-7224/7226).
  • GitLab parity — added the missing [GitLab Parity Inventory] cross-link in docs/signals-connectors.md.

Dashboard app (shard 4)

  • Test-alignments for intentional product changes: FN-7057 (workflow selection preservation), FN-7340 (footer concurrency geometry), FN-7156 (Missions overview default), FN-7342/FN-6825 (board scroll + workflow switcher), FN-7352 (openDetailTask 3rd arg), FN-7261 (backdrop dismiss default-off), FN-7234 (non-authoritative fetch failures), plus a missing fetchWorkflowOptionalSteps mock.

MCP coverage

  • mcp-surface-coverage forwarding needle updated for FN-7446's resolvePlanningMcpServers helper.

Approach notes

  • Each fix is the minimal change at the correct source (test-update where a recent commit intentionally changed behavior; product-fix for the 2 real regressions). No assertion was loosened/deleted to force a pass; no timeout appeasement.
  • Coordination: work was partitioned by package across parallel subagents (engine / dashboard-src / dashboard-app) with Main as the sole git committer (path-scoped commits) after an early shared-index reset wiped in-progress edits — process was tightened mid-flight.

Verification

  • Full engine suite: green (9231 passed; the lone local-only custom-providers-openai-completions import error is stale local pi-ai@0.79.9 vs the lockfile's 0.80.3 — CI's fresh install resolves /compat; it passed in the original CI run).
  • Dashboard API (dashboard-api-quality-backfill): 242 files / 3185 tests / 0 failures.
  • Dashboard app (dashboard-app-quality-backfill): all targeted files green (37 + 95 tests).
  • Merge gate (pnpm test:gate): engine-core 326 + ci-shape 63, plus nohup/4040/appeasement/changeset-format checks — all pass.
  • 2 changesets added for the published-@runfusion/fusion behavior fixes (workspace landedSha, sub-repo worktree branch-strip).

Summary by CodeRabbit

  • Bug Fixes
    • Improved reliability for partial workspace land retries by recovering the exact proven landed commit so durable merge proofs can complete.
    • Fixed per-sub-repo worktree creation by removing invalid branch override settings, preventing worktree-add failures.
    • Dashboard stability updates: preserve mobile board scroll during stabilization/restore, correct task filtering when workflows are missing, ensure the Chat tab appears for done tasks, and refine modal-dismiss and responsive popover behavior.
  • Documentation
    • Expanded the GitLab connector section with GitLab parity context and a GitLab Parity Inventory reference.

gsxdsm added 17 commits July 7, 2026 08:24
…-validation-trigger-gap mocks

recoverActiveMissions (mission-execution-loop.ts:263) calls
missionStore.reconcileSupersededGeneratedFixFeatures per slice; the 5
MissionExecutionLoop-backed mocks here omitted it, so recovery threw
(TypeError) at the slice loop and aborted before processTaskOutcome /
ensureFeatureAssertionLinked / startValidatorRun ran — 4 tests failed.

Add a no-op stub (matches mission-execution-loop.test.ts reference) with
an FNXC:MissionReconcile note. No-op is correct: supersession is not
exercised by these tests.
…/7340/7156/7342/6825/7265)

Update five dashboard app test files whose assertions drifted from
intentional product changes that landed on main without updating them:

- graph-workflow-header: FN-7057 treats stale/missing workflow ids as the
  default workflow, so FN-unknown now shows under the default selection.
- EngineControlMenu.css: FN-7340 added a 768px range-thumb touch-target
  block; narrow the popover-breakpoint assertion to that selector.
- MissionManager.delete-confirm: FN-7156 removed first-mission auto-select;
  explicitly select the mission before the detail-delete flow.
- board-mobile-initial-render: FN-7342 preserves board column scroll during
  stabilization; FN-6825 renders the workflow toolbar on options, not callbacks.
- workflow-auto-layout: FN-7265 removed the stepwise review node (per-step
  review lives in the foreach); the connected run ends at completion-summary.

No assertion was loosened or deleted to force a pass; each change cites the
breaking commit via an FNXC comment. packages/dashboard is private (no changeset).
…kflow mocks (FN-7229 retry-cap + workflow verdict wiring)
…ock (3167dbc); align stepwise/graph/prompt-override tests (FN-7265/7335)
…ion-executor logging/terminal-activity assertions
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: de65604e-d7f3-4d4b-9b52-b93f20b19734

📥 Commits

Reviewing files that changed from the base of the PR and between 88c7c51 and 203c734.

📒 Files selected for processing (2)
  • packages/engine/src/__tests__/workspace-merger-idempotency.test.ts
  • packages/engine/src/workspace-land-predicate.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/engine/src/workspace-land-predicate.ts
  • packages/engine/src/tests/workspace-merger-idempotency.test.ts

📝 Walkthrough

Walkthrough

This PR adds proven landed-commit recovery for workspace partial-land retries, strips shared branch overrides during sub-repo worktree acquisition, and updates dashboard and engine tests and mocks to match revised workflow, logging, and startup behavior.

Changes

Workspace recovery and worktree setup

Layer / File(s) Summary
Recover landed commit proof
packages/engine/src/workspace-land-predicate.ts, packages/engine/src/merger-ai.ts, .changeset/fn-workspace-landedsha-recovery.md, packages/engine/src/__tests__/workspace-merger-idempotency.test.ts
findProvenLandedCommit is added and used in landWorkspaceTask to recover a proven landed SHA for already-landed sub-repos, with retry coverage for intervening commits and a changeset note.
Strip shared worktree branches
packages/engine/src/worktree-acquisition.ts, .changeset/fn-worktree-subrepo-branch-strip.md
acquireWorkspaceRepoWorktree now clears integrationBranch and baseBranch before delegating to acquireTaskWorktree, with a patch changeset documenting the release.
Connector docs update
docs/signals-connectors.md
GitLab connector documentation adds a parity-inventory reference and frames the webhook surface as part of the GitHub-to-GitLab parity model.

Dashboard and engine test alignment

Layer / File(s) Summary
Mock stores support listener registration
packages/dashboard/src/__tests__/chat-routes.rooms.test.ts, packages/dashboard/src/__tests__/register-git-github.backfill.test.ts, packages/dashboard/src/__tests__/routes-run-cited-goals.test.ts, packages/dashboard/src/__tests__/routes-sandbox-audit.test.ts
Mock stores now extend EventEmitter or expose on() stubs so server startup listener registration succeeds in route tests.
Route mocks and workflow defaults
packages/dashboard/src/__tests__/routes-agent-import.test.ts, packages/dashboard/src/__tests__/session-resume-history.test.ts, packages/dashboard/src/routes/__tests__/task-create-workflow-route.test.ts
Module mocks add missing exports and preserve real ones, and the legacy workflow route expectation now includes plan-review plus code-review.
Dashboard UI assertions
packages/dashboard/app/__tests__/graph-workflow-header.test.tsx, packages/dashboard/app/components/__tests__/AppModals.test.tsx, packages/dashboard/app/components/__tests__/ChangesDiffModal.test.tsx, packages/dashboard/app/components/__tests__/EngineControlMenu.css.test.ts, packages/dashboard/app/components/__tests__/MissionManager.delete-confirm.test.tsx, packages/dashboard/app/components/__tests__/TaskDetailModal.summary-tab.test.tsx, packages/dashboard/app/components/__tests__/board-mobile-initial-render.test.tsx, packages/dashboard/app/components/__tests__/board-no-legacy-flash.test.tsx, packages/dashboard/app/components/__tests__/workflow-auto-layout.test.ts
Dashboard tests update for stale workflow fallback, modal arguments, dismiss preference behavior, media-query checks, mission selection sequencing, Chat tab rendering, board scroll preservation, skeleton persistence, and workflow node renames.
Shared agent-log assertion helper
packages/engine/src/__tests__/agent-log-assertions.ts, packages/engine/src/__tests__/heartbeat-executor.test.ts, packages/engine/src/__tests__/merger-merge-details.test.ts, packages/engine/src/__tests__/step-session-executor.test.ts
A shared helper now matches appendAgentLog calls while ignoring an optional timing argument, and multiple tests adopt it.
Task input and logging contract changes
packages/engine/src/__tests__/heartbeat-executor.test.ts, packages/engine/src/__tests__/heartbeat-session-prompt.test.ts, packages/engine/src/__tests__/invariant-wrong-checkout-completion.test.ts, packages/engine/src/__tests__/mcp-surface-coverage.test.ts, packages/engine/src/__tests__/pi-create-fn-agent.test.ts
Tests now reflect changed createTask inputs, task completion logging, planning MCP forwarding, and a doubled pause hook call count.
Failure handling and rerun flow
packages/engine/src/__tests__/executor-step-session.test.ts, packages/engine/src/__tests__/reliability-interactions/executor-liveness-gate.test.ts, packages/engine/src/__tests__/ce-workflow-step-executor.test.ts
Tests now expect in-place failure at retry caps, await rerun bounce completion, and verify the merge-block logging sequence.
Mocks and recovery wiring
packages/engine/src/__tests__/executor-test-helpers.ts, packages/engine/src/__tests__/project-engine.test.ts, packages/engine/src/__tests__/planner-overseer-intervention-wiring.test.ts, packages/engine/src/__tests__/reliability-interactions/mission-validation-trigger-gap.test.ts, packages/engine/src/__tests__/reliability-interactions/worktrunk-self-healing.test.ts, packages/engine/src/__tests__/reliability-interactions/post-finalize-verification-noop-status-write.test.ts, packages/engine/src/__tests__/workflow-graph-optional-step-fix.test.ts
Reviewer mocks preserve real exports, OAuth refresh scheduler mocks are added, planner recovery uses a synthetic snapshot, mission supersession stubs are added, worktrunk ownership is mocked, and verification logging is narrowed.
Workflow graph and prompt cutovers
packages/engine/src/__tests__/stepwise-workflow-parity.test.ts, packages/engine/src/__tests__/workflow-prompt-overrides-resolution.test.ts
Stepwise workflow tests add custom-node success handlers, change the post-foreach gate to code-review, and move prompt override resolution to builtin:legacy-coding.
Triage mocks and fallback paths
packages/engine/src/__tests__/triage-planning-prompt-single-source.test.ts, packages/engine/src/__tests__/triage-soft-delete-write-abort.test.ts, packages/engine/src/__tests__/triage-split-into-subtasks-delete.test.ts
Triaging tests expand pi.js mocks with model fallback error and marker formatting exports, and one fallback path is simplified.
Worktree exec expectations
packages/engine/src/__tests__/worktree-acquisition-backend.test.ts, packages/engine/src/__tests__/worktree-acquisition-worktrunk.test.ts, packages/engine/src/__tests__/worktree-backend.test.ts
Worktree acquisition and backend tests now expect git remote discovery calls, explicit trunk input, and updated worktree create sequencing.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

  • Runfusion/Fusion#1717: Covers the same workspace landing logic in merger-ai.ts around recovering missing per-repo landed SHAs.
  • Runfusion/Fusion#1718: Related workspace partial-land recovery work that introduced workspace-land-predicate and landing reconciliation.
  • Runfusion/Fusion#1710: Related worktree-acquisition change in the same area of packages/engine/src/worktree-acquisition.ts.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: fixing full-suite CI failures across engine and dashboard for shards 1–4.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/full-suite-main

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR fixes full-suite CI failures across the engine and dashboard. The main changes are:

  • Added exact workspace landed-SHA recovery for partial workspace land retries.
  • Stripped shared branch overrides from per-repo workspace worktree acquisition.
  • Updated dashboard API and app tests for recent behavior changes.
  • Added tolerant engine test helpers for optional agent-log timing data.
  • Added changesets for the published workspace behavior fixes.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
packages/engine/src/workspace-land-predicate.ts Adds exact landed commit recovery and requires an actual task trailer line before accepting a recovered workspace landing SHA.
packages/engine/src/merger-ai.ts Uses the proven landed commit when skipping an already-landed workspace repo so finalization can persist merge proof.
packages/engine/src/worktree-acquisition.ts Clears shared project branch overrides before acquiring sub-repo worktrees so each repo resolves its own start point.

Reviews (4): Last reviewed commit: "fix(engine): require exact trailer line,..." | Re-trigger Greptile

Comment thread packages/engine/src/merger-ai.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
packages/engine/src/__tests__/triage-planning-prompt-single-source.test.ts (1)

21-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider extracting the ModelFallbackExhaustedError mock to a shared test helper.

The same inline class ModelFallbackExhaustedError extends Error {} plus formatModelMarkerDetails stub is duplicated verbatim across this file, triage-soft-delete-write-abort.test.ts, and triage-split-into-subtasks-delete.test.ts. This PR already established the pattern of extracting shared mock/assertion logic into a helper (agent-log-assertions.ts's expectAppendAgentLog) for exactly this kind of cross-test duplication.

♻️ Example: shared pi.js mock helper
// packages/engine/src/__tests__/pi-mock-helpers.ts
export class MockModelFallbackExhaustedError extends Error {}

export function basePiMockExports() {
  return {
    ModelFallbackExhaustedError: MockModelFallbackExhaustedError,
    formatModelMarkerDetails: vi.fn((model: string) => model),
  };
}

Then in each test file:

-  class ModelFallbackExhaustedError extends Error {}
-  return {
-    ModelFallbackExhaustedError,
-    createFnAgent: mockCreateFnAgent,
-    describeModel: vi.fn().mockReturnValue("mock-model"),
-    formatModelMarkerDetails: vi.fn((model: string) => model),
-    promptWithFallback: vi.fn().mockResolvedValue(undefined),
-  };
+  return {
+    ...basePiMockExports(),
+    createFnAgent: mockCreateFnAgent,
+    describeModel: vi.fn().mockReturnValue("mock-model"),
+    promptWithFallback: vi.fn().mockResolvedValue(undefined),
+  };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/engine/src/__tests__/triage-planning-prompt-single-source.test.ts`
around lines 21 - 34, The `vi.mock("../pi.js")` setup is duplicating the same
`ModelFallbackExhaustedError` class and `formatModelMarkerDetails` stub across
multiple triage tests. Extract those shared exports into a reusable test helper
(similar to `agent-log-assertions.ts`’s shared assertion helper) and have this
file’s `vi.mock("../pi.js")` consume that helper so the mock shape stays
consistent across `triage-planning-prompt-single-source.test.ts`,
`triage-soft-delete-write-abort.test.ts`, and
`triage-split-into-subtasks-delete.test.ts`.
packages/dashboard/app/components/__tests__/board-no-legacy-flash.test.tsx (1)

285-297: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Test only waits for the fetch call, not for the rejection to actually be handled.

waitFor(() => expect(fetchBoardWorkflows).toHaveBeenCalled()) resolves as soon as the mock is invoked, not after its rejection has propagated through useBoardWorkflows's .catch. Since the subsequent assertion (expectSkeleton) is a no-change assertion (skeleton was already shown pre-call), this test can pass even if the non-authoritative-failure catch branch never executes, weakening its ability to catch a future regression where a rejected fetch does fall back to legacy.

Consider waiting on a signal that the rejection was actually processed (e.g., flushing microtasks via await Promise.resolve() after the call, or asserting on a state change that only happens after the catch runs) to make this a stronger regression guard.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/dashboard/app/components/__tests__/board-no-legacy-flash.test.tsx`
around lines 285 - 297, The test in the Board/ListView non-legacy flash case
only waits for fetchBoardWorkflows to be called, so it does not prove the
rejected promise was handled by useBoardWorkflows. Update this test to wait for
the rejection path to settle after the mock invocation, using a microtask flush
or another post-catch signal, so the assertion verifies the non-authoritative
failure behavior instead of just the initial call.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/engine/src/merger-ai.ts`:
- Around line 1236-1247: Recovery fallback can still leave the repo stranded
because a failed git rev-parse is swallowed and later records status as landed
with an undefined landedSha. In merger-ai.ts, update the recovery path in the
logic around recoveredLandedSha so that a failed refs/heads/${integrationBranch}
lookup is treated explicitly: either throw a retryable error like
WorkspacePartialLandError or emit a clear failure/audit signal and avoid pushing
a landed record without a SHA. Ensure the repos.push path only marks
alreadyLanded when a valid landedSha was recovered.
- Around line 1236-1247: The recovery path in merger-ai.ts is using the
integration branch tip as the landed SHA when entry.landedSha is missing, which
can point past the actual squash commit. Update the fallback logic in the AI
merge workspace flow so it preserves the original landed squash commit SHA
associated with the task, not refs/heads/${integrationBranch}. Make sure the
value stored in finalizeMerged via mergeDetails.commitSha and
workspaceLandedShas remains the task’s landed commit, since task-revert.ts uses
it as the range endpoint.

---

Nitpick comments:
In `@packages/dashboard/app/components/__tests__/board-no-legacy-flash.test.tsx`:
- Around line 285-297: The test in the Board/ListView non-legacy flash case only
waits for fetchBoardWorkflows to be called, so it does not prove the rejected
promise was handled by useBoardWorkflows. Update this test to wait for the
rejection path to settle after the mock invocation, using a microtask flush or
another post-catch signal, so the assertion verifies the non-authoritative
failure behavior instead of just the initial call.

In `@packages/engine/src/__tests__/triage-planning-prompt-single-source.test.ts`:
- Around line 21-34: The `vi.mock("../pi.js")` setup is duplicating the same
`ModelFallbackExhaustedError` class and `formatModelMarkerDetails` stub across
multiple triage tests. Extract those shared exports into a reusable test helper
(similar to `agent-log-assertions.ts`’s shared assertion helper) and have this
file’s `vi.mock("../pi.js")` consume that helper so the mock shape stays
consistent across `triage-planning-prompt-single-source.test.ts`,
`triage-soft-delete-write-abort.test.ts`, and
`triage-split-into-subtasks-delete.test.ts`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 0117936a-816d-4237-b933-26194c9aeb90

📥 Commits

Reviewing files that changed from the base of the PR and between 0782184 and 0c1a20b.

📒 Files selected for processing (47)
  • .changeset/fn-workspace-landedsha-recovery.md
  • .changeset/fn-worktree-subrepo-branch-strip.md
  • docs/signals-connectors.md
  • packages/dashboard/app/__tests__/graph-workflow-header.test.tsx
  • packages/dashboard/app/components/__tests__/AppModals.test.tsx
  • packages/dashboard/app/components/__tests__/ChangesDiffModal.test.tsx
  • packages/dashboard/app/components/__tests__/EngineControlMenu.css.test.ts
  • packages/dashboard/app/components/__tests__/MissionManager.delete-confirm.test.tsx
  • packages/dashboard/app/components/__tests__/TaskDetailModal.summary-tab.test.tsx
  • packages/dashboard/app/components/__tests__/board-mobile-initial-render.test.tsx
  • packages/dashboard/app/components/__tests__/board-no-legacy-flash.test.tsx
  • packages/dashboard/app/components/__tests__/workflow-auto-layout.test.ts
  • packages/dashboard/src/__tests__/chat-routes.rooms.test.ts
  • packages/dashboard/src/__tests__/register-git-github.backfill.test.ts
  • packages/dashboard/src/__tests__/routes-agent-import.test.ts
  • packages/dashboard/src/__tests__/routes-run-cited-goals.test.ts
  • packages/dashboard/src/__tests__/routes-sandbox-audit.test.ts
  • packages/dashboard/src/__tests__/session-resume-history.test.ts
  • packages/dashboard/src/routes/__tests__/task-create-workflow-route.test.ts
  • packages/engine/src/__tests__/agent-log-assertions.ts
  • packages/engine/src/__tests__/ce-workflow-step-executor.test.ts
  • packages/engine/src/__tests__/executor-step-session.test.ts
  • packages/engine/src/__tests__/executor-test-helpers.ts
  • packages/engine/src/__tests__/heartbeat-executor.test.ts
  • packages/engine/src/__tests__/heartbeat-session-prompt.test.ts
  • packages/engine/src/__tests__/invariant-wrong-checkout-completion.test.ts
  • packages/engine/src/__tests__/mcp-surface-coverage.test.ts
  • packages/engine/src/__tests__/merger-merge-details.test.ts
  • packages/engine/src/__tests__/pi-create-fn-agent.test.ts
  • packages/engine/src/__tests__/planner-overseer-intervention-wiring.test.ts
  • packages/engine/src/__tests__/project-engine.test.ts
  • packages/engine/src/__tests__/reliability-interactions/executor-liveness-gate.test.ts
  • packages/engine/src/__tests__/reliability-interactions/mission-validation-trigger-gap.test.ts
  • packages/engine/src/__tests__/reliability-interactions/post-finalize-verification-noop-status-write.test.ts
  • packages/engine/src/__tests__/reliability-interactions/worktrunk-self-healing.test.ts
  • packages/engine/src/__tests__/step-session-executor.test.ts
  • packages/engine/src/__tests__/stepwise-workflow-parity.test.ts
  • packages/engine/src/__tests__/triage-planning-prompt-single-source.test.ts
  • packages/engine/src/__tests__/triage-soft-delete-write-abort.test.ts
  • packages/engine/src/__tests__/triage-split-into-subtasks-delete.test.ts
  • packages/engine/src/__tests__/workflow-graph-optional-step-fix.test.ts
  • packages/engine/src/__tests__/workflow-prompt-overrides-resolution.test.ts
  • packages/engine/src/__tests__/worktree-acquisition-backend.test.ts
  • packages/engine/src/__tests__/worktree-acquisition-worktrunk.test.ts
  • packages/engine/src/__tests__/worktree-backend.test.ts
  • packages/engine/src/merger-ai.ts
  • packages/engine/src/worktree-acquisition.ts

Comment thread packages/engine/src/merger-ai.ts Outdated
gsxdsm added 3 commits July 7, 2026 10:09
…ptile P1)

findProvenLandedCommit returns the task's own trailer commit (or recorded
landedSha when still an ancestor) instead of rev-parse on the integration
tip, so an intervening sub-repo land can't attribute a later unrelated
commit. Regression: intervening commit after lost persist recovers tipAfterFirst.
…nded commit (Greptile P1)

findProvenLandedCommit now keeps --grep as a prefilter but verifies each
candidate carries an actual 'Fusion-Task-Id: <taskId>' trailer line via
git show -s --format=%B, so a later commit that merely mentions the trailer
text in its body cannot be selected. Regression covers a body-mention
intervening commit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant