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:
parent
f3ac569d8e
commit
da06464f6b
17 changed files with 611 additions and 17 deletions
4
TREE.md
4
TREE.md
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
}
|
||||
|
|
@ -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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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": []
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
93
research/reviews/ZulipNavigationSourceStudy.md
Normal file
93
research/reviews/ZulipNavigationSourceStudy.md
Normal 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.
|
||||
268
research/reviews/ZulipNavigationSources.json
Normal file
268
research/reviews/ZulipNavigationSources.json
Normal 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"
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue