diff --git a/research/evolution/cycles/2026-09-27-navigation-ownership.md b/research/evolution/cycles/2026-09-27-navigation-ownership.md new file mode 100644 index 0000000..6722b03 --- /dev/null +++ b/research/evolution/cycles/2026-09-27-navigation-ownership.md @@ -0,0 +1,64 @@ +# LEARN-0013 — Completion ownership under competing navigation + +Status: preregistered before implementation/execution. 2026-09-27 Europe/Berlin. +Codex author-model review; stream F, new comparison group F-navigation-ownership-v1. +The multi-request question differs from the single-response focus protocol; do not +pool rates. CAND-0009 URL-addressable State, CAND-0010 Progressive Enhancement, +CAND-0016 Focus Return. No new candidate presumed. + +## Question and prior + +Can the previous managed focus policy let old history/navigation completions replace +newer selection, steal focus or report obsolete results? Prior single-request evidence +supports continuation but leaves competing completions untested. Proposed guard: +assign an owner/generation to navigation, reject stale completions before effects, +and track focus ownership independently so an otherwise valid response need not +move focus. Test outcome, not a blanket recommendation to cancel HTTP requests. + +Compare the unchanged prior focus-policy.js with an authored guarded policy on one +new controlled fixture. Use stable content target and persistent navigation controls +so requests from different elements can compete. Hold responses at server barriers, +then release in declared order. Browser history uses real Back with htmx snapshot +eviction. Keep default transport alive to distinguish ignored completion from abort. +If htmx prevents a race itself, record that rather than force a failure. A guarded +miss/error or URL/content mismatch is failure, not permission to revise expectations. + +## Registered matrix + +Two policies × two browsers (Chromium/Firefox), six cases = 24 rows. Baseline rows +record the same obligation booleans as guarded rows; distinguish successful recording +from meeting the obligations. Guarded rows assert all registered obligations. One +trial each; preserve failures and any correction. No arbitrary sleeps. Tab/Enter +activate links; browser Back uses history API through Playwright. + +| ID | Ordered scenario | Obligation after completion | +| --- | --- | --- | +| O01 | Back misses history cache; user moves to surviving search; release history | Restore selected article/URL/title but preserve search focus and typed text | +| O02 | Back miss held; newer article navigation completes; release old history | Keep newer article/URL/title/status/focus; old history completion has no UI effect | +| O03 | Older article request held; newer article completes; release older success | Keep newer article/URL/title/status; no late focus theft | +| O04 | Older request held and will fail; newer article completes; release old 503 | Preserve newer result and feedback; no obsolete error replaces completion | +| O05 | Older request held; newer request fails; then release older success | Do not resurrect older intent; retain last committed view with newest failure feedback | +| O06 | Older article held; Back restores cached view; release old success | History is newer intent too: keep restored view/URL/title/status/focus | + +O05 starts from an already committed alpha view; O06 first visits beta to establish +history. Distinguish committed route from pending browser-history URL. Capture +intermediate and final state, actual requests and completion traces. Prefer public +hooks; any history-XHR callback wrapping is explicitly pinned/experimental, not a +portable production fix. No writes, server rollback, AT speech, production recurrence, +nonzero swap delays, view transitions, redirect/error taxonomy or universal race proof. + +## Learning and stopping + +45 active research minutes and 10 execution minutes before scope review. Monotonic +single-agent elapsed session minus experiment/check subprocess durations; checkpoint +inspection belongs to execution, no double count. Orientation and final administration +outside window; tokens/cost unknown. Commit this plan before implementation/execution. +Append one ledger outcome; retain all results and source hashes. If scope/criteria +must change, preserve and disclose the original plan rather than rewriting it. + +After this comparison, pause the navigation-fixture thread. Write a short synthesis: +what changed versus prior claims, what remains unverified, and the next independent +or broader evidence question. Hand residuals to WP-0003 T01/T02 and measurement work +to WP-0006 T03. Do not automatically start another fixture hardening cycle. One cycle +per distinct group cannot demonstrate diminishing returns. Live inference, if needed, +uses llm-connect; none is planned here.