Docs: K3 gaps second round (items 252-258) in the agent guide

This commit is contained in:
Ingo Schnabel
2026-09-26 21:55:42 +02:00
parent a0e23c6594
commit 129987a4c1
3 changed files with 43 additions and 2 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=394
version=398

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=395
agenticcode.version=398
# 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

@@ -1986,6 +1986,47 @@ theme tokens — by design.
the node).
- `?kind=scss|template` filters the new kinds, in REST and CLI (`ac styles --kind scss`).
## K3 gaps, second round (items 252–258)
* **Spec-first Spring servers (item 253).** A `swagger.yaml`/`openapi.yaml`/`.json` under
`src/main/resources` is a module with `moduleKind OPENAPI_SPEC`. It has one `FUNCTION` per operation,
carrying `specPath` (server URL path + path), `specMethod`, `operationId`, `tag`, and the names the
generator derives: `apiDelegate` and `delegateMethod`.
* The finalize step `link-openapi-delegates` gives the implementing method `restPath`, `httpMethod`,
`operationId` and `restPathFrom`. That method is the `<Tag>ApiDelegate` implementer's method in
the same Maven module.
* So K3_Koala's controllers (`AuthenticationController.login` → `POST /K3Koala/api/login`) appear in
`rest-endpoints` and in the REST counterpart match like annotated handlers.
* The operation gets `implementedBy`, or `implemented: "false"` when the module has delegates for the
spec but none for this operation (the generated default answers 501). Read it with
`search/identifier?name=<operationId>&type=FUNCTION` → `nodes/{id}`.
* A spec with no delegate in its module is taken as a client's spec and left alone.
* **Tag case (item 252).** The OpenAPI counterpart match compares the generator's class form of the tag
(`i18n` → `I18nApiDelegate`).
* **`path = A + B` (item 254).** A Spring or JAX-RS mapping built from constants with `+` is resolved. A
path that still cannot be resolved (for example another class's constant) makes the method **no**
endpoint instead of one on the bare class path. The expression stays on the node as
`restPathUnresolved`.
* **`dynamic-calls/overrides` (item 255)** is anchored on the call site's module. For a copycode site
that means its includers: through `INCLUDES` (NatJav) or through the copycode nodes' `ownerModule`
(Natural). Measured on korin: 55 M db hits (18 s) before, about 6 k after.
* **NatJav DB fields (items 256/257).**
* A statement on a view column reaches the column's `FIELD` node, also through an alias
(`UMK = MDUMKONT; … UMK.SATZART`). So `variables/<COLUMN>/reads|writes` lists the sites.
* `db-tables/{ddm}/columns` has **`reads`/`writes`** per column: the statements reading and writing
it through any view of the table in the whole project.
* `boundReads`/`boundWrites` are item 195's TypeScript form bindings, not DB accesses, and stay 0
here.
* A view declared in a `USING`'d data area (another file) is not yet counted.
* The data area's own view no longer appears as a `DATA_STRUCTURE` row among the columns.
* **JAXB types of a WSDL (item 258).** The WSDL service row of `soap-endpoints` has **`typesPackages`**:
the packages JAXB generates its schema classes into (`urn:com-softwareag-entirex-rpc:WSK369` →
`rpc.entirex.softwareag.com.wsk369`).
* Placeholder classes of such a package are linked `COUNTERPART_OF {via: jaxb}` to the service, when
exactly one service claims the package.
* Their users count among `clients`.
* A binding customisation naming another package is not read.
## Missing capability?
If the API/CLI genuinely cannot answer a question (not just