Skip to content

Add float related database functions with rusqlite#2324

Merged
findolor merged 7 commits intomainfrom
local-db-rusqlite-functions
Dec 2, 2025
Merged

Add float related database functions with rusqlite#2324
findolor merged 7 commits intomainfrom
local-db-rusqlite-functions

Conversation

@findolor
Copy link
Copy Markdown
Collaborator

@findolor findolor commented Nov 19, 2025

Chained PR

Motivation

We had float related functions in our sqlite-web package, but we didn't have a way to use these with our producer pipeline. This PR aims to add the same functions that we use in sqlite-web and this repository.

Solution

  • Register all of the functionality we have related to float with rusqlite
  • Add tests

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

  • New Features
    • Added custom SQLite functions for floating-point arithmetic operations in the local database, enabling zero checking, value negation, sum aggregation, and zero value representation utilities.

@findolor findolor requested review from 0xgleb and hardyjosh November 19, 2025 06:47
@findolor findolor self-assigned this Nov 19, 2025
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Nov 19, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

The PR enables the rusqlite "functions" feature and introduces a module system for registering SQLite user-defined functions (FLOAT_IS_ZERO, FLOAT_NEGATE, FLOAT_SUM, FLOAT_ZERO_HEX) that operate on hex-encoded floats. These functions are automatically registered when a database connection is opened.

Changes

Cohort / File(s) Summary
Dependency Configuration
crates/cli/Cargo.toml
Updated rusqlite dependency to enable the "functions" feature.
Connection Setup
crates/cli/src/commands/local_db/executor.rs
Added import for functions module and calls functions::register_all(&conn) during open_connection to register all custom SQLite functions before returning the connection.
SQLite Function Implementations
crates/cli/src/commands/local_db/functions/float_is_zero.rs, float_negate.rs, float_sum.rs, float_zero_hex.rs
Introduced four new SQLite functions: FLOAT_IS_ZERO (scalar, checks if hex-encoded float is zero), FLOAT_NEGATE (scalar, negates a hex-encoded float), FLOAT_SUM (aggregate, sums hex-encoded floats), and FLOAT_ZERO_HEX (scalar, returns hex representation of Float::zero). Each module exports a register(conn: &Connection) -> Result<()> function and includes unit tests.
Function Registry
crates/cli/src/commands/local_db/functions/mod.rs
Aggregates the four function modules and exports a register_all(conn: &Connection) function that sequentially registers all custom functions.
Module Declaration
crates/cli/src/commands/local_db/mod.rs
Added public functions module declaration.

Sequence Diagram(s)

sequenceDiagram
    participant Executor as open_connection()
    participant FnReg as functions::register_all()
    participant FloatFns as Float Functions<br/>(is_zero, negate, etc.)
    participant SQLite as SQLite DB

    Executor->>FnReg: register_all(&conn)
    activate FnReg
    FnReg->>FloatFns: float_is_zero::register(&conn)
    FloatFns->>SQLite: Register FLOAT_IS_ZERO
    FnReg->>FloatFns: float_negate::register(&conn)
    FloatFns->>SQLite: Register FLOAT_NEGATE
    FnReg->>FloatFns: float_sum::register(&conn)
    FloatFns->>SQLite: Register FLOAT_SUM
    FnReg->>FloatFns: float_zero_hex::register(&conn)
    FloatFns->>SQLite: Register FLOAT_ZERO_HEX
    deactivate FnReg
    FnReg-->>Executor: Ok(())
    Executor-->>Caller: Connection with functions
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Float conversion logic (hex parsing/formatting) in each scalar function requires verification for correctness
  • Aggregate function implementation (FLOAT_SUM) is more complex than scalar functions and requires careful review of the Aggregate trait implementation (init, step, finalize)
  • Error handling paths and proper propagation of UserFunctionError across all four function modules should be verified
  • Unit test coverage appears adequate but should be confirmed to cover edge cases

Possibly related PRs

Suggested reviewers

  • 0xgleb
  • hardyjosh

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add float related database functions with rusqlite' accurately summarizes the main change—introducing float-related SQLite functions via the rusqlite library and its 'functions' feature.

Comment @coderabbitai help to get the list of available commands and usage tips.

@findolor
Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Nov 19, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 23f3db4 and b2ff81b.

📒 Files selected for processing (8)
  • crates/cli/Cargo.toml (1 hunks)
  • crates/cli/src/commands/local_db/executor.rs (2 hunks)
  • crates/cli/src/commands/local_db/functions/float_is_zero.rs (1 hunks)
  • crates/cli/src/commands/local_db/functions/float_negate.rs (1 hunks)
  • crates/cli/src/commands/local_db/functions/float_sum.rs (1 hunks)
  • crates/cli/src/commands/local_db/functions/float_zero_hex.rs (1 hunks)
  • crates/cli/src/commands/local_db/functions/mod.rs (1 hunks)
  • crates/cli/src/commands/local_db/mod.rs (1 hunks)
🧰 Additional context used
🧠 Learnings (10)
📓 Common learnings
Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:53.708Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, provide a separate comment after each review with PR size statistics in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding lock files like package-lock.json and cargo.lock.
Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:53.708Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, provide a separate comment after each review with PR size statistics in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding lock files like package-lock.json and cargo.lock.
Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:53.708Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, provide a separate comment after each review with PR size statistics in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding lock files like package-lock.json and cargo.lock.
Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:53.708Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, provide a separate comment after each review with PR size statistics in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding lock files like package-lock.json and cargo.lock.
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 1956
File: crates/common/src/fuzz/mod.rs:64-64
Timestamp: 2025-07-04T09:02:57.301Z
Learning: In rainlanguage/rain.orderbook, user findolor prefers to limit type consistency changes to only the parts directly related to the current work scope. For example, when updating chain_id fields from u64 to u32 in fuzz-related code, unrelated files like tauri-app wallet commands can remain as u64 if they serve different purposes and aren't part of the current changes.
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 2155
File: crates/common/src/raindex_client/local_db/query/fetch_vaults/mod.rs:84-84
Timestamp: 2025-10-06T14:12:34.864Z
Learning: The SQL function FLOAT_ZERO_HEX() is available in the db lib SDK and does not need to be defined in the codebase. It is used in SQL queries as an external function provided by the database library.
📚 Learning: 2025-10-06T14:41:41.909Z
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 2159
File: crates/cli/src/commands/local_db/sync/runner/mod.rs:52-113
Timestamp: 2025-10-06T14:41:41.909Z
Learning: The local DB sync CLI command (crates/cli/src/commands/local_db/sync/) is designed for CI-only usage, and simple println! statements are preferred over structured logging for status messages.

Applied to files:

  • crates/cli/src/commands/local_db/mod.rs
  • crates/cli/src/commands/local_db/executor.rs
📚 Learning: 2025-10-21T05:15:50.518Z
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 2256
File: crates/common/src/raindex_client/local_db/query/fetch_tables.rs:7-7
Timestamp: 2025-10-21T05:15:50.518Z
Learning: In Rust 2021+ editions, passing a reference to a temporary into an async function within the same expression (e.g., `exec.query_json(&fetch_tables_stmt()).await`) is safe and idiomatic. The temporary lifetime is extended across the await point, so this pattern should not be flagged as an issue.

Applied to files:

  • crates/cli/src/commands/local_db/executor.rs
📚 Learning: 2025-10-18T10:38:41.273Z
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 2237
File: crates/common/src/raindex_client/local_db/sync.rs:79-89
Timestamp: 2025-10-18T10:38:41.273Z
Learning: In `crates/common/src/raindex_client/local_db/sync.rs`, the sync_database method currently only supports indexing a single orderbook per chain ID, which is why `.first()` is used to select the orderbook configuration. Multi-orderbook support per chain ID is planned for future PRs.

Applied to files:

  • crates/cli/src/commands/local_db/executor.rs
📚 Learning: 2025-10-06T14:12:05.824Z
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 2155
File: crates/common/src/raindex_client/local_db/query/fetch_order_trades/query.sql:86-108
Timestamp: 2025-10-06T14:12:05.824Z
Learning: CTEs (Common Table Expressions) are not supported in the local DB SQL implementation used in the rain.orderbook codebase.

Applied to files:

  • crates/cli/src/commands/local_db/executor.rs
📚 Learning: 2025-10-06T11:13:29.956Z
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 2123
File: crates/common/src/raindex_client/local_db/mod.rs:23-29
Timestamp: 2025-10-06T11:13:29.956Z
Learning: In `crates/common/src/raindex_client/local_db/mod.rs`, the `Default` implementation for `LocalDb` that creates an RPC client pointing to `http://localhost:4444` is acceptable because the RPC client must be explicitly configured before actual usage in production scenarios.

Applied to files:

  • crates/cli/src/commands/local_db/executor.rs
📚 Learning: 2025-10-06T14:12:34.864Z
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 2155
File: crates/common/src/raindex_client/local_db/query/fetch_vaults/mod.rs:84-84
Timestamp: 2025-10-06T14:12:34.864Z
Learning: The SQL function FLOAT_ZERO_HEX() is available in the db lib SDK and does not need to be defined in the codebase. It is used in SQL queries as an external function provided by the database library.

Applied to files:

  • crates/cli/src/commands/local_db/functions/float_is_zero.rs
  • crates/cli/src/commands/local_db/functions/float_sum.rs
  • crates/cli/src/commands/local_db/functions/float_negate.rs
  • crates/cli/src/commands/local_db/functions/mod.rs
  • crates/cli/src/commands/local_db/functions/float_zero_hex.rs
📚 Learning: 2025-05-16T17:24:34.724Z
Learnt from: 0xgleb
Repo: rainlanguage/rain.orderbook PR: 1844
File: tauri-app/src-tauri/src/commands/wallet.rs:27-28
Timestamp: 2025-05-16T17:24:34.724Z
Learning: In Rust projects, dependencies listed in the [dependencies] section of Cargo.toml are available for both application code and tests. The tokio crate with the "full" feature set includes the "test" feature needed for `#[tokio::test]` to work properly.

Applied to files:

  • crates/cli/Cargo.toml
📚 Learning: 2025-05-14T05:13:59.713Z
Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 1744
File: crates/subgraph/src/orderbook_client.rs:44-46
Timestamp: 2025-05-14T05:13:59.713Z
Learning: In the rain.orderbook project, WASM dependencies are intentionally made available in non-WASM targets to facilitate testing of WASM-related functionality, so conditional compilation guards like `#[cfg(target_family = "wasm")]` should not be added to imports or implementations that may be needed for tests.

Applied to files:

  • crates/cli/Cargo.toml
📚 Learning: 2025-05-15T22:27:49.771Z
Learnt from: 0xgleb
Repo: rainlanguage/rain.orderbook PR: 1777
File: tauri-app/src-tauri/Cargo.toml:64-64
Timestamp: 2025-05-15T22:27:49.771Z
Learning: User 0xgleb prefers to maintain the dot notation format for some Cargo.toml dependencies (e.g., `rain-interpreter-eval.path = "path"`) rather than converting all to inline table format, as both formats are valid in Rust.

Applied to files:

  • crates/cli/Cargo.toml
🔇 Additional comments (11)
crates/cli/Cargo.toml (1)

36-36: LGTM! Feature flag correctly enables SQLite function registration.

The addition of the functions feature to rusqlite is necessary for registering the custom SQLite functions introduced in this PR.

crates/cli/src/commands/local_db/functions/float_zero_hex.rs (2)

4-15: LGTM! Function correctly returns hex representation of zero.

The implementation properly handles the Float::zero() error case and returns the hex string. The use of SQLITE_DETERMINISTIC and SQLITE_UTF8 flags is appropriate.


21-32: LGTM! Test validates the function output.

The test properly registers the function, executes it, and verifies the result matches the expected hex representation of zero.

crates/cli/src/commands/local_db/functions/float_is_zero.rs (2)

4-24: LGTM! Function correctly parses hex input and checks for zero.

The implementation properly:

  • Extracts the hex string from the argument
  • Parses it using Float::from_hex()
  • Checks if the value is zero
  • Converts all errors to UserFunctionError

30-47: LGTM! Test covers both zero and non-zero cases.

The test validates that the function correctly identifies zero values (returns true) and non-zero values (returns false).

crates/cli/src/commands/local_db/functions/float_sum.rs (2)

16-43: LGTM! Aggregate implementation is correct.

The FloatSum aggregate properly:

  • Initializes the accumulator to zero
  • Validates argument count in each step
  • Accumulates parsed float values
  • Returns None for empty sets (SQL standard behavior for SUM)

The use of transpose() in finalize is idiomatic Rust.


49-93: LGTM! Tests comprehensively validate aggregate behavior.

The tests cover:

  • Single value aggregation
  • Multiple value aggregation
  • Empty set returns NULL (line 81-93)

All critical paths are tested.

crates/cli/src/commands/local_db/mod.rs (1)

3-3: LGTM! Module declaration exposes the new functions module.

This allows the executor to access and register all SQLite functions via functions::register_all().

crates/cli/src/commands/local_db/executor.rs (1)

1-1: LGTM! Functions are registered on every connection.

The integration is correct:

  • Functions are registered immediately after opening the connection and setting the busy timeout
  • Errors are properly converted to LocalDbQueryError with a descriptive message
  • All connections will have the custom SQLite functions available

Also applies to: 40-42

crates/cli/src/commands/local_db/functions/float_negate.rs (1)

30-44: LGTM! Test validates negation behavior.

The test correctly verifies that +1 is negated to -1 by comparing hex representations.

crates/cli/src/commands/local_db/functions/mod.rs (1)

8-15: LGTM! Clean aggregator pattern for function registration.

The register_all function properly:

  • Registers each custom SQLite function in sequence
  • Propagates any registration errors via ?
  • Provides a single entry point for the executor to register all functions

Comment thread crates/cli/src/commands/local_db/functions/float_negate.rs
Base automatically changed from local-db-sqlite-web-bump to main December 2, 2025 13:23
@findolor findolor merged commit 868c4b1 into main Dec 2, 2025
20 checks passed
@findolor findolor deleted the local-db-rusqlite-functions branch December 2, 2025 14:44
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Dec 2, 2025

@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
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Dec 2, 2025

Tip

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

SIZE=M


🧠 Learnings used
Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:42.275Z
Learning: For PR #1884, after each commit review, I should provide a new comment with a PR size report in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding irrelevant files such as lock files (package-lock.json, cargo.lock, etc.).

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:42.275Z
Learning: After each commit in PR #1884, I should provide a new comment with the PR size report in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`. The report should exclude irrelevant files such as lock files (e.g., package-lock.json, cargo.lock).

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:25:47.873Z
Learning: After each new commit review for rainlanguage/rain.orderbook repository, generate a PR size report in a separate comment with the format: "TOTAL=number ADDITIONS=number DELETIONS=number". This report should exclude irrelevant files such as lock files (e.g., package-lock.json, cargo.lock).

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:25:47.873Z
Learning: After each new commit review for rainlanguage/rain.orderbook repository, generate a PR size report in a separate comment with the exact format: "TOTAL=number\nADDITIONS=number\nDELETIONS=number". This report should exclude irrelevant files such as lock files (package-lock.json, yarn.lock, pnpm-lock.yaml, cargo.lock).

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T22:14:22.646Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, I must consistently report the PR size after EVERY new commit in the exact format "TOTAL=number\nADDITIONS=number\nDELETIONS=number" without any formatting blocks. The report must exclude lock files (package-lock.json, yarn.lock, pnpm-lock.yaml, cargo.lock) and can be included either as part of the review or as a separate comment.

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T22:14:22.646Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, I must consistently report the PR size after EVERY new commit in the exact format "TOTAL=number\nADDITIONS=number\nDELETIONS=number" without any additional text or formatting blocks. The report must exclude lock files (package-lock.json, yarn.lock, pnpm-lock.yaml, cargo.lock) and can be included either as part of the review or as a separate comment.

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T22:46:08.530Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, the PR size report should be the only content in the comment - no text before it, no text after it, no formatting blocks, just the raw report in the exact format: "TOTAL=number\nADDITIONS=number\nDELETIONS=number". The report must exclude lock files (package-lock.json, yarn.lock, pnpm-lock.yaml, cargo.lock).

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:53.708Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, provide a separate comment after each review with PR size statistics in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding lock files like package-lock.json and cargo.lock.

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:53.708Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, provide a separate comment after each review with PR size statistics in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding lock files like package-lock.json and cargo.lock.

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:53.708Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, provide a separate comment after each review with PR size statistics in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding lock files like package-lock.json and cargo.lock.

Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 1971
File: .github/workflows/vercel-docs-prod.yaml:32-34
Timestamp: 2025-07-11T12:30:09.245Z
Learning: findolor prefers not to pin Node versions explicitly in GitHub Actions workflows when using Nix with webapp-shell, considering the current setup sufficient for deterministic builds in the rainlanguage/rain.orderbook project.

Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 1971
File: .github/workflows/vercel-docs-prod.yaml:10-14
Timestamp: 2025-07-11T12:29:49.284Z
Learning: In GitHub Actions workflows for the rainlanguage/rain.orderbook project, findolor is comfortable with job names that may seem misleading (like "Deploy-Docs-Preview" in a production workflow) when there's only one job in the workflow, as the context makes it clear enough.

Learnt from: rouzwelt
Repo: rainlanguage/rain.orderbook PR: 0
File: :0-0
Timestamp: 2025-05-21T21:24:53.708Z
Learning: For PR #1884 in rainlanguage/rain.orderbook, provide a separate comment after each review with PR size statistics in the format: `TOTAL=number ADDITIONS=number DELETIONS=number`, excluding lock files like package-lock.json and cargo.lock.

Learnt from: findolor
Repo: rainlanguage/rain.orderbook PR: 1956
File: crates/common/src/fuzz/mod.rs:64-64
Timestamp: 2025-07-04T09:02:57.301Z
Learning: In rainlanguage/rain.orderbook, user findolor prefers to limit type consistency changes to only the parts directly related to the current work scope. For example, when updating chain_id fields from u64 to u32 in fuzz-related code, unrelated files like tauri-app wallet commands can remain as u64 if they serve different purposes and aren't part of the current changes.

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.

3 participants