hudi-agent commented on code in PR #20021:
URL: https://github.com/apache/hudi/pull/20021#discussion_r4069584313


##########
hudi-agent-gateway/skills/hudi-architect/references/flink-warnings.md:
##########
@@ -0,0 +1,132 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+# Flink warnings — PR1
+
+Load these warnings only for the Flink route. Each warning has a deterministic 
trigger and action.
+Surface it when the triggering answer lands rather than batching warnings at 
the end.

Review Comment:
   🤖 This file could cover every finding code the gate table in 
`flink-decision-overrides.md` can emit. SKILL.md tells the agent to "consult 
`references/flink-warnings.md` only for the warning that a gate triggers", but 
eight of the sixteen codes in the gate-outcomes table have no entry here: 
`FLINK_VERSION_REQUIRED`, `FLINK_TABLE_LIFECYCLE_REQUIRED`, 
`FLINK_WRITER_MODEL_UNRESOLVED`, `FLINK_CATALOG_REQUIREMENT_UNRESOLVED`, 
`FLINK_MUTABLE_COW_DEFERRED`, `FLINK_MUTABILITY_REQUIRED`, 
`FLINK_RECORD_KEY_POSTURE_REQUIRED`, and `FLINK_REPLAY_BEHAVIOR_UNRESOLVED`. 
`FLINK_MUTABLE_COW_DEFERRED` in particular is a `BLOCKED` finding with no 
message/action text anywhere. Conversely, `FLINK_SECRET_REDACTED` exists only 
here and not in the gate table or question flow. It might help to either add 
the missing entries (or a short note that `*_REQUIRED` / `*_UNRESOLVED` codes 
intentionally have no warning and take their text from the question flow), and 
to mention `FLINK_SECRET_REDACTED` in the over
 rides so the code inventory is consistent across the three files.
   
   <sub><i>⚠️ AI-generated; verify before applying. React 👍/👎 to flag 
quality.</i></sub>



##########
hudi-agent-gateway/skills/hudi-architect/README.md:
##########
@@ -78,6 +96,22 @@ python3 
hudi-agent-gateway/skills/hudi-architect/validate_config_keys.py
 
 Run it after any edit to the reference files (exit 1 lists unknown keys). 
Intentional exceptions — e.g. future-version keys the references discuss but 
never emit — live in `validate_config_keys_allowlist.txt` with a comment each.
 
+Validate the Flink baseline manifest without consulting the current checkout:
+
+```bash
+python3 hudi-agent-gateway/skills/hudi-architect/validate_flink_capabilities.py
+```
+
+Maintainers with the pinned release commit available locally can additionally 
verify every source

Review Comment:
   🤖 It might help to note that this script needs Python 3.11+ — it imports the 
stdlib `tomllib`, which does not exist on 3.8–3.10, so on an older interpreter 
the command fails with a bare `ModuleNotFoundError` rather than a useful 
message. The gateway's `pyproject.toml` already pins `requires-python = 
">=3.11"` and CI runs 3.11/3.12, so a one-line mention here (or in the RUNBOOK 
setup section) would keep the README self-contained for someone running it ad 
hoc.
   
   <sub><i>⚠️ AI-generated; verify before applying. React 👍/👎 to flag 
quality.</i></sub>



##########
hudi-agent-gateway/skills/hudi-architect/RUNBOOK.md:
##########
@@ -133,14 +137,24 @@ A session ends with three artifacts:
 2. **The config bundle** — grouped `hoodie.*` properties. Everything in it 
either encodes a design decision or changes a default deliberately; it 
intentionally omits config that restates defaults.
 3. **The submit command** (or `.option(...)` snippet for DataSource writes) — 
flags are split into **load-bearing** (derived from the design; don't change 
casually) and **environment placeholders** (paths, memory, Scala/Spark versions 
— the agent deliberately doesn't guess these; fill them from your own build and 
cluster).
 
+For a Flink request in the current PR1 scope, the session instead ends with an 
ADR-shaped safety
+assessment, explicit gate findings, and one of `INCOMPLETE`, `BLOCKED`, or 
`REVIEW_REQUIRED`.
+Executable output is withheld even when every safety gate passes; that path is 
implemented and

Review Comment:
   🤖 This sentence reads as though the executable path already exists: "that 
path is implemented and validated in the follow-up PR." Since the PR 
description is careful to say PR1 does not claim those fixtures are 
implemented, consider "that path will be implemented and validated in a 
follow-up PR" so a runbook reader doesn't go looking for it.
   
   <sub><i>⚠️ AI-generated; verify before applying. React 👍/👎 to flag 
quality.</i></sub>



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to