Skip to content

new blog on upcoming changes for weighted graph models#1259

Open
tylernix wants to merge 6 commits into
mainfrom
blog/check-v2-upcoming-changes
Open

new blog on upcoming changes for weighted graph models#1259
tylernix wants to merge 6 commits into
mainfrom
blog/check-v2-upcoming-changes

Conversation

@tylernix
Copy link
Copy Markdown
Contributor

@tylernix tylernix commented May 14, 2026

Summary

  • Adds blog post explaining OpenFGA's transition to a weighted graph-based resolution algorithm for Check
  • Covers the 5 incompatible patterns: missing TTU relations, tuple cycles with AND/BUT NOT, userset/wildcard checks against exclusion, userset alias inference, and self-referential userset checks
  • Includes migration guidance and examples for model fixes for each pattern

Summary by CodeRabbit

Release Notes

  • Documentation
    • Published blog post detailing upcoming changes to Check resolution algorithm, including new model validation errors, behavioral modifications, and a validation checklist to help users prepare for the transition.

Review Change Stack

Copilot AI review requested due to automatic review settings May 14, 2026 03:50
@tylernix tylernix requested review from a team as code owners May 14, 2026 03:50
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 14, 2026

Important

Review skipped

Auto incremental reviews are disabled on this repository.

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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: dfc256e6-bad8-43fa-82b9-e46f2eda3831

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

Walkthrough

A new blog post announces OpenFGA's rollout of weighted graph-based Check resolution. It contrasts the legacy recursive approach with build-time graph construction, details breaking changes in model validation and Check behavior, and provides migration guidance including error scenarios, validation checklists, timeline, and community resources.

Changes

Weighted Graph Migration Announcement

Layer / File(s) Summary
Post metadata and announcement scope
blog/weighted-graph-upcoming-changes.md (front matter and intro)
Blog front matter and introduction establish the weighted graph rollout topic, explain that ListObjects already uses weighted graph while Check is next, set expectations about temporary fallback behavior for incompatible models, and emphasize the need to migrate before fallback removal.
Technical motivation and architecture context
blog/weighted-graph-upcoming-changes.md (Why section)
Contrasts legacy request-time recursion (depth limits, error-handling constraints) against build-time graph construction and weighted traversal, highlighting determinism and improved load management.
Breaking changes and error scenarios
blog/weighted-graph-upcoming-changes.md (What's Changing, Check Request Errors, Check Resolution Changes sections)
Documents two model build errors (missing referenced relations for relation from parent, tuple cycles from and/but not), details Check request errors for exclusion-based relations with userset/wildcard inputs and workarounds, and explains Check resolution changes (strict userset relation name matching, self-referential usersets returning FALSE instead of TRUE without tuples).
Migration checklist, timeline, and support
blog/weighted-graph-upcoming-changes.md (How to Check, Timeline, Get Help sections)
Provides a practical checklist for validating model impact (model validation, auditing check patterns, using .fga.yaml tests), describes rollout stages with CLI validation command and final enforcement date, and links to community resources for migration help.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 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 describes the main change: adding a blog post about upcoming changes for weighted graph models, which matches the changeset perfectly.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch blog/check-v2-upcoming-changes

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 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 `@blog/weighted-graph-upcoming-changes.md`:
- Line 14: Change the wording for clarity in the file's intro and model-error
sentence: replace the phrase “update algorithm” with “updated algorithm” in the
sentence that begins “OpenFGA is continuing to roll out a **weighted graph-based
resolution algorithm**…” and change the verb usage “models fallback” (around
line referencing model errors) to “models fall back” or “models revert to the
legacy algorithm” so the phrasing reads naturally and consistently.
- Around line 143-146: The fenced code blocks containing example calls like
check("document:report", "viewer", "document:contract#owner"),
check("document:readme", "viewer", "user:*"), check("document:report", "viewer",
"user:alice"), the blocks with write(document:source#allowed, viewer,
document:target), and the other examples are missing language identifiers;
update each triple-backtick fence to include a language (e.g., ```text) so lint
rule MD040 is satisfied and syntax highlighting works, ensuring you modify every
block that wraps calls to check(...) and write(...) as noted in the review.
- Line 234: Update the heading text "How to Check If You're Model Is Affected"
to use the possessive form by replacing "You're" with "Your" so it reads "How to
Check If Your Model Is Affected"; locate and edit the heading string in the
markdown (the line containing that exact heading) to correct the typo.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f9957dc6-a926-445e-974f-d4af69cc4a72

📥 Commits

Reviewing files that changed from the base of the PR and between 2108fb7 and a4782f8.

📒 Files selected for processing (1)
  • blog/weighted-graph-upcoming-changes.md

Comment thread blog/weighted-graph-upcoming-changes.md Outdated
Comment thread blog/weighted-graph-upcoming-changes.md Outdated
Comment thread blog/weighted-graph-upcoming-changes.md Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://openfga.github.io/openfga.dev/pr-preview/pr-1259/

Built to branch gh-pages at 2026-05-14 04:37 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new blog post describing OpenFGA’s upcoming weighted graph-based Check resolution changes, the incompatible modeling/check patterns, and migration guidance.

Changes:

  • Introduces a new announcement/migration blog post.
  • Documents five affected patterns with examples and suggested fixes.
  • Adds timeline and support links for users preparing migrations.
Comments suppressed due to low confidence (9)

blog/weighted-graph-upcoming-changes.md:69

  • OpenFGA model snippets elsewhere use dsl.openfga fences for site syntax highlighting (for example, blog/conditional-tuples-announcement.md:23 and docs/content/getting-started/perform-list-users.mdx:100). Using plain dsl here deviates from that convention and may lose OpenFGA-specific highlighting.
```dsl

blog/weighted-graph-upcoming-changes.md:80

  • OpenFGA model snippets elsewhere use dsl.openfga fences for site syntax highlighting (for example, blog/conditional-tuples-announcement.md:23 and docs/content/getting-started/perform-list-users.mdx:100). Using plain dsl here deviates from that convention and may lose OpenFGA-specific highlighting.
```dsl

blog/weighted-graph-upcoming-changes.md:97

  • OpenFGA model snippets elsewhere use dsl.openfga fences for site syntax highlighting (for example, blog/conditional-tuples-announcement.md:23 and docs/content/getting-started/perform-list-users.mdx:100). Using plain dsl here deviates from that convention and may lose OpenFGA-specific highlighting.
```dsl

blog/weighted-graph-upcoming-changes.md:106

  • OpenFGA model snippets elsewhere use dsl.openfga fences for site syntax highlighting (for example, blog/conditional-tuples-announcement.md:23 and docs/content/getting-started/perform-list-users.mdx:100). Using plain dsl here deviates from that convention and may lose OpenFGA-specific highlighting.
```dsl

blog/weighted-graph-upcoming-changes.md:117

  • OpenFGA model snippets elsewhere use dsl.openfga fences for site syntax highlighting (for example, blog/conditional-tuples-announcement.md:23 and docs/content/getting-started/perform-list-users.mdx:100). Using plain dsl here deviates from that convention and may lose OpenFGA-specific highlighting.
```dsl

blog/weighted-graph-upcoming-changes.md:135

  • OpenFGA model snippets elsewhere use dsl.openfga fences for site syntax highlighting (for example, blog/conditional-tuples-announcement.md:23 and docs/content/getting-started/perform-list-users.mdx:100). Using plain dsl here deviates from that convention and may lose OpenFGA-specific highlighting.
```dsl

blog/weighted-graph-upcoming-changes.md:150

  • OpenFGA model snippets elsewhere use dsl.openfga fences for site syntax highlighting (for example, blog/conditional-tuples-announcement.md:23 and docs/content/getting-started/perform-list-users.mdx:100). Using plain dsl here deviates from that convention and may lose OpenFGA-specific highlighting.
```dsl

blog/weighted-graph-upcoming-changes.md:184

  • OpenFGA model snippets elsewhere use dsl.openfga fences for site syntax highlighting (for example, blog/conditional-tuples-announcement.md:23 and docs/content/getting-started/perform-list-users.mdx:100). Using plain dsl here deviates from that convention and may lose OpenFGA-specific highlighting.
```dsl

blog/weighted-graph-upcoming-changes.md:256

  • This sentence is missing the article before "weighted graph algorithm"; it should read "the weighted graph algorithm".

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread blog/weighted-graph-upcoming-changes.md Outdated
Comment thread blog/weighted-graph-upcoming-changes.md Outdated
Comment thread blog/weighted-graph-upcoming-changes.md Outdated
Comment thread blog/weighted-graph-upcoming-changes.md Outdated
Comment thread blog/weighted-graph-upcoming-changes.md Outdated
Comment thread blog/weighted-graph-upcoming-changes.md
Comment thread blog/weighted-graph-upcoming-changes.md
Comment thread blog/weighted-graph-upcoming-changes.md

```
write(document:source#allowed, viewer, document:target) # Already stored
write(document:source#reader, viewer, document:target) # Store explicitly
Comment thread blog/weighted-graph-upcoming-changes.md Outdated
Comment on lines +115 to +117
**Fix:** Split into a "base" relation (allows recursion) and an "allowed" relation (applies the access gate):

```dsl
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.

2 participants