Skip to content

release/1.14.0#247

Merged
tmseidel merged 47 commits into
mainfrom
release/1.14.0
Jul 2, 2026
Merged

release/1.14.0#247
tmseidel merged 47 commits into
mainfrom
release/1.14.0

Conversation

@tmseidel

@tmseidel tmseidel commented Jul 2, 2026

Copy link
Copy Markdown
Owner

No description provided.

tmseidel and others added 30 commits June 20, 2026 23:21
Add two new agent-invokable context tools that extract lightweight
structural information from source files without loading full content:
- ctags-signatures: extracts function, class, method, and interface
signatures from a file using Universal Ctags. Returns a compact
pseudo-code map with hierarchical grouping, language-aware markers,
configurable limit, and ctags 5.9 constructor detection.
- ctags-deps: extracts imports, includes, and namespace/package
declarations from a file. Returns a compact JSON dependency map.
fix: prevent empty reviews on output token limit exceeded
…w-ups

bugfix/agentic-prworkflow-follow-ups
…t detection

The --kinds-all approach relied on language-specific single-letter kind codes
(i=import, n=namespace, p=package) which are ambiguous — e.g. Java emits
kind=package for both package declarations and import statements. Without
--extras=+r, ctags omits import/include statements entirely.
fix: clone forked PRs by falling back to refs/pull/N/head
tmseidel added 17 commits July 1, 2026 19:40
…environment

build: Enforce supported environments and strictly whitelist dependencies
Saving the detached entity from form binding directly in the
update
path would cascade-delete all persisted selectedWorkflows,
because the
detached entity's list is empty. The fix now fetches the
managed
entity via findById, updates its name, and returns the
managed
entity instead — preserving the workflow associations.
fix: avoid cascade-delete on workflow configuration update
review workflow

 Allow the model to approve or request changes on a PR in
 addition to
 posting a Markdown review comment. Operators opt in per
 workflow via:

- Enable formal review decision checkbox
- Approval decision prompt (criteria for approve /
request-changes / none)
review workflow

Allow the model to approve or request changes on a PR in
addition to
posting a Markdown review comment. Operators opt in per
workflow
review workflow

Allow the model to approve or request changes on a PR in
addition to
posting a Markdown review comment. Operators opt in per
workflow
@tmseidel tmseidel requested a review from max-california July 2, 2026 18:43

@max-california max-california left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Agentic Code Review

Summary: this release bundles several useful improvements, but I found two blocking correctness issues in the new agentic-review/ctags work. I’d hold the PR until those are fixed.

Blocking findings

1. ctags-signatures output is not actually structured and will misclassify many members

File: src/main/java/org/remus/giteabot/agent/validation/ToolExecutionService.java
Lines: around 1016-1055, 1105-1135

The new formatCtagsSignatures(...) implementation renders each tag as a flat line, but the docs and tool description promise a compact architectural map of classes/methods/interfaces. Today it:

  • does not group methods under their enclosing class/interface
  • infers indentation only from scope != null, which is not enough to preserve structure
  • will label any method whose name equals its scope as a constructor, even when the scope is not a class name in the relevant language/tagging mode

This is more than a presentation nit: the agent is being instructed to prefer this tool over cat for first-pass understanding, so misleading structure here can drive incorrect review conclusions.

Actionable fix:

  • group tags by class/interface/module scope before rendering
  • use both scope and scopeKind to decide whether a scoped symbol belongs under a container
  • only apply the “method name equals scope => constructor” heuristic when scopeKind indicates a class-like scope

2. ctags-deps drops dependency information once ctags output is truncated

File: src/main/java/org/remus/giteabot/agent/validation/ToolExecutionService.java
Lines: around 1178-1188, 1272-1325

executeCtagsDepsTool() shells out via executeCommand(), which truncates stdout to MAX_TOOL_OUTPUT_CHARS before returning. formatCtagsDependencies() then parses that truncated JSON-lines stream.

For files with many imports/includes, truncation can cut the ctags output mid-line, silently producing partial dependency sets. Because the formatter ignores unparsable/incomplete lines, callers get a “successful” but incomplete dependency graph with no indication that it was truncated.

That is a correctness issue for a discovery tool explicitly meant to tell the agent what a file depends on.

Actionable fix:

  • either bypass generic output truncation for ctags and cap after semantic parsing,
  • or detect the truncation marker / incomplete final line and surface that the dependency list is partial,
  • ideally both tools should parse full subprocess output first and only truncate the rendered result.

Non-blocking suggestions

Maven enforcer Linux rule may be unnecessarily strict

File: pom.xml
The new enforcer rule hard-fails all non-Linux builds. If that is intentional, fine, but it is a significant contributor workflow change. Consider whether CI/containerized guidance alone would be enough, or at least document this prominently in release notes.

AiIntegration now has both Lombok-generated and manual accessors for the same UI-facing property

File: src/main/java/org/remus/giteabot/admin/AiIntegration.java
The manual setEnableNativeToolCalling(...) is fine, but with @Data this class now mixes generated and custom accessors around a derived transient property. Not blocking, just worth keeping an eye on for serialization/binding surprises.


Read-only agentic review by AI Git Bot

@tmseidel tmseidel dismissed max-california’s stale review July 2, 2026 18:52
  • the first blocking Issue I cannot reproduce
  • the second is not a Blocker, the limit is 10.000 chars, so this will be a rare edge case and we have to truncate the output...
@tmseidel tmseidel merged commit 298b164 into main Jul 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants