create_v2 instructions can legally omit the trailing is_cashback_enabled
OptionBool from the wire; decode_instruction rejected that form, so every
consumer of parse_token_creation_from_instruction silently dropped those
coins (the committed blocksubscribe fixture carries one such 145-byte
create_v2).
- When the arg buffer is exhausted and every remaining arg is
option-typed (native option or pump.fun's OptionBool), report them as
unset (None) instead of failing the decode; mandatory args still fail.
- Count trailing optional args as 0 bytes in the instruction min-size
table.
- Decode Anchor's native option type (1-byte tag + value), previously
unsupported entirely - update_buyback_config's Option<u64> could not
even be sized.
- Add learning-examples/verify_create_v2_optional_args.py machine-checking
the omitted, present, truncated-mandatory and native-option forms plus
the event-parser path against the committed fixture.
- Drop the append-0x00 workaround in verify_extreme_fast_zero_rpc.py and
update the stale CLAUDE.md note about the strict decoder.
Fixes#184
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>