Skip to content

Ignore invalid applicators when compiling a schema - #1011

Open
jviotti wants to merge 1 commit into
mainfrom
reject-invalid-applicators
Open

Ignore invalid applicators when compiling a schema#1011
jviotti wants to merge 1 commit into
mainfrom
reject-invalid-applicators

Conversation

@jviotti

@jviotti jviotti commented Aug 29, 2026

Copy link
Copy Markdown
Member

Metaschema checks should be run by a user beforehand, to confirm the
schema is fully valid to begin with.

See: sourcemeta/jsonschema#834
Signed-off-by: Juan Cruz Viotti jv@jviotti.com

Review in cubic

@augmentcode

augmentcode Bot commented Aug 29, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary:
This PR hardens recursive compilation of malformed nested schemas.
Changes:

  • Replaces the object-or-boolean assertion in the recursion helper with a runtime guard.
  • Detects applicator targets that are neither schema objects nor booleans.
  • Returns an empty instruction sequence for those malformed targets.
  • Leaves normal object and boolean subschema compilation unchanged.
  • Adds Draft 2020-12 evaluator fixtures for invalid items values.
  • Covers numeric, string, array, empty-array, and null items forms.
  • Verifies fast-mode validation output remains limited to the array type assertion.
  • Verifies exhaustive-mode annotations and item traversal behavior.
Rationale: The change addresses the reported crash when malformed applicator values are compiled without prior metaschema validation.

🤖 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/compiler/compile.cc
// An invalid schema may set an applicator to a value that is not a schema
// at all, in which case we consider it to impose no constraints
if (!new_schema.is_object() && !new_schema.is_boolean()) [[unlikely]] {
return {};

@augmentcode augmentcode Bot Aug 29, 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.

This represents a malformed target exactly like a valid true subschema, but some applicators give an empty child list non-no-op meaning: contains: 1 emits the non-empty-array assertion, while not: 1 emits a LogicalNot that fails every instance. Thus those invalid applicators still impose constraints despite this guard's stated behavior.

Severity: medium

Fix This in Augment

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

@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/compiler/compile.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 across 2 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread src/compiler/default_compiler_draft4.h

@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 2 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. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/compiler/compile.cc">

<violation number="1" location="src/compiler/compile.cc:42">
P1: When an object- or array-shaped applicator has the wrong JSON type, this `default` returns `true` and still dispatches its compiler. Add shape checks for all `ApplicatorMembers*` and `ApplicatorElements*` cases so malformed applicators are skipped instead of reaching shape-specific compilation.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread src/compiler/compile.cc
Comment on lines +42 to +43
default:
return true;

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: When an object- or array-shaped applicator has the wrong JSON type, this default returns true and still dispatches its compiler. Add shape checks for all ApplicatorMembers* and ApplicatorElements* cases so malformed applicators are skipped instead of reaching shape-specific compilation.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/compiler/compile.cc, line 42:

<comment>When an object- or array-shaped applicator has the wrong JSON type, this `default` returns `true` and still dispatches its compiler. Add shape checks for all `ApplicatorMembers*` and `ApplicatorElements*` cases so malformed applicators are skipped instead of reaching shape-specific compilation.</comment>

<file context>
@@ -21,6 +21,29 @@
+    case SchemaKeywordType::ApplicatorValueOrElementsTraverseAnyItemOrItem:
+    case SchemaKeywordType::ApplicatorValueOrElementsInPlace:
+      return value.is_object() || value.is_boolean() || value.is_array();
+    default:
+      return true;
+  }
</file context>
Suggested change
default:
return true;
case SchemaKeywordType::ApplicatorMembersTraversePropertyStatic:
case SchemaKeywordType::ApplicatorMembersTraversePropertyRegex:
case SchemaKeywordType::ApplicatorMembersInPlaceSome:
return value.is_object();
case SchemaKeywordType::ApplicatorElementsTraverseItem:
case SchemaKeywordType::ApplicatorElementsInPlace:
case SchemaKeywordType::ApplicatorElementsInPlaceSome:
case SchemaKeywordType::ApplicatorElementsInPlaceSomeNegate:
return value.is_array();
default:
return true;

Comment thread test/evaluator/evaluator_2020_12.json

@github-actions github-actions 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.

Benchmark (linux/llvm)

Details
Benchmark suite Current: 95f78b3 Previous: 3c70205 Ratio
Schema_Tracker_ISO_Language 4768879.432835764 ns/iter 4431630.74522287 ns/iter 1.08
Schema_Tracker_ISO_Language_To_JSON 18651763.710525565 ns/iter 19530350.750004448 ns/iter 0.96
Schema_Frame_WoT_References 3983216.2857146612 ns/iter 3668236.1884822254 ns/iter 1.09
Schema_Frame_OMC_References 18222561.820511356 ns/iter 17835869.769232187 ns/iter 1.02
Schema_Frame_OMC_Locations 16992557.238094855 ns/iter 16397719.428569177 ns/iter 1.04
Schema_Frame_ISO_Language_Locations 86465394.37499712 ns/iter 80229683.87498963 ns/iter 1.08
Schema_Frame_ISO_Language_Root 313.2048968011949 ns/iter 301.1122271460896 ns/iter 1.04
Schema_Frame_KrakenD_References 36007715.54999937 ns/iter 35416712.44998951 ns/iter 1.02
Schema_Frame_KrakenD_Reachable 416130111.5000242 ns/iter 528254170.9996167 ns/iter 0.79
Schema_Frame_ISO_Language_Locations_To_JSON 179682189.49999937 ns/iter 175742904.9999928 ns/iter 1.02
Schema_Frame_Many_Resources_References 320328002.999986 ns/iter 319402527.49996036 ns/iter 1.00
Schema_Frame_Deeply_Nested_References 11165124.387095984 ns/iter 12080609.438594604 ns/iter 0.92
Schema_Bundle_Meta_2020_12 1185333.4375020214 ns/iter 1030538.0821139744 ns/iter 1.15
Schema_Format_ISO_Language_To_JSON 93763381.42858134 ns/iter 87303755.8749843 ns/iter 1.07
E2E_Compiler_adaptivecard 51976868.30768606 ns/iter 50856837.09999102 ns/iter 1.02
E2E_Compiler_ansible_meta 23008476.399998777 ns/iter 20969501.121209595 ns/iter 1.10
E2E_Compiler_aws_cdk 278742.0617038429 ns/iter 233045.51721831967 ns/iter 1.20
E2E_Compiler_babelrc 1980311.878531026 ns/iter 1734901.6311882087 ns/iter 1.14
E2E_Compiler_clang_format 14633952.270832159 ns/iter 13337587.42307859 ns/iter 1.10
E2E_Compiler_cmake_presets 22706323.451614246 ns/iter 21903200.46874916 ns/iter 1.04
E2E_Compiler_code_climate 1950625.2191009668 ns/iter 1748891.7935323305 ns/iter 1.12
E2E_Compiler_cql2 10816680.000000536 ns/iter 10636995.850745736 ns/iter 1.02
E2E_Compiler_cspell 19901580.257140137 ns/iter 20684509.296297956 ns/iter 0.96
E2E_Compiler_cypress 3392116.8743963 ns/iter 3100383.7079647905 ns/iter 1.09
E2E_Compiler_deno 6341112.445454655 ns/iter 5651460.524193813 ns/iter 1.12
E2E_Compiler_dependabot 3149819.1486490043 ns/iter 2774670.0118574663 ns/iter 1.14
E2E_Compiler_draft_04 2041201.7930027393 ns/iter 1839348.7827222485 ns/iter 1.11
E2E_Compiler_fabric_mod 3609248.062499404 ns/iter 3249210.218604445 ns/iter 1.11
E2E_Compiler_geojson 18359254.710527528 ns/iter 17104393.325001866 ns/iter 1.07
E2E_Compiler_gitpod_configuration 3901786.6759780967 ns/iter 3511153.969848283 ns/iter 1.11
E2E_Compiler_helm_chart_lock 536482.8749999319 ns/iter 446725.8316326804 ns/iter 1.20
E2E_Compiler_importmap 217312.1446306472 ns/iter 181361.9149818637 ns/iter 1.20
E2E_Compiler_jasmine 1012102.360750123 ns/iter 865753.9650874201 ns/iter 1.17
E2E_Compiler_jshintrc 3364251.096618626 ns/iter 2951110.873949488 ns/iter 1.14
E2E_Compiler_jsconfig 18906409.027030766 ns/iter 16858160.365855593 ns/iter 1.12
E2E_Compiler_krakend 131639268.40002206 ns/iter 119688809.16667028 ns/iter 1.10
E2E_Compiler_lazygit 27738035.599995784 ns/iter 25603397.74074102 ns/iter 1.08
E2E_Compiler_lerna 1213733.3166089072 ns/iter 1031459.8379970524 ns/iter 1.18
E2E_Compiler_nest_cli 6065431.914529242 ns/iter 5366939.292308905 ns/iter 1.13
E2E_Compiler_omc 133185786.19996515 ns/iter 128843323.59999461 ns/iter 1.03
E2E_Compiler_omnisharp 5450663.546874069 ns/iter 4825250.643835243 ns/iter 1.13
E2E_Compiler_openapi 19637444.62857124 ns/iter 18451561.4210544 ns/iter 1.06
E2E_Compiler_pre_commit_hooks 3957771.2372883875 ns/iter 3566263.0507616126 ns/iter 1.11
E2E_Compiler_pulumi 3111810.999999862 ns/iter 2799930.148594614 ns/iter 1.11
E2E_Compiler_semantic_release 1141201.791530982 ns/iter 1009419.679190822 ns/iter 1.13
E2E_Compiler_stale 1177063.8518517364 ns/iter 1019739.465116173 ns/iter 1.15
E2E_Compiler_stylecop 4902925.748251777 ns/iter 4312996.691357321 ns/iter 1.14
E2E_Compiler_tmuxinator 1423212.7703251985 ns/iter 1242155.6378091828 ns/iter 1.15
E2E_Compiler_ui5 39009636.55555895 ns/iter 38864754.61110371 ns/iter 1.00
E2E_Compiler_ui5_manifest 248586831.33334124 ns/iter 238676296.333324 ns/iter 1.04
E2E_Compiler_unreal_engine_uproject 3575767.1435896135 ns/iter 3242391.4259267244 ns/iter 1.10
E2E_Compiler_users_array 628123.5792301846 ns/iter 529833.0206896657 ns/iter 1.19
E2E_Compiler_vercel 10882676.187499385 ns/iter 10338353.705883626 ns/iter 1.05
E2E_Compiler_yamllint 252191.39014737742 ns/iter 212009.06442829283 ns/iter 1.19
E2E_Evaluator_adaptivecard 25945.49822891653 ns/iter 24188.88463896639 ns/iter 1.07
E2E_Evaluator_ansible_meta 244376.35858934157 ns/iter 221707.60859879036 ns/iter 1.10
E2E_Evaluator_aws_cdk 50652.33689999786 ns/iter 45295.27719092884 ns/iter 1.12
E2E_Evaluator_babelrc 117687.76649747089 ns/iter 104185.7860051 ns/iter 1.13
E2E_Evaluator_cerebrum_criminal_case 1059561.5993886043 ns/iter 1183953.844856568 ns/iter 0.89
E2E_Evaluator_clang_format 112591.92973229158 ns/iter 109352.10230458748 ns/iter 1.03
E2E_Evaluator_cmake_presets 4445043.706250829 ns/iter 5410640.726562832 ns/iter 0.82
E2E_Evaluator_code_climate 183772.93692020632 ns/iter 198870.60527065097 ns/iter 0.92
E2E_Evaluator_cql2 223949.3998091063 ns/iter 204923.67326158372 ns/iter 1.09
E2E_Evaluator_cspell 650094.8609022588 ns/iter 634690.2180656014 ns/iter 1.02
E2E_Evaluator_cypress 199797.57283745802 ns/iter 180608.33720927231 ns/iter 1.11
E2E_Evaluator_deno 331811.1795357721 ns/iter 348576.4396594837 ns/iter 0.95
E2E_Evaluator_dependabot 350058.13936072646 ns/iter 350622.6365000202 ns/iter 1.00
E2E_Evaluator_draft_04 8966063.243589746 ns/iter 8835816.759494286 ns/iter 1.01
E2E_Evaluator_fabric_mod 709969.0881146637 ns/iter 687982.0362744831 ns/iter 1.03
E2E_Evaluator_geojson 11692646.423729826 ns/iter 13814661.941176062 ns/iter 0.85
E2E_Evaluator_gitpod_configuration 254805.82708409274 ns/iter 239397.71263188636 ns/iter 1.06
E2E_Evaluator_helm_chart_lock 365281.8603556623 ns/iter 431969.7207711611 ns/iter 0.85
E2E_Evaluator_importmap 51928.68210495943 ns/iter 44381.81967317944 ns/iter 1.17
E2E_Evaluator_jasmine 113759.12421154145 ns/iter 103765.34516853666 ns/iter 1.10
E2E_Evaluator_jshintrc 1216659.6782607604 ns/iter 1180380.6767170613 ns/iter 1.03
E2E_Evaluator_jsconfig 438594.008805092 ns/iter 401209.0114416149 ns/iter 1.09
E2E_Evaluator_krakend 211531.84212118614 ns/iter 197096.79694998538 ns/iter 1.07
E2E_Evaluator_lazygit 156316.41575836504 ns/iter 140520.98791056903 ns/iter 1.11
E2E_Evaluator_lerna 153921.20785170374 ns/iter 151925.0919965271 ns/iter 1.01
E2E_Evaluator_nest_cli 201955.27872156625 ns/iter 194261.5561999005 ns/iter 1.04
E2E_Evaluator_omc 22438.27916006308 ns/iter 20243.926763499505 ns/iter 1.11
E2E_Evaluator_omnisharp 639285.8963302412 ns/iter 583423.3425230652 ns/iter 1.10
E2E_Evaluator_openapi 13070760.735848485 ns/iter 13470823.769230613 ns/iter 0.97
E2E_Evaluator_pre_commit_hooks 509079.87591243157 ns/iter 535339.5921358077 ns/iter 0.95
E2E_Evaluator_pulumi 701795.0995024459 ns/iter 732960.3463569724 ns/iter 0.96
E2E_Evaluator_semantic_release 103038.27073277705 ns/iter 85516.64344614928 ns/iter 1.20
E2E_Evaluator_stale 158792.70841885163 ns/iter 148209.19508516358 ns/iter 1.07
E2E_Evaluator_stylecop 296944.55409425776 ns/iter 288196.03957126016 ns/iter 1.03
E2E_Evaluator_tmuxinator 97380.94524618053 ns/iter 85231.07426764663 ns/iter 1.14
E2E_Evaluator_ui5 537400.0290518518 ns/iter 507784.29999991204 ns/iter 1.06
E2E_Evaluator_ui5_manifest 2637228.8320608833 ns/iter 2907113.048035386 ns/iter 0.91
E2E_Evaluator_unreal_engine_uproject 460436.676334974 ns/iter 477570.8566529391 ns/iter 0.96
E2E_Evaluator_users_array 604222.0275387266 ns/iter 610729.237885383 ns/iter 0.99
E2E_Evaluator_vercel 338176.2640963709 ns/iter 350109.0009965115 ns/iter 0.97
E2E_Evaluator_yamllint 8801.236994509578 ns/iter 8141.453152451609 ns/iter 1.08
JSONLD_Catalog_Simple 20250013.971430495 ns/iter 22937044.59999996 ns/iter 0.88
JSONLD_Catalog_Override_Agreeing 20391686.242419384 ns/iter 23243154.48387067 ns/iter 0.88
JSONLD_Catalog_Override_Shadowing 31178352.54545298 ns/iter 36486221.73684663 ns/iter 0.85
Micro_Draft4_Meta_1_No_Callback 195.9024364911454 ns/iter 179.52915246706803 ns/iter 1.09
Micro_Draft4_Required_Properties 817.6103870801365 ns/iter 857.0716279713599 ns/iter 0.95
Micro_Draft4_Many_Optional_Properties_Minimal_Match 23.047684748168805 ns/iter 24.09500114871443 ns/iter 0.96
Micro_Draft4_Few_Optional_Properties_Minimal_Match 12.139968535524515 ns/iter 10.87285436125379 ns/iter 1.12
Micro_Draft4_Items_Schema 281.5508946975012 ns/iter 264.5329492539765 ns/iter 1.06
Micro_Draft4_Nested_Object 1.86741890422844 ns/iter 1.1538332442580825 ns/iter 1.62
Micro_Draft4_Properties_Triad_Optional 324.70584748424886 ns/iter 318.2979891715892 ns/iter 1.02
Micro_Draft4_Properties_Triad_Closed 265.82305068578006 ns/iter 263.2737597440422 ns/iter 1.01
Micro_Draft4_Properties_Triad_Required 344.46862647804255 ns/iter 331.3960999479907 ns/iter 1.04
Micro_Draft4_Properties_Closed 60.04752246418445 ns/iter 63.97259946690994 ns/iter 0.94
Micro_Draft4_Non_Recursive_Ref 13.908394392121947 ns/iter 13.86903207262417 ns/iter 1.00
Micro_Draft4_Pattern_Properties_True 141.3098692328492 ns/iter 133.16522959714348 ns/iter 1.06
Micro_Draft4_Ref_To_Single_Property 12.140617667246635 ns/iter 10.703476373172327 ns/iter 1.13
Micro_Draft4_Additional_Properties_Type 33.39900368200843 ns/iter 33.202241632049024 ns/iter 1.01
Micro_Draft4_Nested_Oneof 57.54895953494497 ns/iter 46.38304611204937 ns/iter 1.24
Micro_Draft4_Short_Enum 18.88683957524232 ns/iter 9.115413555495156 ns/iter 2.07
Micro_Draft4_Long_Enum 15.886721192243872 ns/iter 11.093385407971248 ns/iter 1.43
Micro_Draft4_Long_Enum_Short_Strings 12.153782657498537 ns/iter 9.117178097439513 ns/iter 1.33
Micro_Draft4_Type_Object 3.425778841485155 ns/iter 3.163169110225455 ns/iter 1.08
Micro_Draft4_Ref_Single_100 1887868.5972976128 ns/iter 1677820.3597124426 ns/iter 1.13
Micro_Draft4_Compile_Ref_Many_Nested 1310810.9606002904 ns/iter 1145763.8998357824 ns/iter 1.14
Micro_Draft4_Compile_Wrap 1874786.497326344 ns/iter 1660740.0380047748 ns/iter 1.13
Micro_Draft6_Property_Names 110.23391876479914 ns/iter 121.6891228990833 ns/iter 0.91
Micro_Draft6_Compile_FHIR 11302516600.999979 ns/iter 16504605871.999956 ns/iter 0.68
Micro_Draft7_If_Then_Else 22.452550833177025 ns/iter 21.14815965367255 ns/iter 1.06
Micro_2019_09_Unevaluated_Properties 27.105123858945035 ns/iter 23.482487550978682 ns/iter 1.15
Micro_2019_09_Compile_Wrap 274191020.499984 ns/iter 252421924.33332396 ns/iter 1.09
Micro_2020_12_Dynamic_Ref 698.92830464793 ns/iter 872.9947602902729 ns/iter 0.80
Micro_2020_12_Dynamic_Ref_Single 3.4241112732611896 ns/iter 3.172264110547642 ns/iter 1.08
Micro_2020_12_Simple_Output_Mask 1096.669610630082 ns/iter 958.5553271143144 ns/iter 1.14
Micro_2020_12_Simple_Output_Annotations 51361.153941653305 ns/iter 49555.290174157446 ns/iter 1.04
Micro_2020_12_Simple_Output_Annotation_Dropping 1420536.8574337538 ns/iter 1274591.7737224374 ns/iter 1.11
Micro_2020_12_Compile_NonCircular_Shared_Refs 779583.9910616262 ns/iter 664627.5517241659 ns/iter 1.17
Micro_2020_12_Exhaustive_Deep_Numeric 8488.937447128836 ns/iter 8691.405583455367 ns/iter 0.98
Micro_2020_12_Exhaustive_Deep_Numeric_SimpleOutput 38514.55202406705 ns/iter 35722.81918537117 ns/iter 1.08
Micro_2020_12_Exhaustive_Deep_Numeric_TraceOutput 20378.718723716545 ns/iter 19462.71042771044 ns/iter 1.05
Micro_2020_12_Exhaustive_Deep_Numeric_Fail 149.74764049986857 ns/iter 148.14872097504312 ns/iter 1.01
Micro_2020_12_Exhaustive_Deep_Numeric_Fail_SimpleOutput 2553.648913277158 ns/iter 2244.3652121398995 ns/iter 1.14
TestSuite_Parse_WoT 20587418.529410515 ns/iter 18880323.13889375 ns/iter 1.09
Alterschema_Check_Readibility_ISO_Language_Set_3 346031545.0000735 ns/iter 302035329.999967 ns/iter 1.15
Alterschema_Check_Readibility_OMC 81967970.74998586 ns/iter 87781037.12498364 ns/iter 0.93
Alterschema_Check_Readibility_KrakenD 1022909768.9998525 ns/iter 1224195247.0001252 ns/iter 0.84
Alterschema_Apply_Readibility_KrakenD 113089044926.00005 ns/iter 131041927113.00015 ns/iter 0.86
Alterschema_Check_Invalid_External_Refs 271460419.00005 ns/iter 229357508.66668057 ns/iter 1.18

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions 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.

JavaScript (linux/llvm)

Details
Benchmark suite Current: 95f78b3 Previous: 3c70205 Ratio
E2E_Evaluator_adaptivecard 121717 ns 114619 ns 1.06
E2E_Evaluator_ansible-meta 538846 ns 557195 ns 0.97
E2E_Evaluator_aws-cdk 142203 ns 147214 ns 0.97
E2E_Evaluator_babelrc 339333 ns 469999 ns 0.72
E2E_Evaluator_cerebrum-criminal-case 2482512 ns 2557776 ns 0.97
E2E_Evaluator_clang-format 243487 ns 324813 ns 0.75
E2E_Evaluator_cmake-presets 16722762 ns 18917179 ns 0.88
E2E_Evaluator_code-climate 517995 ns 582862 ns 0.89
E2E_Evaluator_cql2 1316482 ns 1238651 ns 1.06
E2E_Evaluator_cspell 1492379 ns 1775676 ns 0.84
E2E_Evaluator_cypress 753028 ns 994415 ns 0.76
E2E_Evaluator_deno 1025166 ns 1099997 ns 0.93
E2E_Evaluator_dependabot 1088087 ns 1138702 ns 0.96
E2E_Evaluator_draft-04 19744276 ns 21782936 ns 0.91
E2E_Evaluator_fabric-mod 2306945 ns 2420290 ns 0.95
E2E_Evaluator_geojson 22548204 ns 27020924 ns 0.83
E2E_Evaluator_gitpod-configuration 708979 ns 818710 ns 0.87
E2E_Evaluator_helm-chart-lock 1004303 ns 1044583 ns 0.96
E2E_Evaluator_importmap 260784 ns 332245 ns 0.78
E2E_Evaluator_jasmine 298832 ns 339414 ns 0.88
E2E_Evaluator_jsconfig 1214435 ns 1691847 ns 0.72
E2E_Evaluator_jshintrc 2729677 ns 3086149 ns 0.88
E2E_Evaluator_krakend 672014 ns 620760 ns 1.08
E2E_Evaluator_lazygit 506981 ns 512214 ns 0.99
E2E_Evaluator_lerna 470401 ns 475921 ns 0.99
E2E_Evaluator_nest-cli 588025 ns 744431 ns 0.79
E2E_Evaluator_omc 120596 ns 111853 ns 1.08
E2E_Evaluator_omnisharp 1380970 ns 1613640 ns 0.86
E2E_Evaluator_openapi 42181178 ns 37928453 ns 1.11
E2E_Evaluator_pre-commit-hooks 1964357 ns 2210985 ns 0.89
E2E_Evaluator_pulumi 1944741 ns 2180800 ns 0.89
E2E_Evaluator_semantic-release 251756 ns 303080 ns 0.83
E2E_Evaluator_stale 396840 ns 453247 ns 0.88
E2E_Evaluator_stylecop 1181384 ns 1297893 ns 0.91
E2E_Evaluator_tmuxinator 234227 ns 304857 ns 0.77
E2E_Evaluator_ui5 2224847 ns 2132987 ns 1.04
E2E_Evaluator_ui5-manifest 10287545 ns 10086513 ns 1.02
E2E_Evaluator_unreal-engine-uproject 1490471 ns 1726747 ns 0.86
E2E_Evaluator_users-array 2908472 ns 3145978 ns 0.92
E2E_Evaluator_vercel 967464 ns 1088110 ns 0.89
E2E_Evaluator_yamllint 25517 ns 26914 ns 0.95

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions 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.

Benchmark (macos/llvm)

Details
Benchmark suite Current: 95f78b3 Previous: 3c70205 Ratio
Schema_Tracker_ISO_Language 2640467.2988049304 ns/iter 4439163.461538206 ns/iter 0.59
Schema_Tracker_ISO_Language_To_JSON 10079748.18840605 ns/iter 16407833.319147628 ns/iter 0.61
Schema_Frame_WoT_References 3687037.820512346 ns/iter 5328357.91000025 ns/iter 0.69
Schema_Frame_OMC_References 16281457.333334293 ns/iter 25328254.99999944 ns/iter 0.64
Schema_Frame_OMC_Locations 15335156.04255191 ns/iter 24950747.200000476 ns/iter 0.61
Schema_Frame_ISO_Language_Locations 64727469.63635762 ns/iter 92311411.4999919 ns/iter 0.70
Schema_Frame_ISO_Language_Root 161.1732885951951 ns/iter 211.98916859862373 ns/iter 0.76
Schema_Frame_KrakenD_References 46182842.1052635 ns/iter 58651487.50000344 ns/iter 0.79
Schema_Frame_KrakenD_Reachable 414571500.0000223 ns/iter 673720791.0000507 ns/iter 0.62
Schema_Frame_ISO_Language_Locations_To_JSON 103264798.6666575 ns/iter 138522677.24999478 ns/iter 0.75
Schema_Frame_Many_Resources_References 237409735.99997988 ns/iter 317692895.9999827 ns/iter 0.75
Schema_Frame_Deeply_Nested_References 11548508.46874922 ns/iter 15256816.295455813 ns/iter 0.76
Schema_Bundle_Meta_2020_12 1059766.0217818334 ns/iter 1173590.6307926266 ns/iter 0.90
Schema_Format_ISO_Language_To_JSON 66150925.10000978 ns/iter 79886095.59998849 ns/iter 0.83
E2E_Compiler_adaptivecard 52166295.799997896 ns/iter 50527256.91666638 ns/iter 1.03
E2E_Compiler_ansible_meta 23394082.060607698 ns/iter 22967278.62499992 ns/iter 1.02
E2E_Compiler_aws_cdk 229733.9941707694 ns/iter 231133.1585081665 ns/iter 0.99
E2E_Compiler_babelrc 1702264.5824999926 ns/iter 1860493.0025063634 ns/iter 0.91
E2E_Compiler_clang_format 13380312.93617289 ns/iter 14075542.553190973 ns/iter 0.95
E2E_Compiler_cmake_presets 24614901.031249303 ns/iter 26165762.499999803 ns/iter 0.94
E2E_Compiler_code_climate 1956778.7267078527 ns/iter 2817262.145772514 ns/iter 0.69
E2E_Compiler_cql2 8173480.80898667 ns/iter 10581554.757142644 ns/iter 0.77
E2E_Compiler_cspell 15222380.319151038 ns/iter 19368120.967743058 ns/iter 0.79
E2E_Compiler_cypress 3068165.000000094 ns/iter 3692714.504629285 ns/iter 0.83
E2E_Compiler_deno 7155227.975609831 ns/iter 6814940.9320379 ns/iter 1.05
E2E_Compiler_dependabot 2934917.947368975 ns/iter 3659581.1298077214 ns/iter 0.80
E2E_Compiler_draft_04 1524917.5658749423 ns/iter 1941588.8644065706 ns/iter 0.79
E2E_Compiler_fabric_mod 2702628.253905992 ns/iter 3185440.2373734512 ns/iter 0.85
E2E_Compiler_geojson 15714226.456521908 ns/iter 18273903.500001825 ns/iter 0.86
E2E_Compiler_gitpod_configuration 2826283.400809152 ns/iter 4806811.835616523 ns/iter 0.59
E2E_Compiler_helm_chart_lock 406830.82191781193 ns/iter 474648.31245646486 ns/iter 0.86
E2E_Compiler_importmap 186910.27162237882 ns/iter 235489.9320083651 ns/iter 0.79
E2E_Compiler_jasmine 753925.9149941332 ns/iter 1315700.1108648584 ns/iter 0.57
E2E_Compiler_jshintrc 2481769.8014187287 ns/iter 3740211.855720937 ns/iter 0.66
E2E_Compiler_jsconfig 14726658.854167832 ns/iter 23050105.769230485 ns/iter 0.64
E2E_Compiler_krakend 98966797.71428093 ns/iter 130895958.20001705 ns/iter 0.76
E2E_Compiler_lazygit 24006909.482758254 ns/iter 35474359.14285437 ns/iter 0.68
E2E_Compiler_lerna 928955.3073929488 ns/iter 1321808.4973070936 ns/iter 0.70
E2E_Compiler_nest_cli 5185881.842857854 ns/iter 6120959.1836739825 ns/iter 0.85
E2E_Compiler_omc 119081520.83333333 ns/iter 326439041.7999948 ns/iter 0.36
E2E_Compiler_omnisharp 4567826.85810785 ns/iter 7868584.854545382 ns/iter 0.58
E2E_Compiler_openapi 15951558.333330872 ns/iter 23239080.35713933 ns/iter 0.69
E2E_Compiler_pre_commit_hooks 3606840.5612236257 ns/iter 4396030.523255747 ns/iter 0.82
E2E_Compiler_pulumi 2339304.443333579 ns/iter 3701287.8578680838 ns/iter 0.63
E2E_Compiler_semantic_release 873372.8808933744 ns/iter 1253734.3406595509 ns/iter 0.70
E2E_Compiler_stale 893681.0494924777 ns/iter 1264613.2189655057 ns/iter 0.71
E2E_Compiler_stylecop 3962379.4999993253 ns/iter 5246079.580000469 ns/iter 0.76
E2E_Compiler_tmuxinator 1082970.1839258685 ns/iter 1514674.202614509 ns/iter 0.71
E2E_Compiler_ui5 33899787.500001825 ns/iter 54732484.90908521 ns/iter 0.62
E2E_Compiler_ui5_manifest 213286152.99997485 ns/iter 320083499.9999529 ns/iter 0.67
E2E_Compiler_unreal_engine_uproject 2771216.8007963053 ns/iter 3901629.7554350942 ns/iter 0.71
E2E_Compiler_users_array 447742.93989772076 ns/iter 745288.9886086088 ns/iter 0.60
E2E_Compiler_vercel 8291715.988505154 ns/iter 11514296.789472243 ns/iter 0.72
E2E_Compiler_yamllint 223216.6132479016 ns/iter 258933.32308322712 ns/iter 0.86
E2E_Evaluator_adaptivecard 22666.63739186246 ns/iter 24397.54303442995 ns/iter 0.93
E2E_Evaluator_ansible_meta 189289.55490142736 ns/iter 218507.45958620572 ns/iter 0.87
E2E_Evaluator_aws_cdk 47538.7072648082 ns/iter 58968.16958861251 ns/iter 0.81
E2E_Evaluator_babelrc 91716.04173643643 ns/iter 106684.99721914469 ns/iter 0.86
E2E_Evaluator_cerebrum_criminal_case 896970.1327063577 ns/iter 889013.207492759 ns/iter 1.01
E2E_Evaluator_clang_format 98150.04782818654 ns/iter 98346.04572713021 ns/iter 1.00
E2E_Evaluator_cmake_presets 3888647.641304033 ns/iter 4833895.12921382 ns/iter 0.80
E2E_Evaluator_code_climate 150771.13128382282 ns/iter 170170.8198930539 ns/iter 0.89
E2E_Evaluator_cql2 183755.60230493205 ns/iter 185634.09817840296 ns/iter 0.99
E2E_Evaluator_cspell 523271.4589999432 ns/iter 581719.8876494182 ns/iter 0.90
E2E_Evaluator_cypress 131282.50452114485 ns/iter 191859.5056737538 ns/iter 0.68
E2E_Evaluator_deno 250841.96820924417 ns/iter 301716.6277588986 ns/iter 0.83
E2E_Evaluator_dependabot 283555.63332002534 ns/iter 318320.43973941554 ns/iter 0.89
E2E_Evaluator_draft_04 5487166.249999973 ns/iter 5539848.539682687 ns/iter 0.99
E2E_Evaluator_fabric_mod 521063.4170000503 ns/iter 748444.5839999125 ns/iter 0.70
E2E_Evaluator_geojson 8937740.131581282 ns/iter 11627785.7968754 ns/iter 0.77
E2E_Evaluator_gitpod_configuration 195252.51416579867 ns/iter 251040.2361826446 ns/iter 0.78
E2E_Evaluator_helm_chart_lock 269779.31647153787 ns/iter 359625.8448844725 ns/iter 0.75
E2E_Evaluator_importmap 39855.42815989806 ns/iter 57381.585332037495 ns/iter 0.69
E2E_Evaluator_jasmine 92628.75246873625 ns/iter 120930.31089079214 ns/iter 0.77
E2E_Evaluator_jshintrc 911049.1365851065 ns/iter 1234631.5872019252 ns/iter 0.74
E2E_Evaluator_jsconfig 290868.87158463616 ns/iter 394077.215686311 ns/iter 0.74
E2E_Evaluator_krakend 129055.54277827963 ns/iter 163262.28924895797 ns/iter 0.79
E2E_Evaluator_lazygit 101343.77065125467 ns/iter 120639.8611724698 ns/iter 0.84
E2E_Evaluator_lerna 122736.11825725297 ns/iter 140681.0708851444 ns/iter 0.87
E2E_Evaluator_nest_cli 154264.43477324498 ns/iter 185263.1019340051 ns/iter 0.83
E2E_Evaluator_omc 17165.0655456825 ns/iter 19340.39191590049 ns/iter 0.89
E2E_Evaluator_omnisharp 462335.6344510607 ns/iter 755483.0000000265 ns/iter 0.61
E2E_Evaluator_openapi 6611673.409523584 ns/iter 11204171.689653635 ns/iter 0.59
E2E_Evaluator_pre_commit_hooks 378464.0957446948 ns/iter 587959.1370558046 ns/iter 0.64
E2E_Evaluator_pulumi 585239.4234137255 ns/iter 728337.4720908519 ns/iter 0.80
E2E_Evaluator_semantic_release 71401.2322346464 ns/iter 117334.5752199828 ns/iter 0.61
E2E_Evaluator_stale 120960.05474329213 ns/iter 162683.32607288944 ns/iter 0.74
E2E_Evaluator_stylecop 194826.26889327314 ns/iter 267930.79472477373 ns/iter 0.73
E2E_Evaluator_tmuxinator 68542.37333073975 ns/iter 96003.03520555136 ns/iter 0.71
E2E_Evaluator_ui5 354823.1830986093 ns/iter 540272.7649006678 ns/iter 0.66
E2E_Evaluator_ui5_manifest 1565117.4665179164 ns/iter 3009821.9217388364 ns/iter 0.52
E2E_Evaluator_unreal_engine_uproject 337015.56764557445 ns/iter 517562.7846374424 ns/iter 0.65
E2E_Evaluator_users_array 412309.1316872575 ns/iter 632388.7500000183 ns/iter 0.65
E2E_Evaluator_vercel 229169.4996746277 ns/iter 329754.91772769706 ns/iter 0.69
E2E_Evaluator_yamllint 9224.841592276849 ns/iter 10361.035486292412 ns/iter 0.89
JSONLD_Catalog_Simple 13967324.159998499 ns/iter 19963684.820513897 ns/iter 0.70
JSONLD_Catalog_Override_Agreeing 13914443.319999918 ns/iter 21745259.823530085 ns/iter 0.64
JSONLD_Catalog_Override_Shadowing 19189219.916667197 ns/iter 28513480.000001434 ns/iter 0.67
Micro_Draft4_Meta_1_No_Callback 143.16366310530222 ns/iter 187.58685635054385 ns/iter 0.76
Micro_Draft4_Required_Properties 665.6145319416914 ns/iter 858.5592247904623 ns/iter 0.78
Micro_Draft4_Many_Optional_Properties_Minimal_Match 16.111755640744896 ns/iter 21.31516983049454 ns/iter 0.76
Micro_Draft4_Few_Optional_Properties_Minimal_Match 8.86861322677706 ns/iter 14.172993579690734 ns/iter 0.63
Micro_Draft4_Items_Schema 251.4845704249049 ns/iter 289.9022291970635 ns/iter 0.87
Micro_Draft4_Nested_Object 0.9870577577657503 ns/iter 1.0855788399904502 ns/iter 0.91
Micro_Draft4_Properties_Triad_Optional 252.62493866808208 ns/iter 249.5228155822197 ns/iter 1.01
Micro_Draft4_Properties_Triad_Closed 218.95397815421944 ns/iter 222.92610180243256 ns/iter 0.98
Micro_Draft4_Properties_Triad_Required 299.7621859720041 ns/iter 267.93086824825986 ns/iter 1.12
Micro_Draft4_Properties_Closed 46.916354115077134 ns/iter 53.79996670000082 ns/iter 0.87
Micro_Draft4_Non_Recursive_Ref 11.703535340679267 ns/iter 14.605376913362043 ns/iter 0.80
Micro_Draft4_Pattern_Properties_True 134.16444037122528 ns/iter 170.97343357179227 ns/iter 0.78
Micro_Draft4_Ref_To_Single_Property 8.80388011126191 ns/iter 12.030164995519543 ns/iter 0.73
Micro_Draft4_Additional_Properties_Type 24.490623617751275 ns/iter 33.330827687640905 ns/iter 0.73
Micro_Draft4_Nested_Oneof 33.39539099902503 ns/iter 49.297664304879234 ns/iter 0.68
Micro_Draft4_Short_Enum 4.60692943438388 ns/iter 5.1136197565324775 ns/iter 0.90
Micro_Draft4_Long_Enum 8.794713601216674 ns/iter 10.485398551400746 ns/iter 0.84
Micro_Draft4_Long_Enum_Short_Strings 6.083960638434938 ns/iter 6.695738722077053 ns/iter 0.91
Micro_Draft4_Type_Object 2.2534480427314976 ns/iter 3.3324866068555865 ns/iter 0.68
Micro_Draft4_Ref_Single_100 1511818.9909418582 ns/iter 2136868.9365082956 ns/iter 0.71
Micro_Draft4_Compile_Ref_Many_Nested 858575.9259257889 ns/iter 1132865.0319886876 ns/iter 0.76
Micro_Draft4_Compile_Wrap 1366758.2495050773 ns/iter 1888891.0076338206 ns/iter 0.72
Micro_Draft6_Property_Names 87.12682079297903 ns/iter 102.63644322310486 ns/iter 0.85
Micro_Draft6_Compile_FHIR 7642442999.999957 ns/iter 14942654416.000095 ns/iter 0.51
Micro_Draft7_If_Then_Else 16.51454809576933 ns/iter 21.35141342248228 ns/iter 0.77
Micro_2019_09_Unevaluated_Properties 26.340844414698324 ns/iter 29.766461363231265 ns/iter 0.88
Micro_2019_09_Compile_Wrap 232092444.6666292 ns/iter 291016874.9999684 ns/iter 0.80
Micro_2020_12_Dynamic_Ref 550.7094308214726 ns/iter 770.2522380569173 ns/iter 0.71
Micro_2020_12_Dynamic_Ref_Single 2.255564931730537 ns/iter 3.3728863073380717 ns/iter 0.67
Micro_2020_12_Simple_Output_Mask 743.4463969808603 ns/iter 847.2736567560835 ns/iter 0.88
Micro_2020_12_Simple_Output_Annotations 52753.40908424217 ns/iter 52004.263467883975 ns/iter 1.01
Micro_2020_12_Simple_Output_Annotation_Dropping 1117353.3306581313 ns/iter 1282134.0206186243 ns/iter 0.87
Micro_2020_12_Compile_NonCircular_Shared_Refs 621568.6017857332 ns/iter 698025.7358140249 ns/iter 0.89
Micro_2020_12_Exhaustive_Deep_Numeric 4771.266404951511 ns/iter 5969.91961148133 ns/iter 0.80
Micro_2020_12_Exhaustive_Deep_Numeric_SimpleOutput 27877.98570858184 ns/iter 38240.51140181989 ns/iter 0.73
Micro_2020_12_Exhaustive_Deep_Numeric_TraceOutput 13258.03996883719 ns/iter 13373.632261099277 ns/iter 0.99
Micro_2020_12_Exhaustive_Deep_Numeric_Fail 84.39371087217438 ns/iter 91.26014016219933 ns/iter 0.92
Micro_2020_12_Exhaustive_Deep_Numeric_Fail_SimpleOutput 2141.759148029915 ns/iter 2639.929391776013 ns/iter 0.81
TestSuite_Parse_WoT 16712177.571429536 ns/iter 21262431.324319895 ns/iter 0.79
Alterschema_Check_Readibility_ISO_Language_Set_3 178651906.2500247 ns/iter 263865624.999994 ns/iter 0.68
Alterschema_Check_Readibility_OMC 51907791.692306444 ns/iter 78514527.77779539 ns/iter 0.66
Alterschema_Check_Readibility_KrakenD 603458000.000046 ns/iter 804656000.0000226 ns/iter 0.75
Alterschema_Apply_Readibility_KrakenD 75101455124.9998 ns/iter 87627222624.99983 ns/iter 0.86
Alterschema_Check_Invalid_External_Refs 181955333.25001633 ns/iter 157848156.24999738 ns/iter 1.15

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions 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.

JavaScript (macos/llvm)

Details
Benchmark suite Current: 95f78b3 Previous: 3c70205 Ratio
E2E_Evaluator_adaptivecard 139872 ns 94856 ns 1.47
E2E_Evaluator_ansible-meta 460758 ns 373649 ns 1.23
E2E_Evaluator_aws-cdk 137444 ns 122418 ns 1.12
E2E_Evaluator_babelrc 358254 ns 269180 ns 1.33
E2E_Evaluator_cerebrum-criminal-case 2399974 ns 1864220 ns 1.29
E2E_Evaluator_clang-format 201300 ns 173122 ns 1.16
E2E_Evaluator_cmake-presets 15775821 ns 12036449 ns 1.31
E2E_Evaluator_code-climate 467531 ns 382391 ns 1.22
E2E_Evaluator_cql2 1122149 ns 919054 ns 1.22
E2E_Evaluator_cspell 1375418 ns 1009298 ns 1.36
E2E_Evaluator_cypress 668188 ns 505752 ns 1.32
E2E_Evaluator_deno 824948 ns 611866 ns 1.35
E2E_Evaluator_dependabot 820968 ns 695945 ns 1.18
E2E_Evaluator_draft-04 16539292 ns 14676494 ns 1.13
E2E_Evaluator_fabric-mod 1657980 ns 1266684 ns 1.31
E2E_Evaluator_geojson 17855686 ns 15212872 ns 1.17
E2E_Evaluator_gitpod-configuration 533456 ns 460451 ns 1.16
E2E_Evaluator_helm-chart-lock 937105 ns 800532 ns 1.17
E2E_Evaluator_importmap 279430 ns 201941 ns 1.38
E2E_Evaluator_jasmine 265619 ns 197942 ns 1.34
E2E_Evaluator_jsconfig 1123024 ns 857745 ns 1.31
E2E_Evaluator_jshintrc 3018283 ns 1841227 ns 1.64
E2E_Evaluator_krakend 443738 ns 399079 ns 1.11
E2E_Evaluator_lazygit 320333 ns 258870 ns 1.24
E2E_Evaluator_lerna 374631 ns 306617 ns 1.22
E2E_Evaluator_nest-cli 506423 ns 385288 ns 1.31
E2E_Evaluator_omc 104669 ns 104543 ns 1.00
E2E_Evaluator_omnisharp 1169751 ns 1285417 ns 0.91
E2E_Evaluator_openapi 38588112 ns 28996757 ns 1.33
E2E_Evaluator_pre-commit-hooks 1388185 ns 1232081 ns 1.13
E2E_Evaluator_pulumi 1513407 ns 1280396 ns 1.18
E2E_Evaluator_semantic-release 196980 ns 171746 ns 1.15
E2E_Evaluator_stale 313737 ns 267092 ns 1.17
E2E_Evaluator_stylecop 835778 ns 644943 ns 1.30
E2E_Evaluator_tmuxinator 211645 ns 160788 ns 1.32
E2E_Evaluator_ui5 1844376 ns 1416489 ns 1.30
E2E_Evaluator_ui5-manifest 10044310 ns 7027583 ns 1.43
E2E_Evaluator_unreal-engine-uproject 1339126 ns 1253507 ns 1.07
E2E_Evaluator_users-array 2761779 ns 2068331 ns 1.34
E2E_Evaluator_vercel 783473 ns 669411 ns 1.17
E2E_Evaluator_yamllint 26724 ns 22457 ns 1.19

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions 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.

Benchmark (linux/gcc)

Details
Benchmark suite Current: 95f78b3 Previous: 3c70205 Ratio
Alterschema_Check_Readibility_ISO_Language_Set_3 326465901.99999535 ns/iter 311744183.4999681 ns/iter 1.05
Alterschema_Check_Readibility_OMC 86016708.12498696 ns/iter 93721377.85713415 ns/iter 0.92
Alterschema_Check_Readibility_KrakenD 1033277133.9999454 ns/iter 1160735592.0000372 ns/iter 0.89
Alterschema_Apply_Readibility_KrakenD 116102310104.00003 ns/iter 129001841131.99998 ns/iter 0.90
Alterschema_Check_Invalid_External_Refs 286574926.50006586 ns/iter 271458658.00002867 ns/iter 1.06
TestSuite_Parse_WoT 23172725.333332285 ns/iter 22408147.806448054 ns/iter 1.03
Micro_2020_12_Dynamic_Ref 1008.3873198124221 ns/iter 951.5271449910306 ns/iter 1.06
Micro_2020_12_Dynamic_Ref_Single 4.380231773392397 ns/iter 3.875979195754782 ns/iter 1.13
Micro_2020_12_Simple_Output_Mask 1251.0570271270972 ns/iter 1250.1828109414625 ns/iter 1.00
Micro_2020_12_Simple_Output_Annotations 61726.55894454177 ns/iter 54782.53545174342 ns/iter 1.13
Micro_2020_12_Simple_Output_Annotation_Dropping 1646175.016432027 ns/iter 1566641.8456375378 ns/iter 1.05
Micro_2020_12_Compile_NonCircular_Shared_Refs 881272.5479799036 ns/iter 841603.576877305 ns/iter 1.05
Micro_2020_12_Exhaustive_Deep_Numeric 9288.633468898915 ns/iter 9596.231649906 ns/iter 0.97
Micro_2020_12_Exhaustive_Deep_Numeric_SimpleOutput 44037.25917546268 ns/iter 46075.97075510808 ns/iter 0.96
Micro_2020_12_Exhaustive_Deep_Numeric_TraceOutput 22567.270131203364 ns/iter 22448.98881123886 ns/iter 1.01
Micro_2020_12_Exhaustive_Deep_Numeric_Fail 170.48239086891587 ns/iter 182.297987021271 ns/iter 0.94
Micro_2020_12_Exhaustive_Deep_Numeric_Fail_SimpleOutput 2961.151766525786 ns/iter 2676.490647981496 ns/iter 1.11
Micro_2019_09_Unevaluated_Properties 31.18029290938093 ns/iter 31.332472595748243 ns/iter 1.00
Micro_2019_09_Compile_Wrap 285487250.4999548 ns/iter 288048749.5000352 ns/iter 0.99
Micro_Draft7_If_Then_Else 25.839865555348755 ns/iter 25.29313705923438 ns/iter 1.02
Micro_Draft6_Property_Names 156.3502775446916 ns/iter 150.75882608254224 ns/iter 1.04
Micro_Draft6_Compile_FHIR 11554503273.000137 ns/iter 12296029214.999863 ns/iter 0.94
Micro_Draft4_Meta_1_No_Callback 187.8337004661345 ns/iter 178.0525606771342 ns/iter 1.05
Micro_Draft4_Required_Properties 888.7580554731327 ns/iter 896.3204665066222 ns/iter 0.99
Micro_Draft4_Many_Optional_Properties_Minimal_Match 22.10294106651447 ns/iter 22.889857999768186 ns/iter 0.97
Micro_Draft4_Few_Optional_Properties_Minimal_Match 15.637682243255455 ns/iter 16.194645515532343 ns/iter 0.97
Micro_Draft4_Items_Schema 344.8715717952169 ns/iter 308.0477608680211 ns/iter 1.12
Micro_Draft4_Nested_Object 1.5679554180620137 ns/iter 1.4602128764782345 ns/iter 1.07
Micro_Draft4_Properties_Triad_Optional 450.2180343837482 ns/iter 457.3408182893668 ns/iter 0.98
Micro_Draft4_Properties_Triad_Closed 378.8462840177206 ns/iter 347.0768939268351 ns/iter 1.09
Micro_Draft4_Properties_Triad_Required 482.9927769872362 ns/iter 507.1839859999727 ns/iter 0.95
Micro_Draft4_Properties_Closed 64.99134097171799 ns/iter 68.26766181187466 ns/iter 0.95
Micro_Draft4_Non_Recursive_Ref 9.020840783752856 ns/iter 8.796163975219113 ns/iter 1.03
Micro_Draft4_Pattern_Properties_True 207.08480969340764 ns/iter 192.60329971487224 ns/iter 1.08
Micro_Draft4_Ref_To_Single_Property 15.571981589412808 ns/iter 16.19190285897589 ns/iter 0.96
Micro_Draft4_Additional_Properties_Type 14.455216988448273 ns/iter 13.73025790858023 ns/iter 1.05
Micro_Draft4_Nested_Oneof 65.41850934392725 ns/iter 63.38500411774994 ns/iter 1.03
Micro_Draft4_Short_Enum 14.672813482059471 ns/iter 14.415118969149807 ns/iter 1.02
Micro_Draft4_Long_Enum 13.400431919738212 ns/iter 13.715798613140601 ns/iter 0.98
Micro_Draft4_Long_Enum_Short_Strings 14.76424071202623 ns/iter 14.433198928397124 ns/iter 1.02
Micro_Draft4_Type_Object 4.670391556876785 ns/iter 3.8729737850770602 ns/iter 1.21
Micro_Draft4_Ref_Single_100 1971288.0973448944 ns/iter 1915601.4386916335 ns/iter 1.03
Micro_Draft4_Compile_Ref_Many_Nested 1364682.7324218513 ns/iter 1322327.088512223 ns/iter 1.03
Micro_Draft4_Compile_Wrap 2107771.713855368 ns/iter 2087482.0838322237 ns/iter 1.01
JSONLD_Catalog_Simple 21966294.812500563 ns/iter 21449968.437501356 ns/iter 1.02
JSONLD_Catalog_Override_Agreeing 22044311.81250044 ns/iter 21736078.18750156 ns/iter 1.01
JSONLD_Catalog_Override_Shadowing 33310618.904763382 ns/iter 32299169.18182467 ns/iter 1.03
E2E_Compiler_adaptivecard 56260764.500014685 ns/iter 55712024.16666665 ns/iter 1.01
E2E_Compiler_ansible_meta 26524545.346153267 ns/iter 27238841.846155994 ns/iter 0.97
E2E_Compiler_aws_cdk 323738.64513148 ns/iter 304865.09252824815 ns/iter 1.06
E2E_Compiler_babelrc 2185066.105918546 ns/iter 2178031.9968647775 ns/iter 1.00
E2E_Compiler_clang_format 15920216.204542406 ns/iter 16085245.627907572 ns/iter 0.99
E2E_Compiler_cmake_presets 23759259.55172126 ns/iter 23968852.96552055 ns/iter 0.99
E2E_Compiler_code_climate 2156917.965944009 ns/iter 2145455.0709877987 ns/iter 1.01
E2E_Compiler_cql2 11778524.800001832 ns/iter 11842301.779660052 ns/iter 0.99
E2E_Compiler_cspell 20691446.14706468 ns/iter 20681985.26470657 ns/iter 1.00
E2E_Compiler_cypress 3507652.480000161 ns/iter 3477559.641791303 ns/iter 1.01
E2E_Compiler_deno 7203558.030926981 ns/iter 7224874.09278252 ns/iter 1.00
E2E_Compiler_dependabot 3421138.565853675 ns/iter 3393197.449274915 ns/iter 1.01
E2E_Compiler_draft_04 2322613.707641468 ns/iter 2285808.6091205534 ns/iter 1.02
E2E_Compiler_fabric_mod 3955465.312499613 ns/iter 3956737.2711868086 ns/iter 1.00
E2E_Compiler_geojson 20145991.600000862 ns/iter 20321685.294120204 ns/iter 0.99
E2E_Compiler_gitpod_configuration 4307399.427673618 ns/iter 4277867.552147454 ns/iter 1.01
E2E_Compiler_helm_chart_lock 580538.6119402876 ns/iter 553620.3611986233 ns/iter 1.05
E2E_Compiler_importmap 244620.98361802692 ns/iter 228863.50310356615 ns/iter 1.07
E2E_Compiler_jasmine 1121973.3562298939 ns/iter 1086518.102803576 ns/iter 1.03
E2E_Compiler_jshintrc 3701979.989417605 ns/iter 3688850.4894740866 ns/iter 1.00
E2E_Compiler_jsconfig 20172130.914287273 ns/iter 20189774.52941245 ns/iter 1.00
E2E_Compiler_krakend 128536319.6000162 ns/iter 126284309.8000303 ns/iter 1.02
E2E_Compiler_lazygit 29816523.47826323 ns/iter 30410677.130436417 ns/iter 0.98
E2E_Compiler_lerna 1349086.5568400014 ns/iter 1287531.0201836512 ns/iter 1.05
E2E_Compiler_nest_cli 6508387.648148494 ns/iter 6543460.841121742 ns/iter 0.99
E2E_Compiler_omc 150342427.49999294 ns/iter 151413370.74999228 ns/iter 0.99
E2E_Compiler_omnisharp 5970813.406778596 ns/iter 5955149.880342534 ns/iter 1.00
E2E_Compiler_openapi 22441268.25806439 ns/iter 22410307.612906236 ns/iter 1.00
E2E_Compiler_pre_commit_hooks 4381543.481250105 ns/iter 4407081.628930982 ns/iter 0.99
E2E_Compiler_pulumi 3459739.886138642 ns/iter 3452376.753695242 ns/iter 1.00
E2E_Compiler_semantic_release 1270891.9162109776 ns/iter 1222297.7709788133 ns/iter 1.04
E2E_Compiler_stale 1297631.9223661267 ns/iter 1253811.5259393894 ns/iter 1.03
E2E_Compiler_stylecop 5505740.984252645 ns/iter 5452959.6220475035 ns/iter 1.01
E2E_Compiler_tmuxinator 1600742.0527522308 ns/iter 1545109.477876145 ns/iter 1.04
E2E_Compiler_ui5 41629411.82352477 ns/iter 41724460.58824415 ns/iter 1.00
E2E_Compiler_ui5_manifest 274363646.3333132 ns/iter 259898076.33330503 ns/iter 1.06
E2E_Compiler_unreal_engine_uproject 3910043.1011236017 ns/iter 3940546.694914799 ns/iter 0.99
E2E_Compiler_users_array 704973.8968655257 ns/iter 653125.1471136059 ns/iter 1.08
E2E_Compiler_vercel 11368814.639343059 ns/iter 11504689.250000412 ns/iter 0.99
E2E_Compiler_yamllint 288827.6042009782 ns/iter 271911.328179348 ns/iter 1.06
E2E_Evaluator_adaptivecard 25893.652597650238 ns/iter 27188.015997836905 ns/iter 0.95
E2E_Evaluator_ansible_meta 293623.2307371708 ns/iter 268720.7539286459 ns/iter 1.09
E2E_Evaluator_aws_cdk 59295.90024454022 ns/iter 56600.69817739895 ns/iter 1.05
E2E_Evaluator_babelrc 119683.05812374833 ns/iter 118029.73947896746 ns/iter 1.01
E2E_Evaluator_cerebrum_criminal_case 1145075.8461537643 ns/iter 1214968.345614085 ns/iter 0.94
E2E_Evaluator_clang_format 105047.4952451847 ns/iter 95225.53348699577 ns/iter 1.10
E2E_Evaluator_cmake_presets 4936223.417266349 ns/iter 5013208.224637389 ns/iter 0.98
E2E_Evaluator_code_climate 228218.20911794156 ns/iter 204501.48946138547 ns/iter 1.12
E2E_Evaluator_cql2 230397.33063735385 ns/iter 226190.76547967378 ns/iter 1.02
E2E_Evaluator_cspell 624871.2920747083 ns/iter 587883.83630198 ns/iter 1.06
E2E_Evaluator_cypress 197100.66527429546 ns/iter 159087.5934291332 ns/iter 1.24
E2E_Evaluator_deno 368953.90388652316 ns/iter 318617.4638989171 ns/iter 1.16
E2E_Evaluator_dependabot 400088.1328790106 ns/iter 379305.26456173125 ns/iter 1.05
E2E_Evaluator_draft_04 7458022.999999764 ns/iter 7124306.384614581 ns/iter 1.05
E2E_Evaluator_fabric_mod 805406.1041190296 ns/iter 779514.2268624037 ns/iter 1.03
E2E_Evaluator_geojson 13240773.113208871 ns/iter 13313623.673075024 ns/iter 0.99
E2E_Evaluator_gitpod_configuration 281962.65819203365 ns/iter 255292.2673756131 ns/iter 1.10
E2E_Evaluator_helm_chart_lock 368682.44129983534 ns/iter 255836.69937523056 ns/iter 1.44
E2E_Evaluator_importmap 49169.61704835377 ns/iter 39725.18985068377 ns/iter 1.24
E2E_Evaluator_jasmine 126702.11554283543 ns/iter 113420.75630387815 ns/iter 1.12
E2E_Evaluator_jshintrc 1111706.0222578375 ns/iter 1070403.210122686 ns/iter 1.04
E2E_Evaluator_jsconfig 448436.0556273068 ns/iter 423248.6903893248 ns/iter 1.06
E2E_Evaluator_krakend 220395.1033044884 ns/iter 196571.2626149684 ns/iter 1.12
E2E_Evaluator_lazygit 151669.87018603637 ns/iter 137474.15685131727 ns/iter 1.10
E2E_Evaluator_lerna 174876.63361089645 ns/iter 139452.40824494432 ns/iter 1.25
E2E_Evaluator_nest_cli 211893.21590215433 ns/iter 198769.5436145868 ns/iter 1.07
E2E_Evaluator_omc 24462.992345695788 ns/iter 25419.761232158133 ns/iter 0.96
E2E_Evaluator_omnisharp 609034.7796902804 ns/iter 557525.6988817935 ns/iter 1.09
E2E_Evaluator_openapi 15091533.577778034 ns/iter 15252136.955556732 ns/iter 0.99
E2E_Evaluator_pre_commit_hooks 549972.3896713952 ns/iter 508958.21060495166 ns/iter 1.08
E2E_Evaluator_pulumi 796392.5084743486 ns/iter 790036.378684704 ns/iter 1.01
E2E_Evaluator_semantic_release 106621.167299252 ns/iter 90759.97396905677 ns/iter 1.17
E2E_Evaluator_stale 178731.98267070492 ns/iter 176272.7294416445 ns/iter 1.01
E2E_Evaluator_stylecop 317539.7209729247 ns/iter 321823.12962120125 ns/iter 0.99
E2E_Evaluator_tmuxinator 108490.22280109517 ns/iter 97036.08396840247 ns/iter 1.12
E2E_Evaluator_ui5 624431.8162355575 ns/iter 589890.6180438129 ns/iter 1.06
E2E_Evaluator_ui5_manifest 3121941.566372239 ns/iter 3014479.7296129637 ns/iter 1.04
E2E_Evaluator_unreal_engine_uproject 508449.7469269412 ns/iter 471823.59186435706 ns/iter 1.08
E2E_Evaluator_users_array 695061.6768774769 ns/iter 702022.0090450937 ns/iter 0.99
E2E_Evaluator_vercel 354598.4790388853 ns/iter 303110.3870417701 ns/iter 1.17
E2E_Evaluator_yamllint 13051.701218270855 ns/iter 12264.993793396 ns/iter 1.06
Schema_Format_ISO_Language_To_JSON 100154726.00002794 ns/iter 98461343.14290924 ns/iter 1.02
Schema_Bundle_Meta_2020_12 1460825.4163160084 ns/iter 1402833.9582549578 ns/iter 1.04
Schema_Frame_WoT_References 4715149.506755613 ns/iter 4811232.468966472 ns/iter 0.98
Schema_Frame_OMC_References 20762359.424238775 ns/iter 21804884.406250834 ns/iter 0.95
Schema_Frame_OMC_Locations 19346708.38889158 ns/iter 20271133.38235321 ns/iter 0.95
Schema_Frame_ISO_Language_Locations 92527190.57141283 ns/iter 95060108.57142298 ns/iter 0.97
Schema_Frame_ISO_Language_Root 435.605667380165 ns/iter 424.76780221342113 ns/iter 1.03
Schema_Frame_KrakenD_References 37602335.99999944 ns/iter 39165532.47057998 ns/iter 0.96
Schema_Frame_KrakenD_Reachable 439252958.9999867 ns/iter 449511595.50009835 ns/iter 0.98
Schema_Frame_ISO_Language_Locations_To_JSON 200999556.00001824 ns/iter 193226764.33337924 ns/iter 1.04
Schema_Frame_Many_Resources_References 353321143.5000112 ns/iter 368139938.5000077 ns/iter 0.96
Schema_Frame_Deeply_Nested_References 11224431.37096745 ns/iter 11673564.049999641 ns/iter 0.96
Schema_Tracker_ISO_Language 4988118.776978978 ns/iter 5028752.911999618 ns/iter 0.99
Schema_Tracker_ISO_Language_To_JSON 18994609.918917302 ns/iter 18102416.82051128 ns/iter 1.05

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions 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.

JavaScript (linux/gcc)

Details
Benchmark suite Current: 95f78b3 Previous: 3c70205 Ratio
E2E_Evaluator_adaptivecard 121236 ns 120009 ns 1.01
E2E_Evaluator_ansible-meta 511149 ns 538298 ns 0.95
E2E_Evaluator_aws-cdk 147097 ns 132758 ns 1.11
E2E_Evaluator_babelrc 354946 ns 337435 ns 1.05
E2E_Evaluator_cerebrum-criminal-case 2496846 ns 2600017 ns 0.96
E2E_Evaluator_clang-format 251332 ns 257406 ns 0.98
E2E_Evaluator_cmake-presets 17922423 ns 18058793 ns 0.99
E2E_Evaluator_code-climate 536195 ns 502594 ns 1.07
E2E_Evaluator_cql2 1311252 ns 1356703 ns 0.97
E2E_Evaluator_cspell 1467239 ns 1600309 ns 0.92
E2E_Evaluator_cypress 785055 ns 825913 ns 0.95
E2E_Evaluator_deno 1072703 ns 1084908 ns 0.99
E2E_Evaluator_dependabot 1126395 ns 1084077 ns 1.04
E2E_Evaluator_draft-04 21509695 ns 20556891 ns 1.05
E2E_Evaluator_fabric-mod 2377950 ns 2411457 ns 0.99
E2E_Evaluator_geojson 24754952 ns 24961568 ns 0.99
E2E_Evaluator_gitpod-configuration 723886 ns 722763 ns 1.00
E2E_Evaluator_helm-chart-lock 985550 ns 1051301 ns 0.94
E2E_Evaluator_importmap 265937 ns 272303 ns 0.98
E2E_Evaluator_jasmine 306076 ns 279967 ns 1.09
E2E_Evaluator_jsconfig 1241878 ns 1406254 ns 0.88
E2E_Evaluator_jshintrc 2733422 ns 2901107 ns 0.94
E2E_Evaluator_krakend 676600 ns 636532 ns 1.06
E2E_Evaluator_lazygit 504756 ns 464273 ns 1.09
E2E_Evaluator_lerna 469004 ns 438338 ns 1.07
E2E_Evaluator_nest-cli 584049 ns 606273 ns 0.96
E2E_Evaluator_omc 119657 ns 115720 ns 1.03
E2E_Evaluator_omnisharp 1385570 ns 1452065 ns 0.95
E2E_Evaluator_openapi 42390649 ns 40122556 ns 1.06
E2E_Evaluator_pre-commit-hooks 2081019 ns 2047419 ns 1.02
E2E_Evaluator_pulumi 1879598 ns 1974150 ns 0.95
E2E_Evaluator_semantic-release 252431 ns 236129 ns 1.07
E2E_Evaluator_stale 399354 ns 387379 ns 1.03
E2E_Evaluator_stylecop 1209912 ns 1204861 ns 1.00
E2E_Evaluator_tmuxinator 233208 ns 217233 ns 1.07
E2E_Evaluator_ui5 2264737 ns 2197666 ns 1.03
E2E_Evaluator_ui5-manifest 10370833 ns 9694830 ns 1.07
E2E_Evaluator_unreal-engine-uproject 1507422 ns 1553546 ns 0.97
E2E_Evaluator_users-array 3246308 ns 2856907 ns 1.14
E2E_Evaluator_vercel 1004363 ns 1014923 ns 0.99
E2E_Evaluator_yamllint 25869 ns 23842 ns 1.09

This comment was automatically generated by workflow using github-action-benchmark.

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

3 issues found across 12 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. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/canonicalizer/rules/min_properties_covered_by_required.h">

<violation number="1" location="src/canonicalizer/rules/min_properties_covered_by_required.h:27">
P2: When `required` contains duplicate non-string entries, this guard skips the new string-only handling and leaves canonicalization incomplete. Check uniqueness after filtering valid string names.</violation>
</file>

<file name="src/canonicalizer/rules/implicit_object_keywords.h">

<violation number="1" location="src/canonicalizer/rules/implicit_object_keywords.h:48">
P2: When `required` contains duplicate strings, this counts the same property more than once and emits an overly large `minProperties`. Count distinct string names instead, so `required: ["a", "a"]` does not reject one-property instances after deduplication.</violation>
</file>

<file name="src/canonicalizer/rules/unknown_type_names.h">

<violation number="1" location="src/canonicalizer/rules/unknown_type_names.h:47">
P2: When `type` is a non-string scalar such as `42`, `condition()` returns false before `transform()` runs, so this non-array cleanup is unreachable for that invalid form. Make `condition()` continue for non-array, non-string `type` values as well.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

required && required->is_array() && required->unique() &&
std::cmp_greater(required->size(), static_cast<std::uint64_t>(
min_properties->to_integer())));
ONLY_CONTINUE_IF(required && required->is_array() && required->unique());

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: When required contains duplicate non-string entries, this guard skips the new string-only handling and leaves canonicalization incomplete. Check uniqueness after filtering valid string names.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/canonicalizer/rules/min_properties_covered_by_required.h, line 27:

<comment>When `required` contains duplicate non-string entries, this guard skips the new string-only handling and leaves canonicalization incomplete. Check uniqueness after filtering valid string names.</comment>

<file context>
@@ -24,15 +24,26 @@ class MinPropertiesCoveredByRequired final : public SchemaTransformRule {
-        required && required->is_array() && required->unique() &&
-        std::cmp_greater(required->size(), static_cast<std::uint64_t>(
-                                               min_properties->to_integer())));
+    ONLY_CONTINUE_IF(required && required->is_array() && required->unique());
+
+    // Only string entries name a property, so only they raise the lower bound
</file context>

schema.assign("minProperties", sourcemeta::core::JSON{0});
for (const auto &property : schema.at("required").as_array()) {
if (property.is_string()) {
names += 1;

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: When required contains duplicate strings, this counts the same property more than once and emits an overly large minProperties. Count distinct string names instead, so required: ["a", "a"] does not reject one-property instances after deduplication.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/canonicalizer/rules/implicit_object_keywords.h, line 48:

<comment>When `required` contains duplicate strings, this counts the same property more than once and emits an overly large `minProperties`. Count distinct string names instead, so `required: ["a", "a"]` does not reject one-property instances after deduplication.</comment>

<file context>
@@ -40,12 +40,17 @@ class ImplicitObjectKeywords final : public SchemaTransformRule {
-        schema.assign("minProperties", sourcemeta::core::JSON{0});
+        for (const auto &property : schema.at("required").as_array()) {
+          if (property.is_string()) {
+            names += 1;
+          }
+        }
</file context>


auto transform(sourcemeta::core::JSON &schema) const -> void override {
if (schema.at("type").is_string()) {
if (!schema.at("type").is_array()) {

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: When type is a non-string scalar such as 42, condition() returns false before transform() runs, so this non-array cleanup is unreachable for that invalid form. Make condition() continue for non-array, non-string type values as well.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/canonicalizer/rules/unknown_type_names.h, line 47:

<comment>When `type` is a non-string scalar such as `42`, `condition()` returns false before `transform()` runs, so this non-array cleanup is unreachable for that invalid form. Make `condition()` continue for non-array, non-string `type` values as well.</comment>

<file context>
@@ -44,14 +44,14 @@ class UnknownTypeNames final : public SchemaTransformRule {
 
   auto transform(sourcemeta::core::JSON &schema) const -> void override {
-    if (schema.at("type").is_string()) {
+    if (!schema.at("type").is_array()) {
       schema.erase("type");
       return;
</file context>

Metaschema checks should be run by a user beforehand, to confirm the
schema is fully valid to begin with.

See: sourcemeta/jsonschema#834
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@jviotti
jviotti force-pushed the reject-invalid-applicators branch from a1ec864 to 95f78b3 Compare August 29, 2026 19:09

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

2 issues found across 16 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. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/compiler/compile.cc">

<violation number="1" location="src/compiler/compile.cc:593">
P1: When `anyOf` or `oneOf` contains a non-schema element, this return turns the invalid element into an empty, successful branch. For example, `anyOf: [1, false]` and `oneOf: [1, false]` pass instead of ignoring `1`; filter invalid branches before constructing the disjunction.</violation>
</file>

<file name="src/evaluator/evaluator_describe.cc">

<violation number="1" location="src/evaluator/evaluator_describe.cc:332">
P2: A `false` subschema under a property that happens to be named `anyOf` or `oneOf` (e.g. `{"properties":{"anyOf":false}}`) now hits this branch because the evaluate path ends at the author-chosen name, so it reports "not expected to validate against the empty list of subschemas" even though the array is not empty. This is the same collision the neighbouring additionalProperties/unevaluatedProperties branches guard against with an instance_location check; distinguish a genuine empty applicator (schema path ending at the `anyOf`/`oneOf` keyword) from a property named like the keyword.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread src/compiler/compile.cc
// An invalid schema may set an applicator to a value that is not a schema
// at all, in which case we consider it to impose no constraints
if (!new_schema.is_object() && !new_schema.is_boolean()) [[unlikely]] {
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: When anyOf or oneOf contains a non-schema element, this return turns the invalid element into an empty, successful branch. For example, anyOf: [1, false] and oneOf: [1, false] pass instead of ignoring 1; filter invalid branches before constructing the disjunction.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/compiler/compile.cc, line 593:

<comment>When `anyOf` or `oneOf` contains a non-schema element, this return turns the invalid element into an empty, successful branch. For example, `anyOf: [1, false]` and `oneOf: [1, false]` pass instead of ignoring `1`; filter invalid branches before constructing the disjunction.</comment>

<file context>
@@ -547,7 +586,12 @@ auto compile(const Context &context, const SchemaContext &schema_context,
+  // An invalid schema may set an applicator to a value that is not a schema
+  // at all, in which case we consider it to impose no constraints
+  if (!new_schema.is_object() && !new_schema.is_boolean()) [[unlikely]] {
+    return {};
+  }
 
</file context>

return "The constraints declared for this keyword were not satisfiable";
}

if (keyword == "anyOf" || keyword == "oneOf") {

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: A false subschema under a property that happens to be named anyOf or oneOf (e.g. {"properties":{"anyOf":false}}) now hits this branch because the evaluate path ends at the author-chosen name, so it reports "not expected to validate against the empty list of subschemas" even though the array is not empty. This is the same collision the neighbouring additionalProperties/unevaluatedProperties branches guard against with an instance_location check; distinguish a genuine empty applicator (schema path ending at the anyOf/oneOf keyword) from a property named like the keyword.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/evaluator/evaluator_describe.cc, line 332:

<comment>A `false` subschema under a property that happens to be named `anyOf` or `oneOf` (e.g. `{"properties":{"anyOf":false}}`) now hits this branch because the evaluate path ends at the author-chosen name, so it reports "not expected to validate against the empty list of subschemas" even though the array is not empty. This is the same collision the neighbouring additionalProperties/unevaluatedProperties branches guard against with an instance_location check; distinguish a genuine empty applicator (schema path ending at the `anyOf`/`oneOf` keyword) from a property named like the keyword.</comment>

<file context>
@@ -329,6 +329,14 @@ auto describe(const bool valid, const Instruction &step,
       return "The constraints declared for this keyword were not satisfiable";
     }
 
+    if (keyword == "anyOf" || keyword == "oneOf") {
+      std::ostringstream message;
+      message << "The " << type_name(target.type())
</file context>

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