Skip to content

Fix intermittent Codex and Claude activity detection - #79

Merged
kentwelcome merged 3 commits into
mainfrom
spacedock-ensign/stable-agent-activity-detection
Jul 28, 2026
Merged

Fix intermittent Codex and Claude activity detection#79
kentwelcome merged 3 commits into
mainfrom
spacedock-ensign/stable-agent-activity-detection

Conversation

@kentwelcome

Copy link
Copy Markdown
Contributor

Keep active Codex and Claude workers visible until structured lifecycle evidence says they stopped, eliminating intermittent false-idle task status.

What changed

  • Retain privacy-safe typed lifecycle evidence across incremental session scans.
  • Correlate modern Codex and Claude dispatch schemas with exact keys.
  • Publish only coherent scan generations through the background worker.
  • Add sanitized lifecycle, ordering, attribution, and rendering regressions.

Evidence

  • Focused session activity: 16/16 passed.
  • Full unit suites: 571/571 passed; integration, docs, formatting, and lint passed.

075

Copilot AI review requested due to automatic review settings July 28, 2026 08:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR tightens local session-activity detection for Codex and Claude Code so workers remain visible until explicit structured stop evidence is observed, reducing intermittent “false idle” transitions. It does this by retaining privacy-safe typed evidence across incremental scans, adding stricter correlation rules, and only publishing coherent scan generations to the app.

Changes:

  • Introduces SessionScanState and a typed evidence store to persist byte cursors + projected lifecycle facts across scans.
  • Adds new projection/reduction pipeline (projection, codex, claude, reducer, state) with updated lifecycle correlation rules (cwd/parent/path) and retry-on-unstable-scan behavior.
  • Expands and sanitizes fixtures + UI/core tests to cover lifecycle ordering, replay/reopen logic, and regression scenarios.

Reviewed changes

Copilot reviewed 43 out of 44 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/fixtures/session-activity/codex-worker-unlinked/rollout.jsonl Adds cwd to Codex session meta fixture.
tests/fixtures/session-activity/codex-worker-open/rollout.jsonl Adds cwd to Codex session meta fixture.
tests/fixtures/session-activity/codex-worker-complete/rollout.jsonl Adds cwd to Codex session meta fixture.
tests/fixtures/session-activity/codex-v2-wrong-path/parent.jsonl New v2 negative fixture for mismatched agent path.
tests/fixtures/session-activity/codex-v2-wrong-path/child.jsonl New v2 negative fixture child log.
tests/fixtures/session-activity/codex-v2-wrong-parent/parent.jsonl New v2 negative fixture for mismatched parent thread id.
tests/fixtures/session-activity/codex-v2-wrong-parent/child.jsonl New v2 negative fixture child log.
tests/fixtures/session-activity/codex-v2-wrong-cwd/parent.jsonl New v2 negative fixture for mismatched cwd correlation.
tests/fixtures/session-activity/codex-v2-wrong-cwd/child.jsonl New v2 negative fixture child log.
tests/fixtures/session-activity/codex-v2-worker-open/parent.jsonl New v2 positive fixture parent start evidence.
tests/fixtures/session-activity/codex-v2-worker-open/child.jsonl New v2 positive fixture child worker evidence.
tests/fixtures/session-activity/codex-fo-exec-command/rollout.jsonl New fixture for direct structured exec_command evidence.
tests/fixtures/session-activity/claude-worker-open/parent.jsonl Adds cwd to legacy Claude parent fixture.
tests/fixtures/session-activity/claude-worker-open/claude-fo-redacted/subagents/worker.jsonl Adds cwd to legacy Claude sidechain worker fixture.
tests/fixtures/session-activity/claude-worker-idle/parent.jsonl Adds cwd to legacy Claude idle envelope fixture.
tests/fixtures/session-activity/claude-worker-idle/claude-fo-redacted/subagents/worker.jsonl Adds cwd to legacy Claude sidechain worker fixture.
tests/fixtures/session-activity/claude-modern-wrong-cwd/parent.jsonl New modern Claude negative fixture for cwd mismatch.
tests/fixtures/session-activity/claude-modern-wrong-cwd/claude-parent/subagents/worker.meta.json New modern Claude teammate metadata fixture.
tests/fixtures/session-activity/claude-modern-wrong-cwd/claude-parent/subagents/worker.jsonl New modern Claude sidechain fixture.
tests/fixtures/session-activity/claude-modern-worker-open/parent.jsonl New modern Claude parent dispatch fixture.
tests/fixtures/session-activity/claude-modern-worker-open/claude-parent/subagents/worker.meta.json New modern Claude teammate metadata fixture.
tests/fixtures/session-activity/claude-modern-worker-open/claude-parent/subagents/worker.jsonl New modern Claude sidechain fixture.
tests/fixtures/session-activity/claude-modern-duplicate-call/parent.jsonl New modern Claude negative fixture for duplicate Agent calls.
tests/fixtures/session-activity/claude-modern-duplicate-call/claude-parent/subagents/worker.meta.json New modern Claude teammate metadata fixture.
tests/fixtures/session-activity/claude-modern-duplicate-call/claude-parent/subagents/worker.jsonl New modern Claude sidechain fixture.
tests/fixtures/session-activity/claude-modern-cross-parent/parent.jsonl New modern Claude negative fixture for cross-parent correlation.
tests/fixtures/session-activity/claude-modern-cross-parent/different-parent/subagents/worker.meta.json New modern Claude teammate metadata fixture.
tests/fixtures/session-activity/claude-modern-cross-parent/different-parent/subagents/worker.jsonl New modern Claude sidechain fixture.
tests/fixtures/session-activity/claude-fo-gate/session.jsonl Adds cwd to Claude FO gate fixture.
tests/fixtures/session-activity/claude-fo-complete/session.jsonl Adds cwd to Claude FO completion fixture.
docs/superpowers/specs/2026-07-27-spacetop-entity-activity-design.md Updates design spec to match new typed evidence + correlation rules.
crates/spacetop/src/ui/tests/task_list.rs Adds UI regression test for scan replay and terminal clearing behavior.
crates/spacetop/src/ui/tests/preview.rs Updates UI preview tests for the new previous_state/worker result shape.
crates/spacetop/src/ui/tests.rs Updates UI test helpers for the new worker result shape.
crates/spacetop/src/lib.rs Switches app worker wiring from session file snapshots to SessionScanState + immediate retry flag.
crates/spacetop/src/app/tests.rs Updates app tests for the new worker result shape.
crates/spacetop/src/app/session_activity_worker.rs Updates background worker to call scan_local_sessions_with_state and propagate retry + state.
crates/spacetop-core/src/session_activity/state.rs New incremental scan state management: inventory, cursors, checkpointing, evidence retention.
crates/spacetop-core/src/session_activity/reducer.rs New deterministic activity reducer with stable tie-breaking.
crates/spacetop-core/src/session_activity/projection.rs New privacy-safe projection of session logs into typed facts + ordering metadata.
crates/spacetop-core/src/session_activity/codex.rs New Codex-specific correlation + lifecycle event extraction.
crates/spacetop-core/src/session_activity/claude.rs New Claude-specific correlation + lifecycle event extraction, including reopen logic.
crates/spacetop-core/src/session_activity.rs Refactors session activity facade to use new state/projection/reducer pipeline.
AGENTS.md Updates repo code map to reflect new session_activity/* module layout and responsibilities.

Comment thread crates/spacetop-core/src/session_activity/state.rs
Comment thread crates/spacetop-core/src/session_activity/state.rs
@kentwelcome kentwelcome self-assigned this Jul 28, 2026
@kentwelcome
kentwelcome merged commit c8e0a9d into main Jul 28, 2026
1 check passed
@kentwelcome
kentwelcome deleted the spacedock-ensign/stable-agent-activity-detection branch July 28, 2026 08:23
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.

2 participants