Skip to content

C09.2: administer durable task ownership and mailbox - #23

Merged
GQAdonis merged 2 commits into
mainfrom
codex/agent-fabric-c09-boss-claims
Sep 28, 2026
Merged

GQAdonis merged 2 commits into
mainfrom
codex/agent-fabric-c09-boss-claims

Conversation

@GQAdonis

Copy link
Copy Markdown

After C09.1, the installed Teams page could plan tasks but could not assign members or inspect team messages. This change adds workspace-scoped claim, reassignment, reviewer, and inbox actions through the fixed authenticated UAR adapter and typed IPC. The page shows owner, ownership epoch, reviewer, and accepted/delivered/processed message status, with controls translated across shipped locales.

The renderer cannot select a UAR URL or own task state. trigger-turn records intent only; C09.3 still controls runtime admission and execution.

Stacked on The Boss #22 (C09.1). Requires UAR C09.2 PR CherryHQ#313 at source d3d768636b46bd7b7cea29fba4987aa1754f8352.

Validation

The current packaged Mac ARM64 cadence boundary is being finalized. Hold merge and publication until its installed workflow and source/artifact receipts are confirmed. No build or test was launched during PR preparation.

Added Teams controls for durable task ownership, reviewers, and addressed mailbox messages.

Travis James added 2 commits September 28, 2026 15:04
Assisted-by: OpenAI:gpt-6-astra [Codex]
Assisted-by: OpenAI:gpt-6-astra [Codex]
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-28T20:59:00.477394Z 93207a9 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@GQAdonis
GQAdonis changed the base branch from codex/agent-fabric-c09-boss to main September 28, 2026 20:54
@github-actions

Copy link
Copy Markdown

⚠️ PR Description Check Failed

The following required sections are incomplete:

  • Before this PR: is empty — please describe the current behavior.
  • After this PR: is empty — please describe the new behavior.
  • ### Why we need it section is missing.

Please edit your PR description to fill in the missing information.

@GQAdonis
GQAdonis merged commit 03b6bba into main Sep 28, 2026
7 of 8 checks passed

@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: 93207a98a8

ℹ️ 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 +100 to +101
} catch (cause) {
setError(cause instanceof Error ? cause.message : String(cause))

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 Refresh stale revisions before offering retry

When another window advances the team or task revision, UAR returns a conflict, but this catch only displays the error and retains the same revisions and command ID. Because the main adapter also flattens the 409 into an INTERNAL IPC error, clicking the advertised retry repeats the stale request until the operator manually refreshes the entire panel; preserve a conflict code and refresh the team before enabling retry.

Useful? React with 👍 / 👎.

Comment on lines +94 to +96
if (action === 'claim') await ipcApi.request('prometheus.uar.teams.claim_task', input)
else if (action === 'reassign') await ipcApi.request('prometheus.uar.teams.reassign_task', input)
else await ipcApi.request('prometheus.uar.teams.assign_reviewer', input)

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 Apply the mutation response before declaring success

Each mutation returns the updated UarTeamInstance, but these calls discard it and depend on a second snapshot request. If the POST commits and that GET fails, refresh() swallows the failure, so the row still shows stale revisions alongside a success message and the next action conflicts; update the selected team from the mutation response before using refresh for reconciliation.

Useful? React with 👍 / 👎.

})
sendIntent.current = undefined
setContent('')
setStatus(tr('messageStatus.accepted'))

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 Derive the sent-message status from the receipt

After a send, this hardcodes Accepted instead of using the returned UarTeamMailboxMessage.status, whose contract also permits delivered and processed. An already-advanced receipt—or a failed follow-up refresh—therefore leaves the UI reporting a stage that did not come from UAR; retain the returned message and render its actual status.

Useful? React with 👍 / 👎.


- [x] 1. Add typed task and mailbox projections, fixed scoped adapter methods and IPC contracts.
- [x] 2. Add Teams task ownership, reviewer and mailbox controls with explicit state feedback and all locale strings.
- [x] 3. Package the exact matching UAR source and complete the installed Mac ARM64 build/function boundary.

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 Leave the installed boundary unchecked until it runs

This marks the packaged Mac ARM64 build and installed functional boundary complete, but the same commit states that the boundary is still being finalized, merge/publication must wait, and no build or test was launched. Keeping the task checked records false release-readiness evidence; leave it open until the packaged assignment, fencing, and mailbox flow has actually been exercised.

AGENTS.md reference: AGENTS.md:L57-L58

Useful? React with 👍 / 👎.

<SettingDescription>{tr('mailboxDescription')}</SettingDescription>
</div>
<Button variant="outline" size="sm" disabled={!available || loading || sending} onClick={() => void refresh()}>
<RefreshCw size={14} className={loading ? 'animate-spin' : undefined} aria-hidden="true" />

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 Honor reduced motion for the refresh spinner

When the OS requests reduced motion, this new loading indicator still spins indefinitely because animate-spin is unconditional. Use the repository's motion-safe:animate-spin or motion-reduce:animate-none pattern so refreshing the mailbox respects the user's accessibility preference.

AGENTS.md reference: AGENTS.md:L134-L136

Useful? React with 👍 / 👎.

dependsOn: string[]
}

export interface UarTeamTaskCommandInput {

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 Keep main-only command DTOs out of shared

Repository-wide consumer search shows this command type, UarTeamTaskStateInput, and UarTeamMailboxSendInput are imported only by the main-process adapter, while renderer request types are independently inferred from the IPC Zod schemas. These declarations therefore create a second, drift-prone contract rather than a type actually shared by both processes; keep them in main or derive them from the owning IPC schema.

AGENTS.md reference: AGENTS.md:L148-L148

Useful? React with 👍 / 👎.

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