Repository navigation
Tags
Tags
docs: add a Simplified Chinese translation of ROADMAP (xerj-org#2837) ROADMAP.zh-CN.md is a full translation of ROADMAP.md, matching the README.zh-CN.md convention: a language line at the top ([English](./ROADMAP.md) | [简体中文](./ROADMAP.zh-CN.md)) and a note that the English file wins on any disagreement. There is no translation-sync automation in the repo, so the translation carries `<!-- translated from ROADMAP.md at b736b53... -->` near the top. `git log b736b53..main -- ROADMAP.md` then shows exactly what changed in English since this sync, which is the update recipe for the next pass. The .gitignore re-include is required: the blanket `*.md` rule would silently drop the new file, exactly as it does for CLAUDE.md. `!/ROADMAP.zh-CN.md` sits beside `!ROADMAP.md` and mirrors how `!/README.zh-CN.md` is handled. Verification (translation parity, not a code change): - every one of the 288 link targets in the English file is present in the translation (0 missing; 3 extra links are the two language links and the top-of-file note); - all 457 issue/PR references match one-for-one; - heading levels match 10/10 and the three machine-checked `<!-- generated:* -->` count regions are preserved verbatim. The doc-claim tests read ROADMAP.md by name (docs_capability_lists.rs, docs_do_not_promise_the_next_release.rs), so they neither scan nor are weakened by this file.
docs: add a Simplified Chinese translation of ROADMAP (xerj-org#2837) ROADMAP.zh-CN.md is a full translation of ROADMAP.md, matching the README.zh-CN.md convention: a language line at the top ([English](./ROADMAP.md) | [简体中文](./ROADMAP.zh-CN.md)) and a note that the English file wins on any disagreement. There is no translation-sync automation in the repo, so the translation carries `<!-- translated from ROADMAP.md at b736b53... -->` near the top. `git log b736b53 10000 a>..main -- ROADMAP.md` then shows exactly what changed in English since this sync, which is the update recipe for the next pass. The .gitignore re-include is required: the blanket `*.md` rule would silently drop the new file, exactly as it does for CLAUDE.md. `!/ROADMAP.zh-CN.md` sits beside `!ROADMAP.md` and mirrors how `!/README.zh-CN.md` is handled. Verification (translation parity, not a code change): - every one of the 288 link targets in the English file is present in the translation (0 missing; 3 extra links are the two language links and the top-of-file note); - all 457 issue/PR references match one-for-one; - heading levels match 10/10 and the three machine-checked `<!-- generated:* -->` count regions are preserved verbatim. The doc-claim tests read ROADMAP.md by name (docs_capability_lists.rs, docs_do_not_promise_the_next_release.rs), so they neither scan nor are weakened by this file.
docs: add a Simplified Chinese translation of ROADMAP (xerj-org#2837) ROADMAP.zh-CN.md is a full translation of ROADMAP.md, matching the README.zh-CN.md convention: a language line at the top ([English](./ROADMAP.md) | [简体中文](./ROADMAP.zh-CN.md)) and a note that the English file wins on any disagreement. There is no translation-sync automation in the repo, so the translation carries `<!-- translated from ROADMAP.md at b736b53... -->` near the top. `git log b736b53..main -- ROADMAP.md` then shows exactly what changed in English since this sync, which is the update recipe for the next pass. The .gitignore re-include is required: the blanket `*.md` rule would silently drop the new file, exactly as it does for CLAUDE.md. `!/ROADMAP.zh-CN.md` sits beside `!ROADMAP.md` and mirrors how `!/README.zh-CN.md` is handled. Verification (translation parity, not a code change): - every one of the 288 link targets in the English file is present in the translation (0 missing; 3 extra links are the two language links and the top-of-file note); - all 457 issue/PR references match one-for-one; - heading levels match 10/10 and the three machine-checked `<!-- generated:* -->` count regions are preserved verbatim. The doc-claim tests read ROADMAP.md by name (docs_capability_lists.rs, docs_do_not_promise_the_next_release.rs), so they neither scan nor are weakened by this file.
docs: add a Simplified Chinese translation of ROADMAP (xerj-org#2837) ROADMAP.zh-CN.md is a full translation of ROADMAP.md, matching the README.zh-CN.md convention: a language line at the top ([English](./ROADMAP.md) | [简体中文](./ROADMAP.zh-CN.md)) and a note that the English file wins on any disagreement. There is no translation-sync automation in the repo, so the translation carries `<!-- translated from ROADMAP.md at b736b53... -->` near the top. `git log b736b53..main -- ROADMAP.md` then shows exactly what changed in English since this sync, which is the update recipe for the next pass. The .gitignore re-include is required: the blanket `*.md` rule would silently drop the new file, exactly as it does for CLAUDE.md. `!/ROADMAP.zh-CN.md` sits beside `!ROADMAP.md` and mirrors how `!/README.zh-CN.md` is handled. Verification (translation parity, not a code change): - every one of the 288 link targets in the English file is present in the translation (0 missing; 3 extra links are the two language links and the top-of-file note); - all 457 issue/PR references match one-for-one; - heading levels match 10/10 and the three machine-checked `<!-- generated:* -->` count regions are preserved verbatim. The doc-claim tests read ROADMAP.md by name (docs_capability_lists.rs, docs_do_not_promise_the_next_release.rs), so they neither scan nor are weakened by this file.
docs(roadmap): add Xerj Packs section (xerj-org#2770) Xerj Merger made the fix: adds the approved Xerj Packs section to ROADMAP.md (Writing, Bio and Cyber tool sets native in the binary, stdio MCP mode, xerj init integration, recipe runner), linking milestone issues xerj-org#2760–xerj-org#2776.
fix(engine): flush one shard at a time when draining for memory press… …ure (xerj-org#2753) Motivation: in the xerj-org#2427 A/B at a 1,536 MB cap, one breaker drain took RSS from 1,460 MB to 2,323 MB in about a second (node log 19:10:25Z, off arm). The drain that is meant to release memory was the largest single RSS spike of the run. Root cause: Engine::pressure_drain and release_rebuildable_memory call Index::flush, which since M5.15 spawns one task per non-empty memtable shard and runs them in parallel (about four building at once under the finalize gate). Each shard's segment build holds its parsed documents, columns, postings and stored blocks, none of which is charged to the memtable budget, so the working set of a parallel drain is several times the charged memtable bytes it frees. Fix: Index::flush becomes flush_with(FlushFanout::Parallel); a new Index::flush_one_shard_at_a_time (FlushFanout::Serial) awaits each shard task before starting the next, folding the results through the same fold_shard_flush. The two memory-release paths use the serial variant; ordinary flushes (refresh, interval, explicit _flush) keep the parallel fan-out. Evidence: serial_pressure_flush_tests::a_pressure_drain_flushes_one_ shard_at_a_time uses a cfg(test) probe that counts shard-flush tasks in flight. A control index shows a peak above 1 under the parallel flush; pressure_drain on a 400-document index peaks at exactly 1, empties the memtable and keeps all 400 documents. With pressure_drain calling flush() (the old behaviour) the test fails. Files: engine/crates/xerj-engine/src/index.rs (FlushFanout, flush_with, flush_one_shard_at_a_time, fold_shard_flush, test probe), engine/crates/xerj-engine/src/engine.rs (drain call sites, test), CHANGELOG.md.
corpus: add mesh-patterns — production agent-infra patterns (xerj-org… …#2657) * corpus: add mesh-patterns — production agent-infra patterns (AI) A corpus for agents building paid, verifiable services: x402 payment verification, A2A inboxes, Ed25519 signed receipts, deterministic guardrails, streaming recall, anti-SSRF and rate limiting — distilled from a live sovereign node (mesh-01.com) and published as github.com/autobanco-frd/mesh-patterns (MIT). * cla: sign as autobanco-frd * hub: mark mesh-patterns live (it ships a manifest); trailing newline --------- Co-authored-by: autobanco-frd <174357246+autobanco-frd@users.noreply.github.com> Co-authored-by: xerj-org <git@xerj.org>
fix(engine): stop a search deadlocking on a cold segment's stored-sec… …tion lock (xerj-org#2780) Searches started timing out at 30 s after ingest stopped, and once one did, every later search that needed the same cold segment hung too (Refs xerj-org#2427). The gate's search max is 2000 ms. Root cause: `stored_slices_build_locks` is a per-segment std Mutex used as a single-flight around the whole stored-section decode, and that decode fans out with `par_iter` on the global search rayon pool. A background cold stored warm (`schedule_cold_stored_warm`, spawn_blocking) took the lock and waited for its par_iter. A query's `hydrate_deferred_cold_sources` par_iter job ran on a pool worker and blocked on the same lock. Another pool worker that was running one of the warm decode's jobs had stolen a query hydrate job on top of it, so the warm decode could never finish: a cycle. Two all-thread stack dumps ~4 min apart were identical, so the deadlock is permanent. The query's tokio worker (block_in_place) waits forever, the HTTP layer answers at 30 s, and the pool threads and permits stay held. Fix: a rayon worker never blocks on the flight lock. `lock_stored_flight` lets off-pool callers wait as before; a pool worker polls `try_lock` for up to 200 ms and then decodes the section itself without the lock (the same path a poisoned lock already took). Worst case is one duplicate decode of the section, never a hang. All three flight-lock sites use it. Evidence: stack dumps in perf2427/stacks-w (repro: ab-c1 ingest at cap 2048 MB, docs search probes every ~10 s; one probe hung 45 s right after a breaker drain and merge). Test: rayon_worker_never_blocks_on_a_held_stored_flight_lock holds the flight lock and calls the stored-slices path from a 1-thread rayon pool. Before: the call is still blocked after 10 s (Err(Timeout)). After: it returns in under 1 s, and an off-pool caller still waits for the holder. Files: engine/crates/xerj-engine/src/index.rs, CHANGELOG.md.
docs(roadmap): add Xerj Packs section (xerj-org#2770) Xerj Merger made the fix: adds the approved Xerj Packs section to ROADMAP.md (Writing, Bio and Cyber tool sets native in the binary, stdio MCP mode, xerj init integration, recipe runner), linking milestone issues xerj-org#2760–xerj-org#2776.
docs(feedback): record offline map export verification (xerj-org#2702) Record a private synthetic-node exercise of the local xerj-org#2643 candidate: both offline report formats, redaction limits, bounded graph semantics, no-clobber refusal and unchanged ordinary map output. Counts come from executed fixture and browser checks; no published-release, performance or broad relevance claim is made. Written with an AI coding agent, operated by Jarvis636431.
PreviousNext