1. HashiCorp Terraform Documentation, "Command: apply": "If you run terraform apply without passing a saved plan file, Terraform automatically creates a new plan as if you had run terraform plan, prompts you to approve it, and then takes the indicated actions." This confirms that a new plan is created at the time of apply.
Source: HashiCorp, Terraform Documentation, "Command: apply", section "Usage".
2. HashiCorp Terraform Documentation, "Execution Plans": "When you run terraform apply without a plan file, Terraform automatically creates a new plan and then prompts you for approval to apply it." This explicitly states that a new plan is created, which will therefore reflect any changes made since a previous plan command was run.
Source: HashiCorp, Terraform Documentation, "Terraform Core Workflow", section "Execution Plans".
3. HashiCorp Learn, "Detect and Manage Drift with Terraform": This tutorial defines the core concept at play. "Drift is the term for when the real-world state of your infrastructure differs from the state defined in your configuration." The terraform plan and terraform apply commands are the primary mechanisms for detecting this drift. The scenario described in the question is a textbook example of drift.
Source: HashiCorp Learn, Tutorials, "Detect and Manage Drift with Terraform".
4. HashiCorp Terraform Documentation, "Terraform State - Resource Drift": "Terraform will detect this drift the next time you run terraform plan or terraform apply, because the real-world properties no longer match the state file's record." This directly supports that apply will detect the drift and act upon the real-world state, not the state that existed during the previous plan.
Source: HashiCorp, Terraform Documentation, "Terraform State", section "Resource Drift".