Commit graph

1,157 commits

Author SHA1 Message Date
Trevon
69a9f349c7
Add funding information for GitHub and Liberapay nightly-20260603-69a9f349
Updated funding model with GitHub and Liberapay usernames.
2026-06-02 11:11:57 -04:00
trvon
88d2a8ccca
removing agents submodule 2026-06-02 08:56:25 -04:00
github-actions[bot]
fc6858ffb9
chore(main): release 0.16.2 (#37) nightly-20260602-fc6858ff v0.16.2
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-01 12:17:17 -04:00
Trevon
b603738f44
Stabilize sanitizer lanes and daemon concurrency (#40)
* fix(repair): keep RPC progress alive

* fix(daemon): propagate DB open failure to FSM and add shutdown cancellation

* fix(db): classify FTS5 inverted-index errors as repairable, not transient locks

* fix(daemon): clean up stale corrupt files after salvage and suppress optional readiness keys

* test(db_recovery): update FTS5 classification test for new transient-lock exclusion

* test(gc): add garbage collector unit tests for collection, dry-run, scheduling

* test(repair): expand repair manager tests with hash-verified recovery and source ordering

* fix(gc): dry-run mode no longer increments blocksDeleted/bytesReclaimed

* fix(mock,mcp): add atomic bool for lock consistency, move field assignments

* style: fix unnecessary-copy, dead-store, and const-refable findings from Infer

* fix(daemon): increase default shutdown timeout from 15s to 120s

* fix(daemon): demote non-critical warnings to info (FTS5, VACUUM, WorkCoordinator timeout)

* fix(db): re-enable WAL auto-checkpoint to prevent unbounded WAL growth

* test(pool): add WAL auto-checkpoint and concurrency coverage for connection pool

* test(pool): add exhaustion, stats, lifecycle, and read-only connection pool tests

* test(pool): add tagging, WAL journal, reuse, and busy timeout tests

* test(metrics): relax session snippet assertion to tolerate stub behavior

* fix(test): stabilize sanitizer triage failures

* fix(build): wire version and zyp deps

* fix(daemon): close TSAN race clusters

* fix(test): guard optional zyp dep

* fix(test): address PR review findings
2026-06-01 12:14:43 -04:00
trvon
d67d5d63ac
Remediate Fold SAST findings nightly-20260528-d67d5d63
Centralize duplicated helpers and harden numeric, timing, IPC, SQLite retry, config, plugin, metrics, and async content-store paths identified during Fold SAST triage.\n\nAdd targeted tests for shared utilities and preserve per-task YAMS checkpoints.
2026-05-27 22:41:44 -04:00
Trevon
08322369cb
Search/grep UX, runtime hardening, and CI stabilization (#39)
* test(storage): add crash-replay and handle-failure coverage for ReferenceCounter

Adds 6 test cases:
- Recovery after forced close preserves committed data
- Uncommitted transaction rolled back after forced close
- Corrupted database file rejected on open
- Consistent stats after interrupted commit recovery
- Multiple PENDING transactions survive force close
- WAL checkpoint survives forced close

* fix(ci): remove ccache — conflicts with OpenBLAS ASM as direct compiler

* fix(ci): use explicit CC/CXX paths to prevent Conan from using ccache directly

ccache was picked up by Conan/CMake as the compiler itself (/usr/bin/ccache)
rather than as a transparent wrapper, causing OpenBLAS ASM compilation to fail
with 'ccache: invalid option -- D'. Setting explicit compiler paths prevents this.

* fix(ci): add YAMS_SKIP_CCACHE to avoid OpenBLAS ASM ccache conflict

setup.sh wraps CC/CXX with ccache for faster incremental builds, but
this causes Conan/CMake to use ccache directly as the ASM compiler for
OpenBLAS, where it fails on -D flags. Add an opt-out gate in setup.sh
and set YAMS_SKIP_CCACHE=1 in .build.yml for sourcehut CI VMs.

* fix(ci): add libomp-dev, libfaiss-dev, libopenblas-dev for FAISS build

* fix(ci): limit meson compile to -j1 to prevent OOM on sourcehut VMs

* fix(build): restore hooks and shrink srht

Compile the storage library with YAMS_TESTING in test builds so
debug-only hooks link again.

Include the POSIX chmod header used by the storage utility
Catch2 coverage cases.

Prune SourceHut fallback stage archives to runtime files so
branch artifacts stay under the upload limit.

* refactor(storage): drop dead code, add coverage

* refactor(cli): polish grep/search graph UX

* fix(daemon): stabilize shutdown and CI paths

- force vector-backed tests to opt out of CI-wide disable flags
- reset reference prune statements between deletes
- make optional-plugin and POSIX-only test assumptions portable
- extract ServiceManager open/shutdown helpers for safer WAL recovery work

* test(daemon): add db vacuum coverage

* test(daemon): add WAL startup recovery

- cover stale WAL startup recovery in ServiceManager
- cover repeated restart cycles with seeded WAL sidecars
- assert daemon recovery reporting for corrupt data-dir DBs
- verify oversized metadata DBs shrink after WAL recovery shutdown

* refactor(grep): consolidate indexed content scan

* fix(grep): remove pre-scan candidate truncation

* refactor(runtime): split startup, harden storage

* feat(bench): add manifest retrieval corpus

* fix(bench): run fusion experiment on simeon

* fix(cli): sharpen search graph hints

* fix(build): refresh version metadata

* fix(ci): stabilize sync search and srht packaging

* fix(ci): unblock windows and shrink artifacts

* fix(ci): stabilize linux runtime checks

* fix(build): shrink srht manifest
2026-05-27 12:15:17 -04:00
trvon
5f2a21da1d
fix(ci): disable ccache for build — conflicts with OpenBLAS ASM compilation nightly-20260527-5f2a21da 2026-05-26 09:37:39 -04:00
trvon
1afe85ef49
fix(build): warnings cleanup + url_backend brace/initializer fixes 2026-05-26 09:02:58 -04:00
trvon
563ec0d17c
fix(build): remove aho_corasick_da.cpp ref — removed upstream in simeon cleanup 2026-05-26 08:56:58 -04:00
trvon
150088699e
fix(build): restore src/storage/meson.build newlines mangled in PR #38 2026-05-26 08:50:48 -04:00
Trevon
bfe7cd94ca
test: expand storage-readiness coverage — 48.1%→59.8% broad, 74.3% narrow (#38)
* fix(daemon): avoid socket cancel on stop

Signal active sockets with shutdown only so pending I/O wakes without entering Boost.Asio's reactor cancel path during teardown.

* fix(metadata): open read pools read-only

* ci: fix coverage report generation

* fix(metadata): tag unscoped pool holders

* test(daemon): avoid ipc teardown takeover

* ci: skip plugin coverage objects

* fix(daemon): repair completed FTS5 ghosts

* build(vector): guard unusable FAISS headers

* ci: use clang gcov for coverage

* test(daemon): stabilize arm CI flakes

* Harden search and compression numeric config

* fix(daemon): reconcile orphan vector embeddings

* fix: address vector cleanup review comments

* chore(main): release 0.16.1

* Harden search ranking divisors

* Harden snippet distance and command registration

* test(storage): add readiness coverage gate

Document the distributed sync readiness surface and add direct adapter, refcount, and GC failure-path coverage.

* test(storage): cover strict resolver fallback

* fix(search): tighten retrieval ranking

Honor component weights in default RRF, over-fetch vector chunks before document aggregation, and persist topology centroids for sparse-guided routing.

* fix(search): route weak queries through topology

* fix(search): improve rerank and weak queries

Wire provider-backed cross reranking, add direct Simeon candidates for weak lexical pools, and report stage-level retrieval metrics.

* fix(storage): honor explicit plugin names

Add readiness coverage for factory, URL backend, and compressed storage failure paths.

* fix(storage): avoid remote size listing

* fix(api): rollback failed content adds

* test(storage): cover engine readiness

* test(storage): cover compressed readiness

* fix(core): harden delete and recovery paths

Route prune and local delete fallback through DocumentService so content, metadata, vectors, and KG cleanup stay consistent.

Treat transient SQLite quick_check lock failures as ResourceBusy, refresh IPC activity on streaming writes, and preserve reranker config in tuner seeding.

* test(storage): cover URL backend readiness

* fix(api): harden content rollback

* feat(storage): add list seam, URL listing, and write-edge coverage

* feat(api): reconcile ambiguous remote manifest writes

* feat(storage): add deep compressed scan validation

* test(storage): add plugin loader error path coverage

* fix(gc): prune reference rows after collection

* test(api,storage): add health, compact, gc, and verify edge coverage

* docs: update storage-readiness coverage to 71.8%

* test(metadata): add connection pool shutdown-while-leased coverage

* test(metadata): add tree builder snapshot root stability coverage

* test(vector): add before-init and after-close operation rejection coverage

* test(metadata): add database post-close, open-failure, and cache-clear coverage

* test(integrity): add P2P wrong-hash rejection + batch matrix resolution

* docs: audit and resolve all matrix rows — 18 fully covered

* test(metadata): add failed-migration and rollback coverage

* test(storage): add getBlockSize-invalid-key, empty-verify, PUT/DELETE retry coverage

* feat(storage): add file-open and rename failure hooks + ContentStore retrieve edge coverage

* docs: add broad-surface coverage with per-subsystem breakdown

* test(integrity): add chunk validator manifest validation coverage

* test(vector): add batch insert, delete, and update operation coverage

* docs: update integrity subsystem coverage to 46.4%

* docs: consolidate coverage report — clean matrix, remove boilerplate

* docs: update coverage with complete-suite numbers — 59.8% broad, 74.3% narrow

* test(storage): add URLBackend HEAD exists with 2xx coverage

* bump submodules

* fix: address PR review — curl_slist leak, ec ordering, CAS rollback, production hooks

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-25 22:58:15 -04:00
trvon
c2c0278f66
merge nightly-20260524-c2c0278f 2026-05-23 21:38:47 -04:00
trvon
c2aac5024c
fix(vector): use faiss::read_index instead of read_index_up for Faiss 1.13.x compat 2026-05-23 21:30:20 -04:00
github-actions[bot]
c87a9f15cb
chore(main): release 0.16.1 (#35) v0.16.1
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-23 21:23:06 -04:00
Trevon
a62a901e2e
Stabilize daemon recovery and vector reconciliation (#36)
* fix(daemon): avoid socket cancel on stop

Signal active sockets with shutdown only so pending I/O wakes without entering Boost.Asio's reactor cancel path during teardown.

* fix(metadata): open read pools read-only

* ci: fix coverage report generation

* fix(metadata): tag unscoped pool holders

* test(daemon): avoid ipc teardown takeover

* ci: skip plugin coverage objects

* fix(daemon): repair completed FTS5 ghosts

* build(vector): guard unusable FAISS headers

* ci: use clang gcov for coverage

* test(daemon): stabilize arm CI flakes

* Harden search and compression numeric config

* fix(daemon): reconcile orphan vector embeddings

* fix: address vector cleanup review comments
2026-05-23 21:21:55 -04:00
trvon
f44722acab
fix(vector): use faiss::read_index instead of read_index_up for Faiss 1.13.x compat 2026-05-23 21:14:50 -04:00
trvon
6ae1c4f241
fix: removing hardcoded paths 2026-05-23 21:02:07 -04:00
0xkite
89a225fdfa
Merge pull request #34 from trvon/experimental nightly-20260522-89a225fd
fix(ci): stabilize test matrix
2026-05-21 16:21:09 -04:00
trvon
77cab7f6e9
fix(ci): stabilize PR checks
Signed-off-by: trvon <me@trevon.dev>
2026-05-21 16:18:08 -04:00
trvon
0d0f1cecf2
fix(tests): stabilize debug suite
Signed-off-by: trvon <me@trevon.dev>
2026-05-21 14:08:46 -04:00
trvon
710ca48d6a
perf(grep): speed literal matching
Refresh benchmark docs with the May 21 local ASAN+coverage results and remove public run-artifact details.
2026-05-21 11:54:19 -04:00
trvon
ae08f99971
ci: relax workflow shell lint
Signed-off-by: trvon <me@trevon.dev>
2026-05-21 11:26:16 -04:00
trvon
77a152c510
test(storage): cover object ABI shims 2026-05-21 11:16:14 -04:00
trvon
6163da6732
fix(storage): remove unsafe object ABI adapter 2026-05-21 10:47:46 -04:00
trvon
1315843e89
fix(ci): stabilize tests and coverage 2026-05-21 09:26:43 -04:00
trvon
4df44e0c2f
fix(tests): use portable getpid shim 2026-05-20 15:54:13 -04:00
trvon
b37b183dc3
fix(daemon): use Windows PID API 2026-05-20 12:59:55 -04:00
trvon
44d4406c1b
test: cover factory helpers 2026-05-20 10:50:41 -04:00
trvon
1fd57b2e3c
test: expand coverage and harden ci 2026-05-20 10:37:54 -04:00
trvon
249ee78b7f
ci: extend test job timeout 2026-05-19 15:26:35 -04:00
trvon
4fb779c31d
ci: harden linux apt installs 2026-05-19 12:54:55 -04:00
trvon
0db460e8d6
test(daemon): wait for idle socket close 2026-05-19 11:38:49 -04:00
trvon
3e7706ad72
fix(storage): close ASAN leak paths 2026-05-19 09:36:14 -04:00
trvon
65a3cd1296
fix(ci): shrink ASAN smoke build 2026-05-19 00:38:53 -04:00
trvon
c27b1e7946
fix(ci): stabilize sanitizer lanes
Wake WriteCoordinator immediately on enqueue and shutdown so queue validation does not depend on poll timing.

Keep ASAN scoped to unit/debug-safe targets to avoid hosted runner recycling during the full debug build.
2026-05-18 23:20:19 -04:00
trvon
c051423e27
fix(ci): stabilize remaining test lanes
Handle vector-disabled, all-skipped, UBSan, and benchmark-gated paths that CI exercises.
2026-05-18 20:25:19 -04:00
trvon
afe5074abb
fix(ci): stabilize test matrix
- Guard post-ingest callbacks before teardown.
- Skip unavailable vector/provider paths in CI.
- Fix Windows assumptions and trim ASAN benchmarks.
2026-05-18 16:36:21 -04:00
trvon
f64af51127
Merge remote-tracking branch 'origin/main' into experimental
Signed-off-by: trvon <me@trevon.dev>
2026-05-18 12:36:33 -04:00
github-actions[bot]
0a8d4c4205
chore(main): release 0.16.0 (#32) nightly-20260518-0a8d4c42 v0.16.0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-18 01:18:51 -04:00
trvon
69f6f63f55
fix(security): harden fold-flagged guards
Signed-off-by: trvon <me@trevon.dev>
2026-05-17 23:50:32 -04:00
trvon
625c08cd43
fix(app): guard SIMD raw-pointer inputs
Signed-off-by: trvon <me@trevon.dev>
2026-05-17 23:50:32 -04:00
Trevon
6d8877a6d4
feat(search): add Simeon bandit tuning (#33)
* feat(search): per-profile simeon bandit with training-free self-tuning

* fix(zyp): free parallel buffers correctly

* fix: code cleanup and simeon version bump

* fix(search): guard Simeon bandit state
2026-05-17 04:08:50 -04:00
trvon
f7ba7dd580
Merge branch 'main' of github.com:trvon/yams nightly-20260516-f7ba7dd5 2026-05-15 20:51:26 -04:00
trvon
aec755eaaa
fix(config): cross-validate backend + model at startup
Wire resolveEmbeddingConfig() into ServiceManager::initialize().
Warns at daemon startup when ONNX model name is used under
model-free simeon backend.
2026-05-15 20:40:41 -04:00
trvon
cee859df61
fix(config): skip simeon sentinels when ONNX backend is active
resolvePreferredModel() now rejects 'simeon-default'/'simeon' at all
resolution sites unless the actual embedding backend is 'simeon'.
Prevents ONNX plugin from trying to locate a non-existent simeon.onnx
when the config has preferred_model=simeon-default but backend=auto
(which routes to ONNX via PluginManager).
2026-05-15 20:34:57 -04:00
github-actions[bot]
753d89a7d6
chore(main): release 0.15.0 (#29) v0.15.0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-15 15:20:52 -04:00
trvon
65564158a9
perf(zyp): true parallel PDF extraction + throughput benchmark
- Implement Document::extractAllParallelized() using std::async
  to distribute pages across threads with per-thread Document
  instances, achieving true parallelism (not the old fake alias)

- zyp_plugin.cpp now uses extractAllParallelized() by default
  for PDF extraction during ingestion

- Add zyp_extraction_bench standalone benchmark measuring
  sequential vs 2/4/N-thread extraction throughput (pages/s, MB/s)

Build: ninja bench_zyp
Run:   build/debug/plugins/zyp/zyp_extraction_bench <pdf>
2026-05-15 12:13:33 -04:00
trvon
66c21c0b25
perf(ingest): bypass GLiNER for zyp PDFs, preserve plugin metadata
- Add IContentExtractor::extractTextAndMetadata() to carry plugin metadata
- Add extractDocumentContent() in extraction_util for text+metadata
- PIQ uses plugin-provided title from PDF metadata, skipping GLiNER
  entirely when a title already exists (e.g. from zyp PDF parsing)
- Fix misleading 'parallel' naming in zyp wrapper/comments
  (zpdf_extract_all_parallel is actually sequential)

This removes the dominant slow-write source for paperbridge PDF
ingestion — title metadata batches that previously backed up the
WriteCoordinator with 34s queue waits.
2026-05-15 11:52:28 -04:00
trvon
90ce4019d9
merge 2026-05-15 09:36:11 -04:00
trvon
61fc7d1e70
fix(ci): ci fixes 2026-05-15 09:35:48 -04:00