Skip to content

docs(evidence): rebind published evidence to Flow 1.28.0 - #283

Merged
abrichr merged 1 commit into
mainfrom
docs/evidence-rebind-flow-1-28-0
Aug 2, 2026
Merged

docs(evidence): rebind published evidence to Flow 1.28.0#283
abrichr merged 1 commit into
mainfrom
docs/evidence-rebind-flow-1-28-0

Conversation

@abrichr

@abrichr abrichr commented Aug 2, 2026

Copy link
Copy Markdown
Member

The failure

evidence-freshness binds the published evidence to the newest non-yanked
openadapt-flow release on PyPI. openadapt-flow 1.28.0 published at
2026-08-02T13:46Z, so the check now fails on main (71edc88):

DRIFT: docs/eval_results/current_flow_v1_27_1_local_20260802: published evidence
is pinned to openadapt-flow 1.27.1 but the current published release is 1.28.0.
Re-run the comparison against 1.28.0 and publish a new evidence set, or the
public numbers describe an engine nobody is running.

The check is right and is not relaxed here. No window widened, no exclusion
added, no threshold moved. The fix is to re-measure.

What was measured

All runners re-run against the exact published 1.28.0 wheel
(4d156035…c7202) bound to release-tagged tracked-clean source b646276, on
the same macOS host as the 1.27.1 evidence, plus an independent replication of
the whole comparison. Zero model calls, $0.00, loopback only. Exact commands in
REPRODUCE.md.

The comparison is controlled

This is the first release-over-release comparison in this directory where
neither the fixture nor either harness moved:

1.27.1 1.28.0
Comparison runner 68f9e5a2…8a126 68f9e5a2…8a126 (byte-identical)
Probe runner 097cc900…40ce8 097cc900…40ce8 (byte-identical)
MockMed fixture tree f0736c7a f0736c7a (byte-identical)
Host / Python / Playwright macOS 15.7.3 arm64, 3.12.13, 1.61.0 same

So no delta below can be a measurement artefact.

Held: no outcome classification moved

Denominators: 3 trials per arm per condition (the repository minimum for a
comparative claim), doubled by one independent replication. One measurement run
is 27 counted trials (3 conditions x 3 arms x 3 trials); primary plus
replication is 54, of which 18 are compiled replay.

  • Compiled replay 3/3 in every condition in both runs: 18/18 compiled trials
    succeeded
    , 0 over-halts, 0 silent incorrect successes, 0 wrong-target
    writes, 0 model calls, $0.00.
  • clean_postcondition_over_halt.json and theme_postcondition_over_halt.json
    record 0 observations in both runs.
  • Identity coverage unchanged at 5 of 8 applicable clicks armed.
  • DOM selector controls still fail 0/3 under label drift, loudly, at the first
    renamed locator and before any mutation.
  • Transaction probe: all 10 cells (5 fault modes x 2 verification
    configurations x 3 trials = 30 counted runs) report the same outcome as on
    1.27.1, with 0 violations across 30 runs. timeout stays
    RECONCILIATION_REQUIRED in 6 of 6.

Two transaction invariants are vacuous, not passes: no counted run claimed an
absence and no counted run reported VERIFIED, so neither could be exercised.

Worse: compiled replay is slower, and it is not softened

The compiled steady-state median rose in all 6 condition-by-run cells:

Condition 1.27.1 1.28.0 Delta
clean primary 6.828s 7.033s +0.205s (+3.0%)
clean replication 6.860s 7.030s +0.171s (+2.5%)
theme primary 7.003s 7.255s +0.252s (+3.6%)
theme replication 7.025s 7.190s +0.165s (+2.3%)
rename primary 6.837s 7.031s +0.194s (+2.8%)
rename replication 6.934s 7.033s +0.099s (+1.4%)

In clean the two 6-trial samples do not overlap (1.27.1 spans 6.801-6.947s;
1.28.0 spans 6.966-7.055s). The harness and fixture were identical, so this is
not a measurement artefact. It is recorded as unattributed: the two evidence
sets were measured in separate sessions hours apart rather than interleaved, so
this design cannot separate an engine effect from host drift. Record and compile
timings did not move, which argues against a broad host slowdown without
settling it. Nothing in c9618cc runs on this path. Establishing the cause needs
an interleaved A/B of the two wheels in one session; that is not run here. It
changes no outcome classification.

The remote frame-lease change, measured rather than trusted

c9618cc lets a consequential remote click be delivered through a backend's
one-shot actuation lease when no typed delivery receipt exists. Relaxing a
refusal can buy a green demonstration with a silent wrong write, so this PR adds
scripts/probe_remote_lease_safety.py and measures both stated properties.
3 cells x 3 trials = 9 counted runs, each classified under all 3 execution
profiles = 27 classifications.

Cell Runs Input edges delivered Typed receipts transaction_outcome (demo / standard / regulated)
ungoverned_lease 3 3 0 COMPLETED_UNVERIFIED in all three
governed_lease 3 0 0 HALTED_BEFORE_EFFECT in all three
lease_frame_changed 3 0 0 RECONCILIATION_REQUIRED in all three
  • A governed run still refuses. 3 of 3 stopped before the first input edge
    with safety_halt set; the backend received zero input edges. The only
    difference from ungoverned_lease, which delivered 3 of 3, is the presence of
    a GovernedRunAuthorization.
  • Never VERIFIED. Across 27 classifications, VERIFIED was returned 0
    times, production_eligible was true 0 times, transaction_billable was true
    0 times. Every lease delivery carried no receipt and no actuation tier, which
    is what leaves COMPLETED_UNVERIFIED as the classifier's only answer.
  • The lease is a real safety property: a frame that changed between
    acquire_actuation_frame and the input edge aborted delivery in 3 of 3 runs,
    and settled at RECONCILIATION_REQUIRED rather than claiming a proven absence.

Scope, stated in the artifact: that probe's backend is a fake exposing only the
two-phase lease. It establishes a runtime contract, not the behaviour of a real
Citrix or RDP session.

Checks run locally

  • scripts/check_published_evidence_freshness.py against PyPI: exit 0, "bound
    to the current openadapt-flow release 1.28.0".
  • --offline half: exit 0.
  • uv run --no-sources ruff check .: clean.
  • uv build --no-sources + check_source_boundary.py --require-dist: OK.
  • pytest tests/ -m "not heavy and not gpu and not vm": 2137 passed, 55 skipped.

1.27.1 is marked superseded, never deleted, and stays reproducible against the
wheel it was measured on. Docs and one new evidence script only; docs: is not
in this repository's minor_tags or patch_tags, so this cuts no release.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM

Re-measure the comparison, the transaction probe, and a new remote frame-lease
safety probe against the exact 1.28.0 wheel; mark 1.27.1 superseded. Both
harnesses and the MockMed fixture are byte-identical to the 1.27.1 measurement,
so the comparison is controlled. The freshness check was correct and is
unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM
@abrichr
abrichr merged commit 9dd8021 into main Aug 2, 2026
2 checks passed
@abrichr
abrichr deleted the docs/evidence-rebind-flow-1-28-0 branch August 2, 2026 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant