
Someone replied to a comment of mine yesterday and pushed the point one layer deeper than I had it.
What I had said was that when AI gets a Chinese astrology reading wrong, you should first separate two kinds of wrong. Either the chart itself was computed incorrectly, which is arithmetic and checkable in ten minutes, or the interpretation was off, which is judgement and never fully checkable.
He said there is a third. He said his own birth data sits nowhere near any boundary, nothing marginal about it, and he handed the model an already correct chart so it would not have to compute anything. It still got the reading wrong. And the failure was specific. It misread which pillar one of the ten gods was sitting in. Once the position moves, everything downstream turns with it.
That stopped me for a second.
Because what he described is not in either of my two layers. The chart was right. The arithmetic held. The model was not hallucinating either, it was reasoning carefully. It simply read the chart crooked.
That is the third layer. Retrieval.
Laid out side by side the three behave very differently. The first is an arithmetic error, and the four pillars coming out are wrong from the start, which you can settle against an almanac. The third is a judgement error, where the same correct chart yields two different conclusions from two readers, and there is no referee there, ever. The middle one is the nasty one. It looks like a judgement error and it is actually a mechanical one, and it never throws an exception.
The answer reads fluent, confident, well supported. It is just that the chart being discussed is not quite the chart in your hand.
My old explanation for this was that the model has no concept of position. It receives a flat run of characters, so a Jia in the year stem and a Jia in the hour stem differ only by how many tokens sit between them, not by where they sit on the grid.
That explanation is wrong. Or at least imprecise.
A group at Harbin Institute of Technology published a mechanistic analysis in February that takes apart exactly how a language model locates a cell inside a table. Activation patching, linear probing, attention ablation, the whole toolkit. They split the process into three stages. Semantic binding, where the query gets aligned to the headers. Coordinate localization, where the target row and column get resolved. Then information extraction, where the value in that cell finally gets pulled out.
So the model does have a concept of position.
The interesting part is stage two. The coordinates are counted.
The paper is blunt about it. The model resolves coordinates through an ordinal mechanism, and the operation that mechanism performs is counting delimiters. Counting pipe characters. Those | marks are not decoration, they are the pegs the model builds its coordinate system on. The authors ran causal experiments on the delimiters, and stripping them out stops the counting mechanism from activating at all.
Better still is the shape they probed out. Column indices show up in activation space as a sawtooth pattern, row indices as a staircase. The model is not taking in the whole table at once. It is counting across, one cell at a time, landing in a linear subspace you can then steer with vector arithmetic.
So when the model reads your four pillars it is doing something other than what you pictured. You imagined it looking at a table. It is counting pipes.
Which gives the misreading a very physical explanation.
Counted quantities drift. The further along you count, the easier it is to be off by one. Four pillars means four columns, year at the front, hour at the back. If the error really does accumulate with the count, the hour pillar should be misread more often than the year pillar. I will flag that one honestly. It is derived from the mechanism in the paper, I have not run a systematic comparison myself, and I have only seen hour pillars go astray on a handful of samples, which proves nothing.
The other implication is already testable, and easy to test.
If the coordinate system rests on delimiters, then the formatting you feed in decides your retrieval accuracy directly. Take the same set of stems and branches and write them out as one running line separated by spaces, and the model has no pegs to count, no coordinate frame, so it falls back on guessing from meaning. Write them as one pillar per row with pipes around every field, and the counting mechanism finally has something to count.
Nothing mystical there. You either hand it a ruler or you do not.
I find this genuinely counterintuitive. The whole debate about whether AI can do Chinese astrology is a debate about whether the model understands the system, how much classical text is in the training data, whether someone should fine tune a dedicated model. Very few people go one layer down and ask whether the job is bottlenecked somewhere else entirely, on what the chart looks like when it arrives.
Reading the old texts again with this in mind feels different.
The Yuan Hai Zi Ping has a passage called the five elements outline, which says that in laying out the eight characters the day stem is taken as the subject, the year is taken as the root and stands for the ancestors and their property, the month is taken as the sprout and stands for the parents, the day stem is the self, and the day branch is the spouse. Look at what that passage is doing. It is assigning meaning to positions. The year slot governs lineage, the month slot governs parents, the day stem is you, the day branch is your partner. The same character Jia in the year slot and in the day slot are saying two entirely different things.
Which is to say the eight characters were a two dimensional table where position carries meaning, from day one.
Zi Wei is even more explicit. The Tai Wei Fu, which opens the Complete Book of Zi Wei Dou Shu, has a line saying that stars share a path while the numbers divide by allotment, that one must understand generation and restraint, and must examine closely the distinction between holding one's proper wall and losing one's degree. Sharing a path means sharing a palace. That last distinction, holding the wall or losing the degree, is about whether a star landed in the right position or the wrong one.
The old commentators went that far. Position is itself information.
And the current practice is to flatten that two dimensional thing into a single run of characters and hand it to a system that finds positions by counting pipes.
Zi Wei loses more in this than BaZi does. Four pillars is only four columns, and flattened they still sit next to each other. Zi Wei is twelve palaces arranged in a ring, and the three harmonies and four cardinals pick out the home palace, its opposite, and two trine palaces, four positions with real geometry between them. Flattened into text, a palace and its opposite can end up hundreds of characters apart with other palaces' stars stuffed in between. Asking the model to work with that structure means asking it to reconstruct the geometry from the count.
So when he said it misread which pillar the god was in, I do not read that as the model being stupid. We took a diagram apart and then asked it to rebuild the diagram by counting.
Here is what you can actually do about it today.
First, change how you feed it. Do not paste the whole chart as a paragraph. One pillar per row, and on each row spell out which pillar it is, the stem, the branch, and the ten god, with pipes between the fields. Work out the ten gods yourself and write them in. Do not make the model locate positions and then derive them. That single change removes most of the retrieval risk.
Second, run a readback test. Once the chart is in, do not ask for a conclusion yet. Ask it to restate which pillar each ten god sits in. If the restatement is already wrong, you have caught a retrieval problem, so change the formatting and start over. If the restatement is perfect and the reading is still wrong, that is a judgement problem, formatting will not touch it, and you need a different fix. The value of this step is that it separates the two kinds of error, and without it you never know whether to rewrite the prompt or change the model.
Third, check whether it is computing or reciting. The ten gods are not fixed labels glued onto characters, they are derived by comparing everything against the day stem. So keep the same set of stems and branches, swap only the day stem, and feed it again. Every ten god should change. If what comes back resembles the previous answer, it is not computing, it is reproducing a combination it saw in training.
All three together run about ten minutes, and require no knowledge of astrology or of models.
Back to him. His exact words were that everything changes.
He meant his own chart. The sentence reads another way too. One cell read crooked and everything changes. The reason this system survived centuries of hand copying is that every position was pinned down, so anyone computing it landed in the same cell. The fragile part was never whether the explanation is convincing. It is whether someone quietly shifted a cell.
Whether you believe in any of this is one question. Whether what it read was your chart is a different one. That second question you can settle yourself in ten minutes.
Louis
Frequently Asked Questions
I gave it a correctly computed chart, so why is it still wrong?
A correct chart only guarantees that the arithmetic layer is clean. The model's next job is to locate things on that chart, which pillar a ten god occupies, which palace a transformation landed in. It rebuilds those coordinates by counting delimiters, and that has nothing to do with whether the chart itself is right. Paste it as a paragraph and it has more room to miscount.
Does feeding it as a table really make a difference?
It does, and there is a mechanistic reason. The Harbin analysis ran causal experiments on delimiter tokens and found them necessary for activating the model's internal coordinate counting. So one pillar per row with pipes is not a cosmetic preference.
Should AI just stay away from Chinese astrology then?
My view is that it is a division of labour. Give the calendar arithmetic to deterministic code, which returns the same answer every time. Organizing, cross referencing, turning a pile of structure into readable language, models are decent at that. The retrieval layer in between can be improved by how you feed it, which is what those three steps are for. As for the final judgement layer, nobody has a referee there, so keep some doubt of your own.
⚠️ FateStar generates and interprets your chart based on the traditional Chinese discipline of Zi Wei Dou Shu (紫微斗数). All content is for informational and reflective purposes only.
About the Author

Founder of FateStar. He began structured study of San He Zi Wei Dou Shu in 2020 and is responsible for product method, source organization, and content review. Personal experience is not presented as scientific proof.
More about Louis →

