Skip to content

feat(creative-ideas): wire the Creative Ideas thread into the running daemon (#2647)#2709

Merged
rysweet merged 1 commit into
mainfrom
feat/issue-2647-wire-the-creative-ideas-subsystem-into-the-running
Jul 6, 2026
Merged

feat(creative-ideas): wire the Creative Ideas thread into the running daemon (#2647)#2709
rysweet merged 1 commit into
mainfrom
feat/issue-2647-wire-the-creative-ideas-subsystem-into-the-running

Conversation

@rysweet

@rysweet rysweet commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Why

The Creative Ideas subsystem merged in #2647 but was never activated. The
OODA daemon never called creative_ideas::register(...), so at runtime there
was zero creative-ideas activity — the operator saw it "not working". This
PR wires the generator thread into the running daemon so it operates on its
configured cadence.

What (additive)

  • Daemon wiring (src/operator_commands_ooda/daemon/mod.rs): the
    cognitive-thread Mind runtime is now built when either
    SIMARD_COGNITIVE_THREADS_ENABLED (maintenance/engineer-log, default-OFF)
    or the Creative Ideas gate is on. The thread is registered through a new
    register_creative_ideas_if_enabled(&mut mind, &cfg) seam, independent of
    the generic master switch — mirroring the default-ON Overseer/Journal threads.
  • Enablement (src/creative_ideas/mod.rs): CreativeIdeasConfig is now
    default-ON, opt-out. from_lookup leaves the subsystem ON for
    unset/empty/truthy values; only an explicit falsey value (0/false/no/off)
    opts out via SIMARD_CREATIVE_IDEAS_ENABLED.
  • Full pipeline reachable: the wired tick drives
    generation → ProspectiveMemory ideas → reviewers (crusty-old-engineer,
    philosophy-guardian, measurability) + synthesis → routing
    (accepted → goal; needs-human → labeled, @rysweet-tagged issue;
    idea PRs carry the creative-idea-needs-human-review blocking label, enforced
    by standard GitHub mechanisms — never --admin/--no-verify).
  • Observability: a dedicated startup log line
    (creative-ideas thread ENABLED (default) (interval = 86400s; …)) plus the
    existing per-tick cognitive-thread summary (generated/persisted/reviewed/routed
    counts), which also flows into the Overseer activity feed and dashboard/journal.
  • systemd (scripts/simard-ooda.service): documents the default-ON opt-out
    and the least-privilege gh/token scope the routing step needs.
  • Docs + stale comments: refresh the design/howto/reference docs and the
    now-inaccurate "not wired / gated OFF" comments in lib.rs,
    cognitive_threads/threads/mod.rs, and cognitive_memory/creative_idea.rs.

Tests (hermetic, no network)

  • register_if_enabled_registers_when_default_on / _registers_when_env_unset
    — the daemon seam registers the thread at startup.
  • register_if_enabled_skips_when_opted_out / _skips_when_disabled_via_env
    — disabled via env ⇒ not registered.
  • wired_thread_tick_generates_reviews_and_routes — an enabled tick generates
    ideas into ProspectiveMemory and runs the review + routing pipeline
    (goal path).
  • wired_pipeline_human_review_files_issue_with_label_and_owner — needs-human
    routing files a labeled, owner-tagged issue.
  • Plus dry-run, tick-is-total-on-error, and default-ON opt-out config tests.

Deployment note

After merge + redeploy, the operator will see the startup ENABLED line and, on
each due tick, creative ideas being generated + reviewed + routed.

Refs #2647

… daemon (#2647)

The Creative Ideas subsystem merged in #2647 but was never activated: the
OODA daemon never registered the generator thread, so runtime activity was
zero and the operator saw it "not working". This wires it in.

What changed (additive):
- Daemon: build the cognitive-thread `Mind` runtime when EITHER
  SIMARD_COGNITIVE_THREADS_ENABLED (maintenance/engineer-log, default-OFF)
  OR the Creative Ideas gate is on, and register the thread via a new
  `register_creative_ideas_if_enabled` seam — independent of the generic
  master switch, mirroring the default-ON Overseer/Journal threads.
- Config: CreativeIdeasConfig is now default-ON, opt-out. `from_lookup`
  treats unset/empty/truthy as ON; only an explicit falsey value
  (0/false/no/off) opts out via SIMARD_CREATIVE_IDEAS_ENABLED.
- Observability: a dedicated startup log line ("creative-ideas thread
  ENABLED (default) (interval=…)") plus the existing per-tick
  cognitive-thread summary (generated/persisted/reviewed/routed counts),
  which also flows into the Overseer activity feed and dashboard/journal.
- The wired tick drives the full pipeline: generation -> ProspectiveMemory
  -> reviewers (crusty-old-engineer, philosophy-guardian, measurability)
  + synthesis -> routing (accepted -> goal; needs-human -> labeled,
  @rysweet-tagged issue; idea PRs carry the block-until-human-review label,
  never --admin/--no-verify).
- systemd unit documents the default-ON opt-out and least-privilege gh scope.
- Refresh stale "not wired / gated OFF" comments in lib.rs, threads/mod.rs,
  and cognitive_memory/creative_idea.rs.

Tests (hermetic, no network): registration under default-ON and unset env;
no registration when disabled via env; a full enabled tick generates ideas
into ProspectiveMemory and runs review + routing (goal and issue paths) with
injected fakes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

📊 Coverage Summary

Generated by cargo llvm-cov --workspace --summary-only (nightly, excluding test files)

Module Lines Covered Coverage
Total 146074 121705 83.3%

Coverage data from CI run. Test files matching tests?/ are excluded from line counts.

@rysweet rysweet merged commit 48332da into main Jul 6, 2026
17 checks passed
@rysweet rysweet deleted the feat/issue-2647-wire-the-creative-ideas-subsystem-into-the-running branch July 6, 2026 19:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant