I3353 — A trial is a typed record that carries its protocol's digest, refuses what the protocol does not declare, and redacts what its publication basis does not permit
Extend economics::proof with the trial record (schema proof-trial/v1) under .ai/repo/benchmarks/trials/<test-id>/: test id, protocol_digest, recorded_at, outcome, the fields the test's trials or window protocol declares (each number with its class, only observed, counted or derived), publication_basis (licence with its SPDX id, owner_consent with its date, or none) and friction entries as declared codes. When the basis is none, the loader refuses a repository name, a raw commit id (a salted digest is required), a path (only declared path classes) and any free-text field. The loader also refuses a missing declared field, an estimated or counterfactual number and an unknown test. Records whose digest or time does not count are kept and listed with their reason.
BLOKOVÁNO vlna 1 · p0 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I3351 is done. The status is derived from that, not declared.
Cíl
Extend economics::proof with the trial record (schema proof-trial/v1) under .ai/repo/benchmarks/trials/<test-id>/: test id, protocol_digest, recorded_at, outcome, the fields the test's trials or window protocol declares (each number with its class, only observed, counted or derived), publication_basis (licence with its SPDX id, owner_consent with its date, or none) and friction entries as declared codes. When the basis is none, the loader refuses a repository name, a raw commit id (a salted digest is required), a path (only declared path classes) and any free-text field. The loader also refuses a missing declared field, an estimated or counterfactual number and an unknown test. Records whose digest or time does not count are kept and listed with their reason.
Proč
T1, T3, T5 and T6 of the owner's report of 2026-10-19 are trials, not paired benchmark runs, and the critique of this plan found two designs inventing separate stores for them. One typed record serves all four and keeps a single counting rule. The critique also found that an adoption record with a commit id and a path list identifies a repository even with its name withheld, and that one of the owner's adopters belongs to the owner's employer, so the redaction is enforced by the loader rather than left to the worker.
Aktuální stav
apps/majordomus-cli/src/economics/mod.rs:328 load_runs and :438 load_context_runs are the only loaders and both read paired-benchmark runs. methodology.yaml:12-23 declares the number classes observed, counted, derived, estimated and counterfactual. No trials directory exists under .ai/repo/benchmarks.
Cílový stav
economics::proof::trials(root, test) returns counted and uncounted records with reasons; tests cover every refusal and every redaction.
Rozsah
- apps/majordomus-cli/src/economics
- apps/majordomus-cli/tests/economics.rs
- docs/ECONOMICS.md
- .ai/repo/benchmarks/README.md
Mimo rozsah
- Any protocol or record content (each experiment issue)
- The outside-run form of I3129; reusing this type there is that issue's owner's call
- Publishing (I3356)
Závislosti
Co na tom čeká
- I3354BLOCKED A pure scorecard function computes each proof test's status, counted sample, effect and losses from committed records, and withholds a verdict until the registered sample is complete
- I3360BLOCKED The T1 protocol and its selection floors are registered before any candidate is measured, and a record without an admitted candidate is refused
- I3391BLOCKED The T5 protocol registers three fault kinds, the trials each needs and what a trial must show, before any fault is injected
- I3398BLOCKED The T6 protocol says who counts as a newcomer, what each trial records and how many must reach a satisfied verdict unaided, before any trial runs
Kritéria přijetí
- A record under basis none carrying a name, a raw 40-hex commit id, a path or a free-text field is refused, each with its own finding
- A record missing a field its protocol declares, or carrying an estimated number, is refused
- A record with another protocol's digest, or recorded before registered_at, is listed as not counted with its reason
- Every new public item has a rustdoc example that runs
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test economics
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --doc economics::proof
- cargo fmt --manifest-path apps/majordomus-cli/Cargo.toml --check
Požadované důkazy
- test_trial_record_refusals
- test_trial_record_redaction
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3353.yaml. Read it back with majordomus plan show I3353.