This is an automated email from the ASF dual-hosted git repository.

wenjin272 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-agents.git


The following commit(s) were added to refs/heads/main by this push:
     new a356606e [docs] Clarify review policy (#890)
a356606e is described below

commit a356606ec201295add500cb895698a66f9fa0f22
Author: Wenjin Xie <[email protected]>
AuthorDate: Fri Jul 10 16:43:01 2026 +0800

    [docs] Clarify review policy (#890)
    
    Co-authored-by: Codex <[email protected]>
---
 AGENTS.md      |  2 ++
 code_review.md | 55 +++++++++++++++++++++++++++++++++++++++++--------------
 2 files changed, 43 insertions(+), 14 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md
index 43d1601a..d536f8d7 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -21,6 +21,8 @@ Java targets Java 11 and is formatted by Spotless using 
google-java-format AOSP
 
 Java tests use JUnit 5 with AssertJ and Mockito. Python tests use pytest; 
integration tests are marked with `integration` and can require external 
services such as Ollama, OpenAI, Chroma, or mem0. Before Python-facing tests, 
including cross-language suites, export `PYTHONPATH=$(python3 -c 'import 
sysconfig; print(sysconfig.get_paths()["purelib"])')` or the equivalent path 
from the active Python environment. Prefer focused tests near the changed 
module, then run `./tools/ut.sh` or the rel [...]
 
+- If verification may be using stale generated, built, or installed artifacts, 
rebuild with `./tools/build.sh` or document an equivalent targeted rebuild 
before attributing the failure to source changes.
+
 ## Commit & Pull Request Guidelines
 
 Use concise subjects with bracketed components, matching existing history, 
such as `[python] Admit bytes in memory values` or `[api][java] Add event 
constants`. For nontrivial behavior changes, open or link a GitHub issue before 
the PR. PR titles should include relevant components like `[api]`, `[runtime]`, 
`[java]`, `[python]`, or `[hotfix]`; describe the change, test evidence, and 
any compatibility impact.
diff --git a/code_review.md b/code_review.md
index 9f33b3ff..b99d41d1 100644
--- a/code_review.md
+++ b/code_review.md
@@ -14,29 +14,53 @@ design, clarify contracts, or prevent old bug paths from 
remaining available.
 Do not keep an API, fallback, or mutable state channel only for compatibility
 when it conflicts with the new design.
 
+## Review Lenses
+
+Do not limit the review to bug-focused correctness checks. For non-trivial
+changes, review through at least these lenses:
+
+- Bug-focused review: check whether the change can fail at runtime, produce
+  incorrect behavior, violate compatibility, miss required tests, or break
+  documented contracts.
+- Design-focused review: check whether the new or changed design is simple,
+  coherent, maintainable, and aligned with module boundaries and user-facing
+  concepts.
+
+Keep these findings separate. A design-focused comment does not need to prove 
an
+immediate runtime bug, but it must explain the concrete complexity, ambiguity,
+or maintenance risk introduced by the change.
+
 ## Required Review Passes
 
 1. Understand the issue or feature goal.
-2. For GitHub PRs, read existing unresolved human review threads before
+2. Verify that the implementation matches the PR's stated goal. Trace the goal
+   to the changed code, tests, docs, and runtime behavior, and call out gaps
+   where the PR only partially addresses the goal or validates an adjacent
+   behavior instead of the intended contract.
+3. For GitHub PRs, read existing unresolved human review threads before
    finalizing findings.
-3. Read the diff, then trace the full runtime call path outside the diff.
-4. Search all call sites of changed public, protected, and cross-language APIs.
-5. Decide whether changed APIs should be kept, documented, deprecated, or
+4. Read the diff, then trace the full runtime call path outside the diff.
+5. Search all call sites of changed public, protected, and cross-language APIs.
+6. Decide whether changed APIs should be kept, documented, deprecated, or
    deleted.
-6. Check user-facing names, docs, and error messages for implementation leaks,
+7. Run a design-focused pass for non-trivial changes. Look for unclear API
+   shape, ambiguous contracts, unnecessary lifecycle state, duplicated
+   abstractions, implementation details leaking into user-facing names or docs,
+   avoidable fallback paths, and module-boundary violations.
+8. Check user-facing names, docs, and error messages for implementation leaks,
    stale comments, or ambiguous contracts.
-7. Check whether the root cause channel still exists through old APIs,
+9. Check whether the root cause channel still exists through old APIs,
    defaults, fallback behavior, or mutable shared state.
-8. Compare equivalent Java, Python, and YAML-facing behavior.
-9. Check cross-language wrappers, adapters, serializers, and runtime bridge
+10. Compare equivalent Java, Python, and YAML-facing behavior.
+11. Check cross-language wrappers, adapters, serializers, and runtime bridge
    code when the change crosses Java/Python boundaries.
-10. Check dependency, license, NOTICE, and shared-fixture changes when new
+12. Check dependency, license, NOTICE, and shared-fixture changes when new
     libraries or generated/bundled artifacts are introduced.
-11. Verify tests cover the behavior at the level where the bug happened.
-12. Run targeted tests or clearly state why they could not be run.
-13. Separate findings into blockers, non-blocking risks, and test gaps. Include
-    relevant human-raised issues in the conclusion, marked as already raised by
-    a human reviewer.
+13. Verify tests cover the behavior at the level where the bug happened.
+14. Run targeted tests or clearly state why they could not be run.
+15. Separate findings into blockers, non-blocking design or compatibility 
risks,
+    and test gaps. Include relevant human-raised issues in the conclusion,
+    marked as already raised by a human reviewer.
 
 ## Root-Cause Checklist
 
@@ -70,6 +94,9 @@ For public APIs, configuration, and common runtime extension 
points, ask:
 
 Because the project is beta, reviewers should actively recommend deleting
 unsafe or misleading APIs when doing so simplifies the contract.
+Do not preserve compatibility by default. Compatibility paths must have a
+concrete obligation; otherwise prefer removing or rejecting them, especially
+when they keep old bugs or ambiguous contracts alive.
 
 When reviewing a public API change:
 

Reply via email to