Two decisions taken with the operator: stdlib HTML driver instead of Playwright (F-0004), and a deterministic discovery runtime instead of a live model. Both sit behind interfaces so the alternatives drop in later. - html.py: stdlib DOM parse and query - agentic.py: DiscoveryRuntime (agentic arm, ignores data-td by construction) and RecordedSelectorRuntime (control arm, uses the strongest identifier the page offers) - browser.py: per-actor sessions over real HTTP, constructed per call so no actor inherits another's connection state - cost/nondeterminism metrics recorded from the first run F-0005 (CONCEPT_DRIFT): the H-001 result is a narrowing. Where test ids are preserved, discovery 9/9 and recorded selectors 9/9 - the semantic action buys nothing. Where they are dropped, discovery 2/3 and recorded 0/3. The concept model presents semantic actions as generally superior; the evidence says conditionally superior. M21 and M22 added mid-task: the deciding side of the axis was N=1. M22 (field names renamed) defeats the heuristic and is the first concrete evidence that a live model would add capability, not just cost. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 1629012@bnt-lap001 Assistant-Session: 78d4fb13-8a1e-474b-87a3-9b9261c49a39
63 lines
2.1 KiB
Markdown
63 lines
2.1 KiB
Markdown
---
|
|
id: H-001
|
|
title: Semantic Action Stability
|
|
status: EXPERIMENTING
|
|
created: "2026-08-22"
|
|
experiments: [E-001]
|
|
concepts: [C-semantic-action]
|
|
---
|
|
|
|
# H-001 — Semantic Action Stability
|
|
|
|
## Claim
|
|
|
|
A semantic action survives implementation restructuring better than a recorded UI
|
|
interaction sequence.
|
|
|
|
## Falsification condition
|
|
|
|
Across the labelled mechanical mutations in the lab (T05), a recorded interaction
|
|
sequence survives **at least as many** mutations as the semantic action does.
|
|
|
|
If mechanics-free identity buys no measurable durability, the central abstraction
|
|
is decorative and `SemanticAction` should be reduced to a naming convention.
|
|
|
|
## Measurement
|
|
|
|
Mechanical Recovery Rate for each of two arms over the same mutation set:
|
|
- **arm A** — semantic action realized by an agentic driver;
|
|
- **arm B** — a recorded selector-based sequence captured against the baseline.
|
|
|
|
Arm B is a genuine control and must be run, not assumed to fail.
|
|
|
|
## Threats to validity
|
|
|
|
The comparison is unfair if arm B is built naively — a brittle straw man makes
|
|
H-001 trivially true and worthless. Arm B uses the most robust selector strategy
|
|
reasonably available (roles, labels, test ids where the lab provides them).
|
|
|
|
## Result so far (TD-WP-0002-T07)
|
|
|
|
Twelve mechanical mutations, both arms, same semantic action:
|
|
|
|
| | Discovery (agentic) | Recorded selectors (control) |
|
|
|---|---|---|
|
|
| test ids preserved (9) | 9/9 | **9/9** |
|
|
| test ids dropped (3) | 2/3 | 0/3 |
|
|
|
|
**Not falsified, but substantially narrowed.** Where stable identifiers survive,
|
|
the control arm matches the agentic arm exactly — the semantic action buys
|
|
nothing. It earns its keep only where identifiers are absent or not carried
|
|
forward.
|
|
|
|
Three mutations on the deciding side is directionally clear and statistically
|
|
nothing. See `research/findings/F-0005-...` — the concept model overstates this
|
|
and should be revised to match the evidence.
|
|
|
|
Scope caveat (F-0004): the driver tests **structural** durability only. Visual
|
|
relayout is untested.
|
|
|
|
## Status log
|
|
|
|
- 2026-08-22 `PROPOSED`. No evidence.
|
|
- 2026-08-22 `EXPERIMENTING`. Partial evidence from T07; awaiting E-001 in full.
|