Why Medieval Philosophy Matters For Your AI Alignment Problems
I spent about three years working on reward function design for autonomous agents before I stopped treating AI ethics as a purely engineering problem. The turning point came when I started looking at how 14th century scholastic philosophers actually thought about moral decision-making under uncertainty. Specifically, the work of John Buridan and what I now call the Johann Paradox. Here is the core idea. Buridan examined a problem that sounds almost comically simple: if a donkey stands exactly equidistant between two identical piles of hay, what does it do? The answer, according to Buridan, is that it starves. Not because the donkey is stupid. Because the donkey has no rational basis for preferring one pile over the other. In a deterministic framework with no distinguishing features, choice becomes impossible. The parallel to modern AI ethics is not subtle, but most people in the field miss it because they are looking at the wrong layer. We spend enormous energy on value loading, constitutional AI, and preference alignment. What we consistently underweight is the structural problem Buridan identified: when ethical frameworks are truly equivalent in a given context, the system cannot resolve the ambiguity without an external tiebreaker. And that tiebreaker is never neutral.
In practice, this shows up constantly in reinforcement learning from human feedback pipelines. I was auditing a conversational agent designed for medical triage when I hit this directly. The model was asked whether to prioritize patient confidentiality or duty-to-warn in a scenario where both obligations had equal weight under the governing policy. The training data contained hundreds of examples, but none where the competing duties were perfectly balanced. Every example had some asymmetry — a minor injury versus a major one, a clear threat versus a vague one. The model couldn't handle the edge case because the training distribution had no ground truth for it. The workaround I used was not elegant. I went back to the policy documents and explicitly encoded a hierarchy of principles for tiebreaking: confidentiality yields to imminent physical harm, duty-to-warn yields to therapeutic privilege in established treatment relationships, and in cases where neither applies, the system defaults to escalation rather than autonomous resolution. That last rule alone took two weeks of negotiation with the legal team because nobody wanted to commit to an escalation pathway on paper. But it was the only thing that actually worked in production. This is the Johann Paradox in action. Buridan was not saying animals are indecisive. He was pointing out that rational choice requires an asymmetry to latch onto. When ethics are genuinely balanced, the system must either refuse to decide or import an external priority. There is no third option that is value-free.
Most AI ethics frameworks pretend the third option exists. They talk about "neutral" systems or "objective" alignment. What they actually do is hide the tiebreaker rules inside training data or system prompts where nobody reviews them. That is worse than having explicit rules because explicit rules can be contested and revised.
Get the Full Details

How To Actually Apply This In Your Work
Start by mapping the decision boundaries in your system where ethical principles collide. I use a simple spreadsheet. Columns for principle A, principle B, the context variables that tip the scale, and the documented tiebreaker. If you have a row where both principles are equally weighted across all variables, that is your Buridan zone. Every system has them. They are usually hidden in low-frequency edge cases until something goes wrong. Once you identify those zones, you have three honest options. You can encode an explicit tiebreaker, which is the best path when the domain has clear regulatory requirements. You can design the system to escalate, which works when the stakes are high and the cost of a wrong decision is asymmetric. You can reduce the scope of the decision, which means removing the ambiguous choice from the system entirely and routing it to human judgment. I see too many teams choose none of these. They train harder on the ambiguous data instead. This does not solve the problem. It just makes the model overconfident in situations it was never designed to handle. The model will produce a confident answer with no justification, and that is more dangerous than a model that refuses to answer.
There is a counter-intuitive insight here that does not get enough attention. More training data on ambiguous cases usually degrades overall performance. When you add examples to a Buridan zone, the model learns spurious correlations from whatever asymmetries exist in your dataset. You are not teaching it to handle true equivalence. You are teaching it to recognize the accidental features that correlated with one outcome in your particular dataset. The moment you deploy to a different context, those correlations break. I learned this the hard way with a content moderation system. We had a category where community guidelines and free expression principles collided in roughly equal measure across a range of borderline cases. We collected fifty thousand labeled examples. The F1 score on our test set looked fine. Within three weeks of deployment, the model was systematically over-moderating in one demographic subset because the training data happened to contain more examples from that group in the ambiguous region. The asymmetry was in the data, not in the policy. We had to scrap that module and rebuild it with an explicit escalation path for that specific zone. The fix took about four days of engineering work plus a week of review with the policy team. The original approach had consumed two months of labeling and fine-tuning. This is not a universal rule. Sometimes more data is the right answer. But in Buridan zones, where genuine principle conflict exists, more data is usually just more noise dressed as signal.
Where This Approach Fails
The Johann Paradox framework is not a panacea. It does not help when the ethical principles themselves are undefined or when stakeholders disagree on what the principles are. Buridan assumed a shared understanding of the hay piles. In AI ethics, we often cannot even agree that two piles exist. Is safety a principle or a constraint? Is fairness a goal or a boundary condition? These are category errors that no amount of tiebreaking logic resolves. The framework also struggles with dynamically evolving contexts. A tiebreaker that made sense in 2023 may be catastrophically wrong in 2026 because societal norms shifted. I have seen systems built with excellent Buridan-zone analysis become ethically questionable simply because the tiebreakers were frozen in time. The workaround is to build review triggers, not just static rules. When the model encounters a scenario that falls into a known Buridan zone and its confidence exceeds a certain threshold without clear justification, it should flag for human review regardless of the encoded tiebreaker. There is also a practical limitation. Not every team has the institutional bandwidth to do Buridan-zone mapping. It requires philosophers, engineers, and domain experts in the same room, which is an expensive and rare configuration. In smaller organizations, the most realistic approach is to focus on high-stakes decision boundaries only. Map the five zones where wrong answers cause actual harm. Leave the low-stakes ambiguity unexamined. You will catch most of the serious problems with that level of effort.

If you want to dig into the original source material, Buridan's commentary on Aristotle's Ethics and his Questions on the Nichomachean Ethics are the relevant texts. The Latin is rough but translations exist. What you will find is not a tidy moral system. You will find someone working through exactly the kind of awkward edge cases that AI engineers deal with daily, using vocabulary from natural philosophy rather than computer science. The structure of the reasoning is recognizably the same. The takeaway is not that medieval philosophy solves AI ethics. It is that the structural problem of undecidable choice under competing principles is older than computing and will remain unsolvable by computation alone. The best you can do is make the tiebreakers visible, contestable, and revisable. Anything else is just Buridan's donkey wearing a neural network.