@@ -33,10 +33,9 @@ After a second-pass analysis of every `LIKELY FIXED` and `PARTIALLY FIXED` issue
3333 PARTIALLY FIXED (documentation gap).
3434
3535- ** Confirmable with one targeted JUnit test (no model retraining, no platform
36- reproduction):** all four JUnit tests below were added on branch
37- ` claude/sweet-fermi-1yrRK ` (commit ` 713d426 ` ); each compiles and self-skips
38- cleanly when its model is absent. Verdicts move to FIXED once CI runs them
39- green.
36+ reproduction):** all four JUnit tests below landed on ` master ` via PR #185
37+ (commit ` cba693c ` ). Each compiles and self-skips cleanly when its model is
38+ absent; all four issues are now ** FIXED** .
4039 - #102 — memory leak on ` close() ` : covered by
4140 ` MemoryManagementTest#testOpenCloseLoopDoesNotLeak ` (20-iteration loop,
4241 Linux asserts ` VmRSS ` delta ` < 200 MB ` ; non-Linux degenerates to a
@@ -68,11 +67,11 @@ After a second-pass analysis of every `LIKELY FIXED` and `PARTIALLY FIXED` issue
6867 All five depend on architecture/runtime emulation defects or platform-specific
6968 CRT behaviour that no amount of source-tree inspection can resolve.
7069
71- Bottom line: out of 9 ` LIKELY/PARTIALLY FIXED ` issues, ** 4 are now covered by
72- JUnit tests on branch ` claude/sweet-fermi-1yrRK ` ** (#80 , #95 , #98 , #102 — pending
73- the first green CI run before formal FIXED), ** 3 stay PARTIALLY FIXED pending
74- Java-side enhancements ** (typed image API # 103 / # 34 , 32-bit Android tail of #121 ,
75- CUDA-jar documentation # 86 ), and ** 0 require platform reproduction** .
70+ Bottom line: out of 9 ` LIKELY/PARTIALLY FIXED ` issues, ** 4 are now FIXED via
71+ JUnit regression tests merged in PR # 185 ** (#80 , #95 , #98 , #102 ), ** 3 stay
72+ PARTIALLY FIXED pending Java-side enhancements ** (typed image API # 103 / # 34 ,
73+ 32-bit Android tail of #121 , CUDA-jar documentation # 86 ), and ** 0 require
74+ platform reproduction** .
7675
7776---
7877
@@ -290,8 +289,8 @@ release native memory. Reproduced with a 10-iteration loop: GPU eventually
290289OOMs; CPU eventually thrashes swap. Suggests a leak in the JNI/native
291290destructor path.
292291
293- ** Status in fork:** LIKELY FIXED (regression test added in commit ` 713d426 ` ,
294- awaits first CI green run for FIXED). The native destructor
292+ ** Status in fork:** FIXED (regression test landed in commit ` cba693c ` , PR # 185 ).
293+ The native destructor
295294(` Java_net_ladenthin_llama_LlamaModel_delete ` , ` src/main/cpp/jllama.cpp:917-948 ` )
296295now: clears the field pointer first, drains ` readers ` , signals ` server.terminate() `
297296(twice for the race documented in comments), joins the worker, frees
@@ -335,8 +334,7 @@ The same file works with upstream `llama-embedding` CLI, so the issue is in
335334how the bindings configure the embedding context (e.g. missing ` embedding=true `
336335or pooling parameter).
337336
338- ** Status in fork:** LIKELY FIXED (regression test + CI download added in commit
339- ` 713d426 ` , awaits first green CI run for FIXED). ` ModelParameters.enableEmbedding() `
337+ ** Status in fork:** FIXED (regression test + CI download landed in commit ` cba693c ` , PR #185 ). ` ModelParameters.enableEmbedding() `
340338sets ` ModelFlag.EMBEDDING ` (` ModelParameters.java:1040 ` ) and
341339` setPoolingType(PoolingType) ` exposes the pooling strategy
342340(` ModelParameters.java:606 ` ). The upstream b9284 server-context (compiled directly
@@ -364,8 +362,7 @@ Reporter takes issue with `LlamaIterator.next()`: when the receive call returns
364362inference output that loops and cannot be terminated. Suggests the
365363` hasNext ` /` stop ` handshake or the underlying ` receiveCompletion ` is buggy.
366364
367- ** Status in fork:** LIKELY FIXED (regression test added in commit ` 713d426 ` ,
368- awaits first green CI run for FIXED). ` LlamaIterator ` now uses
365+ ** Status in fork:** FIXED (regression test landed in commit ` cba693c ` , PR #185 ). ` LlamaIterator ` now uses
369366` receiveCompletionJson ` and toggles ` hasNext = !output.stop `
370367(` LlamaIterator.java:51-54 ` ), and exposes explicit cancellation via
371368` close() ` /` AutoCloseable ` semantics (` LlamaIterable.java:44 ` ,
@@ -546,8 +543,7 @@ generating) segfaults inside libc, with a stack pointing into
546543` std::_Rb_tree::_M_erase ` . If generation happens first, ` close() ` succeeds.
547544Likely an uninitialized/half-initialized native field being destroyed.
548545
549- ** Status in fork:** LIKELY FIXED (regression test added in commit ` 713d426 ` ,
550- awaits first green CI run for FIXED). The native destructor now waits on
546+ ** Status in fork:** FIXED (regression test landed in commit ` cba693c ` , PR #185 ). The native destructor now waits on
551547` worker_ready ` before terminating (` src/main/cpp/jllama.cpp:929-931 ` ), drains the
552548` readers ` map under lock (` jllama.cpp:925-928 ` ), and calls ` server.terminate() `
553549twice with a 1 ms sleep specifically to close the race "where the thread
@@ -729,10 +725,10 @@ Feature request: add multimodal input support (referencing
729725| 107 | FIXED | CMake matches both Mac and Darwin | ` CMakeLists.txt:196 ` |
730726| 104 | FIXED | ` NO_KV_OFFLOAD ` flag exposed | ` args/ModelFlag.java:50 ` |
731727| 103 | PARTIALLY FIXED | mtmd linked, no typed image API | ` ModelParameters.java:1250-1281 ` |
732- | 102 | LIKELY FIXED → FIXED on CI green | Destructor drains workers and frees ctx; covered by ` MemoryManagementTest#testOpenCloseLoopDoesNotLeak ` (commit ` 713d426 ` ) | ` jllama.cpp:917-948 ` |
728+ | 102 | FIXED | Destructor drains workers and frees ctx; covered by ` MemoryManagementTest#testOpenCloseLoopDoesNotLeak ` (commit ` cba693c ` , PR # 185 ) | ` jllama.cpp:917-948 ` |
733729| 101 | FIXED | Trampoline calls BiConsumer | ` jllama.cpp:954-977 ` |
734- | 98 | LIKELY FIXED → FIXED on CI green | ` enableEmbedding ` + ` setPoolingType ` ; covered by ` LlamaEmbeddingsTest#testNomicEmbedLoads ` (commit ` 713d426 ` , CI downloads ` nomic-embed-text-v1.5.f16.gguf ` ) | ` ModelParameters.java:1040,606 ` |
735- | 95 | LIKELY FIXED → FIXED on CI green | Iterator close/AutoCloseable wired; covered by ` LlamaModelTest#testIteratorTerminatesOnRepetitivePrompt ` (commit ` 713d426 ` ) | ` LlamaIterator.java:51-77 ` |
730+ | 98 | FIXED | ` enableEmbedding ` + ` setPoolingType ` ; covered by ` LlamaEmbeddingsTest#testNomicEmbedLoads ` (commit ` cba693c ` , PR # 185 ; CI downloads ` nomic-embed-text-v1.5.f16.gguf ` ) | ` ModelParameters.java:1040,606 ` |
731+ | 95 | FIXED | Iterator close/AutoCloseable wired; covered by ` LlamaModelTest#testIteratorTerminatesOnRepetitivePrompt ` (commit ` cba693c ` , PR # 185 ) | ` LlamaIterator.java:51-77 ` |
736732| 91 | STILL POSSIBLE | No Android sample shipped | No ` examples/android/ ` |
737733| 90 | FIXED | mvn compile vs cmake split documented | ` CLAUDE.md ` Build Commands |
738734| 89 | NOT APPLICABLE | Hand-port ` server.hpp ` removed | upstream server compiled directly |
@@ -744,7 +740,7 @@ Feature request: add multimodal input support (referencing
744740| 83 | NEEDS INVESTIGATION | Fresh Windows artifact; reproduce | ` compat/ggml_x86_compat.c ` |
745741| 82 | STILL POSSIBLE | No Android Gradle sample | See #91 |
746742| 81 | STILL POSSIBLE | No Android demo repo | See #91 |
747- | 80 | LIKELY FIXED → FIXED on CI green | Half-init race closed by double-terminate; covered by ` MemoryManagementTest#testOpenCloseWithoutGeneration ` (commit ` 713d426 ` ) | ` jllama.cpp:932-940 ` |
743+ | 80 | FIXED | Half-init race closed by double-terminate; covered by ` MemoryManagementTest#testOpenCloseWithoutGeneration ` (commit ` cba693c ` , PR # 185 ) | ` jllama.cpp:932-940 ` |
748744| 79 | NEEDS INVESTIGATION | Threading rewritten; needs Android repro | ` jllama.cpp:683,938 ` |
749745| 78 | FIXED | ` addLoraAdapter ` /` addLoraScaledAdapter ` | ` ModelParameters.java:906,918 ` |
750746| 77 | NEEDS INVESTIGATION | Fresh Windows build at b9284 | ` compat/ggml_x86_compat.c ` |
@@ -784,12 +780,11 @@ Four small JUnit tests close out four `LIKELY FIXED` items. All four belong in
784780` src/test/java/net/ladenthin/llama/LlamaModelTest.java ` , reusing the existing
785781` TestConstants ` model path so no new model download is needed except for #98 .
786782
787- > ** Status:** all four tests below were implemented on branch
788- > ` claude/sweet-fermi-1yrRK ` in commit ` 713d426 ` . The code blocks that follow
789- > describe the original design sketch; the as-shipped tests match these
790- > sketches with minor naming and JavaDoc polish (try-with-resources for the
791- > iterable, ` Assume ` -gated nomic path, etc.). Verdicts upgrade to ** FIXED**
792- > on the first green CI run.
783+ > ** Status:** all four tests below shipped via PR #185 (commit ` cba693c ` ).
784+ > The code blocks that follow describe the original design sketch; the
785+ > as-shipped tests match these sketches with minor naming and JavaDoc polish
786+ > (try-with-resources for the iterable, ` Assume ` -gated nomic path, etc.).
787+ > All four issues (#80 , #95 , #98 , #102 ) are now ** FIXED** .
793788
794789#### 1. ` MemoryManagementTest.testOpenCloseLoopDoesNotLeak() ` — for #102
795790
@@ -904,8 +899,8 @@ the same pattern as the existing CodeLlama / Jina-Reranker model downloads.
904899
905900### Recommended sequencing
906901
907- 1 . ** First PR (small, high-value): DONE on branch ` claude/sweet-fermi-1yrRK ` ,
908- commit ` 713d426 ` . ** Adds the four JUnit tests
902+ 1 . ** First PR (small, high-value): MERGED as PR # 185 , commit ` cba693c ` . ** Adds
903+ the four JUnit tests
909904 (` MemoryManagementTest#testOpenCloseLoopDoesNotLeak ` ,
910905 ` MemoryManagementTest#testOpenCloseWithoutGeneration ` ,
911906 ` LlamaModelTest#testIteratorTerminatesOnRepetitivePrompt ` ,
@@ -915,9 +910,8 @@ the same pattern as the existing CodeLlama / Jina-Reranker model downloads.
915910 test job of ` .github/workflows/publish.yml ` , and the local-build
916911 documentation in ` CLAUDE.md ` ("Building the native library for local Java
917912 tests"). All four tests compile and self-skip cleanly when their model is
918- absent; verified locally on Linux x86_64. Once CI runs them green, upgrade
919- #80 , #95 , #98 , #102 to ** FIXED** in the per-issue blocks and the Status
920- overview table above (remove the "→ FIXED on CI green" annotation).
913+ absent; verified locally on Linux x86_64. Issues #80 , #95 , #98 , #102 are
914+ now marked ** FIXED** in the per-issue blocks and the Status overview table.
9219152 . ** Second PR (docs):** add the README "Choosing the right classifier" section
922916 to close out #86 , and document the 32-bit Android limitation to close out
923917 the residual gap on #121 .
0 commit comments