Program: 179570
Project: 179570
Buggy source:
@Override protected void process(Entity e){
  CharacterControllerComponent component=e.getComponent(CharacterControllerComponent.class);
  CharacterController characterController=component.getCharacterController();
  AnimationComponent animationComponent=e.getComponent(AnimationComponent.class);
  PhysicsComponent physicsComponent=e.getComponent(PhysicsComponent.class);
  Body body=physicsComponent.getBody();
  Contact contact=physicsComponent.getContact();
  if (characterController.isWalking()) {
    animationComponent.setCurrentAnimation(0);
    characterController.getWalkingDirection(direction);
    force.set(direction[0],direction[1]);
    force.mul(10f);
    body.applyForce(force,body.getTransform().getPosition());
    Vector2 linearVelocity=body.getLinearVelocity();
    float speed=Math.abs(linearVelocity.x);
    float maxSpeed=2f;
    if (speed > maxSpeed) {
      float factor=maxSpeed / speed;
      linearVelocity.x*=factor;
      body.setLinearVelocity(linearVelocity);
    }
  }
 else {
    if (contact.isInContact()) {
      animationComponent.setCurrentAnimation(1);
      Vector2 linearVelocity=body.getLinearVelocity();
      linearVelocity.x=0f;
      body.setLinearVelocity(linearVelocity);
    }
  }
  Vector2 linearVelocity=body.getLinearVelocity();
  if (linearVelocity.y > 0.05f && !contact.isInContact()) {
    animationComponent.setCurrentAnimation(2);
  }
  if (linearVelocity.y < -0.05f && !contact.isInContact()) {
    animationComponent.setCurrentAnimation(3);
  }
  Vector2 normal=contact.getNormal();
  Vector2 horizontal=new Vector2(1f,0f);
  float dot=Math.abs(normal.dot(horizontal));
  if (characterController.jumped() && contact.isInContact() && dot < 0.4f && Math.abs(linearVelocity.y) < 0.01f) {
    Resource<Sound> jumpSound=resourceManager.get("String_Node_Str");
    jumpSound.get().play();
    impulse.set(0f,1.1f);
    body.applyLinearImpulse(impulse,body.getTransform().getPosition());
  }
}

Fixed version (ground truth):
@Override protected void process(Entity e){
  CharacterControllerComponent component=e.getComponent(CharacterControllerComponent.class);
  CharacterController characterController=component.getCharacterController();
  AnimationComponent animationComponent=e.getComponent(AnimationComponent.class);
  PhysicsComponent physicsComponent=e.getComponent(PhysicsComponent.class);
  Body body=physicsComponent.getBody();
  Contact contact=physicsComponent.getContact();
  if (characterController.isWalking()) {
    animationComponent.setCurrentAnimation(0);
    characterController.getWalkingDirection(direction);
    force.set(direction[0],direction[1]);
    force.mul(10f);
    body.applyForce(force,body.getTransform().getPosition());
    Vector2 linearVelocity=body.getLinearVelocity();
    float speed=Math.abs(linearVelocity.x);
    float maxSpeed=2f;
    if (speed > maxSpeed) {
      float factor=maxSpeed / speed;
      linearVelocity.x*=factor;
      body.setLinearVelocity(linearVelocity);
    }
  }
 else {
    if (contact.isInContact()) {
      animationComponent.setCurrentAnimation(1);
      Vector2 linearVelocity=body.getLinearVelocity();
      linearVelocity.x=0f;
      body.setLinearVelocity(linearVelocity);
    }
  }
  Vector2 linearVelocity=body.getLinearVelocity();
  if (linearVelocity.y > 0.05f && !contact.isInContact()) {
    animationComponent.setCurrentAnimation(2);
  }
  if (linearVelocity.y < -0.05f && !contact.isInContact()) {
    animationComponent.setCurrentAnimation(3);
  }
  Vector2 normal=contact.getNormal();
  Vector2 horizontal=new Vector2(1f,0f);
  float dot=Math.abs(normal.dot(horizontal));
  if (characterController.jumped() && contact.isInContact() && dot < 0.4f) {
    Resource<Sound> jumpSound=resourceManager.get("String_Node_Str");
    jumpSound.get().play();
    impulse.set(0f,1.1f);
    body.applyLinearImpulse(impulse,body.getTransform().getPosition());
  }
}