Skip to content

refactor(workflow): S17 end-to-end cutover matrix#1590

Merged
gsxdsm merged 2 commits into
feature/workflow-owned-merge-s08-workflow-owned-merge-processingfrom
feature/workflow-owned-merge-s17-cutover-matrix
Jun 17, 2026
Merged

refactor(workflow): S17 end-to-end cutover matrix#1590
gsxdsm merged 2 commits into
feature/workflow-owned-merge-s08-workflow-owned-merge-processingfrom
feature/workflow-owned-merge-s17-cutover-matrix

Conversation

@gsxdsm

@gsxdsm gsxdsm commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Stack Slice

  • Slice: S17
  • Milestone: Gate E
  • Base branch: feature/workflow-owned-merge-s16-legacy-retry-field-demotion
  • Full plan: docs/plans/2026-06-09-003-refactor-workflow-owned-merge-full-migration-slices-plan.md

Goal

Prove the full workflow-owned invariant across all known production surfaces before removing dual-read compatibility.

Dependency

S13 scheduler deletion, S14 merge queue deletion, S15 self-healing deletion, and S16 retry field demotion.

Expected Scope

engine reliability tests, core store tests, dashboard projection tests, docs/testing.md.

Expected Tests

Default coding, stepwise coding, custom workflow, PR workflow, plugin workflow extension, autoMerge false, manual retry, hard cancel, restart during merge, transient/permanent merge failures, branch groups, stale recovery, already-landed finalization, dashboard and CLI projections.

Exit Gate

Gate, lint, build, and targeted matrix suites pass with no old engine merge/retry/scheduling policy path racing workflow runtime.

Status

Draft stack placeholder. This PR reserves ordering and review context; implementation should replace or extend the handoff artifact before this slice is marked ready.

Implementation Added

  • Added executable workflow cutover matrix covering merge success/manual hold, retry exhaustion, recovery wake, branch-group gates, and workflow-first projection.

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9c941595-7db7-49e5-bf92-b50169982648

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • ✅ Review completed - (🔄 Check again to review again)
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/workflow-owned-merge-s17-cutover-matrix

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 and usage tips.

@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from 0040cf8 to af43c55 Compare June 9, 2026 20:31
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 6e69a10 to 1c32f07 Compare June 9, 2026 20:31
@gsxdsm gsxdsm marked this pull request as ready for review June 9, 2026 20:35
@greptile-apps

greptile-apps Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This draft S17 PR adds an executable cutover matrix for the workflow-owned merge migration, proving merge classification, retry exhaustion, recovery event publishing, branch-group gate decisions, and workflow-first projection over legacy retry fields. It addresses the three gaps called out in earlier rounds: the it() block has been split into five independent scenarios, the noOp: true already-landed path is now covered, and all five classifyMergeFailure branches are exercised.

  • Test split and merge-failure coverage: Five separate it() blocks prevent early-failure masking; all classifyMergeFailure branches (file-scope violation, already-landed-from-reason, socket/transient, manual/conflict, default permanent) are now individually asserted.
  • Branch-group FN-5819 invariant gap: The branch-group it() only proves the shared-member exception side (assignmentMode: "shared" + autoMerge: falseallowed: true); the complementary non-shared blocking case is absent, leaving the guard susceptible to silent regression.
  • Gate enrollment: workflow-cutover-matrix.test.ts is not in the engine-core merge-gate allow-list in vitest.config.ts; it runs only in the non-blocking engine-default project.

Confidence Score: 4/5

Safe to merge as a draft placeholder; the one actionable gap should be fixed before this slice is marked ready.

The branch-group it() block leaves the non-shared-member blocking path untested — if the !isSharedMember guard were removed from decideBranchGroupMemberIntegration, all members would pass with allowed: true and this test would not catch it. That is the only real defect in an otherwise well-structured test file that addresses all three gaps flagged in earlier review rounds.

packages/engine/src/tests/workflow-cutover-matrix.test.ts — the branch-group gate test needs a second assertion for the non-shared member path.

Important Files Changed

Filename Overview
packages/engine/src/tests/workflow-cutover-matrix.test.ts Adds five independent it() blocks covering merge classification, retry exhaustion, recovery events, branch-group gates, and workflow projection; one invariant gap: the non-shared member blocked path for autoMerge:false is untested, leaving the FN-5819 shared-member exception boundary unproven in one direction.
docs/plans/workflow-owned-merge-stack/s17-cutover-matrix.md Planning doc / handoff artifact describing the S17 slice goal, dependencies, and exit gate; documentation-only change, no logic.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[classifyMergePrimitiveResult] --> B{data.status?}
    B -- merged --> C{data.noOp?}
    C -- true --> D["already-landed tested"]
    C -- false --> E["merged tested"]
    B -- manual-required --> F["manual-required tested"]
    B -- timeout --> G["transient-failure tested"]
    B -- failed --> H[classifyMergeFailure]
    B -- merged-requested --> I["merged-requested not in matrix"]
    B -- stale-head --> J["stale-head not in matrix"]
    B -- other --> K["passthrough primitiveOutcome"]
    H --> L{normalized reason}
    L -- file scope --> M["file-scope-violation tested"]
    L -- already + main/merged/landed --> N["already-landed tested"]
    L -- socket/transient --> O["transient-failure tested"]
    L -- manual/conflict --> P["manual-required tested"]
    L -- default --> Q["merge-failed tested"]
Loading

Reviews (8): Last reviewed commit: "test(FN-000): cover merge failure cutove..." | Re-trigger Greptile

@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from af43c55 to 42f1c6c Compare June 9, 2026 20:38
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 1c32f07 to 5fb5c9a Compare June 9, 2026 20:38
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from 42f1c6c to ab6a3ea Compare June 9, 2026 20:48
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 5fb5c9a to 75a1709 Compare June 9, 2026 20:48
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from ab6a3ea to 95d7e79 Compare June 9, 2026 23:36
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 75a1709 to db51323 Compare June 9, 2026 23:37
Comment thread packages/engine/src/__tests__/workflow-cutover-matrix.test.ts Outdated
Comment thread packages/engine/src/__tests__/workflow-cutover-matrix.test.ts
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from 95d7e79 to c1b51bd Compare June 10, 2026 00:23
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from d751bc4 to 1fc96ee Compare June 10, 2026 00:23
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from c1b51bd to cde8801 Compare June 10, 2026 03:48
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 1fc96ee to 7beabf9 Compare June 10, 2026 03:48
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from cde8801 to a71b495 Compare June 10, 2026 03:53
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 7beabf9 to 47bfa0e Compare June 10, 2026 03:53
Comment thread packages/engine/src/__tests__/workflow-cutover-matrix.test.ts
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 47bfa0e to e7391a5 Compare June 11, 2026 15:25
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch 2 times, most recently from a9ba949 to 8382a87 Compare June 11, 2026 15:35
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch 2 times, most recently from 61c1924 to e7b76ff Compare June 11, 2026 15:39
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from 8382a87 to a29b5d9 Compare June 11, 2026 15:39
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from e7b76ff to 74624f9 Compare June 11, 2026 15:44
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch 2 times, most recently from 2d5f995 to 5c07d45 Compare June 11, 2026 15:49
gsxdsm added a commit that referenced this pull request Jun 11, 2026
Address PR #1590 feedback by adding transient and permanent merge failure classification branches to the workflow-owned merge cutover matrix.
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 74624f9 to 51057f7 Compare June 11, 2026 15:49
gsxdsm added 2 commits June 11, 2026 08:51
Address PR #1590 feedback by adding transient and permanent merge failure classification branches to the workflow-owned merge cutover matrix.
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s16-legacy-retry-field-demotion branch from 5c07d45 to edd43ce Compare June 11, 2026 15:51
@gsxdsm gsxdsm force-pushed the feature/workflow-owned-merge-s17-cutover-matrix branch from 51057f7 to 2ce9a9f Compare June 11, 2026 15:51
@gsxdsm

gsxdsm commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator Author

The classifyMergeFailure function ... is entirely untested.

Addressed: the cutover matrix now covers timeout plus all failed-merge classifier branches, including transient, file-scope, stale-head, manual-required, and permanent failure routing.

@stage-review

stage-review Bot commented Jun 16, 2026

Copy link
Copy Markdown

Ready to review this PR? Stage has broken it down into 2 individual chapters for you:

Title
1 Document the S17 cutover matrix plan
2 Implement workflow-owned merge cutover matrix tests
Open in Stage

Chapters generated by Stage for commit 2ce9a9f on Jun 16, 2026 9:19am UTC.

Base automatically changed from feature/workflow-owned-merge-s16-legacy-retry-field-demotion to feature/workflow-owned-merge-s08-workflow-owned-merge-processing June 17, 2026 21:48
@gsxdsm gsxdsm merged commit 06516c3 into feature/workflow-owned-merge-s08-workflow-owned-merge-processing Jun 17, 2026
2 checks passed
@gsxdsm gsxdsm deleted the feature/workflow-owned-merge-s17-cutover-matrix branch June 17, 2026 21:49
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