Skip to content

feat: add SignedContextOracleV1 to ParsedMeta and expose oracle_url#2457

Merged
hardyjosh merged 7 commits intomainfrom
feat/signed-context-oracle-discovery
Mar 6, 2026
Merged

feat: add SignedContextOracleV1 to ParsedMeta and expose oracle_url#2457
hardyjosh merged 7 commits intomainfrom
feat/signed-context-oracle-discovery

Conversation

@hardyjosh
Copy link
Contributor

@hardyjosh hardyjosh commented Feb 13, 2026

Caution

Merge order: Merge rain.metadata#92 and rain.interpreter#427 first, then this PR.

Motivation

Orders that require signed context data (e.g. oracle price feeds) currently have no discovery mechanism — takers have no way to know where to fetch SignedContextV1 data.

Solution

  • Added SignedContextOracleV1 variant to the ParsedMeta enum in crates/common/src/parsed_meta.rs
  • Added match arm for KnownMagic::SignedContextOracleV1 in from_meta_item() parsing logic
  • Added oracle_url() getter on RaindexOrder in both wasm and non-wasm impl blocks
  • When an order's metadata contains a SignedContextOracleV1 item, the SDK parses it and exposes the oracle endpoint URL
  • Updated rain.interpreter submodule to include the rain.metadata changes

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 support for a new Raindex signed context oracle type with full parsing and conversion.
    • Exposed oracle URL via a new getter on order objects.
  • Tests

    • Added extensive parsing and end-to-end tests covering the new oracle type.
  • Chores

    • Updated core interpreter submodule reference.

…n RaindexOrder

- Add SignedContextOracleV1 variant to ParsedMeta enum
- Add match arm for KnownMagic::SignedContextOracleV1 in parsing logic
- Add oracle_url() wasm_bindgen getter on RaindexOrder
- Depends on rain.metadata feat/signed-context-oracle-meta branch
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 13, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a new RaindexSignedContextOracleV1 metadata variant, wires parsing and TryFrom logic for it (including multi-item and byte parsing tests), exposes an oracle_url getter on RaindexOrder (WASM and non‑WASM), and updates a submodule pointer for lib/rain.interpreter.

Changes

Cohort / File(s) Summary
ParsedMeta & parsing
crates/common/src/parsed_meta.rs
Import RaindexSignedContextOracleV1; add ParsedMeta::RaindexSignedContextOracleV1(RaindexSignedContextOracleV1) variant; handle KnownMagic::RaindexSignedContextOracleV1 in from_meta_item and parsing flows; add tests for single/multi-item and byte parsing including the oracle.
RaindexOrder getters
crates/common/src/raindex_client/orders.rs
Add oracle_url getter on RaindexOrder for both WASM (#[wasm_bindgen(getter = oracleUrl)]) and non‑WASM impls. Getter returns Some(oracle.0) when ParsedMeta::RaindexSignedContextOracleV1 is present, otherwise None.
Submodule
lib/rain.interpreter
Update submodule reference commit hash (no code changes).

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant RaindexOrder
    participant ParsedMeta
    participant Parser

    Client->>RaindexOrder: get oracleUrl / oracle_url
    RaindexOrder->>ParsedMeta: parsed_meta()
    ParsedMeta->>Parser: parse meta items (detect KnownMagic::RaindexSignedContextOracleV1)
    Parser-->>ParsedMeta: RaindexSignedContextOracleV1(...)
    ParsedMeta-->>RaindexOrder: RaindexSignedContextOracleV1(oracle)
    RaindexOrder-->>Client: return oracle.0 or None
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main changes: adding SignedContextOracleV1 to ParsedMeta and exposing oracle_url getter on RaindexOrder.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/signed-context-oracle-discovery

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link
Contributor

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

🤖 Fix all issues with AI agents
In `@crates/common/src/parsed_meta.rs`:
- Line 19: Add a unit test that covers parsing of the SignedContextOracleV1
variant: construct a SignedContextOracleV1 meta item (with a test URL), wrap it
into a RainMetaDocumentV1Item, call from_meta_item (and optionally
parse_multiple) and assert the result matches ParsedMeta::SignedContextOracleV1
with the original URL; use an insta snapshot for the resulting ParsedMeta to
follow project testing style and name the test clearly (e.g.
signed_context_oracle_v1_roundtrip) so it exercises the SignedContextOracleV1
parsing path.

In `@crates/common/src/raindex_client/orders.rs`:
- Around line 275-282: The non-wasm impl RaindexOrder is missing the
oracle_url() getter present in the wasm-exported block, causing non-wasm callers
to fail; add a pub fn oracle_url(&self) -> Option<String> to the non-wasm impl
RaindexOrder that mirrors the WASM getter implementation by calling
self.parsed_meta().into_iter().find_map(|meta| match meta {
ParsedMeta::SignedContextOracleV1(oracle) => Some(oracle.0), _ => None, }) so
server-side Rust and tests can call oracle_url() the same way.

- Add 3 tests for SignedContextOracleV1 parsing (from_meta_item,
  parse_multiple, parse_from_bytes roundtrip)
- Add oracle_url() to non-wasm impl block (mirrors wasm getter)
- All 11 parsed_meta tests passing
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@crates/common/src/raindex_client/orders.rs`:
- Around line 275-282: In oracle_url (the wasm getter) avoid direct tuple-field
access on ParsedMeta::SignedContextOracleV1 by calling the accessor method
instead: when matching ParsedMeta::SignedContextOracleV1(oracle) return
oracle.url() (or convert its return to String if needed) instead of using
oracle.0; update the match arm in the oracle_url function to call the
oracle.url() accessor to improve encapsulation and resilience to upstream struct
changes.

Comment on lines +275 to +282
/// Returns the signed context oracle URL if this order has oracle metadata.
#[wasm_bindgen(getter = oracleUrl)]
pub fn oracle_url(&self) -> Option<String> {
self.parsed_meta().into_iter().find_map(|meta| match meta {
ParsedMeta::SignedContextOracleV1(oracle) => Some(oracle.0),
_ => None,
})
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for SignedContextOracleV1 struct definition
rg -n 'struct SignedContextOracleV1' --type rust -A 5

Repository: rainlanguage/rain.orderbook

Length of output: 53


🏁 Script executed:

#!/bin/bash
# Search for url() method on SignedContextOracleV1
rg -n 'fn url' --type rust -B 3 -A 3

Repository: rainlanguage/rain.orderbook

Length of output: 881


🏁 Script executed:

#!/bin/bash
# Check the parsed_meta module to understand the structure
find . -name "parsed_meta.rs" -o -name "*parsed_meta*" | head -10

Repository: rainlanguage/rain.orderbook

Length of output: 105


🏁 Script executed:

#!/bin/bash
# Look at the orders.rs file to see how oracle.0 is used and understand the context
sed -n '275,282p' crates/common/src/raindex_client/orders.rs
sed -n '359,365p' crates/common/src/raindex_client/orders.rs

Repository: rainlanguage/rain.orderbook

Length of output: 732


🏁 Script executed:

#!/bin/bash
# Read the parsed_meta.rs file to understand SignedContextOracleV1 definition
cat crates/common/src/parsed_meta.rs

Repository: rainlanguage/rain.orderbook

Length of output: 9749


🏁 Script executed:

#!/bin/bash
# Search for SignedContextOracleV1 definition in rain_metadata or dependencies
rg -n 'SignedContextOracleV1' --type rust -B 2 -A 10 | head -100

Repository: rainlanguage/rain.orderbook

Length of output: 7161


🏁 Script executed:

#!/bin/bash
# Check if there's a dependency on rain_metadata and what version
grep -r "rain_metadata" --include="Cargo.toml" | head -20

Repository: rainlanguage/rain.orderbook

Length of output: 53


🏁 Script executed:

#!/bin/bash
# Check if SignedContextOracleV1 is a tuple struct or regular struct
rg -n 'struct SignedContextOracleV1' --type rust

Repository: rainlanguage/rain.orderbook

Length of output: 53


🏁 Script executed:

#!/bin/bash
# Check the Cargo.toml in crates/common to see rain_metadata version/source
grep -A 5 "rain_metadata" crates/common/Cargo.toml

Repository: rainlanguage/rain.orderbook

Length of output: 53


🏁 Script executed:

#!/bin/bash
# Look at how DotrainSourceV1 is accessed in orders.rs to understand the pattern
sed -n '260,270p' crates/common/src/raindex_client/orders.rs
sed -n '345,355p' crates/common/src/raindex_client/orders.rs

Repository: rainlanguage/rain.orderbook

Length of output: 994


🏁 Script executed:

#!/bin/bash
# Let's check if there are any compile or test errors related to oracle.0
# First, let's see what the actual types are by examining Cargo.lock or checking dependencies
find . -name "Cargo.lock" -o -name "Cargo.toml" | grep -E "(Cargo.lock|common/Cargo.toml)" | head -5

Repository: rainlanguage/rain.orderbook

Length of output: 110


🏁 Script executed:

#!/bin/bash
# Check the actual oracle_url() method implementation more carefully
# and see if there's a test for it in orders.rs
rg -n 'oracle_url' --type rust -B 2 -A 5

Repository: rainlanguage/rain.orderbook

Length of output: 1493


🏁 Script executed:

#!/bin/bash
# Let's search for where oracle.0 or oracle.url() appears in tests
rg -n 'oracle\.' --type rust -B 1 -A 1 | grep -E "(\.0|\.url)" | head -30

Repository: rainlanguage/rain.orderbook

Length of output: 728


Consider using .url() instead of .0 for better encapsulation.

Tests in parsed_meta.rs use oracle.url() to access the URL, but the implementation uses oracle.0 (direct tuple field access). While both approaches work and .0 is consistent with the existing DotrainSourceV1 pattern in this file, using the accessor method would be more resilient to internal struct changes in the external rain_metadata crate.

♻️ Optional refactor
     pub fn oracle_url(&self) -> Option<String> {
         self.parsed_meta().into_iter().find_map(|meta| match meta {
-            ParsedMeta::SignedContextOracleV1(oracle) => Some(oracle.0),
+            ParsedMeta::SignedContextOracleV1(oracle) => Some(oracle.url().to_string()),
             _ => None,
         })
     }
📝 Committable suggestion

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

Suggested change
/// Returns the signed context oracle URL if this order has oracle metadata.
#[wasm_bindgen(getter = oracleUrl)]
pub fn oracle_url(&self) -> Option<String> {
self.parsed_meta().into_iter().find_map(|meta| match meta {
ParsedMeta::SignedContextOracleV1(oracle) => Some(oracle.0),
_ => None,
})
}
/// Returns the signed context oracle URL if this order has oracle metadata.
#[wasm_bindgen(getter = oracleUrl)]
pub fn oracle_url(&self) -> Option<String> {
self.parsed_meta().into_iter().find_map(|meta| match meta {
ParsedMeta::SignedContextOracleV1(oracle) => Some(oracle.url().to_string()),
_ => None,
})
}
🤖 Prompt for AI Agents
In `@crates/common/src/raindex_client/orders.rs` around lines 275 - 282, In
oracle_url (the wasm getter) avoid direct tuple-field access on
ParsedMeta::SignedContextOracleV1 by calling the accessor method instead: when
matching ParsedMeta::SignedContextOracleV1(oracle) return oracle.url() (or
convert its return to String if needed) instead of using oracle.0; update the
match arm in the oracle_url function to call the oracle.url() accessor to
improve encapsulation and resilience to upstream struct changes.

…leV1 metadata

Points rain.interpreter at feat/signed-context-oracle-meta-submodule branch
which updates the rain.metadata submodule to feat/signed-context-oracle-meta.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@lib/rain.interpreter`:
- Line 1: The submodule commit referenced by the PR is missing the
SignedContextOracleV1 implementation and its magic constant
(0xff7a1507ba4419ca); update the submodule pointer to the commit/branch that
actually contains SignedContextOracleV1 or remove/adjust the commit message and
code that claim to add it. Specifically, either: 1) change the submodule
reference to the commit that implements SignedContextOracleV1 and exposes the
magic value, or 2) if that implementation belongs in a separate PR
(rain.metadata PR `#92`), revert the claims and any code paths expecting
SignedContextOracleV1 (look for references to SignedContextOracleV1 and the
magic value) and add a TODO linking to the pending PR. Also add a short unit
test or sanity check that asserts the magic value (0xff7a1507ba4419ca) and
SignedContextOracleV1 type are present after the submodule update so future
reviews can verify the support.

@@ -1 +1 @@
Subproject commit c11023d69e745fb4aa76366918dd89d672c68616
Subproject commit ef58bce5deb4445f220e0ac25589e17a5bce7259
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify submodule commit and check for SignedContextOracleV1 support

echo "=== Checking if submodule reference exists ==="
if [ -f "lib/rain.interpreter" ]; then
  echo "File 'lib/rain.interpreter' exists (likely gitlink)"
  cat lib/rain.interpreter
else
  echo "No regular file at lib/rain.interpreter"
fi

echo -e "\n=== Checking .gitmodules for submodule configuration ==="
if [ -f ".gitmodules" ]; then
  grep -A 3 "rain.interpreter" .gitmodules 2>/dev/null || echo "No rain.interpreter submodule config found"
else
  echo "No .gitmodules file found"
fi

echo -e "\n=== Checking git config for submodule URL ==="
git config --file .gitmodules --get-regexp "rain\.interpreter" 2>/dev/null || echo "No submodule config in git"

echo -e "\n=== Listing directory structure to understand layout ==="
ls -la lib/ 2>/dev/null | head -20

echo -e "\n=== Checking recent commits affecting lib/rain.interpreter ==="
git log --oneline -n 20 -- "lib/rain.interpreter" 2>/dev/null || echo "No git history for this path"

echo -e "\n=== Current state of git status ==="
git status --short lib/rain.interpreter 2>/dev/null || echo "No changes detected"

Repository: rainlanguage/rain.orderbook

Length of output: 1307


🏁 Script executed:

#!/bin/bash
# Get the actual submodule commit hash and verify its contents

echo "=== Getting current submodule commit hash ==="
git ls-tree HEAD lib/rain.interpreter

echo -e "\n=== Checking .gitmodules for url and branch tracking ==="
cat .gitmodules | grep -A 5 "rain.interpreter"

echo -e "\n=== Reading the actual submodule state ==="
cd lib/rain.interpreter 2>/dev/null && {
  echo "Inside submodule:"
  git rev-parse HEAD
  
  echo -e "\n=== Searching for SignedContextOracleV1 in submodule ==="
  find . -type f \( -name "*.rs" -o -name "*.toml" \) -not -path "./.git/*" | head -20 | xargs rg "SignedContextOracleV1" -l 2>/dev/null || echo "No SignedContextOracleV1 found via rg"
  
  echo -e "\n=== Checking for magic value 0xff7a1507ba4419ca ==="
  find . -type f \( -name "*.rs" \) -not -path "./.git/*" | xargs rg "0xff7a1507ba4419ca" 2>/dev/null || echo "Magic value not found"
  
  echo -e "\n=== Recent commits in submodule ==="
  git log --oneline -n 5
} || echo "Could not cd into submodule"

echo -e "\n=== Checking current branch/state ==="
cd - > /dev/null 2>&1
git rev-parse --abbrev-ref HEAD

Repository: rainlanguage/rain.orderbook

Length of output: 962


🏁 Script executed:

#!/bin/bash
# Investigate what's actually in the recent commit

cd lib/rain.interpreter 2>/dev/null || exit 1

echo "=== Commit details for f2566dc92 ==="
git show --stat f2566dc92

echo -e "\n=== Full commit message ==="
git show f2566dc92 --no-patch --pretty=full

echo -e "\n=== Checking for any KnownMagic or Oracle references ==="
git show f2566dc92 | rg -i "magic|oracle|0xff7a" -C 2 | head -50

echo -e "\n=== Files changed in this commit ==="
git show --name-only --pretty="" f2566dc92

echo -e "\n=== Checking parent commit ==="
git show f2566dc92^:. 2>/dev/null | head -5 || echo "Cannot access parent"

echo -e "\n=== Recent branch info ==="
git branch -a | head -10
git log --oneline -n 10

echo -e "\n=== Checking for any SignedContext references (broader search) ==="
rg -i "signedcontext" --type rust . 2>/dev/null || echo "No SignedContext found"

Repository: rainlanguage/rain.orderbook

Length of output: 50384


Submodule points to feature branch with incomplete functionality—SignedContextOracleV1 support not found.

The commit message claims to add SignedContextOracleV1 metadata support, but verification found no trace of SignedContextOracleV1 or its associated magic value (0xff7a1507ba4419ca) in the current submodule commit. The submodule points to a feature branch (feat/signed-context-oracle-meta-submodule), which may indicate this is part of an incomplete PR chain pending the merge of rain.metadata PR #92. Clarify whether this incomplete state is expected, or if the promised functionality is missing from the submodule commit.

🤖 Prompt for AI Agents
In `@lib/rain.interpreter` at line 1, The submodule commit referenced by the PR is
missing the SignedContextOracleV1 implementation and its magic constant
(0xff7a1507ba4419ca); update the submodule pointer to the commit/branch that
actually contains SignedContextOracleV1 or remove/adjust the commit message and
code that claim to add it. Specifically, either: 1) change the submodule
reference to the commit that implements SignedContextOracleV1 and exposes the
magic value, or 2) if that implementation belongs in a separate PR
(rain.metadata PR `#92`), revert the claims and any code paths expecting
SignedContextOracleV1 (look for references to SignedContextOracleV1 and the
magic value) and add a TODO linking to the pending PR. Also add a short unit
test or sanity check that asserts the magic value (0xff7a1507ba4419ca) and
SignedContextOracleV1 type are present after the submodule update so future
reviews can verify the support.

Matches rename in rain.metadata#92. The metadata type is specific to
the Raindex calculateOrderIO entrypoint.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@crates/common/src/raindex_client/orders.rs`:
- Around line 275-282: The getter oracle_url() currently extracts the oracle
string by accessing the tuple field oracle.0; change this to call the accessor
oracle.url() instead (i.e., when matching
ParsedMeta::RaindexSignedContextOracleV1(oracle) return Some(oracle.url())), and
make the identical change in the non-WASM implementation(s) that also use
oracle.0 (see the other occurrence around the
ParsedMeta::RaindexSignedContextOracleV1 match at lines mentioned in the
review); this keeps behavior consistent with parsed_meta.rs tests and resilient
to upstream struct changes.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@lib/rain.interpreter`:
- Line 1: CI is failing because git submodule fetch requires authentication;
update submodule access in one of two ways: either make the submodule URL public
in .gitmodules (replace SSH/private URL with a public HTTPS GitHub URL) so git
submodule update works without credentials, or modify the CI workflow (e.g., the
GitHub Actions workflow file under .github/workflows) to provide credentials by
exporting/using GITHUB_TOKEN and configuring git to use it before running git
submodule update (ensure actions/checkout uses submodules: true or run git
config credential.helper and set remote URL with the token). Choose one approach
and update the .gitmodules or the workflow to fix submodule access for CI.

---

Duplicate comments:
In `@lib/rain.interpreter`:
- Line 1: Check that the referenced submodule commit
55a78efc8f1aabbd398264f34c1c949688470951 actually adds the SignedContextOracleV1
symbol and the magic constant 0xff7a1507ba4419ca by inspecting the commit diff
or files; run git show or git diff on that commit and grep for
"SignedContextOracleV1" and "0xff7a1507ba4419ca", or open the source files that
define or register oracles/constants and confirm those identifiers are present,
then report back or update the submodule pointer only if both identifiers are
found.

@@ -1 +1 @@
Subproject commit c11023d69e745fb4aa76366918dd89d672c68616
Subproject commit 55a78efc8f1aabbd398264f34c1c949688470951
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Submodule fetch requires auth; fix CI/submodule access.

CI failed with git submodule update due to missing GitHub credentials. Ensure the submodule URL is publicly accessible for CI or provide GITHUB_TOKEN/auth for submodule fetch so pipeline stays green.

🧰 Tools
🪛 GitHub Actions: Git is clean

[error] 1-1: Command failed: git submodule update --init --force --recursive. Error: could not read Username for 'https://github.com': terminal prompts disabled.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/rain.interpreter` at line 1, CI is failing because git submodule fetch
requires authentication; update submodule access in one of two ways: either make
the submodule URL public in .gitmodules (replace SSH/private URL with a public
HTTPS GitHub URL) so git submodule update works without credentials, or modify
the CI workflow (e.g., the GitHub Actions workflow file under .github/workflows)
to provide credentials by exporting/using GITHUB_TOKEN and configuring git to
use it before running git submodule update (ensure actions/checkout uses
submodules: true or run git config credential.helper and set remote URL with the
token). Choose one approach and update the .gitmodules or the workflow to fix
submodule access for CI.

@hardyjosh hardyjosh self-assigned this Feb 23, 2026
@hardyjosh hardyjosh merged commit fda8f21 into main Mar 6, 2026
19 checks passed
@github-actions
Copy link
Contributor

github-actions bot commented Mar 6, 2026

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

coderabbitai bot commented Mar 6, 2026

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.

hardyjosh pushed a commit that referenced this pull request Mar 11, 2026
Brings the oracle signed context feature into main via a fresh branch.
Includes all phases of the oracle feature:

**Phase 6**: Parse oracle-url from dotrain YAML order config and encode it as RaindexSignedContextOracleV1 metadata when deploying orders

**Phase 7**: extractOracleUrl static method on RaindexOrder

**Phase 3**: Oracle fetch module - fetches signed context from oracle URL

**Phase 4**: Frontend UI - shows oracle info on order detail page

**Quote flow**: Wire signed context into quote simulation

Changes made:
- Added oracle module to quote crate with fetch functionality
- Added oracle-url field to order YAML config parsing
- Updated add_order to encode oracle metadata when deploying orders
- Added oracle_url() getter and extract_oracle_url() static method to RaindexOrder
- Updated quote generation to fetch oracle context automatically
- Updated take order flow to use oracle context from candidates
- Added oracle URL display to frontend order detail page
- Updated all test cases to include oracle_url field

Phase 2 (RaindexSignedContextOracleV1 type) was already in main via PR #2457.
hardyjosh pushed a commit that referenced this pull request Mar 11, 2026
Brings the oracle signed context feature into main via a fresh branch.
Includes all phases of the oracle feature:

**Phase 6**: Parse oracle-url from dotrain YAML order config and encode it as RaindexSignedContextOracleV1 metadata when deploying orders

**Phase 7**: extractOracleUrl static method on RaindexOrder

**Phase 3**: Oracle fetch module - fetches signed context from oracle URL

**Phase 4**: Frontend UI - shows oracle info on order detail page

**Quote flow**: Wire signed context into quote simulation

Changes made:
- Added oracle module to quote crate with fetch functionality
- Added oracle-url field to order YAML config parsing
- Updated add_order to encode oracle metadata when deploying orders
- Added oracle_url() getter and extract_oracle_url() static method to RaindexOrder
- Updated quote generation to fetch oracle context automatically
- Updated take order flow to use oracle context from candidates
- Added oracle URL display to frontend order detail page
- Updated all test cases to include oracle_url field

Phase 2 (RaindexSignedContextOracleV1 type) was already in main via PR #2457.
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