Roadmap: items 252-258 done, measured on server 399

This commit is contained in:
Ingo Schnabel
2026-09-26 22:35:56 +02:00
parent 129987a4c1
commit 3e923bed42
3 changed files with 33 additions and 10 deletions

View File

@@ -4,4 +4,4 @@
server.url=http://localhost:8787
# Stamped by manage-ac.sh (stamp_cli_version) from ac-code-server's agenticcode.version
# at build time. "dev" means this jar wasn't built via manage-ac.sh.
version=398
version=399

View File

@@ -3,7 +3,7 @@ quarkus.http.port=8787
# AgenticCode's own release counter (not the Maven project version) — bump this by hand for each
# release. Single source of truth for the startup log line, GET /api/version, and the OpenAPI
# info version (referenced below via property expression, not duplicated).
agenticcode.version=398
agenticcode.version=399
# OpenAPI / Swagger UI (item 48) — the generated spec is the contract the web-UI TS client
# is generated against. Served at /q/openapi (yaml/json); Swagger UI at /q/swagger-ui in dev.
mp.openapi.extensions.smallrye.info.title=AgenticCode API

View File

@@ -8,7 +8,7 @@ re-files them.
> **High priority (2026-09-26):** items 234 and 236–241 are done — the gaps from
> `k3-claude-develop/resources/01-guides/agenticcode-luecken.md` (L1–L6), see the first section below.
> **High priority (2026-09-26, second round):** items **252–258**, the gaps from the same document that
> were still open against server 394 (L4 remainder, L7–L10).
> were still open against server 394 (L4 remainder, L7–L10). All done 2026-09-26 (server 399).
> **High priority:** items **142–143** — a dead Natural subroutine is indistinguishable from a live
> one, and the cross-project counterpart relation has no edge. (**141**, comments not indexed, is
> implemented — 2026-08-28, see `features.md`; both remaining items build on it.)
@@ -109,7 +109,7 @@ analysis fell back to reading source. Gap ids L1–L6 refer to that file.
`koala/rest-endpoints` and `koala/counterparts` both return 0. The generated client `src/generated` is missing
from the graph, and `counterparts` is not configured for `koala`.
- [ ] **252. OpenAPI counterparts: the tag is compared case-sensitively (L10)** (found 2026-09-26)
- [x] **252. OpenAPI counterparts: the tag is compared case-sensitively (L10)** (found 2026-09-26, done 2026-09-26)
`koala/counterparts?kind=rest&unmatched=true` lists `GET /K3Koala/api/i18n/translations`
(`I18nService.getTranslations`, generated client). The spec tag is `i18n`, the backend controller is
@@ -118,7 +118,10 @@ analysis fell back to reading source. Gap ids L1–L6 refer to that file.
(camel-cased, first letter upper): `i18n` → `I18nApi`. The sidecar already derives the service class
that way (`className(tag)` → `I18nService`); the counterpart match has to use the same form.
- [ ] **253. Spec-first Spring servers: the operations of `swagger.yaml` are not REST endpoints (L10)** (found 2026-09-26)
Measured 2026-09-26 (server 399, k3 deep 21 min): `I18nService.getTranslations` pairs with
`TranslationController`; `koala/counterparts?kind=rest&unmatched=true` 12 → 9.
- [x] **253. Spec-first Spring servers: the operations of `swagger.yaml` are not REST endpoints (L10)** (found 2026-09-26, done 2026-09-26)
K3_Koala is built spec-first: openapi-generator (`spring`, delegate pattern) writes the controllers
with the `@RequestMapping`s from `src/main/resources/swagger.yaml` at build time, and the checked-in
@@ -131,7 +134,13 @@ analysis fell back to reading source. Gap ids L1–L6 refer to that file.
`rest-endpoints` and by the REST counterpart match; unimplemented ones (`basicAddition`, `getKunde`,
`createVertrag` on K3_Koala) are reported as such rather than silently missing.
- [ ] **254. `@PostMapping(path = A + B)`: a concatenation of constants is not evaluated (L10)** (found 2026-09-26)
Measured 2026-09-26 (server 399): `k3/rest-endpoints` lists 119 K3_Koala endpoints (4 before; 373 in all).
`K3AuthModuleService.login` pairs with `AuthenticationController.login`. The 9 remaining unmatched koala calls:
the 3 unimplemented operations, 5 non-backend calls (`{apiUrl}`, translation loaders), and `spnegoLogin`, whose
client path is `/K3Koala/api/login/spnego{param}`: a query string held in a variable is appended as a path segment
(client-side, not this item).
- [x] **254. `@PostMapping(path = A + B)`: a concatenation of constants is not evaluated (L10)** (found 2026-09-26, done 2026-09-26)
`VerwaltungController` (K3_Data) maps `@PostMapping(path = KONTONUMMER_PATH + BUCHHALTUNG_POST_PATH)`.
A single constant resolves (`/v1/praemienkonto/buchhaltung/kontoNummern`), the sum does not, so the
@@ -139,24 +148,35 @@ analysis fell back to reading source. Gap ids L1–L6 refer to that file.
`POST /K3Data/api/v1/praemienkonto/buchhaltung/kontoNummern/buchhaltung/post` stays unmatched. The
only occurrence in K3, but a wrong path is worse than a missing one.
- [ ] **255. `dynamic-calls/overrides` takes 18 s for 11 entries (L9)** (found 2026-09-26)
Measured 2026-09-26 (server 399): `putKontonummernFinanzbuchhaltung` →
`POST /v1/praemienkonto/buchhaltung/kontoNummern/buchhaltung/post`.
- [x] **255. `dynamic-calls/overrides` takes 18 s for 11 entries (L9)** (found 2026-09-26, done 2026-09-26)
`korin/dynamic-calls/overrides`: 18.3 s (2026-09-26, server 394; 18-20 s measured twice by the K3
analysis). The K3 session start (`scripts/check-env.sh`) skips the pin check because of it.
- [ ] **256. NatJav DDM fields: `boundReads`/`boundWrites` are 0 for every field (L7)** (found 2026-09-26)
Measured 2026-09-26 (server 399, after korin deep): 11 entries in 0.17 s cold, 0.01 s warm (18.3 s before;
55 M → ~6 k db hits).
- [x] **256. NatJav DDM fields: `boundReads`/`boundWrites` are 0 for every field (L7)** (found 2026-09-26, done 2026-09-26)
`korin/db-tables/ERKONTO/columns`: 147 fields (item 236), none with a read or write site;
`variables/BETRAGSOLL/writes?module=KO50B&depth=2` → `[]`. The question "which programs read or write
this DB field" (K3 task 16, write-through field coverage) is answered from source today.
- [ ] **257. `db-tables/{ddm}/columns` lists a `DATA_STRUCTURE` row (L8)** (found 2026-09-26)
Measured 2026-09-26 (server 399, korin deep 15 min): `ERKONTO/columns` 147 fields, 123 with reads, 128 with
writes; `BETRAGSOLL` reads 457 / writes 56.
- [x] **257. `db-tables/{ddm}/columns` lists a `DATA_STRUCTURE` row (L8)** (found 2026-09-26, done 2026-09-26)
`korin/db-tables/AKUNDE/columns`: 258 rows, one of them `DATA_STRUCTURE YLAKUNDE`
(`KORIN/Programmierer/P07/YLAKUNDE_DA.java`). The endpoint promises the table's columns; the caller
filters `type != COLUMN` by hand.
- [ ] **258. k3: the JAXB data types of an EntireX WSDL are not linked (L4 remainder)** (found 2026-09-26)
Measured 2026-09-26 (server 399): `AKUNDE/columns` 257 rows, all `COLUMN` (258 before, one `DATA_STRUCTURE`).
- [x] **258. k3: the JAXB data types of an EntireX WSDL are not linked (L4 remainder)** (found 2026-09-26, done 2026-09-26)
Item 239 links the `wsimport` service package (`at.k3.entirex.ws.wsk369`, from the binding file) to
its WSDL. The request/response classes live elsewhere: `rpc.entirex.softwareag.com.wsk369.GetData`,
@@ -164,6 +184,9 @@ analysis fell back to reading source. Gap ids L1–L6 refer to that file.
from this package family 1,520 times, and `k3/modules/at.k3.base.ws.wsk369.WSK369GetDataService/callees`
shows them as unresolved placeholders without a way to the WSDL or the korin-ws service.
Measured 2026-09-26 (server 399): `k3/soap-endpoints?port=WSK369` → `typesPackages`
`rpc.entirex.softwareag.com.wsk369`, 4 clients (service, integration test, two test doubles) via wsimport + jaxb.
## High priority — comments, dead code and the counterpart relation (2026-08-27)
Three gaps reported after the `VermittlerController` reengineering round (nine UPMS services, four of