Skip to content

chore: sync fork main with upstream Tracer-Cloud/opensre (2026-07-28) - #3

Merged
jaxter03 merged 396 commits into
mainfrom
chore/sync-upstream-2026-07-28
Jul 28, 2026
Merged

chore: sync fork main with upstream Tracer-Cloud/opensre (2026-07-28)#3
jaxter03 merged 396 commits into
mainfrom
chore/sync-upstream-2026-07-28

Conversation

@jaxter03

Copy link
Copy Markdown
Collaborator

Brings CEF-AI/opensre main up to date with upstream Tracer-Cloud/opensre@main (df09aecb, 2026-07-28).

What

  • Merges 395 upstream commits into the fork's main.
  • 0 conflicts — the fork's only divergence was 27 CI commits under .github/workflows + .github/scripts (deploy-QA, Quality, UX, hiring-coach-qa), which upstream never touches. All preserved.
  • After merge, main contains all of upstream plus the CEF CI workflows.

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

0xpaulx and others added 30 commits July 7, 2026 21:24
…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.
* fix(smtp): report classify failures

* fix(smtp): avoid reporting raw validation errors

---------

Co-authored-by: Harsh Wasan <harshwasan@users.noreply.github.com>
Signed-off-by: vaibhav upreti <vaibhav.upreti16@gmail.com>
Harshvardhan86 and others added 23 commits July 27, 2026 20:36
…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.
@github-actions

Copy link
Copy Markdown

Greptile code review

This 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:

@greptile review

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
jaxter03 force-pushed the chore/sync-upstream-2026-07-28 branch from aa01090 to 6cadabc Compare July 28, 2026 14:13
@jaxter03
jaxter03 merged commit 77ba3eb into main Jul 28, 2026
48 checks passed
@github-actions

Copy link
Copy Markdown

🤖 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.

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.