release(v3.13.2): correctness patch — F1-F5 (demo pivot + CI gate + module entry)#181
Merged
release(v3.13.2): correctness patch — F1-F5 (demo pivot + CI gate + module entry)#181
Conversation
…odule entry)
Post-v3.13.1 dış AI değerlendirmesi 5 bulgu tespit etti, hepsi absorb
edildi. Ürün kodu değişti; branch-discipline meta-altyapısı dışında
ilk kullanıcı-görünür correctness patch.
F1: CI coverage gate 70 → 85 (pyproject.toml ile hizalı; ratchet
artık CI-level enforced)
F2: Public demo pivot bug_fix_flow → review_ai_flow
- examples/demo_bugfix.py silindi (never worked E2E on fresh workspace)
- examples/demo_review.py yeni (canlı smoke 'completed', evidence
timeline + review_findings schema validate)
- README quick-start: demo_bugfix → demo_review
- docs/PUBLIC-BETA.md yeni (Shipped/Beta/Deferred/Known Bugs SSOT)
- docs/DEMO-SCRIPT.md → compat pointer stub
- docs/roadmap/DEMO-SCRIPT-SPEC.md yeni (roadmap spec)
F3: Doc/CLI parity (F2 içinde — DEMO-SCRIPT aspirational content
roadmap/'a taşındı)
F4: ao_kernel/__main__.py yeni (python -m ao_kernel entry)
- ao_kernel/cli.py: __main__ guard eklendi (python -m ao_kernel.cli)
F5: tests/test_cli_entrypoints.py yeni (4 entry contract pinleniyor)
Demo dependency: F2 review_ai_flow + codex-stub subprocess
ModuleNotFoundError'u adapter_invoker.py {python_executable} token
substitution'u ile çözüldü (Codex Public Beta planından port). Bu
deeper runtime fix v4.0.0b1'de zaten plandı; demo çalışması için
v3.13.2'ye minimum port edildi.
Version 3.13.1 → 3.13.2.
Test: 2749 passed, coverage 86.08%.
Wheel smoke: 3/3 version command + demo completed on fresh venv.
F6 (bug_fix_flow + codex-stub patch_preview bug) ayrı correctness
lane'e (v3.13.3+) ertelendi. bug_fix_flow public surface'dan çıktı
(F2), user-facing değil.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
📊 Benchmark Scorecard
Baseline: |
**M1 policy command validation preflight** (Codex BLOCKER):
`executor.py` adapter CLI adımında `validate_command()` çağrısı eklendi.
`{python_executable}` ve diğer placeholder'lar resolved edildikten
sonra policy sandbox'ı üstünden preflight yapılır. Bu olmadan
`codex-stub.manifest::command: "{python_executable}"` mutlak path
kontrolü by-pass ederdi.
İmplementasyon:
- adapter_invoker'dan `_substitute_args + _substitution_context` import
- policy_enforcer'dan `validate_command` import
- `invoke_cli` çağrısından ÖNCE resolved_command + resolved_args +
validate_command zinciri; violation varsa `policy_denied` emit + fail_run
**M2 CLI entry contract pins + CHANGELOG drift**:
- `tests/test_cli_entrypoints.py`: `ao-kernel version` (konsol script)
testi eklendi (shutil.which skip-if-not-installed)
- CHANGELOG F5 section'ı: `ao-kernel --version` yanlış ifadesi
düzeltildi. cli.py parser sadece `version` subcommand destekler,
`--version` flag YOKTUR.
**L1 PUBLIC-BETA.md overclaim düzeltmesi**:
- Sürüm durumu banner'ı: v3.13.2 Shipped satırları vs v4.0.0b1 plan
satırları ayrıldı
- Kurulum bölümü: v3.13.2 (stable) + v4.0.0b1 (pre-release, henüz
yayında değil)
- "Wheel-install smoke CI Shipped" → "Beta (plan)"; gerçek CI job
v4.0.0b1 scope'unda (şu an test.yml'de yok)
- CI coverage gate 85% Shipped satırı eklendi
Test: 2750 passed, coverage 86.08%
Demo smoke (editable): final state completed
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…on helpers Codex M1 absorb'da executor.py'a validate_command preflight eklendiğinde import satırları atlanmıştı (primary worktree'ye yazılmış, session'a geçmeden). Kod block'u kullanılıyor ama import'lar yok → NameError runtime. Düzeltme: executor.py imports'a _substitute_args, _substitution_context, validate_command eklendi. Test: 2750 passed, coverage 86.07% Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codex iter-2 review 3 substantive BLOCKER bulgu verdi:
- B1: validate_command event ordering bozuyor (adapter_invoked önce
emit ediliyor, sonra validate; canonical order bozulur)
- B2: rollout semantics bypass (enabled=false dormant policy'de bile
bloklar; executor.py:408-424 kontratı dışında)
- B3: build_sandbox() runtime interpreter path anchor eklemiyor;
sys.executable venv/Homebrew'da command_path_outside_policy
violation atabilir
Codex karar (X): "Patch release'te kontratı bozan 'hardening' ship
etmek, hiç ship etmemekten daha kötü. M1'i revert et, {python_executable}
token sadece demo/packaging compat fix olarak tut."
Revert scope:
- executor.py: validate_command block ve ilgili import'lar geri alındı
- _substitute_args, _substitution_context, validate_command import
listesinden çıkarıldı
- adapter_invoker.py + codex-stub.manifest.v1.json DEĞİŞMEDİ (demo
subprocess fix korunur)
Docs güncellendi:
- CHANGELOG M1 hardening iddiasını iter-2 revert notu ile değiştirdi
- PUBLIC-BETA.md: "Policy command validation wire'lı" ifadesi
"v3.13.2'de sandbox preflight YOK, v3.13.1 davranışıyla aynı;
entegrasyon v4.0.0b1 lane'inde" olarak düzeltildi
Defer v4.0.0b1 lane:
- enabled policy + command validation integration (rollout-aware,
event-order-preserving, runtime-anchor sandbox)
Test: 2750 passed, coverage 86.08%
Demo smoke (editable): final state completed
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codex iter-3 REVISE: doc accuracy. Önceki wording 'v3.13.1 davranışıyla
aynı / ne iyileşir ne kötüleşir' diyordu. Aslında {python_executable}
= sys.executable absolute path kullanımı eski 'python3' PATH-based
çözümünden farklı — enabled policy + command_allowlist tanımlayan
operator'lar için interpreter seçimi semantiği değişti.
Düzeltme:
- CHANGELOG: 'status quo' ifadesi yerine net 'PATH resolution'dan
bağımsız; interpreter seçimi semantiği değişmiş olabilir' notu
- PUBLIC-BETA.md: aynı şekilde netleştirildi
No code change.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
Post-v3.13.1 dış AI değerlendirmesi 5 bulgu tespit etti, hepsi absorb edildi. Ürün kodu değişti; branch-discipline meta-altyapısı sonrası ilk user-facing correctness patch.
F1–F5 Kabul kriterleri (hepsi yeşil)
--fail-under=85✓demo_bugfixref yokcompletedpython -m ao_kernel versionao-kernel 3.13.2✓python -m ao_kernel.cli versionao-kernel 3.13.2✓Metrics
Scope
Included (F1-F5):
__main__.py+ cli.py guard){python_executable}token substitution (adapter_invoker.py + codex-stub manifest) — minimal port from backup/codex-pbeta-4.0.0b1-stale-baseDeferred (v3.13.3+):
bug_fix_flow + codex-stub patch_previewbug (codex-stub sabit diff üretiyor, workflow adım fail). bug_fix_flow public surface dışı şimdi (F2), user-facing değil.init_cmd.run(override)WRITE-side asymmetryTest plan
🤖 Generated with Claude Code