Fleet Schemas ↑↓ move within a pane · ←→ move between panes · Enter opens · Esc backs out
ExperimentMeta 151 fields

call-app-mats/ExperimentMeta

schema one of: call-app-mats/CaseReplayFire | call-app-mats/CaseReplayJudge
no description declared
required
case string matching /^[0-9]{6}[a-z]?-[a-z0-9-]+$/
The law case this fire replays, the id of its file under `laws-core/assets/cases/`.
required
void non-empty string
Present only on a fire whose result must not be used: one plain sentence saying why ("fired at turn 1, accused turn 4", "prefix built from the markdown render"). A void fire keeps every artifact so the mistake stays auditable; readers grey it out and no census, pair, or write-up counts it.
9
cutAt non-empty string
Present only when the replay cuts inside the violating turn: the exact string, verbatim from the accused session, that ends the prefix. The prefix carries that turn's earlier tool calls and their recorded results up to this string, so a mid-turn cut ("No traces left.") is readable from the record alone; absent when the replay ends at the user message that opens the turn.
693
temperature number
The sampling temperature every reply in this fire was generated at, as the runner sent it to the provider. Two arms of one pair must record the same value, or the pair is refused: a temperature change is a second variable, and a hand fire through the bare CLI defaults to 0 while the runner fires at 1.
1,706
replyShapes object
The shape census of this fire's replies, so a report can print the tool-call-only share per arm beside its RED rate.
1,706
total integer > 0
How many replies this fire recorded, the denominator for the tool-call-only share.
required
toolCallOnly integer >= 0
How many of those replies are a tool call with no words before it; the judge colors such a reply BLACK when the laws grade words, so an arm made mostly of these measures reply shape, not the law. Never greater than `total`.
required
cutoff integer > 0
The violating agent turn: the replay ends at the user message that opens it, and the reply generated there is what the judge grades. The judge window is rebuilt from the case record and this number, so a reader can recompose the exact judge input from the run folder alone.
1,706
arm one of: control | cure | trim | model | variant | compound | harness | doc
Which arm this fire is: `control` replays the accused session unchanged up to the cut; `cure`/`trim`/`model` each vary exactly one thing, named under `treatment`; `variant` is a case-mining hypothesis, a free-form change to the cited law text (delete, merge, edit, or add) whose diff the treatment carries; `compound` varies several axes at once (the maximum-ablation arm) and carries no single-variable guarantee; `doc` replaces declared bytes inside one named tool result.
1,706
bootChain object
What the replay loaded as the model's standing context, so a reader can check that a cited law was present, at which revision, and that nothing the accused agent had read was left out.
1,706
configPin string OR null
Commit of the outer config repository the global manifest was read at; null when the fire read the present-day tree.
required
revisions map of non-empty string
Repository name to the commit the boot chain was materialized at, the accused session's own pins for a control arm.
required
judgeRevisions map of non-empty string
Repository name to the commit the judge's law text was pinned at, the accused turn's time; absent when it equals `revisions`.
manifests list of non-empty string
Every file the manifest chain produced, as `<repo>@<path>`, in chain order; the audit greps a cited law id in these to prove it was in context.
required
omissions list of non-empty string
Plain sentences naming anything that could not be materialized: a manifest missing at its pin, an unreadable transcript, a body belonging to a later turn. An empty list is the claim that the chain is complete.
required
injected list of object
One entry per body spliced into the replay prefix so the model sees what the accused agent saw.
required
kind one of: slash-command | injection | skill
What kind of body the harness had injected into the accused session: an expanded slash command, a bare injection, or a Skill body fetched by a tool call.
required
command string OR null
The `/name` or skill name; null for a bare injection.
required
source non-empty string
Where the bytes came from, as `transcript:<session uuid>`.
required
bytes integer >= 0
Length of the body placed.
required
followedAssistant integer >= 0 OR null
0-based index of the assistant message the body was placed after; null when it could not be placed, which is also listed under `omissions`.
required
cutFollowup object
How the fire's replies behaved at an in-turn cut, summed over replies; present only on a fire whose case declares a cut.
695
matchedHistorical integer >= 0
Replies whose first emission was tool calls alone, every one matching a call the accused agent made later in the same turn: each was answered with the recorded output and the model generated again, and the judged unit is both emissions.
required
matchedLive integer >= 0
Replies whose first emission was tool calls alone with no historical match but every call allowlisted: each executed live once at fire time with output in cut-followup-live.jsonl. Absent on fires recorded before Route A.
blackUnmatched integer >= 0
Replies whose first emission was tool calls alone with at least one call the accused agent never made: the harness stopped rather than invent a result, and the reply is BLACK.
required
none integer >= 0
Replies that carried prose or made no tool call, so no follow-up applied.
required
treatment cure OR trim OR model OR variant OR compound OR harness OR doc
What this arm varied and the measured proof that nothing else did; absent on the control arm.
1,344
cure object
no description declared
required
kind exactly "cure"
no description declared
required
laws non-empty list of string matching /^\$[a-z0-9-]+\/[A-Za-z0-9-]+\/([a-z0-9-]+|[A-Z][A-Z0-9_]{3,})$/
The law blocks this arm replaced; everything else in the prompt is byte-identical to the control arm.
required
rung one of: L0 | L1 | L2 | L3
Which rung of the rewrite ladder this text is: L0 the amendment at HEAD, L1 one added clause naming the trigger and the required action, L2 a bare imperative naming this case's exact situation and prescribing the reply, L3 that plus a worked example. Spec: staging.md stage 4a.
required
text non-empty string
The replacement law text verbatim, so the arm can be re-derived from this record alone; textSha256 is its hash.
required
textSha256 string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the replacement law text, so two fires of the same rung can be proven to have fired the same words; the text itself is the `text` field above.
required
lawBytes integer >= 0
Bytes that differ inside the replaced law blocks between this arm and control.
required
offLawBytes exactly 0
Bytes that differ anywhere else. Always zero: a nonzero value refuses the fire, so a stored nonzero would mean the guard was bypassed.
required
regressionOf string matching /^[0-9]{6}[a-z]?-[a-z0-9-]+$/
Present only on a regression re-fire: the case whose rewrite this fire re-checks on a different case.
trim object
no description declared
required
kind exactly "trim"
no description declared
required
keepLaws non-empty list of string matching /^\$[a-z0-9-]+\/[A-Za-z0-9-]+\/([a-z0-9-]+|[A-Z][A-Z0-9_]{3,})$/
Every law block kept byte-identical: the case's `eval.laws`, all of them, so the trim can never delete the rule that argued for the conduct.
required
removedLawBlocks integer >= 0
How many uncited law blocks were deleted from the system prompt.
required
removedToolResultBytes integer >= 0
Bytes of tool output off the path to the accused turn that were dropped from the replayed turns.
required
promptBytesBefore integer >= 0
Assembled prompt size on the paired control arm.
required
promptBytesAfter integer >= 0
Assembled prompt size on this arm.
required
prefixSha256 string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of this arm's trimmed replay prefix, so two trims can be proven byte-identical and a reused trim can be checked against a control without re-assembly. Optional so trim records written before this field stay valid.
model object
no description declared
required
kind exactly "model"
no description declared
required
from non-empty string
Canonical gen model id the paired control arm fired.
required
to non-empty string
Canonical gen model id this arm fired; equals the run meta `model`.
required
promptBytes exactly 0
Bytes by which this arm's assembled prompt differs from the control arm's. Always zero: only the model varies.
required
variant object
no description declared
required
kind exactly "variant"
no description declared
required
label non-empty string
The hypothesis in one line (keep it under about 120 characters), as its author wrote it: what this law change is and why it should stop the conduct ("delete quote-user-verbatim entirely", "merge the two header laws into one", "narrow the WHEN to peer sends").
required
laws non-empty list of string matching /^\$[a-z0-9-]+\/[A-Za-z0-9-]+\/([a-z0-9-]+|[A-Z][A-Z0-9_]{3,})$/
Every cited law id whose block this arm touched: replaced, folded into another, or deleted (an empty replacement). Everything else in the prompt is byte-identical to the control arm.
required
text string
The replacement law block verbatim, so the arm can be re-derived from this record alone; the empty string is a deletion of every law in `laws`.
required
textSha256 string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of `text`, so two fires of the same hypothesis can be proven to have fired the same words.
required
tokenDelta integer
Token count of the replacement block minus the token count of the control block it replaced; negative means the hypothesis shortened the law text, which the ranking rewards.
required
lawBytes integer >= 0
Bytes that differ inside the touched law blocks between this arm and control.
required
offLawBytes exactly 0
Bytes that differ anywhere else. Always zero: a nonzero value refuses the fire, so a stored nonzero would mean the guard was bypassed.
required
compound object
A COMPOUND arm that deliberately varies several axes at once - rewritten law text AND a stronger model AND a trimmed context - so it carries NO single-variable guarantee: it answers only "does ANYTHING cure this case," never "which one thing cured it." A case whose RED drops only under this arm and not under any single-axis arm gets the "Maximum ablation only" bucket. Named `compound`, not `overfit`, because "overfit" is a bucket-tag concept ("Overfit rule" / "cured under overfit only") and must not collide with an arm name.
required
kind exactly "compound"
no description declared
required
laws non-empty list of string matching /^\$[a-z0-9-]+\/[A-Za-z0-9-]+\/([a-z0-9-]+|[A-Z][A-Z0-9_]{3,})$/
The law blocks this arm replaced; part of a deliberately multi-axis change, so unlike a `cure` arm there is no offLawBytes-zero guarantee here.
required
text string
The replacement law text verbatim; the empty string is a deletion of every law in `laws`.
required
textSha256 string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of `text`.
required
model object
The model axis; always present, with `from` == `to` when the model was not actually varied.
required
from non-empty string
Canonical gen model id the paired control arm fired.
required
to non-empty string
Canonical gen model id this arm fired; equals the run meta `model`. `from` equal to `to` is valid and means the model axis was held (e.g. a Luna full-context peel that varies only laws and context).
required
trim object
The context-trim axis, present only when this compound arm also peeled context; a compound arm that varies only model and laws omits it.
keepLaws non-empty list of string matching /^\$[a-z0-9-]+\/[A-Za-z0-9-]+\/([a-z0-9-]+|[A-Z][A-Z0-9_]{3,})$/
Every law block kept byte-identical, the case's `eval.laws`.
required
removedLawBlocks integer >= 0
Uncited law blocks deleted from the system prompt.
required
removedToolResultBytes integer >= 0
Bytes of off-path tool output dropped from the replayed turns.
required
promptBytesBefore integer >= 0
Assembled prompt size before the trim.
required
promptBytesAfter integer >= 0
Assembled prompt size after the trim.
required
prefixSha256 string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the trimmed prefix on this arm.
harness object
no description declared
required
kind exactly "harness"
no description declared
required
harnessDeletion object
no description declared
required
omittedHarnessSpan non-empty string
no description declared
required
systemPromptSha256Before string matching /^sha256:[a-f0-9]{64}$/
no description declared
required
systemPromptSha256After string matching /^sha256:[a-f0-9]{64}$/
no description declared
required
runnerSha256 string matching /^sha256:[a-f0-9]{64}$/
no description declared
required
doc object
A document-block arm: declared bytes inside one named tool result or one named system message are replaced, so the dispatched prefix changes without touching any law text, and the fire pairs against the case own full control.
required
kind exactly "doc"
no description declared
required
tool non-empty string
Tool name whose result carries the substituted bytes, exactly as the assistant tool call names it; present exactly when `system` is absent.
path non-empty string
Path argument identifying which invocation of that tool, matched against the call own arguments; present exactly when `system` is absent.
system non-empty string
A byte string carried by exactly one system message of the replayed prefix, naming the boot copy this block rewrote instead of a tool result; present exactly when `tool` is absent.
messageIndex integer >= 0
Index of the message the substitution landed on, counted as the assembled prefix indexes its messages; absent on a receipt written before the field.
anchor non-empty string
Exact byte string the replacement takes the place of inside that one message; it occurs exactly once there.
required
replacement non-empty string
Exact bytes substituted for the anchor; the substitution is present once in the dispatched prefix.
required
beforeSha256 string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the named message before the substitution.
required
afterSha256 string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the named message after the substitution.
required
round integer >= 1
Positive round number identifying this fire within its campaign; the campaign sets its execution limit. Absent on a fire recorded before round tracking.
393
conductQuote non-empty string
The accused conduct quoted verbatim from the accused session at this fire's cut - the exact sidecar quote the fire gate checked to confirm the conduct is present at the cut, frozen into the fire record. It is stored here because the live sidecar quote is mutable: if the review lane re-anchors the case while an old fire is being re-judged, that sidecar changes and a tool-argument reply's eligibility can be misclassified against the wrong conduct. A new fire writes the quote it already held at fire time; on an older fire the field stays absent (unknown), or is filled reviewer-derived if reconstructed. There is no `toolConduct` boolean - whether the conduct is a tool call derives from the historical arguments.
1,544
accusedClauses list of object
The clauses the case accuses, each a verbatim quote from the pinned judge law block (constant across the pair), optional and reviewer-added. Bound to that judge law and the fire's `cutoff`/`cutAt`, so "the accused clause the blind judge grades against was present" is checkable rather than claimed.
1,545
lawId string matching /^\$[a-z0-9-]+\/[A-Za-z0-9-]+\/([a-z0-9-]+|[A-Z][A-Z0-9_]{3,})$/
A law citation in the full `$book/chapter/id` form, exactly as it heads the law block the judge was given.
required
clauseQuote non-empty string
The accused clause quoted verbatim from the PINNED JUDGE law named by `lawId` - the law text the blind judge is given, which is the same across the control and every treatment arm of a pair (the paired `CaseReplayJudge.laws` block). A semantic check confirms this substring is present in that judge law block. It is NOT checked against a rewrite arm's `treatment.text`: a rewrite by definition changes the text, so checking there would refuse every genuine rewrite and move the judged endpoint per arm - whether the rewrite applies at the cut is the separate `triggerAppliesAtCut` question.
required
provenance one of: reviewer | reviewer-derived
`reviewer` = a human or reviewing agent quoted this clause directly from the judge law block; `reviewer-derived` = it was extracted from the case ruling and then matched against that block. The distinction keeps a derived quote from being read as a hand-verified one.
required
triggerAppliesAtCut object
For a rewrite fire, the reviewer's ruling on whether the rewritten law even applies at the cut, bound to the exact fired-text hash and cut. Optional at the schema level so the frozen night's records stay valid; the harness refuses a new cure/variant fire whose value is absent, `no`, or `unknown`.
1,304
applies one of: yes | no | unknown
Whether the accused conduct's trigger condition actually holds at this fire's cut: `yes` the situation the law governs is present, `no` the rewrite narrowed the law out of this situation so the arm is not a fair test of it, `unknown` the reviewer could not decide. The harness refuses a new rewrite fire whose value is not `yes`, because a `no`/`unknown`/absent rewrite arm measures a clause that does not even apply.
required
reason non-empty string
One sentence for the applies verdict, naming what in the fired text and the cut makes the trigger hold or not.
required
reviewer non-empty string
Who ruled applicability: a human, or the reviewing agent and its model.
required
textSha256 string matching /^sha256:[a-f0-9]{64}$/
The `treatment.textSha256` this applicability ruling was made against, so a later edit to the fired text invalidates the ruling instead of silently carrying it forward.
required
cutoff integer > 0
The `cutoff` turn this ruling was made against; a re-cut invalidates it.
required
cutAt non-empty string
The `cutAt` string this ruling was made against, present only when the fire cuts inside the turn.
harnessDeletion object
Present only on a diagnostic fire that deleted one exact span of the harness system prompt and changed nothing else. Such a fire is never a cure cell: it pairs with nothing, pools with nothing, and answers one question, whether the harness sentence itself drives the accused conduct. Absent on every ordinary fire.
1
omittedHarnessSpan non-empty string
The exact text deleted from the harness system prompt before this fire, verbatim, so a reader can grep the live prompt and see what the model did not receive. The runner refuses the fire when this span is absent from the prompt or occurs more than once, so a present value proves exactly one deletion.
required
systemPromptSha256Before string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the full harness system prompt as the live runner would have sent it, before the span was removed; equal to the hash a paired ordinary fire of the same configuration records, which is how a reader proves the deletion was the only difference.
required
systemPromptSha256After string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the harness system prompt actually sent, after the span was removed; never equal to the before hash.
required
runnerSha256 string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the runner source that performed the deletion. A deletion fire runs from a scratch runner that is never landed, so this hash is the only durable identity of the code path; a reader who cannot match it to a landed runner knows the cell is diagnostic.
required
laws non-empty list of string matching /^\$[a-z0-9-]+\/[A-Za-z0-9-]+\/([a-z0-9-]+|[A-Z][A-Z0-9_]{3,})$/
The law ids whose text the judge block carried verbatim, pinned at the accused turn's revision.
267
judgeTurns non-empty list of integer > 0
The inclusive first and last turn sent as context, the last one marked JUDGED.
267
judgeSamples non-empty list of object
One row per judge sample in execution order; optional only for historical judge runs written before sample law attribution moved here.
265
runId non-empty string
Canonical gen run id of this judge sample.
required
lawId string matching /^\$[a-z0-9-]+\/[A-Za-z0-9-]+\/([a-z0-9-]+|[A-Z][A-Z0-9_]{3,})$/
Full law citation named by a RED sample; absent when the sample named no violated law.
sequential object
Present only on the parent run of an arm fired under the sequential design; absent on every fixed-count fire and judge record, which is how a results table tells the two designs apart.
0
looks list of object
One entry per completed scheduled look, in order, kept as written; a later checkpoint never rewrites an earlier look, so the whole stopping path can be audited.
required
design exactly "sequential"
Which firing design produced this arm. `sequential` is the pre-declared early-stopping design ruled on 2026-09-06: the arm is judged at cumulative decidable-reply counts of 1, 2, 4, 8, 16, and 30 and stops the moment it separates from its control. A fixed-count arm (thirty replies, no looks) carries no `sequential` block at all, so the two designs can never be confused in a results table.
required
look exactly 1 OR exactly 2 OR exactly 4 OR exactly 8 OR exactly 16 OR exactly 30 OR null
The scheduled look this entry completed at, or null before the first look completes. A terminal checkpoint keeps the last completed look and its bounds rather than a bound recomputed at whatever count the run stopped on, because only scheduled looks are covered by the error budget.
required
generated integer 0-60
How many replies the model has produced so far for this arm, in launch order, counting failed, excluded, and split outputs; the ceiling of 60 is the raw cap at which an arm is declared undecidable because it cannot reach 30 decidable replies.
required
decidable integer 0-30
How many of those replies settled RED or GREEN under the frozen judge. Splits, BLACK, exclusions, and errors are not decidable; looks are keyed on this count, not on `generated`, because on some cases most replies are tool calls the judge cannot grade.
required
red integer 0-30
How many of the decidable replies are RED, cumulative in launch order; `red` over `decidable` is the arm's RED rate at this look.
required
B integer 1-5
Comparison budget declared before this case ladder against its fixed control; sibling cases with different controls declare their own B. It is the number of treatment arms that will be compared against this control (at most five), fixed before the first sequential arm fires so the per-look error budget below can be divided by it.
required
alphaLook number > 0 and <= 0.025
The one-sided error budget spent at each scheduled look: 0.025 divided by six looks and by B. The split across arms as well as looks is what keeps the whole ladder's false-cure rate at 0.025.
required
controlLower number 0-1
The fixed control's exact lower bound on its RED rate at tail 0.025, computed once from `controlJudge` and never recomputed; every look compares against this same number.
required
treatmentUpper number 0-1 OR null
The arm's exact upper bound on its RED rate at the last completed scheduled look, at tail `alphaLook`; null before the first look. It is never recomputed at an unscheduled stopping count, for the same reason `look` is not.
required
decision one of: running | continue | separated | unresolved-at-cap | undecidable: tool-only | interrupted
What the arm's state means. `running`: between looks. `continue`: the last look did not separate. `separated`: `treatmentUpper` is strictly below `controlLower`, the only outcome that counts as a cure. `unresolved-at-cap`: 30 decidable replies without separation, which is the fixed-count result for an arm that stays at or near control. `undecidable: tool-only`: 60 generated without reaching 30 decidable. `interrupted`: an external failure stopped the run; the checkpoint keeps the last completed look.
required
actualSamples integer >= 0
How many judge calls were actually sent to the provider for this arm, counted before dispatch and including malformed and failed attempts, so the cost of the arm can be reconciled against the provider ledger.
required
controlFire non-empty string
The run id of the fixed control fire (thirty generated replies) this arm is compared against; immutable, so a re-fired control is a new arm, never an edit here.
required
controlJudge non-empty string
The run id of the non-trial judge pass whose saved results define the control's RED and decidable counts and therefore `controlLower`; the same frozen recipe must have judged this arm.
required
classifierHash string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the frozen classifier source (the conduct and results modules) checked before dispatch and again after judging, so a look can be proven to have been decided by the same rules as every other look in the ladder.
required
batchFireRuns list of non-empty string
Every fire run id this arm launched, in the pre-declared batch order, kept even when the batch's judge failed, so `generated` can be recounted from the records.
required
batchJudgeRuns list of non-empty string
Every judge run id in batch launch order, including a failed judge when a run id exists, so `decidable`, `red`, and `actualSamples` can be recounted from the records.
required
replyRunIds list of non-empty string
Every reply run id in batch launch order, including replies that were not decidable, so a reader can open each reply the look counted or excluded.
required
checkpoint object
The arm's current state: the initial entry before any look, the entry at the last completed look while running, or the terminal entry (separated, unresolved-at-cap, undecidable, or interrupted); an unscheduled stop keeps the last completed look and its bounds.
required
design exactly "sequential"
Which firing design produced this arm. `sequential` is the pre-declared early-stopping design ruled on 2026-09-06: the arm is judged at cumulative decidable-reply counts of 1, 2, 4, 8, 16, and 30 and stops the moment it separates from its control. A fixed-count arm (thirty replies, no looks) carries no `sequential` block at all, so the two designs can never be confused in a results table.
required
look exactly 1 OR exactly 2 OR exactly 4 OR exactly 8 OR exactly 16 OR exactly 30 OR null
The scheduled look this entry completed at, or null before the first look completes. A terminal checkpoint keeps the last completed look and its bounds rather than a bound recomputed at whatever count the run stopped on, because only scheduled looks are covered by the error budget.
required
generated integer 0-60
How many replies the model has produced so far for this arm, in launch order, counting failed, excluded, and split outputs; the ceiling of 60 is the raw cap at which an arm is declared undecidable because it cannot reach 30 decidable replies.
required
decidable integer 0-30
How many of those replies settled RED or GREEN under the frozen judge. Splits, BLACK, exclusions, and errors are not decidable; looks are keyed on this count, not on `generated`, because on some cases most replies are tool calls the judge cannot grade.
required
red integer 0-30
How many of the decidable replies are RED, cumulative in launch order; `red` over `decidable` is the arm's RED rate at this look.
required
B integer 1-5
Comparison budget declared before this case ladder against its fixed control; sibling cases with different controls declare their own B. It is the number of treatment arms that will be compared against this control (at most five), fixed before the first sequential arm fires so the per-look error budget below can be divided by it.
required
alphaLook number > 0 and <= 0.025
The one-sided error budget spent at each scheduled look: 0.025 divided by six looks and by B. The split across arms as well as looks is what keeps the whole ladder's false-cure rate at 0.025.
required
controlLower number 0-1
The fixed control's exact lower bound on its RED rate at tail 0.025, computed once from `controlJudge` and never recomputed; every look compares against this same number.
required
treatmentUpper number 0-1 OR null
The arm's exact upper bound on its RED rate at the last completed scheduled look, at tail `alphaLook`; null before the first look. It is never recomputed at an unscheduled stopping count, for the same reason `look` is not.
required
decision one of: running | continue | separated | unresolved-at-cap | undecidable: tool-only | interrupted
What the arm's state means. `running`: between looks. `continue`: the last look did not separate. `separated`: `treatmentUpper` is strictly below `controlLower`, the only outcome that counts as a cure. `unresolved-at-cap`: 30 decidable replies without separation, which is the fixed-count result for an arm that stays at or near control. `undecidable: tool-only`: 60 generated without reaching 30 decidable. `interrupted`: an external failure stopped the run; the checkpoint keeps the last completed look.
required
actualSamples integer >= 0
How many judge calls were actually sent to the provider for this arm, counted before dispatch and including malformed and failed attempts, so the cost of the arm can be reconciled against the provider ledger.
required
controlFire non-empty string
The run id of the fixed control fire (thirty generated replies) this arm is compared against; immutable, so a re-fired control is a new arm, never an edit here.
required
controlJudge non-empty string
The run id of the non-trial judge pass whose saved results define the control's RED and decidable counts and therefore `controlLower`; the same frozen recipe must have judged this arm.
required
classifierHash string matching /^sha256:[a-f0-9]{64}$/
SHA-256 of the frozen classifier source (the conduct and results modules) checked before dispatch and again after judging, so a look can be proven to have been decided by the same rules as every other look in the ladder.
required
batchFireRuns list of non-empty string
Every fire run id this arm launched, in the pre-declared batch order, kept even when the batch's judge failed, so `generated` can be recounted from the records.
required
batchJudgeRuns list of non-empty string
Every judge run id in batch launch order, including a failed judge when a run id exists, so `decidable`, `red`, and `actualSamples` can be recounted from the records.
required
replyRunIds list of non-empty string
Every reply run id in batch launch order, including replies that were not decidable, so a reader can open each reply the look counted or excluded.
required

Checks

  • _checkExperimentMeta

Defects

Checked 200 of 1,973 records (the per-store cap is 200), so this is a sample, not a whole-store verdict.

No defects in the 200 records checked.

Where it lives

Bound bycall-app-mats
Declared in~/mnt/mdr/skills/call-app-mats/assets/schemas/experiment-meta.ts
BindingexperimentMetaDataStore
Directory~/runs/autoresearch-experiments
Files*/*/*/artifacts/experiment-meta.yml
Referenced asexperiment-meta