Skip to content

AI tools are not bounded by the 90 s agent turn deadline; a late image render can end a turn past 90 s #799

Open

Description

@alex-mextner

What

Re-filed from the startup tracker, where it was created by mistake (was HYP-1674, deleted 2026-10-20).

CalendarBotAgent (src/services/ai/agent.ts:929) builds a 90 s requestSignal but awaits executeTool without it (agent.ts:1281, retry path 1813), checking the deadline only between rounds. Since HYP-1671 raised the render wait to 45 s, a render started late in a turn can run the turn to ~135 s. Pass the remaining turn time / signal into RenderService.renderDirect (race waitUntilFinished) or into executeTool generally.

Why (motivation)

Repeated AI review finding on PR #798 (HYP-1671); the turn budget is documented as 90 s but tools can exceed it.

User impact

In rare slow cases a user waits well past 90 s for an AI answer that includes an image.

Cost of inaction

Turn latency stays unbounded by tool duration; the documented 90 s budget is not a real bound.

Acceptance criteria

  • A tool call started with N seconds left in the 90 s turn is cut at the deadline (test with a nearly-expired turn and a delayed render), without discarding renders on the /today command path.
  • The /today, /tomorrow, /week and /month commands keep the full 45 s render wait (they have no turn deadline).

Screenshots

(none)

Deploy

Deployed: no

Links

Skipped gates

  • links: In-repo paths only
  • post-merge-acceptance: Both criteria describe behaviour of the deployed bot: a late render no longer holds a turn past 90 s, and the /today /tomorrow /week /month commands keep their 45 s waits. They need the merged and deployed revision (PR 970) and its logs; there is no truthful visual proof before that.
  • screenshots: No UI change

Activity

  1. alex-mextner commented on Nov 5, 2026

    @alex-mextner
    OwnerAuthor

    Async pictures (#799, #938) state 2026-11-05: commit A (d21d7f0) is on branch fix/async-images-20261101, rebased on main 6b7ee71, not pushed. Commit B is staged (77 files, version 0.3.6) with the B3/B4 review fixes; it needs one more single-seat review, then commit, force-push with lease, PR Refs #799, #938, CI, Stage QA, gh ship. Server full suite (before the last fixes): 9521 pass, 6 environment-only fail. Server 65.21.40.51 disk is full, which blocks Stage QA until space is freed.

  2. alex-mextner commented on Nov 5, 2026

    @alex-mextner
    OwnerAuthor

    2026-11-05: the asynchronous picture delivery is implemented and reviewed single-seat (three passes, see #938) but not yet committed, merged or deployed. Criteria stay unchecked until the merged revision runs; nothing is live-tested yet.

  3. alex-mextner commented on Nov 5, 2026

    @alex-mextner
    OwnerAuthor

    2026-11-05 14:00: PR #970 is open; hosted full test suite passes, type-bans and Stage QA fail (see #938). Not merged, not deployed, not live-tested; criteria remain unchecked.

  4. alex-mextner commented on Nov 5, 2026

    @alex-mextner
    OwnerAuthor

    Shipped: merged via #970.
    Merge commit: 78b6343
    This does NOT close the ticket — acceptance still needs proof. Run task read #799 for the outstanding criteria, then task check/task done.

  5. alex-mextner commented on Nov 5, 2026

    @alex-mextner
    OwnerAuthor

    2026-11-05 15:30 UTC: deployed as 78b6343 (PR 970), see #938 for the receipt, health and log evidence. Not yet live-tested with a real picture request: the first /today or AI picture in production should produce an 'Image delivery outcome' log line (outcome delivered) and a turn that ends well under 90 s; check that and then tick the criteria.

  6. alex-mextner commented on Nov 6, 2026

    @alex-mextner
    OwnerAuthor

    Live picture check, 2026-11-06 (read-only). Honest status: implemented, reviewed, merged and deployed (78b6343, receipt/image id matched earlier); live-tested on the STAGE bot only, not yet by a real user.

    • Production: docker logs --since 2026-11-05T15:16:00Z hypercal-bot on odroidn2 holds 0 Image delivery outcome lines and 0 AI request metric lines since the deploy, i.e. no real user request has reached the bot since the deploy. Nothing was written to any real calendar.
    • Stage (PR fix(launch): a transient Telegram reset at boot is retried instead of killing the process, and bot tokens never reach logs or alerts (Refs #972) #973 head 4b539ce, which contains 78b6343): the Stage QA case today-read-only-calendar sent /today through the stage bot. Receipt: text reply first_reply_s 0.84, case ok. Stage container log (evidence release-stage-4b539ce663b9): Enqueuing render job (daily-agenda) -> Image rendered renderTimeMs 4752 -> Image delivery outcome outcome=delivered kind=day elapsedMs=5144. So the text answer came back in under a second and the picture arrived as its own message about 5.1 s later; the command path was not held by the render.
    • Not shown by this evidence: the 90 s turn-deadline cut of an AI picture tool (covered by unit tests of PR 970, not by a live slow render), a failed or timed-out delivery in production, and /week /month. Criteria stay unchecked until a real user request produces an outcome line, or the owner accepts the stage evidence.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions