chameleon 2.38.27
Round 5 closed the malformed-argument crash class deterministically rather than by
sampling. Round 4 kept surfacing individual tools that raised on a non-string
argument (a fail-open contract violation), so instead of another agent hunt, every
model-callable tool was fuzzed exhaustively: each string parameter of all 45 tool
functions set to a list/dict/int/bool/bytes against a real repo. The sweep now
reports zero crashes.
Fixed
merge_profilesraised on a non-stringbase/ours/theirs(Path() on a
list) — guarded to a cleanfailedenvelope.teach_profileraised on a non-stringfeedback— guarded.parse_edited_functionsraised on a non-stringfile_path— guarded to its
documented[]-on-error contract.
With these, all 45 model-callable tool functions fail open (a typed envelope, never
a traceback) on any malformed string argument, verified by an exhaustive fuzz that
is now part of the confirmation battery.