Follow-up from the test-coverage review of PR #756 (#747). The two deferred runtime-guard residuals are tracked asymmetrically in the suite: #754 (effect-operation argument) has a dedicated assertion-bearing pin (test_non_let_tier3_narrowing_warns_unguarded asserts tier3_unguarded + E504), but the #757 generic-instantiated constructor-field deferral is pinned only in prose (a docstring note in test_overall_tier_counts), with no assertion that the runtime guard is absent today.
Add a small codegen test asserting the current deferral: Some(0 - 5) building an Option<Nat> compiles and runs without trapping — the generic field instantiated to @Nat is statically obligated (E503) but carries no per-field mono metadata, so no guard is emitted. When #757 lands, that test flips to a trap and becomes the regression pin — symmetric with how #754 is pinned.
Surfaced by the multi-agent review of PR #756.
Follow-up from the test-coverage review of PR #756 (#747). The two deferred runtime-guard residuals are tracked asymmetrically in the suite: #754 (effect-operation argument) has a dedicated assertion-bearing pin (
test_non_let_tier3_narrowing_warns_unguardedassertstier3_unguarded+ E504), but the #757 generic-instantiated constructor-field deferral is pinned only in prose (a docstring note intest_overall_tier_counts), with no assertion that the runtime guard is absent today.Add a small codegen test asserting the current deferral:
Some(0 - 5)building anOption<Nat>compiles and runs without trapping — the generic field instantiated to@Natis statically obligated (E503) but carries no per-field mono metadata, so no guard is emitted. When #757 lands, that test flips to a trap and becomes the regression pin — symmetric with how #754 is pinned.Surfaced by the multi-agent review of PR #756.