Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Series autopilot "skips when disabled" test passes through the crash catch-all, not the skip guard

Closed Beginner friendly
#11,999 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
83/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
javascript
Domain
testing

Research direction

Read server/services/seriesAutopilotScheduler.test.js cases around lines 184–201 and the guard in server/services/seriesAutopilotScheduler.js around lines 113–116. Update both skip cases to check for the appropriate skip log and confirm console.error is not called. Run the scheduler test file and verify that removing the guard makes the disabled case fail.

Written by the indexing model from the issue text.

Description

effort:low model:light plan planner:fable-5-1 test-quality tests

Slice audited: scheduled-work tests (test-quality audit, 2026-10-18).

Problem

server/services/seriesAutopilotScheduler.test.js:184-189 ("skips when the schedule was disabled since registration") asserts only expect(startSeriesAutopilot).not.toHaveBeenCalled(). The guard it names is server/services/seriesAutopilotScheduler.js:113-116 (if (!entry) { log; return; }).

Mutation probe (scratch worktree): deleted the four-line if (!entry) block.

Tests  18 passed (18)

Execution falls through to runOptionsFor(undefined), which throws TypeError on entry.provider; the timer callback's outer try/catch logs a ❌ … failed line and returns, so the negative spy is satisfied by the crash rather than the skip. The sibling case at :201 ("skips when the series no longer exists") has the same shape.

Impact

A scheduled multi-stage series-autopilot LLM run (provider spend) can fire while the user has it disabled if a refactor makes runOptionsFor null-tolerant and drops or moves the guard; the only signal would be a log line, and the suite stays green.

Fix (decided)

In both cases, spy on console.log and console.error, assert the disabled/removed since registration — skipping run (or no longer exists) line was logged, and assert console.error was not called. No production code change (returning a { skipped } value is acceptable if preferred, but not required).

Scope: small

Acceptance criteria

  • Deleting the if (!entry) block fails the "disabled since registration" case.
  • Both skip cases assert the skip log line and the absence of an error log.
  • No production code change required.
Dominant language
JavaScript
Stars
38
Forks
32
Avg merge
31m
Merged PRs (30d)
995

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from atomantic/PortOS

All issues in atomantic/PortOS

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.