Kashish Dugar

Moonlight Build Log: Papa and I are building Moonlight with AI agents. I am the tech lead. I make the decisions and check the work. The agents write the code.

Moonlight ran for the first time

Today an agent built the terminal runner. You type one command and a disease, and Moonlight prints the clues.

python cli.py "pulmonary arterial hypertension"

The first line it prints is the safety line, so nobody can read a clue without seeing it. Sildenafil is not in the list. It is already approved for our disease, so it is not a clue. That is the golden test from my paper graph.

My ranking rule

Moonlight found 16 new clues for my five proteins. Which one goes first? I wrote my rule in my notebook before any code.

  1. Highest protein score first.
  2. If tied, more reports first.
  3. If still tied, alphabetical order.

A medicine shows once, even if it grabs more than one protein. Then its scores are added.

The protein score is about our disease. The reports only break ties. So a famous medicine cannot jump the queue.

My six test medicines came out in this order: Dibotermin Alfa, Eptotermin Alfa, Sevoflurane, Halothane, Sparsentan, Avanafil. The code got the same order.

The relay team bug

With all 25 proteins, the first clue was Isosorbide Mononitrate with a score of 1.76. That was odd, because the biggest score on my graph is 0.85.

It grabs three proteins: GUCY1A1, GUCY1B1 and GUCY1A2. But they are three pieces of one machine. My rule added them, 0.60 + 0.58 + 0.58. That is like counting one relay win as three wins.

So I changed my rule. Pieces of the same machine count once, using the strongest piece. Different machines still add. Now its score is 0.60.

My rule was not wrong on paper. Real data showed me something my paper did not have.

When an agent asks to change a test

My rulebook says an agent must never change a test to make it pass. Today agents asked me three times. Each time they showed me the line before and after.

I said yes, because I had asked for those changes. My answer key (16, 2, 6, 12) did not change. It is like changing the sign on a swim lane after the lane rule changes.

Rules for explanations

Gemini will write a few sentences for each clue. I wrote one myself first, for Sevoflurane, so Gemini has an example.

My errors in it:

My rules now:

The ending is added by the code, not by Gemini, so it is always the same:

But there is a catch. Nobody knows from our information if the disease needs this protein turned up or down. So this is a clue to read about. It is not a treatment. Do not try it.

If Gemini is busy, the code writes a plain explanation itself. It is like a reserve swimmer in a relay.

New words

The commits

Five merges today. There are 197 tests and they all pass. Pull request #13 is waiting for my review.

Designing the page

Mumma is the designer. We are sketching the web page on paper: the name, the disease, a card for each clue, and the disclaimer at the bottom. It is not finished yet.

Next

Finish the design, build the page, and let Agastya try to break it.