Skip to content

feat(m6): heartbeat workers, scheduler, and chat extract hook#72

Merged
HyperdustLabs merged 6 commits into
mainfrom
feat/m6-lifecycle-workers
May 19, 2026
Merged

feat(m6): heartbeat workers, scheduler, and chat extract hook#72
HyperdustLabs merged 6 commits into
mainfrom
feat/m6-lifecycle-workers

Conversation

@HyperdustLabs
Copy link
Copy Markdown
Owner

Summary

  • M6 PR1 — Heartbeat maintenance: DecayWorker bumps activation_state.decay and applies weaken/archive via DefaultLifecycleControl; ConflictScannerWorker syncs declared conflicts_with relations to the DCN and heuristically links overlapping active concerns (background only — weave-time resolution stays in ConflictResolver).
  • Scheduler: Daemon starts a background thread on runtime.loops.heartbeat_interval_seconds (default 30s) calling OpenCOATRuntime.tick(); disable with runtime.loops.heartbeat_enabled: false.
  • Chat extract (bridge path): joinpoint.submit accepts extract_from_chat; OpenClaw bridge extractOnUserMessage forwards it on on_user_input; chat_text_for_extraction() derives user text from messages[].

Prerequisites doc updated on branch (m6-prerequisites-status.md, conflict paths from prior commit).

Test plan

  • uv run python -m pytest packages/opencoat-runtime/tests/daemon/test_m6_workers.py packages/opencoat-runtime/tests/daemon/test_scheduler.py
  • uv run python -m pytest packages/opencoat-runtime/tests/daemon/
  • uv run python -m pytest packages/opencoat-runtime/tests/core/test_chat_extract.py packages/opencoat-runtime/tests/daemon/test_jsonrpc_dispatch.py::TestJoinpointExtractFromChat
  • Restart daemon (opencoat runtime up) and confirm log: heartbeat scheduler started
  • Optional: joinpoint.submit with extract_from_chat: true on before_response (needs real LLM)

Follow-ups (not in this PR)

  • M6 PR2: merge + archive (merge_archiver.py)
  • M6 PR3: meta-review worker
  • M6 PR4: 24h soak harness + examples/07_meta_governance_soak

Made with Cursor

moss and others added 2 commits May 19, 2026 00:20
Add repeatable RPC smoke script, status tracker, and implementer note
separating ConflictResolver from ConflictScannerWorker; update ADR-0010.

Co-authored-by: Cursor <cursoragent@cursor.com>
Wire M6 PR1: DecayWorker and ConflictScannerWorker run on each heartbeat
tick; daemon Scheduler calls runtime.tick on an interval. Add optional
extract_from_chat on joinpoint.submit and bridge extractOnUserMessage.

Co-authored-by: Cursor <cursoragent@cursor.com>
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 985d556827

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/opencoat-runtime/opencoat_runtime_daemon/daemon.py
moss and others added 4 commits May 19, 2026 09:39
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve Codex P2 on PR #72: _heartbeat_tick reads self._built at call time
instead of closing over a stale runtime reference from daemon start.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@HyperdustLabs HyperdustLabs merged commit 3b6116e into main May 19, 2026
4 checks passed
@HyperdustLabs HyperdustLabs deleted the feat/m6-lifecycle-workers branch May 19, 2026 02:53
HyperdustLabs pushed a commit that referenced this pull request May 19, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
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