Here is a a more linguistic approach as opposed to the common scientific approach. By definition the concept "Fact" expresses that something in the real world that corresponds to the concept that must hold the truth value TRUE. The terms "analytic" and "Synthetic" will come in hand as well. We say a statement is analytically true if the statement is impossible to be false. For example all bachelors are unmarried men. By the definition of the words alone the statement cannot be false. This type of statement is called logically necessary. On the other hand an analytical false statement exists. These statements make it impossible for the claim to be true and must always have the truth value of false. All triangles have six sides. This statement is called self-contradictory. The word triangle alone expresses the shape must have three sides exactly. To say otherwise is a misuse of the term triangle. The same can be said about the statement I am a married bachelor. The term married expresses one cannot be a bachelor because one has a spouse. The term bachelor expresses one does not and cannot have a spouse and remain a bachelor simultaneously.
So in this light we can see that some facts are logically necessary in terms of our language. All triangles have three sides is a fact. A triangle must have exactly three sides. Any other variation in definition means the language used is ambiguous or the statement must be false. This is the linguistic side.
Then you have the sense verification side. This is what is known as science. Again I could define things a certain way that is not necessarily true to be the case and use language to reduce people creating the rejection of the truth value of a statement. The government creates laws in this way and then refer to the law. This is usually called a precedence. There is authority that goes along with this so there is really no questioning the origin of the precedent. Law is something that must be accepted as is being based on authority. In this sense there are legal facts.
Let's focus on sense verifiable facts. All snakes are reptiles is a factual claim. That is, there are no instances of something being a snake and not being a reptile. This as is, would be impossible to be false. If I err on naming something a snake like I will find a mouse and call that a snake I will have a case of an x that is not a reptile. But the issue is I made a mistake! I mislabeled something which led to the wrong conclusion. A fact is a term like bachelor or triangle that should indicate something to the person you are communicating to which is the term FACT implies what follows must have a truth value of TRUE forever. If I say all apples are red fruits is a fact and someone finds a green apple my original claim is immediately proven "not a fact". Facts have no exceptions with clear unambiguous language. Only when one starts playing word games can someone allegedly bypass the definition of what a fact is. If you find loop holes in a definition then you have evidence the definition is not specific enough as it could be. A lot of rhetorical tricks involve sandbagging techniques. This is where you down play what you already know to be true. Card players popularized this when playing card games like Spades where you tell your card partner you can make 3 definite books with the cards dealt to you but you really can make 5 books. This is deception and does not belong in logic.
Barrack Obama was once the president of the United States. If I said Barrack Obama IS the president of the United States this is either false or poorly worded because if I said the words in 2010 the claim would be true and a false value if I mean current day. Facts cannot be both true and not true. Once specific data like dates were inserted then the truth is forever. Facts can only be true. People are often just mistaken on what they label as fact. I can say any claim x is a fact that does not magically make my claim become true. A mouse does not magically turn into something else because I use the wrong name or classification.