You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
AI tools are not bounded by the 90 s agent turn deadline; a late image render can end a turn past 90 s #799
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).
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.
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.
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.
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.
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.
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.
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.
Activity
alex-mextner commentedon Nov 5, 2026
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.
feat(db): image_deliveries table and repository for durable picture d…
alex-mextner commentedon Nov 5, 2026
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.
feat(images): every picture is queued and delivered in the background…
alex-mextner commentedon Nov 5, 2026
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.
test(images): type test doubles and outcome details instead of as nev…
feat(images): every picture is queued and delivered in the background…
alex-mextner commentedon Nov 5, 2026
Shipped: merged via #970.
Merge commit: 78b6343
This does NOT close the ticket — acceptance still needs proof. Run
task read #799for the outstanding criteria, thentask check/task done.alex-mextner commentedon Nov 5, 2026
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.
alex-mextner commentedon Nov 6, 2026
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.
docker logs --since 2026-11-05T15:16:00Z hypercal-boton odroidn2 holds 0Image delivery outcomelines and 0AI request metriclines since the deploy, i.e. no real user request has reached the bot since the deploy. Nothing was written to any real calendar.today-read-only-calendarsent /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 renderedrenderTimeMs 4752 ->Image delivery outcomeoutcome=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./week/month. Criteria stay unchecked until a real user request produces an outcome line, or the owner accepts the stage evidence.