Detect encoded placeholder anchors and unblock Chat continuation - #2845
Conversation
|
Independent fresh-context Terra review: SHIP. No causal HIGH/CRITICAL blocker or lower-severity finding in the final one-file diff. The reviewer checked static once-only entity decoding, raw bound expressions, and preservation fixtures; tests were run by the writer. Final source head35c18f71f003553c51f73d4e780ca9e0fec9cff0. Full frontend6255pass3skip, focused27pass, typecheck/build/scopedESLint/diff hygiene pass. The worktree was removed with plain git worktree remove after nine evidence files were copied and SHA256 verified at .claude/local/milestone-20260909/preserved-1949-entity/.tmp. Generated snapshot content matched the HEAD blob after Git normalization; only index metadata was refreshed. Primary unrelated changes preserved. Required hosted CI remains pending; this is not a merge or parent-issue completion claim. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 35c18f71f0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
New-base composition review at f9c758f: independent Terra SHIP, no direct HIGH/CRITICAL interaction. The guard file is byte-identical to reviewed35c18f, and the delta against current main d01e04d is only that one guard file. Review inspected the new SFCs but ran no tests; fresh required34394886556 remains the qualification gate. Existing two MEDIUM parser follow-ups remain tracked, not silently fixed or dropped. |
|
Hosted failure evidence from PR #2845 required run34394886556 at f9c758f: E2E SC-005b (validation-chat-bootstrap.spec.ts:210) timed out waiting for Continue retained instruction after Link board.194 browser tests passed,1 failed,12 skipped. Chat runtime/test files are byte-identical to main112478; #2845 only edits the static anchor guard. No rerun or flaky classification. Trace: one message POST200 at19:51:54.622, post-send detailGET503 at54.674, successful bindPOST200 at54.723; failed detail retries at55.737,57.784,19:52:02.661. Failure19:52:03.652 still showed Sending/Continuing disabled. A second independent GET retry chain also appears. There was no unintended message resend. Bounded source diagnosis: useAutomationChat.ts364-388 keeps sendingMessage true across refreshSelectedSession; getSession uses normal503 retries with jittered1s/2s/4s backoff. ChatMessageList disables continuation while that flag is true. Bind does not invalidate send finally; no generation-skipped cleanup was found. Thus successful send reconciliation delays a now-valid continuation through a retry window close to the8s assertion boundary. Next smallest repair: fail fast only for the post-send reconciliation GET (existing skipRetry config), preserving normal retries for explicit selection, local retained message state, visible refresh failure and exactly-one explicit continuation. Prove a failed reconciliation releases busy state and continuation sends once. Do not raise test timeouts or weaken the gate as a substitute. Raw log and synthetic trace preserved locally under .claude/local/milestone-20260909/2845-failed.log and2845-browser-failure/. Source diagnosis reviewed independently by Terra; proposed fix has NOT been implemented or tested. |
|
The repair is now included in #2845 for combined qualification at3c7513dbfaf1cce8c1baf978be777f1041ddfc56 against main6dec7dba9. This source PR's refreshed head is a5a3233. Independent Terra composition review confirms every source file is byte-identical to the reviewed implementation, with no new HIGH/CRITICAL interaction. Combined required34399389111 is in progress; no source merge or delivery is claimed. Local test counts in this source body predate the latest base refresh. |
|
Delivery verified: merged as b6cb08c. Exact-head required CI 34399389111 passed; hosted E2E job 102634067470 reports 196 passed, 12 skipped (6.9m), including SC005b. Source #2847 was automatically marked merged. Both project entries are Done. Broader #1949/#2004 acceptance remains open; tracked MEDIUM guard residuals are unchanged. |
This PR detects entity-encoded placeholder links and includes the separately reviewed Chat repair from #2847 that resolves the browser failure encountered during qualification. Merge commits preserve both source histories.
A handler-free href="javascript:void(0)" previously escaped the static guard. Static href values now use Vue's existing parser for one decoding pass; real destinations, handler exemptions and double-encoded text remain covered by preservation tests.
The SC-005b browser failure exposed an existing Chat delay: after a successful send, a503 reconciliation GET kept continuation disabled through retries. Post-send reconciliation now fails fast through the existing skipRetry option; explicit session selection still retries, sent text stays retained, refresh errors remain visible, and continuation remains explicit.
Refs #1949 and #2004. Neither parent is complete. Two MEDIUM guard-precision follow-ups remain tracked at #1949 (comment).
Current composition:
Source validation (before this combined head):
Source evidence: .claude/local/milestone-20260909/preserved-1949-entity andpreserved-2004-failfast. No owned worktrees or runtimes remain. OUTSTANDING_TASKS.md unchanged; canonical docs remain with the other coordinator. #2840 is a separate control integration still awaiting maintainer approval.