license#109
Conversation
WalkthroughAdds DecentraLicense v1.0 and REUSE metadata, replaces SPDX headers (CAL → LicenseRef-DCL-1.0) across source and test Solidity files, updates root LICENSE to reference the new license file, updates a submodule pointer, and expands the CI workflow matrix by adding the Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Dev as Developer / PR
participant CI as GitHub Actions
participant RunnerU as ubuntu-latest
participant RunnerM as macos-latest
Dev->>CI: Push PR (matrix includes tasks)
note right of CI #e6f7ff: matrix.task now: \n[rainix-rs-test, rainix-sol-legal]
CI->>RunnerU: start jobs for ubuntu-latest (all tasks + included entries)
CI->>RunnerM: start jobs for macos-latest (all tasks)
RunnerU-->>CI: report results
RunnerM-->>CI: report results
CI-->>Dev: aggregate status
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. 📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: ASSERTIVE Plan: Pro 💡 Knowledge Base configuration:
You can enable these sources in your CodeRabbit configuration. ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
🧰 Additional context used🧠 Learnings (1)📓 Common learnings⏰ 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). (9)
🔇 Additional comments (1)
✨ Finishing Touches🧪 Generate unit tests
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 56
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
LICENSE (1)
189-189: Ensure REUSE mapping, CI linting, and marker usage consistency
- No stale CAL identifiers found; all sampled SPDX headers use
LicenseRef-DCL-1.0; andLICENSES/LicenseRef-DCL-1.0.txtis present.- REUSE compliance (mandatory):
- Verify that your
REUSE.tomlcontains an entry mappingLicenseRef-DCL-1.0toLICENSES/LicenseRef-DCL-1.0.txt.- Add a CI job to run
reuse lint(failing the build on any errors) to catch missing or incorrect license headers early.- Decentralized Code & Combined Work Exception markers (as-needed):
- We did not find any source files annotated with “Decentralized Code” or “Combined Work Exception” comment markers. If you intend to leverage these provisions:
- Define a clear marker syntax (for example,
// SPDX-License-Identifier: Decentralized-Codeand// SPDX-License-Identifier: Combined-Work-Exception).- Document the marker format in your CONTRIBUTING.md (or equivalent) so all contributors apply it uniformly.
- Apply the markers to the relevant files.
Let me know if you’d like a sample CONTRIBUTING snippet to illustrate how to mark files.
.github/workflows/rainix.yaml (1)
54-64: Legal task should explicitly fail on license header drift — ensure it runs reuse lint or equivalent.Given the repo-wide SPDX migration, it’s valuable that
rainix-sol-legalenforces compliance (e.g.,reuse lint, header checks). If not already implemented in the Nix app, add it to prevent regressions.If you manage CI here (rather than in flake), an explicit step could look like:
- name: Run ${{ matrix.task }} env: ETH_RPC_URL: ${{ secrets.CI_DEPLOY_SEPOLIA_RPC_URL || vars.CI_DEPLOY_SEPOLIA_RPC_URL }} ETHERSCAN_API_KEY: ${{ secrets.EXPLORER_VERIFICATION_KEY }} DEPLOY_BROADCAST: "" DEPLOY_VERIFIER: "" DEPLOY_METABOARD_ADDRESS: ${{ vars.CI_DEPLOY_SEPOLIA_METABOARD_ADDRESS }} CI_FORK_SEPOLIA_BLOCK_NUMBER: ${{ vars.CI_FORK_SEPOLIA_BLOCK_NUMBER }} CI_FORK_SEPOLIA_DEPLOYER_ADDRESS: ${{ vars.CI_FORK_SEPOLIA_DEPLOYER_ADDRESS }} CI_DEPLOY_SEPOLIA_RPC_URL: ${{ secrets.CI_DEPLOY_SEPOLIA_RPC_URL || vars.CI_DEPLOY_SEPOLIA_RPC_URL }} run: nix develop -c ${{ matrix.task }} + - name: REUSE compliance (defense-in-depth) + if: matrix.task == 'rainix-sol-legal' + run: | + if ! command -v reuse >/dev/null 2>&1; then pipx install reuse || pip install --user reuse; fi + reuse lint
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (90)
.github/workflows/rainix.yaml(1 hunks)LICENSE(1 hunks)LICENSES/LicenseRef-DCL-1.0.txt(1 hunks)REUSE.toml(1 hunks)script/BuildPointers.sol(1 hunks)script/Deploy.sol(1 hunks)src/concrete/DecimalFloat.sol(1 hunks)src/lib/LibDecimalFloat.sol(1 hunks)src/lib/deploy/LibDecimalFloatDeploy.sol(1 hunks)src/lib/implementation/LibDecimalFloatImplementation.sol(1 hunks)src/lib/table/LibLogTable.sol(1 hunks)test/abstract/LogTest.sol(1 hunks)test/concrete/DecimalFloat.packLossless.t.sol(1 hunks)test/concrete/TestDecimalFloat.sol(1 hunks)test/concrete/TestDecimalFloat.unpack.t.sol(1 hunks)test/lib/LibCommonResults.sol(1 hunks)test/lib/LibDecimalFloatSlow.sol(1 hunks)test/lib/implementation/LibDecimalFloatImplementationSlow.sol(1 hunks)test/src/concrete/DecimalFloat.abs.t.sol(1 hunks)test/src/concrete/DecimalFloat.add.t.sol(1 hunks)test/src/concrete/DecimalFloat.ceil.t.sol(1 hunks)test/src/concrete/DecimalFloat.constants.t.sol(1 hunks)test/src/concrete/DecimalFloat.div.t.sol(1 hunks)test/src/concrete/DecimalFloat.eq.t.sol(1 hunks)test/src/concrete/DecimalFloat.floor.t.sol(1 hunks)test/src/concrete/DecimalFloat.format.t.sol(1 hunks)test/src/concrete/DecimalFloat.frac.t.sol(1 hunks)test/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.sol(1 hunks)test/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.sol(1 hunks)test/src/concrete/DecimalFloat.gt.t.sol(1 hunks)test/src/concrete/DecimalFloat.gte.t.sol(1 hunks)test/src/concrete/DecimalFloat.inv.t.sol(1 hunks)test/src/concrete/DecimalFloat.isZero.t.sol(1 hunks)test/src/concrete/DecimalFloat.log10.t.sol(1 hunks)test/src/concrete/DecimalFloat.lt.t.sol(1 hunks)test/src/concrete/DecimalFloat.lte.t.sol(1 hunks)test/src/concrete/DecimalFloat.max.t.sol(1 hunks)test/src/concrete/DecimalFloat.min.t.sol(1 hunks)test/src/concrete/DecimalFloat.minus.t.sol(1 hunks)test/src/concrete/DecimalFloat.mul.t.sol(1 hunks)test/src/concrete/DecimalFloat.parse.t.sol(1 hunks)test/src/concrete/DecimalFloat.pow.t.sol(1 hunks)test/src/concrete/DecimalFloat.pow10.t.sol(1 hunks)test/src/concrete/DecimalFloat.sqrt.t.sol(1 hunks)test/src/concrete/DecimalFloat.sub.t.sol(1 hunks)test/src/concrete/DecimalFloat.toFixedDecimalLossless.t.sol(1 hunks)test/src/concrete/DecimalFloat.toFixedDecimalLossy.t.sol(1 hunks)test/src/lib/LibDecimalFloat.abs.t.sol(1 hunks)test/src/lib/LibDecimalFloat.add.t.sol(1 hunks)test/src/lib/LibDecimalFloat.ceil.t.sol(1 hunks)test/src/lib/LibDecimalFloat.constants.t.sol(1 hunks)test/src/lib/LibDecimalFloat.decimal.t.sol(1 hunks)test/src/lib/LibDecimalFloat.decimalLossless.t.sol(1 hunks)test/src/lib/LibDecimalFloat.div.t.sol(1 hunks)test/src/lib/LibDecimalFloat.eq.t.sol(1 hunks)test/src/lib/LibDecimalFloat.floor.t.sol(1 hunks)test/src/lib/LibDecimalFloat.frac.t.sol(1 hunks)test/src/lib/LibDecimalFloat.gt.t.sol(1 hunks)test/src/lib/LibDecimalFloat.gte.t.sol(1 hunks)test/src/lib/LibDecimalFloat.inv.t.sol(1 hunks)test/src/lib/LibDecimalFloat.isZero.t.sol(1 hunks)test/src/lib/LibDecimalFloat.log10.t.sol(1 hunks)test/src/lib/LibDecimalFloat.lt.t.sol(1 hunks)test/src/lib/LibDecimalFloat.lte.t.sol(1 hunks)test/src/lib/LibDecimalFloat.max.t.sol(1 hunks)test/src/lib/LibDecimalFloat.min.t.sol(1 hunks)test/src/lib/LibDecimalFloat.minus.t.sol(1 hunks)test/src/lib/LibDecimalFloat.mixed.t.sol(1 hunks)test/src/lib/LibDecimalFloat.mul.t.sol(1 hunks)test/src/lib/LibDecimalFloat.pack.t.sol(1 hunks)test/src/lib/LibDecimalFloat.pow.t.sol(1 hunks)test/src/lib/LibDecimalFloat.pow10.t.sol(1 hunks)test/src/lib/LibDecimalFloat.sqrt.t.sol(1 hunks)test/src/lib/LibDecimalFloat.sub.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.add.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.characteristicMantissa.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.eq.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.inv.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.log10.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.maximize.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.minus.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.mul.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.normalize.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.pow10.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.sub.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.unabsUnsignedMulOrDivLossy.t.sol(1 hunks)test/src/lib/implementation/LibDecimalFloatImplementation.withTargetExponent.t.sol(1 hunks)test/src/lib/parse/LibParseDecimalFloat.t.sol(1 hunks)test/src/lib/table/LibLogTable.bytes.t.sol(1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2025-08-21T18:03:40.347Z
Learnt from: thedavidmeister
PR: rainlanguage/rain.math.float#107
File: test/lib/LibDecimalFloatSlow.sol:37-45
Timestamp: 2025-08-21T18:03:40.347Z
Learning: In test/lib/LibDecimalFloatSlow.sol, the "slow" implementation is intentionally different from the production implementation to serve as an independent reference for fuzzing tests. The goal is to have two different approaches (expensive loops vs optimized jumps) that produce equivalent results, not identical implementations.
Applied to files:
test/src/lib/LibDecimalFloat.add.t.soltest/src/lib/parse/LibParseDecimalFloat.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.div.t.soltest/src/concrete/DecimalFloat.gte.t.soltest/src/concrete/DecimalFloat.mul.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.unabsUnsignedMulOrDivLossy.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.minus.t.soltest/src/concrete/DecimalFloat.constants.t.soltest/src/concrete/DecimalFloat.minus.t.soltest/src/concrete/DecimalFloat.inv.t.soltest/src/lib/LibDecimalFloat.div.t.soltest/src/lib/LibDecimalFloat.min.t.soltest/src/lib/LibDecimalFloat.decimal.t.soltest/src/concrete/DecimalFloat.abs.t.soltest/src/concrete/DecimalFloat.eq.t.soltest/src/concrete/DecimalFloat.add.t.soltest/src/lib/LibDecimalFloat.lte.t.soltest/src/concrete/DecimalFloat.log10.t.soltest/src/lib/LibDecimalFloat.minus.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.inv.t.soltest/src/lib/LibDecimalFloat.pack.t.soltest/src/concrete/DecimalFloat.pow10.t.soltest/src/concrete/DecimalFloat.sqrt.t.soltest/src/concrete/DecimalFloat.floor.t.soltest/src/lib/LibDecimalFloat.log10.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.normalize.t.soltest/src/concrete/DecimalFloat.parse.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.mul.t.soltest/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.soltest/src/lib/LibDecimalFloat.constants.t.soltest/src/lib/LibDecimalFloat.frac.t.soltest/src/concrete/DecimalFloat.isZero.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.characteristicMantissa.t.soltest/src/lib/LibDecimalFloat.isZero.t.soltest/src/concrete/DecimalFloat.sub.t.soltest/src/concrete/DecimalFloat.format.t.soltest/src/lib/LibDecimalFloat.eq.t.soltest/src/lib/LibDecimalFloat.ceil.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.add.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.log10.t.soltest/src/lib/LibDecimalFloat.sub.t.soltest/lib/implementation/LibDecimalFloatImplementationSlow.soltest/src/concrete/DecimalFloat.toFixedDecimalLossy.t.soltest/src/concrete/DecimalFloat.lt.t.soltest/src/lib/LibDecimalFloat.inv.t.solsrc/concrete/DecimalFloat.soltest/src/lib/LibDecimalFloat.pow10.t.soltest/src/lib/LibDecimalFloat.floor.t.soltest/src/lib/LibDecimalFloat.mul.t.soltest/src/concrete/DecimalFloat.min.t.soltest/src/lib/LibDecimalFloat.gt.t.soltest/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.solsrc/lib/implementation/LibDecimalFloatImplementation.soltest/src/lib/implementation/LibDecimalFloatImplementation.withTargetExponent.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.pow10.t.soltest/src/concrete/DecimalFloat.frac.t.soltest/src/concrete/DecimalFloat.pow.t.soltest/src/concrete/DecimalFloat.gt.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.maximize.t.soltest/src/concrete/DecimalFloat.max.t.soltest/src/lib/LibDecimalFloat.decimalLossless.t.soltest/src/lib/LibDecimalFloat.abs.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.sub.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.eq.t.soltest/src/lib/LibDecimalFloat.lt.t.soltest/src/lib/LibDecimalFloat.gte.t.soltest/src/concrete/DecimalFloat.ceil.t.soltest/src/lib/LibDecimalFloat.mixed.t.soltest/src/concrete/DecimalFloat.div.t.soltest/src/concrete/DecimalFloat.toFixedDecimalLossless.t.soltest/lib/LibDecimalFloatSlow.soltest/src/concrete/DecimalFloat.lte.t.soltest/concrete/TestDecimalFloat.soltest/src/lib/LibDecimalFloat.sqrt.t.soltest/src/lib/LibDecimalFloat.max.t.sol
📚 Learning: 2025-07-24T04:32:14.171Z
Learnt from: rouzwelt
PR: rainlanguage/rain.math.float#83
File: src/concrete/DecimalFloat.sol:248-251
Timestamp: 2025-07-24T04:32:14.171Z
Learning: In the rainlanguage/rain.math.float project, functions in DecimalFloat.sol that return tuples from LibDecimalFloat calls must unpack the tuple into local variables before returning them (rather than returning directly) to maintain compatibility with Slither static analysis checks.
Applied to files:
test/src/lib/LibDecimalFloat.add.t.soltest/concrete/DecimalFloat.packLossless.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.div.t.soltest/src/concrete/DecimalFloat.gte.t.soltest/src/concrete/DecimalFloat.mul.t.soltest/src/concrete/DecimalFloat.constants.t.soltest/src/concrete/DecimalFloat.minus.t.soltest/src/concrete/DecimalFloat.inv.t.soltest/src/lib/LibDecimalFloat.div.t.soltest/src/concrete/DecimalFloat.abs.t.soltest/src/concrete/DecimalFloat.eq.t.soltest/src/concrete/DecimalFloat.add.t.soltest/src/lib/LibDecimalFloat.lte.t.soltest/src/concrete/DecimalFloat.log10.t.soltest/src/lib/LibDecimalFloat.minus.t.soltest/src/lib/LibDecimalFloat.pack.t.soltest/src/concrete/DecimalFloat.pow10.t.soltest/src/concrete/DecimalFloat.sqrt.t.soltest/src/concrete/DecimalFloat.floor.t.soltest/src/lib/LibDecimalFloat.log10.t.soltest/src/concrete/DecimalFloat.parse.t.soltest/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.soltest/src/lib/LibDecimalFloat.constants.t.soltest/src/lib/LibDecimalFloat.frac.t.soltest/concrete/TestDecimalFloat.unpack.t.soltest/src/concrete/DecimalFloat.isZero.t.soltest/src/lib/LibDecimalFloat.isZero.t.soltest/src/concrete/DecimalFloat.sub.t.soltest/src/concrete/DecimalFloat.format.t.soltest/src/lib/LibDecimalFloat.eq.t.soltest/src/lib/LibDecimalFloat.ceil.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.log10.t.soltest/src/lib/LibDecimalFloat.sub.t.soltest/lib/implementation/LibDecimalFloatImplementationSlow.soltest/src/concrete/DecimalFloat.toFixedDecimalLossy.t.soltest/src/concrete/DecimalFloat.lt.t.solsrc/concrete/DecimalFloat.soltest/src/lib/LibDecimalFloat.pow10.t.soltest/src/lib/LibDecimalFloat.floor.t.soltest/src/lib/LibDecimalFloat.mul.t.soltest/src/concrete/DecimalFloat.min.t.soltest/src/lib/LibDecimalFloat.gt.t.soltest/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.solsrc/lib/implementation/LibDecimalFloatImplementation.soltest/src/concrete/DecimalFloat.frac.t.soltest/src/concrete/DecimalFloat.pow.t.soltest/src/concrete/DecimalFloat.gt.t.soltest/src/concrete/DecimalFloat.max.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.eq.t.soltest/src/lib/LibDecimalFloat.lt.t.soltest/src/lib/LibDecimalFloat.gte.t.soltest/src/concrete/DecimalFloat.ceil.t.soltest/src/lib/LibDecimalFloat.mixed.t.soltest/src/concrete/DecimalFloat.div.t.soltest/src/concrete/DecimalFloat.toFixedDecimalLossless.t.soltest/lib/LibDecimalFloatSlow.soltest/src/concrete/DecimalFloat.lte.t.soltest/concrete/TestDecimalFloat.sol
📚 Learning: 2025-06-16T13:17:28.513Z
Learnt from: 0xgleb
PR: rainlanguage/rain.math.float#58
File: src/concrete/DecimalFloat.sol:175-182
Timestamp: 2025-06-16T13:17:28.513Z
Learning: In the rainlanguage/rain.math.float codebase, there's an established naming convention where functions accepting a `Float` type parameter consistently use `float` as the parameter name, even though it shadows the type name. This pattern is used throughout `LibDecimalFloat.sol` and should be maintained for consistency in related contracts like `DecimalFloat.sol`.
Applied to files:
test/src/lib/LibDecimalFloat.add.t.soltest/src/concrete/DecimalFloat.gte.t.soltest/src/concrete/DecimalFloat.constants.t.soltest/src/concrete/DecimalFloat.minus.t.soltest/src/concrete/DecimalFloat.inv.t.soltest/src/lib/LibDecimalFloat.div.t.soltest/src/concrete/DecimalFloat.abs.t.soltest/src/concrete/DecimalFloat.eq.t.soltest/src/concrete/DecimalFloat.add.t.soltest/src/lib/LibDecimalFloat.lte.t.soltest/src/concrete/DecimalFloat.log10.t.soltest/src/lib/LibDecimalFloat.minus.t.soltest/src/lib/LibDecimalFloat.pack.t.soltest/src/concrete/DecimalFloat.pow10.t.soltest/src/concrete/DecimalFloat.sqrt.t.soltest/src/concrete/DecimalFloat.floor.t.soltest/src/lib/LibDecimalFloat.log10.t.soltest/src/concrete/DecimalFloat.parse.t.soltest/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.soltest/src/lib/LibDecimalFloat.constants.t.soltest/src/lib/LibDecimalFloat.frac.t.soltest/src/concrete/DecimalFloat.isZero.t.soltest/src/lib/LibDecimalFloat.isZero.t.soltest/src/concrete/DecimalFloat.sub.t.soltest/src/concrete/DecimalFloat.format.t.soltest/src/lib/LibDecimalFloat.eq.t.soltest/src/lib/LibDecimalFloat.ceil.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.log10.t.soltest/src/lib/LibDecimalFloat.sub.t.soltest/lib/implementation/LibDecimalFloatImplementationSlow.soltest/src/concrete/DecimalFloat.toFixedDecimalLossy.t.soltest/src/concrete/DecimalFloat.lt.t.solsrc/concrete/DecimalFloat.soltest/src/lib/LibDecimalFloat.pow10.t.soltest/src/lib/LibDecimalFloat.floor.t.soltest/src/lib/LibDecimalFloat.mul.t.soltest/src/concrete/DecimalFloat.min.t.soltest/src/lib/LibDecimalFloat.gt.t.soltest/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.soltest/src/concrete/DecimalFloat.frac.t.soltest/src/concrete/DecimalFloat.pow.t.soltest/src/concrete/DecimalFloat.gt.t.soltest/src/concrete/DecimalFloat.max.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.eq.t.soltest/src/lib/LibDecimalFloat.lt.t.soltest/src/lib/LibDecimalFloat.gte.t.soltest/src/concrete/DecimalFloat.ceil.t.soltest/src/lib/LibDecimalFloat.mixed.t.soltest/src/concrete/DecimalFloat.div.t.soltest/lib/LibDecimalFloatSlow.soltest/src/concrete/DecimalFloat.lte.t.soltest/concrete/TestDecimalFloat.sol
📚 Learning: 2025-08-11T14:30:48.562Z
Learnt from: thedavidmeister
PR: rainlanguage/rain.math.float#96
File: test/src/lib/LibDecimalFloat.ceil.t.sol:43-50
Timestamp: 2025-08-11T14:30:48.562Z
Learning: When reviewing Solidity test files using Forge, verify the actual mutability of helper functions like `bound()` before suggesting changes to function mutability specifiers, as Forge implements many test utilities as pure functions.
Applied to files:
test/concrete/DecimalFloat.packLossless.t.soltest/src/lib/parse/LibParseDecimalFloat.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.div.t.soltest/src/concrete/DecimalFloat.mul.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.unabsUnsignedMulOrDivLossy.t.soltest/src/lib/LibDecimalFloat.min.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.inv.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.normalize.t.soltest/src/concrete/DecimalFloat.parse.t.soltest/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.soltest/concrete/TestDecimalFloat.unpack.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.characteristicMantissa.t.soltest/src/concrete/DecimalFloat.toFixedDecimalLossy.t.soltest/src/lib/LibDecimalFloat.inv.t.soltest/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.maximize.t.soltest/src/lib/LibDecimalFloat.abs.t.soltest/src/lib/implementation/LibDecimalFloatImplementation.sub.t.soltest/src/concrete/DecimalFloat.toFixedDecimalLossless.t.soltest/src/lib/table/LibLogTable.bytes.t.soltest/src/lib/LibDecimalFloat.max.t.sol
📚 Learning: 2025-08-18T13:52:43.369Z
Learnt from: thedavidmeister
PR: rainlanguage/rain.math.float#105
File: src/lib/implementation/LibDecimalFloatImplementation.sol:248-335
Timestamp: 2025-08-18T13:52:43.369Z
Learning: The codebase has a policy of not modifying external code, such as mulDiv implementations adopted from standard libraries like OpenZeppelin, PRB Math, and Solady.
Applied to files:
test/src/lib/implementation/LibDecimalFloatImplementation.mul.t.sol
🪛 LanguageTool
LICENSES/LicenseRef-DCL-1.0.txt
[grammar] ~1-~1: Use correct spacing
Context: # DecentraLicense *This DecentraLicense (the “License”) app...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: ...ed it with any of the following notices:* *“Licensed under the DecentraLicense vers...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: ...der the DecentraLicense version 1.0,” or* *“Licensed under the DecentraLicense vers...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: There might be a mistake here.
Context: ...License version 1.0, with Combined Work Exception”* ------ ## 1. Purpose This License gives You unlim...
(QB_NEW_EN_OTHER)
[grammar] ~11-~11: Use correct spacing
Context: ... Work Exception”* ------ ## 1. Purpose This License gives You unlimited permiss...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~13-~13: Use correct spacing
Context: ...ributors to the software from liability. This License also strives to protect the...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ... parties who receive the Work from you. If any non-affiliated third party receiv...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[uncategorized] ~15-~15: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ly use and modify the Work without that third party having a loss of data or capability due...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~15-~15: Use correct spacing
Context: ... data or capability due to your actions. The full permissions, conditions, and ot...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~17-~17: Use correct spacing
Context: ...ons, and other terms are laid out below. ## 2. Receiving a License In order to rece...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~19-~19: Use correct spacing
Context: ...id out below. ## 2. Receiving a License In order to receive this License, You mu...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[style] ~20-~20: Consider a more concise word here.
Context: ... out below. ## 2. Receiving a License In order to receive this License, You must agree to...
(IN_ORDER_TO_PREMIUM)
[grammar] ~21-~21: Use prepositions correctly
Context: ...eement with the Licensor and conditions to your License. You must not do anything ...
(QB_NEW_EN_OTHER_ERROR_IDS_7)
[grammar] ~21-~21: Use correct spacing
Context: ...rs a rule You cannot or will not follow. ### 2.1. Application The terms of this Lice...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~23-~23: Use correct spacing
Context: ...r will not follow. ### 2.1. Application The terms of this License apply to the W...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: There might be a mistake here.
Context: ...tations created by You that contain any licenseable portion of the Work (a “Modified Work”)...
(QB_NEW_EN_OTHER)
[grammar] ~25-~25: Use correct spacing
Context: ...he Work also applies to a Modified Work. ### 2.2. Offer and Acceptance This License ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~27-~27: Use correct spacing
Context: ...ied Work. ### 2.2. Offer and Acceptance This License is automatically offered to...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~29-~29: Use correct spacing
Context: ...lectual property right held by Licensor. ### 2.3. Compliance and Remedies Any failur...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: ...ensor. ### 2.3. Compliance and Remedies Any failure to act according to the term...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~33-~33: Use correct spacing
Context: ...se against You via specific performance. To the fullest extent available under th...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~35-~35: Use correct spacing
Context: ...he terms and conditions of this License. ## 3. Permissions and Conditions ### 3.1. ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~37-~37: Use correct spacing
Context: ...cense. ## 3. Permissions and Conditions ### 3.1. Permissions Granted Conditioned on...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~39-~39: Use correct spacing
Context: ...Conditions ### 3.1. Permissions Granted Conditioned on compliance with section 4...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~41-~41: Use commas correctly
Context: ...Conditioned on compliance with section 4, and subject to the limitations of secti...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~41-~41: Use hyphens correctly
Context: ...of section 3.2, Licensor grants You the world-wide, royalty-free, non-exclusive permission...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~41-~41: Use correct spacing
Context: ...yalty-free, non-exclusive permission to: > a) Take any action with the Work that wo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~43-~43: Use correct spacing
Context: ...risdiction to which You are subject; and > > b) Take any action with the Work that wo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~45-~45: Use correct spacing
Context: ... in the Work as distributed by Licensor. ### 3.2. Limitations on Permissions Granted ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~47-~47: Use correct spacing
Context: ... 3.2. Limitations on Permissions Granted The following limitations apply to the p...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~49-~49: Use correct spacing
Context: ... the permissions granted in section 3.1: > a) Licensor does not grant any patent li...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~51-~51: Use commas correctly
Context: ...tion of the Work as provided by Licensor, or the combination of the Work as provi...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~51-~51: Use correct spacing
Context: ...t, including other software or hardware. > > b) Licensor does not grant any license t...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~53-~53: Use correct spacing
Context: ...nditions in section 4.1 of this License. ## 4. Conditions If You exercise any permi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~55-~55: Use correct spacing
Context: ...n 4.1 of this License. ## 4. Conditions If You exercise any permission granted b...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~57-~57: Use correct spacing
Context: ...st comply with the following conditions: ### 4.1. Provide Access to Source Code Subj...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~59-~59: Use correct spacing
Context: ... ### 4.1. Provide Access to Source Code Subject to the exception in section 4.4,...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~61-~61: Use correct spacing
Context: ...e Source Code corresponding to the Work. The “Source Code” of the Work means the ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~63-~63: Use correct spacing
Context: ...the functionality contained in the Work. #### 4.1.1. Providing Network Access to the S...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~65-~65: Use correct spacing
Context: ...viding Network Access to the Source Code Network access to the Notices and Source...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~67-~67: Use correct spacing
Context: ...se and for at least one year thereafter. #### 4.1.2. Source Code for a Modified Work ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~69-~69: Use correct spacing
Context: ...# 4.1.2. Source Code for a Modified Work Subject to the exception in section 4.5,...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[uncategorized] ~71-~71: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... this License, or b) under a Compatible Open Source License. A “Compatible Open Source Lic...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~71-~71: Use correct spacing
Context: ... under a Compatible Open Source License. A “Compatible Open Source License” means...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~73-~73: There might be a mistake here.
Context: ...er a Compatible Open Source License. A “Compatible Open Source License” means a license ac...
(QB_NEW_EN)
[uncategorized] ~73-~73: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ble Open Source License. A “Compatible Open Source License” means a license accepted by th...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~73-~73: There might be a mistake here.
Context: ...rce License. A “Compatible Open Source License” means a license accepted by the Open So...
(QB_NEW_EN)
[uncategorized] ~73-~73: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...icense” means a license accepted by the Open Source Initiative that allows object code crea...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~73-~73: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...nd Source Code provided under the other open source license to be distributed together as a...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~73-~73: Use correct spacing
Context: ...e distributed together as a single work. #### 4.1.3. Coordinated Disclosure of Securit...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~75-~75: Use correct spacing
Context: ...d Disclosure of Security Vulnerabilities You may delay providing the Source Code ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~79-~79: Use correct spacing
Context: ...Period. ### 4.2. Maintain User Autonomy In addition to providing each Recipient ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~81-~81: Use correct spacing
Context: ...vide with the Recipient’s own User Data. “User Data” means any data that is an in...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~83-~83: Use correct spacing
Context: ..., or has been assigned to the Recipient. #### 4.2.1. No Withholding User Data Through...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~85-~85: Use correct spacing
Context: ...t. #### 4.2.1. No Withholding User Data Throughout any period in which You exerc...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[style] ~87-~87: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...h User Data is available to You for use in conjunction with the Work. #### 4.2.2. No Technical Mea...
(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)
[grammar] ~87-~87: Use correct spacing
Context: ...ou for use in conjunction with the Work. #### 4.2.2. No Technical Measures that Limit ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~89-~89: Use correct spacing
Context: ... No Technical Measures that Limit Access You may not, by the use of cryptographic...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[style] ~91-~91: ‘by the use of’ might be wordy. Consider a shorter alternative.
Context: ...easures that Limit Access You may not, by the use of cryptographic methods applied to anythi...
(EN_WORDINESS_PREMIUM_BY_THE_USE_OF)
[grammar] ~91-~91: Use correct spacing
Context: ...ll control of the Recipient's User Data. #### 4.2.3. No Legal or Contractual Measures ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~93-~93: Use correct spacing
Context: ...r Contractual Measures that Limit Access You may not contractually restrict a Rec...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~95-~95: Use correct spacing
Context: ...hts of third parties against Recipients. ### 4.3. Decentralized Code and Decentralize...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~97-~97: Use correct spacing
Context: ...ntralized Code and Decentralized Systems You must only run Decentralized Code if:...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~99-~99: Use correct spacing
Context: ...You must only run Decentralized Code if: > a) it is run by a Decentralized System; ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~101-~101: There might be a mistake here.
Context: ... if: > a) it is run by a Decentralized System; and > > b) all the data referenced by D...
(QB_NEW_EN)
[grammar] ~101-~101: Use correct spacing
Context: ...it is run by a Decentralized System; and > > b) all the data referenced by Decentrali...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~103-~103: Use correct spacing
Context: ...ode is stored on a Decentralized System. “Decentralized Code” is a Source Code fi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~105-~105: There might be a problem here.
Context: ...arked by the Licensor as “Decentralized Code”. “Decentralized System” is a system opera...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~107-~107: Consider adjusting word choice based on regional variation
Context: ...cly available Rules where any person or organisation: > a) only participates in the system by fr...
(QB_NEW_EN_OTHER_ERROR_IDS_26)
[grammar] ~109-~109: Use correct spacing
Context: ...pates in the system by freely opting in; > > b) can interpret system data by referenc...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~111-~111: Use correct spacing
Context: ...stem data by reference to the Rules; and > > c) can obtain a copy of the system data,...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~113-~113: Use correct spacing
Context: ...accessible in accordance with the Rules. “Rule” is any unambiguous and human comp...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~115-~115: There might be a mistake here.
Context: ...n accordance with the Rules. “Rule” is any unambiguous and human comprehensible: ...
(QB_NEW_EN_OTHER)
[grammar] ~115-~115: Make sure you are using the right part of speech
Context: ...e Rules. “Rule” is any unambiguous and human comprehensible: > a) rule that results...
(QB_NEW_EN_OTHER_ERROR_IDS_21)
[grammar] ~115-~115: There might be a problem here.
Context: ...ny unambiguous and human comprehensible: > a) rule that results in a deterministic ou...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~117-~117: Use commas correctly
Context: ...a deterministic outcome when implemented, in a commonly used electronic form; or ...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~117-~117: Use correct spacing
Context: ..., in a commonly used electronic form; or > > b) configuration information, documentat...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~119-~119: Use correct spacing
Context: ...rt to independently comprehend the rule. ### 4.4. Maintain Private Key Exclusive Cont...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~121-~121: Use correct spacing
Context: .... Maintain Private Key Exclusive Control You cannot use the permissions given und...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~123-~123: Use correct spacing
Context: ... with functionality using the Work that: > a) would cause the loss of exclusive con...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~125-~125: Use correct spacing
Context: ...h exclusive control of a private key; or > > b) deals with private keys except by usi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~127-~127: Use correct spacing
Context: ... except by using a Decentralized System. ### 4.5. Provide Notices and Attribution Yo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~129-~129: Use correct spacing
Context: ...### 4.5. Provide Notices and Attribution You must retain all licensing, authorshi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~131-~131: Use correct spacing
Context: ...on also providing Access to Source Code. ### 4.6. Scope of Conditions in this License...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~133-~133: Use correct spacing
Context: ...4.6. Scope of Conditions in this License You are required to uphold the condition...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~135-~135: Use correct spacing
Context: ...ho are Recipients of the Work from You. Other than providing Recipients with the...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~135-~135: Use correct spacing
Context: ...age in network interactions with anyone. ### 4.7. Combined Work Exception As an exce...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~137-~137: Use correct spacing
Context: ...nyone. ### 4.7. Combined Work Exception As an exception to condition that You pr...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~139-~139: There might be a mistake here.
Context: ...ombined Work Exception As an exception to condition that You provide Recipients A...
(QB_NEW_EN)
[grammar] ~139-~139: There might be a problem here.
Context: ...ode files not marked by the Licensor as “Decentralized Code” and as having the “Combined Work Except...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~139-~139: There might be a mistake here.
Context: ... “Decentralized Code” and as having the “Combined Work Exception,” or any object code exc...
(QB_NEW_EN)
[grammar] ~139-~139: There might be a mistake here.
Context: ... be combined with other Software into a “Larger Work.” So long as you: a) comply with t...
(QB_NEW_EN)
[grammar] ~139-~139: There might be a mistake here.
Context: ...ce Code provided to You by Licensor, b) you provide Recipients access to their User...
(QB_NEW_EN_OTHER)
[grammar] ~139-~139: There might be a mistake here.
Context: ...ess to their User Data and do not limit Recipient’s ability to independently work with thei...
(QB_NEW_EN_OTHER)
[grammar] ~139-~139: There might be a mistake here.
Context: ...pendently work with their User Data, c) you comply with the requirements in relatio...
(QB_NEW_EN_OTHER)
[style] ~139-~139: As a shorter alternative for ‘able to’, consider using “can”.
Context: ...ecentralized Systems, and d) Recipients are able to maintain exclusive control of private c...
(BE_ABLE_TO)
[grammar] ~139-~139: Use correct spacing
Context: ...licensed under the terms of your choice. ## 5. Term and Termination The term of thi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~141-~141: Use correct spacing
Context: ...your choice. ## 5. Term and Termination The term of this License begins when You...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~143-~143: Use commas correctly
Context: ... for any of the reasons described herein, or until all Licensor’s intellectual pr...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~143-~143: Use correct spacing
Context: ...terminated for the reasons listed below. ### 5.1. Effect of Termination If this Lice...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~145-~145: Use correct spacing
Context: ...d below. ### 5.1. Effect of Termination If this License is terminated for any re...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~147-~147: Use correct spacing
Context: ... including as part of any Modified Work. ### 5.2. Termination for Non-Compliance; Rei...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~149-~149: Use correct spacing
Context: ...nation for Non-Compliance; Reinstatement This License terminates automatically if...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~151-~151: Use hyphens correctly
Context: ... a special exception to termination for non-compliance, Your permissions for the Work under th...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~151-~151: There might be a mistake here.
Context: ...otified by Licensor or an intended third party beneficiary of Your noncompliance....
(QB_NEW_EN_OTHER)
[uncategorized] ~151-~151: Do not mix variants of the same word (‘noncompliance’ and ‘non-compliance’) within a single text.
Context: ...ntended third party beneficiary of Your noncompliance. You are eligible for reinstatement of ...
(EN_WORD_COHERENCY)
[style] ~151-~151: Consider using “once” instead of ‘one time’.
Context: ...instatement of permissions for the Work one time only, and only for the sixty days immed...
(ONCE_TWICE_PREMIUM)
[uncategorized] ~151-~151: Do not mix variants of the same word (‘noncompliance’ and ‘non-compliance’) within a single text.
Context: ...ays immediately after becoming aware of noncompliance. Loss of permissions granted for the Wo...
(EN_WORD_COHERENCY)
[uncategorized] ~151-~151: Do not mix variants of the same word (‘noncompliance’ and ‘non-compliance’) within a single text.
Context: ...this License due to either a) sustained noncompliance lasting more than sixty days or b) subs...
(EN_WORD_COHERENCY)
[uncategorized] ~151-~151: Do not mix variants of the same word (‘noncompliance’ and ‘non-compliance’) within a single text.
Context: ...y days or b) subsequent termination for noncompliance after reinstatement, is permanent, unle...
(EN_WORD_COHERENCY)
[grammar] ~151-~151: Use commas correctly
Context: ...on for noncompliance after reinstatement, is permanent, unless rights are specifi...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~151-~151: Use correct spacing
Context: ...fically restored by Licensor in writing. ### 5.3 Termination Due to Litigation If Yo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~153-~153: Use correct spacing
Context: .... ### 5.3 Termination Due to Litigation If You initiate litigation against Licen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~155-~155: Use commas correctly
Context: ...You initiate litigation against Licensor, or any Recipient of the Work, either di...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~155-~155: Use correct spacing
Context: ...not cause termination due to litigation. ## 6. Disclaimer of Warranty and Limit on L...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~157-~157: Use correct spacing
Context: ...aimer of Warranty and Limit on Liability As far as the law allows, the Work comes...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[style] ~159-~159: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...lfunction, loss of profits, revenue, or any and all other commercial damages or losses. ##...
(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[grammar] ~159-~159: Use correct spacing
Context: ... all other commercial damages or losses. ## 7. Other Provisions ### 7.1. Affiliates...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~161-~161: Use correct spacing
Context: ...mages or losses. ## 7. Other Provisions ### 7.1. Affiliates An “Affiliate” means an...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~163-~163: Use correct spacing
Context: ...7. Other Provisions ### 7.1. Affiliates An “Affiliate” means any other entity th...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~165-~165: Use commas correctly
Context: ...lled by, or is under common control with, the Licensee. Employees of a Licensee a...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~165-~165: Use correct spacing
Context: ...ervices to Licensee are also Affiliates. ### 7.2. Choice of Jurisdiction and Governin...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~167-~167: Use correct spacing
Context: ...Choice of Jurisdiction and Governing Law A Licensor may require that any action o...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~169-~169: Use commas correctly
Context: ...xcluding its conflict-of-law provisions), if Licensor provides conspicuous notice...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~169-~169: Use correct spacing
Context: ...articular jurisdiction to all Licensees. ### 7.3. No Sublicensing This License is no...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~171-~171: Use correct spacing
Context: ...all Licensees. ### 7.3. No Sublicensing This License is not sublicensable. Each ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~173-~173: Use correct spacing
Context: ...rcise of the permissions granted herein. ### 7.4. Attorneys' Fees In any action to e...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~175-~175: Use correct spacing
Context: ...ranted herein. ### 7.4. Attorneys' Fees In any action to enforce the terms of th...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~177-~177: Use commas correctly
Context: ...ion to enforce the terms of this License, or seeking damages relating thereto, in...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~177-~177: There might be a mistake here.
Context: ... thereto, including by an intended third party beneficiary, the prevailing party ...
(QB_NEW_EN_OTHER)
[grammar] ~177-~177: Use correct spacing
Context: ...survive the termination of this License. ### 7.5. No Waiver Any failure by Licensor ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~179-~179: Use correct spacing
Context: ...ion of this License. ### 7.5. No Waiver Any failure by Licensor to enforce any p...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~181-~181: Use correct spacing
Context: ... enforce such provision at a later time. ### 7.6. Severability If any provision of t...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~183-~183: Use correct spacing
Context: ... at a later time. ### 7.6. Severability If any provision of this License is held...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~185-~185: Use correct spacing
Context: ...se will remain in full force and effect. ### 7.7. License for the Text of this Licens...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~187-~187: Use correct spacing
Context: ....7. License for the Text of this License The text of this license is released und...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~189-~189: There might be a mistake here.
Context: ...scribe any derived work of this License.
(QB_NEW_EN)
|
@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment: S/M/L PR Classification Guidelines:This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed. Small (S)Characteristics:
Review Effort: Would have taken 5-10 minutes Examples:
Medium (M)Characteristics:
Review Effort: Would have taken 15-30 minutes Examples:
Large (L)Characteristics:
Review Effort: Would have taken 45+ minutes Examples:
Additional Factors to ConsiderWhen deciding between sizes, also consider:
Notes:
|
|
Tip For best results, initiate chat on the files or code changes. SIZE=M |
Motivation
Solution
Checks
By submitting this for review, I'm confirming I've done the following:
Summary by CodeRabbit