diff --git a/AGENTS.md b/AGENTS.md index 9e7cc5d1d4..295f26d8d6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -43,6 +43,6 @@ - Swift concurrency: treat sibling `async let` tasks as a review red flag when one child is required and another is optional/best-effort. Prefer sequential awaits or a drained `withThrowingTaskGroup` that surfaces required failures and explicitly contains optional failures; crash stacks mentioning `swift_task_dealloc` or `asyncLet_finish_after_task_completion` should trigger an audit of nearby `async let` usage. - Prefer modern SwiftUI/Observation macros: use `@Observable` models with `@State` ownership and `@Bindable` in views; avoid `ObservableObject`, `@ObservedObject`, and `@StateObject`. - Favor modern macOS 15+ APIs over legacy/deprecated counterparts when refactoring (Observation, new display link APIs, updated menu item styling, etc.). -- Keep provider data siloed: when rendering usage or account info for a provider (Claude vs Codex), never display identity/plan fields sourced from a different provider.*** +- Keep provider data siloed: when rendering usage or account info for a provider (Claude vs Codex), never display identity/plan fields sourced from a different provider. - Claude CLI status line is custom + user-configurable; never rely on it for usage parsing by default. A user-enabled, opt-in statusLine JSON feed is permitted as an explicit data source (owner ruling, #2733): it must be off by default, clearly labeled as sourced from the user's own statusLine config, and fail soft when the format drifts. - Cookie imports: default Chrome-only when possible to avoid other browser prompts; override via browser list when needed. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 120000 index 0000000000..55bf822df9 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +./AGENTS.md \ No newline at end of file diff --git a/Scripts/ci_macos_test_gate.sh b/Scripts/ci_macos_test_gate.sh index 3350b6e610..ed171aae5e 100755 --- a/Scripts/ci_macos_test_gate.sh +++ b/Scripts/ci_macos_test_gate.sh @@ -41,7 +41,7 @@ classify_path() { path_count=$((path_count + 1)) case "$path" in - AGENTS.md|docs/configuration.md) + AGENTS.md|CLAUDE.md|docs/configuration.md) require_macos_tests "$path" "changes contributor or runtime configuration contracts" ;; *.md) diff --git a/Scripts/test_ci_path_gate.sh b/Scripts/test_ci_path_gate.sh index ec5423e2e8..b39947d809 100755 --- a/Scripts/test_ci_path_gate.sh +++ b/Scripts/test_ci_path_gate.sh @@ -57,6 +57,9 @@ assert_gate true rename-from-configuration-doc $'R100\tdocs/configuration.md\tdo assert_gate true agents-contract $'M\tAGENTS.md' assert_gate true rename-to-agents-contract $'R100\tdocs/old.md\tAGENTS.md' assert_gate true rename-from-agents-contract $'R100\tAGENTS.md\tdocs/new.md' +assert_gate true claude-contract $'M\tCLAUDE.md' +assert_gate true rename-to-claude-contract $'R100\tdocs/old.md\tCLAUDE.md' +assert_gate true rename-from-claude-contract $'R100\tCLAUDE.md\tdocs/new.md' assert_gate true source $'M\tSources/CodexBar/App.swift' assert_gate false docs-site $'M\tdocs/index.html' $'M\tdocs/site.css' $'M\tdocs/site.js' \ $'M\tdocs/site-locales.mjs' $'M\tdocs/social.html' $'M\tdocs/social.png' \