Repository navigation
Conversation
Ne: read_note ve search_notes, `visibility: private` notu reddeder; istisna yalniz bu isin kendi karti, ham metni, ekleri ve kendi sonuc notlaridir (_agent_own_note). visibility de belirsiz deger kontrolune girer. YAKALA.md ayni kurali yazar. Neden: Hook baglami private notu hic gostermez (audience "internal"), Jev/Laya da uzak modele gondermez. Ajan ayni oturumda herkese acik fetch_source/download ve web aramasi da kullandigi icin, yakalanan bir sayfadaki talimat gunluk, pano metni veya mail karti gibi private notlari okutup URL sorgusuyla disari tasitabilirdi. Bu, deponun mevcut gizlilik kuralini ajan yoluna da uygular; urun akisini degistirmez. Test: test_private_notes_stay_out_except_this_jobs_own_card_raw_and_results ve privacy tablosundaki private satirlari; duzeltme olmadan dusuyor. Katkicinin "private okunur" beklentisi internal not ile korunur.
…alisir Ne: configure_agent(..., 'kapali') kayitli ayar okunamazsa ya da baska bir vault yolunu gosterirse bu vault icin temiz bir kapali ayar yazar; ajan acmak yine reddeder. `yakala durum` ajan ayarini raporlar, okunamiyorsa dusmek yerine "gecersiz ayar" yazar. Neden: state sabitlenmis (`install --state`) bir vault tasindiginda config.json eski vault yolunu tasir; bozuk JSON da ayni yola duser. Bu durumda belgelenen kapatma komutu `yakala ajan kapali`, `yakala kaldir` ve `yakala durum` ValueError ile duruyordu; kullanici ozelligi kapatamiyor ve Yakala'yi kaldiramiyordu. Gecici vault'ta uretildi. Test: test_off_switch_status_and_kaldir_survive_settings_of_a_moved_vault; duzeltme olmadan ValueError ile dusuyor.
…c olcumu dogru Ne: "Receipt entegrasyonu" basligindaki uzun tire ve ayar tablosundaki kisa tireler duz metne cevrildi. Belge receipt --help'te --session arandigini soyluyordu; kod yalniz --file/--harness arar, oturum JSON'da gider. Claude Code 2.1.302 ve Codex 0.160.0 ile olculen arac listeleri eklendi. Neden: Depo belgelerinde uzun/kisa tire kullanilmiyor. Codex'te kabuk araci yok, fakat view_image (vault disindaki yerel goruntuler), apply_patch (read-only sandbox reddeder), kod modu exec ve spawn_agent listede kaliyor; belge "yalniz alti arac ve web aramasi" izlenimi veriyordu. Olcum: --ignore-user-config ile PR'in argv'si, gecici vault.
…at/yakala-ajan-2
Astra Pro (GPT-6 Pro) incelemesinden (4 Yüksek, 6 Orta; Kritik yok) alınanlar: - F01 gizlilik metadata'sı: YAML etiketleri, kaçışlı anahtarlar, listeler ve Unicode biçimleri artık remote_allowed/sensitivity yasağını atlatamaz. - F02 ek deposu: büyük/küçük harf ve 8.3 kısa ad yazımı başka karta ait metin eklerine erişim denetimini aşamaz. - F03 ağ: varsayılan 'kisitli' — genel web araması kapalı, fetch/download yalnız yakalanan URL ve izinli sayfanın döndürdüğü bağlantılar. Araştırma işleri için açık seçenek: 'ag: acik' (yakala ajan claude --ag acik). - F05/F06 complete: result.json fsync sonrası tek seferde yayımlanır; cevap 'submitted' döner, teslimden sonra yeni araç çağrısı kapanır. - F07 pencere argv'si CreateProcessW sınırını UTF-16 olarak denetler. - F08 receipt yalnız açık başarı durumunu kabul eder. İncelemedeki 'recorded' yerine gerçek beyin.py'nin döndürdüğü 'succeeded' kullanıldı (ölçüldü). - F09 bozuk iş kaydı kuyruğu durdurmaz; F10 aynı teslimin tekrarı kayıp worker uyandırmasını onarır. - Pencere modunda yalnız print-mode'a ait --permission-prompts kaldırıldı; istemden önce '--' ayracı. Alınmayan: F04'ün Last-Session yerine Yakala-Sessions/ dosyası önerisi. Sonraki oturumun hafıza yüklemesi Last-Session'ı okur; kart başlığın altına eklenmeye devam eder. Kontrol ile replace arasındaki çok kısa aralık kabul edilen risk olarak belgelendi ve testlendi. Ayrıca: test yardımcısı Windows'ta CRLF'i ikiye katlıyordu (newline=''). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ne: _agent_read_note duz YAML'da visibility degerini de remote_allowed/sensitivity/kaynak_guveni gibi _agent_yaml_scalar ile okur. Regresyon testi tirnakli, tek tirnakli, yorumlu ve JSON bicimini ve yakala'nin kendi yazdigi bir pano kartini, adinda hassas kelime olmadan dener. Neden: e4b769e politika disindaki anahtarlarin degerini ham birakti; visibility de bu listede kaldi. `visibility: "private"`, `'private'` ve `private # yorum` artik 'private' esitligine uymuyordu ve okunuyor, aramada da donuyordu. Yakala'nin _dump'i kartlari tam olarak `visibility: "private"` diye yazar; pano, mail ve dosya kartlari yalniz adlarinda hassas kelime varsa korunuyordu. a3af7e1'deki test bu yuzden yakalamadi: kart adi "private" kelimesini tasiyordu. Test: test_private_notes_stay_out_except_this_jobs_own_card_raw_and_results duzeltme olmadan dort alt testte dusuyor.
ag: acik kipinde istem ve beyin-yakala skill'i ajana açıkça söyler: web araması ve indirme yalnız herkese açık bilgi içindir (ör. herkese açık bir videodaki şarkıyı bulmak); kullanıcının notlarından, kişisel bilgilerinden veya özel ya da kendi yüklediği içerikten hiçbir metin arama sorgusuna, URL'ye ya da dosya adına konmaz, bunu gerektiren iş approval_required ile kullanıcının iznine kalır. Belgede bunun teknik bir engel değil model talimatı olduğu yazıyor. Varsayılan kisitli kalır. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ne: _agent_read_note, bos degerli politika disi bir anahtarin (tags, aliases) altindaki girintili ya da girintisiz `- oge` satirlarini atlar. Politika anahtarlari (remote_allowed, sensitivity, kaynak_guveni, visibility) bos degerde zaten reddedildigi icin hicbir liste onlara ait olamaz; politika degerinden sonra gelen devam satiri da reddedilir. Neden: e4b769e liste atlamasini tamamen kaldirdi. Obsidian liste ozelliklerini `tags:\n - x` diye yazar; bu yuzden etiketli ya da takma adli her not "Unsupported frontmatter" ile okunamaz ve aramada gorunmez hale geldi (b136459'da okunuyordu). F01'in kapattigi `sensitivity:\n - secret` atlatmasi kapali kalir. Test: test_obsidian_list_properties_stay_readable_but_never_carry_a_policy_value; duzeltme olmadan iki okunabilir durumda dusuyor, dort yasak durum iki surumde de reddediliyor.
Ne: Arac tablosunda fetch_source/download icin kisitli adres kurali, "Web aramasi iki istemcide de acik" cumlesi yerine yalniz `ag: acik` iken acik oldugu, olcum paragrafinda kisitli/acik arac listeleri. Neden: e4b769e varsayilani kisitli yapti; belge hala web aramasinin her zaman acik oldugunu soyluyordu. Olcum: gercek `claude -p` (2.1.302, haiku) kisitli kipte araclar yalniz alti mcp__yakala__* idi, `https://example.com/?q=<AGENTS.md kelimesi>` denemesini kopru reddetti; Codex 0.160 kisitli kipte web.run listede yoktu.
…açık kullanıcı MCP'si iş için kapatılır Gerçek Codex CLI 0.155.1 ile ölçüldü (18.10.2026): - Önceki argv yalnız shell_tool/apps/multi_agent kapatıyordu; model hâlâ 'exec' (unified exec / code-mode host) görüyordu. code_mode_host kapalıyken exec 'fail closed' oluyor. - Tipik kurulumda 20+ eklenti (computer use, tarayıcı, Gmail, Drive dahil) ve kullanıcı config'inden node_repl MCP'si açık; önceki ön kontrol bunları gördüğünde işi tamamen reddediyordu, yani Codex ajanı hiç başlamıyordu. Artık her çalıştırma CODEX_DISABLED (shell_tool, unified_exec, code_mode_host, apps, multi_agent, plugins, remote_plugin, computer_use, browser_use*, in_app_browser, image_generation, goals) ile başlar. Ön kontrol envanteri aynı bayraklarla okur: eklenti kalırsa reddeder; kullanıcı config'indeki açık MCP sunucuları adıyla (güvenli TOML anahtarı olmayan ad reddedilir) bu çalıştırma için kapatılır ve envanter tekrar okunup hepsinin kapandığı doğrulanır. Kullanıcının kalıcı ayarına dokunulmaz. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nden çağrılıyor Codex 0.155.1 MCP araçlarını code mode ile çağırıyor; host kapalıyken ajan Yakala araçlarına ulaşamadı ve complete bırakamadı (gerçek koşu). Code mode JS'inde fs, child_process ve fetch yok (ölçüldü); kod çalıştırma yolu olarak unified_exec ve shell_tool kapalı kalır. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Windows toast'una tıklanınca iş bitince sonuç notu, başlangıç/onay/hata için kart açılır. Hedef vault içinde doğrulanan mevcut bir nottan file URI olarak üretilir; sabit PowerShell betiğine JSON stdin ile gelir ve XML attribute (SetAttribute) olarak eklenir. Geçersiz hedefte bildirim hedefsiz gösterilir. Model metni hedefe girmez. Bilerek basit tutuldu (Obsidian gerektirmeyen file URI, yalnız Windows); bakımcı tasarımı değiştirebilir. Gerçek toast tıklaması masaüstünde denenmedi. Co-Authored-By: GPT-6.1 Sol (Codex) <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
'otomatik' değeri kurulum ve 'yakala ajan' için: kurulumu bir ajan oturumu yapıyorsa o istemci (Claude: CLAUDECODE=1 / CLAUDE_CODE_ENTRYPOINT; Codex: CODEX_THREAD_ID), değilse yalnız kurulu olan CLI; ikisi de kuruluysa terminalde sorulur, etkileşimsizde açık hata. Config'e somut istemci yazılır, seçimin yolu çıktıda görünür. Hiçbir CLI veya model başlatılmaz. Varsayılan kapalı kalır; skill, kurulumu yapan ajana '--ajan otomatik' kullanmasını söyler. Co-Authored-By: GPT-6.1 Sol (Codex) <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a okur Kart dosya adı başlıktan üretiliyor; başlığında 'gizli', 'sifre', 'password' gibi bir kelime geçen kaynağı Ctrl+Enter ile verince ajan kendi kartını okuyamıyor ve iş başarısız oluyordu (gerçek koşuda görüldü). Ctrl+Enter o kart için açık talimat. Ad filtresi yalnız bu işin kartı, ham metni ve karta bağlı ekler için uygulanmaz; ekler yine 'bu kartta bağlı mı' denetiminden geçer. Gizli/hassas klasörler, gizli dosyalar, metadata yasakları, başka kartlar, başka hassas notlar ve search_notes aynen kalır. Co-Authored-By: GPT-6.1 Sol (Codex) <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Windows'ta gorunum=pencere artık Codex için de: exec yerine Codex'in etkileşimli TUI'si yeni konsolda açılır. Gizli moddaki güvenlik ayarlarının hepsi korunur (onay never, CODEX_DISABLED, kullanıcı MCP'lerini kapatma, read-only sandbox, ağ ayarı, yakala MCP); exec'e özel bayraklar (--json, -o, --ignore-rules, --skip-git-repo-check) çıkarılır, istem '--' sonrası tek son argüman. Olay akışı olmadığı için oturum kimliği CODEX_HOME/sessions altında iş başladıktan sonra oluşan, cwd'si vault olan tek rollout'un yalnız ilk satır meta verisinden alınır (transkript okunmaz); bulunamaz ya da belirsizse iş approval_required olur, hafıza kapanışı yapılmaz. Gerçek Codex TUI ile canlı koşu henüz yapılmadı (yalnız --help ile bayrak kontrolü). Co-Authored-By: GPT-6.1 Sol (Codex) <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # docs/v3/YAKALA.md
Birleştirmede otomatik istemci testi, Codex'e görünüm sorulmayan eski davranışı varsayıyordu; pencere modu artık Codex'te de var. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Preview pending cards with explicit instruction selection; submit them under the shared queue lock, keep a durable batch manifest, and cancel only unstarted owned jobs. Validation: 597 Yakala tests, 26 skipped on Linux. Windows 11 validation remains manual.
Add bounded source music metadata, controlled fixed-argv media extraction, and optional AudD recognition with per-job extraction/upload consent and durable attempt accounting. Keep audio in memory, protect credentials outside the vault, serialize service disable with POST, and return lawful listening links. Validation: 614 Yakala tests, 27 skipped on Linux. Real FFmpeg WAV/MP4 extraction verified; live provider and Windows 11 acceptance remain manual.
…torage Address maintainer review with persistent shared network quota, validated Codex capability gates, process-generation recovery and a POSIX guardian, exclusive publication fallback, scoped capture stores, stable capture locks, bounded session lookup and source provenance. Preserve modified Escape and find post timestamps after handles. Add 111 regression tests and document native acceptance checks and the measured remaining Codex apply_patch content-guess channel. Base: ba0ec37 Validation: 669 Yakala tests, 642 passed, 27 skipped on Linux/Python 3.12.14.
stat sonucunun st_file_attributes alanı None geldiğinde reparse denetimi TypeError ile düşüyordu; 0 sayılır. Linux /proc kimlik testi boot_id yolunu '/' ile eşleştiriyordu; Windows'ta ters eğik çizgi. Windows 11'de 669 test OK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o/muzik # Conflicts: # docs/v3/YAKALA.md # template/.claude/scripts/beyin_v3_yakala.py
#384 incelemesiyle araçlar çalışan kimliği ve süre ister; müzik dalı bu değişiklikten önce yazılmıştı. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Kullanım limiti gibi hatalarda Claude Code result olayı subtype 'success', is_error true ve sebebi 'result' alanında taşıyor; kart ve bildirim 'success' gösteriyordu (gerçek koşu). Hata sonucunda result metni kullanılır. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gerçek Codex koşusu: SessionStart'taki 'Memory hygiene: önce companion-compact çalıştır' satırını model kendi sonuç notu için de geçerli saydı ve not yazmayı reddetti. İstem, bu bakım talimatlarının (companion sıkıştırma, receipt, Last-Session) işin sonucu için geçerli olmadığını ve bunları güvenilen çalışanın yaptığını söyler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # template/.claude/scripts/beyin_v3_yakala.py
…le (PR #592) # Conflicts: # template/.claude/scripts/beyin_v3_bridge.py
…bridge test PR #505 (#500) renamed the bridge SessionStart bootstrap from 'Optional Beyin bridge.' to 'Beyin bridge active.'. The OpenCode global plugin test (PR #592) still asserted the old prefix, so it failed once both landed (it runs where node is installed). Same adjustment as the Pi bridge test.
…nce-aware continuity (PR #530) # Conflicts: # template/.claude/scripts/beyin_v3_passage.py
The hook counted any @path that was not quoted, so a CLAUDE.md line such as '@🔮\ 850-Companion/Kurallar.md' replaced the rules with a pointer although Claude Code imports nothing there: its parser only takes a path starting with ./ ~/ / or [A-Za-z0-9._-], ends the path at a backslash, cuts a #fragment and reads Markdown text only. The default companion folder starts with an emoji, so this was the common case, and the session lost its rules entirely. client_imports now uses claude_import_paths(), a conservative subset of the client's parser: the start-character rule, JavaScript white space, backslash end, fragment cut, frontmatter, fenced and indented code, HTML blocks and comments, link targets and titles, image text and GFM tables are left out, and any unclear Markdown (a lone backtick, an unclosed comment, an overlap of code and HTML) counts no import. Files over the client's 4 MiB limit or with an extension it does not read as text are not counted. Total reading is bounded and linear. The old dependency on beyin_v3_references._blank_code is gone. Refs #610
…d hyphenated names (Refs #430) # Conflicts: # template/.claude/scripts/beyin_v3_passage.py
…unds loose_ranking (#533) derived its terms with _tokens alone, so after #430 the joined stem of a hyphenated name (claude-mem -> claudemem) counted as a term beside its part there, while the strict pass and MemoryStore treat it only as a stand-in for a missing part (_query_compounds). The loose order now reuses the strict pass's terms and compounds; a spy test pins that both calls match.
…ules fit (#529) Review repro: with rules that fit alone but not together with topic titles and the newest handoff card (a 50-70 rule Kurallar.md at the default 5000, about 10 rules at 2000), the priority fallback gave every other source 40 characters, put topic titles before the card and dropped the card whole. The newest dated card and most next steps vanished although the proportional split on main showed them, and the result moved up and down with the rule count. The fallback now has two tiers. First, optional sources yield to a 40 character head, the handoff keeps its newest card and at least its floor, and the topic overview takes the rest, but only while that rest is no less than the proportional split would give it. Otherwise every source first keeps its proportional share, capped at its protected part or its floor, and the remaining room goes to the rest of the rules, then the newest card, then the topic overview. At 5000 with 40-120 rules the opening now shows the card and 12/12 next steps with 42-50 rules (main: 32), and at 2000 the card with at least the next steps main showed. clip_threads had a cliff: when hundreds of headings filled the room, the opening showed 3 next steps at 9500 and 50 at 9000. Whole topics in source order, then the headings that fit, are used when they give more topics their status than the shared slices do. Tests: tests/v3_companion_opening_bounds_test.py covers the band at 5000 and 2000, the monotonic thread clip and the 300 topic opening; the 300 topic assertion changes from every heading to an in-order prefix of at least 40 whole topics.
When the ratio retry still overflows the client measure, the hook bisected the whole 0..limit range: 14 extra renders, measured at about 0.9 s for a 3000 note store, with no check of the hook budget. The overflow is usually a few characters, so the search now steps down from the cap in doubling steps, bisects to within 16 characters and stops at half of HOOK_BUDGET, keeping the best fitting render (or the last render when nothing fits, as before).
… last fallback tier In the proportional tier of the opening fallback the handoff was capped at its floor or newest card, so a parallel-session card that the proportional split showed could drop to buy two more rules (lifecycle check from 3.12.0: KART_B shown before the update, gone after it). The handoff now keeps its whole proportional share there, like the rules; identity and the topic overview keep theirs up to their floor or protected part.
…lf the hook budget 305abb4 stepped down from the cap and stopped 16 characters short. The contributor's rebudget test (308b94c) expects the largest fitting budget, and a far-off fit took more renders than the plain bisection. The plain bisection is back; what stays is the deadline: no further render once half of HOOK_BUDGET is spent, keeping the best fitting render (or the last one, which the client guard trims). A new bounds test runs the hook with the budget spent and expects two renders instead of fourteen. Docs: an import line belongs in CLAUDE.local.md, because a change to the installer-tracked CLAUDE.md after an update makes rollback report a conflict.
Enqueue never checked or stored its vault argument. An invocation for
vault B against state already bound to vault A was queued although every
ordinary write refuses that pair ("runtime belongs to another vault"),
and a later replay from A wrote B's queued content into A (review on
PR #409).
Enqueue now runs the binding check ordinary writes get from MemoryStore:
a runtime bound to another vault is refused before anything is queued,
and an unbound one is bound to this vault. Each new record keeps a
SHA-256 digest of the bound vault root (never the path, so the queue
stays free of path names), and replay marks a record bound to another
vault as failed without writing. Records queued before this field have
no binding and replay as before against the runtime's own vault; the
queue stays under state/, which 3.12.0 does not read.
SyncEngine.task_create stores evidence_refs canonically (notes/./e.md -> notes/e.md, through _canonical_refs). When the process died after the write and before the queue acknowledgement, the next replay compared the queued, uncanonicalized metadata with the stored task, reported a conflict and wrote an unnecessary task .sync-conflict copy (review on PR #409). update_task canonicalizes evidence_refs in its changes the same way, so an interrupted task_update with such a ref stayed a conflict instead of being reconciled. Both comparisons now pass the queued fields through the same _protect_metadata and _canonical_refs steps the writers use; refs the writers would refuse still count as not reflected. The note_create prediction already canonicalizes note evidence_refs with the writer's own evidence_refs() (PR #443); it was rechecked with notes/./e.md, ./notes/e.md, notes//e.md and a trailing slash and needs no change.
…e writer lock The workspace unit wraps project-scope add/remove/prune in the vault note writer lock, which creates .beyin-note-write/. Combined with #607 (PR #609), a remove/prune/unknown call with --shared-unscoped took the lock before _manage refused it, so the rejected call left a new folder in the vault and v3_project_scope_options_test failed. Only real edits take the lock now; list, unknown actions and the rejected option are answered before any write.
…s overflow #529 (PR #529, companion-open) reserves the complete rules, topic overviews and newest handoff card, then fell back to that bare core when the per-source floors no longer fit beside it, sharing what was left evenly. Combined with #591 (companion-identity), this erased the identity floor at an 8000-char opening: Core.md, or a Soul.md that opens alone, got exactly what the unfloored Journal got, and v3_companion_identity_floor_test failed. The protected core is unchanged. Only the room left over in that fallback now goes to floored sources (handoff, topics, the identity that opens) in proportion to what each floor lacks, before the even water-fill.
The web view (PR #423) hides CLAUDE_CODE_SESSION_ID while it runs a CLI command, so a person's page write is not marked as the launching agent session's edit (#212). The Pi integration (PR #385) taught mark_session_edit to read PI_SESSION_ID too, so a server started from a Pi shell still marked every page write as that Pi session's edit. Both variables are hidden now; the CLI itself keeps marking the session it runs for.
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1b493c91da
ℹ️ 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".
| plan = _plan(vault_root, workspace_id, kind=kind, name=name, description=description, | ||
| sources=sources, rules=rules, resume=resume) |
There was a problem hiding this comment.
Preserve the original provisioning plan when resuming
If provisioning with custom options is interrupted before _bind, the recommended recovery command, workspace provision <id>, rebuilds the plan using defaults instead of resuming the original plan. Reproducing with sources=['clients/alpha'], a custom name and kind='research', then interrupting _bind, leaves a pending workspace; retrying without options reports successful completion but never binds clients/alpha and overwrites the name and kind with defaults. The preserved rules file still describes the original scope, so the resulting workspace is inconsistent and its intended source folder remains outside its project scope. Persist the original plan with the pending record and reuse it when resuming.
Useful? React with 👍 / 👎.
Özet
7 Kasım bakım turunun ikinci ve son entegrasyonu; #612'nin üstüne kurulu. Her birim ayrı dalda main ile birleştirildi, düzeltildi ve bağımsız incelemeden geçti. Burada merge commit'leriyle birleşiyor. Katkıcı commit'leri olduğu gibi duruyor, maintainer düzeltmeleri ayrı commit'ler.
Katkıcı PR'ları
state/yakala/ajan/altında. Toplu gönderim önizleme planı ister, ses tanıma iş başına ayrı izin ister. Windows dinleyici sürümü 3.12.0 ile aynı kaldı, iki yönlü IPC testleri eklendi.beyin.py web ac|durum|durdur. Yalnız 127.0.0.1, Host/Origin denetimi, her yazmada CSRF, yazmalar CLI çekirdeğinden geçer. Kurulum, güncelleme ve hook'lar başlatmaz.CLAUDE.mdiçinde@ile alınan dosyalar tekrar enjekte edilmez).Maintainer PR'ları ve düzeltmeleri
manual receipt view edit preserved) #602), fix(cli): etkisiz supersedes referanslarını insan çıktısında göster (#604) #605 etkisizsupersedesbildirimi (fix(sync): a same-named new note undoes a name-only supersedes retirement #604), fix(secrets): ön ekli ortam değişkeni atamalarını maskele (#606) #608 ön ekli ortam değişkeni maskesi (secret-filter: TYPESAFE_API_KEY=... gibi ön ekli ortam değişkeni anahtarları maskelenmiyor #606), fix(project-scope): yok sayılan shared-unscoped bayrağını reddet (#607) #609--shared-unscopedyalnızaddile (project-scope: --shared-unscoped yalnız add ile uygulanıyor, list/eylemsiz çağrıda sessizce yok sayılıyor #607).Entegrasyon commit'leri (
integrate:): #598 testi ilebeyin-kontrol, OpenCode testindeki eski köprü metni, #533 ile #430 terim türetimi, #607 ile workspace kilidi, #529 ile #591 kimlik tabanı, web görünümündePI_SESSION_ID.Doğrulama
evaluate_v3.py,evaluate_v3_search.py,evaluate_v3_passages.py,evaluate_v3_decisions.py: main ile birebir aynı (geliştirme 10/10, holdout 6/6, gizlilik kanaryası 0).verify_v3_release.pyile 3.12.0'a karşı tüm kontrollerden geçti.Fixes #607
Fixes #606
Fixes #600
Fixes #602
Fixes #591
Fixes #538
Fixes #596
Fixes #610
Refs #604, #430, #371, #397, #478, #528, #175, #453, #501, #41, #580, #316, #205
Katkılar: Kutadelios (#384, #414, #415, #529, #530, #536), bakiabaci (#423, #444, #445, #448), alphanogn (#569), hasbitas (#579, #582), cagannbl (#598), yigit2015 (#565), ersn-dev (#597), agnogad (#592); bildirimler: zPfizer, oguzhangokduman, omerkocgit, 1isagca, emraheth41, fatihaydost.