chore: sync fork main with upstream Tracer-Cloud/opensre (2026-07-28) - #3
Merged
Conversation
…acer-Cloud#3776) * test(core/domain): add alert_source unit tests Add dedicated coverage for resolve_alert_source, declared_context_sources, collect_alert_text, and relevant_sources_for_alert before refactoring alert routing tables. Part of the core/domain refactor tracked in Tracer-Cloud#3775. * test(core/domain): cover remaining alert_source branches Add tests for Grafana datasource_uid heuristic, annotations/commonLabels context_sources blocks, pipeline_name collection, and string raw_alert paths flagged by Greptile review on Tracer-Cloud#3776. * refactor(core/domain): add package maps and docstrings Expand core/domain and subpackage __init__ maps (core/agent style), add extract_alert and resolve_alert_source docstrings, collapse SECONDARY_TOOL_SOURCES imports, and hoist correlation scoring weights. Part of Tracer-Cloud#3775 (commit 3/11 on Tracer-Cloud#3776). * refactor(core/domain): deduplicate alert field helpers Centralize alert block iteration, mapping extraction, first-present semantics, and alert metadata precedence so extraction, normalization, alert relevance, and initial state construction cannot drift independently. Part of Tracer-Cloud#3775 (commit 4/11 on Tracer-Cloud#3776). * refactor(core/domain): unify alert source routing registry Replace parallel relevance/seed dicts with AlertSourceRouting entries keyed by alert_source, document the naming convention, expose seed/relevance accessors, and derive the legacy dict views from the single registry. Part of Tracer-Cloud#3775 (commit 5/11 on Tracer-Cloud#3776). * refactor(core/domain): split alert inbox and listener Move the HTTP listener into alert_listener.py and keep inbox.py focused on the queue model and session accessors. Update the REPL controller and tests to import listener symbols from the new module. Part of Tracer-Cloud#3775 (commit 6/11 on Tracer-Cloud#3776). * refactor(core/domain): clean up correlation and tool planning types Move upstream correlation value objects into types/upstream, rename SharedConfidence to WeightedConfidence, fix HintEvidenceScore to require rationale, and introduce PlannableTool for alert tool scoring. Part of Tracer-Cloud#3775 (commit 7/11 on Tracer-Cloud#3776). * refactor(core/domain): split feedback misses subpackage Separate taxonomy, JSONL store, and benchmark export into focused modules under feedback/misses/ while keeping the public import paths unchanged. * refactor(core/domain): split incident window anchor parsers Move vendor anchor parsers and ISO-8601 coercion into incident_anchors.py while keeping IncidentWindow and resolve_incident_window in incident_window.py. * refactor(core/domain): derive Hermes root cause scope from taxonomy Add a scope field on RootCauseCategory and derive HERMES_ROOT_CAUSE_CATEGORIES from the taxonomy table instead of maintaining a separate name list. * refactor(core/messages): move extract_last_assistant_text from diagnosis Transcript parsing belongs with message helpers; repoint diagnose node and tests to core.messages.transcript. * style(core/domain): apply ruff format to extraction and normalization * fix(core/domain): make planner and hint protocols structurally compatible Declare Protocol members as read-only properties so frozen dataclasses (FeatureWorkflowScore) and RegisteredTool satisfy HintEvidenceScore and PlannableTool under mypy. * refactor(core/domain): drop legacy routing dict views and alias accessor Repoint all callers to ALERT_SOURCE_ROUTING / routing_for_alert_source and delete the derived compat dicts plus the relevance_tool_sources_for_alert alias, keeping primary_sources_for_alert as the single accessor. * fix(core/domain): use NotImplementedError in Protocol stubs Replace ellipsis-only Protocol property bodies so CodeQL no longer flags them as no-effect statements.
… consolidate error handling (Tracer-Cloud#3768) * refactor: remove unnecessary shim * refactor: remove compaction and log compaction shims * refactor: import dir * refactor: no remaining callers relied on the package-level compaction re-exports * chore: added invoke_tool(run_fn, *, name, source, kwargs), which owns the single try/except + report_exception call. * Remove cost_tier and approval_scope from tools Remove the unused cost_tier feature (cheap/moderate/expensive classification) and approval_scope field (one_shot/session approval modes) from the tool framework. These fields were defined but never used in the planning or execution logic. This simplifies the RegisteredTool and BaseTool APIs by removing dead code. Updates: - Remove cost_tier validation and storage from RegisteredTool - Remove approval_scope field from BaseTool, RegisteredTool, and AgentTool - Remove cost_tier/approval_scope parameters from @tool decorator - Remove cost_tier assignments from all tool definitions - Update TOOL_INTEGRATION_CHECKLIST and tests accordingly * refactor: move schema related functions into a new file * chore: extract ToolMetadata to metadata module Move ToolMetadata, EvidenceType and SideEffectLevel out of BaseTool into core/tool_framework/metadata.py and import them where needed. Updated core.tool_framework.base, registered_tool, tool_decorator, and tests to use the new metadata module. Keeps the validation/schema separate from the abstract BaseTool so the metadata contract can evolve independently; no behavioral changes. * chore: remove input function * Format schema imports in registered_tool.py Reformat the import from core.tool_framework.schema into a multi-line grouped import and remove an extra blank line before the RegisteredTool dataclass. Purely stylistic/PEP8 cleanup with no functional changes. * fix: restore inspect import in registered_tool; update sentry test to patch telemetry.report_exception Co-authored-by: Cursor <cursoragent@cursor.com> * Update test_basetool_sentry.py * fix: remove _value_matches_schema from __all__, restore BaseTool docstring, drop unused mock import Co-authored-by: Cursor <cursoragent@cursor.com> * Remove TOOL_INTEGRATION_CHECKLIST.md Delete the Tool & Integration Definition of Done checklist (TOOL_INTEGRATION_CHECKLIST.md) from the repository as part of cleanup or consolidation. This removes the long-form checklist file; restore from git history if this was unintentional. * fix: suppress no-any-return mypy error on invoke_tool call in BaseTool.__call__ Co-authored-by: Cursor <cursoragent@cursor.com> * refactor: test cases * fix: update "..." to "pass" * ruff format * fix: bugs and maintainability issues * refactor: move DEFAULT_APPROVAL_EXPIRY_SECONDS to config.constants.investigation opensre.py was removed on main; relocate the constant to investigation.py (which already owns tool-framework-adjacent limits) and update all callers. Co-authored-by: Cursor <cursoragent@cursor.com> * refactor: extract tool registry metadata validation Create BaseToolRegistryMetadata to centralize validation and normalization of tool surfaces, tags, and parallel_safe properties. This consolidates duplicated logic previously scattered across base.py, registered_tool.py, and registry.py, making the tool framework more maintainable and type-safe. The new module provides normalize_surfaces() and normalize_tags() helpers that are reused throughout the framework. Registry metadata is now resolved via BaseTool.registry_metadata() classmethod, removing surface/tags handling from RegisteredTool and the tool registry discovery path. * Update registered_tool.py --------- Co-authored-by: Cursor <cursoragent@cursor.com>
…oud#3680) * perf: remove vpc * Update config.py * Decouple image build; add build-image target Separate Docker image build from EC2 deploy: add a make build-image target and lifecycle build_image() that builds/pushes to ECR and saves the image URI to disk. Deploy now reads the image URI from OPENSRE_IMAGE_URI or the saved file (via _resolve_image_uri) instead of building inline, and prints the used image. Destroy keeps the ECR repository by default and can purge it when OPENSRE_DESTROY_PURGE_ECR=1. Added stack utilities to save/load/check the persisted image URI, updated CLI/help, and added tests covering image build, URI resolution, and ECR retention behavior. * feat: add direct deploy method * fix: ci * fix: ci * Update lifecycle.py * chore: update deployent docs * Update Makefile * Always cleanup IAM in _cleanup_existing() Fix regression where orphaned IAM profile/role resources were left behind when the outputs file was missing or lost. destroy_direct() already falls back to derived resource names ({stack_name}-profile, {stack_name}-role) when no outputs file exists, so removing the conditional ensures IAM cleanup always runs. Added regression test to verify IAM cleanup occurs even without an outputs file. * fix: clearer .env validation prompt * Update prep.py --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: vaibhav upreti <vaibhav.upreti16@gmail.com>
…d#3831) Release `verify` runs `make lint`, whose PYTHON_SOURCE_PATHS includes `gateway/`, so ruff I001 (un-sorted import block) failed the release pipeline on main. The main CI quality job excludes `gateway/` from its lint paths, which is why only Release caught it. Co-authored-by: Cursor <cursoragent@cursor.com>
…ner (Tracer-Cloud#3353) (Tracer-Cloud#3830) * fix(interactive-shell): animate /investigate progress via prompt spinner (Tracer-Cloud#3353) /investigate dispatches as a literal slash command, so the turn-level spinner never starts, and the raw cursor-up animation cannot run under patch_stdout(raw=True) — the progress indicator sat frozen. Drive the prompt spinner (SpinnerState) with per-stage phase labels from the investigation display instead. The display registers the active turn's spinner via console_state and calls set_phase() on each step, so the already-ticking prompt refresh loop animates it with the current stage (Reading alert, Loading integrations, Investigation, Diagnosing, Publishing). Remove the dead raw-ANSI animation path and the now-unused prompt-suppress seam it replaced (get/set_prompt_suppress_fn, StreamingConsole.suppress_prompt_spinner). * fix(interactive-shell): repaint prompt once when spinner stops The spinner ticker only invalidated the prompt while streaming, so when an investigation finished (streaming -> false) the last phase label could linger on the prompt line until unrelated input or output forced a redraw. Invalidate one extra time on the streaming->idle edge so the prompt repaints without the stale spinner/phase label. Covers investigation teardown and normal turn end alike.
* docs(surfaces): fix stale cli package path comment Update a stale CLI wizard docstring that still pointed at the old top-level cli/wizard/config.py path. The comment now references the current surfaces/cli/wizard/config.py layout. Refs Tracer-Cloud#3521 * docs: fix stale app and cli path references * test(gateway): format authorization tests
…ompose the package (Tracer-Cloud#3690) (Tracer-Cloud#3823) * added tests before refactoring * refactoring * refactoring * refactoring * refactoring * refactoring * refactoring * fixed formatting * added session core * refactoring * refactoring * renaming * renaming * refactoring * refactoring * refactoring * refactoring * added tests * session package refactoring * fixed tests * fixed tests * fixing underscore * fixed greptile issues * refactoring * refactoring * added the CPR fix, which blocking interactive shell testing * fixed CPR bug
* feat: unify gateway for standalone deployments * Fix CI and Greptile review feedback for unified gateway daemon. Point the integrations CI shard at gateway/tests after webapp tests moved, keep the daemon alive when Telegram polling exits, and restore alert-listener token env state correctly in the REPL. * Fix gateway shell tools and CI test failures. Wire a headless subprocess presenter into gateway turns so shell_run works outside the REPL, and repair the manager lifecycle test fake stop() signature.
…racer-Cloud#3868) * fix(k8s): create etl-pipeline-sa in test_datadog before running jobs Job manifests require etl-pipeline-sa; test_local already creates it but test_datadog did not, causing etl-extract to hang until timeout. Fixes Tracer-Cloud#3862 * style(k8s): move _run import to module level in test_datadog Address Greptile review: consolidate inline import with existing infrastructure_sdk.local import block.
…re (Tracer-Cloud#3869) * test(k8s): add step 3 deterministic tests for datadog_k8s_alert fixture Cover incident window anchoring, aged-alert coverage, and payment_method schema-validation signals without live EKS or LLM credentials. Fixes Tracer-Cloud#3863 * test(k8s): address Greptile review on step3 fixture tests Add pytest.mark.e2e via module pytestmark, autouse tool registry cache reset, and move AlertDetails to top-level imports.
…#3838) * feat(theme): add new themes and splash gradient support * feat(theme): enhance splash screen with gradient support and update color interpolation logic
…racer-Cloud#3839) Split the trello config.py monolith into the vendor-first layout: - config.py — TrelloConfig, build_trello_config, trello_config_from_env - client.py — _request_json, validate_trello_connection, create_trello_card - verifier.py — TrelloValidationResult, validate_trello_config - __init__.py re-exports the same public API (callers unchanged) verifier.py calls the client submodule via attribute lookup (import integrations.trello.client as client) to avoid a package/submodule import cycle and keep monkeypatch semantics. Repoint test patch targets (unit + e2e) to integrations.trello.client.* and the validator-path MigrationCase to integrations/trello/verifier.py.
…3688) and reorganize by concern (Tracer-Cloud#3876)
* fix(smtp): report classify failures * fix(smtp): avoid reporting raw validation errors --------- Co-authored-by: Harsh Wasan <harshwasan@users.noreply.github.com>
… metrics, observability package refactoring (Tracer-Cloud#3886)
Signed-off-by: vaibhav upreti <vaibhav.upreti16@gmail.com>
…lure recovery (Tracer-Cloud#4055) * feat(wizard): validate LLM API keys during onboarding Wire validate_provider_credentials into run_wizard's two credential collection sites via _collect_validated_llm_credential, with a bounded failure menu (re-enter / save anyway / repick) and a keyring-persist recovery menu replacing the hard exit. Fixes Tracer-Cloud#3591. * fix(wizard): reinstate Tracer-Cloud#3591 validation implementation and tests The working tree was reverted by a concurrent session between the original restore and commit; this reinstates the verified state (flow.py wiring, 67-test contract, amended onboarding smoke tests) from the tagged recovery point wave-3591-true-state. * test(wizard): add network guard and RED tests for the MiniMax base-URL gap Socket-level autouse guard for the wizard package: no wizard test may open a real outbound connection. This is load-bearing for Tracer-Cloud#3591 — validation.py caches the provider SDK classes in module globals, tests/conftest.py loads .env with override=True, and dev machines routinely export ANTHROPIC_API_KEY, so a test that patches the wrong name would quietly call api.anthropic.com with a live key and still go green. The guard derives from BaseException so the SDKs' own `except Exception` (which re-raises transport faults as APIConnectionError) cannot swallow it. It immediately caught a pre-existing impure test: run_wizard's model-change test reaches _configure_grafana_local -> seed_logs -> wait_for_loki -> requests.get against a local Loki. The connection error is swallowed today, so it passes — but on a machine with Loki running, that unit test seeds a live Loki. Fixed in the follow-up commit. Also adds the RED tests for the MiniMax gap: `minimax` is a live api_key provider that reaches the wizard's key prompt, but _get_provider_base_url has no branch for it, so a valid key is sent to api.openai.com and rejected. MINIMAX_BASE_URL has been in config all along, never wired in. Latent today; a hard block once onboarding gates on validation. Refs Tracer-Cloud#3591. * test(wizard): RED for Tracer-Cloud#3591 deltas Deltas 3-6 + X2. Every new test fails on missing behaviour (AssertionError) or on a helper the approved design contract obliges GREEN to create. * feat(wizard): validate the LLM credential against the chosen model, and recover from failures * fix(wizard): keep the session-only API key across the env-sync handoff (Tracer-Cloud#3591) * test(wizard): RED for Tracer-Cloud#3591 azure-endpoint recovery + ollama summary * fix(wizard): re-prompt a failed Azure endpoint; name .env in the Ollama host summary (Tracer-Cloud#3591) * test(wizard): fix CLI-repick smoke test for the model-before-key order (Tracer-Cloud#3591) Greptile P1: the parametrized codex/opencode repick smoke test was missed when the smoke tests were reordered for Tracer-Cloud#3591. It still expected the pre-hoist order (key prompt, then model) and the stale string 'failed validation. What next?'. Post-hoist the real flow is model -> key -> 'could not be verified. What next?', matching test_onboard_interactive_smoke. The test is skipped without codex or opencode on PATH, so the staleness never failed locally; it would hang until timeout once either CLI is installed. * test(wizard): RED for host .env-write recovery gap (Tracer-Cloud#3591) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * refactor(wizard): extract LLM-credential helpers to a module; constants; host .env recovery (Tracer-Cloud#4055 review) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…oud#4414) Signed-off-by: sahilnyk <contactsahilpnayak@gmail.com>
* Add AWS Elasticsearch docs page and register in nav Signed-off-by: sahilnyk <contactsahilpnayak@gmail.com> * Recommend read-only user, clarify API-key gap, drop internal flag ref Signed-off-by: sahilnyk <contactsahilpnayak@gmail.com> --------- Signed-off-by: sahilnyk <contactsahilpnayak@gmail.com>
Tracer-Cloud#4411) Remove four banner comments in integrations/kafka/__init__.py that only echoed the following statement (committed-offsets fetch, future resolve, lag-info build, high-watermark read). No behavior change. Closes Tracer-Cloud#4334
…-Cloud#4409) * docs(s3): add AWS S3 user docs page (C-35, Tracer-Cloud#4356) Or with a body (recommended for the PR): docs(s3): add AWS S3 user docs page (C-35, Tracer-Cloud#4356) Add docs/s3.mdx covering the AWS S3 integration: setup (reuses the shared AWS credentials), IAM permissions, the four read-only tools (list_s3_objects, inspect_s3_object, get_s3_object, check_s3_marker), verification via `opensre integrations verify aws`, and troubleshooting. Register the page in docs/docs.json under "Cloud, code, and collaboration" so it appears in the site nav. Closes Tracer-Cloud#4356 * docs(s3): address Greptile review — credential chain, verify output, marker source
Co-authored-by: Caelum <caelum@foxpur-studios.com>
…racer-Cloud#4401) * test(agent_harness): unit tests for record_conversation_turn Add direct unit coverage for conversation turn recording: append user/assistant messages, compact when over the window, and update the list in place via [:]. Source file unchanged. Fixes Tracer-Cloud#4353 * style: ruff-format conversation_recording unit tests Collapse generator expression so CI format check passes. * test: drop unused start param from _turns helper Address review nit: callers only pass n, so use range(1, n + 1).
Co-authored-by: Caelum <caelum@foxpur-studios.com>
… skill (Tracer-Cloud#4070) (Tracer-Cloud#4133) * feat(sentry): add deterministic uptime section to morning digest (Tracer-Cloud#4070) * feat(sentry): enhance uptime monitoring with improved record handling and reporting * refactor(sentry): streamline UptimeStatusRow and pinned_keys construction for improved readability * refactor(sentry): update morning digest implementation to utilize sentry-summary skill and enhance uptime reporting - Replaced the morning digest logic with the sentry-summary skill path for improved issue summarization. - Updated documentation to reflect changes in uptime reporting and digest structure. - Removed the now-obsolete morning_digest.py file and its associated tests. - Added new tests to ensure the sentry-summary skill correctly references all required tools, including uptime digest functionality. * refactor(tests): update mock datetime usage in uptime digest tests and add missing tool reference - Changed the lambda parameter name in mock datetime setup for clarity. - Added 'get_sentry_uptime_digest' to the set of tools without deliberate catch in telemetry tests. --------- Co-authored-by: larsspinetta12 <lars@tracer.cloud>
…Tracer-Cloud#4424) Bumps [types-pymysql](https://github.com/python/typeshed) from 1.1.0.20260518 to 1.2.0.20260724. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-pymysql dependency-version: 1.2.0.20260724 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.20260510 to 6.0.12.20260724. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-pyyaml dependency-version: 6.0.12.20260724 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.22 to 0.16.0. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.15.22...0.16.0) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.16.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [openai](https://github.com/openai/openai-python) from 2.45.0 to 2.49.0. - [Release notes](https://github.com/openai/openai-python/releases) - [Changelog](https://github.com/openai/openai-python/blob/main/CHANGELOG.md) - [Commits](openai/openai-python@v2.45.0...v2.49.0) --- updated-dependencies: - dependency-name: openai dependency-version: 2.49.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 4.6.0 to 4.6.1. - [Release notes](https://github.com/pre-commit/pre-commit/releases) - [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md) - [Commits](pre-commit/pre-commit@v4.6.0...v4.6.1) --- updated-dependencies: - dependency-name: pre-commit dependency-version: 4.6.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [sentry-sdk](https://github.com/getsentry/sentry-python) from 2.66.0 to 2.66.1. - [Release notes](https://github.com/getsentry/sentry-python/releases) - [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md) - [Commits](getsentry/sentry-python@2.66.0...2.66.1) --- updated-dependencies: - dependency-name: sentry-sdk dependency-version: 2.66.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [boto3](https://github.com/boto/boto3) from 1.43.52 to 1.43.57. - [Release notes](https://github.com/boto/boto3/releases) - [Commits](boto/boto3@1.43.52...1.43.57) --- updated-dependencies: - dependency-name: boto3 dependency-version: 1.43.57 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [anthropic](https://github.com/anthropics/anthropic-sdk-python) from 0.117.0 to 0.120.0. - [Release notes](https://github.com/anthropics/anthropic-sdk-python/releases) - [Changelog](https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md) - [Commits](anthropics/anthropic-sdk-python@v0.117.0...v0.120.0) --- updated-dependencies: - dependency-name: anthropic dependency-version: 0.120.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.29.1 to 3.32.0. - [Release notes](https://github.com/tox-dev/py-filelock/releases) - [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst) - [Commits](tox-dev/filelock@3.29.1...3.32.0) --- updated-dependencies: - dependency-name: filelock dependency-version: 3.32.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…4415) Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.52 to 3.0.53. - [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases) - [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/main/CHANGELOG) - [Commits](prompt-toolkit/python-prompt-toolkit@3.0.52...3.0.53) --- updated-dependencies: - dependency-name: prompt-toolkit dependency-version: 3.0.53 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…tting (Tracer-Cloud#4427) ruff 0.16.0 (picked up in uv.lock) now formats fenced Python code blocks in Markdown, which flagged inline-comment spacing in core/agent_harness/AGENTS.md and broke the quality (ubuntu-latest) CI job on main.
Greptile code reviewThis repo uses Greptile for automated review. Before merge, aim for Confidence Score: 5/5 with zero unresolved review threads — see CONTRIBUTING.md. Run a review — add a PR comment with: Give it ~5-10 minutes (sometimes longer) for results, then fix feedback and re-trigger until you reach Confidence Score: 5/5. Optional: automate with the greploop skill. |
jaxter03
force-pushed
the
chore/sync-upstream-2026-07-28
branch
from
July 28, 2026 14:13
aa01090 to
6cadabc
Compare
|
🤖 CI passed. Linter didn't scream. Reviewer typed LGTM. @jaxter03, every machine in this pipeline just slow-clapped. 🖥️✨ 👋 Join us on Discord - OpenSRE : hang out, contribute, or hunt for features and issues. Everyone's welcome. |
This was referenced Jul 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Brings
CEF-AI/opensremain up to date with upstream Tracer-Cloud/opensre@main (df09aecb, 2026-07-28).What
.github/workflows+.github/scripts(deploy-QA, Quality, UX, hiring-coach-qa), which upstream never touches. All preserved.Why
Prerequisite for porting the CEF Python (Grafana-alert receiver, platform tools,
correlate, CEF QA CLI) onto a current base — that lands as a follow-up PR.Risk
Low — no code conflicts; the merge is upstream's already-green tree + the fork's workflow files.
🤖 Generated with Claude Code