Skip to content

fix(macapp): bind ToolWalk to submitted run identity - #1129

Merged
dennisonbertram merged 4 commits into
codex/issue-1125-action-ownerfrom
codex/issue-1128-submission-handle
Aug 3, 2026
Merged

fix(macapp): bind ToolWalk to submitted run identity#1129
dennisonbertram merged 4 commits into
codex/issue-1125-action-ownerfrom
codex/issue-1128-submission-handle

Conversation

@dennisonbertram

Copy link
Copy Markdown
Owner

Summary

  • capture Composer action mode and owner together so stale A steering cannot submit B
  • return an A-only RunSubmission from native submit paths and bind ToolWalk wait, auto-controls, timeout, and verdict to it
  • retain first local lifecycle timestamp so a genuinely newer scheduled B can displace A; a displaced handle sends no B action

Closes #1128

Stack

Deterministic TDD evidence

  • B before delayed A start response cannot become A\x27s handle
  • B after A capture produces .displaced, including after an A terminal, with zero B cancel/approve/deny/input/steer requests
  • A-only transcript excludes B; start failure/reset cannot resurrect A; captured steer never submits

Verification

  • swift format lint --strict --recursive Sources Tests
  • focused swift test --filter 'RunSubmissionTests|RunSessionExternalControlTests|ToolWalkTests' (37 tests / 5 suites)
  • swift test (230 tests / 44 suites)
  • ./scripts/test-regression.sh: normal/race passed; coverage 85.5%, zero uncovered functions

@dennisonbertram
dennisonbertram force-pushed the codex/issue-1128-submission-handle branch from d223738 to eb64af3 Compare August 3, 2026 21:42
* fix(toolwalk): observe displaced submission outcomes

* fix(toolwalk): retain immutable timeout authority (#1139)

* fix(toolwalk): retain immutable timeout authority

* test(toolwalk): prove displaced timeout orchestration

* docs(plan): record timeout authority regression evidence

* docs: correct focused orchestration evidence count
@dennisonbertram
dennisonbertram marked this pull request as ready for review August 3, 2026 23:09
@cursor

cursor Bot commented Aug 3, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@dennisonbertram
dennisonbertram merged commit a52c50a into codex/issue-1125-action-owner Aug 3, 2026
5 checks passed
@dennisonbertram
dennisonbertram deleted the codex/issue-1128-submission-handle branch August 3, 2026 23:10

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0a0bedffa7

ℹ️ 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 on lines +540 to +541
if let activeSubmission, activeSubmission.runID != runID {
activeSubmission.markDisplaced()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Defer displacement until the submitted ID resolves

When submitting another turn in an existing conversation, harnessd can publish A's conversation-stream lifecycle event before the startRun HTTP response assigns activeSubmission.runID. Because nil != runID, this marks A as permanently displaced even though the event belongs to A itself; the later acknowledgement does not reverse that state, so A remains classified as external, the UI can show “Scheduled run active,” and the returned submission handle incorrectly disables its normal ownership behavior. Defer this decision while the submission is unresolved, then compare the response ID with the selected run.

Useful? React with 👍 / 👎.

dennisonbertram added a commit that referenced this pull request Aug 3, 2026
* fix(macapp): fence stale stop and steer actions

* fix(macapp): bind ToolWalk to submitted run identity (#1129)

* fix(macapp): bind ToolWalk to submitted run identity

* fix(macapp): retain submitted run outcomes (#1131)

* fix(toolwalk): observe displaced submission outcomes (#1138)

* fix(toolwalk): observe displaced submission outcomes

* fix(toolwalk): retain immutable timeout authority (#1139)

* fix(toolwalk): retain immutable timeout authority

* test(toolwalk): prove displaced timeout orchestration

* docs(plan): record timeout authority regression evidence

* docs: correct focused orchestration evidence count

* fix(toolwalk): gate timeout cancellation by deadline ticket (#1146)
dennisonbertram added a commit that referenced this pull request Aug 3, 2026
* fix(macapp): fence stale interactive affordances

* style(macapp): format interactive control views

* fix(macapp): fence stale stop and steer actions (#1127)

* fix(macapp): fence stale stop and steer actions

* fix(macapp): bind ToolWalk to submitted run identity (#1129)

* fix(macapp): bind ToolWalk to submitted run identity

* fix(macapp): retain submitted run outcomes (#1131)

* fix(toolwalk): observe displaced submission outcomes (#1138)

* fix(toolwalk): observe displaced submission outcomes

* fix(toolwalk): retain immutable timeout authority (#1139)

* fix(toolwalk): retain immutable timeout authority

* test(toolwalk): prove displaced timeout orchestration

* docs(plan): record timeout authority regression evidence

* docs: correct focused orchestration evidence count

* fix(toolwalk): gate timeout cancellation by deadline ticket (#1146)
dennisonbertram added a commit that referenced this pull request Aug 3, 2026
* fix(macapp): bind external runs to controls

* fix(macapp): fence stale interactive affordances (#1123)

* fix(macapp): fence stale interactive affordances

* style(macapp): format interactive control views

* fix(macapp): fence stale stop and steer actions (#1127)

* fix(macapp): fence stale stop and steer actions

* fix(macapp): bind ToolWalk to submitted run identity (#1129)

* fix(macapp): bind ToolWalk to submitted run identity

* fix(macapp): retain submitted run outcomes (#1131)

* fix(toolwalk): observe displaced submission outcomes (#1138)

* fix(toolwalk): observe displaced submission outcomes

* fix(toolwalk): retain immutable timeout authority (#1139)

* fix(toolwalk): retain immutable timeout authority

* test(toolwalk): prove displaced timeout orchestration

* docs(plan): record timeout authority regression evidence

* docs: correct focused orchestration evidence count

* fix(toolwalk): gate timeout cancellation by deadline ticket (#1146)
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