Second cycle in comparison group B-independent-navigation-source-v1, a naturally-motivated follow-up to LEARN-0014's ZN07 finding rather than a manufactured repetition. Traces the target-message lookup and anchor- navigation fetch continuation to their unconditional completion points in message_fetch.ts: neither participates in the opt-in current-list-identity guard used elsewhere in the same file, and no located test covers a stale-navigation scenario. No reproduction or defect claim; static source read only. CAND-0009/CAND-0010 evidence and gaps updated accordingly. Declined to reopen the paused local navigation fixture to force a third cycle in an existing group, per the prior agreed pause and WP-0006 T03's own rule against manufacturing cycles to hit a count. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: sonnet Assistant-Process: 290719@bnt-lap001 Assistant-Session: 55cbe504-1bfe-4932-b761-29016523c87b
3.9 KiB
3.9 KiB
LEARN-0017 — Target-message lookup and anchor-navigation continuation ownership
Status: preregistered before inspection. Codex author-model review. 2026-09-27 Europe/Berlin. Stream B, comparison group B-independent-navigation-source-v1 (second cycle in this group; shares LEARN-0014's static-source-only protocol, evidence tier and effort accounting).
- Date and owner: 2026-09-27, Codex.
- Stream: B. Comparison group: B-independent-navigation-source-v1 (LEARN-0014's static, read-only, pinned-revision source-inspection protocol).
- Question and affected CAND identities: does independently developed Zulip code
guard the target-message lookup (
channel.getto/json/messages/:idinsidemessage_view.show) and the anchor-navigation fetch continuation (navigate_to_anchor_message/message_fetch.load_messages_around_anchor) against a stale navigation that occurred while the request was in flight, the waymessage_view.ts's main narrow-fetch continuation does (ZN02)? Affects CAND-0009 (URL-addressable State) and CAND-0010 (Progressive Enhancement). - Previous belief: ZN07 (ZulipNavigationSourceStudy.md) located both callbacks and noted they have "no visible captured-current-list guard like ZN02," but did not trace their actual callers or check test coverage.
- Observation that would contradict the belief: either callback checking list/ narrow identity before acting, or an existing upstream test exercising a stale-navigation race for either path.
- Evidence/contexts to inspect:
web/src/message_view.ts(target lookup ~L640-700,navigate_to_anchor_message~L998-1074),web/src/message_fetch.ts(load_messages_around_anchor,process_result,get_messages_success,load_messageserror-path guard),web/tests/message_fetch.test.cjs,web/tests/message_view.test.cjs. Same pinned revision as LEARN-0014/0016 (5b06fa3d34f28fa01f459fbf3ba053e3c0858e9c), reused deliberately. Out of scope: deferred editing focus, search callback wiring, any application/test execution, any defect or reproduction claim. - Effort budget and recording method: single-agent session, static reading only;
active research minutes recorded by wall-clock start/end, no execution
subprocess beyond repository checks (
make evolution-check evolution-test schema-test). - Review provenance and acceptance criteria: author-model (Codex), no independent human review. Accept whatever the located code and tests show; a missing guard is evidence of an unverified path, not a proven defect.
Outcome (complete after execution)
- Evidence references, retained failures and counterexamples: see ZulipTargetLookupCallPath and source manifest.
- Changed understanding and applicability limits: corroborates and sharpens ZN07 with a traced call path to its concrete completion point — see review.
- Disposition: corroboration
- Why this is one outcome, not a count of assertions/files: one bounded question (guard presence and test coverage for two specific continuations), answered with multiple located call sites as supporting detail.
- Remaining uncertainty and live workplan/task: no reproduction, no defect claim, no application/upstream test execution. WP-0003 T01 retains any further reproduction; WP-0003 T02 retains independent review.
- Superseded ledger entries, if any: none.
- Active research minutes / execution minutes: unknown; no wall-clock timer was started before inspection. See effort receipt.
- Reported tokens / cost USD: unknown, not measured.
- Reviewer name, role and independence: Codex, author-model, not independent.
Append an entry to research/evolution/ledger.json with recording: prospective and
protocol_ref pointing here. Update profiles, run evolution checks, then snapshot at
the agreed review boundary. No automatic maturity promotion.