mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2026-11-13 09:13:30 +01:00
chore(ai): add agent self-review and a CI check for agent-assisted PRs
Additional changes Agents write a task plan to .scratch/<branch>/plan.md and self-review with code-review Agents fix hard violations, report judgement calls and rerun the self-review before every push Agents declare the review in a Self-review section of the pull request body Add the ai-self-review workflow and scripts/check_pr_self_review.py for pull requests into main Detect agents by Assisted-by or Anthropic Co-Authored-By trailers, body markers or the AI box Fail only on a missing Self-review section or a missing, malformed or stale Reviewed SHA Note an unticked AI-assisted box and malformed optional lines without failing Comment on the pull request how to fix a failure and update that one comment on later runs Show the same report in the job summary and accept Windows line endings in the body Skip dependabot and release pull requests Run on pull_request_target with the base branch's script, never pull request code Add the pull request template: the pr skill's sections plus Checklist and Self-review Require always valid optimization parameters in the energy-domain skill Require datetimeutil for date and time handling in new and changed code in AGENTS.md Require the Assisted-by trailer on agent commits in the commit-messages skill Add tests for the check in tests/test_ai.py Add GLOSSARY.md and the agent tracker docs in docs/agents/ Add decision record docs/adr/0001 with an ADR index in the docs toctree Document the workflow in docs/develop/ai.md and CONTRIBUTING.md Exclude docs/agents from Sphinx and PyMarkdown and ignore .scratch/ Document cz check instead of make gitlint for commit messages in docs/develop/ai.md Assisted-by: Claude Code (claude-opus-5-5) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
62cbf4cf2a
commit
dd41e5d57c
@@ -88,9 +88,23 @@ Rules:
|
||||
|
||||
3. Footer (optional)
|
||||
|
||||
Use only for breaking changes (BREAKING CHANGE: …) or issue references
|
||||
(Refs: #123). Conventional Commits allows this; it is not a replacement for
|
||||
the body section.
|
||||
Use only for breaking changes (BREAKING CHANGE: …), issue references
|
||||
(Refs: #123) and the agent trailer below. Conventional Commits allows this; it
|
||||
is not a replacement for the body section.
|
||||
|
||||
4. Agent trailer (mandatory for agents)
|
||||
|
||||
Every commit that a coding agent wrote or co-wrote ends with
|
||||
|
||||
```text
|
||||
Assisted-by: <tool> (<model id>)
|
||||
```
|
||||
|
||||
e.g. `Assisted-by: Claude Code (claude-opus-5-5)` or
|
||||
`Assisted-by: OpenCode (qwen3-coder)`. Keep trailers the tool adds itself
|
||||
(e.g. `Co-Authored-By:`) and put `Assisted-by:` with them in the last
|
||||
paragraph. The CI check for agent-assisted pull requests reads it, see
|
||||
`docs/develop/ai.md`.
|
||||
|
||||
## Layout
|
||||
|
||||
@@ -102,6 +116,7 @@ the body section.
|
||||
[<another short description>]
|
||||
|
||||
[optional footer]
|
||||
[Assisted-by: <tool> (<model id>)]
|
||||
```
|
||||
|
||||
- Exactly one blank line between the subject and the body heading.
|
||||
@@ -191,5 +206,6 @@ as shown above.)
|
||||
□ Each secondary item is a short single-line description.
|
||||
□ No emoji, no asterisk-prefixed headings.
|
||||
□ If more than one body heading would be needed, split the commit instead.
|
||||
□ Run uv run cz check --rev-range main..HEAD (or rely on the pre-commit hook) to confirm the
|
||||
□ Agent-written commits end with `Assisted-by: <tool> (<model id>)`.
|
||||
□ Run uv run --frozen cz check --rev-range main..HEAD (or rely on the pre-commit hook) to confirm the
|
||||
message passes the project's check.
|
||||
|
||||
@@ -17,3 +17,27 @@ description: Use when working on optimization logic, adapters, controllers, devi
|
||||
- **Preserve existing energy sign conventions, units, and conversion
|
||||
semantics.** Verify them before changing power, energy, or charging
|
||||
behavior.
|
||||
|
||||
## Optimization parameters are always valid
|
||||
|
||||
The preparation of the **optimization parameters** (see `GLOSSARY.md`) always
|
||||
creates a valid parameter set. It never fails and never cancels an
|
||||
optimization run. This is a hard rule.
|
||||
|
||||
- It covers the whole path from configuration, predictions and measurements to
|
||||
the parameters handed to an optimizer, for every optimizer (GENETIC,
|
||||
GENETIC0 and future ones), including device and operating-point parameters.
|
||||
- Replace an invalid or missing input with a **fallback value**:
|
||||
1. the configuration field's default,
|
||||
2. a heuristic only when there is no default or the default does not fit
|
||||
the operating state (e.g. a charge limit of 0 when charging is
|
||||
inhibited). For a missing prediction: PV = 0, the last known price
|
||||
carried forward, the load default.
|
||||
- Every fallback:
|
||||
- logs at error level, naming the input and the substitute value,
|
||||
- never changes the user's configuration (no write-back),
|
||||
- never invents devices: a device that cannot be resolved is left out or
|
||||
neutralised, never replaced by a demo device,
|
||||
- never lets an exception escape from the preparation.
|
||||
- A parameter set that is still invalid after preparation is a bug: cover the
|
||||
case with a test and fix the preparation.
|
||||
|
||||
Reference in New Issue
Block a user