Skip to content

license#109

Merged
thedavidmeister merged 5 commits into
mainfrom
2025-08-23-license
Aug 26, 2025
Merged

license#109
thedavidmeister merged 5 commits into
mainfrom
2025-08-23-license

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Aug 23, 2025

Copy link
Copy Markdown
Contributor

Motivation

Solution

Checks

By submitting this for review, I'm confirming I've done the following:

  • made this PR as small as possible
  • unit-tested any new functionality
  • linked any relevant issues or PRs
  • included screenshots (if this involves a front-end change)

Summary by CodeRabbit

  • Chores
    • CI: Expanded workflow matrix to include an additional cross-product task across Ubuntu and macOS to increase coverage.
  • Documentation
    • Added DecentraLicense 1.0 text and updated top-level LICENSE to reference it.
    • Introduced REUSE.toml for SPDX license metadata and project annotations.
  • Style
    • Updated SPDX headers across source and test files to LicenseRef-DCL-1.0 with copyright notices; no functional changes.

@coderabbitai

coderabbitai Bot commented Aug 23, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Adds 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 rainix-sol-legal task.

Changes

Cohort / File(s) Summary
CI workflow
.github/workflows/rainix.yaml
Expanded matrix.task to include rainix-sol-legal alongside existing tasks; OS matrix (ubuntu/macos) and explicit include entries unchanged.
Top-level license & metadata
LICENSE, LICENSES/LicenseRef-DCL-1.0.txt, REUSE.toml
Added DecentraLicense v1.0 text (LICENSES/LicenseRef-DCL-1.0.txt), root LICENSE now references it, and REUSE.toml with SPDX annotations for repository files.
Submodule pointer
lib/rain.sol.codegen
Updated submodule commit pointer (d9e5004 → 769792d).
Production Solidity files (license header only)
script/BuildPointers.sol, script/Deploy.sol, src/concrete/DecimalFloat.sol, src/lib/LibDecimalFloat.sol, src/lib/deploy/LibDecimalFloatDeploy.sol, src/lib/implementation/LibDecimalFloatImplementation.sol, src/lib/table/LibLogTable.sol
Replaced SPDX header CALLicenseRef-DCL-1.0 and added SPDX-FileCopyrightText; no code or API changes.
Test Solidity files (license header only)
test/**, test/abstract/*.sol, test/concrete/*.sol, test/src/**, test/lib/**, test/src/lib/implementation/**, test/src/lib/parse/**, test/src/lib/table/**
Updated SPDX headers across many test files from CALLicenseRef-DCL-1.0 and added copyright metadata; no test logic 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
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • new codegen #42 — also updates the lib/rain.sol.codegen submodule pointer; likely related to the same dependency bump.

Suggested reviewers

  • hardyjosh
  • 0xgleb

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

📥 Commits

Reviewing files that changed from the base of the PR and between 2f062e7 and 78b614d.

⛔ Files ignored due to path filters (1)
  • src/generated/LogTables.pointers.sol is excluded by !**/generated/**
📒 Files selected for processing (1)
  • lib/rain.sol.codegen (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: thedavidmeister
PR: rainlanguage/rain.math.float#109
File: LICENSE:1-1
Timestamp: 2025-08-26T13:11:22.986Z
Learning: In the rain.math.float repository, the LICENSE file is a symlink pointing to LICENSES/LicenseRef-DCL-1.0.txt, which is REUSE compliant and verified by CI. This is not duplication but proper symlink-based license management.
Learnt from: thedavidmeister
PR: rainlanguage/rain.math.float#109
File: LICENSE:1-1
Timestamp: 2025-08-26T13:11:22.986Z
Learning: In the rain.math.float repository, the LICENSE file is a symlink pointing to LICENSES/LicenseRef-DCL-1.0.txt, which is REUSE compliant and verified by CI. This is not duplication but proper symlink-based license management.
⏰ 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)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-static)
  • GitHub Check: rainix (ubuntu-latest, test-wasm-build)
  • GitHub Check: rainix (macos-latest, rainix-rs-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-legal)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-static)
  • GitHub Check: rainix (macos-latest, rainix-sol-legal)
  • GitHub Check: git-clean
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-test)
🔇 Additional comments (1)
lib/rain.sol.codegen (1)

1-1: Submodule bump verification complete

All automated checks pass; please confirm the commit intent below.

• Submodule HEAD
– Checked out at 769792d (no exact tag found) from https://github.com/rainlanguage/rain.sol.codegen.
• Licensing alignment
REUSE.toml is present in the submodule root.
– Multiple files (e.g. test/concrete/CodeGennable.sol, src/lib/LibCodeGen.sol) include // SPDX-License-Identifier: LicenseRef-DCL-1.0 and matching copyright markers.
• CI fetch of submodules
– All workflows (rainix.yaml, manual-sol-artifacts.yaml, npm-package-release.yaml, git-clean.yaml) use:
yaml - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0
– Downstream jobs will see the exact commit for legal/REUSE checks.

Next step: confirm that commit 769792d corresponds to the intended rain.sol.codegen release/changes before merging.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 2025-08-23-license

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@thedavidmeister thedavidmeister changed the base branch from 2025-08-16-no-normal-mul to main August 26, 2025 12:56

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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; and LICENSES/LicenseRef-DCL-1.0.txt is present.
  • REUSE compliance (mandatory):
    • Verify that your REUSE.toml contains an entry mapping LicenseRef-DCL-1.0 to LICENSES/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-Code and // 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-legal enforces 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 60d8ce6 and 2f062e7.

📒 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.sol
  • test/src/lib/parse/LibParseDecimalFloat.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol
  • test/src/concrete/DecimalFloat.gte.t.sol
  • test/src/concrete/DecimalFloat.mul.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.unabsUnsignedMulOrDivLossy.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.minus.t.sol
  • test/src/concrete/DecimalFloat.constants.t.sol
  • test/src/concrete/DecimalFloat.minus.t.sol
  • test/src/concrete/DecimalFloat.inv.t.sol
  • test/src/lib/LibDecimalFloat.div.t.sol
  • test/src/lib/LibDecimalFloat.min.t.sol
  • test/src/lib/LibDecimalFloat.decimal.t.sol
  • test/src/concrete/DecimalFloat.abs.t.sol
  • test/src/concrete/DecimalFloat.eq.t.sol
  • test/src/concrete/DecimalFloat.add.t.sol
  • test/src/lib/LibDecimalFloat.lte.t.sol
  • test/src/concrete/DecimalFloat.log10.t.sol
  • test/src/lib/LibDecimalFloat.minus.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.inv.t.sol
  • test/src/lib/LibDecimalFloat.pack.t.sol
  • test/src/concrete/DecimalFloat.pow10.t.sol
  • test/src/concrete/DecimalFloat.sqrt.t.sol
  • test/src/concrete/DecimalFloat.floor.t.sol
  • test/src/lib/LibDecimalFloat.log10.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.normalize.t.sol
  • test/src/concrete/DecimalFloat.parse.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.mul.t.sol
  • test/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.sol
  • test/src/lib/LibDecimalFloat.constants.t.sol
  • test/src/lib/LibDecimalFloat.frac.t.sol
  • test/src/concrete/DecimalFloat.isZero.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.characteristicMantissa.t.sol
  • test/src/lib/LibDecimalFloat.isZero.t.sol
  • test/src/concrete/DecimalFloat.sub.t.sol
  • test/src/concrete/DecimalFloat.format.t.sol
  • test/src/lib/LibDecimalFloat.eq.t.sol
  • test/src/lib/LibDecimalFloat.ceil.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.add.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.log10.t.sol
  • test/src/lib/LibDecimalFloat.sub.t.sol
  • test/lib/implementation/LibDecimalFloatImplementationSlow.sol
  • test/src/concrete/DecimalFloat.toFixedDecimalLossy.t.sol
  • test/src/concrete/DecimalFloat.lt.t.sol
  • test/src/lib/LibDecimalFloat.inv.t.sol
  • src/concrete/DecimalFloat.sol
  • test/src/lib/LibDecimalFloat.pow10.t.sol
  • test/src/lib/LibDecimalFloat.floor.t.sol
  • test/src/lib/LibDecimalFloat.mul.t.sol
  • test/src/concrete/DecimalFloat.min.t.sol
  • test/src/lib/LibDecimalFloat.gt.t.sol
  • test/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.sol
  • src/lib/implementation/LibDecimalFloatImplementation.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.withTargetExponent.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.pow10.t.sol
  • test/src/concrete/DecimalFloat.frac.t.sol
  • test/src/concrete/DecimalFloat.pow.t.sol
  • test/src/concrete/DecimalFloat.gt.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.maximize.t.sol
  • test/src/concrete/DecimalFloat.max.t.sol
  • test/src/lib/LibDecimalFloat.decimalLossless.t.sol
  • test/src/lib/LibDecimalFloat.abs.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.sub.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.eq.t.sol
  • test/src/lib/LibDecimalFloat.lt.t.sol
  • test/src/lib/LibDecimalFloat.gte.t.sol
  • test/src/concrete/DecimalFloat.ceil.t.sol
  • test/src/lib/LibDecimalFloat.mixed.t.sol
  • test/src/concrete/DecimalFloat.div.t.sol
  • test/src/concrete/DecimalFloat.toFixedDecimalLossless.t.sol
  • test/lib/LibDecimalFloatSlow.sol
  • test/src/concrete/DecimalFloat.lte.t.sol
  • test/concrete/TestDecimalFloat.sol
  • test/src/lib/LibDecimalFloat.sqrt.t.sol
  • test/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.sol
  • test/concrete/DecimalFloat.packLossless.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol
  • test/src/concrete/DecimalFloat.gte.t.sol
  • test/src/concrete/DecimalFloat.mul.t.sol
  • test/src/concrete/DecimalFloat.constants.t.sol
  • test/src/concrete/DecimalFloat.minus.t.sol
  • test/src/concrete/DecimalFloat.inv.t.sol
  • test/src/lib/LibDecimalFloat.div.t.sol
  • test/src/concrete/DecimalFloat.abs.t.sol
  • test/src/concrete/DecimalFloat.eq.t.sol
  • test/src/concrete/DecimalFloat.add.t.sol
  • test/src/lib/LibDecimalFloat.lte.t.sol
  • test/src/concrete/DecimalFloat.log10.t.sol
  • test/src/lib/LibDecimalFloat.minus.t.sol
  • test/src/lib/LibDecimalFloat.pack.t.sol
  • test/src/concrete/DecimalFloat.pow10.t.sol
  • test/src/concrete/DecimalFloat.sqrt.t.sol
  • test/src/concrete/DecimalFloat.floor.t.sol
  • test/src/lib/LibDecimalFloat.log10.t.sol
  • test/src/concrete/DecimalFloat.parse.t.sol
  • test/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.sol
  • test/src/lib/LibDecimalFloat.constants.t.sol
  • test/src/lib/LibDecimalFloat.frac.t.sol
  • test/concrete/TestDecimalFloat.unpack.t.sol
  • test/src/concrete/DecimalFloat.isZero.t.sol
  • test/src/lib/LibDecimalFloat.isZero.t.sol
  • test/src/concrete/DecimalFloat.sub.t.sol
  • test/src/concrete/DecimalFloat.format.t.sol
  • test/src/lib/LibDecimalFloat.eq.t.sol
  • test/src/lib/LibDecimalFloat.ceil.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.log10.t.sol
  • test/src/lib/LibDecimalFloat.sub.t.sol
  • test/lib/implementation/LibDecimalFloatImplementationSlow.sol
  • test/src/concrete/DecimalFloat.toFixedDecimalLossy.t.sol
  • test/src/concrete/DecimalFloat.lt.t.sol
  • src/concrete/DecimalFloat.sol
  • test/src/lib/LibDecimalFloat.pow10.t.sol
  • test/src/lib/LibDecimalFloat.floor.t.sol
  • test/src/lib/LibDecimalFloat.mul.t.sol
  • test/src/concrete/DecimalFloat.min.t.sol
  • test/src/lib/LibDecimalFloat.gt.t.sol
  • test/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.sol
  • src/lib/implementation/LibDecimalFloatImplementation.sol
  • test/src/concrete/DecimalFloat.frac.t.sol
  • test/src/concrete/DecimalFloat.pow.t.sol
  • test/src/concrete/DecimalFloat.gt.t.sol
  • test/src/concrete/DecimalFloat.max.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.eq.t.sol
  • test/src/lib/LibDecimalFloat.lt.t.sol
  • test/src/lib/LibDecimalFloat.gte.t.sol
  • test/src/concrete/DecimalFloat.ceil.t.sol
  • test/src/lib/LibDecimalFloat.mixed.t.sol
  • test/src/concrete/DecimalFloat.div.t.sol
  • test/src/concrete/DecimalFloat.toFixedDecimalLossless.t.sol
  • test/lib/LibDecimalFloatSlow.sol
  • test/src/concrete/DecimalFloat.lte.t.sol
  • test/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.sol
  • test/src/concrete/DecimalFloat.gte.t.sol
  • test/src/concrete/DecimalFloat.constants.t.sol
  • test/src/concrete/DecimalFloat.minus.t.sol
  • test/src/concrete/DecimalFloat.inv.t.sol
  • test/src/lib/LibDecimalFloat.div.t.sol
  • test/src/concrete/DecimalFloat.abs.t.sol
  • test/src/concrete/DecimalFloat.eq.t.sol
  • test/src/concrete/DecimalFloat.add.t.sol
  • test/src/lib/LibDecimalFloat.lte.t.sol
  • test/src/concrete/DecimalFloat.log10.t.sol
  • test/src/lib/LibDecimalFloat.minus.t.sol
  • test/src/lib/LibDecimalFloat.pack.t.sol
  • test/src/concrete/DecimalFloat.pow10.t.sol
  • test/src/concrete/DecimalFloat.sqrt.t.sol
  • test/src/concrete/DecimalFloat.floor.t.sol
  • test/src/lib/LibDecimalFloat.log10.t.sol
  • test/src/concrete/DecimalFloat.parse.t.sol
  • test/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.sol
  • test/src/lib/LibDecimalFloat.constants.t.sol
  • test/src/lib/LibDecimalFloat.frac.t.sol
  • test/src/concrete/DecimalFloat.isZero.t.sol
  • test/src/lib/LibDecimalFloat.isZero.t.sol
  • test/src/concrete/DecimalFloat.sub.t.sol
  • test/src/concrete/DecimalFloat.format.t.sol
  • test/src/lib/LibDecimalFloat.eq.t.sol
  • test/src/lib/LibDecimalFloat.ceil.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.log10.t.sol
  • test/src/lib/LibDecimalFloat.sub.t.sol
  • test/lib/implementation/LibDecimalFloatImplementationSlow.sol
  • test/src/concrete/DecimalFloat.toFixedDecimalLossy.t.sol
  • test/src/concrete/DecimalFloat.lt.t.sol
  • src/concrete/DecimalFloat.sol
  • test/src/lib/LibDecimalFloat.pow10.t.sol
  • test/src/lib/LibDecimalFloat.floor.t.sol
  • test/src/lib/LibDecimalFloat.mul.t.sol
  • test/src/concrete/DecimalFloat.min.t.sol
  • test/src/lib/LibDecimalFloat.gt.t.sol
  • test/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.sol
  • test/src/concrete/DecimalFloat.frac.t.sol
  • test/src/concrete/DecimalFloat.pow.t.sol
  • test/src/concrete/DecimalFloat.gt.t.sol
  • test/src/concrete/DecimalFloat.max.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.eq.t.sol
  • test/src/lib/LibDecimalFloat.lt.t.sol
  • test/src/lib/LibDecimalFloat.gte.t.sol
  • test/src/concrete/DecimalFloat.ceil.t.sol
  • test/src/lib/LibDecimalFloat.mixed.t.sol
  • test/src/concrete/DecimalFloat.div.t.sol
  • test/lib/LibDecimalFloatSlow.sol
  • test/src/concrete/DecimalFloat.lte.t.sol
  • test/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.sol
  • test/src/lib/parse/LibParseDecimalFloat.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol
  • test/src/concrete/DecimalFloat.mul.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.unabsUnsignedMulOrDivLossy.t.sol
  • test/src/lib/LibDecimalFloat.min.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.inv.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.normalize.t.sol
  • test/src/concrete/DecimalFloat.parse.t.sol
  • test/src/concrete/DecimalFloat.fromFixedDecimalLossy.t.sol
  • test/concrete/TestDecimalFloat.unpack.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.characteristicMantissa.t.sol
  • test/src/concrete/DecimalFloat.toFixedDecimalLossy.t.sol
  • test/src/lib/LibDecimalFloat.inv.t.sol
  • test/src/concrete/DecimalFloat.fromFixedDecimalLossless.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.maximize.t.sol
  • test/src/lib/LibDecimalFloat.abs.t.sol
  • test/src/lib/implementation/LibDecimalFloatImplementation.sub.t.sol
  • test/src/concrete/DecimalFloat.toFixedDecimalLossless.t.sol
  • test/src/lib/table/LibLogTable.bytes.t.sol
  • test/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)

Comment thread LICENSE
Comment thread LICENSES/LicenseRef-DCL-1.0.txt
Comment thread REUSE.toml
Comment thread REUSE.toml
Comment thread script/BuildPointers.sol
Comment thread test/src/lib/LibDecimalFloat.inv.t.sol
Comment thread test/src/lib/LibDecimalFloat.lt.t.sol
Comment thread test/src/lib/LibDecimalFloat.sub.t.sol
Comment thread test/src/lib/parse/LibParseDecimalFloat.t.sol
Comment thread test/src/lib/table/LibLogTable.bytes.t.sol

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Review continued from previous batch...

Comment thread src/lib/table/LibLogTable.sol
Comment thread test/src/concrete/DecimalFloat.abs.t.sol
Comment thread test/src/concrete/DecimalFloat.add.t.sol
Comment thread test/src/concrete/DecimalFloat.frac.t.sol
Comment thread test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol
Comment thread test/src/lib/LibDecimalFloat.lte.t.sol
Comment thread test/src/lib/LibDecimalFloat.max.t.sol
Comment thread test/src/lib/LibDecimalFloat.min.t.sol
Comment thread test/src/lib/LibDecimalFloat.minus.t.sol
Comment thread test/src/lib/LibDecimalFloat.pow10.t.sol
@thedavidmeister thedavidmeister merged commit 7e5ac22 into main Aug 26, 2025
10 checks passed
@github-actions

Copy link
Copy Markdown

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

  • Simple bug fixes, typos, or minor refactoring
  • Single-purpose changes affecting 1-2 files
  • Documentation updates
  • Configuration tweaks
  • Changes that require minimal context to review

Review Effort: Would have taken 5-10 minutes

Examples:

  • Fix typo in variable name
  • Update README with new instructions
  • Adjust configuration values
  • Simple one-line bug fixes
  • Import statement cleanup

Medium (M)

Characteristics:

  • Feature additions or enhancements
  • Refactoring that touches multiple files but maintains existing behavior
  • Breaking changes with backward compatibility
  • Changes requiring some domain knowledge to review

Review Effort: Would have taken 15-30 minutes

Examples:

  • Add new feature or component
  • Refactor common utility functions
  • Update dependencies with minor breaking changes
  • Add new component with tests
  • Performance optimizations
  • More complex bug fixes

Large (L)

Characteristics:

  • Major feature implementations
  • Breaking changes or API redesigns
  • Complex refactoring across multiple modules
  • New architectural patterns or significant design changes
  • Changes requiring deep context and multiple review rounds

Review Effort: Would have taken 45+ minutes

Examples:

  • Complete new feature with frontend/backend changes
  • Protocol upgrades or breaking changes
  • Major architectural refactoring
  • Framework or technology upgrades

Additional Factors to Consider

When deciding between sizes, also consider:

  • Test coverage impact: More comprehensive test changes lean toward larger classification
  • Risk level: Changes to critical systems bump up a size category
  • Team familiarity: Novel patterns or technologies increase complexity

Notes:

  • the assessment must be for the totality of the PR, that means comparing the base branch to the last commit of the PR
  • the assessment output must be exactly one of: S, M or L (single-line comment) in format of: SIZE={S/M/L}
  • do not include any additional text, only the size classification
  • your assessment comment must not include tips or additional sections
  • do NOT tag me or anyone else on your comment

@coderabbitai

coderabbitai Bot commented Aug 26, 2025

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

SIZE=M

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