コントラクトはループの心臓で、その心臓に穴が空いていました。合格しろという圧力の下にいるジェネレーターは、アサーションを技術的には満たす、いちばん怠けた読み方を見つけます。ある関数に「空の入力を扱え」と求めると、早期リターンするガードを足してコントラクトは満たしたと言い張る一方で、本来の振る舞いは壊れたまま、ということが起こります。ループがこうした退化した、実質何もしていない充足をいくつか受け入れるのを見て、悪いのはモデルではなくプロンプトだと判断しました。
そこで一日かけて、まさにそれに対してコントラクトとエバリュエーターのプロンプトを固めました。受け入れ基準は、呼び出し回数ではなく正味の効果へ寄せたので、「関数が呼ばれた」が「出力が正しい」の代わりになることはもうありません。エバリュエーターは成果物に同梱された検証をそのまま走らせ、退化した入力や出し抜いた入力を、合格ではなく不合格として扱います。コントラクトの交渉も、簡潔で釣り合いの取れたアサーションへ押し進めました。膨らんだコントラクトは、出し抜く余地が増えるだけだからです。これで出し抜きが不可能になるわけではありません。正直な道をいちばん簡単な道にするだけ。実際には、それがほとんどの勝ちなのです。