Skip to content

feat: add Operations demonstrator and agent workspace - #109

Merged
nicococo merged 35 commits into
mainfrom
feature/operations-demonstrator
Oct 14, 2026
Merged

nicococo merged 35 commits into
mainfrom
feature/operations-demonstrator

Conversation

@nicococo

@nicococo nicococo commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • add the Operations demonstrator with telemetry-based pipeline watching, incident evidence, safe recommendations, and remediation tracking
  • add configurable Operations agents with durable project-backed profiles, runs, messages, and proposals
  • provide an embedded Team workspace with chat-style Q&A, proposal history, work assignment, and enable/disable controls
  • support Kubernetes gateway runtime providers and improve optional telemetry/secret-manager behavior
  • preserve transitional service health states when reopening projects, including K3s MLflow Gateways still starting
  • make OpenTelemetry collector diagnostics opt-in and bound collector Docker logs to prevent host disk exhaustion
  • document the experimental Operations workflow and current advisory-only agent behaviour

Validation

  • focused Operations, persistence, and TUI tests pass
  • infrastructure and K3s gateway regression suite: 28 passed
  • OTel service, configuration, secret, and setup-form tests: 94 passed
  • documentation governance check passes
  • verified that the affected AirML project reopens with its managed-TLS gateway in the starting state
  • diff check passes
  • ruff is not installed in the current environment

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 12, 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-10-12T11:23:42.644721Z adcb943 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.

@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: adcb943411

ℹ️ 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 +1058 to +1060
self.runs = sorted(
(run for runs in grouped.values() for run in runs[-self.max_runs:]),
key=lambda run: run.started_ns,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Preserve captured baselines when bounding run history

Once a workload exceeds max_runs (200 by default), this slice evicts the healthy runs from which _baseline() derives its reference and replaces them with later incident samples. With sustained corruption, even the first anomalous sample entering the ten-run baseline can inflate pstdev enough for _is_anomalous() to stop firing, so the watcher reports recovered while the fault is still present. Keep the initial baseline separately and bound only the post-baseline history.

Useful? React with 👍 / 👎.

Comment on lines +81 to +85
variables = self._gateway_manifest_variables(
include_secret_manager=include_secret_manager,
include_telemetry=include_telemetry,
secret_manager_environment=secret_manager_environment,
telemetry_environment=telemetry_environment,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Reload the TLS hostname before refreshing bindings

When a persisted managed-TLS gateway is reopened, __post_init__() resets the runtime-only _tls_hostname to an empty string and setup() is not rerun for the already-deployed service. Changing its telemetry or secret-manager binding now reaches this renderer through _refresh_runtime_bindings(), producing and applying an Ingress with an empty host and breaking the configured hostname route. Reload the TLS metadata before rendering a runtime-binding update, or persist the validated hostname.

Useful? React with 👍 / 👎.

save_run(
OperationsAgentRun(
id=run_id,
agent_id=str((self.agent or {}).get("id") or ""),

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 async answers attached to the originating agent

If the user selects another team member while a question request is in flight, this callback reads the new mutable self.agent and updates the existing run with that agent's ID. Because save_operations_agent_run() updates agent_id on conflict, the original question and its answer are moved into the newly selected agent's history and attributed incorrectly. Capture the originating agent ID when launching the worker and pass it into the callback.

Useful? React with 👍 / 👎.

@nicococo
nicococo merged commit 7889955 into main Oct 14, 2026
5 checks passed
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