C09.1: administer durable UAR team planning in The Boss - #22
Conversation
Package the pinned C09.1 sidecar, add workspace-scoped team setup and administration, and expose the saved board in localized settings. Packaged Mac ARM64 gate created supervisor, bounded map/reduce and peer boards; restart and workspace isolation passed. Assisted-by: Codex:gpt-6-astra [tools]
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 76de7fea8f
ℹ️ 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".
| {selectedDefinition.id} · {tr('digest')}: {selectedDefinition.digest} | ||
| </p> | ||
| )} | ||
| {snapshot.definitions.length === 0 && ( |
There was a problem hiding this comment.
Keep starter setup available until a binding exists
If package installation succeeds but binding preflight or installation fails, the next snapshot contains the starter definition without an eligible workspace binding. This condition hides the only setup_starter action, so after a refresh or restart the user is left at “No deployment bindings” with no recovery path; offer setup whenever the starter's eligible binding is missing rather than only when the entire definition catalog is empty.
Useful? React with 👍 / 👎.
| dependencies | ||
| ]) | ||
| const intent = | ||
| intentRef.current?.fingerprint === fingerprint |
There was a problem hiding this comment.
Rebase retries on the refreshed team revision
After a task submission fails because another client advanced the team revision, refreshing updates the instance prop without remounting this form, whose key is only the instance ID. Because the fingerprint omits instance.revision, retrying unchanged fields reuses the retained intent's stale expectedTeamRevision and conflicts indefinitely; incorporate the refreshed revision or discard an intent after a definitive conflict while preserving idempotency for uncertain outcomes.
Useful? React with 👍 / 👎.
| )} | ||
| {snapshot && !snapshot.capabilities.planning && ( | ||
| <p className="mt-3 text-sm text-warning-subtle-foreground" role="status"> | ||
| {tr('planningUnavailable')} {snapshot.unavailableReason} |
There was a problem hiding this comment.
Localize the unsupported-planning reason
When the selected UAR does not support team planning, unavailableReason is the internal code team_planning_unsupported, which is rendered directly after the translated message. Users therefore see untranslated snake-case implementation text in every locale; map the reason to an i18n key or omit it from the visible copy.
AGENTS.md reference: AGENTS.md:L128-L132
Useful? React with 👍 / 👎.
| activation: z.object({ teamPlanning: z.boolean().default(false) }) | ||
| }) | ||
| }) | ||
| .parse(await scopedRequest(resolved, '/api/v1/collaboration/capabilities', state.generation)) |
There was a problem hiding this comment.
Honor capability availability before requesting it
For an older, external, or feature-gated UAR whose administration manifest marks collaboration.capabilities unavailable, capabilityState() records that fact but this unconditional request still fails with an HTTP error. Consequently the Teams page cannot return its intended planning: false unsupported snapshot; check the advertised operation before dispatching and return the unsupported state when it is unavailable.
Useful? React with 👍 / 👎.
| if (beforeRestart.instances.some((item) => item.id === team.id)) { | ||
| throw new Error('The first team leaked into another workspace') | ||
| } | ||
| const restart = await request(evaluate, 'prometheus.integration.start', { action: 'uar-restart' }) |
There was a problem hiding this comment.
Relaunch the app in the durability scenario
This operation restarts only UarSidecarService and then continues through the same renderer/evaluator session, while the committed outcome explicitly requires recovery after restarting both UAR and The Boss. A defect in app-process relaunch or restoration can therefore pass this delivery gate; relaunch the packaged application and reconnect before the final snapshot and UI assertions.
AGENTS.md reference: AGENTS.md:L57-L58
Useful? React with 👍 / 👎.
| @@ -0,0 +1,9 @@ | |||
| # Design | |||
|
|
|||
| The Boss verifies workspace IDs against its own workspace store, reads the selected UAR generation and sends requests through its existing authenticated sidecar connection. It parses the returned team documents and refuses a response for another workspace. The renderer receives a typed projection via three fixed IPC routes: snapshot, create, add task. No arbitrary URL or untrusted method is accepted from the renderer. | |||
There was a problem hiding this comment.
Document the starter-setup IPC route
The design describes a three-route renderer boundary—snapshot, create, and add task—but this commit also exposes and invokes prometheus.uar.teams.setup_starter. Because this paragraph defines the fixed IPC trust surface, omitting the fourth command makes the architecture record inaccurate; document all four routes or explicitly distinguish setup from the three planning operations.
Useful? React with 👍 / 👎.
Before this PR:
UAR team definitions could be installed, but The Boss had no workspace-scoped team board or settings controls. A packaged user could not create or inspect durable team tasks.
After this PR:
The Boss pins UAR C09.1 (
ae4db118; Prometheus-AGS/universal-agent-runtime#312), installs an immutable starter team and private workspace binding, and provides typed IPC and a localized Teams settings surface for durable members and task dependency boards.Why we need it
Users need an independently usable planning surface while team execution is built in C09.2/C09.3. The completed Mac ARM64 gate created supervisor/worker, bounded map/reduce and peer graphs, restarted the sidecar, confirmed persistence and workspace isolation, and displayed the recovered board in settings. The local DMG SHA-256 is
10c2c652fa15fe16d56bfe3cc6b3a494b7aa645f9c3bb4a4033d75e23b7f434e; it is Developer ID signed, not notarized. Exact source and runtime receipts are in the convergence C09.1 evidence. Public installers and the website follow the second-delivery publication gate.Validation
The packaged Mac ARM64 app completed the saved-board, restart, isolation and settings walkthrough at the completed increment boundary. No intermediate test suite was run.