KilniX

Reference

Docs

Schemas first. Every claim the line makes about a game has a field in a file you receive with the build, so the fastest way to understand what comes back from a firing is to read the fields.

What each stage emits

Every stage on the line writes a file, and the file is the contract. These are the ones a partner receives.

StageEmitsWho runs it
ResearchGDD_CONTEXT.mdai agent
Want gate gategdds.approved_athuman
Prototypescene_spec_hollow_reign_survivor_built.jsonprogrammatic
ForgeFIRE_REPORT.mdai agent
Fun gate gatefun-gate-report.jsonhuman + ai
Coreparts/gk_trajectory_renderer/kiln.jsonai agent
BalanceData/kiln-balance.jsonhuman + ai
ReleaseFIRE_REPORT.mdprogrammatic

fun-gate-report.json

The report the fun gate writes to the prototype repo. Read the first four rows and you know everything about how this factory handles a question it cannot answer.

FieldTypeWhat it means
verdict"passed" | "failed" | "inconclusive"The only three answers. Nothing else is ever written here.
passedbooleanTrue only when verdict is passed. Never true alongside an inconclusive verdict.
missingstring[]What would have to be observed for the verdict to stop being inconclusive. Empty on a passed or failed report.
failuresstring[]Why it failed, when it failed. Populated only on a failed verdict.
time_to_first_fun.secondsnumber | nullNull means nobody timed it. The threshold is never substituted for a measurement.
time_to_first_fun.source"observed" | "probe-autonomous" | "unmeasured"Where the number came from. An autonomous probe proves the scene is alive by then, not that the player had fun by then.
feel.scorenumber | nullWeighted mean over the axes that were actually scored. Unscored axes are excluded, not counted as zero.
feel.axes_scored / axes_totalnumberHow much of the rubric was answered. A score over three axes is not a score over seven.
retention.total_countnumberReasons to come back, split into ones derived from the parts catalogue and ones an evaluator saw.
evidence.scene.missing_partsstring[]Parts the plan promised that the built scene never got. A non-empty list fails the gate.
evidence.alivenessAlivenessProbe | nullWhether the scene changes on its own with nobody touching the controls. INERT is decisive and fails.

The parts register

A part is a catalogued, reusable game component with a manifest: what it provides, what it requires, what it conflicts with, and which platforms it has been built for. Assembly resolves a game against this register, and anything the register cannot satisfy is commissioned rather than improvised.

Parts built during a line partnership stay in the register, which is why each firing starts warmer than the last.

Not written yet

The MCP surface, the scene spec schema, and the balance file formats are documented internally and not yet published here. If a pilot needs one of them before it lands, ask and we will send it.