# Medicine — what you can do

<!-- GENERATED by ops/tools/skill-sync — do not edit by hand. Run pnpm skills:sync. -->

<!-- GENERATED by ops/tools/skill-sync — do not edit by hand. Run `pnpm skills:sync`. -->

# Medicine — what you can do

`/admin/d/medicine` · pillar `ai`

Run gated drug-discovery investigations — a typed biology graph, an append-only claim ledger, four scores that are never blended, and a human decision at every gate.

## Fetch this, never remember it

These change per install and per release. Call for them - a list written here would be a future lie.

| What | Call | Why |
|---|---|---|
| the closed vocabularies this engine works in | `POST /api/adapters/medicine-engine/vocabulary` | relations, entity classes, claim kinds, evidence tiers, the four score fields, the autonomy levels and the operations. A value outside these resolves to NOTHING and the failure is silent — an empty result reads as "no answer", not "wrong word". |
| what each autonomy level actually permits | `POST /api/adapters/medicine-engine/explainGate` | the whole permission table as data. Two operations are REFUSED at every level including the highest, because they assert something happened outside this process — that is not the top of a scale, it is a different state. |
| what would happen if a proposal were made | `POST /api/adapters/medicine-engine/judgeProposal` | judges one operation through schema, scientific and permission layers WITHOUT writing. A surface or an agent should be able to show the decision before asking for it. |
| the investigations on this install | `POST /api/adapters/medicine-engine/listInvestigations` | each row carries `simulated` and its record rollup. A run in status `awaiting` is asking a person for a decision — that is a result, not a failure. |
| an investigation's claims | `POST /api/adapters/medicine-engine/listClaims` | ALWAYS narrowed by investigationId — the ledger is append-only and grows with use, so an unnarrowed read is refused rather than allowed to scan. Each row carries its own provenance and its `refId` (what it is about, as distinct from the row's own id). |
| what the agents actually did | `POST /api/adapters/medicine-engine/listAgentRuns` | one row per stage, FAILED TURNS INCLUDED — a timeline of successes cannot explain a gap. It carries a capped summary and counts, never the model's prose and never a chain of thought. |

## How to actually do things here

Written by hand, because the order and the traps are the part no file can derive.

### Start an investigation

1. `explainGate` first — read what the autonomy level you are about to pass actually permits.
2. `startInvestigation` with an investigationId, a plan (discovery · repurposing · target-validation) and that level.
3. `getInvestigation` to see where it stopped and what it is waiting for.

**Trap:** It STOPS at its gates and returns `status: "awaiting"`. Report that as an answer and ask the user — do not retry with a higher autonomy level to make it continue.

### Approve or reject a gate

1. `getInvestigation` — read `awaiting` to see whether a STAGE or its WRITES need the decision.
2. Ask the user. Their answer is the decision; yours is not.
3. `decideGate` with the investigationId, approved, and the USER'S name in decidedBy.

**Trap:** NEVER put your own name in decidedBy. A gate exists so a person takes responsibility; an agent approving on its own behalf is the failure the gate was built to prevent. Approving a parked write APPLIES it; rejecting drops it and records the rejection.

### Explain why the system believes something

1. `listClaims` for the investigation, narrowed by kindOf when you know which kind you want.
2. `listAgentRuns` for what produced them, including the turns that failed.
3. Report the four scores separately, and say which values are simulated.

**Trap:** There is no overall score and there will not be. Report confidence, evidenceStrength, modelConfidence and experimentalValidation SEPARATELY. Averaging them hides the zero, and the zero is usually experimentalValidation — the one a reader most needs.

### Say what is real and what is not

1. Read `simulated` on the ROW itself, never a badge or a label a surface chose to render.
2. Check the run's `mode`: `mock` means every row it wrote is simulated.

**Trap:** The default mode is mock, so on a fresh install EVERYTHING is simulated. Never restate a simulated value without saying so — the claim validator refuses a simulated record carrying a real DOI precisely so an echoed example cannot become a finding.

## Tabs

Every one is a real URL. A tab with its own section below carries a real job.

| Tab | Path | Group | What it is for |
|---|---|---|---|
| `dashboard` | - | The work | What needs you today — gates waiting, model warnings, and what each run has produced. |
| `investigations` | - | The work | Every question this install is asking, and how far each has got. |
| `discover` | - | The work | Start an investigation: pick a plan, pick an autonomy level, and read what each permits. |
| `graph` | - | The science | Diseases, pathways, genes, proteins and candidates as one typed network. |
| `diseases` | - | The science | The subjects under investigation, and what is asserted about each. |
| `targets` | - | The science | Proteins and pathways proposed as points of intervention, and why each is one. |
| `candidates` | - | The science | Interventions under evaluation, judged on separate dimensions — never one score. |
| `evidence` | - | The evidence | Sources, appraised. Tiers are reported separately and never summed. |
| `simulations` | - | The evidence | Computational runs. Everything here is SIMULATED and each row says so. |
| `experiments` | - | The evidence | The bench half — proposed only. Nothing here runs an experiment. |
| `agents` | - | The machine | Who ran what, when, and whether it worked. Failed turns included. |
| `autonomy` | - | The machine | The permission table: what each level actually permits, refuses and gates. |
| `settings` | - | The machine | The vocabularies this engine works in, and the boundaries it will not cross. |

## API

Mounted prefixes that serve this domain: `/api/medicine`

The full route table is `leumas-capabilities/reference/api-routes.md`.



---
Source: .claude/skills/leumas-studio/reference/domains/medicine.md
Canonical: https://docs.leumas.tech/p/skills/leumas-studio/domains/medicine
