This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 8850c326bdc Stop agent scratch directories from breaking the
boring-cyborg check (#72642)
8850c326bdc is described below
commit 8850c326bdc66ef08506e51b98d2fc80e478df41
Author: Jarek Potiuk <[email protected]>
AuthorDate: Tue Sep 8 15:56:36 2026 +0200
Stop agent scratch directories from breaking the boring-cyborg check
(#72642)
Coding agents create write-tracking scratch directories next to whatever
directory a tool call happened to run in, so they appear anywhere in the
tree rather than only at the repo root. When one lands in the UI locales
directory the boring-cyborg check reads it as a locale code and fails the
commit with a message that points at boring-cyborg.yml, which is not where
the problem is. The directories are empty, so git status gives no hint
either and the cause is invisible without listing hidden entries.
The repository's own ignore rule for them was anchored to the root, which
left contributors relying on a personal global ignore file for the rest of
the tree.
---
.gitignore | 5 +++++
scripts/ci/prek/boring_cyborg.py | 3 ++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 0beb668ee69..f305584b235 100644
--- a/.gitignore
+++ b/.gitignore
@@ -141,6 +141,11 @@ ENV/
!.claude/skills/prepare-providers-documentation
!.claude/skills/upgrade-fab-provider
+# Claude Code write-tracking scratch dirs. Created next to whatever
+# directory a tool call ran in, so they turn up anywhere in the tree —
+# the .claude/* rule above only covers the repo root.
+**/.claude/.cc-writes/
+
# Kiro
.kiro/
diff --git a/scripts/ci/prek/boring_cyborg.py b/scripts/ci/prek/boring_cyborg.py
index 5e9ef359ffb..2ff7b44df2c 100755
--- a/scripts/ci/prek/boring_cyborg.py
+++ b/scripts/ci/prek/boring_cyborg.py
@@ -78,7 +78,8 @@ for p in providers_root.glob("**/provider.yaml"):
# Check for missing translations
EXCEPTIONS = ["en"]
for p in
AIRFLOW_ROOT_PATH.glob("airflow-core/src/airflow/ui/public/i18n/locales/*"):
- if p.is_dir():
+ # Locale codes never start with a dot; skip tool scratch dirs (.claude,
.DS_Store, ...)
+ if p.is_dir() and not p.name.startswith("."):
lang_id = p.name
expected_key = f"translation:{lang_id}"
if lang_id not in EXCEPTIONS and expected_key not in
cyborg_config[CONFIG_KEY]: