Repository navigation
Conversation
…coding-evaluation
…nc2315-main-20261030
hireview001
left a comment
There was a problem hiding this comment.
- CI failed: tests (3.12, unit) (failure).
- CI failed: tests (3.11, unit) (failure).
- CI failed: tests (3.14, unit) (failure).
- CI failed: tests (3.13, unit) (failure).
- CI failed: Main (failure). Failed steps: tests (3.13, unit) / Run unit tests; tests (3.14, unit) / Run unit tests; tests (3.11, unit) / Run unit tests.
| ), | ||
| "additional_request_boundary": "Generation schema retries and continuations only; approval embedding is separate. SDK transport retries without surfaced usage cannot be inferred.", | ||
| "elapsed_seconds": { | ||
| "p50": statistics.median(elapsed) if elapsed else None, |
There was a problem hiding this comment.
[P2] p50 uses two different estimators in adjacent sections
elapsed_seconds.p50 and generation_seconds.p50 use statistics.median, while queue_wait_seconds.p50 (line 126) and queue_inclusive_seconds.p50 (line 131) use percentile(..., 0.50) → nearest-rank. The two definitions disagree whenever the sample count is even: for [1, 2, 3, 4], median returns 2.5 and percentile(..., 0.50) returns ordered[ceil(4 * 0.5) - 1] = 1. With the default --limit 24 × --repeats 2 × 3 modes = 144 rows, and per-mode subsets of 48, every section in one report is computed on an even count, so the readable "p50" of elapsed time is not the same statistic as the "p50" of queue wait two lines below.
Since the report is the artifact these runs are read from, either estimator is fine but the report should use one. percentile(elapsed, 0.50) and percentile(generation, 0.50) would make all four sections consistent and keep the existing nearest-rank semantics that p95/p99 already use.
|
在 已确认落地的线程
本地验证(新 head)
本轮新增一条: 其余部分( |
…2311) * feat(inference): enforce final request and response privacy checks * feat(context): add exact reuse proofs and final payload admission * test(inference): preserve privacy admission content * docs(context): define admission boundaries for transformed values * test(inference): adapt privacy recovery fixtures to memory descriptions * build(opencode): refresh combined API operation bundles * test(desktop): qualify synchronized context Server protocol * fix(inference): close worker and opaque carrier privacy gaps * fix(context): reject prepared markers split across text blocks * fix(context): enforce permit deadlines throughout request writes * fix: align main upgrade review and test fixtures * test(desktop): qualify synchronized context Server protocol * test(desktop): qualify synced context reuse server * feat(inference): add reversible operation input encoding (#2314) * feat(inference): add reversible operation input encoding * docs(inference): clarify input encoding semantics and acceptance * fix(context): defer crypto imports and check merged Anthropic turns * test: align processing diagnostics fixture with input encoding (cherry picked from commit 20b3b4c) * fix(tests): resolve SeekDB probe imports consistently (cherry picked from commit 19a1c11) * fix(inference): preserve stream identities and refused usage * test(desktop): qualify merged context receipt contract * refactor(inference): remove unused Atomic Memory encoding wrappers * fix(inference): inspect assembled Responses output text * fix(inference): validate Chat stream root model identity * docs: require coordinated context capability client upgrades * fix(inference): preserve provider retries in observation modes * fix(inference): preserve completed sibling privacy refusals * fix(server): reuse the prepared context admission limit * docs(inference): clarify enforcing response buffer limits * test(evaluation): measure Experience input encoding quality and cost (#2315) * feat(inference): add reversible operation input encoding * test(evaluation): measure Experience input encoding quality and cost * docs(inference): clarify input encoding semantics and acceptance * test(evaluation): probe model interpretation of encoded evidence * fix(evaluation): guard identities and isolate failed cases * test: align processing diagnostics fixture with input encoding * fix(evaluation): preserve judge streaming and evidence identity * fix(eval): reject missing external databases before runtime startup * fix(eval): normalize partial database configuration * fix(eval): reject unsupported private identity platforms * fix(inference): guard SDK assembly and evaluation resume identity --------- Co-authored-by: hireview001 <1441951127@qq.com>
Which issue or RFC does this PR close?
Adds the input-encoding evaluation workflow for RFC #2086. Replaces the corresponding scope of #2264.
Depends on #2311, which includes the input-encoding implementation merged from #2314, and targets its branch so this diff contains only the evaluation workflow. After #2311 merges into master, retarget this PR to master and refresh the branch before marking it ready; do not merge into the feature base branch.
Rationale for this change
Smaller reversible inputs alone do not demonstrate useful Experience output or lower total model cost. This harness compares off/shadow/active using identical public evidence, preserves failed and unknown outcomes, and separates offline representation measurements from live quality and usage evaluation. A separate fixed synthetic probe checks what a model infers directly from the selected representation; Python reconstruction is not used as evidence of model comprehension.
What changes are included in this PR?
Are there any user-facing changes?
This adds an opt-in developer evaluation workflow and makes no production API, database schema, or default inference behavior change. Live Experience runs require explicit provider/database configuration and can incur model usage. The standalone semantic probe requires explicit model configuration for live runs, uses no tools or database, and makes at most one request per attempt. Its dry-run only validates the case plan and encoding coverage. Passing the fixed cases does not establish semantic equivalence or acceptance for all four Runtime operations.
Identity-backed live commands (
run,judgewithout--validate-only, andsemantic-probewithout--dry-run) require POSIX private-file support. Windows live execution is explicitly rejected before private configuration reads or run-file writes;offline,report,judge --validate-only, andsemantic-probe --dry-runremain available. Owner-only key permissions and link protections are preserved.How was this change tested?
uv run --locked pytest -q tests/evaluation/input_encoding: 115 passed on Linux. An identity-capability simulation on the same host passed 59 tests and skipped 56 identity-backed live cases; this is not native Windows acceptance.uv run --locked prek run -a: passed, including lint, formatting, and type checks.AI usage statement
OpenAI Codex assisted with evaluation implementation, regression tests, scope separation, documentation, and validation.