Skip to content

[Think Tank] Scheduler None-Guard Fix #72

@rayketcham

Description

@rayketcham

run_full_cycle crashes on filtered ideas — add null check and tests

src/project_forge/cron/scheduler.py:run_full_cycle (line 259) calls generate_and_store() then immediately passes its return value to create_github_issue_for_idea() and scaffold_project() without checking for None. generate_and_store() explicitly returns None on four paths: quality review failure (line 146), dedup gate (line 159), router discard (line 177), and router contribute (line 190). Every filtered idea triggers an AttributeError that swallows the exception in the outer try/except of generate_and_store's callers. The fix is a single early-return guard after the generate_and_store call in run_full_cycle, mirroring the pattern already used inside generate_and_store itself.

Feasibility: 0.95
MVP Scope: Edit src/project_forge/cron/scheduler.py: add if idea is None: return None after the generate_and_store call at line 262. Create tests/test_scheduler.py: test that run_full_cycle returns None gracefully when generate_and_store returns None (mock generate_and_store), and test the happy path where an idea passes through to issue creation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ci-queuePromoted self-improvement item — CI fails until addressed

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions