Files
nexus/docs/audits/2026-07-31/operation-results-deep-links/IMPLEMENTATION_AND_ACCEPTANCE.md
T
AzuTear f5552218bc
CI - Build & Test / Backend (.NET) (push) Successful in 42s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 2m46s
CI - Build & Test / Security Check (push) Successful in 3s
CI - Build & Test / Deploy Nexus (push) Successful in 56s
feat: ship agent-first mission control v0.2.57
2026-07-31 22:39:47 +02:00

5.4 KiB

Structured operation results and deep links

Date: 2026-07-31 Scope: local repository implementation and controlled contract validation External writes: none Commit, push or deployment: none

Outcome

The remaining mission-control mutation surfaces now return one structured result contract. The browser presents that contract in one global result tray and resolves its entity references into registered, selectable destinations. This closes the result-navigation follow-up recorded by the Performance-V2 checkpoint without introducing a second workflow or routing authority.

OpenClaw remains the runtime authority. Nexus still owns policy, approval, audit, durable workflow state and presentation. This checkpoint did not relax the production write gate for an unsupported external Nexus client identity.

Backend contract

OperationResultFactory creates the common response metadata:

  • operation/correlation ID;
  • operation status;
  • non-negative resource revision;
  • one optional primary EntityRefDto;
  • de-duplicated affected references; and
  • trace ID or validated traceparent when available.

Caller-provided correlation IDs are accepted only when they are non-empty, contain no control characters and are at most 128 characters. The selected ID is returned in X-Correlation-ID. Frontend URLs are deliberately not emitted by the backend.

The contract is emitted from:

  • dashboard and versioned task create, update, state, approval, rejection, delete, stale-reset and activity mutations;
  • task bridge and Nexus MCP task mutation responses;
  • project create, update, archive and delete;
  • notification read and read-all, including an honest noop when an item was already read;
  • OpenClaw task cancel, session abort/model patch, cron create/update/delete/ run and approval resolution, including blocked, invalid, stale, replayed, in-doubt and idempotency-conflict paths;
  • OpenClaw agent-file writes; and
  • schema-controlled OpenClaw config patches.

Task and project delete endpoints now return the deleted/archived DTO with its operation result instead of an empty 204, so clients can navigate and audit the outcome. Generated OpenAPI and TypeScript contracts reflect this response shape.

Legacy Nexus resources that do not yet own a concurrency revision use revision 0. Notification changes use revision 1/0; OpenClaw and proposal/ run domains retain their existing revision semantics. A synthetic revision was not invented from timestamps.

Frontend result handling

The global authenticated shell now contains a dismissible, keyboard-visible operation result tray. It normalizes generated number/string revisions and shows status, primary/affected entities, revision and trace metadata.

The central resolver supports:

Reference Destination behavior
task durable Task Detail route
project durable Project Detail route
run durable Run Detail route
cron Calendar opens the addressed job detail
openclaw-task Run Control selects the runtime task
session Run Control selects the session
approval Run Control prioritizes, scrolls to and focuses the approval
agent-file Agent Detail opens the addressed live file tab
config Settings scrolls to and focuses the OpenClaw config editor
notification Notifications prioritizes and focuses the item
activity Activity opens the addressed event detail
task-board Task Board index

Existing agent, proposal, incident, document and event-stream mappings remain registered. The backend continues to emit entity identity rather than route strings.

Task Board, Task Detail, legacy ModuleView task actions, projects, notifications, OpenClaw cron/control commands, agent model changes, agent-file writes and config patches all consume the result contract. Failed OpenClaw responses report their structured result before the existing recovery message is raised.

Automated acceptance

Gate Result
.NET 10 backend tests Passed: 362; failed: 0; skipped: 5; total: 367
Frontend typecheck Passed
Frontend unit tests Passed: 12 files, 30 tests
Frontend production build Passed: 1,988 modules transformed
Playwright controlled contract suite Passed: 24 tests
Core-route geometry Passed at 375, 768, 1024, 1440 and 1920 px
Task mutation result journey Passed: drag/drop -> operation tray -> Task Detail
OpenAPI generation Passed; backend document and generated schema updated

The five skipped backend tests remain explicitly Docker-gated: three PostgreSQL provisioning tests, one Toxiproxy provisioning test and one PostgreSQL operation-claim concurrency test. They were not executed and are not counted as passing evidence.

Boundaries and next gates

This checkpoint does not prove:

  1. live pairing or management writes against Bao's OpenClaw;
  2. an end-to-end Nexus -> OpenClaw -> OpenAI -> Nexus production run;
  3. PostgreSQL/Toxiproxy concurrency behavior in a running Docker environment;
  4. k6 board thresholds or archived SQL execution plans;
  5. live Promptfoo/MCP 2.0 negotiation; or
  6. production OTLP/pg_stat_statements operation.

The next release gate remains official external Nexus/generic-operator Client-ID support followed by read-only inventory acceptance. Docker-backed concurrency and measured board performance should be run before making scale or p95 claims. No Redis, broker, workflow engine or second agent runtime is justified by this result-contract slice.