Skip to content

Let callers read what an OpenAPI Description declares about itself - #2929

Merged
jviotti merged 5 commits into
mainfrom
openapi-5
Oct 5, 2026
Merged

jviotti merged 5 commits into
mainfrom
openapi-5

Conversation

@jviotti

@jviotti jviotti commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Signed-off-by: Juan Cruz Viotti [email protected]

Review in cubic

@augmentcode

augmentcode Bot commented Oct 4, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Adds lightweight APIs for reading what an OpenAPI Description declares without framing it.

  • Exposes openapi_version_string to read the original version string.
  • Preserves unsupported revisions, patch components, and prerelease suffixes.
  • Adds openapi_is_document to detect string-valued version declarations.
  • Adds openapi_base to calculate the document's effective base URI.
  • Canonicalises retrieval URIs and resolves OpenAPI 3.2 $self references.
  • Falls back to the retrieval base when $self cannot establish one.
  • Shares self-identifier resolution between framing and the new accessor.
  • Retains presence-only detection internally to preserve malformed-document diagnostics.
  • Adds tests for version introspection, document detection, and base-URI edge cases.

🤖 Was this summary useful? React with 👍 or 👎

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

Review completed. 1 suggestion posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread src/core/openapi/frame.cc
return base;
}

auto established{openapi_document_base(self->to_string(), base)};

@augmentcode augmentcode Bot Oct 4, 2026 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Could you check openapi_base's error-attribution contract at src/core/openapi/frame.cc:522 for a 3.2 document with a valid $self and an unknown root member such as "typo": true? openapi_check_document rejects unknown fields before applying $self (src/core/openapi/document.h:362–364), so its OpenAPIError::base() is the retrieval URI while this returns $self, causing the documented comparison to misclassify an entry-document error as external.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Signed-off-by: Juan Cruz Viotti <[email protected]>

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread src/core/openapi/include/sourcemeta/core/openapi.h Outdated
Comment thread src/core/openapi/frame.cc

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread src/core/openapi/include/sourcemeta/core/openapi.h Outdated
@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Benchmark linux/llvm

Measured against main at 783d664.

6 slower, 6 faster, 98 within 5%.

Benchmark main This branch Change
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 10.58 ns 14.94 ns +41.2%
JSON_String_Key_Hash_100 6.54 ns 9.02 ns +38.1%
JSON_String_Key_Hash_10 2.18 ns 2.60 ns +19.1%
JSON_Number_To_Double 12.79 ns 14.96 ns +17.0%
Pointer_Push_Back_Pointer_To_Weak_Pointer 146.56 ns 167.98 ns +14.6%
JSON_Divisible_By_Decimal 450.27 ns 479.76 ns +6.6%
Schema_Frame_Many_Resources_References 143.19 ms 135.95 ms -5.1%
URITemplateRouterView_Match 146.64 ns 138.82 ns -5.3%
JSON_String_Equal_10 6.85 ns 6.23 ns -9.0%
Schema_Frame_KrakenD_References 17.79 ms 15.48 ms -13.0%
JSON_Array_Of_Strings_Unique_Colliding_256 256.99 us 215.90 us -16.0%
Pointer_Walker_Schema_ISO_Language 2.15 ms 1.69 ms -21.4%
All 110 benchmarks
Benchmark main This branch Change
Regex_Lower_S_Or_Upper_S_Asterisk 2.80 ns 2.80 ns -0.1%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.80 ns 2.80 ns +0.1%
Regex_Period_Asterisk 2.49 ns 2.49 ns +0.1%
Regex_Group_Period_Asterisk_Group 2.49 ns 2.49 ns +0.0%
Regex_Period_Plus 3.42 ns 3.42 ns +0.0%
Regex_Period 3.42 ns 3.42 ns +0.0%
Regex_Caret_Period_Plus_Dollar 3.11 ns 3.11 ns +0.0%
Regex_Caret_Group_Period_Plus_Group_Dollar 3.11 ns 3.11 ns +0.0%
Regex_Caret_Period_Asterisk_Dollar 4.05 ns 4.04 ns -0.0%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.05 ns 4.04 ns -0.0%
Regex_Caret_X_Hyphen 7.19 ns 7.17 ns -0.3%
Regex_Period_Md_Dollar 27.20 ns 27.17 ns -0.1%
Regex_Caret_Slash_Period_Asterisk 7.82 ns 7.78 ns -0.6%
Regex_Caret_Period_Range_Dollar 4.70 ns 4.67 ns -0.6%
Regex_Nested_Backtrack 38.53 ns 38.89 ns +0.9%
JSON_Array_Of_Objects_Unique 427.81 ns 417.75 ns -2.4%
JSON_Array_Of_Integers_Unique_256 4.98 us 5.11 us +2.7%
JSON_Array_Of_Strings_Unique_Colliding_256 256.99 us 215.90 us -16.0%
JSON_Parse_1 4.53 us 4.45 us -1.8%
JSON_Parse_Real 4.61 us 4.69 us +1.7%
JSON_Parse_Decimal 7.34 us 7.48 us +1.9%
JSON_Parse_Schema_ISO_Language 3.31 ms 3.29 ms -0.7%
JSON_Parse_Integer 3.74 us 3.69 us -1.4%
JSON_Parse_String_NonSSO_Plain 3.09 us 3.01 us -2.4%
JSON_Parse_String_SSO_Plain 2.70 us 2.66 us -1.7%
JSON_Parse_String_Escape_Heavy 12.18 us 12.15 us -0.2%
JSON_Parse_Object_Short_Keys 7.68 us 7.89 us +2.7%
JSON_Parse_Object_Scalar_Properties 3.92 us 4.02 us +2.7%
JSON_Parse_Object_Array_Properties 5.32 us 5.38 us +1.1%
JSON_Parse_Object_Object_Properties 5.30 us 5.27 us -0.6%
JSON_Parse_Nested_Containers 34.95 us 34.96 us +0.0%
JSON_Fast_Hash_Helm_Chart_Lock 66.02 ns 65.95 ns -0.1%
JSON_Equality_Helm_Chart_Lock 156.45 ns 157.95 ns +1.0%
JSON_String_Equal_10 6.85 ns 6.23 ns -9.0%
JSON_String_Equal_100 7.18 ns 6.85 ns -4.5%
JSON_String_Equal_Small_By_Perfect_Hash_10 0.93 ns 0.93 ns +0.0%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 10.58 ns 14.94 ns +41.2%
JSON_String_Fast_Hash_10 2.80 ns 2.80 ns +0.0%
JSON_String_Fast_Hash_100 2.80 ns 2.80 ns -0.0%
JSON_String_Key_Hash_10 2.18 ns 2.60 ns +19.1%
JSON_String_Key_Hash_100 6.54 ns 9.02 ns +38.1%
JSON_Object_Defines_Miss_Same_Length 3.42 ns 3.42 ns +0.0%
JSON_Object_Defines_Miss_Too_Small 3.00 ns 3.01 ns +0.3%
JSON_Object_Defines_Miss_Too_Large 2.67 ns 2.77 ns +3.7%
JSON_From_String_Copy 11.02 ns 11.04 ns +0.2%
JSON_From_String_Temporary 10.14 ns 10.18 ns +0.4%
JSON_Number_To_Double 12.79 ns 14.96 ns +17.0%
JSON_Object_At_Last_Key_8 3.81 ns 3.82 ns +0.4%
JSON_Object_At_Last_Key_32 12.29 ns 12.31 ns +0.2%
JSON_Object_At_Last_Key_128 87.44 ns 87.68 ns +0.3%
JSON_Object_At_Last_Key_512 390.56 ns 390.72 ns +0.0%
JSON_Divisible_By_Decimal 450.27 ns 479.76 ns +6.6%
JSON_PropertySet_Contains 53.91 ns 53.76 ns -0.3%
JSON_PropertySet_Filter_Object_Properties 39.78 ns 39.20 ns -1.4%
JSON_PropertySet_Insert 578.02 ns 581.31 ns +0.6%
JSON_Stringify_Schema_Web_Of_Things 64.18 us 64.11 us -0.1%
JSON_Prettify_Schema_Web_Of_Things 179.34 us 182.50 us +1.8%
Pointer_Object_Traverse 28.48 ns 28.38 ns -0.4%
Pointer_Object_Try_Traverse 33.59 ns 33.63 ns +0.1%
Pointer_Push_Back_Pointer_To_Weak_Pointer 146.56 ns 167.98 ns +14.6%
Pointer_Walker_Schema_ISO_Language 2.15 ms 1.69 ms -21.4%
Pointer_Untracked_Deeply_Nested 1.23 ms 1.23 ms +0.4%
Pointer_Tracked_Deeply_Nested 1.59 ms 1.61 ms +1.3%
Pointer_Position_Tracker_Get_Deeply_Nested 615.48 ns 614.67 ns -0.1%
Schema_Tracker_ISO_Language 4.42 ms 4.63 ms +4.8%
Schema_Tracker_ISO_Language_To_JSON 16.69 ms 16.68 ms -0.1%
Schema_Frame_WoT_References 2.03 ms 2.04 ms +0.7%
Schema_Frame_OMC_References 9.76 ms 9.32 ms -4.6%
Schema_Frame_OMC_Pointers 18.33 ms 17.45 ms -4.8%
Schema_Frame_OMC_Locations 8.38 ms 8.17 ms -2.5%
Schema_Frame_ISO_Language_Locations 42.87 ms 41.17 ms -4.0%
Schema_Frame_ISO_Language_Root 295.80 ns 286.89 ns -3.0%
Schema_Frame_KrakenD_References 17.79 ms 15.48 ms -13.0%
Schema_Frame_KrakenD_Reachable 159.05 ms 155.30 ms -2.4%
Schema_Frame_ISO_Language_Locations_To_JSON 33.22 ms 32.46 ms -2.3%
Schema_Frame_Many_Resources_References 143.19 ms 135.95 ms -5.1%
Schema_Frame_Deeply_Nested_References 11.76 ms 11.45 ms -2.6%
Schema_Format_ISO_Language 48.77 ms 47.39 ms -2.8%
Schema_Bundle_Meta_2020_12 562.07 us 570.62 us +1.5%
Schema_Bundle_Many_Remotes_With_Fragments 6.61 ms 6.56 ms -0.9%
OpenAPI_Format_Synthetic_3_1 51.84 ms 51.18 ms -1.3%
JSONPath_Descendant_Filter_Nested 1.55 us 1.54 us -0.6%
URITemplateRouter_Create 23.69 us 23.54 us -0.6%
URITemplateRouter_Match 177.97 ns 171.71 ns -3.5%
URITemplateRouterView_Restore 8.59 us 8.53 us -0.7%
URITemplateRouterView_Match 146.64 ns 138.82 ns -5.3%
URITemplateRouterView_Arguments 437.82 ns 440.32 ns +0.6%
URITemplateRouter_Match_BasePath 199.09 ns 193.60 ns -2.8%
URITemplateRouterView_Match_BasePath 165.20 ns 157.00 ns -5.0%
JSONL_Parse_Large 9.18 ms 9.07 ms -1.2%
JSONL_Parse_Large_GZIP 9.35 ms 9.21 ms -1.5%
JSONLD_Catalog_Annotation_List_Populate 604.93 us 602.83 us -0.3%
JSONLD_Catalog_Materialize 4.04 ms 4.18 ms +3.3%
HTML_Build_Table_100000 38.54 ms 38.41 ms -0.3%
HTML_Render_Table_100000 2.09 ms 2.12 ms +1.5%
Markdown_To_HTML_Realistic_Document 4.27 ms 4.20 ms -1.6%
Markdown_To_HTML_Pathological 13.16 ms 13.36 ms +1.6%
Markdown_To_HTML_Short_Descriptions 574.42 ns 562.48 ns -2.1%
GZIP_Compress_ISO_Language_Set_3_Locations 37.59 ms 37.61 ms +0.0%
GZIP_Decompress_ISO_Language_Set_3_Locations 5.20 ms 5.14 ms -1.1%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 7.11 ms 7.10 ms -0.2%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 10.13 ms 9.97 ms -1.6%
GZIP_Compress_ISO_Language_Set_3_Schema 2.22 ms 2.23 ms +0.6%
GZIP_Decompress_ISO_Language_Set_3_Schema 427.80 us 425.40 us -0.6%
JOSE_VerifySignature_RS256 46.89 us 48.54 us +3.5%
JOSE_VerifySignature_ES512 1.72 ms 1.76 ms +2.4%
Crypto_CRC32_Large_JSONL 101.58 us 101.66 us +0.1%
Crypto_AES_GCM_Encrypt_128_1KB 31.30 us 31.32 us +0.1%
Crypto_AES_GCM_Decrypt_128_1KB 31.25 us 31.30 us +0.2%
Crypto_AES_GCM_Encrypt_256_1KB 38.06 us 38.08 us +0.0%

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Benchmark windows/msvc

Measured against main at 783d664.

1 slower, 4 faster, 105 within 5%.

Benchmark main This branch Change
Pointer_Push_Back_Pointer_To_Weak_Pointer 163.75 ns 192.72 ns +17.7%
Schema_Frame_ISO_Language_Root 2.32 us 2.20 us -5.2%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 15.04 ns 14.21 ns -5.6%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 15.66 ms 14.65 ms -6.4%
Pointer_Position_Tracker_Get_Deeply_Nested 597.32 ns 540.61 ns -9.5%
All 110 benchmarks
Benchmark main This branch Change
Regex_Lower_S_Or_Upper_S_Asterisk 4.72 ns 4.72 ns +0.1%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 4.76 ns 4.71 ns -1.0%
Regex_Period_Asterisk 4.94 ns 4.71 ns -4.6%
Regex_Group_Period_Asterisk_Group 4.80 ns 4.71 ns -2.0%
Regex_Period_Plus 4.64 ns 4.60 ns -0.8%
Regex_Period 4.46 ns 4.45 ns -0.2%
Regex_Caret_Period_Plus_Dollar 4.69 ns 4.60 ns -1.9%
Regex_Caret_Group_Period_Plus_Group_Dollar 4.46 ns 4.44 ns -0.4%
Regex_Caret_Period_Asterisk_Dollar 4.70 ns 4.70 ns -0.1%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.71 ns 4.71 ns -0.1%
Regex_Caret_X_Hyphen 7.87 ns 7.83 ns -0.4%
Regex_Period_Md_Dollar 46.81 ns 46.86 ns +0.1%
Regex_Caret_Slash_Period_Asterisk 7.54 ns 7.54 ns -0.0%
Regex_Caret_Period_Range_Dollar 5.33 ns 5.33 ns +0.1%
Regex_Nested_Backtrack 58.13 ns 57.92 ns -0.3%
JSON_Array_Of_Objects_Unique 538.22 ns 544.71 ns +1.2%
JSON_Array_Of_Integers_Unique_256 4.43 us 4.45 us +0.4%
JSON_Array_Of_Strings_Unique_Colliding_256 300.48 us 300.00 us -0.2%
JSON_Parse_1 8.46 us 8.45 us -0.1%
JSON_Parse_Real 8.94 us 8.89 us -0.5%
JSON_Parse_Decimal 11.90 us 12.09 us +1.6%
JSON_Parse_Schema_ISO_Language 7.57 ms 7.56 ms -0.1%
JSON_Parse_Integer 6.41 us 6.42 us +0.1%
JSON_Parse_String_NonSSO_Plain 7.80 us 7.85 us +0.6%
JSON_Parse_String_SSO_Plain 3.77 us 3.73 us -1.0%
JSON_Parse_String_Escape_Heavy 21.89 us 21.92 us +0.2%
JSON_Parse_Object_Short_Keys 13.35 us 13.35 us +0.0%
JSON_Parse_Object_Scalar_Properties 6.87 us 6.84 us -0.4%
JSON_Parse_Object_Array_Properties 11.40 us 11.48 us +0.7%
JSON_Parse_Object_Object_Properties 11.52 us 11.70 us +1.6%
JSON_Parse_Nested_Containers 82.04 us 81.52 us -0.6%
JSON_Fast_Hash_Helm_Chart_Lock 109.64 ns 104.54 ns -4.7%
JSON_Equality_Helm_Chart_Lock 215.89 ns 217.96 ns +1.0%
JSON_String_Equal_10 10.44 ns 10.64 ns +1.9%
JSON_String_Equal_100 11.68 ns 11.81 ns +1.1%
JSON_String_Equal_Small_By_Perfect_Hash_10 2.19 ns 2.19 ns +0.0%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 15.04 ns 14.21 ns -5.6%
JSON_String_Fast_Hash_10 6.37 ns 6.33 ns -0.7%
JSON_String_Fast_Hash_100 6.37 ns 6.58 ns +3.3%
JSON_String_Key_Hash_10 5.02 ns 5.02 ns -0.0%
JSON_String_Key_Hash_100 11.87 ns 11.87 ns -0.1%
JSON_Object_Defines_Miss_Same_Length 3.46 ns 3.45 ns -0.4%
JSON_Object_Defines_Miss_Too_Small 4.09 ns 4.09 ns -0.0%
JSON_Object_Defines_Miss_Too_Large 4.09 ns 4.08 ns -0.1%
JSON_From_String_Copy 63.89 ns 63.91 ns +0.0%
JSON_From_String_Temporary 57.73 ns 59.39 ns +2.9%
JSON_Number_To_Double 40.81 ns 40.72 ns -0.2%
JSON_Object_At_Last_Key_8 7.23 ns 7.23 ns +0.1%
JSON_Object_At_Last_Key_32 22.61 ns 22.87 ns +1.2%
JSON_Object_At_Last_Key_128 88.77 ns 89.07 ns +0.3%
JSON_Object_At_Last_Key_512 424.97 ns 423.59 ns -0.3%
JSON_Divisible_By_Decimal 584.69 ns 586.18 ns +0.3%
JSON_PropertySet_Contains 77.76 ns 77.87 ns +0.1%
JSON_PropertySet_Filter_Object_Properties 48.39 ns 48.85 ns +0.9%
JSON_PropertySet_Insert 1.63 us 1.58 us -3.0%
JSON_Stringify_Schema_Web_Of_Things 228.84 us 228.64 us -0.1%
JSON_Prettify_Schema_Web_Of_Things 718.41 us 719.74 us +0.2%
Pointer_Object_Traverse 66.46 ns 66.64 ns +0.3%
Pointer_Object_Try_Traverse 73.88 ns 73.64 ns -0.3%
Pointer_Push_Back_Pointer_To_Weak_Pointer 163.75 ns 192.72 ns +17.7%
Pointer_Walker_Schema_ISO_Language 11.22 ms 10.89 ms -3.0%
Pointer_Untracked_Deeply_Nested 2.46 ms 2.53 ms +2.9%
Pointer_Tracked_Deeply_Nested 3.75 ms 3.72 ms -0.9%
Pointer_Position_Tracker_Get_Deeply_Nested 597.32 ns 540.61 ns -9.5%
Schema_Tracker_ISO_Language 10.79 ms 10.52 ms -2.5%
Schema_Tracker_ISO_Language_To_JSON 62.77 ms 61.98 ms -1.3%
Schema_Frame_WoT_References 5.17 ms 5.18 ms +0.1%
Schema_Frame_OMC_References 22.39 ms 22.26 ms -0.6%
Schema_Frame_OMC_Pointers 41.63 ms 41.19 ms -1.0%
Schema_Frame_OMC_Locations 19.02 ms 18.75 ms -1.4%
Schema_Frame_ISO_Language_Locations 77.36 ms 80.10 ms +3.5%
Schema_Frame_ISO_Language_Root 2.32 us 2.20 us -5.2%
Schema_Frame_KrakenD_References 37.73 ms 38.88 ms +3.1%
Schema_Frame_KrakenD_Reachable 298.62 ms 299.25 ms +0.2%
Schema_Frame_ISO_Language_Locations_To_JSON 159.41 ms 159.91 ms +0.3%
Schema_Frame_Many_Resources_References 697.04 ms 685.93 ms -1.6%
Schema_Frame_Deeply_Nested_References 22.52 ms 23.55 ms +4.5%
Schema_Format_ISO_Language 83.39 ms 87.14 ms +4.5%
Schema_Bundle_Meta_2020_12 1.41 ms 1.42 ms +0.5%
Schema_Bundle_Many_Remotes_With_Fragments 29.05 ms 29.30 ms +0.9%
OpenAPI_Format_Synthetic_3_1 118.68 ms 117.58 ms -0.9%
JSONPath_Descendant_Filter_Nested 2.41 us 2.41 us +0.2%
URITemplateRouter_Create 39.52 us 39.15 us -0.9%
URITemplateRouter_Match 232.61 ns 234.07 ns +0.6%
URITemplateRouterView_Restore 33.51 us 32.56 us -2.8%
URITemplateRouterView_Match 213.02 ns 213.22 ns +0.1%
URITemplateRouterView_Arguments 547.67 ns 545.88 ns -0.3%
URITemplateRouter_Match_BasePath 263.25 ns 266.44 ns +1.2%
URITemplateRouterView_Match_BasePath 241.98 ns 242.11 ns +0.1%
JSONL_Parse_Large 32.32 ms 31.68 ms -2.0%
JSONL_Parse_Large_GZIP 30.94 ms 30.52 ms -1.4%
JSONLD_Catalog_Annotation_List_Populate 2.99 ms 2.96 ms -1.0%
JSONLD_Catalog_Materialize 7.79 ms 7.87 ms +1.1%
HTML_Build_Table_100000 67.95 ms 68.07 ms +0.2%
HTML_Render_Table_100000 8.33 ms 8.08 ms -3.0%
Markdown_To_HTML_Realistic_Document 5.70 ms 5.66 ms -0.8%
Markdown_To_HTML_Pathological 17.84 ms 18.08 ms +1.4%
Markdown_To_HTML_Short_Descriptions 714.83 ns 705.78 ns -1.3%
GZIP_Compress_ISO_Language_Set_3_Locations 37.72 ms 37.87 ms +0.4%
GZIP_Decompress_ISO_Language_Set_3_Locations 9.70 ms 9.54 ms -1.7%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 12.03 ms 11.95 ms -0.7%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 15.66 ms 14.65 ms -6.4%
GZIP_Compress_ISO_Language_Set_3_Schema 2.31 ms 2.30 ms -0.4%
GZIP_Decompress_ISO_Language_Set_3_Schema 655.13 us 630.77 us -3.7%
JOSE_VerifySignature_RS256 21.26 us 21.29 us +0.1%
JOSE_VerifySignature_ES512 1.37 ms 1.36 ms -0.3%
Crypto_CRC32_Large_JSONL 103.50 us 102.97 us -0.5%
Crypto_AES_GCM_Encrypt_128_1KB 2.36 us 2.36 us +0.2%
Crypto_AES_GCM_Decrypt_128_1KB 2.38 us 2.38 us -0.0%
Crypto_AES_GCM_Encrypt_256_1KB 2.42 us 2.43 us +0.4%

@cubic-dev-ai cubic-dev-ai 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.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/core/openapi/include/sourcemeta/core/openapi.h">

<violation number="1" location="src/core/openapi/include/sourcemeta/core/openapi.h:116">
P2: `openapi_is_document` returns true for `{"openapi":""}`, so it only detects a string-valued root field; it does not establish that the value is an OpenAPI Description. Describe it as a discriminator rather than a validity check.</violation>
</file>

Requires human review: Auto-approval blocked because this review re-detected 3 unresolved issues already reported by Cubic.

Re-trigger cubic

Comment on lines +116 to +117
/// Whether a value is an OpenAPI Description at all, whichever revision it
/// declares, which is what tells one from a schema. For example:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: openapi_is_document returns true for {"openapi":""}, so it only detects a string-valued root field; it does not establish that the value is an OpenAPI Description. Describe it as a discriminator rather than a validity check.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At src/core/openapi/include/sourcemeta/core/openapi.h, line 116:

<comment>`openapi_is_document` returns true for `{"openapi":""}`, so it only detects a string-valued root field; it does not establish that the value is an OpenAPI Description. Describe it as a discriminator rather than a validity check.</comment>

<file context>
@@ -87,6 +87,83 @@ SOURCEMETA_CORE_OPENAPI_EXPORT
+    -> std::optional<JSON::StringView>;
+
+/// @ingroup openapi
+/// Whether a value is an OpenAPI Description at all, whichever revision it
+/// declares, which is what tells one from a schema. For example:
+///
</file context>
Suggested change
/// Whether a value is an OpenAPI Description at all, whichever revision it
/// declares, which is what tells one from a schema. For example:
/// Whether a value has a string-valued root `openapi` field, including
/// unrecognised revision strings. For example:

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Benchmark linux/gcc

Measured against main at 783d664.

6 slower, 7 faster, 97 within 5%.

Benchmark main This branch Change
JSON_Object_Defines_Miss_Same_Length 2.80 ns 3.42 ns +22.2%
JSON_Parse_Object_Array_Properties 6.92 us 7.39 us +6.8%
JSON_Parse_String_Escape_Heavy 16.38 us 17.36 us +6.0%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 13.07 ns 13.83 ns +5.8%
Schema_Frame_ISO_Language_Locations 38.85 ms 41.09 ms +5.8%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 8.74 ms 9.24 ms +5.7%
JSON_String_Equal_100 6.35 ns 6.00 ns -5.5%
URITemplateRouterView_Match_BasePath 154.15 ns 142.31 ns -7.7%
Regex_Caret_Slash_Period_Asterisk 8.01 ns 7.08 ns -11.6%
JSON_Object_At_Last_Key_512 385.40 ns 317.30 ns -17.7%
JSON_Object_At_Last_Key_8 5.61 ns 3.82 ns -31.9%
JSON_Object_At_Last_Key_128 87.18 ns 48.58 ns -44.3%
JSON_Object_At_Last_Key_32 21.50 ns 11.87 ns -44.8%
All 110 benchmarks
Benchmark main This branch Change
Crypto_CRC32_Large_JSONL 101.48 us 101.41 us -0.1%
Crypto_AES_GCM_Encrypt_128_1KB 1.23 us 1.26 us +1.8%
Crypto_AES_GCM_Decrypt_128_1KB 1.21 us 1.23 us +1.4%
Crypto_AES_GCM_Encrypt_256_1KB 1.27 us 1.29 us +0.8%
JOSE_VerifySignature_RS256 22.24 us 22.20 us -0.2%
JOSE_VerifySignature_ES512 581.89 us 581.42 us -0.1%
GZIP_Compress_ISO_Language_Set_3_Locations 29.86 ms 30.14 ms +1.0%
GZIP_Decompress_ISO_Language_Set_3_Locations 5.16 ms 5.21 ms +1.1%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 7.27 ms 7.26 ms -0.2%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 8.74 ms 9.24 ms +5.7%
GZIP_Compress_ISO_Language_Set_3_Schema 2.04 ms 2.05 ms +0.6%
GZIP_Decompress_ISO_Language_Set_3_Schema 425.33 us 425.85 us +0.1%
Markdown_To_HTML_Realistic_Document 5.12 ms 5.24 ms +2.4%
Markdown_To_HTML_Pathological 13.49 ms 13.75 ms +1.9%
Markdown_To_HTML_Short_Descriptions 701.84 ns 701.29 ns -0.1%
HTML_Build_Table_100000 38.48 ms 39.00 ms +1.3%
HTML_Render_Table_100000 1.91 ms 1.92 ms +0.8%
JSONLD_Catalog_Annotation_List_Populate 754.39 us 718.02 us -4.8%
JSONLD_Catalog_Materialize 3.68 ms 3.63 ms -1.4%
JSONL_Parse_Large 10.27 ms 10.26 ms -0.1%
JSONL_Parse_Large_GZIP 10.48 ms 10.43 ms -0.5%
URITemplateRouter_Create 22.52 us 21.67 us -3.8%
URITemplateRouter_Match 156.04 ns 157.10 ns +0.7%
URITemplateRouterView_Restore 8.42 us 8.33 us -1.0%
URITemplateRouterView_Match 131.15 ns 128.95 ns -1.7%
URITemplateRouterView_Arguments 474.37 ns 472.91 ns -0.3%
URITemplateRouter_Match_BasePath 178.57 ns 182.80 ns +2.4%
URITemplateRouterView_Match_BasePath 154.15 ns 142.31 ns -7.7%
JSONPath_Descendant_Filter_Nested 1.71 us 1.69 us -1.5%
OpenAPI_Format_Synthetic_3_1 48.72 ms 49.85 ms +2.3%
Schema_Frame_WoT_References 2.29 ms 2.24 ms -2.1%
Schema_Frame_OMC_References 9.98 ms 9.82 ms -1.6%
Schema_Frame_OMC_Pointers 18.72 ms 18.30 ms -2.2%
Schema_Frame_OMC_Locations 8.60 ms 8.53 ms -0.9%
Schema_Frame_ISO_Language_Locations 38.85 ms 41.09 ms +5.8%
Schema_Frame_ISO_Language_Root 345.93 ns 329.39 ns -4.8%
Schema_Frame_KrakenD_References 15.68 ms 15.75 ms +0.5%
Schema_Frame_KrakenD_Reachable 143.14 ms 142.27 ms -0.6%
Schema_Frame_ISO_Language_Locations_To_JSON 32.83 ms 33.51 ms +2.1%
Schema_Frame_Many_Resources_References 137.63 ms 141.17 ms +2.6%
Schema_Frame_Deeply_Nested_References 10.68 ms 10.80 ms +1.1%
Schema_Format_ISO_Language 44.29 ms 45.97 ms +3.8%
Schema_Bundle_Meta_2020_12 655.32 us 646.28 us -1.4%
Schema_Bundle_Many_Remotes_With_Fragments 7.26 ms 7.15 ms -1.6%
Pointer_Object_Traverse 23.11 ns 23.26 ns +0.7%
Pointer_Object_Try_Traverse 24.52 ns 24.52 ns +0.0%
Pointer_Push_Back_Pointer_To_Weak_Pointer 129.93 ns 130.89 ns +0.7%
Pointer_Walker_Schema_ISO_Language 1.49 ms 1.49 ms +0.1%
Pointer_Untracked_Deeply_Nested 1.49 ms 1.49 ms +0.3%
Pointer_Tracked_Deeply_Nested 2.18 ms 2.25 ms +2.9%
Pointer_Position_Tracker_Get_Deeply_Nested 607.14 ns 612.41 ns +0.9%
Schema_Tracker_ISO_Language 4.93 ms 4.93 ms -0.0%
Schema_Tracker_ISO_Language_To_JSON 15.88 ms 15.53 ms -2.2%
JSON_Array_Of_Objects_Unique 450.67 ns 466.93 ns +3.6%
JSON_Array_Of_Integers_Unique_256 4.18 us 4.03 us -3.6%
JSON_Array_Of_Strings_Unique_Colliding_256 202.27 us 199.78 us -1.2%
JSON_Parse_1 5.61 us 5.62 us +0.1%
JSON_Parse_Real 5.55 us 5.65 us +1.6%
JSON_Parse_Decimal 10.16 us 10.25 us +0.9%
JSON_Parse_Schema_ISO_Language 3.82 ms 3.81 ms -0.3%
JSON_Parse_Integer 4.29 us 4.36 us +1.6%
JSON_Parse_String_NonSSO_Plain 3.74 us 3.82 us +2.1%
JSON_Parse_String_SSO_Plain 3.00 us 3.04 us +1.3%
JSON_Parse_String_Escape_Heavy 16.38 us 17.36 us +6.0%
JSON_Parse_Object_Short_Keys 11.00 us 11.10 us +0.9%
JSON_Parse_Object_Scalar_Properties 5.57 us 5.64 us +1.4%
JSON_Parse_Object_Array_Properties 6.92 us 7.39 us +6.8%
JSON_Parse_Object_Object_Properties 7.00 us 7.04 us +0.5%
JSON_Parse_Nested_Containers 43.02 us 43.37 us +0.8%
JSON_Fast_Hash_Helm_Chart_Lock 75.86 ns 75.48 ns -0.5%
JSON_Equality_Helm_Chart_Lock 170.67 ns 170.59 ns -0.0%
JSON_String_Equal_10 5.72 ns 5.69 ns -0.6%
JSON_String_Equal_100 6.35 ns 6.00 ns -5.5%
JSON_String_Equal_Small_By_Perfect_Hash_10 0.62 ns 0.62 ns +0.2%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 13.07 ns 13.83 ns +5.8%
JSON_String_Fast_Hash_10 3.15 ns 3.15 ns +0.0%
JSON_String_Fast_Hash_100 3.15 ns 3.15 ns -0.0%
JSON_String_Key_Hash_10 3.06 ns 2.92 ns -4.5%
JSON_String_Key_Hash_100 13.38 ns 13.38 ns -0.0%
JSON_Object_Defines_Miss_Same_Length 2.80 ns 3.42 ns +22.2%
JSON_Object_Defines_Miss_Too_Small 3.11 ns 3.11 ns +0.0%
JSON_Object_Defines_Miss_Too_Large 3.11 ns 3.11 ns -0.0%
JSON_From_String_Copy 9.27 ns 9.18 ns -1.0%
JSON_From_String_Temporary 8.44 ns 8.37 ns -0.9%
JSON_Number_To_Double 26.16 ns 26.58 ns +1.6%
JSON_Object_At_Last_Key_8 5.61 ns 3.82 ns -31.9%
JSON_Object_At_Last_Key_32 21.50 ns 11.87 ns -44.8%
JSON_Object_At_Last_Key_128 87.18 ns 48.58 ns -44.3%
JSON_Object_At_Last_Key_512 385.40 ns 317.30 ns -17.7%
JSON_Divisible_By_Decimal 613.66 ns 612.94 ns -0.1%
JSON_PropertySet_Contains 46.98 ns 48.30 ns +2.8%
JSON_PropertySet_Filter_Object_Properties 40.79 ns 40.03 ns -1.9%
JSON_PropertySet_Insert 510.76 ns 492.77 ns -3.5%
JSON_Stringify_Schema_Web_Of_Things 64.31 us 62.25 us -3.2%
JSON_Prettify_Schema_Web_Of_Things 175.04 us 174.12 us -0.5%
Regex_Lower_S_Or_Upper_S_Asterisk 2.10 ns 2.10 ns +0.0%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.02 ns 2.10 ns +3.9%
Regex_Period_Asterisk 2.10 ns 2.10 ns -0.1%
Regex_Group_Period_Asterisk_Group 2.10 ns 2.02 ns -3.7%
Regex_Period_Plus 2.10 ns 2.10 ns +0.0%
Regex_Period 2.02 ns 2.10 ns +3.8%
Regex_Caret_Period_Plus_Dollar 2.10 ns 2.10 ns -0.0%
Regex_Caret_Group_Period_Plus_Group_Dollar 2.10 ns 2.03 ns -3.6%
Regex_Caret_Period_Asterisk_Dollar 2.10 ns 2.10 ns +0.0%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.02 ns 2.10 ns +3.8%
Regex_Caret_X_Hyphen 6.46 ns 6.46 ns -0.0%
Regex_Period_Md_Dollar 30.53 ns 30.87 ns +1.1%
Regex_Caret_Slash_Period_Asterisk 8.01 ns 7.08 ns -11.6%
Regex_Caret_Period_Range_Dollar 3.27 ns 3.34 ns +2.4%
Regex_Nested_Backtrack 39.83 ns 39.31 ns -1.3%

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Benchmark macos/llvm

Measured against main at 783d664.

44 slower, 58 faster, 8 within 5%.

Benchmark main This branch Change
Regex_Caret_Period_Asterisk_Dollar 1.70 ns 2.34 ns +37.4%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.85 ns 2.46 ns +33.1%
JSON_Number_To_Double 9.52 ns 12.34 ns +29.6%
Regex_Caret_Group_Period_Plus_Group_Dollar 2.13 ns 2.70 ns +27.1%
Regex_Lower_S_Or_Upper_S_Asterisk 1.84 ns 2.30 ns +25.1%
JSON_Parse_Nested_Containers 21.77 us 27.23 us +25.1%
JSON_Equality_Helm_Chart_Lock 154.75 ns 193.51 ns +25.0%
Regex_Period_Md_Dollar 19.10 ns 23.85 ns +24.8%
JSON_Parse_Object_Scalar_Properties 2.57 us 3.15 us +22.6%
GZIP_Decompress_ISO_Language_Set_3_Schema 321.53 us 393.57 us +22.4%
JSON_Array_Of_Integers_Unique_256 4.42 us 5.41 us +22.3%
JSON_Fast_Hash_Helm_Chart_Lock 54.34 ns 66.33 ns +22.1%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.78 ns 2.17 ns +21.6%
Regex_Group_Period_Asterisk_Group 1.82 ns 2.20 ns +21.3%
Regex_Period_Asterisk 1.81 ns 2.18 ns +20.7%
Regex_Period_Plus 2.06 ns 2.49 ns +20.7%
JSON_Parse_Object_Array_Properties 3.06 us 3.69 us +20.5%
Regex_Period 2.12 ns 2.55 ns +20.3%
Regex_Caret_Period_Plus_Dollar 2.04 ns 2.45 ns +20.2%
JSON_Parse_Object_Object_Properties 3.11 us 3.74 us +20.2%
Regex_Nested_Backtrack 29.06 ns 34.64 ns +19.2%
JSON_Array_Of_Objects_Unique 374.23 ns 442.83 ns +18.3%
JSON_From_String_Temporary 6.24 ns 7.38 ns +18.2%
JSON_String_Fast_Hash_100 2.03 ns 2.38 ns +17.3%
Markdown_To_HTML_Realistic_Document 4.70 ms 5.51 ms +17.2%
JSON_String_Equal_100 6.96 ns 8.12 ns +16.7%
JSON_String_Equal_10 6.31 ns 7.32 ns +16.1%
JSON_Object_At_Last_Key_8 4.23 ns 4.91 ns +16.1%
JSON_Parse_String_SSO_Plain 1.65 us 1.88 us +13.7%
JSON_Parse_String_Escape_Heavy 16.05 us 17.98 us +12.0%
JSON_String_Fast_Hash_10 2.43 ns 2.70 ns +11.4%
JSON_Parse_Real 3.11 us 3.45 us +10.9%
JSON_Object_Defines_Miss_Too_Small 5.08 ns 5.59 ns +10.1%
JSON_Object_Defines_Miss_Too_Large 2.75 ns 3.03 ns +10.1%
JSON_Parse_String_NonSSO_Plain 3.00 us 3.30 us +9.9%
JSON_From_String_Copy 10.74 ns 11.77 ns +9.6%
JSON_Parse_Decimal 5.33 us 5.80 us +8.9%
Regex_Caret_X_Hyphen 6.79 ns 7.39 ns +8.7%
Crypto_AES_GCM_Decrypt_128_1KB 4.72 us 5.12 us +8.5%
Regex_Caret_Period_Range_Dollar 2.21 ns 2.39 ns +8.2%
JSON_Parse_1 3.14 us 3.38 us +7.4%
JSON_Parse_Object_Short_Keys 5.37 us 5.72 us +6.6%
JSON_Object_At_Last_Key_128 69.34 ns 73.70 ns +6.3%
GZIP_Compress_ISO_Language_Set_3_Schema 2.36 ms 2.47 ms +5.0%
JOSE_VerifySignature_RS256 25.64 us 24.30 us -5.2%
GZIP_Decompress_ISO_Language_Set_3_Locations 4.47 ms 4.21 ms -5.8%
JSON_String_Key_Hash_100 2.38 ns 2.24 ns -5.9%
Schema_Frame_KrakenD_References 19.74 ms 18.53 ms -6.1%
JSON_Stringify_Schema_Web_Of_Things 69.95 us 65.43 us -6.5%
Markdown_To_HTML_Pathological 15.10 ms 13.90 ms -8.0%
URITemplateRouterView_Restore 13.81 us 12.71 us -8.0%
JSON_PropertySet_Filter_Object_Properties 48.39 ns 44.36 ns -8.3%
OpenAPI_Format_Synthetic_3_1 57.30 ms 52.45 ms -8.5%
Schema_Frame_KrakenD_Reachable 237.69 ms 214.90 ms -9.6%
JSON_Object_At_Last_Key_32 16.61 ns 14.95 ns -10.0%
Pointer_Walker_Schema_ISO_Language 1.60 ms 1.44 ms -10.2%
URITemplateRouter_Match 218.91 ns 192.15 ns -12.2%
JOSE_VerifySignature_ES512 1.33 ms 1.16 ms -12.6%
Schema_Frame_ISO_Language_Locations_To_JSON 30.96 ms 27.05 ms -12.6%
URITemplateRouterView_Arguments 757.20 ns 660.87 ns -12.7%
JSON_PropertySet_Contains 70.23 ns 61.09 ns -13.0%
JSON_PropertySet_Insert 385.31 ns 332.10 ns -13.8%
Schema_Bundle_Meta_2020_12 546.20 us 468.27 us -14.3%
Pointer_Untracked_Deeply_Nested 1.14 ms 971.19 us -14.5%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 6.36 ms 5.44 ms -14.5%
Schema_Tracker_ISO_Language_To_JSON 15.55 ms 13.28 ms -14.6%
Pointer_Object_Traverse 26.08 ns 22.09 ns -15.3%
HTML_Render_Table_100000 2.74 ms 2.32 ms -15.5%
Pointer_Push_Back_Pointer_To_Weak_Pointer 194.73 ns 164.25 ns -15.7%
URITemplateRouter_Create 25.42 us 21.28 us -16.3%
JSON_Divisible_By_Decimal 528.28 ns 439.10 ns -16.9%
JSONPath_Descendant_Filter_Nested 1.85 us 1.54 us -17.0%
Crypto_CRC32_Large_JSONL 28.09 us 23.23 us -17.3%
Schema_Frame_OMC_References 13.04 ms 10.78 ms -17.4%
URITemplateRouterView_Match 194.75 ns 160.73 ns -17.5%
Pointer_Position_Tracker_Get_Deeply_Nested 487.23 ns 396.01 ns -18.7%
Schema_Bundle_Many_Remotes_With_Fragments 7.02 ms 5.64 ms -19.8%
Schema_Frame_WoT_References 2.69 ms 2.16 ms -19.8%
JSON_Prettify_Schema_Web_Of_Things 229.36 us 183.43 us -20.0%
Schema_Tracker_ISO_Language 4.36 ms 3.48 ms -20.1%
JSON_Object_At_Last_Key_512 303.82 ns 242.52 ns -20.2%
Crypto_AES_GCM_Encrypt_256_1KB 5.90 us 4.69 us -20.5%
GZIP_Compress_ISO_Language_Set_3_Locations 47.35 ms 37.62 ms -20.6%
URITemplateRouter_Match_BasePath 292.01 ns 231.39 ns -20.8%
Pointer_Tracked_Deeply_Nested 1.50 ms 1.19 ms -20.9%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 8.90 ms 6.95 ms -21.9%
Schema_Frame_ISO_Language_Root 175.84 ns 135.73 ns -22.8%
Schema_Frame_Deeply_Nested_References 17.56 ms 13.38 ms -23.8%
Pointer_Object_Try_Traverse 52.85 ns 39.84 ns -24.6%
URITemplateRouterView_Match_BasePath 229.89 ns 172.22 ns -25.1%
Schema_Frame_Many_Resources_References 175.67 ms 128.17 ms -27.0%
Crypto_AES_GCM_Encrypt_128_1KB 5.33 us 3.85 us -27.7%
Schema_Frame_OMC_Pointers 26.96 ms 19.19 ms -28.8%
JSONL_Parse_Large 9.34 ms 6.56 ms -29.8%
Markdown_To_HTML_Short_Descriptions 600.48 ns 421.36 ns -29.8%
Schema_Frame_OMC_Locations 13.14 ms 9.13 ms -30.5%
HTML_Build_Table_100000 47.66 ms 31.15 ms -34.6%
Schema_Format_ISO_Language 41.53 ms 25.90 ms -37.6%
Schema_Frame_ISO_Language_Locations 37.52 ms 23.34 ms -37.8%
JSONL_Parse_Large_GZIP 10.54 ms 6.47 ms -38.6%
JSONLD_Catalog_Annotation_List_Populate 1.06 ms 639.27 us -39.7%
JSONLD_Catalog_Materialize 4.91 ms 2.73 ms -44.4%
All 110 benchmarks
Benchmark main This branch Change
Regex_Lower_S_Or_Upper_S_Asterisk 1.84 ns 2.30 ns +25.1%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.85 ns 2.46 ns +33.1%
Regex_Period_Asterisk 1.81 ns 2.18 ns +20.7%
Regex_Group_Period_Asterisk_Group 1.82 ns 2.20 ns +21.3%
Regex_Period_Plus 2.06 ns 2.49 ns +20.7%
Regex_Period 2.12 ns 2.55 ns +20.3%
Regex_Caret_Period_Plus_Dollar 2.04 ns 2.45 ns +20.2%
Regex_Caret_Group_Period_Plus_Group_Dollar 2.13 ns 2.70 ns +27.1%
Regex_Caret_Period_Asterisk_Dollar 1.70 ns 2.34 ns +37.4%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.78 ns 2.17 ns +21.6%
Regex_Caret_X_Hyphen 6.79 ns 7.39 ns +8.7%
Regex_Period_Md_Dollar 19.10 ns 23.85 ns +24.8%
Regex_Caret_Slash_Period_Asterisk 5.26 ns 5.07 ns -3.6%
Regex_Caret_Period_Range_Dollar 2.21 ns 2.39 ns +8.2%
Regex_Nested_Backtrack 29.06 ns 34.64 ns +19.2%
JSON_Array_Of_Objects_Unique 374.23 ns 442.83 ns +18.3%
JSON_Array_Of_Integers_Unique_256 4.42 us 5.41 us +22.3%
JSON_Array_Of_Strings_Unique_Colliding_256 165.75 us 171.94 us +3.7%
JSON_Parse_1 3.14 us 3.38 us +7.4%
JSON_Parse_Real 3.11 us 3.45 us +10.9%
JSON_Parse_Decimal 5.33 us 5.80 us +8.9%
JSON_Parse_Schema_ISO_Language 2.21 ms 2.28 ms +3.4%
JSON_Parse_Integer 2.53 us 2.56 us +0.9%
JSON_Parse_String_NonSSO_Plain 3.00 us 3.30 us +9.9%
JSON_Parse_String_SSO_Plain 1.65 us 1.88 us +13.7%
JSON_Parse_String_Escape_Heavy 16.05 us 17.98 us +12.0%
JSON_Parse_Object_Short_Keys 5.37 us 5.72 us +6.6%
JSON_Parse_Object_Scalar_Properties 2.57 us 3.15 us +22.6%
JSON_Parse_Object_Array_Properties 3.06 us 3.69 us +20.5%
JSON_Parse_Object_Object_Properties 3.11 us 3.74 us +20.2%
JSON_Parse_Nested_Containers 21.77 us 27.23 us +25.1%
JSON_Fast_Hash_Helm_Chart_Lock 54.34 ns 66.33 ns +22.1%
JSON_Equality_Helm_Chart_Lock 154.75 ns 193.51 ns +25.0%
JSON_String_Equal_10 6.31 ns 7.32 ns +16.1%
JSON_String_Equal_100 6.96 ns 8.12 ns +16.7%
JSON_String_Equal_Small_By_Perfect_Hash_10 0.37 ns 0.37 ns +2.3%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 3.64 ns 3.57 ns -1.8%
JSON_String_Fast_Hash_10 2.43 ns 2.70 ns +11.4%
JSON_String_Fast_Hash_100 2.03 ns 2.38 ns +17.3%
JSON_String_Key_Hash_10 1.70 ns 1.71 ns +0.5%
JSON_String_Key_Hash_100 2.38 ns 2.24 ns -5.9%
JSON_Object_Defines_Miss_Same_Length 2.95 ns 3.08 ns +4.2%
JSON_Object_Defines_Miss_Too_Small 5.08 ns 5.59 ns +10.1%
JSON_Object_Defines_Miss_Too_Large 2.75 ns 3.03 ns +10.1%
JSON_From_String_Copy 10.74 ns 11.77 ns +9.6%
JSON_From_String_Temporary 6.24 ns 7.38 ns +18.2%
JSON_Number_To_Double 9.52 ns 12.34 ns +29.6%
JSON_Object_At_Last_Key_8 4.23 ns 4.91 ns +16.1%
JSON_Object_At_Last_Key_32 16.61 ns 14.95 ns -10.0%
JSON_Object_At_Last_Key_128 69.34 ns 73.70 ns +6.3%
JSON_Object_At_Last_Key_512 303.82 ns 242.52 ns -20.2%
JSON_Divisible_By_Decimal 528.28 ns 439.10 ns -16.9%
JSON_PropertySet_Contains 70.23 ns 61.09 ns -13.0%
JSON_PropertySet_Filter_Object_Properties 48.39 ns 44.36 ns -8.3%
JSON_PropertySet_Insert 385.31 ns 332.10 ns -13.8%
JSON_Stringify_Schema_Web_Of_Things 69.95 us 65.43 us -6.5%
JSON_Prettify_Schema_Web_Of_Things 229.36 us 183.43 us -20.0%
Pointer_Object_Traverse 26.08 ns 22.09 ns -15.3%
Pointer_Object_Try_Traverse 52.85 ns 39.84 ns -24.6%
Pointer_Push_Back_Pointer_To_Weak_Pointer 194.73 ns 164.25 ns -15.7%
Pointer_Walker_Schema_ISO_Language 1.60 ms 1.44 ms -10.2%
Pointer_Untracked_Deeply_Nested 1.14 ms 971.19 us -14.5%
Pointer_Tracked_Deeply_Nested 1.50 ms 1.19 ms -20.9%
Pointer_Position_Tracker_Get_Deeply_Nested 487.23 ns 396.01 ns -18.7%
Schema_Tracker_ISO_Language 4.36 ms 3.48 ms -20.1%
Schema_Tracker_ISO_Language_To_JSON 15.55 ms 13.28 ms -14.6%
Schema_Frame_WoT_References 2.69 ms 2.16 ms -19.8%
Schema_Frame_OMC_References 13.04 ms 10.78 ms -17.4%
Schema_Frame_OMC_Pointers 26.96 ms 19.19 ms -28.8%
Schema_Frame_OMC_Locations 13.14 ms 9.13 ms -30.5%
Schema_Frame_ISO_Language_Locations 37.52 ms 23.34 ms -37.8%
Schema_Frame_ISO_Language_Root 175.84 ns 135.73 ns -22.8%
Schema_Frame_KrakenD_References 19.74 ms 18.53 ms -6.1%
Schema_Frame_KrakenD_Reachable 237.69 ms 214.90 ms -9.6%
Schema_Frame_ISO_Language_Locations_To_JSON 30.96 ms 27.05 ms -12.6%
Schema_Frame_Many_Resources_References 175.67 ms 128.17 ms -27.0%
Schema_Frame_Deeply_Nested_References 17.56 ms 13.38 ms -23.8%
Schema_Format_ISO_Language 41.53 ms 25.90 ms -37.6%
Schema_Bundle_Meta_2020_12 546.20 us 468.27 us -14.3%
Schema_Bundle_Many_Remotes_With_Fragments 7.02 ms 5.64 ms -19.8%
OpenAPI_Format_Synthetic_3_1 57.30 ms 52.45 ms -8.5%
JSONPath_Descendant_Filter_Nested 1.85 us 1.54 us -17.0%
URITemplateRouter_Create 25.42 us 21.28 us -16.3%
URITemplateRouter_Match 218.91 ns 192.15 ns -12.2%
URITemplateRouterView_Restore 13.81 us 12.71 us -8.0%
URITemplateRouterView_Match 194.75 ns 160.73 ns -17.5%
URITemplateRouterView_Arguments 757.20 ns 660.87 ns -12.7%
URITemplateRouter_Match_BasePath 292.01 ns 231.39 ns -20.8%
URITemplateRouterView_Match_BasePath 229.89 ns 172.22 ns -25.1%
JSONL_Parse_Large 9.34 ms 6.56 ms -29.8%
JSONL_Parse_Large_GZIP 10.54 ms 6.47 ms -38.6%
JSONLD_Catalog_Annotation_List_Populate 1.06 ms 639.27 us -39.7%
JSONLD_Catalog_Materialize 4.91 ms 2.73 ms -44.4%
HTML_Build_Table_100000 47.66 ms 31.15 ms -34.6%
HTML_Render_Table_100000 2.74 ms 2.32 ms -15.5%
Markdown_To_HTML_Realistic_Document 4.70 ms 5.51 ms +17.2%
Markdown_To_HTML_Pathological 15.10 ms 13.90 ms -8.0%
Markdown_To_HTML_Short_Descriptions 600.48 ns 421.36 ns -29.8%
GZIP_Compress_ISO_Language_Set_3_Locations 47.35 ms 37.62 ms -20.6%
GZIP_Decompress_ISO_Language_Set_3_Locations 4.47 ms 4.21 ms -5.8%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 6.36 ms 5.44 ms -14.5%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 8.90 ms 6.95 ms -21.9%
GZIP_Compress_ISO_Language_Set_3_Schema 2.36 ms 2.47 ms +5.0%
GZIP_Decompress_ISO_Language_Set_3_Schema 321.53 us 393.57 us +22.4%
JOSE_VerifySignature_RS256 25.64 us 24.30 us -5.2%
JOSE_VerifySignature_ES512 1.33 ms 1.16 ms -12.6%
Crypto_CRC32_Large_JSONL 28.09 us 23.23 us -17.3%
Crypto_AES_GCM_Encrypt_128_1KB 5.33 us 3.85 us -27.7%
Crypto_AES_GCM_Decrypt_128_1KB 4.72 us 5.12 us +8.5%
Crypto_AES_GCM_Encrypt_256_1KB 5.90 us 4.69 us -20.5%

Signed-off-by: Juan Cruz Viotti <[email protected]>

@cubic-dev-ai cubic-dev-ai 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.

1 issue found across 4 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/core/openapi/document.h">

<violation number="1" location="src/core/openapi/document.h:366">
P3: The added comment says `openapi_base` reports the base "without reading the document at all", but the function reads the `$self` field from the document (`document.try_at("$self", OPENAPI_HASH_SELF)` in frame.cc). Clarify that it reads nothing but the `$self` field, so the claim is accurate rather than overreaching.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread src/core/openapi/include/sourcemeta/core/openapi.h Outdated
Comment thread src/core/openapi/document.h Outdated
Comment on lines +366 to +367
// and the public sourcemeta::core::openapi_base says what that is without
// reading the document at all

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: The added comment says openapi_base reports the base "without reading the document at all", but the function reads the $self field from the document (document.try_at("$self", OPENAPI_HASH_SELF) in frame.cc). Clarify that it reads nothing but the $self field, so the claim is accurate rather than overreaching.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At src/core/openapi/document.h, line 366:

<comment>The added comment says `openapi_base` reports the base "without reading the document at all", but the function reads the `$self` field from the document (`document.try_at("$self", OPENAPI_HASH_SELF)` in frame.cc). Clarify that it reads nothing but the `$self` field, so the claim is accurate rather than overreaching.</comment>

<file context>
@@ -356,19 +356,23 @@ inline auto openapi_check_document(const JSON &document, OpenAPIWalk &walk)
+    // rather than of how far reading it got, which is why this is settled
+    // before anything else is read and before anything else is turned down.
+    // Every refusal below then names the document by the URI it answers to,
+    // and the public sourcemeta::core::openapi_base says what that is without
+    // reading the document at all
+    //
</file context>
Suggested change
// and the public sourcemeta::core::openapi_base says what that is without
// reading the document at all
// and the public sourcemeta::core::openapi_base reports it by reading
// nothing but the `$self` field

Comment thread test/openapi/openapi_frame_test.cc Outdated
Signed-off-by: Juan Cruz Viotti <[email protected]>
@jviotti
jviotti merged commit 23563fc into main Oct 5, 2026
15 checks passed
@jviotti
jviotti deleted the openapi-5 branch October 5, 2026 15:42
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