Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0cffe-206f-7323-89d3-b20ca4cf4bf9 |
||
|---|---|---|
| .. | ||
| experiment.mjs | ||
| focus-policy.js | ||
| focus-result.json | ||
| focus.mjs | ||
| initial-partial.json | ||
| ownership-initial-result.json | ||
| ownership-initial.mjs | ||
| ownership-policy.js | ||
| ownership-result.json | ||
| ownership.mjs | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| result.json | ||
Navigation, history and representation-cache experiment
First prospective cycle: preregistration
at commit f3697c1, before implementation/execution. Review.
Pinned htmx 2.0.11 and Playwright 1.63.0, authored public read-only HTTP fixture.
Result includes input hashes, exact browser versions/binary hashes,
request traces and final DOM/event observations. No real application/CDN or model call.
npm ci --ignore-scripts --cache /tmp/fep-npm-cache
PLAYWRIGHT_BROWSERS_PATH=/tmp/fep-playwright-browsers node node_modules/playwright/cli.js install firefox
PLAYWRIGHT_BROWSERS_PATH=/tmp/fep-playwright-browsers FEP_CHROMIUM_PATH=/path/to/chrome npm test
Firefox profile access required execution outside the workspace sandbox. Chromium
was an explicit preinstalled binary override, not claimed to be Playwright's bundled
revision. Default output /tmp/fep-navigation-result.json; FEP_RESULT_PATH overrides
it. The runner writes checkpoints to that output and a complete receipt on completion.
Choose a new output per run; committed receipts are never default outputs.
Initial partial receipt retains ten passing Chromium rows; launch then failed because Firefox was not in Playwright's default cache. Setting the existing browser-cache path fixed execution, without changing runner or criteria. The full run repeated Chromium and completed Firefox: 20/20 registered checks, not 30 independent observations. N10 repeats explicit Node HTTP checks in each browser group; those two rows are not evidence of browser-specific automatic revalidation. N09 records the negative control, including non-reproduction if that ever occurs.
N01–N06 cover direct/native/enhanced/history/recovery paths; N07–N09 use actual browser HTTP cache with no request interception. N08's final full fetch reaches the server again in both browsers: correctness does not imply simultaneous retention of both variants or optimal cache hit rate. Both N09 runs reuse the fragment without another request. The server varies on both request selectors and computes ETags from response bytes. htmx history requests explicitly disable HX-Request; the server separately supports the history-restore header overriding fragment selection.
History eviction uses htmx 2.0.11's sessionStorage key, an experimental control tied to the pinned implementation. No assertion of identical content freshness across history, general offline availability, accessibility, script-late races, writes, real intermediary correctness or independent full-pattern recurrence follows.
Keyboard/focus follow-up
Preregistered LEARN-0012,
review, receipt.
Run the same browser environment with node focus.mjs. Output defaults to
/tmp/fep-focus-result.json; choose a fresh FEP_RESULT_PATH per execution.
The separate focus runner/policy preserve the earlier navigation/cache inputs and
receipt hashes. Same locked packages. 22 cases: native keyboard plus raw/managed
navigation, 503 feedback, held-response focus ownership, history and background work.
Raw rows observe behavior, so 22 passing rows do not mean raw and managed variants meet identical focus/feedback obligations. See NF01–NF06. The policy is authored experimental code; DOM focus and live-region text do not establish assistive-technology announcements or conformance. History and request-race limits remain explicit.
Competing completion follow-up and pause
LEARN-0013 protocol,
review, receipt.
Use the same browser environment with node ownership.mjs; choose a new
FEP_RESULT_PATH (default /tmp/fep-ownership-result.json). Six scenarios × two
policies × two browsers: 24 completed rows, all obligations met by guard 12/12 and
previous policy 0/12. These are deliberately adversarial cases, not general quality
scores. Server barriers impose schedules; client completions are observed without
aborting transport or claiming remote rollback.
The previous focus-policy.js remains byte-for-byte unchanged. New ownership-policy.js uses a generation plus separate focus ownership; its history XHR handler wrapping is explicitly tied to pinned internals. Initial runner/result retained under ownership-initial.mjs / ownership-initial-result.json: four Firefox keyboard-helper failures corrected by backward traversal, without changing policies or obligations. Initial receipt's ownership.mjs hash corresponds to ownership-initial.mjs.
The thread review pauses fixture expansion and hands the next evidence question to an independent pinned application source study.