Repository navigation
Production configuration soak: verified items per operator-minute, before and after (evidence) - #1513
Merged
Merged
Conversation
…tric A seeded referral stream with an exception mix and its ground truth, a scripted operator charged from a versioned cost model, an independent SQL oracle, the arm interface (lifecycle-arm/1), and the metric (verified completed items per operator-hour with x0.5/x2 bands). The OpenEMR adapter injects faults and server-side UI changes; an in-memory app and toy arms check the bookkeeping in tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The OpenAdapt arm runs the certified referral program on the governed Standard path (or one CLI run per item with mode=cli) and records what the product refused. Trigger SQL uses a delimiter; ports and project are overridable; the fixture is in Env.extra; arms may report maintenance phases inside an item. Workload 2026-10-20.2 widens the surname pool. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…8' into measure/production-lifecycle
… --drift, pilot protocol (WIP) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…equalify run ids, stop causes (WIP) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…5 items, recovery smoke) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t' into measure/production-lifecycle # Conflicts: # packages/flow/benchmark/lifecycle_proof/fixture.py # packages/flow/benchmark/lifecycle_proof/run.py # packages/flow/docs/SELF_REPAIR.md # packages/flow/tests/test_no_duplicate_candidate.py # packages/flow/tests/test_repair_readmission.py
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dob arm option Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t' into measure/production-lifecycle
…t' into measure/production-lifecycle
… does) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t' into measure/production-lifecycle
… measure/production-lifecycle
…0 min), pinned approver keys in the proof gate Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… measure/production-lifecycle
…trusted keys Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 25, 2026
abrichr
marked this pull request as ready for review
October 25, 2026 05:41
…min/item, 0 silent wrongs; Phase 0 gate not met) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s halts a pixel-resolved form field) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…min/item, 0 silent wrongs; Phase 0 gate met) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ated precisely The committed ledgers, switch records and run logs carried paths from the machine that ran the soak. They are now written relative to the run's root, and the harness writes them that way itself (benchmark/lifecycle/paths.py). The reports recompute to the same results.json. The READMEs now say which Phase 0 criteria each run measures: throughput and silent wrongs. Fault coverage is measured separately (#1539). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
abrichr
enabled auto-merge
October 25, 2026 13:10
abrichr
added a commit
that referenced
this pull request
Oct 25, 2026
…from #1513) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fact inventory Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR measures, on one production configuration, whether OpenAdapt removes operator work. It covers the whole lifecycle, including an app change. It is the evidence for OpenAdaptAI/OpenAdapt#1514 and is stacked on it. It resumes and supersedes the harness on draft #1448.
Configuration: proof-15's, on local OpenEMR with synthetic patients:
problems_only;Results
At x1 of the cost model. The full table, bands and causes are in
packages/flow/benchmark/lifecycle/results/production-2026-10-24/README.md.beforewas stopped early at 27 items, at the coordinator's request. Every item had stopped.problems_onlyswitch turned off after a malformed date of birth was saved wrong and caught.25.0 of the 125.5 minutes (20%) were these approvals. Whether the switch should re-arm on its own is a policy decision and isn't changed here. The date fix (ISO conversion at intake, and a typed date refused before any step) is in Relabel repair, a duplicate check that reads the match list, ISO dates at intake, and two re-admission and approval fixes #1514 but not in this measured run.
It took 896 s from the stop to the item done. Before this change, every item after the app change stopped until a person re-taught the step.
Re-run with the fixes (2026-10-25)
The same 55-item stream and app change, after #1514, the switch policy (#1517) and the record-channel duplicate check over FHIR (#1516, still a draft). Measured at 38fc21a. Evidence:
packages/flow/benchmark/lifecycle/results/production-2026-10-25-rerun/.measure/production-lifecycle-rerun. They land after Duplicate check asks the system of record (FHIR/REST, SQL fallback) instead of the screen list #1516.Final run on main (2026-10-25)
This is the same stream and app change on origin/main 78ff5ad, which includes #1514, #1517 as merged and #1557, plus #1516 (4b635f2) and the harness. Measured at 8bfd7f6. Evidence:
packages/flow/benchmark/lifecycle/results/production-2026-10-25-final/.results/production-2026-10-25-final-blocked/.What's in it
benchmark/lifecycle. This is Lifecycle soak harness: work removed per operator-hour (draft) #1448's soak harness, resumed. It adds:--drift KIND@SEQwithrelabel_save;production_arm.py(proof-15's configuration as an arm);common_surnameandshared_dob.benchmark/lifecycle_proof. Soak items bring their own values. The DB dump is binary-safe and leaves OpenEMR's OAuthkeystable alone.docs/PILOT_MEASUREMENT.md. The internal protocol for measuring a pilot at a customer, and how the harness records the same numbers.benchmark/lifecycle/results/production-2026-10-24/:before/,after/andrecovery-smoke/, each with its ledger, workload, results, report, stops and switch logs.Limits
I scanned the committed files for the fixture's credentials and keys and found none. Paths in the committed results are relative to the run root (
runs/<name>/...), and the harness now writes them that way (benchmark/lifecycle/paths.py, with a test). The reports recompute to the sameresults.json. No prospect names.🤖 Generated with Claude Code