Repository navigation
docs(adr): ADR-0020 mid-run message queue + ADR-0021 five-field cron pad (#155) - #165
Merged
Merged
Conversation
ADR-0020: queue-full refusal is a text reply in fully_silent too; /stop keeps waiting scheduled runs; v1 voice gets an explicit 'not supported' reply, local STT is a follow-up; user-facing copy in code is English (locked step-limit and voice strings), earlier Cantonese copy superseded. Open questions replaced by non-blocking follow-ups. ADR-0021: UTC evaluation flagged as a separate P1 timezone follow-up (default system local timezone, config override); #155 proceeds without waiting.
Owner
Author
|
TL ACCEPT (docs). PO Product GO (2026-10-06) is baked into both ADRs at 4996091. Five locks:
No blocking open questions remain; both ADRs stay Accepted. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Docs-only PR. It adds two Accepted ADRs and two glossary terms. No code changes.
ADR-0020: Mid-run message queue (steer, never drop)
docs/adr/0020-mid-run-message-queue.md. Decisions locked by the PO on 2026-10-06 (Q4–Q9). No issue has been filed for this yet.What recon of
main@ 318d203 found:drain_and_inject_steerhas had no caller since theAgenticLoopextraction (a401063). Queued messages get "Steer queued" and are then never read. After 10 of them, the key stays "queue full" until restart.process_messageawait mean Telegram messages never steer. Each one becomes its own turn later.session_keyand run in parallel with user turns. This causes cancel-token clobbering and loses messages sent during a scheduled run.Decision summary:
TurnGate(bot+user) allows one turn at a time and holds an in-memory FIFO queue, capped at 10. Crash or restart loses the queue; this is accepted.setMessageReactionin all modes, including fully silent. No ack bubble. If the reaction fails, it is only logged./stopcancels the turn, clears the queue, and reports how many messages were cleared.202queued instead of409 chat_in_progress, amending ADR-0005.The ADR lists four open questions for the PO: the refusal bubble on fully silent bots,
/stopversus scheduled runs waiting behind the turn, the speech-to-text backend, and localisation of the step-limit message.ADR-0021: Five-field cron, seconds pad (#155)
docs/adr/0021-five-field-cron-seconds-pad.md. Refs #155.normalize_cron_exprpads a 5-field cron to 6 fields with second0(0 9 * * *becomes0 0 9 * * *). A 6-field cron is stored unchanged apart from trimming.@macros are rejected with a clearinvalid_cronmessage.POST /api/tasks,PUT /api/tasks/{id}, theschedule_tasktool, and the config crons. Only the 6-field form is stored.CRON_6_FIELD) and the en/zh-HK hints are updated to say "5 or 6 fields". API responses echo the stored form.Job::new_async→Utc). "Fires at 09:00" in the AC therefore means 09:00 UTC. This is flagged as an open question.Glossary
Adds Mid-run queue and Steer to
GLOSSARY.md.