bhagolblog

Founder notes · Ankit Sahu

Computed, not composed

Determinism, append-only ledgers, screened readings, metered credits. Honesty in software is better engineered as an invariant than promised as a virtue.

Two ways in. The gist assumes you have never met any of this before.

Looking down into one of the Jai Prakash Yantra bowls at Jaipur. A hemisphere sunk into the ground is lined with curved white marble segments, each finely engraved with a grid of coordinate lines and graduated scales; deep gaps between the segments open onto red sandstone walls and dark shadow below. Thin cross-wires are stretched across the mouth of the bowl, and a hard diagonal shadow falls across the left half.
Jai Prakash Yantra, Jantar Mantar, Jaipur, photograph by Hans A. Rosbach, 2008. Wikimedia Commons, CC BY-SA 3.0.

An invariant is something a system holds true no matter what happens inside it. Not a policy anyone remembers to follow, not a value in an induction deck, but a property that survives a bad quarter and a new head of growth. Software is unusually good at holding invariants and unusually bad at holding intentions.

The question I keep asking is not whether we intend to be honest. It is which honest things we can make structurally difficult to stop doing.

The test I use is a small one. Take any commitment in this note and ask what would have to happen inside the company for it to quietly stop being true. If the honest answer is that people would have to lose interest, we have written down a value. If the honest answer is that somebody would have to change code, get the change reviewed and leave it sitting in a log, we have built an invariant.

Same input, same chart

A birth chart is a function. Its inputs are the birth data and a small set of stated conventions, and there is no room anywhere in that operation for mood, for what the customer seems to want, or for what would sell. If our engine produces a wrong chart it produces the same wrong chart for everybody, which means the error is findable, reportable and fixable. An error you can reproduce is an error you can be held to.

The conventions are inputs, not opinions, and we print them next to the result. Which ayanāṁśa (अयनांश), which house system, which ephemeris. Two honest programs can differ, but they can only differ in stated ways, and the size of the difference can be measured. A daśā (दशा) sequence is arithmetic too, and plain enough that you can check ours by hand against the working set out in the arithmetic of vimshottari.

Now contrast that with a composed reading. Composition has no fixed point. The same chart, given to the same practitioner in a slow month and a busy one, comes back different, and neither version is checkable, because there is nothing to check it against. This is not an accusation of bad faith. It is a structural fact about prose. Text drifts toward whatever the writer is being paid for, and in this trade the writer is often being paid for alarm.

Computation cannot drift. That is its entire virtue, and it is a virtue nobody has to be good to supply. What computation cannot do is tell you what the chart means, and I want to be exact about that boundary rather than blur it: a birth chart asserts positions and nothing else, a point made carefully in what a birth chart actually computes.

Nothing is erased

Money on bhagol lives in an append-only ledger. Entries are written; entries are never deleted or edited. When something has to be corrected, we write a new entry that offsets the old one, and both remain visible for the rest of time.

None of this is our invention; accounting has worked this way for centuries, and Luca Pacioli printed the first description of the double-entry method in Venice in 1494.

The reason it matters here is refunds. In most consumer businesses a refund is an act of mercy performed by a support agent, and its trace in the system is a row that quietly changes. Under an append-only rule, a refund is an event. It has an amount, a timestamp, a reason code and an author, and it sits permanently next to the charge it reverses. Nobody in the company can make a bad month look better by tidying up. I would rather work under that constraint than promise you I would never be tempted.

Screened before it reaches you

Every reading our software writes passes through the screen described in why we are building bhagol before it is delivered.

The rules are the house's voice invariants turned into checks, published where you can read them. A blocked reading is regenerated or it is not sent, and either way you are not charged for it.

Screening is the cheapest of these commitments to run and the hardest to fake, because a screen either ran or it did not, and the record says which. It is worth noticing what this costs us. Screened readings are duller than unscreened ones, and duller readings are shared less. I have made peace with that.

Priced before you spend

Our readings are bought with credits at prices you see before you spend them. Consultations are sold at fixed, listed rates for a stated scope. Neither mechanism rewards dragging. A practitioner on bhagol who answers your question in eleven minutes earns exactly what one who takes fifty earns, which leaves only one way to earn more: be worth booking again.

None of this makes anyone virtuous. That is the point I want to leave you with. A company's stated values are a claim about the future behaviour of people under pressure you cannot observe, and you have no way to test them until it is too late to matter. An invariant is different. It is a claim about what the system will refuse to do, and every refusal is written down.

We will go on building the honest parts of this company as things the software refuses to do, so that keeping to them is never a decision anyone here gets to make.