chore: follow-ups deferred from the milestone 1.1.0 reviews
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 15/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- computer-vision, documentation, performance, testing-qa
Research direction
This is a bundle of deferred maintainer follow-ups, not one task. Start with the exception-safety bug in src/cache/cache.ts and src/node_utils/_pool_node_t.ts, where a failed allocation in resize loses a pooled node, and read the matching comment at src/gms/gms.ts:281. Done means each checklist item is either fixed or explicitly deferred, and the test suite and bench scripts still pass. Most other items need project context, so leave them to a maintainer.
Written by the indexing model from the issue text.
Description
Minor findings from the task reviews of milestone 1.1.0 (#231, #233–#237, #242) that were deferred rather than fixed in those PRs. None blocks the release; each was re-checked against dev after 1.1.0 merged (7635afe). Items already fixed since (e.g. the bench-ratios append guard, the branch-pinned design links) are not listed. The exact-wheel check from the Qodo review of #244 has its own issue, #245.
Library robustness
-
cache.get_bufferis not exception-safe (pre-existing). It unlinks the head node and decrements_pool_sizebeforenode.resize()(src/cache/cache.ts), and_pool_node_t.resizedeletesdatabefore allocating the newdata_t(src/node_utils/_pool_node_t.ts). If that allocation throws (e.g. an invalid or huge size), the node is lost from the shared pool for good and left without storage; a few such failures drain the pool for every module. Fix: allocate first and swap, or resize before unlinking. When fixing it, also correct the comment atsrc/gms/gms.ts:281, which lists "a pool that fails to grow a buffer" among the exits itsfinallycovers — true for the buffers already borrowed, not for the node being resized.
Licensing docs
- The README's License section links only the LGPL. Say that OpenCV-derived code (
src/gms/) is under Apache-2.0, with the text inLICENSES/Apache-2.0.txt, and that the bundle banner names it. - The root
LICENSEholds the LGPL-3.0 text only. LGPL-3.0 is a set of additional permissions on top of GPL-3.0 and expects the GPL text to accompany it; consider addingLICENSES/GPL-3.0.txt(and shipping it infiles). Pre-existing.
Benchmark docs and script (from the #219 / #134 reviews)
-
bench/README.mdquick start (line 6) showsnpm run bench:ratioswithout saying it appends a record tobench/history.jsonl(only the commands table, line 174, says so). - The explanation of why Vitest 5's console
hzdiffers from1000 / period(bench/README.md:128,scripts/bench-ratios.mjs:47-51) blames timer quantisation. The measured 40–50 % gap on a 33 µs case comes from a mean of per-sample throughputs vs. the throughput of the mean latency on a right-skewed distribution. Alsobench-ratios.mjs:47says "Vitest 4 / tinybench 4"; Vitest 4.1 used tinybench 2.9. -
bench/README.md:20— "reproduces the same picture within the run-to-run noise" overclaims forget_gaussian_kernelsize 7 andcheck_subset, measured in a single pass; hedge it or take more passes. - The measurement protocol changed with Vitest 5 (500 ms + 100 ms warm-up per case → 1000 ms + 250 ms). Note it next to the history, and add the Vitest version to the record's
env. -
benchmark.suppressExportGetterWarnings: trueis load-bearing only because of Vitest 5.0.x internals (it also gates the export-getter tracker). Document a re-check for every Vitest bump: no "Benchmark Warning" output,cachesteady state near 1.0×. - Small inaccuracies:
vitest.config.mts:26says 1.01x → 2.5x where the README and PR say 1.07x → 2.49x;bench-ratios.mjs:328"Always exit 0" although the guards now exit 2; error rows carry the absolutefile.name(previously repo-relative). -
bench-ratios.mjsrecognises an intra-library group (likegms.bench.ts) by the absence of jsfeat names; a group with a zero/missingperiodthen falls to an error row reading "missing jsfeatNext and/or jsfeat side", which is not the cause. An explicit opt-in (e.g. a marker in the describe title) and an accurate message would be sturdier. -
npm run bench:distrunstests/setup/pool-balance.tsagainst the source copy's pool, not the bundle's, so the balance check is vacuous there. - GMS bench write-up (
bench/README.md, GMS section): note that the noise scene is idealised (all 289 matches are inliers), and that one busier run read rotation 0.42× / rotation+scale 2.10× — the rotation paths are the load-sensitive ones.
GMS test strength and cost (from the #134 reviews; optional)
- The order between search passes is pinned only by two hand-placed ties in
gms-coverage; swapping the right-grid order or rotation-pattern rows 2↔3 / 4↔5 (which matters only on ties) passes. Add ties for grid 10 vs 14 and pattern 2 vs 3. - Only the train-side
xfloat32 read is pinned by a test; add probes for the query side and fory. - Optional speed-up: left-cell assignment and the best-right-cell choice do not depend on the rotation pattern but are recomputed for each of the 8 patterns; hoisting them per (scale, grid type) would cut the rotation paths (rotation+scale costs 2.29× the matching step).
Issue and project hygiene
- #232's dependency note implies a separate bump; a
^1.1.0range already admits 1.2.0. - Settle which issue owns the descriptor-kind fallback test: it stays in #136 and is not in #232.
- #171 will need
@types/node(or equivalent) oncetests/**is type-checked: the OpenCV fixture tests importnode:*modules. - The README of project #15 states the adapter pin as
^0.17.0, stale once webarkit/webarkit#94 lands.
- Dominant language
- TypeScript
- Stars
- 12
- Forks
- 4
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 23
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from webarkit/jsfeatNext
-
enhancement tests
Difficulty 3/5 1-2 days Newbie friendliness 55/100
webarkit/jsfeatNext#245 ·
Maintainers usually reply within 1 day
-
enhancement Typescript
Difficulty 4/5 3-5 days Newbie friendliness 25/100
webarkit/jsfeatNext#232 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
webarkit/jsfeatNext#179 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 72/100
webarkit/jsfeatNext#171 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 68/100
webarkit/jsfeatNext#168 · 1 comment ·
Maintainers usually reply within 1 day
All issues in webarkit/jsfeatNext
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
jbacalso24/mimry#459 · 1 comment ·
Maintainers usually reply within 1 day
-
architecture help wanted hive/claimed-by-architect origin/architect stage/030-pr-in-progress tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
kubestellar/console#24422 · 1 comment ·
Maintainers usually reply within 1 day
-
area: backends type: docs
Difficulty 1/5 1-3 hours Newbie friendliness 83/100
schlessera/brain-kit#2383 ·
Maintainers usually reply within 1 day
-
agent duplicate providers tool triaged
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day