Skip to content

Clarify and() semantics in the Gremlin specification - #3753

Merged
spmallette merged 1 commit into
apache:masterfrom
spmallette:tp-docs-and-step-148
Oct 29, 2026
Merged

spmallette merged 1 commit into
apache:masterfrom
spmallette:tp-docs-and-step-148

Conversation

@spmallette

Copy link
Copy Markdown
Contributor

Expand the and() section of the Gremlin semantics specification to cover behaviors the prose left implicit, in language-agnostic spec voice with no runnable examples. It now states that the step tests for the existence of output rather than its content, so a child emitting a boolean false or a null still satisfies its branch and only a branch producing no result filters the traverser. It clarifies that an incomputable comparison, such as one against NaN or across types, is defined to be FALSE and therefore filters the traverser rather than raising an error. It also explains that and() is a connective step whose infix form groups the surrounding traversals, so a projection or terminal step written after it is absorbed into the second branch, and notes that a where() step or placing and() ahead of such a step keeps it applied to the surviving traverser.

Expand the and() section of the Gremlin semantics specification to cover
behaviors the prose left implicit, in language-agnostic spec voice with no
runnable examples. It now states that the step tests for the existence of
output rather than its content, so a child emitting a boolean false or a null
still satisfies its branch and only a branch producing no result filters the
traverser. It clarifies that an incomputable comparison, such as one against
NaN or across types, is defined to be FALSE and therefore filters the traverser
rather than raising an error. It also explains that and() is a connective step
whose infix form groups the surrounding traversals, so a projection or terminal
step written after it is absorbed into the second branch, and notes that a
where() step or placing and() ahead of such a step keeps it applied to the
surviving traverser.

Assisted-by: Kiro:claude-opus-4.8
@spmallette
spmallette merged commit f107c58 into apache:master Oct 29, 2026
6 checks passed
@spmallette
spmallette deleted the tp-docs-and-step-148 branch October 29, 2026 15:29
@codecov-commenter

codecov-commenter commented Oct 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.45%. Comparing base (a28cd1f) to head (30d1417).
⚠️ Report is 909 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3753      +/-   ##
============================================
+ Coverage     76.35%   77.45%   +1.09%     
- Complexity    13424    14999    +1575     
============================================
  Files          1012     1050      +38     
  Lines         60341    66745    +6404     
  Branches       7075     7994     +919     
============================================
+ Hits          46076    51698    +5622     
- Misses        11548    11841     +293     
- Partials       2717     3206     +489     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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