Record verified Component runtime snapshot and artifact checks

This commit is contained in:
2026-11-12 07:30:35 +01:00
parent 953f01a19c
commit 5fc3ee23fc
7 changed files with 157 additions and 5 deletions
+89
View File
@@ -0,0 +1,89 @@
{
"schemaVersion": 1,
"status": "verified-local-development-snapshot",
"sourceRepository": "ssh://git@gitea.neitzel.de:2222/konrad/NeitzelLib.git",
"sourceRevision": "2d83fb467cc29b6e7c5aa92c86fc3fb49a504dc0",
"minimumReleasedVersion": null,
"requiredCapability": "component-fxml-attributes-after-initialization",
"javaVersion": "21",
"javafxVersion": "21.0.7",
"testResults": {
"core": {
"tests": 1,
"failures": 0,
"errors": 0,
"skipped": 0
},
"injection": {
"tests": 10,
"failures": 0,
"errors": 0,
"skipped": 0
},
"fx": {
"tests": 101,
"failures": 0,
"errors": 0,
"skipped": 0
}
},
"adapterFreeCanvasChecks": 38,
"artifacts": [
{
"groupId": "de.neitzel.lib",
"artifactId": "neitzellib",
"version": "1.0-SNAPSHOT",
"extension": "pom",
"repositoryPath": "de/neitzel/lib/neitzellib/1.0-SNAPSHOT/neitzellib-1.0-SNAPSHOT.pom",
"sha256": "e1f7931ab7f1e632117a024fd46c9932a95e343f10de8dec3106bf4a9b9dfe3c"
},
{
"groupId": "de.neitzel.lib",
"artifactId": "core",
"version": "1.0-SNAPSHOT",
"extension": "pom",
"repositoryPath": "de/neitzel/lib/core/1.0-SNAPSHOT/core-1.0-SNAPSHOT.pom",
"sha256": "0be257c955a52dbf419ece55675d8eab232d537b1460960e0ca106b16bf71232"
},
{
"groupId": "de.neitzel.lib",
"artifactId": "core",
"version": "1.0-SNAPSHOT",
"extension": "jar",
"repositoryPath": "de/neitzel/lib/core/1.0-SNAPSHOT/core-1.0-SNAPSHOT.jar",
"sha256": "6610e43792818fd5d4d3545d487b28d0cd3faa9b849046a47a4db02c984a144a"
},
{
"groupId": "de.neitzel.lib",
"artifactId": "injection",
"version": "1.0-SNAPSHOT",
"extension": "pom",
"repositoryPath": "de/neitzel/lib/injection/1.0-SNAPSHOT/injection-1.0-SNAPSHOT.pom",
"sha256": "6060ccac3dd2eeb00342ab34028445649716e229e09bea9adbba56dda58d4780"
},
{
"groupId": "de.neitzel.lib",
"artifactId": "injection",
"version": "1.0-SNAPSHOT",
"extension": "jar",
"repositoryPath": "de/neitzel/lib/injection/1.0-SNAPSHOT/injection-1.0-SNAPSHOT.jar",
"sha256": "a582aa71f034370865d486706f55a1fbcc40446c47bf402c28049b205f7c9e25"
},
{
"groupId": "de.neitzel.lib",
"artifactId": "fx",
"version": "1.0-SNAPSHOT",
"extension": "pom",
"repositoryPath": "de/neitzel/lib/fx/1.0-SNAPSHOT/fx-1.0-SNAPSHOT.pom",
"sha256": "4ccebda8f6cb8104aa272f3805263967530f8da259d2712b8ca0aa0c7d6fb356"
},
{
"groupId": "de.neitzel.lib",
"artifactId": "fx",
"version": "1.0-SNAPSHOT",
"extension": "jar",
"repositoryPath": "de/neitzel/lib/fx/1.0-SNAPSHOT/fx-1.0-SNAPSHOT.jar",
"sha256": "a668ac49f5a44d63e7e115fd93456b581ab05725870affcaf2dede6ec5dbe431"
}
]
}
+35
View File
@@ -0,0 +1,35 @@
# Corrected NeitzelLib development artifact
The Component builder fix is integrated in [NeitzelLib main at 2d83fb4](https://gitea.neitzel.de/konrad/NeitzelLib/src/commit/2d83fb467cc29b6e7c5aa92c86fc3fb49a504dc0). It collects FXML values, initializes the injected Component and installs its Model listener, then applies values using public FXMLLoader conversion. Both Components in the regression fixture retain the same Model reference; invalid properties and values fail.
## Artifact identity
Use `de.neitzel.lib:fx:1.0-SNAPSHOT` with its matching parent, core and injection artifacts. [The manifest](neitzellib-baseline.json) records the exact source commit and SHA-256 hashes of seven installed POM/JAR artifacts. These artifacts are installed in the developer's local Maven repository, not deployed to a remote artifact repository. No corrected released minimum is established and no release tag was created. A source commit on main is not a published release.
```sh
python3 scripts/check-neitzellib-artifact.py
# For a non-default Maven repository:
python3 scripts/check-neitzellib-artifact.py --repository /path/to/repository
```
This check detects an absent or overwritten snapshot. Maven coordinates alone are insufficient. Artifact bytes have also been compared against every tested compiled class in the isolated build. A fresh rebuild can change JAR timestamps, so it must be validated and its manifest deliberately refreshed; a checksum mismatch must not be automatically accepted.
## Evidence
- Unmodified library main plus the new regression fixture: seven tests, one expected loading error in `componentAttributesApplyAfterInitialization`. Maven reported success because its POM hardcodes `testFailureIgnore=true`; the XML result correctly identified the failure.
- Corrected isolated main-based build: core **1**, injection **10**, fx **101** tests, all passing with zero failures, errors or skips. The Component test class contains seven passing cases.
- Adapter-free Kit canvas/runtime smoke scenario: **38 passing checks**, including direct loading of the saved original FXML. It used JavaFX 21.0.7 in the target and the existing Kit 26 prototype host.
- `clean install` completed using JDK 21 and the library's Maven 3.9.11 wrapper, including its configured report-generation/package phases. Test report totals, not the Maven exit status alone, are the test acceptance evidence. This does not claim new module-path, plugin or cross-platform qualification.
## Rebuild from clean source
Use a clean checkout at the manifest's source revision; the canonical library checkout currently also contains unrelated native-desktop work. Keep that work separate. Run:
```sh
# In the clean NeitzelLib checkout, with JAVA_HOME pointing to JDK 21:
./mvnw -B -ntp -pl fx -am -Dversions.skip=true -Dmaven.test.failure.ignore=false clean install
```
The command-line failure-ignore property does not override the existing hardcoded POM setting. Inspect every `TEST-*.xml` report under `core`, `injection` and `fx`: require nonempty reports and zero failures/errors/skips before accepting the install. Re-run the direct adapter-free scenario before changing the recorded capability baseline. Record source revision and installed artifact hashes together after acceptance; do not silently reuse the old hashes for a new build.
The regression source covers custom/inherited properties, numeric/boolean/enum conversion, XML text escaping, attached layout constraints, post-initialization setters, shared Model identity/write-back and invalid values. The original canonical library branch and its working-tree changes were left untouched; only the isolated eight-file Component change was integrated into main.