Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

HTTP API: economics

Co spotřebuje programovací relace s nainstalovaným Majordomus a bez něj, ze zaznamenaných běhů: spárované kontrolní a ošetřené relace posuzované týmiž skrytými akceptačními testy, využití providera tak, jak je ohlásil, a každé číslo označené třídou měření (observed, counted, derived, estimated, counterfactual). Jedna kalkulačka; každý povrch je její projekce a verdikt říká jen to, co dovoluje pravidlo publikace metodiky.

Vykresleno z docs/generated/openapi.json, který spustitelný soubor generuje ze svého registru schopností a CI jej odmítne, je-li zastaralý. Surový dokument je na /openapi.json; běžící server servíruje stejný dokument na vlastní /openapi.json a Swagger UI na /swagger.

economics

Co spotřebuje programovací relace s nainstalovaným Majordomus a bez něj, ze zaznamenaných běhů: spárované kontrolní a ošetřené relace posuzované týmiž skrytými akceptačními testy, využití providera tak, jak je ohlásil, a každé číslo označené třídou měření (observed, counted, derived, estimated, counterfactual). Jedna kalkulačka; každý povrch je její projekce a verdikt říká jen to, co dovoluje pravidlo publikace metodiky.

GET /api/v1/economics economics.summary

Shrnutí ekonomiky tokenů

Každá metrika benchmarku ekonomiky s hodnotou, třídou měření, velikostí vzorku, rozdělením a bootstrapovým intervalem; každá dvojice běhů s jejím stavem (valid, control failed, treatment failed, incomparable, ...); výsledky podle segmentů; stav důkazů každé sady (current, stale, incompatible); a jediné tvrzení, které pravidlo publikace dovoluje. Snížení kontextu a snížení celkových tokenů jsou samostatné metriky a nikdy se neslučují.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache procesu (max_entries=8, ttl_seconds=5)
  • Nástroj MCP majordomus_economics
  • zdroj MCP {"name": "economics", "uri": "majordomus://economics"}
  • $ economics summary

Parametry dotazu

názevtyppovinnépopispříklady
sada testů string ne Pouze tato sada. zúženo: "pilot"
kategorie string ne Pouze úlohy této kategorie. zúženo: "bug-fix"
úloha string ne Pouze tato úloha. zúženo: "vat-rounding"
model string ne Pouze běhy, které si tento model vyžádaly. zúženo: "claude-sonnet-5"

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/economics?suite=pilot&category=bug-fix&task=vat-rounding&model=claude-sonnet-5"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 EconomicsSummary Souhrn ekonomiky tokenů: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.
GET /api/v1/economics/check economics.check

Odmítne nepodložená ekonomická tvrzení

Prohledá ručně psanou prózu repozitáře a věty tvrzení na množství (procento, „N-krát méně“) uvedené vedle slovníku ekonomiky a zkontroluje každé tvrzení, které metodika váže na metriku: vázané tvrzení smí být zaručeno jen tehdy, dokud důkazy jeho metriky vazbu splňují a jsou aktuální. `ok: false` jmenuje každé zjištění.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache vypnuta
  • Nástroj MCP majordomus_economics_check
  • $ economics check

Žádné parametry.

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/economics/check"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 EconomicsCheckReport Odmítnout nepodložená tvrzení o ekonomice: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.
GET /api/v1/economics/explain economics.explain

Vysvětlit jednu ekonomickou metriku

Jedna metrika a vše, na čem stojí: její vzorec, třída měření a co ta třída znamená, dvojice a běhy za ní (včetně neplatných), vyloučené běhy, sady a revize a příkazy, které ji reprodukují. Repozitář, který nedeklaruje žádnou metodiku, nemá žádnou metriku a na jakékoli id se odpoví `present: false` a uvedením důvodu, neodmítne se.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • proces cache (max_entries=32, ttl_seconds=5)
  • Nástroj MCP majordomus_economics_explain
  • $ economics explain

Parametry dotazu

názevtyppovinnépopispříklady
metrika string ano Id metriky, jak je vypisuje `economics.summary`. primary: "effective_token_reduction"

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/economics/explain?metric=effective_token_reduction"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 EconomicsExplanation Vysvětlit jednu ekonomickou metriku: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.
GET /api/v1/economics/runs economics.runs

Zaznamenané běhy měření výkonu

Surová fakta, z nichž se počítá každá metrika ekonomiky: každý zaznamenaný běh s jeho úlohou, variantou, opakováním, modelem, revizí, verdikty kontrol úspěchu a součty odvozenými z využití providera a cestou jeho záznamu.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache procesu (max_entries=16, ttl_seconds=5)
  • Nástroj MCP majordomus_economics_runs
  • $ economics runs

Parametry dotazu

názevtyppovinnépopispříklady
sada testů string ne Pouze tato sada. zúženo: "pilot"
úloha string ne Pouze tato úloha. zúženo: "vat-rounding"
varianta string ne Jen tato varianta. zúženo: "baseline"

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/economics/runs?suite=pilot&task=vat-rounding&variant=baseline"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 EconomicsRunList Zaznamenané běhy měření výkonu: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.

Schémata

Komponenty, které používají jen operace tohoto tagu. Každý řádek je pole daného typu, jeho doc komentář je popis; typ vlastněný jinou stránkou na ni odkazuje.

EconomicsCheck

object
Verdikt jedné kontroly úspěchu nad během.

use majordomus_cli::economics::model::EconomicsCheck;
let c = EconomicsCheck { id: "tests_kept".into(), passed: true, detail: "0 deleted".into() };
let back: EconomicsCheck = serde_json::from_value(serde_json::to_value(&c).unwrap()).unwrap();
assert_eq!(back, c);
vlastnosttyppovinnépopis
id string ano Id kontroly.
prošlo boolean ano Zda prošlo.
detail string ano Co se našlo.

Používá EconomicsRunView

EconomicsCheckReport

object
Odpověď economics.check, stejná přes CLI, HTTP i MCP: kolik se přečetlo a každé odmítnutí. ok je pravda přesně tehdy, když je findings prázdné. scanned počítá přečtené ručně psané soubory, docs/CLAIMS.yaml zahrnuté a generované soubory vyloučené; claims_checked počítá vazby tvrzení metodiky, ať je jejich stav jakýkoli.

use majordomus_cli::economics::claims::{check, EconomicsCheckReport};
let dir = tempfile::tempdir().unwrap();
let git = std::process::Command::new("git")
    .env_remove("GIT_DIR").env_remove("GIT_WORK_TREE").env_remove("GIT_INDEX_FILE")
    .arg("-C").arg(dir.path()).args(["init", "-q"]).status().unwrap();
assert!(git.success());
let report: EconomicsCheckReport = check(dir.path());
assert!(report.ok && report.findings.is_empty(), "an empty repository claims nothing");
let json = serde_json::to_value(&report).unwrap();
assert_eq!(json["claims_checked"], 0);
assert_eq!(serde_json::from_value::<EconomicsCheckReport>(json).unwrap(), report);
vlastnosttyppovinnépopis
ok boolean ano Žádný nález.
prohledáno integer (uint) ano Prohledané soubory.
claims_checked integer (uint) ano Vázaná tvrzení zkontrolována.
zjištění pole EconomicsFinding → EconomicsFinding ano Každý nález.

Používá economics.check

EconomicsClass

"observed" | "counted" | "derived" | "estimated" | "counterfactual"
Jak číslo vzniklo. Třídy jsou seřazeny od nejsilnější po nejslabší a hodnota vypočtená z několika vstupů není nikdy silnější než nejslabší z nich.

use majordomus_cli::economics::model::EconomicsClass;
assert_eq!(serde_json::to_value(EconomicsClass::Counterfactual).unwrap(), "counterfactual");
let parsed: EconomicsClass = serde_json::from_value("observed".into()).unwrap();
assert!(parsed < EconomicsClass::Estimated, "a stronger class sorts first");
  • observedVráceno poskytovatelem nebo jeho harness za běhu a zaznamenáno beze změny.
  • countedVypočteno deterministicky z bajtů na disku pojmenovaným, připnutým tokenizérem.
  • derivedAritmetika nad pozorovanými nebo spočtenými hodnotami.
  • estimatedČíslo, které zastupuje takové, které nikdo neměřil. Nikdy se neporovnává, nikdy nepublikuje.
  • counterfactualČemu by mechanismus zabránil, modelováno, ne pozorováno.

Používá EconomicsMetric

EconomicsContextView

object
Nejnovější měření sady kontextu, stručně.

use std::collections::BTreeMap;
use majordomus_cli::economics::model::{EconomicsContextView, EconomicsTokenizer};
let v = EconomicsContextView {
    revision: "8d37d011ef".into(), measured_at: "2026-09-24T10:00:00Z".into(),
    tokenizer: EconomicsTokenizer {
        encoding: "o200k_base".into(), implementation: "tiktoken-rs 0.12.0".into(),
    },
    seeds: 2, candidate_tokens: 20_000, considered_tokens: 300_000, selected_tokens: 15_000,
    estimated_selected_tokens: 16_000,
    excluded_tokens: BTreeMap::from([("budget".into(), 5_000)]),
    seeds_over_budget_counted: 0, budget_tokens: 8_000,
};
assert_eq!(v.selected_tokens + v.excluded_tokens["budget"], v.candidate_tokens);
assert_eq!(serde_json::to_value(&v).unwrap()["tokenizer"]["encoding"], "o200k_base");
vlastnosttyppovinnépopis
revize string ano Měřená revize.
measured_at string ano When.
tokenizér EconomicsTokenizer → EconomicsTokenizer ano Tokenizér.
seedy integer (uint) ano Změřená semínka.
candidate_tokens integer (uint64) ano Započtené tokeny kandidátů (relevantní: vybrané nebo ořezané rozpočtem), všechny seedy.
considered_tokens integer (uint64) ano Započtené tokeny všeho, čeho kompilátor dosáhl, všechny seedy.
selected_tokens integer (uint64) ano Spočítané vybrané tokeny, všechny seedy.
estimated_selected_tokens integer (uint64) ano Vlastní odhad kompilátoru vybraných tokenů, všechny seedy.
excluded_tokens mapa celých čísel (uint64) ano Započtené tokeny vynechané podle důvodu, všechna seedy.
seeds_over_budget_counted integer (uint) ano Seedy, jejichž počítaný výběr přesahuje rozpočet kompilátoru.
budget_tokens integer (uint64) ano Rozpočet kompilátoru.

Používá EconomicsSummary

EconomicsDistribution

object
Tvar množiny hodnot po dvojicích.

use majordomus_cli::economics::model::EconomicsDistribution;
let d: EconomicsDistribution = serde_json::from_value(serde_json::json!({
    "n": 1, "mean": 0.4, "median": 0.4, "p25": 0.4, "p75": 0.4, "p95": 0.4,
    "min": 0.4, "max": 0.4
}))
.unwrap();
assert!(d.sd.is_none(), "one value has no sample standard deviation");
assert!(d.min <= d.p25 && d.p25 <= d.median && d.median <= d.p75 && d.p75 <= d.max);
vlastnosttyppovinnépopis
n integer (uint) ano Kolik hodnot.
průměr číslo (double) ano Aritmetický průměr.
medián číslo (double) ano Median.
p25 číslo (double) ano 25. percentil.
p75 číslo (double) ano 75. percentil.
p95 číslo (double) ano 95. percentil.
min číslo (double) ano Smallest.
max číslo (double) ano Largest.
sd number | null ne Výběrová směrodatná odchylka; u jedné hodnoty chybí.

Používá EconomicsMetric EconomicsSegment

EconomicsExclusion

object
Jeden běh vyloučený podle pravidla odlehlých hodnot.

use majordomus_cli::economics::model::{EconomicsExclusion, EconomicsOutlierPolicy};
let o: EconomicsOutlierPolicy = serde_json::from_value(serde_json::json!({
    "rule": "A run is excluded only by naming it here with a reason.",
    "excluded": [{ "run": "vat-rounding--baseline--r2", "reason": "provider outage" }]
}))
.unwrap();
let first: &EconomicsExclusion = &o.excluded[0];
assert_eq!(first.run, "vat-rounding--baseline--r2");
let unexplained = serde_json::json!({ "run": "vat-rounding--baseline--r1" });
assert!(serde_json::from_value::<EconomicsExclusion>(unexplained).is_err());
vlastnosttyppovinnépopis
run string ano Id běhu.
důvod string ano Why.

Používá EconomicsExplanation

EconomicsExplanation

object
Odpověď economics.explain: jedna metrika a vše, na čem stojí.

Repozitář, který nedeklaruje metodiku měření výkonu, nic nemě­ří, takže nemá metriku k vysvětlení: odpovídá se mu tak, jak odpovídá economics.summary — present: false, tvrzení proč, žádná metrika a žádné číslo — a neodmítá se, protože repozitář, který sám sebe neměří, není chybný požadavek. Id metriky, které deklarovaná metodika nemá, se stále odmítá.

use majordomus_cli::economics::model::{EconomicsClass, EconomicsExplanation};
let e: EconomicsExplanation = serde_json::from_value(serde_json::json!({
    "present": true,
    "metric": { "id": "context_reduction_ratio", "title": "Context reduction",
        "class": "derived", "inputs": "counted", "unit": "ratio",
        "formula": "median over seeds of 1 - selected_tokens / candidate_tokens",
        "status": "not_measured", "n": 0, "suite": "context" },
    "class_meaning": "Arithmetic over observed or counted values.", "methodology": 1,
    "suites": [], "pairs": [], "excluded": [], "variants": [],
    "reproduce": ["majordomus economics measure --suite context"]
}))
.unwrap();
assert_eq!(e.metric.unwrap().inputs, Some(EconomicsClass::Counted));
assert!(e.pairs.is_empty(), "a counted metric rests on seeds, not on pairs");

let none: EconomicsExplanation = serde_json::from_value(serde_json::json!({
    "present": false, "statement": "No verified total-token-savings claim is available",
    "class_meaning": "", "suites": [], "pairs": [], "excluded": [], "variants": [],
    "reproduce": []
}))
.unwrap();
assert!(none.metric.is_none() && none.methodology.is_none(), "nothing declared, no number");
vlastnosttyppovinnépopis
přítomno boolean ano Zda je zde vůbec deklarována nějaká metodika.
výrok string | null ne Proč není co vysvětlovat, když je present false.
metrika EconomicsMetric | null → EconomicsMetric ne Metrika; chybí, když není deklarována žádná metodika.
class_meaning string ano Co jeho třída znamená, slovy metodiky.
metodika integer | null ne Verze metodiky; chybí, pokud žádná není deklarována.
sady pole EconomicsSuiteView → EconomicsSuiteView ano Sady, ze kterých čerpá.
dvojice pole EconomicsPair → EconomicsPair ano Dvojice, na kterých stojí, platné či ne, pokud stojí na dvojicích.
vyloučeno pole EconomicsExclusion → EconomicsExclusion ano Běhy vyloučené podle pravidla odlehlých hodnot.
varianty pole EconomicsVariant → EconomicsVariant ano Porovnávané varianty.
reprodukovat array of string ano Jak to reprodukovat.

Používá economics.explain

EconomicsFinding

object
Jedna věc, kterou kontrola odmítá. detail jmenuje nápravu, takže se podle nálezu dá jednat bez čtení metodiky. Nález o tvrzení nebo souboru, ne o řádku, nenese line a jeho JSON klíč vynechává. Druhy:

  • unsupported_quantity: číslo napsané do ručně psané prózy vedle slovníku ekonomiky.
  • claim_unsupported: vazba na tvrzení, která neplatí — vázané tvrzení chybí v docs/CLAIMS.yaml, nebo je guaranteed, zatímco jeho metrika nestojí tam, kde vazba říká, nebo jeho důkazy nejsou aktuální.
  • claim_unbound: tvrzení guaranteed říká, že tokeny, kontext nebo cena klesají, a žádná vazba ho nespojuje s metrikou.
  • claim_duplicate: jedno id tvrzení se v docs/CLAIMS.yaml vyskytuje více než jednou.
  • declarations_unreadable: deklarace měření výkonu nelze přečíst, takže nelze ukázat, že platí jakákoli vazba.
  • claims_unreadable: docs/CLAIMS.yaml existuje a nelze ho přečíst ani parsovat.
  • scan_failed: próza nešla vypsat nebo se soubor v ní nedal přečíst, takže nelze říct, že je čistá.
use majordomus_cli::economics::claims::EconomicsFinding;
let finding = EconomicsFinding {
    kind: "claim_unsupported".into(),
    path: "docs/CLAIMS.yaml".into(),
    line: None,
    detail: "set the claim to planned, or record the evidence".into(),
};
let json = serde_json::to_value(&finding).unwrap();
assert!(json.get("line").is_none(), "no line, no key");
assert_eq!(serde_json::from_value::<EconomicsFinding>(json).unwrap(), finding);
vlastnosttyppovinnépopis
druh string ano unsupported_quantity, claim_unsupported, claim_unbound, claim_duplicate, declarations_unreadable, claims_unreadable nebo scan_failed.
path string ano Cesta relativní k repozitáři.
řádek integer | null ne Řádek od 1, když se nález týká řádku.
detail string ano Co bylo nalezeno a co s tím dělat.

Používá EconomicsCheckReport

EconomicsFreshness

"current" | "stale" | "incompatible" | "no_evidence"
Jak zaznamenané důkazy obstojí proti repozitáři, jaký je nyní.

use majordomus_cli::economics::model::EconomicsFreshness;
assert_eq!(serde_json::to_value(EconomicsFreshness::NoEvidence).unwrap(), "no_evidence");
let f: EconomicsFreshness = serde_json::from_value("incompatible".into()).unwrap();
assert_eq!(f, EconomicsFreshness::Incompatible);
  • currentZaznamenáno podle této metodiky a nic, na čem závisí, se od té doby nezměnilo.
  • staleZaznamenáno touto metodikou, ale mechanismus, který měřila, se od té doby změnil.
  • incompatibleZaznamenáno pod jinou verzí metodiky: vůbec nelze srovnávat.
  • no_evidenceNic nezaznamenáno.

Používá EconomicsSuiteView

EconomicsHistoryPoint

object
Zaznamenané měření v čase: jeden záznam na zaznamenaný běh kontextu.

use majordomus_cli::economics::model::EconomicsHistoryPoint;
let p: EconomicsHistoryPoint = serde_json::from_value(serde_json::json!({
    "suite": "context", "methodology": 1, "revision": "8d37d011ef",
    "at": "2026-09-24T10:00:00Z", "metric": "context_reduction_ratio", "value": 0.62, "n": 40
}))
.unwrap();
assert_eq!((p.methodology, p.n), (1, 40));
assert_eq!(serde_json::to_value(&p).unwrap()["metric"], "context_reduction_ratio");
vlastnosttyppovinnépopis
sada testů string ano Sada testů.
metodika integer (uint32) ano Verze metodiky, aby se nekompatibilní verze nikdy nekreslily jako jedna čára.
revize string ano Revize.
v string ano When.
metrika string ano Metrika.
hodnota číslo (double) ano Jeho hodnota.
n integer (uint) ano Na kolika hodnotách spočívá.

Používá EconomicsSummary

EconomicsHypothesis

object
Tvrzení, které měření existuje, aby otestovalo. Nikdy výsledek.

use majordomus_cli::economics::model::EconomicsHypothesis;
let h: EconomicsHypothesis = serde_json::from_value(serde_json::json!({
    "id": "continuity",
    "statement": "Work that spans sessions gains the most.",
    "status": "untested"
}))
.unwrap();
assert_eq!(h.status, "untested");
assert_eq!(serde_json::to_value(&h).unwrap()["id"], "continuity");
vlastnosttyppovinnépopis
id string ano Slug.
výrok string ano Co se předpokládá.
status string ano untested, supported, refuted — nastavuje člověk, který čte důkazy.

Používá EconomicsSummary

EconomicsInterval

object
Bootstrap interval se vším, co je třeba k jeho reprodukci.

use majordomus_cli::economics::model::EconomicsInterval;
let i: EconomicsInterval = serde_json::from_value(serde_json::json!({
    "level_bp": 9500, "low": 0.21, "high": 0.38,
    "method": "bootstrap percentile of the median", "resamples": 10000, "seed": 20260924
}))
.unwrap();
assert!(i.low <= i.high);
assert_eq!(serde_json::to_value(&i).unwrap()["seed"], 20260924, "the seed travels with it");
vlastnosttyppovinnépopis
level_bp integer (uint32) ano Jistota v basis points.
nízká číslo (double) ano Dolní mez.
vysoká číslo (double) ano Horní mez.
metoda string ano Jak bylo vypočteno: cluster bootstrap přes úlohy pro každou metriku nad páry nebo běhy, jejichž opakování jedné úlohy nejsou nezávislá, a nezávislý bootstrap přes seedy pro sadu kontextu.
resamples integer (uint32) ano Resamples.
seed integer (uint64) ano Seed generátoru.

Používá EconomicsMetric

EconomicsMetric

object
Jedna metrika: její hodnota, odkud pochází a kolik unese.

use majordomus_cli::economics::model::{EconomicsClass, EconomicsMetric, EconomicsMetricStatus};
let m: EconomicsMetric = serde_json::from_value(serde_json::json!({
    "id": "effective_token_reduction", "title": "Effective token reduction",
    "class": "derived", "inputs": "observed", "unit": "ratio",
    "formula": "median of 1 - treatment / control", "status": "not_measured", "n": 0,
    "suite": "pilot"
}))
.unwrap();
assert_eq!(m.inputs, Some(EconomicsClass::Observed));
assert!(m.value.is_none() && m.status == EconomicsMetricStatus::NotMeasured);
assert!(serde_json::to_value(&m).unwrap().get("value").is_none(), "no value, not a zero");
vlastnosttyppovinnépopis
id string ano Id metriky.
název string ano Název.
třída EconomicsClass → EconomicsClass ano Třída měření.
vstupy EconomicsClass | null → EconomicsClass ne U odvozené metriky třída toho, z čeho byla odvozena: redukce odvozená z pozorovaného používání není stejným důkazem jako redukce odvozená ze spočítaných bajtů.
jednotka string ano ratio, tokens, calls.
vzorec string ano Vzorec slovy.
ne string | null ne Co metrika není, kde se snadno plete s něčím jiným.
hodnota number | null ne Hlavní hodnota; chybí, když se nic nezměřilo.
status EconomicsMetricStatus → EconomicsMetricStatus ano Jak to stojí.
n integer (uint) ano Na kolika hodnotách spočívá.
distribution EconomicsDistribution | null → EconomicsDistribution ne Jejich distribuce.
interval EconomicsInterval | null → EconomicsInterval ne Interval, když existuje dost hodnot.
sada testů string ano Sada testů.
evidence array of string ne Běhy, páry nebo seedy, na kterých stojí.
varování array of string ne Co musí čtenář vědět, než to použije.

Používá EconomicsExplanation EconomicsSummary

EconomicsMetricStatus

"verified" | "preliminary" | "measured" | "not_measured"
Jak si metrika stojí vůči pravidlu publikace: zda její hodnota smí podpořit tvrzení, je příliš chabým výsledkem na jakékoli tvrzení, nebo nebyla vůbec změřena.

use majordomus_cli::economics::model::EconomicsMetricStatus;
assert_eq!(serde_json::to_value(EconomicsMetricStatus::NotMeasured).unwrap(), "not_measured");
let s: EconomicsMetricStatus = serde_json::from_value("preliminary".into()).unwrap();
assert_ne!(s, EconomicsMetricStatus::Verified, "a preliminary result is not a claim");
  • verifiedZměřeno a splňuje pravidlo publikace. Může to být jen primární metrika přes všechny důkazy: pravidlo se vyhodnocuje pro ni a pro nic jiného, takže žádná sekundární metrika ani zúžený řez není nikdy ověřen.
  • preliminaryZměřeno, ale nesmí se na tom opírat žádné tvrzení: pod pravidlem publikace, zúženo dotazem, nebo metrika, pro kterou se pravidlo nikdy nevyhodnotilo. Výsledek, ne tvrzení.
  • measuredZměřeno deterministicky; pravidlo publikace pro vzorkovaná data se neuplatní.
  • not_measuredNení zaznamenáno nic, z čeho by se to dalo spočítat.

Používá EconomicsMetric

EconomicsPair

object
Kontrolní běh a jeho experimentální běh a co z nich plyne.

use majordomus_cli::economics::model::{EconomicsPair, EconomicsPairStatus};
let p: EconomicsPair = serde_json::from_value(serde_json::json!({
    "suite": "pilot", "task": "vat-rounding", "category": "bugfix", "sessions": 1,
    "repetition": 2, "control": "vat-rounding--baseline--r2", "status": "missing",
    "reasons": ["no treatment run recorded"]
}))
.unwrap();
assert_eq!(p.status, EconomicsPairStatus::Missing);
assert!(p.treatment.is_none() && p.token_reduction.is_none(), "no side, no reduction");
vlastnosttyppovinnépopis
sada testů string ano Sada testů.
úloha string ano Úloha.
kategorie string ano Kategorie úlohy.
relace integer (uint) ano Relace, které úloha zahrnuje.
opakování integer (uint32) ano Opakování.
kontrola string | null ne ID kontrolního běhu, je-li zaznamenáno.
ošetření string | null ne Id běhu s ošetřením, pokud je zaznamenáno.
status EconomicsPairStatus → EconomicsPairStatus ano Zda se počítá.
důvody array of string ne Proč ne, když ne.
control_usage EconomicsUsage | null → EconomicsUsage ne Součty kontroly.
treatment_usage EconomicsUsage | null → EconomicsUsage ne Součty ošetřené větve.
token_reduction number | null ne 1 - treatment / control na celkových tokenech. Záporné: zásah stál víc. Přítomno u platného páru a u vyloučeného páru, který by jinak byl platný, aby bylo možné ukázat účinek pravidla odlehlých hodnot oběma způsoby; do metriky jiné než effective_token_reduction.including_excluded vstupují jen platné páry. Totéž platí pro každé snížení a režii níže.
cost_reduction number | null ne Totéž u projekce nákladů harnessu.
tool_call_reduction number | null ne Totéž u volání nástrojů.
continuation_reduction number | null ne Totéž na tokenech jen poslední relace: kolik stálo pokračování.
first_request_overhead integer | null ne Vstup prvního požadavku u zásahu minus vstup u kontroly: co zásah přidá dřív, než model cokoli udělá.

Používá EconomicsExplanation EconomicsSummary

EconomicsPairCounts

object
Počty párů sady, aby nic nevypadlo z dohledu.

use majordomus_cli::economics::model::EconomicsPairCounts;
let c = EconomicsPairCounts {
    declared: 14, attempted: 12, valid: 9, control_failed: 1,
    treatment_failed: 1, both_failed: 0, other: 1,
};
let accounted = c.valid + c.control_failed + c.treatment_failed + c.both_failed + c.other;
assert_eq!(accounted, c.attempted, "every attempted pair is in exactly one bucket");
assert_eq!(EconomicsPairCounts::default().declared, 0);
vlastnosttyppovinnépopis
deklarováno integer (uint) ano Dvojice, které sada deklaruje.
pokus integer (uint) ano Dvojice s alespoň jedním zaznamenaným během.
platné integer (uint) ano Dvojice, které se počítají.
control_failed integer (uint) ano Dvojice, jejichž kontrola selhala.
treatment_failed integer (uint) ano Dvojice, jejichž ošetření selhalo.
both_failed integer (uint) ano Dvojice, kde selhaly obě.
jiné integer (uint) ano Dvojice nesrovnatelné, bez jedné strany, bez usage nebo vyloučené.

Používá EconomicsSuiteView

EconomicsPairStatus

"valid" | "control_failed" | "treatment_failed" | "both_failed" | "usage_unavailable" | "incomparable" | "missing" | "excluded"
Proč se dvojice počítá, nebo nepočítá.

use majordomus_cli::economics::model::EconomicsPairStatus;
assert_eq!(serde_json::to_value(EconomicsPairStatus::ControlFailed).unwrap(), "control_failed");
let s: EconomicsPairStatus = serde_json::from_value("usage_unavailable".into()).unwrap();
assert_ne!(s, EconomicsPairStatus::Valid);
  • validOba běhy uspěly, jsou srovnatelné a hlásí využití.
  • control_failedKontrolní běh neprošel kontrolou úspěchu.
  • treatment_failedZpracovaný běh neprošel kontrolou úspěchu.
  • both_failedObojí selhalo.
  • usage_unavailableBěh nehlásí žádné využití, které by šlo srovnat.
  • incomparableBěhy se liší v něčem, co metodika vyžaduje, aby sdílely.
  • missingJedna strana nebyla nikdy zaznamenána.
  • excludedBěh je vyloučen podle pravidla odlehlých hodnot.

Používá EconomicsPair

EconomicsPublicationPolicy

object
Kdy lze publikovat kvantitativní tvrzení o celkových tokenech. Musí platit každý práh.

use majordomus_cli::economics::model::EconomicsPublicationPolicy;
let rule = serde_json::json!({
    "min_valid_pairs": 30, "min_categories": 4, "min_pairs_per_category": 5,
    "min_repetitions": 3, "min_valid_pair_rate_bp": 8000, "max_interval_width_bp": 2000,
    "require_current": true
});
let p: EconomicsPublicationPolicy = serde_json::from_value(rule.clone()).unwrap();
assert!(p.require_current && p.min_valid_pairs == 30);
let mut lax = rule;
lax.as_object_mut().unwrap().remove("require_current");
assert!(serde_json::from_value::<EconomicsPublicationPolicy>(lax).is_err(), "no default");
vlastnosttyppovinnépopis
min_valid_pairs integer (uint) ano Platné spárované dvojice, minimálně.
min_categories integer (uint) ano Kategorie úloh alespoň s tolika páry.
min_pairs_per_category integer (uint) ano Páry, které kategorie potřebuje, aby se započítala do min_categories.
min_repetitions integer (uint32) ano Opakování každé úlohy a varianty, minimálně.
min_valid_pair_rate_bp integer (uint32) ano Platné dvojice z pokusných dvojic, v setinách procenta, alespoň.
max_interval_width_bp integer (uint32) ano Šířka intervalu, nejvýše v bazických bodech redukce.
require_current boolean ano Zda musí být důkazy aktuální (jejich mechanismus se od zaznamenání nezměnil).

Používá EconomicsSummary

EconomicsRunList

object
Odpověď economics.runs: surová fakta, z nichž se počítá každá metrika.

use majordomus_cli::economics::model::EconomicsRunList;
let l: EconomicsRunList =
    serde_json::from_value(serde_json::json!({ "count": 0, "runs": [] })).unwrap();
assert_eq!(l.count, l.runs.len());
assert!(l.diagnostics.is_empty(), "no diagnostics listed means none");
vlastnosttyppovinnépopis
počet integer (uint) ano Kolik.
runs pole EconomicsRunView → EconomicsRunView ano Běhy seřazené podle id.
diagnostika array of string ne Záznamy, které nešlo přečíst.

Používá economics.runs

EconomicsRunView

object
Jeden běh stručně, s jeho odvozenými součty.

use majordomus_cli::economics::model::EconomicsRunView;
let v: EconomicsRunView = serde_json::from_value(serde_json::json!({
    "id": "vat-rounding--majordomus--r1", "suite": "pilot", "task": "vat-rounding",
    "variant": "majordomus", "repetition": 1, "model": "claude-sonnet-5",
    "revision": "8d37d011ef", "completed": false, "checks": [], "sessions": 1,
    "path": ".ai/repo/benchmarks/economics/runs/pilot/vat-rounding--majordomus--r1.json"
}))
.unwrap();
assert!(v.usage.is_none(), "a run whose provider reported no usage has no totals");
assert!(v.path.ends_with(&format!("{}.json", v.id)));
vlastnosttyppovinnépopis
id string ano Id běhu.
sada testů string ano Sada testů.
úloha string ano Úloha.
varianta string ano Varianta.
opakování integer (uint32) ano Opakování.
model string ano Požadovaný model.
revize string ano Revize.
dokončeno boolean ano Zda prošla každá kontrola úspěchu.
kontroly pole EconomicsCheck → EconomicsCheck ano Verdikt každé kontroly.
relace integer (uint) ano Sessions.
použití EconomicsUsage | null → EconomicsUsage ne Součty, když provider ohlásil spotřebu.
path string ano Kde je syrový záznam.

Používá EconomicsRunList

EconomicsSegment

object
Hodnota metriky v jednom segmentu dvojic.

use majordomus_cli::economics::model::EconomicsSegment;
let s: EconomicsSegment = serde_json::from_value(serde_json::json!({
    "dimension": "category", "value": "multi-session", "n": 0
}))
.unwrap();
assert!(s.token_reduction.is_none(), "a segment with no valid pair has no distribution");
vlastnosttyppovinnépopis
dimenze string ano category, sessions, complexity.
hodnota string ano Segment.
n integer (uint) ano Platné dvojice v něm.
token_reduction EconomicsDistribution | null → EconomicsDistribution ne Rozdělení redukce tokenů po dvojicích.

Používá EconomicsSummary

EconomicsSuiteView

object
Sada a stav jejích důkazů.

use majordomus_cli::economics::model::{
    EconomicsFreshness, EconomicsPairCounts, EconomicsSuiteView,
};
let v = EconomicsSuiteView {
    id: "pilot".into(), kind: "live".into(), version: 1, title: "Pilot".into(),
    model: Some("claude-sonnet-5".into()), freshness: EconomicsFreshness::NoEvidence,
    freshness_detail: Some("no run recorded".into()), runs: 0,
    pairs: EconomicsPairCounts { declared: 14, ..EconomicsPairCounts::default() },
    revisions: vec![], harnesses: vec![], models_reported: vec![],
};
let json = serde_json::to_value(&v).unwrap();
assert_eq!(json["freshness"], "no_evidence");
assert_eq!(json["pairs"]["declared"], 14, "declared pairs show even when none ran");
vlastnosttyppovinnépopis
id string ano Sada testů.
druh string ano live nebo context.
verze integer (uint32) ano Jeho verze.
název string ano Název.
model string | null ne Model pro živou sadu.
čerstvost EconomicsFreshness → EconomicsFreshness ano Jak si stojí její důkazy.
freshness_detail string | null ne Proč, když není aktuální.
runs integer (uint) ano Zaznamenané běhy.
dvojice EconomicsPairCounts → EconomicsPairCounts ano Počty dvojic.
revize array of string ne Revize, u kterých byly důkazy zaznamenány.
harnessy array of string ne Verze harnessu, které jej spustily.
models_reported array of string ne Modely, které harness ohlásil.

Používá EconomicsExplanation EconomicsSummary

EconomicsSummary

object
Odpověď economics.summary: každá metrika, odkud pochází, a jediné tvrzení, které důkazy dovolují.

use majordomus_cli::economics::model::EconomicsSummary;
let s: EconomicsSummary = serde_json::from_value(serde_json::json!({
    "present": false,
    "verdict": { "publishable": false, "statement": "No methodology is declared." },
    "metrics": [], "suites": [], "pairs": [], "segments": [], "history": [],
    "variants": [], "hypotheses": []
}))
.unwrap();
assert!(s.methodology.is_none() && s.publication.is_none() && s.diagnostics.is_empty());
let json = serde_json::to_value(&s).unwrap();
assert!(json.get("methodology").is_none(), "an absent methodology is absent, not null");
vlastnosttyppovinnépopis
přítomno boolean ano Zda je zde vůbec deklarována nějaká metodika.
metodika integer | null ne Verze metodiky.
otázka string | null ne Otázka.
primary_metric string | null ne Id primární metriky.
verdikt EconomicsVerdict → EconomicsVerdict ano Co dovolují důkazy o celkovém počtu tokenů říct.
metriky pole EconomicsMetric → EconomicsMetric ano Každá metrika.
sady pole EconomicsSuiteView → EconomicsSuiteView ano Každá sada a její důkazy.
dvojice pole EconomicsPair → EconomicsPair ano Každá dvojice, platná i neplatná.
segmenty pole EconomicsSegment → EconomicsSegment ano Snížení počtu tokenů podle segmentu.
kontext EconomicsContextView | null → EconomicsContextView ne Sada kontextu ve zkratce.
history pole EconomicsHistoryPoint → EconomicsHistoryPoint ano Metrika nad zaznamenanými měřeními.
varianty pole EconomicsVariant → EconomicsVariant ano Větve experimentu.
hypotézy pole EconomicsHypothesis → EconomicsHypothesis ano Hypotézy jako hypotézy.
publikace EconomicsPublicationPolicy | null → EconomicsPublicationPolicy ne Pravidlo publikace.
diagnostika array of string ne Problémy při čtení deklarací nebo důkazů.

Používá economics.summary

EconomicsTokenizer

object
Identita tokenizeru, zaznamenaná s každým počtem, který vytvořil.

use majordomus_cli::economics::model::EconomicsTokenizer;
let t: EconomicsTokenizer = serde_json::from_value(serde_json::json!({
    "encoding": "o200k_base", "implementation": "tiktoken-rs 0.12.0"
}))
.unwrap();
let other = EconomicsTokenizer { implementation: "tiktoken-rs 0.13.0".into(), ..t.clone() };
assert_ne!(t, other, "the same encoding from another implementation is another tokenizer");
vlastnosttyppovinnépopis
kódování string ano Kódování: o200k_base.
implementace string ano Implementace a její připnutá verze.

Používá EconomicsContextView

EconomicsUsage

object
Součty běhu, odvozené z jeho surového využití.

use majordomus_cli::economics::model::EconomicsUsage;
let u = EconomicsUsage {
    input_uncached: 10, cache_write: 90, cache_read: 900, output: 50,
    total_input: 1000, total: 1050, requests: 3, ..EconomicsUsage::default()
};
assert_eq!(u.total_input, u.input_uncached + u.cache_write + u.cache_read);
let json = serde_json::to_value(&u).unwrap();
assert!(json.get("reasoning").is_none() && json.get("cost_microusd").is_none());
vlastnosttyppovinnépopis
input_uncached integer (uint64) ano Vstup se z cache nečte ani se do ní nezapisuje.
cache_write integer (uint64) ano Vstup zapsaný do cache.
cache_read integer (uint64) ano Vstup čtený z cache.
výstup integer (uint64) ano Výstup, včetně úvah.
reasoning integer | null ne Tokeny uvažování, když je hlásil každý požadavek.
total_input integer (uint64) ano Všechny vstupy.
celkem integer (uint64) ano Všechny vstupy a výstupy.
požadavky integer (uint64) ano Požadavky providera.
tool_calls integer (uint64) ano Volání nástrojů.
cost_microusd integer | null ne Nákladová projekce harnessu v miliontinách dolaru, když ji měla každá relace.

Používá EconomicsPair EconomicsRunView

EconomicsVariant

object
Jedna větev experimentu: s čím relace běží a s čím běží bez.

use majordomus_cli::economics::model::EconomicsVariant;
let v: EconomicsVariant = serde_json::from_value(serde_json::json!({
    "id": "baseline", "role": "control", "title": "Without Majordomus",
    "description": "The fixture repository as a competent team keeps it."
}))
.unwrap();
assert_eq!(v.role, "control");
assert!(v.excludes.is_empty(), "an arm that names no exclusion excludes nothing");
vlastnosttyppovinnépopis
id string ano baseline, majordomus, ...
role string ano control nebo treatment.
název string ano Krátké jméno.
popis string ano Z čeho přesně rameno sestává.
vylučuje array of string ne Co větev záměrně nezahrnuje.

Používá EconomicsExplanation EconomicsSummary

EconomicsVerdict

object
Jediná věta, kterou důkazy dovolují, a proč nedovolují silnější.

use majordomus_cli::economics::model::EconomicsVerdict;
let v: EconomicsVerdict = serde_json::from_value(serde_json::json!({
    "publishable": false,
    "statement": "No quantitative token claim: 9 valid pairs of the 30 the rule requires.",
    "unmet": ["min_valid_pairs: 9 < 30"]
}))
.unwrap();
assert!(!v.publishable);
assert_eq!(v.unmet.len(), 1, "every threshold not met is named");
vlastnosttyppovinnépopis
publikovatelné boolean ano Zda kvantitativní tvrzení o celkovém počtu tokenů splňuje pravidlo publikace.
výrok string ano Nejsilnější tvrzení, které důkazy podporují, generované, nikdy ručně psané.
nesplněno array of string ne Každý nesplněný práh publikace.

Používá EconomicsSummary

Prohledává názvy a popisy všech stránek, které tento web publikuje.