Contrast navigation ownership with pinned Zulip sources

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0cffe-206f-7323-89d3-b20ca4cf4bf9
This commit is contained in:
tegwick 2026-09-27 00:56:50 +02:00
parent f3ac569d8e
commit da06464f6b
17 changed files with 611 additions and 17 deletions

View file

@ -356,6 +356,8 @@ research/evolution/cycles/2026-09-27-navigation-focus.md
research/evolution/cycles/2026-09-27-navigation-ownership-effort.json
research/evolution/cycles/2026-09-27-navigation-ownership.md
research/evolution/cycles/2026-09-27-navigation.md
research/evolution/cycles/2026-09-27-zulip-navigation-effort.json
research/evolution/cycles/2026-09-27-zulip-navigation.md
research/evolution/ledger.json
research/evolution/profiles.json
research/evolution/snapshots/baseline-2026-09-26.json
@ -456,6 +458,8 @@ research/reviews/TransactionalEvidenceExpansion.md
research/reviews/TransactionalLiveReview.yaml
research/reviews/TruncationDiagnosis.md
research/reviews/VC01-VC02-Comparison.md
research/reviews/ZulipNavigationSourceStudy.md
research/reviews/ZulipNavigationSources.json
research/reviews/recovery-review-01/inputs.json
research/reviews/recovery-review-01/prompt.md
research/reviews/recovery-review-01/receipt.json

View file

@ -94,3 +94,12 @@ focus from a newer search task; an obsolete navigation result must not supply a
continuation at all. The earlier single-response route policy is insufficient for
competing completions. This contrast does not expand the modal candidate into a
universal routing pattern or prove AT behavior.
## Independent non-modal source contrast — 2026-09-27
[Zulip ZN05–ZN07](../reviews/ZulipNavigationSourceStudy.md) locates search entry/exit
focus policy and selection-aware editing restoration. These are task-specific
continuations, not evidence of returning from a modal to its invoker. The inspected
editing restoration schedules focus work after a selected-message check; this does
not prove ownership is valid when the timer runs. Retain the modal scope and mark
AT/runtime validation and auxiliary continuation behavior unknown.

View file

@ -69,8 +69,8 @@ AT, delayed history and overlapping-request behavior remain unverified.
## Separate completion and focus ownership — 2026-09-27
[Competing navigation](../reviews/NavigationOwnershipExperiment.md) NO01–NO06 exposes
limits of the preceding single-response policy. Validate ownership before any result
effects, including old errors and history restoration, not only before moving focus.
limits of the preceding single-response policy. Validate applicability for each intended result
effect, including old errors and history restoration, not only before moving focus.
A current response may update content/title/status while the user has moved focus
to another surviving task; an obsolete response may own none of those effects.
The latest-intent policy tested here does not revive older success when newer intent
@ -80,3 +80,17 @@ A scoped navigation generation and separate focus-change check meet the tested
obligations. Their history adapter depends on pinned htmx internals; multiple history
misses, nonzero swap delays, redirects, lifecycle teardown and AT validation remain
open. Do not apply this navigation policy indiscriminately to unrelated background work.
## Effect-specific applicability contrast — 2026-09-27
[Zulip source study](../reviews/ZulipNavigationSourceStudy.md) ZN02–ZN04 shows a useful
contrast: noncurrent fetches may update cached data, while selected-view continuations
check list identity. Shared connection feedback and view-specific errors have different
scopes. Do not turn the earlier generation guard into a blanket discard rule for
every result from a view the user has left. Define data/cache acceptance separately
from current-view, feedback and focus effects, with their own consistency contracts.
This is static support for an asynchronous-navigation obligation, not evidence that
Zulip supplies the native/no-script path required by this whole candidate. Some
auxiliary continuations lack a visible matching guard in the inspected code; runtime
behavior and transport/caller limits remain unknown. Hypothesis retained.

View file

@ -14,9 +14,10 @@ Problem: an address change can conceal state that only exists in the current tab
Addressability competes with private/transient state and URL/schema stability.
Proposed solution: encode the public, stable resource identity and relevant view
selection in path/query parameters. Define parameter validation, defaults and route
resolution so direct entry and reload reconstruct that selection under current
authorization. A URL identifies a view, not necessarily immutable bytes or guaranteed
selection in path/query parameters, or in a fragment when a declared client runtime
reconstructs the view. Define validation, defaults and the required resolution path
so direct entry and reload reconstruct that selection under current authorization.
A client-fragment contract does not imply no-script availability. A URL identifies a view, not necessarily immutable bytes or guaranteed
future availability. Use an explicit version if a stable historical snapshot matters.
Do not place secrets, private draft content, focus or every transient interaction
@ -63,3 +64,17 @@ Other policies require an explicit contract. Browser history can change the URL
loading completes: pending-state disclosure/recovery is still unresolved here.
The authored guard supports this obligation only in the tested schedules, not a
portable router or proof of independent application recurrence.
## Independent application source contrast — 2026-09-27
[Zulip ZN01–ZN08](../reviews/ZulipNavigationSourceStudy.md) locates pinned hash-to-view
reconstruction, separate history pointer/offset state, and current-list guards on
main fetch continuations. It supplies static partial application evidence; no direct
load or Back race was executed in Zulip. Auxiliary lookup/anchor paths and deferred
focus remain unverified.
Applicability belongs to each effect: noncurrent results can still populate cached
data without acquiring the right to change current selection. Object/list identity
and a navigation generation are different implementation policies; neither alone
proves freshness. Keep addressability separate from no-script enhancement and from
within-session focus/scroll restoration. Full-contract recurrence remains unassessed.

View file

@ -196,3 +196,12 @@ compares the unchanged prior focus policy with an authored generation/focus guar
keyboard-helper failures retained. Same fixture family and pinned htmx package.
SRC-0040 event documentation and pinned loadHistoryFromServer source delimit the
experimental history-XHR adapter; no vendor patch or production claim.
## Zulip navigation/search source contrast — 2026-09-27
SRC-0013 follow-up at existing pinned revision
`5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c`: [ZN01–ZN08](../reviews/ZulipNavigationSourceStudy.md),
[twelve-file hash/range manifest](../reviews/ZulipNavigationSources.json). New hash,
search, message-fetch/list and continuation paths, distinct from prior draft/send
reads; same application family. Static partial mechanisms and limiting branches; no
upstream tests or application executed. No full-pattern/no-script or bug claim.

View file

@ -13,7 +13,7 @@ The baseline profiles are author-model assessments by Codex; they do not confer
| Evidence attached to a candidate | Candidates |
| --- | ---: |
| documentary | 17 |
| static-code | 5 |
| static-code | 7 |
| runtime | 8 |
Categories overlap. Runtime includes authored fixtures and negative controls. Family labels group related evidence; they are not counts of independent applications.
@ -55,9 +55,17 @@ Ten selected retrospective outcomes (not a historical census), followed by prosp
| inconclusive | 0 |
| merge | 0 |
| rejection | 0 |
| revision | 11 |
| revision | 12 |
Cycles with recorded research effort: 3/13. Unknown effort is neither zero nor estimated from commits, tokens or assertion counts.
Cycles with recorded research effort: 4/14. Unknown effort is neither zero nor estimated from commits, tokens or assertion counts.
### Stream B / B-independent-navigation-source-v1
| Cycle | Outcome | Research minutes | Consequential outcome/hour |
| --- | --- | ---: | ---: |
| LEARN-0014 | revision | 6.345 | 9.46 |
One bounded question counts at most one consequential outcome. Corroboration and inconclusive work remain visible separately. Fewer than three comparable cycles: no trend assessment.
### Stream B / B-navigation-mechanism-v1
@ -231,8 +239,9 @@ Make a navigable state reconstructible from its URL.
| documentary | Web platform | pushState changes history, not server dereferenceability. | [NavigationRenderingEvidence](../../research/reviews/NavigationRenderingEvidence.md) |
| runtime | htmx in authored public-catalog fixture | NH01–NH06: native/enhanced routes, history hit/miss, actual browser cache ordering and missing-Vary negative control; explicit Node validator checks separate. | [NavigationHistoryExperiment](../../research/reviews/NavigationHistoryExperiment.md) |
| runtime | htmx in authored public-catalog fixture | NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter. | [NavigationOwnershipExperiment](../../research/reviews/NavigationOwnershipExperiment.md) |
| static-code | Zulip | ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence. | [ZulipNavigationSourceStudy](../../research/reviews/ZulipNavigationSourceStudy.md) |
Open limits: Independent application recurrence and human/AT validation remain unverified. Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open.
Open limits: Independent application recurrence and human/AT validation remain unverified. Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open. Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership.
Superseded by: none recorded.
@ -249,8 +258,9 @@ Keep essential actions usable when enhancement is unavailable.
| runtime | htmx in authored public-catalog fixture | NH01–NH06: native/enhanced routes, history hit/miss, actual browser cache ordering and missing-Vary negative control; explicit Node validator checks separate. | [NavigationHistoryExperiment](../../research/reviews/NavigationHistoryExperiment.md) |
| runtime | htmx in authored public-catalog fixture | NF01–NF06: Tab/Enter navigation, raw versus authored focus/status policy, held-response ownership and background update; DOM evidence only, not AT speech. | [NavigationFocusExperiment](../../research/reviews/NavigationFocusExperiment.md) |
| runtime | htmx in authored public-catalog fixture | NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter. | [NavigationOwnershipExperiment](../../research/reviews/NavigationOwnershipExperiment.md) |
| static-code | Zulip | ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence. | [ZulipNavigationSourceStudy](../../research/reviews/ZulipNavigationSourceStudy.md) |
Open limits: Independent application recurrence and human/AT validation remain unverified. Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open.
Open limits: Independent application recurrence and human/AT validation remain unverified. Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open. Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership.
Superseded by: none recorded.
@ -339,8 +349,9 @@ Restore meaningful focus after a temporary interaction ends.
| runtime | Radix | Authored fixture: raw 20/24 versus routed 24/24; browser/build limits retained. | [NestedOwnershipRouting](../../research/reviews/NestedOwnershipRouting.md) |
| runtime | htmx in authored public-catalog fixture | NF01–NF06: Tab/Enter navigation, raw versus authored focus/status policy, held-response ownership and background update; DOM evidence only, not AT speech. | [NavigationFocusExperiment](../../research/reviews/NavigationFocusExperiment.md) |
| runtime | htmx in authored public-catalog fixture | NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter. | [NavigationOwnershipExperiment](../../research/reviews/NavigationOwnershipExperiment.md) |
| static-code | Zulip | ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence. | [ZulipNavigationSourceStudy](../../research/reviews/ZulipNavigationSourceStudy.md) |
Open limits: One implementation family; repeated trials are not independent uses. Animated exits and competing owners remain untested; no production repair claim. Route ownership is a contrast, not independent modal recurrence; AT speech and broader history/lifecycle cases remain unverified.
Open limits: One implementation family; repeated trials are not independent uses. Animated exits and competing owners remain untested; no production repair claim. Route ownership is a contrast, not independent modal recurrence; AT speech and broader history/lifecycle cases remain unverified. Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership.
Superseded by: none recorded.
@ -544,3 +555,17 @@ Evidence: [NavigationOwnershipExperiment](../../research/reviews/NavigationOwner
Remaining uncertainty: One authored htmx family and author-model review, not production recurrence or AT validation. History adapter is pinned implementation-dependent; pending-state, multiple-miss and lifecycle limits remain open. Three distinct protocols are not a comparable diminishing-returns window.
Supersedes: none recorded.
### LEARN-0014 — Where does independently developed Zulip scope navigation/search result and focus applicability, and where does our model fail to establish a guarantee?
2026-09-27 · stream B · prospective · revision
Before: The authored navigation generation guard protected current-view and focus effects, but independent application recurrence and alternative ownership/cache policies were unverified.
Conclusion: Revise guidance toward per-effect applicability: pinned Zulip preserves noncurrent cache data while guarding main selected-view continuations by list identity. Make client-fragment addressability explicit without inferring no-script enhancement. Shared feedback, auxiliary callbacks and deferred focus limit the inference.
Evidence: [ZulipNavigationSourceStudy](../../research/reviews/ZulipNavigationSourceStudy.md), [ZulipNavigationSources](../../research/reviews/ZulipNavigationSources.json), [2026-09-27-zulip-navigation-effort](../../research/evolution/cycles/2026-09-27-zulip-navigation-effort.json).
Remaining uncertainty: Static targeted ranges in twelve files, no Zulip runtime/upstream test execution or independent human/AT review. Auxiliary lookup/anchor continuations, deferred focus and callback wiring need a bounded follow-up before any race claim. One Zulip family supplies partial mechanisms, not full-contract recurrence or a no-script guarantee.
Supersedes: none recorded.

View file

@ -0,0 +1,26 @@
{
"start": 200742.642170344,
"execution_seconds": 17.33504651399562,
"executions": [
{
"command": [
"make",
"evolution-check",
"evolution-test",
"schema-test",
"bench-test"
],
"seconds": 17.33504651399562,
"exit_code": 0
}
],
"status": "complete",
"end_utc": "2026-09-26T22:56:26.171475+00:00",
"start_utc_approx": "2026-09-26T22:49:48.147633+00:00",
"elapsed_seconds": 398.024,
"research_minutes": 6.345,
"execution_minutes": 0.289,
"method": "Monotonic single-agent elapsed research session minus timed repository-check subprocesses. Source retrieval, targeted inspection, interpretation and recording are active overhead; no upstream application/test execution.",
"excluded": "Work before clock and final receipt refresh, commit/snapshot/sync administration after cutoff; model tokens/cost unknown.",
"budget": "Within registered 40 active research / 10 check-execution minutes; twelve-file cap reached without expansion."
}

View file

@ -450,6 +450,45 @@
"cost_usd": null
},
"supersedes": []
},
{
"id": "LEARN-0014",
"date": "2026-09-27",
"recording": "prospective",
"stream": "B",
"comparison_group": "B-independent-navigation-source-v1",
"protocol_ref": "research/evolution/cycles/2026-09-27-zulip-navigation.md",
"question": "Where does independently developed Zulip scope navigation/search result and focus applicability, and where does our model fail to establish a guarantee?",
"previous_belief": "The authored navigation generation guard protected current-view and focus effects, but independent application recurrence and alternative ownership/cache policies were unverified.",
"conclusion": "Revise guidance toward per-effect applicability: pinned Zulip preserves noncurrent cache data while guarding main selected-view continuations by list identity. Make client-fragment addressability explicit without inferring no-script enhancement. Shared feedback, auxiliary callbacks and deferred focus limit the inference.",
"disposition": "revision",
"affected_patterns": [
"CAND-0009",
"CAND-0010",
"CAND-0016"
],
"evidence": [
"research/reviews/ZulipNavigationSourceStudy.md",
"research/reviews/ZulipNavigationSources.json",
"research/evolution/cycles/2026-09-27-zulip-navigation-effort.json"
],
"remaining_uncertainty": [
"Static targeted ranges in twelve files, no Zulip runtime/upstream test execution or independent human/AT review.",
"Auxiliary lookup/anchor continuations, deferred focus and callback wiring need a bounded follow-up before any race claim.",
"One Zulip family supplies partial mechanisms, not full-contract recurrence or a no-script guarantee."
],
"reviewer": {
"name": "Codex",
"role": "author-model",
"independent_human": false
},
"effort": {
"research_minutes": 6.345,
"execution_minutes": 0.289,
"reported_tokens": null,
"cost_usd": null
},
"supersedes": []
}
]
}

View file

@ -317,7 +317,7 @@
"id": "CAND-0009",
"path": "research/candidates/URLAddressableState.md",
"title": "URL-addressable State",
"sha256": "7374180994e13cbca7b1dd4cf4da27c36926e462e844bbc0beb42e5ef6e562f5",
"sha256": "07d524c3c0dd080bd42ff5dd79a36e6ecd2a8654f07ece880b483477f7ca4497",
"status": "draft",
"maturity": "hypothesis",
"decision": "Make a navigable state reconstructible from its URL.",
@ -345,6 +345,12 @@
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationOwnershipExperiment.md",
"scope": "NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter."
},
{
"kind": "static-code",
"family": "Zulip",
"ref": "research/reviews/ZulipNavigationSourceStudy.md",
"scope": "ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence."
}
],
"independent_full_contract_uses": null,
@ -357,7 +363,8 @@
},
"gaps": [
"Independent application recurrence and human/AT validation remain unverified.",
"Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open."
"Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open.",
"Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership."
],
"superseded_by": []
},
@ -365,7 +372,7 @@
"id": "CAND-0010",
"path": "research/candidates/ProgressiveEnhancement.md",
"title": "Progressive Enhancement",
"sha256": "3eebc18862e1f5cd0221fa72f468a74719e7fbeab407cc81930d9e4ea397b3b5",
"sha256": "1dc3885ef896b9a7cb61af11fa8893484eb1e13454207326abc7250d5ca4382b",
"status": "draft",
"maturity": "hypothesis",
"decision": "Keep essential actions usable when enhancement is unavailable.",
@ -399,6 +406,12 @@
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationOwnershipExperiment.md",
"scope": "NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter."
},
{
"kind": "static-code",
"family": "Zulip",
"ref": "research/reviews/ZulipNavigationSourceStudy.md",
"scope": "ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence."
}
],
"independent_full_contract_uses": null,
@ -411,7 +424,8 @@
},
"gaps": [
"Independent application recurrence and human/AT validation remain unverified.",
"Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open."
"Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open.",
"Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership."
],
"superseded_by": []
},
@ -578,7 +592,7 @@
"id": "CAND-0016",
"path": "research/candidates/FocusReturn.md",
"title": "Focus Return",
"sha256": "a09b79e3b481caab81a7f9ee10d895ba77c6c7eedb71f4313733735eea58a477",
"sha256": "9149c2f563eafcfec983a9285949225840d97804568309bd16bbb1eb6b3dde77",
"status": "draft",
"maturity": "hypothesis",
"decision": "Restore meaningful focus after a temporary interaction ends.",
@ -612,6 +626,12 @@
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationOwnershipExperiment.md",
"scope": "NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter."
},
{
"kind": "static-code",
"family": "Zulip",
"ref": "research/reviews/ZulipNavigationSourceStudy.md",
"scope": "ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence."
}
],
"independent_full_contract_uses": null,
@ -625,7 +645,8 @@
"gaps": [
"One implementation family; repeated trials are not independent uses.",
"Animated exits and competing owners remain untested; no production repair claim.",
"Route ownership is a contrast, not independent modal recurrence; AT speech and broader history/lifecycle cases remain unverified."
"Route ownership is a contrast, not independent modal recurrence; AT speech and broader history/lifecycle cases remain unverified.",
"Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership."
],
"superseded_by": []
},

View file

@ -123,3 +123,12 @@ can violate current intent even when the prior single-response policy seemed ade
Q05 remains open beyond one fixture family. [Thread review](../reviews/NavigationThreadReview.md)
pauses the fixture and proposes an independently developed application source contrast.
No new ownership pattern or canonical dimension is admitted.
## Q03/Q05 independent navigation source contrast — 2026-09-27
[Zulip ZN01–ZN08](../reviews/ZulipNavigationSourceStudy.md) provides partial evidence
from an independently developed application. Cached-data acceptance, selected-view
continuation and focus have different applicability scopes; list identity is not
identical to a navigation epoch. Auxiliary callbacks and delayed focus limit any
whole-app conclusion. Q03 full-contract recurrence and Q05 generality remain open;
no no-script, runtime or independent-review result follows from static inspection.

View file

@ -48,3 +48,10 @@ evidence to provisional VC-03. Guarded policy meets 12/12 full obligations, prio
policy 0/12; one authored family, no AT/independent validation. The
[thread review](NavigationThreadReview.md) pauses local fixture expansion and names
a pinned Zulip navigation/search source contrast as the next evidence direction.
## Independent source contrast — 2026-09-27
[Zulip ZN01–ZN08](ZulipNavigationSourceStudy.md) adds static partial application
evidence for fragment addressability and effect-specific applicability. It is a
contrast to VC-03's native public-document contract, not a no-script implementation
of that brief or an additional completed walkthrough. The local fixture stays paused.

View file

@ -57,3 +57,13 @@ Keep these residuals live, without automatically extending the fixture:
Reopen the local fixture when independent evidence exposes a specific contradiction
or a concrete consumer needs one of these limits resolved. The next source contrast
can narrow, merge or reject our claims; promotion is not its default outcome.
## Follow-through — independent source slice, 2026-09-27
The proposed [Zulip study](ZulipNavigationSourceStudy.md) is now completed as
LEARN-0014 under its own static-source protocol. Twelve pinned files add partial
mechanisms and counter-limits; applicability is refined per effect, rather than
requiring wholesale discard. No upstream runtime or human review was performed.
The authored fixture remains paused. Next uncertainty is the bounded caller/transport
context around auxiliary target/anchor callbacks and deferred focus; do not infer
a defect from the absence of one local predicate.

View file

@ -0,0 +1,93 @@
# Zulip navigation/search source contrast — 2026-09-27
LEARN-0014; Codex author-model review. [Protocol](../evolution/cycles/2026-09-27-zulip-navigation.md)
committed as `f3ac569` before source inspection. Stream B, group
B-independent-navigation-source-v1. **Static source evidence only**: no application
build, browser run, upstream test execution or inference call.
Pinned Zulip revision `5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c`, deliberately reused
from the earlier recovery review, not claimed latest. [Source manifest](ZulipNavigationSources.json)
records twelve files, raw SHA256 and reviewed line ranges. This is one independently
developed application family, already known to this research through different paths;
it is not twelve independent uses or an independent review of our conclusions.
## Located claims
| Claim | Exact pinned locators | Observed code | Interpretation / limit |
| --- | --- | --- | --- |
| ZN01 | [hash reconstruction](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/hashchange.ts#L171-L235), [history metadata](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/browser_history.ts#L168-L195), [save guard](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/narrow_history.ts#L10-L63) | Hash terms select a message view; history state supplies message pointer/offset. Saving selection checks URL/filter agreement first. | Addressability and within-session continuation are separate contracts; these paths require the client. No no-script or direct-load runtime claim. |
| ZN02 | [fetch continuation](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L830-L878), [selection guard](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L1413-L1481), [current-list lifecycle](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_lists.ts#L24-L64) | Main narrow-fetch continuation returns when its captured message list is no longer current; selected-message rendering also checks list identity. | Partial support for protecting current selection/hash effects without requiring a global navigation counter. Not a proof for all callbacks. |
| ZN03 | [success routing](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_fetch.ts#L213-L280), [processing](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_fetch.ts#L159-L210), [preserved view policy](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list.ts#L152-L199), [list updates](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list.ts#L269-L326) | For a noncurrent, nonpreserved list, success switches to data-only processing instead of discarding the response. Preserved combined-feed views are an explicit exception. Other message/sidebar processing still occurs. | Leaving a view does not make its data useless. Cache/data applicability differs from permission to affect active navigation. Not a claim that inactive results have zero UI effects. |
| ZN04 | [error and connection feedback](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_fetch.ts#L418-L508) | Success and HTTP 400 close shared connection feedback before the noncurrent-list error guard. Errors for noncurrent, non-combined lists return before further processing/retry; other errors have backoff/retry handling. | Feedback has scopes too. Global connection evidence and view-specific errors are different; helper internals and runtime correctness were not audited. |
| ZN05 | [query dispatch](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L60-L95), [suggestion callback](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L151-L212), [suggestion construction](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search_suggestion.ts#L1530-L1636), [IME/Enter handling](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L290-L335) | Committed search passes parsed terms to an injected callback and blurs search; the inspected suggestion provider synchronously returns a list. Enter/IME handling distinguishes composing or selecting a suggestion from submitting search. | Do not treat every keystroke as a remote query race. Callback wiring and all imported suggestion-helper internals are outside this twelve-file slice. |
| ZN06 | [search continuation](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L396-L437), [close focused search](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L470-L483), [editing focus restore](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list_view.ts#L345-L392) | Search entry focuses search; exit may keep a narrow, redirect or focus the app. Editing focus capture records message/selection; restoration checks selected-message identity, then schedules focus work. | Non-modal task continuation differs from return to a modal invoker. A pre-timeout identity check is not proof of completion-time focus ownership or AT behavior. |
| ZN07 | [target-message lookup](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L662-L699), [anchor navigation](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L1002-L1074) | An auxiliary target lookup re-enters show from success/error callbacks. The anchor fetch continuation creates/uses the then-current list through a closure. These branches have no visible captured-current-list guard like ZN02. | Concrete unverified paths prevent a whole-app ownership guarantee. No reproduced race, exploit or vendor bug claim; unseen transport/caller behavior may constrain execution. |
| ZN08 | [preserved-list reuse](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L175-L194), [filter source](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/narrow_state.ts#L14-L67), [inspected upstream test](https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/tests/message_fetch.test.cjs#L1-L40) | A preserved combined-feed list may be reused; narrow state derives from the current view. The inspected test covers date-anchor parameter handling. | List identity is not equivalent to a monotonically increasing navigation generation. This test file supplies no executed or inspected competing-navigation coverage; the rest of the suite was not reviewed. |
## Bounded trace and counterexample to overgeneralization
The hash path parses route terms and calls message_view.show. That function constructs
or restores a list, updates the hash when required and makes the list current. A needed
message fetch captures that list. When it completes, data/fetch state can still be
processed, while the main view continuation checks current-list identity before changing
selected-view state. See ZN01–ZN03. This is a trace across located functions, not a
running-session observation. Search dispatch itself is located, but the initializer
that supplies its injected navigation callback was not included; do not infer its
complete wiring from the naming alone.
The meaningful contrast is **applicability per effect**:
| Effect | Located decision / remaining uncertainty |
| --- | --- |
| Populate cached message data | Can remain useful after leaving a view; cache consistency/retention internals not audited |
| Update a preserved rendered list | Explicit conditional combined-feed exception; not a universal discard rule |
| Change selected view/hash/message position | Main continuation and selection paths check current list identity |
| Update shared connection feedback | Some updates precede view-specific error applicability checks |
| Move input focus | Search-task policy and editing selection context are distinct; timer completion still untested |
Our earlier generation guard is one implementation of a selected-view policy. It must
not become a requirement to drop an entire response or every side effect whenever a
newer navigation exists. Nor does Zulip's list identity establish that all effects are
safe: ZN07 and deferred focus in ZN06 are explicit limits requiring additional evidence.
A preserved object can become current again; object identity and latest-intent generation
encode different policies. Freshness, authorization and data consistency are not proven
by either identity mechanism.
## Pattern disposition: revision without promotion
Revise URL-addressable State to make client-fragment reconstruction an explicit option,
with its required client/runtime contract, separate from server-visible path/query
resolution. Hash-based addressability does not establish progressive enhancement.
Refine Progressive Enhancement's asynchronous-navigation obligation to decide result
applicability per effect: cache data, current selection, global versus local feedback,
and focus. Zulip is a static implementation contrast for that obligation, **not a
verified no-script application or a full known use of Progressive Enhancement**.
Focus Return gains only a non-modal scope contrast, not an additional complete modal use.
This is one consequential revision, with corroborating identity guards and limiting
branches recorded together. CAND-0009/0010/0016 remain draft/hypothesis; independent
full-contract use counts stay unassessed. Independent implementation provenance is
stronger than another authored fixture variant, but the review remains author-model.
No new canonical identity, relation, pattern, M1/M2 acceptance or usefulness finding.
## Scope closure and follow-up
The twelve-file cap is reached; no further callees were fetched. Files were inspected
at the manifest's ranges, not exhaustively audited. The raw GitHub URLs supplied the
source after the browsing tool could not open the commit page; retrieval hashes are
preserved. No upstream code or frozen evaluation artifact changed. A source test was
read, not executed. The earlier htmx fixture remains paused.
[Effort receipt](../evolution/cycles/2026-09-27-zulip-navigation-effort.json) records
active source work versus repository-check execution, with final administration
excluded and token/cost unknown. This source-review protocol is a separate comparison
group; four distinct prospective protocols still do not provide a diminishing-returns
window. Full language usefulness and independent human/AT review remain unresolved.
WP-0003 T01 follow-up: before trusting ZN07 or delayed focus, preregister a narrowly
scoped upstream call-path/test study of the target lookup and anchor continuation;
include callback wiring/transport context, preserve negative findings, and do not
report a bug until reproduced or otherwise established. Broader evidence collection
can proceed without expanding our local adapter. T02 retains independent review and
the offline case branch. WP-0006 T03 retains comparable-window/review-date work.

View file

@ -0,0 +1,268 @@
{
"repository": "zulip/zulip",
"revision": "5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c",
"accessed": "2026-09-27",
"method": "Pinned raw GitHub source, static inspection only; no application or upstream tests executed",
"files": [
{
"path": "web/src/hashchange.ts",
"sha256": "ad749d6eecaa5475e03e5f95a9066e00871506b3c617f61376fecea1b925a1a4",
"lines": 622,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/hashchange.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/hashchange.ts",
"reviewed_ranges": [
{
"start": 171,
"end": 235,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/hashchange.ts#L171-L235"
},
{
"start": 602,
"end": 622,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/hashchange.ts#L602-L622"
}
]
},
{
"path": "web/src/search.ts",
"sha256": "17b62ee84dd2cf53aec2678875f2b3a09cbe7e480f071e1fa352fda8883bbc32",
"lines": 483,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts",
"reviewed_ranges": [
{
"start": 60,
"end": 95,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L60-L95"
},
{
"start": 151,
"end": 212,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L151-L212"
},
{
"start": 290,
"end": 335,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L290-L335"
},
{
"start": 396,
"end": 437,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L396-L437"
},
{
"start": 470,
"end": 483,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search.ts#L470-L483"
}
]
},
{
"path": "web/src/message_fetch.ts",
"sha256": "70b4367e41313789850026398727c8132ce3347229dabca226042b1d55f2693e",
"lines": 857,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_fetch.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_fetch.ts",
"reviewed_ranges": [
{
"start": 159,
"end": 210,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_fetch.ts#L159-L210"
},
{
"start": 213,
"end": 280,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_fetch.ts#L213-L280"
},
{
"start": 418,
"end": 529,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_fetch.ts#L418-L529"
}
]
},
{
"path": "web/src/message_lists.ts",
"sha256": "d5466ca0e5fa3815e81931b415338b578d27fb3e8fda8faf8362c120d83148bb",
"lines": 113,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_lists.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_lists.ts",
"reviewed_ranges": [
{
"start": 24,
"end": 64,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_lists.ts#L24-L64"
}
]
},
{
"path": "web/src/narrow_state.ts",
"sha256": "b2257a20074e7278ecc481ecb88e1315c3a24212e8705b3acd783076de9d11b0",
"lines": 387,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/narrow_state.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/narrow_state.ts",
"reviewed_ranges": [
{
"start": 14,
"end": 67,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/narrow_state.ts#L14-L67"
}
]
},
{
"path": "web/src/narrow_history.ts",
"sha256": "c7cbc3152a0d6f4dad7681013fa09c4083ea9de263869b6717d85f4e0d5eea00",
"lines": 63,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/narrow_history.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/narrow_history.ts",
"reviewed_ranges": [
{
"start": 10,
"end": 63,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/narrow_history.ts#L10-L63"
}
]
},
{
"path": "web/src/message_view.ts",
"sha256": "8dae489715846f1ded057663c89e1852ae871b7e3a1d7d7d04773c18429a4d89",
"lines": 1801,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts",
"reviewed_ranges": [
{
"start": 175,
"end": 194,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L175-L194"
},
{
"start": 255,
"end": 292,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L255-L292"
},
{
"start": 449,
"end": 528,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L449-L528"
},
{
"start": 662,
"end": 699,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L662-L699"
},
{
"start": 830,
"end": 878,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L830-L878"
},
{
"start": 1002,
"end": 1074,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L1002-L1074"
},
{
"start": 1413,
"end": 1481,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_view.ts#L1413-L1481"
}
]
},
{
"path": "web/src/browser_history.ts",
"sha256": "342b79942f3c0d33f30119e07acefeacdc4034493b2a39cbfb3dcc5e875f0dd6",
"lines": 211,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/browser_history.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/browser_history.ts",
"reviewed_ranges": [
{
"start": 130,
"end": 158,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/browser_history.ts#L130-L158"
},
{
"start": 168,
"end": 195,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/browser_history.ts#L168-L195"
}
]
},
{
"path": "web/src/message_list.ts",
"sha256": "af214b8055206edf53bf6a5848566f0065a1a31d50fe5fd09c3f1da10708e6d1",
"lines": 739,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list.ts",
"reviewed_ranges": [
{
"start": 152,
"end": 199,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list.ts#L152-L199"
},
{
"start": 269,
"end": 326,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list.ts#L269-L326"
}
]
},
{
"path": "web/tests/message_fetch.test.cjs",
"sha256": "affadd8643b3adc9ac82baf44b820cb88fec4d1feb627a9ff169053453340b11",
"lines": 40,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/tests/message_fetch.test.cjs",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/tests/message_fetch.test.cjs",
"reviewed_ranges": [
{
"start": 1,
"end": 40,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/tests/message_fetch.test.cjs#L1-L40"
}
]
},
{
"path": "web/src/search_suggestion.ts",
"sha256": "0f1e79178c69a9f6d1daa58e08ca8039dc095dbeb485cba517ebcb0eeeffb217",
"lines": 1641,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search_suggestion.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search_suggestion.ts",
"reviewed_ranges": [
{
"start": 1530,
"end": 1636,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/search_suggestion.ts#L1530-L1636"
}
]
},
{
"path": "web/src/message_list_view.ts",
"sha256": "4d4f6bf09d7c87ff3b3fb1cca60d6fd89c0c9ba4d352a996f01235ca9e0150a9",
"lines": 2428,
"raw_url": "https://raw.githubusercontent.com/zulip/zulip/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list_view.ts",
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list_view.ts",
"reviewed_ranges": [
{
"start": 345,
"end": 392,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list_view.ts#L345-L392"
},
{
"start": 584,
"end": 586,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list_view.ts#L584-L586"
},
{
"start": 1493,
"end": 1503,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list_view.ts#L1493-L1503"
},
{
"start": 1993,
"end": 1997,
"url": "https://github.com/zulip/zulip/blob/5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c/web/src/message_list_view.ts#L1993-L1997"
}
]
}
],
"scope": "Twelve files, targeted ranges only; not a whole-file/application audit. Same pinned Zulip family as SRC-0013, new navigation evidence. No runtime or upstream test execution.",
"preregistration_commit": "f3ac569"
}

View file

@ -128,3 +128,12 @@ including preserving committed content when the newest request fails. It is not
general router or AT validation. Pending Back-state disclosure and broader history
lifecycle remain open. [Thread review](../reviews/NavigationThreadReview.md) pauses
fixture expansion; VC-03 stays provisional with independent/AT and offline gaps.
## Independent application contrast — 2026-09-27
[Zulip source review](../reviews/ZulipNavigationSourceStudy.md) distinguishes
client-fragment resolution from this brief's native document path. Its cached-data
acceptance and current-list guards refine the asynchronous effect contract but do
not validate this public publication case or its offline/no-script requirements.
VC-03 remains provisional; selected-view applicability need not forbid useful
off-screen data processing.

View file

@ -233,3 +233,21 @@ T01 retains pending history disclosure, multiple misses, redirects, delayed swap
bfcache/lifecycle and interrupted/late enhancement before any production claim.
T02 retains independent human/AT review and offline VC-03 branch. WP-0006 T03 retains
review-date reconciliation and useful comparable-cycle windows; no M1/M2 closure.
## Independent Zulip navigation source study completed — 2026-09-27
LEARN-0014 preregistered at f3ac569; twelve files at existing Zulip revision
5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c, static ranges/hash manifest and ZN01–ZN08
review retained. Main list-identity guards coexist with off-screen cache updates;
shared feedback, auxiliary callbacks and deferred focus limit generalization. One
revision: effect-specific applicability and explicit client-fragment addressability.
No Zulip app/tests executed, no no-script/full-contract/bug claim. Same Zulip family,
new navigation paths; all candidates remain hypotheses. Local fixture stays paused.
WP-0003 T01 follow-up: preregister a bounded caller/transport/test study of auxiliary
target lookup and anchor continuations, including deferred focus/search wiring only
if needed to establish applicability. Record unknowns; reproduce before claiming a
defect. T02 retains independent human/AT and offline-case obligations. WP-0006 T03
retains remaining review dates and comparable-window work; this static protocol is
not pooled with runtime cycles. No M1/M2 closure. See
research/reviews/ZulipNavigationSourceStudy.md and ZulipNavigationSources.json.

View file

@ -112,3 +112,21 @@ T01 retains pending history disclosure, multiple misses, redirects, delayed swap
bfcache/lifecycle and interrupted/late enhancement before any production claim.
T02 retains independent human/AT review and offline VC-03 branch. WP-0006 T03 retains
review-date reconciliation and useful comparable-cycle windows; no M1/M2 closure.
## Independent Zulip navigation source study completed — 2026-09-27
LEARN-0014 preregistered at f3ac569; twelve files at existing Zulip revision
5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c, static ranges/hash manifest and ZN01–ZN08
review retained. Main list-identity guards coexist with off-screen cache updates;
shared feedback, auxiliary callbacks and deferred focus limit generalization. One
revision: effect-specific applicability and explicit client-fragment addressability.
No Zulip app/tests executed, no no-script/full-contract/bug claim. Same Zulip family,
new navigation paths; all candidates remain hypotheses. Local fixture stays paused.
WP-0003 T01 follow-up: preregister a bounded caller/transport/test study of auxiliary
target lookup and anchor continuations, including deferred focus/search wiring only
if needed to establish applicability. Record unknowns; reproduce before claiming a
defect. T02 retains independent human/AT and offline-case obligations. WP-0006 T03
retains remaining review dates and comparable-window work; this static protocol is
not pooled with runtime cycles. No M1/M2 closure. See
research/reviews/ZulipNavigationSourceStudy.md and ZulipNavigationSources.json.