advanced features / phantom types
✓ 65 passing ✗ 6 failing ○ 5 planned
Lessons
1 ✓
Passing
006 cleanup consumed by disposal
2 ✓
Passing 007 use after disposal
3 ✓
Passing 008 obligation escapes via interface
4 ✓
Passing 009 universal wildcard metatype
5 ✓
Passing 010 module wildcard metatype
6 ✓
Passing 011 auto discharge multiple
7 ✗
Failing 012 auto discharge explicit with multiple — backend-exec
8 ✓
Passing 013 auto discharge explicit ok
9 ✓
Passing 014 scope for loop inner
10 ✓
Passing 015 scope for loop outer
11 ✗
Failing 016 scope nested — backend-exec
12 ○
Planned 017 scope label loop — Auto-dispose for obligations in @loop branches not implemented
13 ✓
Passing 018 auto discharge escaped obligation
14 ✓
Passing 019 auto discharge branch constructor
15 ○
Planned 020 auto discharge void event — TODO: Auto-dispose doesn't trigger before void event invocations
16 ✓
Passing 021 auto discharge multiple resources
17 ✓
Passing 022 if manual both branches
18 ✗
Failing 023 if auto both branches — backend-exec
19 ✓
Passing 024 if hybrid manual auto
20 ✓
Passing 025 auto discharge disabled
21 ✓
Passing 026 auto discharge warn
22 ✓
Passing 027 db transaction pattern
23 ✓
Passing 028 ambiguous without default
24 ✓
Passing 029 module qualified phantom states
25 ✓
Passing 030 taps with auto discharge
26 ✓
Passing 031 tap binding substitution
27 ✓
Passing 032 nested for scopes
28 ✓
Passing 033 phantom state mismatch
29 ✓
Passing 034 unknown phantom module
30 ✓
Passing 035 autodischarge prefers void
31 ✓
Passing 036 autodischarge no void candidate
32 ✓
Passing 037 default discharge must be void
33 ✓
Passing 038 cleanup obligation satisfied
34 ○
Planned 039 transition metatype — Feature: Transition metatype requires taps.eventToString and taps.branchToString which don't exist yet
35 ✓
Passing 040 undisposed nested obligation
36 ✓
Passing 041 auto discharge single
37 ✓
Passing 042 metatype binding scope
38 ✓
Passing 043 auto discharge none
39 ✓
Passing 044 for manual done ok
40 ✓
Passing 045 for manual each error
41 ✓
Passing 046 for auto done ok
42 ✓
Passing 047 nested if in for
43 ✓
Passing 048 nested for in if
44 ✓
Passing 049 default discharge annotation
45 ✓
Passing 050 union accepts either state
46 ✓
Passing 051 union with consume marker
47 ✓
Passing 052 escape field name mismatch
48 ✓
Passing 053 for loop obligation escape
49 ✓
Passing 054 optional branch obligation
50 ○
Planned 055 auto discharge cascade — Cascading auto-discharge: discharge creates new obligations that also need discharging
51 ✓
Passing 056 union per member consume marker
52 ✓
Passing 057 auto discharge emission parity
53 ✓
Passing 058 reject issue on input
54 ✓
Passing 059 reject consume on output
55 ✗
Failing 060 reject state mismatch on input — must-fail-passed
56 ✓
Passing 061 inline obligation cascade
57 ✓
Passing 062 reject identity struct mismatch
58 ✓
Passing 063 phantom state on primitive
59 ✓
Passing 064 reject phantom primitive mismatch
60 ✓
Passing 065 phantom compound unit
61 ✓
Passing 066 phantom literal suffix callsite
62 ✓
Passing 067 reject bare literal at phantom param
63 ✓
Passing 068 phantom obligation on primitive string
64 ✓
Passing 069 reject undischarged string obligation
65 ✓
Passing 070 auto discharge strict convention
66 ✗
Failing 071 aspire chain autodischarge — backend-exec
67 ✓
Passing multiple cleanup paths
68 ✓
Passing multiple resources cleanup
69 ✗
Failing multiple resources partial cleanup — must-fail-passed
70 ✓
Passing state variable wildcard
71 ✓
Passing state variable constrained accepts
72 ✓
Passing state variable constraint violation
73 ✓
Passing state variable chaining
74 ○
Planned phantom state mismatch — Feature: Phantom state mismatch detection
75 ✓
Passing phantom state valid
76 ✓
Passing multiple errors