Skip to content

fix: correct GitHub Actions commit SHAs#2

Merged
patrick-chinchill merged 1 commit into
mainfrom
fix-action-shas
Apr 6, 2026
Merged

fix: correct GitHub Actions commit SHAs#2
patrick-chinchill merged 1 commit into
mainfrom
fix-action-shas

Conversation

@patrick-chinchill
Copy link
Copy Markdown
Collaborator

Previous SHAs were invalid. Updated to current release/v1 HEAD for pypa/gh-action-pypi-publish and latest tags for checkout/setup-uv.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@patrick-chinchill patrick-chinchill merged commit f25a7eb into main Apr 6, 2026
0 of 3 checks passed
patrick-chinchill added a commit that referenced this pull request Apr 24, 2026
…y baseline

Two infra-level changes to the fidelity check:

1. `.github/workflows/lint.yml` — the `Clone upstream vercel/chat at
   pinned parity tag` step no longer carries `continue-on-error: true`.
   The clone is infrastructure the fidelity check depends on; if it
   fails, the job should fail there rather than swallow the failure
   and hope a later step catches it. Combined with the script-level
   guard from the previous commit, this is defense in depth.

2. CI now runs `scripts/verify_test_fidelity.py --strict`. Every
   `[post with Plan]` test that was baselined is now ported (PR #75
   and PR #74 in the 0.4.26.2 bundle), so the repo ships at 0 missing.
   `scripts/fidelity_baseline.json` is reduced to `{"missing": {}}`
   (metadata retained so `--update-baseline` and the documented
   workflow still function for future upstream syncs).

Closes self-review gap #2 on #72.
patrick-chinchill pushed a commit that referenced this pull request May 9, 2026
Address re-review on PR #87 (Medium #1). Slack's url_verification ping
arrives at app-install / event-subscription time and only expects the
challenge echo — no bot token / API call required. Previously the
single-workspace resolver was invoked at handle_webhook entry, BEFORE
the url_verification short-circuit, so a flaky/down secret manager
would block app installation with a 500. Move the JSON peek for
url_verification ahead of _resolve_default_token() and short-circuit
there. Mirrors upstream where getToken() is only called at per-API-call
sites, never at webhook entry.

Adds test_url_verification_bypasses_broken_resolver: configures a
resolver that raises and asserts URL verification still returns 200 with
the challenge echo.

Also documents two related divergences in docs/UPSTREAM_SYNC.md
non-parity table (Medium #2 + Nit from re-review):
- Slack bot_token resolver invocation site: TS resolves on every API
  call site (cron-mode works); Python resolves once at handle_webhook
  entry into a ContextVar (cron callers must await
  current_token_async() first).
- Within-request resolver caching scope: TS calls per API call; Python
  caches per request to keep _get_token sync.

https://claude.ai/code/session_01FyMxQn2BEAzmwKS1GZczKj
patrick-chinchill pushed a commit that referenced this pull request May 10, 2026
Address Codex P2 finding on PR #88. The previous flow updated
``accumulated`` and ``session.sequence`` BEFORE awaiting ``_teams_send``,
so a 429/network failure mid-stream would leave the partial RawMessage
returned to the caller (and ``session._text`` feeding the final close-
activity) carrying text that Teams never displayed to the user.

Fix:
- Build ``candidate_accumulated = accumulated + text`` and
  ``next_sequence = session.sequence + 1`` as candidates.
- Send the activity with the candidate values.
- Commit ``accumulated`` and ``session.sequence`` only after the send
  succeeds.

The soft-cancel path (logged warn + session.cancel + break) now
genuinely returns the high-water mark of successfully-sent text. Matches
the documented "RawMessage carries pre-failure content" guarantee in
``docs/UPSTREAM_SYNC.md`` non-parity table.

Updated test_emit_send_failure_cancels_session: previously asserted
``result.raw["text"] == "helloworld"`` (which contained the rejected
"world" chunk); now asserts ``"hello"`` and ``session.sequence == 1``.

Skipped Codex P2 #2 (active_streams clobber timing) — matches upstream
TS behavior; deferring fix as a Python-only improvement would be a
divergence and is design-significant. File as follow-up if desired.

23 native-streaming tests pass.

https://claude.ai/code/session_01FyMxQn2BEAzmwKS1GZczKj
patrick-chinchill pushed a commit that referenced this pull request May 10, 2026
Address CodeRabbit Critical on PR #88. ``Chat.process_message`` invokes
``wait_until`` synchronously only if a chat task is actually scheduled.
If the message is deduped, dropped by the concurrency strategy, or
otherwise short-circuited, no task is created and ``wait_until`` is
never called — leaving ``processing_done`` unresolved and ``await
processing_done`` hanging the webhook indefinitely.

After ``process_message`` returns, check whether ``processing_done`` was
resolved (which can only happen via ``_chained_wait_until``, which is
only invoked when a task is scheduled). If not, resolve immediately —
there's no in-flight handler to wait on, no streaming will happen, and
``await processing_done`` should fall through to the ``finally`` cleanup.

Also addresses Codex P2 (lines 471): caller-supplied
``WebhookOptions.wait_until`` raising synchronously now logs and
continues instead of escaping through ``Chat.process_message``,
preventing the same-class deadlock-via-finally issue.

Both fixes together close the two paths where the streaming session
could be torn down while the chat task was still scheduled (or never
scheduled): a synchronous wait_until exception, and a deduped/dropped
message.

Tests:
- New ``test_caller_wait_until_raise_does_not_kill_native_streaming``
  verifies the wait_until-raise path keeps the session alive long
  enough for the chat task to call ``thread.stream()`` natively.
- Existing 23 native-streaming tests still pass.

Skipped CodeRabbit's other comment (``_active_streams`` thread-id
keying) — same as Codex P2 #2, matches upstream TS behavior and would
be a heavy-lift Python-only divergence.

https://claude.ai/code/session_01FyMxQn2BEAzmwKS1GZczKj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant