Skip to content

Conversation

@yegor256
Copy link
Member

@yegor256 yegor256 commented Dec 12, 2025

closes #516

Summary by CodeRabbit

  • Tests
    • Large expansion of test coverage for Sugar→Salty conversion, adding many cases for recursive expressions, binding ordering/preservation, formations/pairs, literals, Unicode, deep nesting, negations and other edge cases.
  • Test Data
    • Added numerous condition-pack YAML fixtures covering and/or/not/in/part-of/xi/nf/termination scenarios and explicit failure cases.
  • Chores
    • Expanded public API surface to support additional test and validation scenarios.

✏️ Tip: You can customize this high-level summary in your review settings.

Copilot AI review requested due to automatic review settings December 12, 2025 08:05
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 12, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Adds a large suite of new tests for Sugar→Salty conversion and rule normal-form checks, plus dozens of YAML condition-pack fixtures used by tests. No production source code changes except test files and test resource data; one export (isNF) is added to Rule for testing.

Changes

Cohort / File(s) Summary
Sugar conversion tests
test/SugarSpec.hs
Adds comprehensive tests for Sugar→Salty conversion covering recursive EX_PHI cases, BI_META/BDS_META preservation, rho (ρ)/tau (τ) binding ordering, PAIR/formation edge cases (void/empty), literal handling, argument variants, Unicode attributes, deep nesting, and other edge cases.
Rule tests & exports
test/RuleSpec.hs
Expands rule tests to exercise isNF and existing condition checks; updates test imports/visibility to reference extended AST symbols and new isNF export.
Condition-pack fixtures
test-resources/condition-packs/*
test-resources/condition-packs/and-fails.yaml, test-resources/condition-packs/and-multiple.yaml, test-resources/condition-packs/in-missing.yaml, test-resources/condition-packs/in-simple.yaml, test-resources/condition-packs/in-void.yaml, test-resources/condition-packs/nf-dispatch-global.yaml, test-resources/condition-packs/nf-dispatch-this.yaml, test-resources/condition-packs/nf-empty-formation.yaml, test-resources/condition-packs/nf-formation-with-delta.yaml, test-resources/condition-packs/nf-formation-with-void.yaml, test-resources/condition-packs/nf-global.yaml, test-resources/condition-packs/nf-termination.yaml, test-resources/condition-packs/nf-this.yaml, test-resources/condition-packs/not-alpha.yaml, test-resources/condition-packs/not-eq.yaml, test-resources/condition-packs/not-nf-on-dc.yaml, test-resources/condition-packs/or-first-match.yaml, test-resources/condition-packs/part-of-missing.yaml, test-resources/condition-packs/part-of-nested.yaml, test-resources/condition-packs/part-of-simple.yaml, test-resources/condition-packs/xi-application.yaml, test-resources/condition-packs/xi-dispatch.yaml, test-resources/condition-packs/xi-formation.yaml, test-resources/condition-packs/xi-global.yaml, test-resources/condition-packs/xi-this.yaml
Adds many YAML fixtures defining expressions, patterns, and condition clauses (and, or, not, in, part-of, xi, nf, not-nf, expected failures) to exercise conditional pattern evaluation and edge cases.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Pay attention to:
    • Complex assertions and numerous edge cases in test/SugarSpec.hs.
    • Syntactic correctness and intended semantics across many YAML fixtures.
    • The isNF export/signature in Rule and test references in test/RuleSpec.hs.

Possibly related PRs

Poem

🐰 I hopped through YAML fields and specs tonight,
I nudged rho bindings, nested formations tight,
I munched on pairs and voids till morning light,
Literals and unicode made my whiskers bright,
Tests bloom like carrots — crunchy, small, and right. 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'more tests' is vague and generic, failing to convey what specific functionality or components are being tested. Provide a more specific title that describes the main test additions, such as 'Add tests for Sugar toSalty conversion and condition packs' or similar.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed The PR successfully adds extensive new tests across multiple areas to address the inadequate test coverage issue (#516).
Out of Scope Changes check ✅ Passed All changes are in scope: new test files (SugarSpec.hs) and test resource YAML files (condition packs) directly support improving test coverage.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 516

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 632bc77 and 63d71e0.

📒 Files selected for processing (1)
  • test/RuleSpec.hs (3 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/RuleSpec.hs

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
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

This PR adds 18 new test cases to SugarSpec.hs to improve test coverage for the Sugar module's toSalty conversion functionality. The tests verify various edge cases and transformations between sweet (sugared) and salty (desugared) syntax representations in phi-calculus programs.

  • Adds tests for expression conversions (EX_PHI_MEET, EX_PHI_AGAIN)
  • Adds tests for various literal types (floats, negative numbers, empty strings, scientific notation)
  • Adds tests for binding patterns, unicode attributes, and nested formations

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

Comment on lines +313 to +316
EX_PHI_AGAIN pref ix innerSalty -> do
pref `shouldBe` Nothing
ix `shouldBe` 5
innerSalty `shouldSatisfy` isDispatch
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

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

The variable name 'innerSalty' is a compound name. According to the project's coding guidelines, compound variable names make code harder to read, and single-word nouns are preferred for variable names.

Copilot generated this review using guidance from organization custom instructions.
Comment on lines +310 to +311
isDispatch EX_DISPATCH{} = True
isDispatch _ = False
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

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

The helper function 'isDispatch' is duplicated in this test. The same function definition appears in the test at lines 296-297. This code duplication reduces maintainability and should be extracted to avoid repetition.

Copilot uses AI. Check for mistakes.
Comment on lines +298 to +303
case salty of
EX_PHI_MEET pref ix innerSalty -> do
pref `shouldBe` Just "x"
ix `shouldBe` 1
innerSalty `shouldSatisfy` isDispatch
_ -> fail "Expected EX_PHI_MEET but got different constructor"
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

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

This test contains multiple assertions (4 in total: 3 shouldBe assertions and 1 shouldSatisfy assertion). According to the project's testing guidelines, each test should contain only one assertion.

Copilot generated this review using guidance from organization custom instructions.
Comment on lines +312 to +317
case salty of
EX_PHI_AGAIN pref ix innerSalty -> do
pref `shouldBe` Nothing
ix `shouldBe` 5
innerSalty `shouldSatisfy` isDispatch
_ -> fail "Expected EX_PHI_AGAIN but got different constructor"
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

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

This test contains multiple assertions (4 in total: 3 shouldBe assertions and 1 shouldSatisfy assertion). According to the project's testing guidelines, each test should contain only one assertion.

Copilot generated this review using guidance from organization custom instructions.
expr' = EX_PHI_MEET (Just "x") 1 inner
salty = toSalty expr'
isDispatch EX_DISPATCH{} = True
isDispatch _ = False
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

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

This test contains a blank line (line 297) inside the test body. According to the project's coding guidelines, blank lines inside method bodies reduce code readability and should be removed.

Copilot generated this review using guidance from organization custom instructions.
expr' = EX_PHI_AGAIN Nothing 5 inner
salty = toSalty expr'
isDispatch EX_DISPATCH{} = True
isDispatch _ = False
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

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

This test contains a blank line (line 311) inside the test body. According to the project's coding guidelines, blank lines inside method bodies reduce code readability and should be removed.

Copilot generated this review using guidance from organization custom instructions.
Comment on lines +299 to +302
EX_PHI_MEET pref ix innerSalty -> do
pref `shouldBe` Just "x"
ix `shouldBe` 1
innerSalty `shouldSatisfy` isDispatch
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

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

The variable name 'innerSalty' is a compound name. According to the project's coding guidelines, compound variable names make code harder to read, and single-word nouns are preferred for variable names.

Copilot generated this review using guidance from organization custom instructions.
Copy link
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: 1

🧹 Nitpick comments (1)
test/SugarSpec.hs (1)

305-317: LGTM with minor observation.

The test correctly verifies EX_PHI_AGAIN processing. The isDispatch helper is duplicated from the previous test (lines 296-297). For test code, inline helpers are acceptable for readability, though extracting to a top-level helper would reduce duplication if more tests need this predicate.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b1abc36 and 269cc38.

📒 Files selected for processing (1)
  • test/SugarSpec.hs (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: Agent
  • GitHub Check: cabal (ubuntu-24.04)
  • GitHub Check: cabal (macos-15)
  • GitHub Check: cabal (windows-2022)
  • GitHub Check: stack (windows-2022)
  • GitHub Check: stack (macos-15)
  • GitHub Check: stack (ubuntu-24.04)
🔇 Additional comments (9)
test/SugarSpec.hs (9)

291-303: LGTM!

Well-structured test that properly verifies the recursive processing of EX_PHI_MEET expressions while preserving the wrapper structure. The pattern matching approach with explicit failure messaging is appropriate for this type of structural verification.


319-332: LGTM!

Good coverage testing meta binding preservation both standalone (BI_META) and within sequences (BDS_META).


334-341: LGTM!

Good test verifying that existing rho bindings aren't duplicated when in first position with additional bindings.


343-349: LGTM!

Good edge case test for single void parameter expansion, complementing the multi-parameter test at lines 218-224.


351-363: LGTM!

Good additions testing numeric literal edge cases (floating point and negative numbers).


373-388: LGTM!

Good edge case coverage: rho tau in non-first position and single positional argument conversion to alpha binding.


390-404: LGTM!

Good coverage for multiple void parameters and unicode attribute handling. The unicode test is valuable for ensuring proper internationalization support.


406-418: LGTM!

Good boundary case tests for empty string literals and scientific notation numbers.


420-436: LGTM!

Excellent tests for deeply nested formations (validating recursive rho insertion at all levels) and the minimal case of formation with only a rho void binding.

Comment on lines +365 to +371
describe "toSalty handles single named application argument" $
it "processes single tau binding correctly" $ do
prog <- parseProgramThrows "{Q.x(y -> $)}"
let cst = programToCST prog
salty = toSalty cst
rendered = render salty
rendered `shouldContain` "y"
Copy link
Contributor

@coderabbitai coderabbitai bot Dec 12, 2025

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Duplicate test detected.

This test is identical to the existing test at lines 125-130. Both parse "{Q.x(y -> $)}" and verify the output contains "y". Consider removing this duplicate or modifying it to test a different aspect.

-  describe "toSalty handles single named application argument" $
-    it "processes single tau binding correctly" $ do
-      prog <- parseProgramThrows "{Q.x(y -> $)}"
-      let cst = programToCST prog
-          salty = toSalty cst
-          rendered = render salty
-      rendered `shouldContain` "y"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
describe "toSalty handles single named application argument" $
it "processes single tau binding correctly" $ do
prog <- parseProgramThrows "{Q.x(y -> $)}"
let cst = programToCST prog
salty = toSalty cst
rendered = render salty
rendered `shouldContain` "y"
(lines before 365 remain unchanged)
(lines 372 and onward continue as normal)
🤖 Prompt for AI Agents
In test/SugarSpec.hs around lines 365-371 there is a duplicate test identical to
the one at lines 125-130: both parse "{Q.x(y -> $)}" and assert the rendered
output contains "y". Remove this duplicate test or replace it with a distinct
case (for example change the input to a different binding or assert a different
expected string) so the suite covers a new behavior rather than repeating the
existing assertion.

Copy link
Member

Choose a reason for hiding this comment

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

@yegor256 check this one

Copy link
Contributor

Choose a reason for hiding this comment

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

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

Copy link
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: 0

🧹 Nitpick comments (1)
test-resources/condition-packs/nf-formation-with-void.yaml (1)

1-7: Well-formed fixture; quoting correctly avoids YAML ?/! pitfalls.

  • Lines 4-7: Using single-quoted scalars here is the right call because ? and ! can be YAML syntax/tag tokens when unquoted; this should keep the fixture stable across YAML parsers.
  • Minor: consider adding a brief comment describing what “void inner formation” means in this fixture (helps future test maintenance).
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 269cc38 and 745372e.

📒 Files selected for processing (26)
  • test-resources/condition-packs/and-fails.yaml (1 hunks)
  • test-resources/condition-packs/and-multiple.yaml (1 hunks)
  • test-resources/condition-packs/in-missing.yaml (1 hunks)
  • test-resources/condition-packs/in-simple.yaml (1 hunks)
  • test-resources/condition-packs/in-void.yaml (1 hunks)
  • test-resources/condition-packs/nf-dispatch-global.yaml (1 hunks)
  • test-resources/condition-packs/nf-dispatch-this.yaml (1 hunks)
  • test-resources/condition-packs/nf-empty-formation.yaml (1 hunks)
  • test-resources/condition-packs/nf-formation-with-delta.yaml (1 hunks)
  • test-resources/condition-packs/nf-formation-with-void.yaml (1 hunks)
  • test-resources/condition-packs/nf-global.yaml (1 hunks)
  • test-resources/condition-packs/nf-termination.yaml (1 hunks)
  • test-resources/condition-packs/nf-this.yaml (1 hunks)
  • test-resources/condition-packs/not-alpha.yaml (1 hunks)
  • test-resources/condition-packs/not-eq.yaml (1 hunks)
  • test-resources/condition-packs/not-nf-on-dc.yaml (1 hunks)
  • test-resources/condition-packs/or-first-match.yaml (1 hunks)
  • test-resources/condition-packs/part-of-missing.yaml (1 hunks)
  • test-resources/condition-packs/part-of-nested.yaml (1 hunks)
  • test-resources/condition-packs/part-of-simple.yaml (1 hunks)
  • test-resources/condition-packs/xi-application.yaml (1 hunks)
  • test-resources/condition-packs/xi-dispatch.yaml (1 hunks)
  • test-resources/condition-packs/xi-formation.yaml (1 hunks)
  • test-resources/condition-packs/xi-global.yaml (1 hunks)
  • test-resources/condition-packs/xi-this.yaml (1 hunks)
  • test/RuleSpec.hs (3 hunks)
✅ Files skipped from review due to trivial changes (10)
  • test-resources/condition-packs/in-void.yaml
  • test-resources/condition-packs/nf-formation-with-delta.yaml
  • test-resources/condition-packs/not-nf-on-dc.yaml
  • test-resources/condition-packs/nf-termination.yaml
  • test-resources/condition-packs/nf-global.yaml
  • test-resources/condition-packs/in-missing.yaml
  • test-resources/condition-packs/xi-this.yaml
  • test-resources/condition-packs/in-simple.yaml
  • test-resources/condition-packs/xi-formation.yaml
  • test-resources/condition-packs/nf-this.yaml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: stack (macos-15)
  • GitHub Check: stack (ubuntu-24.04)
  • GitHub Check: stack (windows-2022)
  • GitHub Check: cabal (ubuntu-24.04)
  • GitHub Check: cabal (macos-15)
  • GitHub Check: cabal (windows-2022)
🔇 Additional comments (17)
test-resources/condition-packs/not-alpha.yaml (1)

4-8: Looks correct; please verify schema expectations for not/alpha and the literal !a.
Quoting avoids YAML tag parsing issues (good), but ensure the condition-pack parser expects condition.not.alpha as a string and that alpha: '!a' (including the leading !) is the intended literal for this fixture.

test-resources/condition-packs/nf-dispatch-global.yaml (1)

1-7: Looks correct as a minimal NF condition-pack fixture; please verify the intended “global dispatch” syntax (Q.foo).
YAML structure/indentation and quoting are solid (notably quoting !e avoids YAML tag parsing). Only thing to double-check is that the rule DSL indeed treats Q.foo as the “global dispatch” case (and that the harness expects a single mapping, not a list of entries).

test-resources/condition-packs/and-fails.yaml (1)

1-10: YAML fixture looks correct and unambiguous (quoting + AND shape).

test-resources/condition-packs/not-eq.yaml (1)

1-8: Good NOT(EQ) fixture; quoting avoids YAML ! tag pitfalls.

test-resources/condition-packs/part-of-simple.yaml (1)

1-7: Looks like a solid “part-of” baseline fixture (simple + readable).

test-resources/condition-packs/part-of-nested.yaml (1)

1-7: Nested “part-of” fixture is well-formed; quoting keeps it YAML-safe.

test-resources/condition-packs/part-of-missing.yaml (1)

1-8: Negative “part-of” fixture (with failure: true) is clean and consistent.

test-resources/condition-packs/or-first-match.yaml (1)

1-9: Well-structured OR fixture; should exercise first-match behavior reliably.

test-resources/condition-packs/and-multiple.yaml (1)

1-11: Compound AND + nested NOT(EQ) is formatted correctly and should be robust in parsers.

test-resources/condition-packs/xi-dispatch.yaml (1)

1-7: xi dispatch fixture is minimal and YAML-safe (quoted !e).

test-resources/condition-packs/xi-global.yaml (1)

1-7: Good fixture; keep !e quoted to avoid YAML tag parsing, and verify the loader reads it as a plain string.
The quotes around [[ ... ]] and !e are doing important work here; without them, YAML may interpret !e as a tag in some parsers. Consider adding/ensuring a test assertion that the parsed value of condition.xi equals the literal string "!e".

test-resources/condition-packs/xi-application.yaml (1)

1-7: Good fixture; quoting is required here (both ? and !e), and it’d be worth ensuring it’s actually exercised by a test.
Given YAML’s plain-scalar rules, keeping expression and xi: '!e' quoted avoids subtle parse surprises. If not already covered, add/ensure a test that loads this file and asserts the parsed expression, pattern, and condition.xi strings match exactly.

test-resources/condition-packs/nf-dispatch-this.yaml (1)

1-7: LGTM! Well-structured test fixture.

The YAML structure is valid and the test data appropriately captures a dispatch-on-this scenario for normal form checking. The expression, pattern, and condition are well-formed and align with the filename.

test-resources/condition-packs/nf-empty-formation.yaml (1)

1-7: LGTM! Appropriate empty formation test case.

The test fixture correctly captures an empty formation scenario with valid YAML structure. The expression [[ x -> [[ ]] ]] clearly tests the empty formation case for normal form validation.

test/RuleSpec.hs (3)

32-59: LGTM! Robust condition checking test suite.

The test suite correctly:

  • Dynamically loads all condition pack fixtures from the resources directory
  • Validates pattern matching produces non-empty results
  • Distinguishes between expected failures and successes using the failure flag
  • Provides helpful error messages with substitution details

This approach efficiently exercises the new condition pack fixtures added in this PR.


60-85: Excellent comprehensive normal form test coverage.

The test suite thoroughly exercises isNF across diverse scenarios:

  • Base cases (ExThis, ExGlobal, ExTermination)
  • Dispatch operations on different expression types
  • Various formation structures (empty, delta, void, lambda, mixed)
  • Both positive and negative test cases

This comprehensive coverage significantly advances the PR objective of improving test coverage.


86-102: Comprehensive rule matching test coverage.

The test suite appropriately covers three key scenarios for matchProgramWithRule:

  1. Successful pattern match with condition met
  2. Pattern mismatch
  3. Pattern match with failed condition

Tests are well-structured and the required rule file exists.

@yegor256
Copy link
Member Author

@maxonfjvipon a few more tests

++ printSubsts matched
)
)
describe "isNF determines normal form" $ do
Copy link
Member

Choose a reason for hiding this comment

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

@yegor256 let's rewrite these tests using forM_ and tuples

Copy link
Member Author

Choose a reason for hiding this comment

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

@copilot help me rewrite it as suggested above

test/RuleSpec.hs Outdated
isNF (ExFormation [BiLambda "Func"]) ctx `shouldBe` True
it "returns true for formation with delta void and lambda" $
isNF (ExFormation [BiDelta (BtOne "FF"), BiVoid (AtLabel "y"), BiLambda "G"]) ctx `shouldBe` True
describe "matchProgramWithRule matches programs" $ do
Copy link
Member

Choose a reason for hiding this comment

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

@yegor256 this test is unnecessary, we have it in yaml packs

Copy link
Member Author

Choose a reason for hiding this comment

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

@copilot remove this test, as advised

Copy link
Contributor

Copilot AI commented Dec 12, 2025

@yegor256 I've opened a new pull request, #533, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 3 commits December 12, 2025 12:37
Co-authored-by: yegor256 <526301+yegor256@users.noreply.github.com>
Refactor isNF tests to use forM_ with tuples
Copy link
Contributor

Copilot AI commented Dec 12, 2025

@yegor256 I've opened a new pull request, #534, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 2 commits December 12, 2025 13:07
Co-authored-by: yegor256 <526301+yegor256@users.noreply.github.com>
[WIP] Remove suggested test from previous pull request
@yegor256
Copy link
Member Author

@maxonfjvipon take a look again please

@maxonfjvipon
Copy link
Member

@rultor merge

@rultor
Copy link
Contributor

rultor commented Dec 15, 2025

@rultor merge

@maxonfjvipon OK, I'll try to merge now. You can check the progress of the merge here.

@rultor rultor merged commit 2a47bec into master Dec 15, 2025
19 checks passed
@rultor rultor deleted the 516 branch December 15, 2025 11:51
@rultor
Copy link
Contributor

rultor commented Dec 15, 2025

@rultor merge

@maxonfjvipon Done! FYI, the full log is here (took me 11min).

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.

Inadequate Test Coverage: Less than 80%

4 participants