Skip to content

feat: optimize processing, caching, and scope identity#25

Merged
piotr-blue merged 5 commits into
nextfrom
feature/optimalization
Jul 21, 2026
Merged

feat: optimize processing, caching, and scope identity#25
piotr-blue merged 5 commits into
nextfrom
feature/optimalization

Conversation

@piotr-blue

Copy link
Copy Markdown
Contributor

Summary

  • adds bounded cache policies and lifecycle ownership
  • introduces immutable patch and snapshot processing
  • adds conservative incremental resolution
  • fixes selected-scope initialization Content BlueId
  • strengthens provider verification and deterministic errors
  • expands concurrency, identity, and regression coverage

Verification

  • 1,502 tests passing
  • Java 8-compatible bytecode
  • full Gradle build passing

Known release follow-ups

  • synchronize the two disputed Contracts fixtures through blue-spec
  • review newly exposed public APIs
  • complete the RC reproducibility gate

Introduced a `verify-release-readiness.js` script to validate release candidate readiness against performance reports. Added `FrozenCanonicalDigestBenchmark` to benchmark identity calculations for frozen nodes. Implemented `IncrementalMergingProcessorCapability`, `FrozenJsonPatch`, `PatchImpact`, and `PatchImpactAnalyzer` to enhance processing and patch impact evaluation capabilities.
Added `IncrementalValueResolutionRequest` and expanded `IncrementalMergingProcessorCapability` to support resolution-aware merging. Introduced `PatchSource` attribution and new patch impact handling for processor-managed states. Enhanced conformance checks and metrics tracking for incremental resolutions. Updated tests to validate snapshot and patch workflows.
Introduced a helper method to fetch the `blueId` of a canonicalized node by pointer, enhancing readability and utility of snapshot queries.
Added configurable cache policies with predefined profiles (`lowMemoryDefaults`, `highThroughputDefaults`, `boundedDefaults`, `disabled`) to tailor runtime caching behavior. Enhanced stats reporting for eviction and oversized rejections. Updated tests and documentation to reflect these changes.
…t handling

Added `RegisteredContractScopeIdentitySnapshotManager`, `ScopeIdentityErrorMapper`, and `ScopeSourceProjection` to enhance processing and snapshot management for Blue language's scope identity operations. Included corresponding tests to validate functionality.
@cursor

cursor Bot commented Jul 21, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@piotr-blue
piotr-blue merged commit c002ece into next Jul 21, 2026
1 check passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8810301b32

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

throw new Error('RELEASE_VERSION is required');
}

const summary = JSON.parse(fs.readFileSync(REPORT, 'utf8'));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Provide the release-readiness report before reading it

In the RC workflow this script is run immediately after prepare-rc-release; I checked the repository and there is no docs/performance/results/order-scale-language-summary.json or earlier workflow step that generates it, so readFileSync throws ENOENT on every RC run before the build or publish can proceed. Add/generate the report in the workflow, or make this check consume an artifact that is actually present.

Useful? React with 👍 / 👎.

Comment on lines +110 to +112
if (value instanceof BigDecimal) {
writeNumber(((BigDecimal) value).doubleValue(), sink);
return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Preserve exact BigDecimal precision in canonical hashes

When a schema numeric field such as minimum/maximum contains a BigDecimal that is not exactly representable as binary64, the optimized frozen digester hashes the rounded double here; the existing generic Jackson/JCS path preserves the decimal value, and the new validation admits plain schema values onto the streaming path, so affected documents get different Content BlueIds after this change. Use exact BigDecimal canonicalization or fall back for decimals that would round.

Useful? React with 👍 / 👎.

runs-on: ubuntu-latest
env:
CI: true
BLUE_RELEASE_CHANNEL: stable

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Prepare a stable version before forcing the stable channel

When this manual release workflow runs from the current checkout, .cz.toml still contains 3.1.0-rc.15, but every Gradle command inherits BLUE_RELEASE_CHANNEL=stable; the new build.gradle guard rejects any version that is not plain x.y.z, so the first build step fails before publish or JReleaser can run. Add a stable-version preparation step, pass -PreleaseVersion, or avoid setting the stable channel until the version has been promoted.

Useful? React with 👍 / 👎.

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