fix(core): resolve stability and indexing issues#69
Conversation
208ab16 to
178208f
Compare
Octomind — developer:brief (octohub:glm)Now I have the full picture. Let me write the brief. 📦 Brief: Deep-review bug fix batch — 40 files, ~1275 insertions / ~483 deletions across config, security, GraphRAG, language parsers, and CLI commandsOverall risk: 🟡 MEDIUM · Cards: 5
Card 1/5: Config Default implementations: panic → real defaults · 🟡 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK DIVERGENCE 📎 Source
Card 2/5: MCP/LSP security hardening + LSP resilience · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK 📎 Source
Card 3/5: GraphRAG builder: embedding desync + incremental relationship scoping + full node loading · 🟡 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK 📎 Source
Card 4/5: Tree-sitter parser fixes across 13 languages · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK 📎 Source
Card 5/5: CLI command robustness: release, diff, review, search, commit, chunker · 🟡 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK DIVERGENCE 📎 Source
📂 Files changed (40 files, ~1275 insertions / ~483 deletions)
{tokens:836958,cost:1.2092292000000002} |
Octomind — developer:brief (octohub:glm)The corrected evidence for the [evidence: src/commands/config.rs L65-L66 «65: config = Config::default(); This supports the claim in Card 1 that The rest of Card 1's claims remain valid — the [evidence: src/indexer/render_utils.rs L295-L297 «295:pub fn code_blocks_to_markdown(blocks: &[CodeBlock]) -> String { Both quotes now match the actual {tokens:1177909,cost:1.6940306} |
- Improve git diff resolution, hash handling, and filename quoting - Fix UTF-8 slicing panics and character boundary handling - Enhance path resolution and semver validation for releases - Ensure all diff chunks are processed via LLM request batching - Preserve result ordering in search outputs - Implement sane defaults for configuration structs and prompts - Fix C++, Go, Java, and Bash symbol extraction logic - Prevent duplicate relationships in incremental GraphRAG runs - Expand node metadata extraction for functions, size, and language - Propagate database errors to prevent silent reindexing failures - Add tests for configuration deserialization and default values
178208f to
d016e50
Compare
Octomind — developer:brief (octohub:glm)The commit The HEAD is at {tokens:119948,cost:0.17127819999999996} |
- Prevent MCP servers from crashing on failed connection accepts - Optimize metadata bulk loading to resolve O(n^2) complexity - Reset indexing markers when embedding tables are dropped - Prevent empty ignore patterns from matching all paths - Correct line number drifting during span calculations
- Add MCPB bundle creation step to release workflow - Implement publish-mcp job for registry distribution - Update server.json to use mcpb registry type
Octomind — developer:brief (octohub:glm)I now have enough evidence. Let me verify the The code at line 153: Now I have all the evidence needed. Let me compile the brief. 📦 Brief: Stability and indexing reliability fixes — UTF-8 panic guards, O(n²) metadata load, silent index-empty bug, and MCP server crash resilienceOverall risk: 🟡 MEDIUM · Cards: 5
Card 1/5: UTF-8 char-boundary truncation prevents panics on multi-byte content · 🟡 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK DIVERGENCE 📎 Source
Card 2/5: Embedding table drop now clears incremental-skip markers to prevent permanently empty index · 🔴 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK 📎 Source
Card 3/5: MCP HTTP servers survive failed connection accepts · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK 📎 Source
Card 4/5: Metadata bulk load fixed from O(n²) to O(n) · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK 📎 Source
Card 5/5: Empty ignore patterns, line-number drift, per-query limit floor, and logs pipeline fix · 🟡 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS
RISK QUESTIONS 📎 Source
📂 Files changed (16 files, ~176 lines)
{tokens:291163,cost:0.4279322000000001} |
- Centralize UTF-8 string truncation to prevent slicing panics - Enhance semver validation and allow optional 'v' prefix - Improve graph discovery by including unchanged files importing new nodes - Filter duplicate relationship edges during incremental runs - Support loading graphs from older versions with column defaults - Fix Go variable extraction for switch statement nodes - Prevent .git directory traversal during indexing - Fix Svelte destructuring pattern parsing for assignments - Increase LSP request timeouts and add MCP connection backoff delays - Unify graph node schema handling and include embedding fields - Resolve oversized diff splitting and handle extremely long lines - Prevent CPU spinning in retry loops with sleep delays - Fix rebase corruption by adding boundaries to sed patterns - Add indexing summary output to index command
Octomind — developer:brief (octohub:glm)📦 Brief: Indexer stability and data handling fixes — UTF-8 truncation, GraphRAG incremental edges, LSP/MCP resilience, parser fixes, release toolingOverall risk: 🟡 MEDIUM · Cards: 5
Card 1/5: Centralized UTF-8-safe truncation eliminates 6 duplicate implementations · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK 📎 Source
Card 2/5: GraphRAG incremental discovery includes unchanged importers and filters duplicate edges; older schemas load with defaults · 🟡 · ●●○INTENT WHAT CHANGED
IMPACT RADIUS
RISK QUESTIONS 📎 Source
Card 3/5: LSP requests wait up to 5min during indexing; MCP accept loops back off on persistent errors · 🟡 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS
RISK 📎 Source
Card 4/5: Parser fixes — Go switch variables, Svelte destructuring defaults, .git skip, oversized diff splitting · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS
RISK 📎 Source
Card 5/5: Release semver validation hardened; rebase sed pattern gets trailing boundary · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS
RISK 📎 Source
📂 Files changed (20 files, ~307 insertions / 203 deletions)
{tokens:725558,cost:1.0599922} |
- Upgrade rand, crossbeam, bytemuck, bytes, and fancy-regex - Upgrade ignore, inotify, jiff, memchr, and octolib to 0.25.0 - Add borrow-or-share, bytecount, data-encoding, and email_address - Add fluent-uri, fraction, jsonschema, micromap, and num crates - Add num-traits, referencing, and uuid-simd - Update generate_embedding to handle new octolib return tuple - Remove unused usage metadata from embedding provider - Bump various transitive dependencies including regex and zerocopy
Octomind — developer:brief (octohub:glm)📦 Brief: Bump octolib 0.24→0.25 (embedding trait returns usage tuple) and strip MCP registry packages from server.jsonOverall risk: 🟢 LOW · Cards: 2
Card 1/2: GraphBuilder adapts to octolib 0.25 embedding trait returning usage tuple · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK 📎 Source
Card 2/2: MCP registry packages array removed from server.json · 🟢 · ●●●INTENT WHAT CHANGED
IMPACT RADIUS RISK QUESTIONS 📎 Source
📂 Files changed (4 files, ~279 lines)
{tokens:559242,cost:0.8009928000000001} |
Octomind — developer:brief (octohub:glm)📦 Brief: Simplify semver validation —
|
| # | Change | Risk | Confidence |
|---|---|---|---|
| 1 | is_valid_semver uses Option::is_none_or instead of map_or(true, …) |
🟢 | ●●● |
Card 1/1: Semver validation uses idiomatic `is_none_or` · 🟢 · ●●●
INTENT
Refactor the prerelease/build identifier check in is_valid_semver to use the more idiomatic Option::is_none_or (stabilized Rust 1.82) instead of the older map_or(true, f) pattern. Commit message: "refactor(release): simplify semver validation logic".
WHAT CHANGED
pre.map_or(true, ident_ok)→pre.is_none_or(ident_ok)andbuild.map_or(true, ident_ok)→build.is_none_or(ident_ok).- Behavior is identical:
None→true(no prerelease/build segment = valid),Some(s)→ident_ok(s).
IMPACT RADIUS
is_valid_semver guards two release-critical paths: --force-version CLI input validation (release.rs:138) and AI-generated version acceptance (release.rs:581). Both now route through the refactored line. No behavioral change — the two expressions are semantically equivalent.
RISK
🟢 LOW. Pure refactor to a stdlib method with identical semantics; is_none_or is stable since Rust 1.82 and the crate's MSRV is 1.95.
📎 Source
src/commands/release.rs#L489-L492— the changed validation linesrc/commands/release.rs#L138—--force-versionconsumersrc/commands/release.rs#L581— AI version calculation consumer
📂 Files changed (1 file, ~1 line)
src/commands/release.rs— semver validation for release versioning
{tokens:163861,cost:0.23437339999999998}
No description provided.