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