You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Congrats addendum with dynamic skipped features, strict2 clearability
Runner:
- "Complexity level cleared: NN of MM" — level is the highest complexity
present below the first failing level (real ramp level, not interpolated);
MM is the max complexity in the run.
- Congrats addendum at 100% (0 failures, level = max): 3 paths forward.
The optional-feature list is dynamic — built from features that ACTUALLY
had specs skipped this run (tracked in filter_by_missing), filtered through
Features::FEATURE_DOCS to :optional, excluding :unnecessary Ruby-interop
ones. Adapters that skipped no optional specs get the "push beyond the
suite" suggestion instead.
- Path shortening (<gem>/.../basename:line) and skipped count retained.
strict2 clearability:
- Gate the 7 "NEW STRICT2 CONTRACT" blank-body strict2 specs in
blank_body_error_handling.yml behind a new strict2_blank_body_errors
feature. liquid-ruby 5.13 renders "" for these (suppresses blank-body
errors even in strict2), so they were unimplementable and blocked
clearing for any adapter implementing strict2 + inline_errors.
- Register strict2_blank_body_errors in Features::FEATURE_DOCS as
:unnecessary (aspirational, not yet implemented by liquid-ruby).
- Add to reference adapter (examples/liquid_ruby.rb) and JSON-RPC template
missing_features so they opt out by default. Documented in CLAUDE.md.
- `:template_factory`- Adapter cannot support template factory/artifact callbacks
539
+
- `:strict2_blank_body_errors`- Aspirational "NEW STRICT2 CONTRACT" (strict2 surfaces inline errors even for blank block bodies); liquid-ruby 5.13 does not implement this, so opt out until your adapter deliberately adopts it
Copy file name to clipboardExpand all lines: lib/liquid/spec/cli/features.rb
+5Lines changed: 5 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -97,6 +97,11 @@ module Features
97
97
recommendation: :unnecessary,
98
98
note: "Binary data can't be transmitted in JSON without base64 encoding.",
99
99
},
100
+
strict2_blank_body_errors: {
101
+
description: "strict2 surfaces inline errors even when the block body is blank",
102
+
recommendation: :unnecessary,
103
+
note: "Aspirational 'NEW STRICT2 CONTRACT' not yet implemented by liquid-ruby 5.13 (it still suppresses blank-body errors). Opt out until your implementation deliberately adopts this contract.",
puts" 1. Implement an optional feature you currently opt out of. Each unblocks skipped specs:"
1455
+
puts" 1. Implement an optional feature you skipped specs for this run. Each unblocks more:"
1455
1456
optional.eachdo |f|
1456
-
d=docs[f.to_sym]
1457
-
puts" - #{f}: #{d[:description]}"
1457
+
puts" - #{f}: #{docs[f.to_sym][:description]}"
1458
1458
end
1459
1459
puts" Pros: more coverage, closer to production/theme-ready."
1460
1460
puts" Cons: each needs design + testing; Shopify features need platform context."
1461
-
ifskipped_other > 0
1462
-
puts" (#{skipped_other} other opted-out feature#{skipped_other == 1 ? "" : "s"} are Ruby-interop or core and not worth implementing for a non-Ruby adapter.)"
1461
+
ifother > 0
1462
+
puts" (#{other} other skipped feature#{other == 1 ? "" : "s"} are Ruby-interop or core — not worth implementing for a non-Ruby adapter.)"
1463
1463
end
1464
-
elsifmissing_features.any?
1465
-
puts" 1. Your opted-out features (#{missing_features.join(", ")}) are all Ruby-interop or core —"
1466
-
puts" not worth implementing for a non-Ruby adapter. Try the shopify_theme_dawn suite"
1467
-
puts" (-s shopify_theme_dawn) for real-world theme specs instead. Pros: production-shaped"
0 commit comments