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]
