fix(continuation): stop stale independent admissions from taking the foreground #324

Merged
karsten merged 1 commit from fix/stale-continuation-foreground into main 2026-11-10 16:15:25 +00:00
Owner

Fixes stale topic continuation taking over the foreground.

  • Independent admission expiry = min(task, plan, wait, lastWait deadline); lastWait is saved before wait is cleared; expired/malformed waits grant no automatic work.
  • A newer disjoint-topic operator mandate keeps the foreground; older independent admission is deferred, never cancelled. Explicit operator resume is unaffected.
  • guardWaitTool for independent parent steps: allowlist (dispatch/worker_tasks submit+status, subagent start/list/result, loop status) instead of denying all orchestration tools; resume/pause/cancel/answer/profile/loop mutations stay denied.
  • Benchmark settle timer no longer unref'd while awaited.

Verification (HEAD 76bfa0e + diff): typecheck exit 0, build exit 0, full suite 1789 tests / 1785 pass / 0 fail / 4 skipped. Independent read-only review of the delta: no open P0/P1. P2 (non-blocking): strict wait validation, topic-priority starvation bound, hardcoded allowlist.

Fixes stale topic continuation taking over the foreground. - Independent admission expiry = min(task, plan, wait, lastWait deadline); lastWait is saved before wait is cleared; expired/malformed waits grant no automatic work. - A newer disjoint-topic operator mandate keeps the foreground; older independent admission is deferred, never cancelled. Explicit operator resume is unaffected. - guardWaitTool for independent parent steps: allowlist (dispatch/worker_tasks submit+status, subagent start/list/result, loop status) instead of denying all orchestration tools; resume/pause/cancel/answer/profile/loop mutations stay denied. - Benchmark settle timer no longer unref'd while awaited. Verification (HEAD 76bfa0e + diff): typecheck exit 0, build exit 0, full suite 1789 tests / 1785 pass / 0 fail / 4 skipped. Independent read-only review of the delta: no open P0/P1. P2 (non-blocking): strict wait validation, topic-priority starvation bound, hardcoded allowlist.
Independent parent admissions keep the earliest wait/plan/task deadline,
expired waits grant no automatic work, and a newer disjoint-topic mandate
keeps the foreground. The independent-parent guard now allows only new
delegation and status actions instead of denying every orchestration tool.
The benchmark settle timer stays referenced while awaited.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
harness/core!324
No description provided.