Repository navigation
bot_schedules: an inactive task has no next run - #2769
Conversation
DSH keeps the originally due instant on a finished one-shot task, and the Bot-wide list passed it to every row whatever its status, so a finished task advertised `next <a time that has already passed>` while the settings page on the same data said Finished (ThinkFlowLab#2767). A row that is not active now prints the paused rows' `no next run` and keeps its status word; the kept instant still sorts the row, and an active row's line is unchanged.
|
@Birfy — review request at tip What it fixes. The fix is one condition in Red first at base Same file after the change: 39/39; the base file is 38/38 (this PR adds one test and touches no existing one). Checks at this tip ( Independent pass (advisory, not the gate). FlyBot Test re-ran the red-first on a clean base (same 1/0/1, base output above) and wrote its own probe: 9/9 on the tip vs 6/9 on the base, with the base failing on "inactive row carries a past instant", "the answer still contains Tier T2 ( |
|
Verdict: PASS at 4501dc3 Ran at this tip: Tree: tarball of The defect is real on the base. The red is the new test, not the suite. With the tip's test file and the base source, only The paused row was already green, so the diff is changing exactly the non- The change is the fix and is narrow. Scope. compare to base: exactly the 5 declared files (+50/−5) — Checks at this tip ( Not run: the full No actionable findings. This is a review report, not merge authority. |
bot_schedules: an inactive task has no next run
Bot: Dev-5
Owner: Dev-5
Written-by: Dev-5
Fixes #2767
DSH keeps the instant a task was once due on the row after it finishes, and the Bot-wide list passed it to every row whatever its status: a finished one-shot read
next 2026-10-29T07:20:46.458Z, inactive, a time that had already passed, while the settings page on the same data saysFinished(core/src/client/schedules.js:103-107). The catalog loop now prints the paused rows'no next runfor any row that is notactive, keeping its status word; the stored instant still sorts the row, so the order does not move, and an active row's line is byte-identical.Red first at
f2ef4dfaccedd40315bd585474d0902118dc0ba8,node --import ./test/harness-resolve.mjs --test --test-name-pattern '#2767' test/schedules.test.js:# tests 1 / # pass 0 / # fail 1, onTip
4501dc3f4e39c65b612d9c4ad59dd119ce74280e, basef2ef4dfaccedd40315bd585474d0902118dc0ba8, 5 files+50/−5.Ran:
TZ=UTC ARCH_DOCS_BASE=f2ef4dfaccedd40315bd585474d0902118dc0ba8 npm run verifyat the tip — exit 0; arch-docsOK (5 changed file(s)), core 3137, social 619, tree 140, timeline 161, workflow 508,.github+policy 671+37, interop 34, lint 0 errors.TZ=UTC node --import ./test/harness-resolve.mjs --test test/schedules.test.js— 39/39 pass.node scripts/ds-bot-patches.mjs generatethencheck—ok core/ equals ds-bot/ + patches/ds-bot/.Not run: the smoke test — no
core/index.jsor turn/delivery path is touched; only the tool's formatting condition.Checkpoint
{ "pr": 2769, "claim": "Dev-5", "issue": 2767, "summary": "`bot_schedules` passed DSH's stored `scheduledAt` to every row and never looked at the status, so a finished one-shot task printed `next <a time that had already passed>` while the settings page on the same data said `Finished`. A row whose status is not `active` now prints the sentence paused rows already used, `no next run`, and keeps its status word. The kept instant still sorts the row, so the order of the answer does not move, and an active row's line is byte-identical to the base. One condition in the catalog loop; no new field, no wording change elsewhere, no client change.", "files": [ "core/src/host/schedules.js", "core/test/schedules.test.js", "docs/subsystems/core-host.md", "patches/ds-bot/0001-core-fixes.patch", "changelog.d/2767-bot-schedules-next-run.fixed.md" ], "checks": { "ran": "TZ=UTC ARCH_DOCS_BASE=f2ef4dfac npm run verify", "result": "green", "at": "4501dc3f4e39c65b612d9c4ad59dd119ce74280e" }, "next": "none — ready for review" }