Skip to content

feat(api-headless-cms-workflows): workflows integration - #6042

Merged
brunozoric merged 20 commits into
bruno/feat/workflows-umbrellafrom
bruno/feat/workflows-api-headless-cms-workflows
Oct 27, 2026
Merged

brunozoric merged 20 commits into
bruno/feat/workflows-umbrellafrom
bruno/feat/workflows-api-headless-cms-workflows

Conversation

@brunozoric

@brunozoric brunozoric commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Headless CMS integration: workflow rules, guards and review state for CMS entries; registers system.workflow as a filterable entry system field.

Part of the workflows split (335 files). Merges into bruno/feat/workflows-umbrella; builds only together with the other parts.

🤖 Generated with Claude Code

Split from bruno/refactor/workflows-flow for review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

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
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6eafa402-e583-484a-a3e8-5c0bf643712d

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:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

🚓 Slop Cop

✅ Nothing worth flagging. The diff looks consistent with the PR's stated intent and the code-style rules.

Automated, non-blocking heads-up from an LLM. It can be wrong — use your judgment. Regenerates on every push.

brunozoric and others added 19 commits October 21, 2026 11:52
…rable entry system field

Registers WorkflowEntrySystemField and extends ICmsEntrySystem and CmsEntryListWhereSystem with workflow. Adds a filter test on the workflow fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ly review lookup

The save block and the publish rules looked the review up with GetTargetReviewUseCase, which runs stuck detection and can fail and save the step, sync the target and notify, all from inside an entry or page before-event. GetActiveTargetReviewUseCase reads the active review as stored and never writes; GetTargetReviewUseCase keeps stuck detection for the target review wrappers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ce instead of reading each target

Part of removing queries in loops (docs/.bruno/plans/2026-10-21-workflows-no-n-plus-one.md, Phase 1 and Phase 2 item 1). The review lists turn the viewer's read access into query filters (readable models, own-only models by author, denied folders) built once per request, confirm each storage page with one batch read, and never read a target per row. Folder rules load only for models with active reviews (one distinct-values query).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…m reads

Part of removing queries in loops (docs/.bruno/plans/2026-10-21-workflows-no-n-plus-one.md, Phase 1 item 5 and Phase 2 items 2-6): routing candidates read the target and the folder record once and reuse the listed users; blocking reviews, delete-multiple and delete-workflow paths use one batch call; candidateTeams goes through a request-scoped team loader. The delete-multiple hook trusts the event payload instead of reading the entries again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r-delete engine call

Part of removing queries in loops (docs/.bruno/plans/2026-10-21-workflows-no-n-plus-one.md, Phase 3): the delete cascade lists all records of a batch of reviews at once and deletes in batches with one task-abort call; assignment records are written with a concurrency limit; least-loaded ties read one userId_in list; cancel-for-delete no longer lists twice; saving a workflow reads its user targets with one ListUsers call.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nnot delete the entry

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…path prefix

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eed no review

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e delete, move and block checks

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…views in storage

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…st candidate tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eep their own team grants

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ms and split multi-abstraction helpers

Limit clamps, the skipped folder check, unbound moves without review lookups, blocked moves
staying put, review lookups under the bypass and another app's workflow surviving a refused
delete are now asserted; one duplicate is removed and each helper file holds one abstraction.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts from the wrapper barrels

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… after a move

The fresh-context read worked around a stale DynamoDB loader cache after a move,
which is now cleared.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brunozoric
brunozoric merged commit eb1df02 into bruno/feat/workflows-umbrella Oct 27, 2026
14 of 17 checks passed
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